/* Approved workspace: quiet chrome, live interaction and readable source. */
.component-dialog{width:min(1180px,calc(100% - 64px));border-radius:24px;padding:24px 28px;max-height:calc(100svh - 48px);overflow:auto;background:linear-gradient(155deg,#fafbfd,#e9edf2);border-color:#fdfefe;box-shadow:inset 0 1px 0 #fff,0 28px 90px #1d2e4540}
.component-dialog .dialog-close{top:20px;right:20px;background:transparent;border-radius:10px;transition:background 180ms,transform 180ms}
.component-dialog .dialog-close:hover{background:#edf0f4;transform:rotate(6deg)}
.detail-heading{padding-right:44px;margin-bottom:16px}
.component-dialog :is(.detail-heading,#source-filename){-webkit-user-select:text;user-select:text}
.detail-heading>p:first-child{margin:0 0 8px;color:#58616d;font-size:14px}
.detail-heading h3{font-size:clamp(26px,3vw,34px);font-weight:600;letter-spacing:-.045em;line-height:1.15;margin:0 0 8px;color:#303945}
.detail-heading .inspector-description{font-size:15px;line-height:1.5;margin:0;color:#58616d;max-width:760px}
.detail-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:32px;align-items:start}
.detail-stage{display:block;padding:0;background:none;border-radius:0;min-width:0}
.detail-toolbar{display:flex;align-items:center;justify-content:space-between;height:48px;margin-bottom:12px}
.detail-toolbar h4{font-size:17px;font-weight:600;margin:0;color:#353e49}
#detail-palettes .palette-controls{position:static;opacity:1;background:none;padding:0;gap:6px}
#detail-palettes .palette-swatch{width:32px;height:40px;border-radius:8px}
#detail-palettes .palette-swatch::before{width:18px;height:18px}
.detail-canvas{position:relative;border-radius:14px;background:radial-gradient(ellipse at 15% 0%,#eef1f5 0%,transparent 78%),linear-gradient(145deg,#e3e8ee,#d4dde7);box-shadow:inset 0 2px 7px #42577512,inset 0 -1px #fff9;overflow:hidden}
#detail-preview{height:300px;min-height:0;display:block;overflow:auto;border:0;border-radius:0;padding:16px 12px 40px;background:none}
#detail-preview::before{display:none}
#detail-preview sl-preview{width:100%;height:100%;min-width:0;min-height:0;display:block}
#detail-preview:has(sl-preview[data-preview-sizing=content]){height:auto;min-height:300px;overflow:visible}
#detail-preview sl-preview[data-preview-sizing=content]{height:auto;min-height:244px;max-width:100%}
#detail-preview:has(sl-preview[data-shell-sizing=flow]){height:auto;min-height:300px;overflow:visible;--shell-preview-min-height:244px}
#detail-preview sl-preview[data-shell-sizing=flow]{height:auto;min-height:244px}
.preview-tools{position:absolute;right:12px;bottom:8px;display:flex;gap:4px;z-index:2}
.preview-tools button{width:36px;height:36px;display:grid;place-items:center;background:transparent;color:#687587;border-radius:9px;transition:background 180ms,color 180ms,transform 180ms}
.preview-tools button:hover{background:#ffffffa6;color:#303945;transform:translateY(-1px)}
.preview-tools svg,.detail-footer svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}
.detail-hint{font-size:12px;line-height:1.5;margin:10px 0 0;color:#58616d}
.component-dialog .inspector{padding:0;background:none;min-width:0;display:block}
.component-dialog .source-tabs{display:flex;gap:4px;margin:0 0 12px;height:48px;overflow-x:auto;flex-wrap:nowrap;align-items:center}
.component-dialog .source-tabs button{flex:none;padding:10px 12px;min-height:40px;color:#596575;font-size:13px;background:transparent;transition:background 180ms,color 180ms}
.component-dialog .source-tabs button[aria-selected=true]{background:linear-gradient(#fff,#f7f8fa);color:#303945;font-weight:600;box-shadow:0 2px 3px #36445912,inset 0 1px #fff}
.component-dialog .source-tabs button:hover{background:#f1f3f6;color:#303945}
.source-panel{border:1px solid #d6dee8;border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 6px 18px #384b6510,inset 0 1px #fff}
.component-dialog .source-tabs button{font-size:14px}
.source-toolbar{height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 10px 0 18px;border-bottom:1px solid #e0e6ee;background:linear-gradient(#f8fafc,#eef2f7);gap:8px;color:#58616d;font-size:13px}
#source-filename{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#copy-source{--copy-unit:.72px;--copy-ink:#f9fafc;--copy-hover:#fff;--copy-feedback:#e1e8f1;--copy-text:#414e60;--copy-focus:#637b9e;flex:none;min-height:0}
#copy-source:focus-visible{outline:2px solid var(--copy-focus);outline-offset:2px}
#copy-source:disabled,.detail-footer button:disabled{opacity:.45;cursor:wait}
.component-dialog .source-code{height:251px;max-height:none;min-width:0;padding:18px 16px 18px 0;margin:0;border:0;border-radius:0;background:#fff;color:#344052;font:13px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;overflow:auto;counter-reset:line;white-space:pre;tab-size:2}
.component-dialog,.component-dialog .source-code,.component-dialog .source-tabs,#detail-preview{scrollbar-width:none}
.component-dialog::-webkit-scrollbar,.component-dialog .source-code::-webkit-scrollbar,.component-dialog .source-tabs::-webkit-scrollbar,#detail-preview::-webkit-scrollbar{display:none}
.component-dialog[open]{animation:workspace-reveal 420ms cubic-bezier(.22,1,.36,1) both}
.component-dialog[open]::backdrop{animation:workspace-dim 420ms ease both}
@keyframes workspace-reveal{from{opacity:0;transform:translateY(14px) scale(.975)}to{opacity:1;transform:none}}
@keyframes workspace-dim{from{opacity:0}to{opacity:1}}
.code-line{display:block;min-height:1.7em;padding-left:52px;position:relative;white-space:pre;width:max-content;min-width:100%;user-select:text;-webkit-user-select:text}
.code-line::before{counter-increment:line;content:counter(line);position:absolute;left:0;width:35px;text-align:right;color:#58616d;font-size:11px;user-select:none;-webkit-user-select:none}
.syntax-key{color:#376db5}.syntax-string{color:#52677f}.source-code span{user-select:text;-webkit-user-select:text}
.detail-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid #e0e5ec;padding-top:12px;margin-top:14px}
#source-status{margin:0;color:#58616d;font-size:12px;line-height:1.5}
.detail-footer .download-link{display:flex;align-items:center;justify-content:center;gap:9px;flex:none;min-height:46px;padding:12px 19px;background:linear-gradient(155deg,#fff,#f1f4f8);color:#354253;border:1px solid #d4dde8;border-radius:12px;font-size:14px;box-shadow:inset 0 2px 1px #fff,0 3px 0 #d5dce5,0 8px 16px #35465a14;transition:transform 200ms cubic-bezier(.2,0,0,1),box-shadow 200ms}
.detail-footer .download-link:hover:not(:disabled){transform:translateY(-2px) scale(1.025);box-shadow:inset 0 2px 1px #fff,0 5px 0 #d5dce5,0 12px 20px #35465a1a}
.detail-footer .download-link:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 1px #fff,0 1px 0 #d5dce5,0 3px 8px #35465a10}
@media(max-width:900px){.component-dialog{padding:24px;width:calc(100% - 32px)}.detail-layout{gap:22px;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}.component-dialog .source-tabs button{padding:9px 8px;font-size:12px}}
@media(max-width:700px){.component-dialog{width:calc(100% - 20px);max-height:calc(100svh - 20px);padding:22px 18px;border-radius:20px}.detail-heading{margin-bottom:18px;padding-right:26px}.component-dialog .dialog-close{top:12px;right:10px;width:36px;height:36px}.detail-layout{display:grid;grid-template-columns:1fr;gap:20px}.detail-heading h3{font-size:28px}.detail-heading .inspector-description{font-size:14px}.detail-toolbar{height:40px;margin-bottom:8px}#detail-preview{height:260px;min-height:260px;padding:12px 8px 40px}.component-dialog .source-tabs{margin-bottom:8px}.component-dialog .source-code{height:260px}.detail-footer{margin-top:18px;gap:10px;flex-wrap:wrap}.detail-footer .download-link{margin-left:auto}.detail-hint{margin-top:8px}}
@media(prefers-reduced-motion:reduce){.component-dialog button{transition:none!important}.component-dialog button:hover,.component-dialog button:active{transform:none!important}}
@media(prefers-reduced-motion:reduce){.component-dialog[open],.component-dialog[open]::backdrop{animation:none!important}}
