@font-face{font-family:Punc;src:url(/assets/Punc-Regular-3f07f7cb.otf) format("opentype");font-weight:400;font-display:swap}@font-face{font-family:Punc;src:url(/assets/Punc-Bold-2e433f31.otf) format("opentype");font-weight:700;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Variable-49d1b469.woff2) format("woff2");font-weight:100 900;font-display:swap}:root{--sos-bg: #eeece5;--sos-surface: rgba(255, 255, 255, .95);--sos-surface-solid: #ffffff;--sos-ink: #2e2d2c;--sos-ink-soft: #575756;--sos-muted: #92928f;--sos-line: #e4e3df;--sos-line-strong: #2e2d2c;--sos-accent: #ee6300;--sos-dark: rgba(46, 45, 44, .92);--sos-shadow: 0 6px 24px rgba(46, 45, 44, .08);--sos-radius: 3px;--sos-font: "Geist Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--sos-font-display: "Punc", var(--sos-font);--sos-weight-text: 300;--sos-weight-emphasis: 600;--sos-weight-heading: 700}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{font-family:var(--sos-font);background-color:var(--sos-bg);color:var(--sos-ink);overflow:hidden;-webkit-font-smoothing:antialiased}button{font-family:inherit}#canvas-container{position:fixed;inset:0}#canvas-container canvas{display:block;width:100%;height:100%}#canvas-container{transition:filter .25s ease-out}.share-loading #canvas-container{filter:blur(16px);transition:none}@media(prefers-reduced-motion:reduce){#canvas-container{transition:none}}.btn-label,.brand-claim,.dimensions-title,.size-picker-title,.parts-title,.size-picker-cancel{text-transform:uppercase;letter-spacing:.08em}.brand{position:fixed;top:20px;left:24px;z-index:900;display:flex;align-items:baseline;gap:14px;pointer-events:none;-webkit-user-select:none;user-select:none}.brand-mark{font-family:var(--sos-font-display);font-size:1.6rem;font-weight:400;letter-spacing:.04em;color:var(--sos-ink)}.brand-claim{font-size:.68rem;font-weight:var(--sos-weight-text);color:var(--sos-ink-soft);line-height:1.35}.brand-claim strong{display:block;font-weight:var(--sos-weight-emphasis);color:var(--sos-accent)}.project-panel{position:fixed;top:72px;left:24px;z-index:900;width:196px;max-height:calc(100vh - 96px);overflow-y:auto;display:flex;flex-direction:column;gap:6px;font-size:.75rem}.project-name,.group-rename-input{width:100%;box-sizing:border-box;padding:5px 8px;font:inherit;color:var(--sos-ink);background:var(--sos-surface);border:1px solid var(--sos-line);border-radius:var(--sos-radius)}.group-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.group-row{display:flex;background:var(--sos-surface);border:1px solid var(--sos-line);border-radius:var(--sos-radius)}.group-row.active{border-color:var(--sos-accent)}.group-row button,.project-action{font:inherit;color:var(--sos-ink-soft);background:none;border:none;cursor:pointer}.group-select{flex:1;min-width:0;padding:6px 8px;text-align:left;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.group-rename,.group-delete{flex:none;width:24px;padding:0;display:flex;align-items:center;justify-content:center}.group-row.active .group-select{color:var(--sos-ink);font-weight:var(--sos-weight-emphasis)}.group-row button:hover,.project-action:hover{color:var(--sos-accent)}.project-action{padding:4px 8px;text-align:left}.presenting .project-name,.presenting .project-action,.presenting .group-rename,.presenting .group-delete,.visiting #clearBtn,.visiting #loadBtn{display:none}.visit-copy{display:none;padding:7px 8px;font:inherit;font-weight:var(--sos-weight-emphasis);text-align:left;color:var(--sos-surface-solid);background:var(--sos-accent);border:none;border-radius:var(--sos-radius);cursor:pointer}.visiting .visit-copy{display:block}.save-menu{position:fixed;top:20px;right:24px;z-index:1100;display:flex;flex-direction:column;align-items:flex-end;gap:6px}.save-menu-btn{display:flex;padding:5px 6px;background:var(--sos-surface);border:1px solid var(--sos-line);border-radius:var(--sos-radius);cursor:pointer}.save-disk{fill:none;stroke:var(--sos-ink);stroke-width:1.4}.save-cloud{fill:var(--save-cloud, #92928f);stroke:var(--sos-surface-solid);stroke-width:1}.save-strike{display:none;stroke:#b3261e;stroke-width:1.8}.save-menu-btn[data-status=saved]{--save-cloud: #2e8b57}.save-menu-btn[data-status=dirty],.save-menu-btn[data-status=saving]{--save-cloud: var(--sos-muted)}.save-menu-btn[data-status=saving] .save-cloud{animation:save-pulse 1s ease-in-out infinite}.save-menu-btn[data-status=offline]{--save-cloud: #b3261e}.save-menu-btn[data-status=offline] .save-strike{display:block}.save-menu-btn[data-status=conflict]{--save-cloud: var(--sos-accent)}@keyframes save-pulse{50%{opacity:.35}}.save-menu-list{display:flex;flex-direction:column;width:240px;font-size:.75rem;background:var(--sos-surface-solid);border:1px solid var(--sos-line);border-radius:var(--sos-radius);box-shadow:var(--sos-shadow)}.save-menu-list[hidden],.save-conflict[hidden]{display:none}.save-status{margin:0;padding:8px 10px;color:var(--sos-ink-soft);border-bottom:1px solid var(--sos-line)}.save-conflict{display:flex;flex-direction:column;border-bottom:1px solid var(--sos-line)}.save-menu-list button{padding:8px 10px;font:inherit;text-align:left;color:var(--sos-ink);background:none;border:none;cursor:pointer}.save-menu-list button:hover{color:var(--sos-accent)}.dimensions{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:900;display:flex;align-items:baseline;gap:14px;padding:8px 16px;border:1px solid var(--sos-line);border-radius:var(--sos-radius);background-color:var(--sos-surface);color:var(--sos-ink);font-size:.95rem;font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;box-shadow:var(--sos-shadow)}.dimensions-title{color:var(--sos-accent);font-size:.68rem;font-weight:var(--sos-weight-emphasis)}.cabinet-hint{position:fixed;top:66px;left:50%;transform:translate(-50%);z-index:900;max-width:calc(100vw - 32px);padding:6px 14px;border:1px solid var(--sos-accent);border-radius:var(--sos-radius);background-color:var(--sos-surface);color:var(--sos-ink);font-size:.8rem;text-align:center;pointer-events:none;box-shadow:var(--sos-shadow)}.floating-buttons{position:fixed;bottom:170px;right:24px;display:flex;flex-direction:column;gap:18px;z-index:1000;align-items:flex-end}.control-group{display:flex;flex-direction:column;gap:6px;align-items:stretch}.floating-btn,.floating-toggle{width:212px;height:36px;padding:0 12px;display:flex;align-items:center;gap:10px;border:1px solid var(--sos-line);border-radius:var(--sos-radius);background-color:var(--sos-surface);color:var(--sos-ink);font-size:.95rem;cursor:pointer;white-space:nowrap;box-shadow:var(--sos-shadow);transition:border-color .15s ease,color .15s ease,background-color .15s ease}.btn-icon{width:16px;text-align:center;flex-shrink:0;color:var(--sos-ink-soft);transition:color .15s ease}.btn-label{font-size:.7rem;font-weight:var(--sos-weight-emphasis)}.btn-beta{margin-left:auto;padding:0 4px;border:1px solid var(--sos-accent);border-radius:var(--sos-radius);color:var(--sos-accent);font-size:.55rem;font-weight:var(--sos-weight-emphasis);text-transform:uppercase;letter-spacing:.08em}.floating-btn:hover,.floating-toggle:hover{border-color:var(--sos-line-strong)}.floating-btn:hover .btn-icon{color:var(--sos-accent)}.floating-btn:active,.floating-toggle:active{background-color:var(--sos-surface-solid);transform:translateY(1px)}.toggle-dot{width:10px;height:10px;margin:0 3px;border:1px solid var(--sos-muted);flex-shrink:0;transition:background-color .15s ease,border-color .15s ease}.floating-toggle{color:var(--sos-ink-soft)}.floating-toggle.active{color:var(--sos-ink);border-color:var(--sos-accent)}.floating-toggle.active .toggle-dot{background-color:var(--sos-accent);border-color:var(--sos-accent)}.size-picker{position:fixed;z-index:1000;background-color:var(--sos-surface);border:1px solid var(--sos-line);border-radius:var(--sos-radius);padding:6px;min-width:200px;box-shadow:0 10px 32px #2e2d2c24;display:flex;flex-direction:column;gap:2px}.size-picker-title{color:var(--sos-accent);font-size:.68rem;font-weight:var(--sos-weight-emphasis);padding:6px 28px 8px 8px;border-bottom:1px solid var(--sos-line);margin-bottom:4px}.size-picker-empty{color:var(--sos-muted);font-size:.8rem;font-weight:var(--sos-weight-text);padding:8px}.size-picker-option{background:none;color:var(--sos-ink);border:none;border-radius:2px;padding:7px 10px;cursor:pointer;font-size:.85rem;text-align:left;transition:background-color .1s ease,color .1s ease}.size-picker-option:before{content:"→";display:inline-block;width:0;overflow:hidden;vertical-align:bottom;transition:width .12s ease}.size-picker-option:hover{background-color:var(--sos-ink);color:var(--sos-surface-solid)}.size-picker-option:hover:before{width:1.6em;color:var(--sos-accent)}.size-picker-option-danger{color:#c62828}.size-picker-option-danger:hover{background-color:#c62828;color:var(--sos-surface-solid)}.size-picker-option-danger:hover:before{color:var(--sos-surface-solid)}.size-picker-option-last{font-weight:var(--sos-weight-emphasis);box-shadow:inset 2px 0 0 var(--sos-accent)}.size-picker-close{position:absolute;top:6px;right:6px;background:none;border:none;border-radius:2px;color:var(--sos-muted);font-size:1rem;line-height:1;padding:2px 6px;cursor:pointer}.size-picker-close:hover{color:var(--sos-ink);background-color:var(--sos-line)}.size-picker-cancel{background:none;border:none;border-top:1px solid var(--sos-line);border-radius:0;color:var(--sos-muted);font-size:.68rem;padding:8px 8px 4px;margin-top:4px;text-align:center;cursor:pointer}.size-picker-cancel:hover{color:var(--sos-accent)}.canvas-tooltip{position:fixed;z-index:1100;background-color:var(--sos-dark);border-radius:var(--sos-radius);color:var(--sos-surface-solid);font-size:.8rem;font-weight:var(--sos-weight-text);line-height:1.4;padding:6px 10px;pointer-events:none;max-width:300px;white-space:normal;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.parts-backdrop{position:fixed;inset:0;z-index:1100;background-color:#eeece5b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}.parts-dialog{background-color:var(--sos-surface-solid);border:1px solid var(--sos-line);border-radius:var(--sos-radius);padding:20px 24px 12px;min-width:360px;max-height:80vh;overflow-y:auto;color:var(--sos-ink);font-size:.85rem;box-shadow:0 16px 48px #2e2d2c29;display:flex;flex-direction:column;gap:4px}.parts-title{color:var(--sos-accent);font-size:.68rem;font-weight:var(--sos-weight-emphasis);margin-top:12px;padding-bottom:4px;border-bottom:1px solid var(--sos-line)}.parts-title:first-child{color:var(--sos-ink);font-size:1.1rem;font-weight:var(--sos-weight-heading);letter-spacing:.04em;margin-top:0;border-bottom:none}.parts-table{align-self:flex-start;border-collapse:collapse}.parts-table td{padding:2px 0;font-weight:var(--sos-weight-text)}.parts-dialog .size-picker-empty{padding-left:0}.parts-table td:first-child{text-align:right;padding-right:10px;font-weight:var(--sos-weight-emphasis);font-variant-numeric:tabular-nums}@media(max-width:768px){.brand-claim{display:none}.project-panel{top:108px;left:12px;width:150px;max-height:40vh}.dimensions{top:64px;font-size:.85rem}.cabinet-hint{top:104px}.floating-btn,.floating-toggle{width:196px;height:32px}}
