:root{--canvas:#16181d;--bg:#0f1115;--panel:#191c22;--panel2:#1f232b;--hover:#ffffff0e;--hairline:#282c34;--hairline2:#3a3f4a;--frame:#4b515e;--text:#e7e3da;--text2:#9aa0ab;--text3:#6a707b;--cut:#e0301e;--cut2:#f2503f;--crease:#4c8dff;--creasedim:#4c8dff29;--amber:#e0a82e;--amberdim:#e0a82e29;--err:#e0574b;--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:var(--bg);height:100%;margin:0}body{color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;overflow:hidden}::selection{background:#4c8dff59}.asp-scroll::-webkit-scrollbar{width:10px;height:10px}.asp-scroll::-webkit-scrollbar-thumb{background:#33383f padding-box content-box;border:3px solid #0000;border-radius:6px}.asp-scroll::-webkit-scrollbar-thumb:hover{background:#454b54 padding-box content-box}.asp-scroll::-webkit-scrollbar-track{background:0 0}@keyframes asp-progress{0%{transform:translate(-100%)}to{transform:translate(400%)}}@keyframes asp-pulse{0%,to{opacity:.55}50%{opacity:1}}@keyframes asp-fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}#app{background:var(--bg);flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.topbar{background:var(--panel);border-bottom:1px solid var(--hairline);flex-shrink:0;align-items:center;gap:10px;height:52px;padding:0 14px;display:flex;position:relative}.brand{flex-shrink:0;align-items:center;gap:9px;display:flex}.brand svg{display:block}.brand-name{font-family:var(--font-mono);letter-spacing:.24em;color:var(--text);font-size:15px;font-weight:500}.statusbar{align-items:center;gap:10px;min-width:0;display:flex;overflow:hidden}.vdiv{background:var(--hairline2);flex-shrink:0;width:1px;height:20px;margin:0 4px}.loading-status{font-family:var(--font-mono);letter-spacing:.06em;color:var(--text2);white-space:nowrap;align-items:center;gap:8px;font-size:12px;display:inline-flex}.loading-dot{background:var(--crease);border-radius:50%;width:7px;height:7px;animation:1s ease-in-out infinite asp-pulse}.file-status{align-items:center;gap:10px;min-width:0;display:inline-flex}.file-chip{border:1px solid var(--hairline2);background:var(--panel2);height:26px;font-family:var(--font-mono);color:var(--text);letter-spacing:.01em;font-feature-settings:"tnum" 1, "zero" 1;white-space:nowrap;border-radius:3px;align-items:center;padding:0 9px;font-size:12.5px;display:inline-flex}.stats{font-family:var(--font-mono);letter-spacing:.09em;color:var(--text3);font-feature-settings:"tnum" 1, "zero" 1;white-space:nowrap;font-size:11px}.skipped-btn{background:var(--amberdim);height:22px;color:var(--amber);font-family:var(--font-mono);letter-spacing:.08em;cursor:pointer;white-space:nowrap;border:1px solid #e0a82e66;border-radius:3px;align-items:center;gap:5px;padding:0 8px;font-size:10.5px;display:inline-flex}.skipped-pop{z-index:40;background:var(--panel);border:1px solid var(--hairline2);border-radius:5px;width:260px;padding:12px 13px;animation:.14s asp-fade;position:absolute;top:52px;left:280px;box-shadow:0 12px 32px #00000080}.skipped-pop-title{font-family:var(--font-mono);letter-spacing:.1em;color:var(--amber);margin-bottom:8px;font-size:10.5px}.skipped-pop-detail{font-family:var(--font-mono);color:var(--text2);font-size:12px;line-height:1.7}.skipped-pop-note{border-top:1px solid var(--hairline);color:var(--text3);margin-top:9px;padding-top:9px;font-size:11.5px;line-height:1.5}.topbar-actions{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}button{font-family:var(--font-sans)}.btn-ghost{border:1px solid var(--hairline2);height:34px;color:var(--text2);cursor:pointer;background:0 0;border-radius:3px;align-items:center;gap:7px;padding:0 13px;font-size:13px;font-weight:500;transition:border-color .14s,color .14s;display:inline-flex}.btn-ghost:hover{border-color:var(--crease);color:var(--text)}.btn-primary{border:1px solid var(--cut);background:var(--cut);color:#fff;cursor:pointer;border-radius:3px;align-items:center;gap:7px;height:34px;padding:0 15px;font-size:13px;font-weight:600;transition:background .14s,border-color .14s,transform 90ms;display:inline-flex}.btn-primary:hover{background:var(--cut2);border-color:var(--cut2)}.btn-primary:active{transform:translateY(1px)}.layers-toggle{display:none}.progress{height:2px;position:absolute;bottom:-1px;left:0;right:0;overflow:hidden}.progress-bar{background:var(--crease);width:25%;height:100%;animation:1.1s ease-in-out infinite asp-progress}.body{flex:1;min-height:0;display:flex;position:relative}.panel{background:var(--panel);border-right:1px solid var(--hairline);flex-direction:column;flex-shrink:0;width:248px;min-height:0;display:flex;position:relative}.panel-head{box-sizing:border-box;flex-shrink:0;justify-content:space-between;align-items:center;height:46px;padding:13px 14px 10px;display:flex}.panel-title{font-family:var(--font-mono);letter-spacing:.14em;color:var(--text3);align-items:center;gap:8px;font-size:11px;display:flex}.count-badge{font-family:var(--font-mono);color:var(--text3);background:var(--panel2);border:1px solid var(--hairline);font-feature-settings:"tnum" 1;border-radius:3px;padding:1px 6px;font-size:10.5px}.panel-close{width:32px;height:32px;color:var(--text2);cursor:pointer;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;display:none}.solo-banner{box-sizing:border-box;z-index:6;background:#393224;border-bottom:1px solid #e0a82e73;align-items:center;gap:8px;height:46px;padding:0 12px;display:flex;position:absolute;top:0;left:0;right:0}.solo-banner-label{font-family:var(--font-mono);letter-spacing:.1em;color:var(--amber);font-size:10px;font-weight:600}.solo-banner-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--font-mono);color:var(--text);flex:1;font-size:11.5px;overflow:hidden}.solo-banner-exit{color:var(--amber);cursor:pointer;font-family:var(--font-mono);letter-spacing:.08em;background:0 0;border:none;padding:2px 4px;font-size:10px}.layer-list{flex:1;min-height:0;margin:0;padding:0 8px;list-style:none;overflow-y:auto}.layer-row{cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:3px;align-items:center;gap:10px;min-width:0;padding:8px;transition:background .14s,border-color .14s,opacity .14s;display:flex;position:relative}.layer-row:hover{background:var(--hover)}.layer-row.reverse{background:var(--creasedim);border-color:var(--crease)}.layer-row.solo{background:var(--amberdim);border-color:#e0a82e66;padding-left:12px}.layer-row.dimmed{opacity:.34}.layer-row.off:not(.solo){opacity:.55}.solo-bar{background:var(--amber);border-radius:2px;width:2px;position:absolute;top:3px;bottom:3px;left:0}.layer-check{cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:inline-flex}.layer-swatch{border-radius:2px;flex-shrink:0;width:13px;height:13px}.layer-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:1;font-size:13px;overflow:hidden}.layer-row.off .layer-name{color:var(--text3)}.solo-chip{font-family:var(--font-mono);letter-spacing:.1em;color:var(--amber);border:1px solid #e0a82e66;border-radius:2px;flex-shrink:0;padding:1px 4px;font-size:8.5px}.layer-count{font-family:var(--font-mono);color:var(--text3);font-feature-settings:"tnum" 1;flex-shrink:0;font-size:11px}.layers-empty{text-align:center;color:var(--text3);padding:24px 10px;font-size:12.5px;line-height:1.6}.hints{border-top:1px solid var(--hairline);flex-shrink:0;grid-template-columns:auto 1fr;align-items:baseline;gap:5px 10px;padding:11px 14px 13px;display:grid}.hint-k{font-family:var(--font-mono);letter-spacing:.06em;color:var(--text2);white-space:nowrap;font-size:9.5px}.hint-v{color:var(--text3);font-size:11px}.panel-backdrop{z-index:20;background:#00000080;position:absolute;inset:0}.viewer-wrap{background:var(--canvas);flex:1;min-width:0;position:relative;overflow:hidden}.grid-bg{--gridminor:#ffffff07;--gridmajor:#ffffff0d;background-image:linear-gradient(var(--gridminor) 1px, transparent 1px), linear-gradient(90deg, var(--gridminor) 1px, transparent 1px), linear-gradient(var(--gridmajor) 1px, transparent 1px), linear-gradient(90deg, var(--gridmajor) 1px, transparent 1px);pointer-events:none;background-size:26px 26px,26px 26px,130px 130px,130px 130px;position:absolute;inset:0}.viewer,.viewer canvas{position:absolute;inset:0}.readout{z-index:10;font-family:var(--font-mono);letter-spacing:.06em;color:var(--text3);font-feature-settings:"tnum" 1, "zero" 1;pointer-events:none;gap:8px;font-size:10.5px;display:flex;position:absolute;top:14px;left:14px}.readout-chip{border:1px solid var(--hairline);background:#191c22bf;border-radius:3px;padding:3px 7px}.controls{z-index:10;flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:14px;right:14px}.ctrl{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--hairline2);width:36px;height:36px;color:var(--text2);cursor:pointer;background:#191c22e6;border-radius:4px;justify-content:center;align-items:center;transition:color .14s,border-color .14s;display:inline-flex}.ctrl:hover{color:var(--text);border-color:var(--frame)}.ctrl-stack{border:1px solid var(--hairline2);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#191c22e6;border-radius:4px;flex-direction:column;display:flex;overflow:hidden}.ctrl-stack button{width:36px;height:34px;color:var(--text2);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.ctrl-stack button:hover{color:var(--text)}.ctrl-stack button:not(:last-child){border-bottom:1px solid var(--hairline)}.ctrl.active{color:var(--crease);border-color:var(--crease);background:var(--creasedim)}.viewer.measuring{cursor:crosshair}.measure-overlay{z-index:8;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.measure-line{fill:none;stroke:var(--crease);stroke-width:1.4px;stroke-dasharray:5 4}.measure-dot{fill:var(--crease);stroke:#fff;stroke-width:1px}.measure-snap{stroke:var(--amber);stroke-width:1.6px}.measure-label{fill:var(--text);font-family:var(--font-mono);text-anchor:middle;paint-order:stroke;stroke:#0f1115e6;stroke-width:3px;font-size:11px}.measure-card{z-index:10;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--hairline2);min-width:168px;font-family:var(--font-mono);background:#191c22eb;border-radius:5px;padding:9px 11px;position:absolute;bottom:14px;left:14px}.measure-hint{letter-spacing:.08em;color:var(--text3);margin-bottom:7px;font-size:9px;display:block}.measure-rows{letter-spacing:.04em;font-feature-settings:"tnum" 1, "zero" 1;grid-template-columns:auto 1fr;gap:3px 12px;font-size:11.5px;display:grid}.measure-k{color:var(--text3)}.measure-v{color:var(--crease);text-align:right}.export-wrap{display:inline-flex;position:relative}.export-pop{z-index:40;background:var(--panel);border:1px solid var(--hairline2);border-radius:5px;flex-direction:column;min-width:176px;padding:4px;animation:.12s ease-out asp-fade;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 12px 32px #00000080}.export-item{cursor:pointer;text-align:left;font-family:var(--font-mono);letter-spacing:.06em;color:var(--text);background:0 0;border:none;border-radius:3px;align-items:baseline;gap:8px;padding:7px 9px;font-size:12px;display:flex}.export-item:hover{background:var(--hover)}.export-note{letter-spacing:.04em;color:var(--text3);font-size:9.5px}.space-tabs{z-index:10;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--hairline2);background:#191c22e6;border-radius:5px;gap:3px;padding:3px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.space-tab{cursor:pointer;font-family:var(--font-mono);letter-spacing:.06em;color:var(--text3);background:0 0;border:none;border-radius:3px;padding:4px 12px;font-size:11px;transition:color .14s,background .14s}.space-tab:hover{color:var(--text2)}.space-tab.active{color:var(--text);background:var(--crease)}.info-actions{border-top:1px solid var(--hairline);gap:5px;padding:9px 12px;display:flex}.info-action{background:var(--panel2);border:1px solid var(--hairline2);cursor:pointer;font-family:var(--font-mono);letter-spacing:.04em;color:var(--text2);border-radius:3px;flex:1;padding:5px 6px;font-size:10.5px;transition:color .14s,border-color .14s}.info-action:hover{color:var(--text);border-color:var(--frame)}.shortcuts-overlay{z-index:60;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f11158c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.shortcuts-card{background:var(--panel);border:1px solid var(--hairline2);border-radius:6px;width:min(360px,90vw);animation:.14s ease-out asp-fade;overflow:hidden;box-shadow:0 16px 44px #0000008c}.shortcuts-head{border-bottom:1px solid var(--hairline);background:var(--panel2);justify-content:space-between;align-items:center;padding:12px 12px 12px 14px;display:flex}.shortcuts-title{font-family:var(--font-mono);letter-spacing:.12em;color:var(--text2);font-size:11px}.shortcuts-close{color:var(--text3);cursor:pointer;background:0 0;border:none;display:inline-flex}.shortcuts-close:hover{color:var(--text)}.shortcuts-grid{grid-template-columns:84px 1fr;align-items:center;gap:8px 12px;padding:14px;display:grid}.sc-key{text-align:center;background:var(--panel2);border:1px solid var(--hairline2);min-width:26px;font-family:var(--font-mono);color:var(--text);border-radius:4px;justify-self:start;padding:2px 8px;font-size:11px}.sc-desc{font-family:var(--font-sans);color:var(--text2);font-size:12.5px}.scale-bar{z-index:10;pointer-events:none;font-family:var(--font-mono);letter-spacing:.06em;color:var(--text3);font-feature-settings:"tnum" 1, "zero" 1;flex-direction:column;align-items:center;gap:3px;font-size:10px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.scale-line{border:1px solid var(--text3);background:#9aa0ab1f;border-top:none;min-width:1px;height:6px}.info-panel{z-index:10;background:var(--panel);border:1px solid var(--hairline2);border-radius:5px;width:210px;animation:.14s ease-out asp-fade;position:absolute;top:14px;right:14px;overflow:hidden;box-shadow:0 12px 32px #00000080}.info-head{border-bottom:1px solid var(--hairline);background:var(--panel2);justify-content:space-between;align-items:center;padding:9px 10px 9px 12px;display:flex}.info-type{font-family:var(--font-mono);letter-spacing:.08em;color:var(--text);font-size:12px;font-weight:600}.info-close{color:var(--text3);cursor:pointer;background:0 0;border:none;display:inline-flex}.info-close:hover{color:var(--text)}.info-rows{font-family:var(--font-mono);letter-spacing:.03em;font-feature-settings:"tnum" 1, "zero" 1;grid-template-columns:auto 1fr;gap:6px 12px;padding:11px 12px;font-size:11.5px;display:grid}.info-k{color:var(--text3)}.info-v{color:var(--text);text-align:right;overflow-wrap:anywhere}.info-swatch{vertical-align:middle;border:1px solid #ffffff40;border-radius:2px;width:9px;height:9px;margin-right:5px;display:inline-block}.empty-state{justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.empty-inner{text-align:center;max-width:380px;animation:.2s asp-fade}.empty-inner>svg{margin:0 auto 20px;display:block}.empty-kicker{font-family:var(--font-mono);letter-spacing:.16em;color:var(--text3);margin-bottom:12px;font-size:10.5px}.empty-title{color:var(--text);letter-spacing:-.01em;margin-bottom:8px;font-size:19px;font-weight:600}.empty-body{color:var(--text2);margin-bottom:22px;font-size:13.5px;line-height:1.55}.empty-actions{justify-content:center;gap:10px;margin-bottom:24px;display:flex}.empty-actions .btn-primary,.empty-actions .btn-ghost{height:38px;padding:0 17px;font-size:13.5px}.empty-supports{font-family:var(--font-mono);letter-spacing:.08em;color:var(--text3);border-top:1px solid var(--hairline);padding-top:14px;font-size:10px;line-height:1.8}.error-toast{z-index:15;width:min(440px,100% - 32px);animation:.18s asp-fade;position:absolute;top:20px;left:50%;transform:translate(-50%)}.error-card{border:1px solid #e0574b80;border-left:3px solid var(--err);background:#241416;border-radius:4px;gap:12px;padding:14px 15px;display:flex;box-shadow:0 14px 40px #00000080}.error-card>svg{flex-shrink:0;margin-top:1px}.error-content{flex:1;min-width:0}.error-title{color:var(--text);margin-bottom:4px;font-size:13.5px;font-weight:600}.error-msg{font-family:var(--font-mono);color:#e7a49c;word-break:break-word;font-size:11.5px;line-height:1.5}.error-actions{gap:8px;margin-top:11px;display:flex}.error-actions .alt{border:1px solid var(--hairline2);background:var(--panel2);height:30px;color:var(--text);cursor:pointer;border-radius:3px;padding:0 12px;font-size:12.5px;font-weight:500}.error-actions .alt:hover{border-color:var(--crease)}.error-actions .quiet{height:30px;color:var(--text2);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:0 12px;font-size:12.5px}.error-actions .quiet:hover{color:var(--text)}.error-dismiss{color:var(--text3);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px}.error-dismiss:hover{color:var(--text)}.drop-overlay{z-index:80;background:#0f1115e6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.drop-frame{border:2px dashed var(--crease);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:16px;width:calc(100% - 40px);height:calc(100% - 40px);animation:1.4s ease-in-out infinite asp-pulse;display:flex}.drop-title{font-family:var(--font-mono);letter-spacing:.14em;color:var(--crease);font-size:17px}.drop-sub{font-family:var(--font-mono);letter-spacing:.1em;color:var(--text2);font-size:11px}@media (width<=720px){.topbar{height:50px;padding:0 12px}.statusbar,.sample-btn{display:none}.layers-toggle{display:inline-flex}.panel{z-index:30;border-right:1px solid var(--hairline2);width:min(300px,84%);transition:transform .24s cubic-bezier(.4,0,.2,1);position:absolute;top:0;bottom:0;left:0;transform:translate(-102%)}.panel.open{transform:translate(0);box-shadow:6px 0 30px #00000080}.panel-close{display:inline-flex}.layer-row{min-height:46px}.layer-check{width:40px;height:44px;margin-right:-12px}.skipped-pop{left:12px}}
