:root{color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,sans-serif;font-synthesis:none;--bg: #f1f2f4;--panel: rgba(255, 255, 255, .82);--panel-solid: #fbfbfd;--ink: #171719;--secondary: #6e6e73;--tertiary: #9a9aa0;--border: rgba(23, 23, 25, .09);--accent: #d70015;--focus: #0071e3;--shadow: 0 16px 45px rgba(0, 0, 0, .09), 0 2px 9px rgba(0, 0, 0, .04)}*{box-sizing:border-box}[hidden]{display:none!important}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{background:var(--bg);color:var(--ink);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{color:inherit}button,[role=button]{cursor:pointer}button:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid rgba(0,113,227,.38);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:100;top:10px;left:10px;transform:translateY(-150%);padding:10px 14px;border-radius:12px;background:#fff;color:var(--ink);box-shadow:var(--shadow)}.skip-link:focus{transform:translateY(0)}.topbar{position:fixed;z-index:10;inset:0 0 auto;height:68px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:0 22px;border-bottom:1px solid rgba(23,23,25,.06);background:#f8f8fac2;backdrop-filter:blur(28px) saturate(1.35);-webkit-backdrop-filter:blur(28px) saturate(1.35)}.brand{display:flex;align-items:center;gap:8px;font-size:17px;font-weight:680;letter-spacing:-.025em}.brand-mark{width:8px;height:22px;border-radius:3px;background:var(--accent)}.brand-subtitle{color:var(--secondary);font-weight:470}.overall-progress{display:grid;grid-template-columns:auto 138px;align-items:center;gap:12px;color:#4c4c50;font-size:13px;font-weight:570}.progress-track,.section-progress,.loading-track{height:5px;overflow:hidden;border-radius:100px;background:#17171917}.progress-track span,.section-progress span,.loading-track span{display:block;width:0;height:100%;border-radius:inherit;background:var(--accent);transition:width .24s ease}.save-state{justify-self:end;display:flex;align-items:center;gap:7px;color:var(--secondary);font-size:12px;font-weight:550}.save-dot{width:7px;height:7px;border-radius:50%;background:#30d158}.save-state.saving .save-dot{background:#ff9f0a;animation:pulse 1s ease-in-out infinite}.save-state.local .save-dot{background:#8e8e93}.panel{border:1px solid rgba(255,255,255,.72);background:var(--panel);box-shadow:var(--shadow);backdrop-filter:blur(28px) saturate(1.32);-webkit-backdrop-filter:blur(28px) saturate(1.32)}#main-viewer,#viewer{position:absolute;inset:0;width:100%;height:100%}#viewer canvas{display:block;width:100%;height:100%;touch-action:none}.sidebar{position:fixed;z-index:6;top:84px;bottom:16px;left:16px;width:296px;display:flex;flex-direction:column;overflow:hidden;border-radius:24px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px 20px 15px}.panel-heading.compact{padding-bottom:8px}.panel-heading h2,.assembly-title h2,.inspector-heading h2{margin:2px 0 0;font-size:24px;line-height:1.1;letter-spacing:-.04em}.eyebrow{display:block;color:var(--secondary);font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.icon-button,.tool-button{min-width:44px;min-height:44px;display:inline-grid;place-items:center;padding:0;border:1px solid var(--border);border-radius:50%;background:#ffffffc2;transition:transform .18s ease,background .18s ease,opacity .18s ease}.icon-button:hover,.tool-button:hover{background:#fff;transform:translateY(-1px)}.icon-button:active,.tool-button:active{transform:scale(.96)}.icon-button svg,.tool-button svg{width:18px;height:18px}.tool-button:disabled{cursor:default;opacity:.34;transform:none}.assembly-list,.piece-list{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:0 10px 14px;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.12) transparent}.assembly-row{position:relative;width:100%;min-height:62px;display:grid;grid-template-columns:1fr 18px;align-items:center;gap:8px;padding:10px 12px 13px;border:0;border-radius:15px;background:transparent;text-align:left;transition:background .18s ease,transform .18s ease}.assembly-row:hover{background:#0000000b}.assembly-row:active{transform:scale(.985)}.assembly-copy{display:flex;flex-direction:column;min-width:0}.assembly-copy strong,.piece-row strong{overflow:hidden;font-size:14px;font-weight:610;text-overflow:ellipsis;white-space:nowrap}.assembly-copy small,.piece-row small{color:var(--secondary);font-size:11px}.assembly-meter{position:absolute;right:12px;bottom:8px;left:12px;height:3px;overflow:hidden;border-radius:100px;background:#00000012}.assembly-meter span{display:block;height:100%;border-radius:inherit;background:#30d158}.row-chevron{width:16px;transform:rotate(180deg);color:var(--tertiary)}.back-button{min-height:44px;display:flex;align-items:center;gap:4px;padding:0 8px 0 0;border:0;background:transparent;color:var(--focus);font-size:14px}.back-button svg{width:17px}.assembly-title{padding:4px 20px 14px}.assembly-title p{margin:7px 0 11px;color:var(--secondary);font-size:12px}.section-progress span{background:#30d158}.search-field{min-height:42px;display:flex;align-items:center;gap:8px;margin:0 14px 12px;padding:0 12px;border:1px solid rgba(0,0,0,.055);border-radius:12px;background:#0000000b}.search-field svg{width:16px;color:var(--secondary)}.search-field input{width:100%;border:0;outline:0;background:transparent;color:var(--ink);font-size:13px}.search-field input::placeholder{color:var(--tertiary)}.piece-list{padding-top:0}.piece-row{width:100%;min-height:52px;display:grid;grid-template-columns:12px 1fr;align-items:center;gap:11px;padding:7px 10px;border:0;border-radius:12px;background:transparent;text-align:left;transition:background .18s ease}.piece-row:hover{background:#0000000b}.piece-row.selected{background:#0071e31a}.piece-row>span:last-child{display:flex;flex-direction:column;min-width:0}.status-dot{width:9px;height:9px;flex:0 0 auto;border-radius:50%;background:var(--status);box-shadow:inset 0 0 0 1px #00000014}.status-dot.large{width:13px;height:13px}.empty-state{padding:28px 10px;color:var(--secondary);text-align:center}.loading-card{position:fixed;z-index:5;top:50%;left:50%;width:min(330px,calc(100vw - 40px));display:flex;flex-direction:column;align-items:center;gap:6px;padding:28px;border:1px solid rgba(255,255,255,.78);border-radius:24px;background:#ffffffdb;box-shadow:var(--shadow);transform:translate(-50%,-50%);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);transition:opacity .3s ease,transform .3s ease}.loading-card.hidden{pointer-events:none;opacity:0;transform:translate(-50%,-46%)}.loading-card strong{margin-top:8px;font-size:17px;letter-spacing:-.02em}.loading-card>span{color:var(--secondary);font-size:12px;text-align:center}.loading-track{width:100%;margin-top:12px}.loading-orbit{width:36px;height:36px;border:2px solid rgba(0,0,0,.08);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}.viewer-toolbar{position:fixed;z-index:4;top:84px;right:16px;display:flex;gap:8px}.tool-button{position:relative;background:#ffffffc7;box-shadow:0 8px 26px #00000014;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.tool-button:after{content:attr(data-tooltip);position:absolute;top:calc(100% + 7px);left:50%;pointer-events:none;padding:5px 8px;border-radius:7px;background:#19191bd6;color:#fff;font-size:10px;white-space:nowrap;opacity:0;transform:translate(-50%,-2px);transition:opacity .16s ease,transform .16s ease}.tool-button:hover:after{opacity:1;transform:translate(-50%)}.viewer-hint{position:fixed;z-index:3;bottom:22px;left:50%;display:flex;align-items:center;gap:14px;padding:8px 12px;border-radius:100px;background:#ffffffa8;color:var(--secondary);font-size:11px;box-shadow:0 4px 18px #0000000f;transform:translate(-50%);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.viewer-hint span{display:flex;align-items:center;gap:5px;white-space:nowrap}.viewer-hint svg{width:13px;height:13px}.legend{position:fixed;z-index:4;bottom:16px;left:328px;max-width:calc(100vw - 680px);display:flex;gap:12px;overflow-x:auto;padding:9px 12px;border-radius:14px;box-shadow:0 8px 28px #00000012;scrollbar-width:none}.legend::-webkit-scrollbar{display:none}.legend-item{display:flex;align-items:center;gap:5px;color:var(--secondary);font-size:10px;white-space:nowrap}.legend-item .status-dot{width:7px;height:7px}.inspector{position:fixed;z-index:7;top:84px;right:16px;bottom:16px;width:360px;display:flex;flex-direction:column;overflow:hidden;padding:22px;border-radius:24px;opacity:0;transform:translate(calc(100% + 32px));transition:transform .26s cubic-bezier(.2,.8,.2,1),opacity .2s ease}.inspector.open{opacity:1;transform:translate(0)}.inspector-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.inspector-heading h2{font-size:27px}.file-name{margin:8px 0 22px;color:var(--secondary);font-size:12px;overflow-wrap:anywhere}.status-heading{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}.status-heading>span{font-size:13px;font-weight:650}.status-heading small{color:var(--tertiary);font-size:10px}.status-list{flex:1;min-height:0;overflow-y:auto}.status-option{width:100%;min-height:54px;display:grid;grid-template-columns:16px 1fr 20px;align-items:center;gap:10px;padding:8px 10px;border:1px solid transparent;border-radius:13px;background:transparent;text-align:left;transition:background .18s ease,border-color .18s ease,transform .18s ease}.status-option:hover{background:#0000000a}.status-option:active{transform:scale(.99)}.status-option.selected{border-color:#00000012;background:#ffffffb8}.status-option svg{width:17px;color:var(--focus)}.status-label{display:flex;flex-direction:column}.status-label strong{font-size:13px;font-weight:620}.status-label small{color:var(--secondary);font-size:10px}.inspector-actions{display:grid;gap:10px;padding-top:14px;border-top:1px solid var(--border)}.secondary-button{min-height:46px;display:flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:13px;background:#1d1d1f;color:#fff;font-size:13px;font-weight:610}.secondary-button svg{width:17px}.text-button{min-height:40px;border:0;background:transparent;color:var(--focus);font-size:11px}.sheet-handle{display:none}.toast{position:fixed;z-index:30;bottom:28px;left:50%;pointer-events:none;padding:10px 15px;border-radius:100px;background:#1c1c1ee6;color:#fff;font-size:12px;opacity:0;transform:translate(-50%,10px);transition:opacity .18s ease,transform .18s ease}.toast.show{opacity:1;transform:translate(-50%)}.scrim,.mobile-only,.mobile-close{display:none}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.35}}@media(max-width:1100px){.legend{display:none}.viewer-hint{left:calc(50% + 150px)}}@media(max-width:900px){.topbar{height:64px;grid-template-columns:auto 1fr auto;gap:9px;padding:0 max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left))}.mobile-only,.mobile-close{display:inline-grid}.brand{font-size:16px}.brand-mark{height:19px}.brand-subtitle{display:none}.overall-progress{justify-self:end;grid-template-columns:auto}.overall-progress .progress-track{display:none}.overall-progress span{font-size:11px}.save-state{display:none}.sidebar{z-index:20;top:max(12px,env(safe-area-inset-top));bottom:max(12px,env(safe-area-inset-bottom));left:12px;width:min(340px,calc(100vw - 24px));opacity:0;transform:translate(calc(-100% - 20px));transition:transform .26s cubic-bezier(.2,.8,.2,1),opacity .18s ease}.sidebar.mobile-open{opacity:1;transform:translate(0)}.scrim{position:fixed;z-index:19;inset:0;display:block;pointer-events:none;border:0;background:#0000002e;opacity:0;transition:opacity .18s ease;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.scrim.visible{pointer-events:auto;opacity:1}.viewer-toolbar{top:76px;right:12px;flex-direction:column}.viewer-hint{right:12px;bottom:max(16px,env(safe-area-inset-bottom));left:12px;justify-content:center;gap:10px;transform:none}.viewer-hint span:not(:first-child){display:none}.inspector{z-index:22;inset:auto 8px 8px;width:auto;max-height:min(78vh,680px);padding:13px 18px max(16px,env(safe-area-inset-bottom));border-radius:24px;transform:translateY(calc(100% + 16px))}.inspector.open{transform:translateY(0)}.sheet-handle{display:block;width:38px;height:5px;margin:0 auto 12px;border-radius:10px;background:#00000024}.inspector-heading h2{font-size:23px}.file-name{margin-bottom:14px}.status-option{min-height:50px}.toast{bottom:24px;max-width:calc(100vw - 36px);text-align:center}}@media(max-height:520px){.inspector{inset:72px 8px 8px auto;width:min(380px,calc(100vw - 16px));max-height:none;padding:12px 14px;border-radius:20px;transform:translate(calc(100% + 16px))}.inspector.open{transform:translate(0)}.sheet-handle,.file-name,.secondary-button,.status-heading small{display:none}.inspector-heading h2{font-size:20px}.status-heading{margin:6px 0 4px}.status-option{min-height:44px}.inspector-actions{gap:2px;padding-top:5px}.text-button{min-height:32px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
