:root{color-scheme:dark;font-family:"Instrument Sans","Segoe UI",sans-serif;background:#121614;color:#edf1ea;--panel:#1a201c;--raised:#242d27;--border:#35433a;--muted:#aab8ad;--accent:#c2eb86;--ink:#18220d;--blue:#73dbec;--warn:#ffcf82}
*{box-sizing:border-box}body{margin:0}button,input,a,summary,label{font:inherit}button,a,summary{touch-action:manipulation}a{color:inherit}button,.file-button,.link{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);background:var(--raised);border-radius:7px;padding:.55rem .75rem;color:inherit;text-decoration:none;gap:.35rem}button:hover,.file-button:hover{border-color:#6f8d77}button:disabled{opacity:.5;cursor:wait}.primary{color:var(--ink);background:var(--accent);border-color:var(--accent);font-weight:700}.quiet{background:transparent}.top{height:64px;padding:0 clamp(16px,3vw,40px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:#181e1a}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;letter-spacing:-.03em;font-size:1.2rem;font-weight:700}.brand b{color:var(--accent)}.brand-mark{display:grid;grid-template-columns:repeat(2,8px);gap:3px}.brand-mark i{width:8px;height:8px;background:var(--accent);border-radius:2px}.brand-mark i:last-child{background:#6d8752}#account{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:.86rem}
.home,.welcome{max-width:1060px;margin:0 auto;padding:clamp(22px,6vw,80px) 24px}.welcome{max-width:600px}.home-title{display:flex;justify-content:space-between;align-items:end;gap:15px;margin-bottom:28px}.home h1,.welcome h1{font-size:clamp(1.8rem,5vw,3.1rem);letter-spacing:-.055em;margin:0 0 8px}.home p,.welcome p{color:var(--muted);margin:0 0 15px}.projects{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));gap:14px}.project-bar{display:flex;gap:10px;align-items:center;padding:12px clamp(12px,2vw,28px);border-bottom:1px solid var(--border)}.project-bar #title{max-width:470px;flex:1;background:transparent;font-size:1.13rem;font-weight:700}.project-bar #save-state{margin-left:auto;font-size:.8rem;color:var(--muted);white-space:nowrap}
.workbench{display:grid;grid-template-columns:220px minmax(0,1fr) 254px;min-height:calc(100dvh - 123px)}.panel{padding:17px 14px;background:var(--panel)}.sources{border-right:1px solid var(--border)}.settings{border-left:1px solid var(--border)}h2{font-size:.93rem;margin:0 0 12px}.settings h2:not(:first-child){margin-top:19px}.panel p{margin:8px 0;font-size:.82rem;color:var(--muted)}.file-button{width:100%;font-size:.84rem}.file-button input{position:absolute;opacity:0;width:1px;height:1px}.file-button:focus-within{outline:2px solid var(--accent);outline-offset:2px}.item-list,#photo-list,#tool-list,#asset-list{display:grid;gap:6px;margin:10px 0}.item-list:empty,#photo-list:empty,#tool-list:empty,#asset-list:empty{margin:0}.item{display:flex;justify-content:space-between;text-align:left;min-width:0;font-size:.83rem}.item span,.asset-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item.active{border-color:var(--accent);color:var(--accent)}.item img{width:34px;height:26px;object-fit:cover;border-radius:3px}.asset-row{display:flex;align-items:center;gap:7px;font-size:.78rem}.asset-row a{flex:1}.asset-row button{padding:2px 7px}
.canvas-panel{min-width:0;display:flex;flex-direction:column;background:#121915}.tabs,.toolbar{display:flex;gap:7px;align-items:center;flex-wrap:wrap;padding:10px 13px;border-bottom:1px solid var(--border);min-height:53px}.tabs button{background:transparent;border-color:transparent;font-weight:650}.tabs button[aria-pressed=true]{background:var(--raised);border-color:var(--border);color:var(--accent)}#canvas-meta{color:var(--muted);margin-left:auto;font-size:.81rem}.toolbar{font-size:.82rem}.toolbar:empty{display:none}.toolbar label{display:flex;gap:4px;align-items:center}.toolbar input[type=number]{width:76px}.toolbar input[type=range]{width:90px}.viewport{min-height:450px;position:relative;flex:1;display:grid;place-items:center;background-color:#131b17;background-image:radial-gradient(#2f3b33 1px,transparent 1px);background-size:18px 18px;overflow:hidden}.viewport svg,.viewport canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.viewport canvas{cursor:grab}.viewport p{z-index:1;padding:12px;background:var(--panel);color:var(--muted);border-radius:6px}.instruction{min-height:40px;margin:0;padding:9px 14px;font-size:.83rem;color:var(--muted);background:var(--panel);border-top:1px solid var(--border)}.grid-floor{fill:#1b2a21;stroke:#708f77;stroke-width:1}.grid-line{stroke:#486353;stroke-width:.45}.tool-shape{stroke:var(--accent);stroke-width:1;fill:#bbeb7d44;cursor:move;stroke-linejoin:round;vector-effect:non-scaling-stroke}.tool-shape.active{fill:#c6ef7770;stroke-width:2}.finger{fill:#6cdef140;stroke:var(--blue);stroke-width:1.5;cursor:move;vector-effect:non-scaling-stroke}.finger.active{stroke-width:2.5}.point{fill:#162219;stroke:var(--accent);stroke-width:1.4;cursor:grab;vector-effect:non-scaling-stroke}.edge-point{fill:transparent;cursor:crosshair}.paper{fill:none;stroke:#79f2f0;stroke-width:2;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.draft{fill:#b9ef7c2b;stroke:var(--accent);stroke-width:1;stroke-dasharray:5 4;pointer-events:none;vector-effect:non-scaling-stroke}
.fields{display:grid;gap:6px;margin:8px 0}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.two:has(label:only-child){grid-template-columns:1fr}.fields label,.selection-name{font-size:.75rem;color:var(--muted);display:grid;gap:4px}.check{display:flex;gap:5px;align-items:center;font-size:.8rem;color:var(--muted);margin:10px 0}.check input{accent-color:var(--accent)}input:not([type=checkbox],[type=range],[type=file]){width:100%;min-width:0;padding:6px 7px;color:inherit;border:1px solid var(--border);border-radius:5px;background:#131a16}summary{cursor:pointer;font-size:.83rem;color:var(--muted);margin-top:10px}.settings #fit-message.warn{color:var(--warn)}#selection:not(:empty){margin-top:13px;padding:12px 0;border-block:1px solid var(--border)}.export-buttons{display:flex;gap:6px}.export-buttons button{flex:1}.tools-actions{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.tools-actions button{font-size:.77rem;padding:5px 6px}#draw-tool{margin-top:8px;width:100%;font-size:.83rem}#notice{position:fixed;bottom:18px;right:18px;max-width:min(420px,calc(100vw - 36px));padding:11px 14px;border:1px solid #637c56;border-radius:8px;background:#293826;z-index:2;box-shadow:0 5px 22px #0006;font-size:.88rem}#notice.error{border-color:#c78368;background:#452d24}[hidden]{display:none!important}
@media(max-width:980px){.workbench{grid-template-columns:175px minmax(0,1fr) 206px}.panel{padding:13px 10px}}@media(max-width:760px){.workbench{grid-template-columns:1fr 1fr}.canvas-panel{order:-1;grid-column:1/-1}.viewport{min-height:480px}.sources{border-top:1px solid var(--border)}.settings{border-top:1px solid var(--border)}.top{height:55px}.project-bar{gap:5px}.project-bar button{padding:.43rem}.project-bar #title{font-size:.93rem}.project-bar #save-state{display:none}}@media(max-width:420px){.viewport{min-height:390px}#account span{display:none}.home-title{align-items:start;flex-direction:column}.toolbar{gap:5px}.panel{padding:10px 7px}}

.home-drop{min-height:76px;margin:0 0 20px;border-style:dashed;background:var(--panel);text-align:center}
.home.file-over .home-drop{border-color:var(--accent);background:#293826;color:var(--accent)}
.drop-hint{display:none;pointer-events:none}
#studio.file-over .drop-hint{display:grid;place-items:center;position:absolute;inset:10px;z-index:2;padding:12px;border:2px dashed var(--accent);border-radius:8px;background:#18291be8;color:var(--accent);text-align:center}
.photo-shape{cursor:pointer}
#canvas.panning,#canvas.panning *{cursor:grab}
#canvas.pan-active,#canvas.pan-active *{cursor:grabbing}
.toolbar button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}
.editor-tools{display:flex;align-items:center;flex-wrap:wrap;gap:5px 9px;padding:7px 12px;border-bottom:1px solid var(--border);background:#181f1a}
.editor-tools-group{display:flex;align-items:center;flex-wrap:wrap;gap:3px}
.editor-tools-group:not(:last-child){border-right:1px solid var(--border);padding-right:8px}
.editor-tool{width:34px;height:34px;padding:5px;border-color:transparent;background:transparent;color:#d9e4da}
.editor-tool svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.editor-tool[aria-pressed=true]{color:var(--accent);background:#2a3828;border-color:#52664b}
.editor-tool:disabled{opacity:.32;cursor:default}
.editor-tool:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.editor-search-results{display:grid;gap:3px;margin-top:10px;max-height:min(420px,52vh);overflow:auto;color:var(--muted)}
.editor-search-results button{justify-content:space-between;text-align:left}
.editor-search-results kbd{color:var(--muted);font-size:.8rem;white-space:nowrap}
#canvas.zooming,#canvas.zooming *,#mesh.zooming{cursor:ns-resize}
#canvas.picking-edge,#canvas.picking-edge *{cursor:crosshair}
#canvas.combining-contours .tool-shape{cursor:crosshair}
#canvas.combining-contours .finger{pointer-events:none}
.tool-shape.contour-unselected{fill:#bbeb7d26}
.tool-shape.contour-first{fill:#c6ef7768;stroke-width:2}
.tool-shape.contour-second{fill:#73dbec48;stroke:var(--blue);stroke-width:2}
.item.contour-first{border-color:var(--accent)}
.item.contour-second{border-color:var(--blue)}
.context-menu{position:fixed;z-index:3;display:grid;min-width:140px;padding:4px;border:1px solid var(--border);border-radius:8px;background:var(--raised);box-shadow:0 6px 22px #0009}
.context-menu button{justify-content:start;padding:.4rem .55rem;border-color:transparent;background:transparent;font-size:.83rem;text-align:left}
.context-menu button:not(:disabled):hover,.context-menu button:focus-visible{background:#35433a;outline:0}
.context-menu button:disabled{cursor:default}
.toolbar select{font:inherit;color:inherit;background:var(--raised);border:1px solid var(--border);border-radius:6px;padding:.45rem}
.layout-photo{opacity:.25;pointer-events:none}
.grid-outline{fill:none;stroke:#708f77;stroke-width:1;pointer-events:none}
.fine-grid{fill:none;stroke:#a1bbad;stroke-width:.65;opacity:.33;vector-effect:non-scaling-stroke;pointer-events:none}
.rotation-stem,.snap-guide{stroke:var(--blue);stroke-width:1.25;stroke-dasharray:5 4;vector-effect:non-scaling-stroke;pointer-events:none}
.rotation-stem{opacity:.6}
.rotation-handle{fill:#15343c;stroke:var(--blue);stroke-width:2;vector-effect:non-scaling-stroke;cursor:grab}
.rotation-icon{fill:var(--blue);text-anchor:middle;dominant-baseline:central;pointer-events:none}
.scale-handle{fill:#26331a;stroke:var(--accent);stroke-width:1.6;vector-effect:non-scaling-stroke;cursor:nwse-resize}
.finger-handle{fill:#15343c;stroke:var(--blue);stroke-width:2;vector-effect:non-scaling-stroke}
.finger-handle.horizontal{cursor:ew-resize}
.finger-handle.vertical{cursor:ns-resize}
.fields select{min-width:0;font:inherit;color:inherit;background:#131a16;border:1px solid var(--border);border-radius:5px;padding:6px}
#canvas.point-add .point[data-point]{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath fill='%23121915' stroke='white' stroke-width='1.5' d='M3 2v16l4-4 3 6 3-1-3-6h6z'/%3E%3Ccircle cx='20' cy='19' r='6' fill='%23121915' stroke='%2373dbec'/%3E%3Cpath stroke='%2373dbec' stroke-width='1.6' d='M17 19h6m-3-3v6'/%3E%3C/svg%3E") 3 2,copy}
#canvas.point-remove .point[data-point]{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath fill='%23121915' stroke='white' stroke-width='1.5' d='M3 2v16l4-4 3 6 3-1-3-6h6z'/%3E%3Ccircle cx='20' cy='19' r='6' fill='%23121915' stroke='%2373dbec'/%3E%3Cpath stroke='%2373dbec' stroke-width='1.6' d='M17 19h6'/%3E%3C/svg%3E") 3 2,default}
.point.marked{fill:var(--blue);stroke:#133b42;stroke-width:1.7}
.point-box{fill:#73dbec30;stroke:var(--blue);stroke-width:1.25;stroke-dasharray:5 3;pointer-events:none;vector-effect:non-scaling-stroke}
#canvas.box-selecting,#canvas.box-selecting :not(.point.marked){cursor:crosshair}
#canvas.rotating,#canvas.rotating *{cursor:grabbing}
.project-card{display:flex;align-items:center;gap:2px;min-width:0;min-height:92px;border:1px solid var(--border);border-radius:7px;background:var(--panel);padding:5px}
.project-open{flex:1;min-width:0;align-self:stretch;justify-content:flex-start;gap:9px;overflow-wrap:anywhere;text-align:left;background:transparent;border-color:transparent;padding:6px}
.project-caption{display:grid;gap:3px;min-width:0}
.project-thumb{display:grid;place-items:center;width:52px;height:52px;flex:none;overflow:hidden;border:1px solid var(--border);border-radius:5px;background:#121a15}
.project-thumb svg,.project-thumb img{width:100%;height:100%;object-fit:cover}
.project-open time,.project-bin-details{color:var(--muted);font-size:.8rem}
.project-remove{width:30px;height:30px;padding:0;flex:none;margin-right:3px;color:var(--muted)}
.project-remove:hover{color:var(--warn)}
#admin h1{margin-top:14px}
.admin-maintenance{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:18px 0;padding:14px;border:1px solid var(--border);border-radius:7px;background:var(--panel)}
.admin-maintenance h2{font-size:1rem;margin:0 0 6px}
.admin-maintenance p{margin:0}
.admin-maintenance-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#maintenance-state[data-active="true"]{color:var(--warn)}
.admin-table-wrap{overflow:auto;border:1px solid var(--border);border-radius:7px}
.admin-table{width:100%;border-collapse:collapse;text-align:left}
.admin-table th,.admin-table td{padding:10px 12px;border-bottom:1px solid var(--border)}
.admin-table th{background:var(--panel);white-space:nowrap}
.admin-table td:first-child{overflow-wrap:anywhere}
.admin-table td:last-child button{white-space:nowrap}
.admin-table tbody tr:last-child td{border-bottom:0}
.editor-help{background:var(--panel);border-top:1px solid var(--border);padding:0 14px 10px}
.editor-help dl{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;font-size:.83rem}
.editor-help dt{font-weight:650}
.editor-help dd{color:var(--muted);margin:0}
.inlay-settings p{font-size:.8rem;color:var(--muted)}
.inlay-settings button{width:100%;font-size:.8rem}
.preview-tool{fill:#bbeb7d44;stroke:var(--accent);stroke-width:1.2;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.preview-finger{fill:#6cdef140;stroke:var(--blue);stroke-width:1.2;vector-effect:non-scaling-stroke}
.shared-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,.7fr);gap:18px;margin-top:25px}
.shared-content>svg{width:100%;height:clamp(230px,49vh,510px);padding:16px;background:#141d17;border:1px solid var(--border);border-radius:8px}
.shared-actions{display:grid;align-content:start;gap:16px;min-width:0}
.shared-actions h2{font-size:1rem;margin:0 0 8px}
.shared-actions .export-buttons{flex-wrap:wrap}
#shared-attachments a{display:table;margin-bottom:6px;overflow-wrap:anywhere}
dialog{width:min(500px,calc(100% - 32px));max-height:calc(100% - 32px);padding:20px;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:9px}
dialog::backdrop{background:#080c0ad9}
dialog h2{margin:0 0 10px}
dialog p,dialog label{color:var(--muted);font-size:.9rem}
.arrange-tools{display:grid;gap:6px;max-height:230px;overflow:auto}
.arrange-tools label{display:flex;align-items:center;gap:6px}
.path-field{display:grid;gap:4px;margin-top:10px}
.path-field textarea,.path-field select{width:100%;font:inherit;color:inherit;background:#131a16;border:1px solid var(--border);border-radius:5px;padding:6px}
.path-field textarea{resize:vertical}
.preferences{max-width:660px}
.preferences h1{margin-top:18px}
.preferences fieldset{min-width:0;margin:0 0 12px;padding:8px 12px;border:1px solid var(--border);border-radius:7px}
.preferences legend{padding:0 4px;font-weight:650}
.preferences-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
#preferences-status{font-size:.85rem;color:var(--muted)}
.measure-line,.measure-point{stroke:var(--blue);stroke-width:1.5;vector-effect:non-scaling-stroke;pointer-events:none}
.measure-point{fill:var(--panel)}
.measuring,.measuring .tool-shape,.measuring .finger{cursor:crosshair}
.measure-target{stroke:var(--blue);stroke-width:3;stroke-opacity:.7;vector-effect:non-scaling-stroke;pointer-events:none}
.measure-result{color:var(--blue);font-weight:650;font-variant-numeric:tabular-nums}
.arc-preview{fill:none;stroke:var(--blue);stroke-width:2;vector-effect:non-scaling-stroke;pointer-events:none}
.invalid-draft{stroke:#ff8f85}
.dialog-actions,.share-log-heading{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:12px}
.share-log-heading{justify-content:space-between;border-top:1px solid var(--border);padding-top:12px}
.share-log-heading h3{margin:0;font-size:.97rem}
.share-url-row{display:flex;gap:8px;margin-top:5px}
.share-events{list-style:none;margin:8px 0 0;padding:0;max-height:200px;overflow:auto}
.share-events li{display:grid;gap:2px;padding:7px 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}
.share-events time{font-size:.78rem;color:var(--muted)}
.danger{color:#ffdfd4;background:#562c25;border-color:#a75645}
.danger:hover{border-color:#e78469}
@media(max-width:640px){.shared-content{grid-template-columns:1fr}.project-bar #share-open{flex:none}}
#save.quiet:disabled{cursor:default}
#last-saved:not([hidden])+#save-progress:not(:empty)::before{content:' · '}
@media(max-width:760px){
  .project-bar{flex-wrap:wrap}
  .project-bar #save-state{display:block;order:1;flex-basis:100%;text-align:right}
}
.home-actions,.bin-header,.bin-preview-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#guest-tools,#library-pages{margin-top:16px}
#library-title{margin-top:14px}
.library-card{display:grid;gap:6px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}
.library-card a{font-weight:650}
.library-card .library-preview{margin-bottom:8px}
.library-preview{display:block;width:100%;aspect-ratio:8/5;object-fit:contain;background:#131b17;border-radius:6px}
.library-media{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px;max-width:820px;margin:0 0 16px}
.library-media figure{margin:0}
.library-media figcaption{margin-top:4px;color:var(--muted)}
#publish-photo-preview{display:block;max-width:180px;max-height:110px;margin-bottom:6px;border-radius:6px;object-fit:contain}
.library-card p,.library-reviews p{margin:0;overflow-wrap:anywhere;white-space:pre-wrap}
#library-description{overflow-wrap:anywhere;white-space:pre-wrap}
#library-review{max-width:540px}
.library-stars{border:0;padding:0;margin:0 0 12px}
.library-stars label{display:inline-flex;align-items:center;gap:2px;color:var(--muted);font-size:1.3rem}
.library-stars label:has(input:checked),.library-stars label:has(~ label input:checked){color:var(--accent)}
.library-reviews{padding:0;list-style:none}
.library-reviews li{display:grid;gap:6px;justify-items:start;padding:10px 0;border-top:1px solid var(--border)}
#bin-cell-grid{max-height:230px;overflow:auto}
#bin-cell-grid table{width:100%;border-collapse:collapse;font-size:.8rem}
#bin-cell-grid th,#bin-cell-grid td{padding:4px;text-align:left}
#bin-cell-grid tr+tr{border-top:1px solid var(--border)}
.bin-header{padding:14px clamp(12px,2vw,28px);border-bottom:1px solid var(--border)}
.bin-header h1{margin:0;font-size:1.15rem}
.bin-header #bin-title{flex:1 1 225px;width:auto;max-width:420px}
.bin-save-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:.8rem}
.bin-save-actions button{flex:none}
.bin-workbench{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:calc(100dvh - 126px)}
.bin-options{border-right:1px solid var(--border)}
.bin-options fieldset{margin:0 0 15px;padding:5px 0 12px;border:0;border-bottom:1px solid var(--border);min-width:0}
.bin-options legend{font-weight:650;font-size:.9rem;padding:0}
.bin-options output{color:var(--muted);font-size:.85rem}
.bin-options>button{width:100%}
.bin-preview-panel{min-width:0;display:flex;flex-direction:column}
.baseplate-preview{min-width:0}
.baseplate-preview .viewport{position:relative;height:clamp(350px,64vh,720px)}
#baseplate-diagram{display:block;width:100%;height:100%;cursor:crosshair}
.baseplate-part{width:min(290px,100%);padding:0 14px}
#baseplate-margin,#baseplate-status{font-size:.85rem;color:var(--muted)}
#baseplate-status{margin:5px 14px 10px}
#baseplate-status:empty{display:none}
.bin-preview-bar{justify-content:space-between;min-height:56px;padding:8px 14px;border-bottom:1px solid var(--border)}
.bin-preview-bar .export-buttons{margin-left:auto;flex-wrap:wrap}
.bin-preview-bar .export-buttons button{flex:none;white-space:nowrap}
#bin-status{color:var(--muted);font-size:.85rem}
@media(max-width:690px){.bin-workbench{grid-template-columns:1fr}.bin-options{border-right:0;border-bottom:1px solid var(--border)}.bin-preview-panel .viewport{min-height:330px}}
