:root{--scene-bg:#ded1c3;--font-ui:-apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", sans-serif;--font-brand:"Didot", "Bodoni 72", "Playfair Display", Georgia, "Times New Roman", serif;--ease:cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box}html,body,#root{background:var(--scene-bg);width:100%;height:100%;font-family:var(--font-ui);-webkit-font-smoothing:antialiased;overscroll-behavior:none;touch-action:none;margin:0;overflow:hidden}.app{width:100%;height:100%;transition:color .4s var(--ease);position:relative}.app.ui-light{--text:#2d2823;--text-muted:#2d282394;--panel-bg:#ffffff80;--panel-border:#ffffffb3;--control-bg:#2d28230f;--control-active:#2d2823;--control-active-text:#f7f3ee;--accent:#9a7a52;--vignette:#3c2d1e24;color:var(--text)}.app.ui-dark{--text:#ece8e2;--text-muted:#ece8e28c;--panel-bg:#1616198c;--panel-border:#ffffff14;--control-bg:#ffffff12;--control-active:#ece8e2;--control-active-text:#1a1a1d;--accent:#d4b58a;--vignette:#00000073;color:var(--text)}.stage{inset:0;position:absolute!important}.vignette,.grain{pointer-events:none;position:absolute;inset:0}.vignette{background:radial-gradient(ellipse 75% 70% at 50% 46%, transparent 55%, var(--vignette) 100%)}.grain{opacity:.22;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}.brand{top:max(24px, env(safe-area-inset-top));pointer-events:none;position:absolute;left:32px}.brand-name{font-family:var(--font-brand);letter-spacing:.34em;font-size:26px}.brand-sub{letter-spacing:.12em;color:var(--text-muted);margin-top:6px;font-size:12px}.panel{background:var(--panel-bg);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(22px)saturate(1.3);touch-action:pan-y;border-radius:18px;flex-direction:column;width:300px;display:flex;position:absolute;top:24px;bottom:24px;right:24px;overflow:clip;box-shadow:0 20px 60px #00000014}.panel-toggle{display:none}.panel-body{scrollbar-width:thin;flex:1;padding:18px 20px 22px;overflow-y:auto}.panel-section{margin-bottom:18px}.panel-section h3{letter-spacing:.14em;color:var(--text-muted);margin:0 0 9px;font-size:11px;font-weight:600}.segmented{background:var(--control-bg);border-radius:11px;gap:4px;padding:3px;display:flex}.segmented button{color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;transition:background .25s var(--ease), color .25s var(--ease);background:0 0;border:0;border-radius:8px;flex:1;padding:8px 4px;font-size:13px}.segmented button.active{background:var(--control-active);color:var(--control-active-text)}.look-group+.look-group{margin-top:10px}.look-group-label{color:var(--text-muted);letter-spacing:.04em;margin:0 0 6px 2px;font-size:11.5px}.look-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.look-card{background:var(--control-bg);min-width:0;color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:border-color .25s var(--ease), background .25s var(--ease);border:1px solid #0000;border-radius:10px;align-items:center;gap:8px;padding:8px 9px;font-size:12.5px;display:flex}.look-card.active{border-color:var(--accent);background:var(--panel-bg)}.look-card:last-child:nth-child(odd){grid-column:1/-1}.look-swatches{flex-shrink:0;display:flex}.look-swatches span{background:var(--swatch);border-radius:50%;width:16px;height:16px;box-shadow:inset 0 0 0 1px #0000001f}.look-swatches span+span{margin-left:-5px}.look-swatches span.metal{background:linear-gradient(135deg, #ffffffbf, #fff0 45%, #0000002e), var(--swatch)}.look-swatches span.gloss{background:linear-gradient(140deg, #fff0 18%, #ffffff8c 26%, #fff0 34%), var(--swatch)}.look-swatches span.pearl{background:linear-gradient(135deg, #ffffffb3, #ffeef626 50%, #d6e4ff66), var(--swatch)}.look-label{flex-direction:column;gap:1px;min-width:0;line-height:1.25;display:flex}.look-title,.look-sub{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.look-sub{color:var(--text-muted);font-size:11px}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatch{color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:5px;padding:0;font-size:11px;display:flex}.swatch .chip{background:var(--chip);outline-offset:3px;width:34px;height:34px;transition:outline-color .25s var(--ease), transform .25s var(--ease);border-radius:50%;outline:1.5px solid #0000;box-shadow:inset 0 0 0 1px #0000001a}.swatch .chip.metallic{background:linear-gradient(135deg, #ffffffbf 0%, #fff0 38%, #0000002e 70%, #ffffff59 100%), var(--chip)}.swatch.active{color:var(--text)}.swatch.active .chip{outline-color:var(--text);transform:scale(1.04)}.swatch-group{display:contents}.swatch .chip.spectrum{background:radial-gradient(circle,#ffffffe6 0 22%,#fff0 60%),conic-gradient(#ff6b6b,#ffd36b,#8ee07a,#6bd3ff,#8a7dff,#ff7ad9,#ff6b6b)}.swatch .chip.open{outline-color:var(--text-muted)}.color-picker{background:var(--control-bg);-webkit-user-select:none;user-select:none;border-radius:12px;margin-top:14px;padding:12px}.cp-pad{cursor:crosshair;touch-action:none;background:linear-gradient(to top, #000, #0000), linear-gradient(to right, #fff, hsl(var(--hue) 100% 50%));border-radius:8px;height:132px;position:relative;box-shadow:inset 0 0 0 1px #00000014}.cp-pad-thumb{background:var(--color);pointer-events:none;border:2px solid #fff;border-radius:50%;width:16px;height:16px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000059,0 2px 6px #0000004d}.cp-hue{cursor:pointer;touch-action:none;background:linear-gradient(90deg,red 0%,#ff0 16.67%,#0f0 33.33%,#0ff 50%,#00f 66.67%,#f0f 83.33%,red 100%);border-radius:6px;height:12px;margin:14px 8px 0;position:relative;box-shadow:inset 0 0 0 1px #00000014}.cp-hue:before{content:"";position:absolute;inset:-8px}.cp-hue-thumb{background:hsl(var(--hue) 100% 50%);pointer-events:none;border:2px solid #fff;border-radius:50%;width:18px;height:18px;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000059,0 2px 6px #0000004d}.cp-pad:focus-visible,.cp-hue:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.cp-row{align-items:center;gap:10px;margin-top:14px;display:flex}.cp-preview{background:var(--color);border-radius:50%;flex-shrink:0;width:30px;height:30px;box-shadow:inset 0 0 0 1px #0000001f}.cp-hex{border:1px solid var(--panel-border);background:var(--panel-bg);min-width:0;color:var(--text-muted);-webkit-user-select:text;user-select:text;border-radius:8px;flex:1;align-items:center;gap:2px;padding:7px 10px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;display:flex}.cp-hex:focus-within{border-color:var(--accent)}.cp-hex input{width:100%;min-width:0;color:var(--text);font:inherit;letter-spacing:.08em;text-transform:uppercase;background:0 0;border:0;outline:none;padding:0}.cp-eyedropper{border:1px solid var(--panel-border);background:var(--panel-bg);width:32px;height:32px;color:var(--text);cursor:pointer;transition:background .25s var(--ease), color .25s var(--ease);border-radius:8px;flex-shrink:0;place-items:center;padding:0;display:grid}.cp-eyedropper:hover{background:var(--control-active);color:var(--control-active-text)}.action{border:1px solid var(--text);width:100%;color:var(--text);font:inherit;letter-spacing:.1em;cursor:pointer;transition:background .25s var(--ease), color .25s var(--ease);background:0 0;border-radius:12px;margin:2px 0 20px;padding:12px;font-size:14px}.action:hover:not(:disabled){background:var(--control-active);color:var(--control-active-text)}.action.secondary{letter-spacing:.06em;margin:14px 0 0;padding:10px;font-size:13px}.action:disabled{opacity:.4;cursor:not-allowed}.hint{color:var(--text-muted);word-break:break-all;margin:10px 0 12px;font-size:11.5px;line-height:1.6}.switch{cursor:pointer;align-items:center;gap:10px;font-size:13px;display:flex;position:relative}.switch.disabled{opacity:.45;cursor:not-allowed}.switch input{opacity:0;pointer-events:none;margin:0;position:absolute;top:0;left:0}.switch .track{background:var(--control-bg);width:36px;height:20px;box-shadow:inset 0 0 0 1px var(--panel-border);transition:background .25s var(--ease);border-radius:10px;flex-shrink:0;position:relative}.switch .track:after{content:"";background:var(--text);width:16px;height:16px;transition:transform .25s var(--ease);border-radius:50%;position:absolute;top:2px;left:2px}.switch input:checked+.track{background:var(--accent)}.switch input:checked+.track:after{background:#fff;transform:translate(16px)}.hud{left:32px;bottom:max(28px, env(safe-area-inset-bottom));pointer-events:none;font-variant-numeric:tabular-nums;font-size:12px;line-height:1.7;position:absolute}.hud-row{align-items:center;gap:8px;display:flex}.hud-row.muted{color:var(--text-muted)}.dot{border-radius:50%;width:7px;height:7px}.dot.raster{background:#7aa37a}.dot.pt{background:var(--accent);box-shadow:0 0 8px var(--accent)}.spinner{border:1.5px solid var(--text-muted);border-top-color:#0000;border-radius:50%;width:9px;height:9px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.hud-progress{background:var(--control-bg);width:180px;height:2px;margin:4px 0 6px;overflow:hidden}.hud-progress span{background:var(--accent);transform-origin:0;height:100%;transition:transform .25s linear;display:block}.loader{background:var(--scene-bg);color:var(--text-muted);letter-spacing:.16em;transition:opacity .8s var(--ease), visibility .8s;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;inset:0}.loader.hidden{opacity:0;visibility:hidden}.loader{--poster-inset:324px;--poster-frame-ratio:.7711;--poster-k:1;container-type:size}@media (aspect-ratio<=1){.loader{--poster-k:1.928}}.loader-poster{left:calc((100cqw - var(--poster-inset)) / 2);width:auto;height:calc(var(--poster-k) * min(100cqh, calc((100cqw - var(--poster-inset)) / var(--poster-frame-ratio))));pointer-events:none;-webkit-user-select:none;user-select:none;position:absolute;top:50%;transform:translate(-50%,-50%);-webkit-mask-image:linear-gradient(90deg,#0000,#000 6% 94%,#0000);mask-image:linear-gradient(90deg,#0000,#000 6% 94%,#0000)}.loader-text{position:relative}.loader.with-poster .loader-text{left:calc((100cqw - var(--poster-inset)) / 2);-webkit-backdrop-filter:blur(10px);text-align:center;letter-spacing:.08em;background:#ffffff6b;border-radius:999px;max-width:calc(100cqw - 40px);padding:8px 16px;position:absolute;bottom:max(28px,7cqh);transform:translate(-50%)}@media (width<=760px){.loader{--poster-inset:0px}}@media (aspect-ratio<=1){.loader-poster{-webkit-mask-image:linear-gradient(90deg,#000 94%,#0000);mask-image:linear-gradient(90deg,#000 94%,#0000)}}@media (aspect-ratio<=1) and (width<=760px){.loader-poster{-webkit-mask-image:none;mask-image:none}}@media (width<=760px){.brand{left:20px;top:max(18px, env(safe-area-inset-top))}.brand-name{font-size:20px}.brand-sub{font-size:11px}.panel{width:100%;max-height:52vh;padding-bottom:env(safe-area-inset-bottom);transition:max-height .4s var(--ease);border-radius:20px 20px 0 0;inset:auto 0 0}.panel.collapsed{max-height:calc(52px + env(safe-area-inset-bottom))}.panel-toggle{width:100%;height:52px;color:var(--text);font:inherit;letter-spacing:.1em;cursor:pointer;background:0 0;border:0;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 22px;font-size:14px;display:flex}.panel-body{padding-top:4px}.hud{bottom:auto;left:20px;top:calc(max(18px, env(safe-area-inset-top)) + 58px);font-size:11px}.hint-gesture{display:none}.hud-progress{width:140px}}.app[data-presentation=reference] .grain{opacity:.22}.app[data-presentation=reference] .vignette{opacity:.5}.print-zone{background:var(--control-bg);border-radius:12px;margin-top:12px;padding:10px 12px}.print-zone-head{justify-content:space-between;align-items:baseline;gap:8px;font-size:13px;display:flex}.print-zone-size{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:11px}.print-zone-file{color:var(--accent);white-space:nowrap;text-overflow:ellipsis;margin-top:4px;font-size:11px;overflow:hidden}.print-zone-actions{gap:6px;margin-top:8px;display:flex}.mini{border:1px solid var(--panel-border);background:var(--panel-bg);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;transition:background .25s var(--ease), color .25s var(--ease);border-radius:8px;flex:1;padding:6px 4px;font-size:12px}.mini:hover{background:var(--control-active);color:var(--control-active-text)}.panel-section .switch+.switch{margin-top:10px}.panel-section .segmented+.switch{margin-top:12px}.spec-card{background:var(--control-bg);border-radius:12px;padding:12px;font-size:12px;line-height:1.6}.spec-title{margin-bottom:2px;font-size:13px;font-weight:600}.spec-row{color:var(--text-muted);font-variant-numeric:tabular-nums}.bom{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin-top:8px;font-size:11.5px}.bom td{border-top:1px solid var(--panel-border);padding:3px 4px}.bom td:last-child{text-align:right;color:var(--text-muted)}.hint.warn{color:#b4532a;word-break:normal;overflow-wrap:anywhere;margin-bottom:0}.ui-dark .hint.warn{color:#e59a6b}.annotations{pointer-events:none;--annot:#2d2823c7;--annot-bg:#ffffffb8;position:absolute;inset:0;overflow:hidden}.ui-dark .annotations{--annot:#ece8e2d9;--annot-bg:#16161999}.dim-svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.dim-svg marker path{fill:var(--annot)}.dim-line{stroke:var(--annot);stroke-width:1px}.dim-ext{stroke:var(--annot);stroke-width:.75px;stroke-dasharray:3 2;opacity:.7}.dim-text{background:var(--annot-bg);color:var(--annot);font-variant-numeric:tabular-nums;white-space:nowrap;opacity:0;transition:opacity .3s var(--ease);border-radius:6px;margin:-9px 0 0 8px;padding:1px 6px;font-size:11.5px;position:absolute;top:0;left:0}.dim-text.horizontal{margin:-24px 0 0;translate:-50%}.dim-text.visible,.part-label.visible{opacity:1}.part-label{color:var(--annot);opacity:0;transition:opacity .35s var(--ease);position:absolute;top:0;left:0;translate:0 -50%}.leader-line{stroke:var(--annot);stroke-width:1px;fill:none}.leader-dot{fill:var(--annot)}.part-label-body{background:var(--annot-bg);-webkit-backdrop-filter:blur(6px);white-space:nowrap;border-radius:8px;flex-direction:column;padding:4px 9px;display:flex}.part-label-title{font-size:13px;font-weight:600}.part-label-meta,.part-label-note{opacity:.75;font-variant-numeric:tabular-nums;font-size:11px}@media (width<=1100px){.part-label-note{display:none}}@media (width<=760px){.part-label-body{padding:3px 7px}.part-label-title{font-size:12px}.part-label-note{display:none}}.hint.bom-note{word-break:normal;overflow-wrap:anywhere;margin:8px 0 0}.segmented+.segmented{margin-top:8px}
