[hidden]{display:none!important}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:var(--font-ui);font-size:var(--fs-md);color:var(--color-text);background:var(--color-bg);line-height:1.4}button,input,select,textarea{font:inherit;color:inherit}.tabular,input,.num{font-variant-numeric:tabular-nums}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{z-index:100;background:var(--color-surface);padding:var(--space-3);position:absolute;top:0;left:-9999px}.skip-link:focus{left:var(--space-3)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}a{color:var(--color-focus)}h2{font-size:var(--fs-lg);margin:0}h3{font-size:var(--fs-md);margin:var(--space-4) 0 var(--space-3);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}h4{font-size:var(--fs-md);margin:var(--space-3) 0 var(--space-2)}p{margin:var(--space-3) 0}.muted{color:var(--color-text-muted)}.small{font-size:var(--fs-sm)}.noscript{padding:2rem}.btn{align-items:center;gap:var(--space-2);min-height:var(--touch);padding:0 var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer;white-space:nowrap;display:inline-flex}.btn:hover{background:var(--color-surface-2);border-color:var(--color-border-strong)}.btn-primary{background:var(--color-action);border-color:var(--color-action);color:var(--color-action-text)}.btn-primary:hover{background:var(--color-action-hover);border-color:var(--color-action-hover)}.btn-danger{color:var(--color-danger);border-color:var(--color-danger)}.btn-quiet{background:0 0;border-color:#0000}.btn-small{min-height:28px;padding:0 var(--space-3);font-size:var(--fs-sm)}.btn[disabled],.icon-btn[disabled]{opacity:.45;cursor:not-allowed}input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}.icon-btn{min-width:var(--touch);min-height:var(--touch);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-lg);background:0 0;border:1px solid #0000;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--color-surface-2);border-color:var(--color-border)}.icon-btn[aria-pressed=true]{background:var(--color-action-soft);border-color:var(--color-action)}input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],input[type=date],input[type=time],select,textarea{min-height:var(--touch);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-canvas);width:100%}input[aria-invalid=true]{border-color:var(--color-danger);background:var(--color-danger-soft)}input[type=checkbox],input[type=radio]{width:18px;height:18px;accent-color:var(--color-action)}input[type=range]{accent-color:var(--color-action);width:100%}textarea{resize:vertical}.field{gap:var(--space-1);margin-bottom:var(--space-3);display:grid}.field>label{font-size:var(--fs-sm);color:var(--color-text-muted)}.field-hint{color:var(--color-text-muted);font-size:var(--fs-xs)}.field-error{color:var(--color-danger);font-size:var(--fs-xs);min-height:0}.field-error:empty{display:none}.field-row{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.field-row-3{gap:var(--space-3);grid-template-columns:1fr 1fr 1fr;display:grid}.check{align-items:center;gap:var(--space-3);min-height:var(--touch);display:flex}.inline-field{align-items:center;gap:var(--space-2);display:inline-flex}.inline-field select{width:auto;min-height:26px;padding:0 var(--space-2)}.badge{font-size:var(--fs-xs);border:1px solid var(--color-border);background:var(--color-surface-2);white-space:nowrap;border-radius:10px;padding:0 6px;display:inline-block}.badge-verified{border-color:var(--color-ok);color:var(--color-ok)}.badge-user{border-color:var(--color-focus);color:var(--color-focus)}.badge-unknown{color:var(--color-text-muted);border-style:dashed}.badge-warn{border-color:var(--color-warn);color:var(--color-warn);background:var(--color-warn-soft)}.badge-danger{border-color:var(--color-danger);color:var(--color-danger);background:var(--color-danger-soft)}.kv{gap:var(--space-2) var(--space-3);grid-template-columns:minmax(90px,40%) 1fr;margin:0;display:grid}.kv dt{color:var(--color-text-muted);font-size:var(--fs-sm)}.kv dd{margin:0}.stack>*+*{margin-top:var(--space-3)}.row{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.spacer{flex:1}table.data{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}table.data th,table.data td{border-bottom:1px solid var(--color-border);padding:var(--space-2) var(--space-3);text-align:left;vertical-align:top}table.data th{color:var(--color-text-muted);font-weight:600}table.data td.num,table.data th.num{text-align:right}.app{height:100vh;grid-template-rows:auto auto 1fr auto;height:100dvh;display:grid}.app>.topbar{grid-row:1}.app>.banner{grid-row:2}.app>.workspace{grid-row:3}.app>.statusbar{grid-row:4}.app>.mobile-nav{grid-row:5}.topbar{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;min-height:46px;display:flex}.brand{align-items:center;gap:var(--space-3);font:inherit;letter-spacing:.02em;color:var(--color-text);padding:var(--space-1);margin:calc(-1 * var(--space-1));border-radius:var(--radius-sm);cursor:pointer;min-height:var(--touch);background:0 0;border:0;font-weight:650;display:flex}.brand:hover{background:var(--color-surface-2)}.logo{color:var(--color-text)}.project-name{max-width:260px;font-weight:600;background:0 0!important;border-color:#0000!important}.project-name:hover,.project-name:focus{border-color:var(--color-border-strong)!important}.menu{gap:var(--space-1);flex-wrap:wrap;display:flex}.history-btns{gap:var(--space-1);display:flex}.theme-select{width:auto!important}.save-status{align-items:center;gap:var(--space-2);font-size:var(--fs-sm);padding:2px var(--space-3);border:1px solid var(--color-border);border-radius:12px;margin-left:auto;display:inline-flex}.save-dot{background:var(--color-ok);border-radius:50%;width:9px;height:9px}.save-status[data-state=unsaved] .save-dot,.save-status[data-state=saving] .save-dot{background:var(--color-warn)}.save-status[data-state=failed],.save-status[data-state=unavailable],.save-status[data-state=conflict]{border-color:var(--color-danger);color:var(--color-danger);background:var(--color-danger-soft);font-weight:600}.save-status[data-state=failed] .save-dot,.save-status[data-state=unavailable] .save-dot,.save-status[data-state=conflict] .save-dot{background:var(--color-danger);border-radius:0;transform:rotate(45deg)}.banner{gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-danger-soft);color:var(--color-text);border-bottom:2px solid var(--color-danger);flex-wrap:wrap;align-items:center;display:flex}.banner[data-kind=warn]{background:var(--color-warn-soft);border-color:var(--color-warn)}.banner strong{color:var(--color-danger)}.account-btn{max-width:16em}.account-btn .icon{flex:none}.account-label{text-overflow:ellipsis;overflow:hidden}.account-btn[data-state=signed-in]{border-color:var(--color-border)}.form-error{font-size:var(--fs-sm);margin:0}.server-status{align-items:center;gap:var(--space-2);font-size:var(--fs-sm);padding:2px 2px 2px var(--space-3);border:1px dashed var(--color-border);border-radius:12px;min-height:28px;display:inline-flex}.server-status[hidden]{display:none}.server-status .icon{color:var(--color-text-muted);flex:none}.server-status[data-state=synced]{padding-right:var(--space-3);border-style:solid}.server-status[data-state=synced] .icon{color:var(--color-ok)}.server-status[data-state=unsynced] .icon,.server-status[data-state=saving] .icon{color:var(--color-warn)}.server-status[data-state=failed],.server-status[data-state=conflict]{border-style:solid;border-color:var(--color-danger);color:var(--color-danger);background:var(--color-danger-soft);font-weight:600}.server-status[data-state=failed] .icon,.server-status[data-state=conflict] .icon{color:var(--color-danger)}.server-status .btn-small{min-height:24px}.server-status[data-state=readonly]{padding-right:var(--space-3);border-style:solid}.server-status[data-state=none] .server-text{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.server-status[data-state=none]{padding-left:var(--space-2)}@media (min-width:768px) and (max-width:1500px){html[data-server]:not([data-server=off]) .brand-name{display:none}html[data-server]:not([data-server=off]) .topbar{gap:var(--space-2)}}.workspace{grid-template-columns:var(--panel-w) 1fr var(--panel-w-right);min-height:0;display:grid}.panel{background:var(--color-surface);flex-direction:column;min-height:0;display:flex;overflow:hidden}.panel-left{border-right:1px solid var(--color-border)}.panel-right{border-left:1px solid var(--color-border)}.tabs{border-bottom:1px solid var(--color-border);flex-shrink:0;display:flex;overflow-x:auto}.tabs [role=tab]{min-height:36px;padding:0 var(--space-3);cursor:pointer;font-size:var(--fs-sm);white-space:nowrap;color:var(--color-text-muted);background:0 0;border:0;border-bottom:2px solid #0000;flex:1}.tabs [role=tab][aria-selected=true]{border-bottom-color:var(--color-action);color:var(--color-text);font-weight:600}.pane{padding:var(--space-4);flex:1;min-height:0;overflow:auto}.canvas-wrap{background:var(--color-canvas);grid-template-rows:auto 1fr;min-width:0;min-height:0;display:grid;position:relative}.hintbar{gap:var(--space-3);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface-2);min-height:38px;font-size:var(--fs-sm);align-items:center;display:flex}.tool-hint{flex:1}.hint-actions{gap:var(--space-2);display:flex}.plan{touch-action:none;-webkit-user-select:none;user-select:none;background:var(--color-canvas);outline-offset:-3px;width:100%;height:100%;display:block}.canvas-controls{right:var(--space-4);bottom:var(--space-4);gap:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2);box-shadow:var(--elev-1);display:flex;position:absolute}.shadow-note{left:28px;bottom:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);max-width:60%;padding:var(--space-3);font-size:var(--fs-sm);box-shadow:var(--elev-1);position:absolute}.statusbar{align-items:center;gap:var(--space-5);padding:var(--space-2) var(--space-4);border-top:1px solid var(--color-border);background:var(--color-surface);font-size:var(--fs-sm);flex-wrap:wrap;display:flex}#cursor-pos{white-space:nowrap;min-width:28ch;display:inline-block}.mobile-nav{display:none}.tool-grid{gap:var(--space-2);grid-template-columns:repeat(2,1fr);display:grid}.tool-btn{align-items:center;gap:var(--space-3);min-height:36px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer;text-align:left;font-size:var(--fs-sm);display:flex}.tool-btn kbd{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--color-text-muted);margin-left:auto}.tool-btn[aria-pressed=true]{background:var(--color-action);color:var(--color-action-text);border-color:var(--color-action);font-weight:600}.tool-btn[aria-pressed=true] kbd{color:inherit}.obj-list{margin:0;padding:0;list-style:none}.obj-list li{align-items:center;gap:var(--space-2);border-bottom:1px solid var(--color-border);display:flex}.obj-item{gap:var(--space-2);min-height:var(--touch);padding:0 var(--space-2);text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;min-width:0;display:flex}.obj-item .obj-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.obj-item[aria-selected=true]{background:var(--color-action-soft);font-weight:600}.obj-item.is-hidden .obj-name{color:var(--color-text-muted);text-decoration:line-through}.obj-code{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--color-text-muted);min-width:3.2em}.obj-group-title{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);padding:var(--space-3) 0 var(--space-1)}.plant-card{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-3);margin-bottom:var(--space-2);background:var(--color-surface)}.plant-card[aria-current=true]{border-color:var(--color-action);box-shadow:inset 3px 0 0 var(--color-action)}.plant-card .bot{font-style:italic;font-weight:600}.plant-card .cultivar{font-style:normal}.advisory{border:1px solid var(--color-border);border-left:4px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:var(--space-3);margin-bottom:var(--space-3);background:var(--color-surface)}.advisory[data-severity=warning]{border-left-color:var(--color-warn)}.advisory[data-severity=info]{border-left-color:var(--color-focus)}.advisory[data-severity=caution]{border-left-color:var(--color-danger)}.advisory h4{margin:0 0 var(--space-2)}.season-grid{border-collapse:collapse;font-size:var(--fs-xs)}.season-grid th,.season-grid td{border:1px solid var(--color-border);text-align:center;padding:2px 3px}.season-grid tr{--interest:var(--color-interest-other)}.season-grid tr[data-interest=flower]{--interest:var(--color-bloom)}.season-grid tr[data-interest=foliage]{--interest:var(--color-foliage)}.season-grid tr[data-interest=evergreen]{--interest:var(--color-evergreen)}.season-grid td.s-observed{background:var(--interest);color:var(--color-surface);font-weight:700}.season-grid td.s-source-months{background:color-mix(in srgb, var(--interest) 45%, transparent)}.season-grid td.s-season-only{background:repeating-linear-gradient(45deg, transparent 0 3px, var(--color-surface-3) 3px 6px)}.season-grid td.s-unknown{color:var(--color-text-muted)}.season-grid td.current{outline:2px solid var(--color-focus);outline-offset:-2px}.dialog{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);width:min(520px,100vw - 24px);max-height:calc(100dvh - 24px);box-shadow:var(--elev-2);padding:0}.dialog-wide{width:min(900px,100vw - 24px)}.dialog::backdrop{background:#14120c73}.dialog-form{flex-direction:column;max-height:calc(100dvh - 26px);display:flex}.dialog-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.dialog-body{padding:var(--space-5);overflow:auto}.dialog-actions{justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);flex-wrap:wrap;display:flex}.toasts{right:var(--space-4);gap:var(--space-3);z-index:50;max-width:min(440px,100vw - 24px);display:grid;position:fixed;bottom:56px}.toast{gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-strong);border-left:4px solid var(--color-focus);border-radius:var(--radius-sm);box-shadow:var(--elev-2);align-items:center;display:flex}.toast span{flex:1}.toast-warn{border-left-color:var(--color-warn)}.toast-error{border-left-color:var(--color-danger)}.toast-ok{border-left-color:var(--color-ok)}kbd{font-family:var(--font-mono);font-size:var(--fs-xs);border:1px solid var(--color-border-strong);background:var(--color-surface-2);border-bottom-width:2px;border-radius:3px;padding:0 4px}.grid-minor{stroke:var(--color-grid-minor);stroke-width:1px;fill:none}.grid-major{stroke:var(--color-grid-major);stroke-width:1px;fill:none}.origin-mark{stroke:var(--color-text-muted);stroke-width:1px}.ruler-bg{fill:var(--color-surface-2);opacity:.92}.ruler-tick{stroke:var(--color-text-muted);stroke-width:1px}.ruler-text{fill:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:9px}.ent .shape{fill:var(--fill-bed);stroke:var(--stroke-ent);stroke-width:1.25px}.ent{cursor:pointer}.kind-site-boundary .shape{fill:none;stroke:var(--color-text);stroke-width:1.5px;stroke-dasharray:10 4 2 4;pointer-events:stroke}.kind-raised-bed .shape,.kind-container .shape{fill:var(--fill-raised);stroke-width:2px}.kind-planting-area .shape{stroke-dasharray:6 3}.kind-building .shape,.kind-greenhouse .shape,.kind-obstacle .shape{fill:var(--fill-building);stroke:var(--color-text);stroke-width:1.5px}.kind-greenhouse .shape{fill:var(--fill-water)}.kind-patio .shape,.kind-path .shape,.kind-seating .shape,.kind-compost-area .shape{fill:var(--fill-hardscape)}.kind-fence .shape,.kind-trellis .shape{fill:var(--stroke-ent)}.kind-lawn .shape{fill:var(--fill-lawn);stroke-width:.8px}.kind-pond .shape{fill:var(--fill-water)}.kind-utility .shape{fill:var(--color-danger-soft);stroke:var(--color-danger);stroke-dasharray:8 4}.kind-conditions-region .shape{fill:#c8aa3c14;stroke:var(--color-warn);stroke-dasharray:3 3}.kind-tree-canopy .shape{fill:#50783c1f;stroke:var(--color-evergreen);stroke-dasharray:5 3}.centerline{fill:none;stroke:var(--color-text-muted);stroke-width:1px;stroke-dasharray:4 3}.status-remove .shape,.status-remove .plant-footprint{stroke-dasharray:3 3;stroke:var(--color-danger)!important}.status-relocate .shape,.status-relocate .plant-footprint{stroke-dasharray:8 3}.status-existing .plant-footprint{fill-opacity:.6}.plant-footprint{fill:var(--fill-plant);stroke:var(--stroke-plant);stroke-width:1.2px}.plant-center{fill:var(--stroke-plant)}.size-unknown .plant-footprint{fill:url(#hatch-unknown);stroke-dasharray:2 2;stroke:var(--color-unknown)}.hatch-line{stroke:var(--color-unknown);stroke-width:1px}.season-flower .plant-footprint{fill:color-mix(in srgb, var(--color-bloom) 55%, transparent);stroke:var(--color-bloom)}.season-foliage .plant-footprint{fill:color-mix(in srgb, var(--color-foliage) 40%, transparent)}.season-evergreen .plant-footprint{fill:color-mix(in srgb, var(--color-evergreen) 55%, transparent)}.season-unknown .plant-footprint{fill:url(#hatch-unknown)}.locked .shape{stroke-dasharray:1 3}.ref-frame{fill:none;stroke:var(--color-focus);stroke-width:1px;stroke-dasharray:4 4}.kind-reference-image{pointer-events:visiblePainted}.note-dot{fill:var(--color-text)}.dim-line{stroke:var(--color-text);stroke-width:1px}.hit-line{stroke:#0000;stroke-width:10px}.dim-text,.note-text,.ent-label,.plant-label{fill:var(--color-text);paint-order:stroke;stroke:var(--color-canvas);stroke-width:3px;stroke-linejoin:round;font-variant-numeric:tabular-nums;font-size:11px}.plant-label{font-size:10px;font-weight:600}.ent-label{fill:var(--color-text-muted);font-size:11px}.sel-outline{fill:none;stroke:var(--color-select);stroke-width:2px}.handle{fill:var(--color-canvas);stroke:var(--color-select);stroke-width:1.5px;cursor:grab}.handle-mid{opacity:.6}.handle-ctrl{fill:var(--color-select)}.handle-hole-center{fill:var(--color-select);cursor:move}.handle-rotate{fill:var(--color-action);stroke:var(--color-canvas);cursor:crosshair}.handle-stem{stroke:var(--color-select);stroke-width:1px}.group-box{fill:none;stroke:var(--color-select);stroke-width:1px;stroke-dasharray:4 3;pointer-events:none}.draft{fill:#c0661b14;stroke:var(--color-draft);stroke-width:1.5px;stroke-dasharray:6 3}.draft-unknown{stroke-dasharray:2 2}.draft-wide{fill:none;stroke:#c0661b40}.draft-pt{fill:var(--color-draft)}.draft-stem{stroke:var(--color-draft);stroke-width:1px}.snap-mark{fill:none;stroke:var(--color-focus);stroke-width:1.5px}.marquee{fill:#1d5fa814;stroke:var(--color-select);stroke-dasharray:4 3}.shadow{fill:var(--shadow-fill)}.three-host{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-canvas);width:100%;height:320px;position:relative}.three-host canvas{width:100%;height:100%;display:block}@media (max-width:1199px){.workspace{grid-template-columns:1fr;position:relative}.panel{z-index:20;width:min(360px,92vw);box-shadow:var(--elev-2);position:absolute;top:0;bottom:0}.panel-left{left:0}.panel-right{right:0}.app[data-panel=plan] .panel,.app[data-panel=left] .panel-right,.app[data-panel=right] .panel-left{display:none}.mobile-nav{gap:var(--space-2);padding:var(--space-2);background:var(--color-surface);border-top:1px solid var(--color-border);display:flex}.mobile-nav button{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);flex:1;min-height:40px}.mobile-nav button[aria-pressed=true]{background:var(--color-action);color:var(--color-action-text);border-color:var(--color-action)}.app{grid-template-rows:auto auto 1fr auto auto}:root{--touch:40px}.handle{stroke-width:2px}}@media (max-width:767px){.topbar{gap:var(--space-2);padding:var(--space-2)}.brand-name{display:none}.project-name{max-width:50vw}.menu{flex-wrap:nowrap;order:10;width:100%;overflow-x:auto}.save-status{margin-left:0}.server-status .server-text{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.server-status{padding-left:var(--space-2)}.account-btn{padding:0 var(--space-2)}.account-label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.panel{width:100vw}.statusbar{gap:var(--space-3);font-size:var(--fs-xs);flex-wrap:nowrap;overflow-x:auto}.statusbar>*{flex:none}.canvas-controls{right:var(--space-2);bottom:var(--space-2);flex-wrap:wrap}.hintbar{flex-wrap:wrap}.field-row,.field-row-3{grid-template-columns:1fr}#server-versions .col-wide{display:none}#server-versions .row{gap:var(--space-2)}#server-projects .col-wide{display:none}#server-projects .row{gap:var(--space-2)}.server-status[data-state=readonly] .server-text{clip:auto;width:auto;height:auto;margin:0;position:static;overflow:visible}#server-share .share-form{grid-template-columns:1fr}#admin-users .col-wide{display:none}#admin-users .share-form{grid-template-columns:1fr}}@media print{.app{display:none}}.obj-static{cursor:default}.scroll-x{overflow-x:auto}.share-form{gap:var(--space-3);grid-template-columns:minmax(0,1fr) auto auto;align-items:end;display:grid}.share-form .field{margin-bottom:0}.share-email{overflow-wrap:anywhere}#share-list select{width:auto;min-width:6.5rem}.account-tools{gap:var(--space-2);flex-wrap:wrap;display:flex}.btn-link{font:inherit;color:var(--color-focus);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.link-box{border:1px solid var(--color-border);padding:var(--space-3);background:var(--color-surface-2);border-radius:6px}.link-box h3{margin-top:0}.link-row{gap:var(--space-2);align-items:center;display:flex}.link-field{min-width:0;font-family:var(--font-mono);font-size:var(--fs-sm);flex:1}#user-list .row{gap:var(--space-2)}.calib-svg{border:1px solid var(--color-border);cursor:crosshair;touch-action:none;width:100%;max-height:55vh}.three-host-large{height:min(60vh,560px)}.welcome-lead{font-size:var(--fs-lg)}.welcome-list{gap:var(--space-2);margin:0;padding-left:1.25em;display:grid}.welcome h3{margin-bottom:0}.signup-about{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3)}.signup-about summary{cursor:pointer;font-weight:600}.signup-about[open] summary{margin-bottom:var(--space-2)}.ctx-layer{z-index:60;pointer-events:none;position:fixed;inset:0}.ctx-menu{pointer-events:auto;min-width:220px;max-width:min(340px,100vw - 8px);max-height:calc(100vh - 8px);padding:var(--space-1);background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);box-shadow:var(--elev-2);font-size:var(--fs-sm);position:fixed;overflow-y:auto}.ctx-item{align-items:center;gap:var(--space-2);width:100%;min-height:var(--touch);padding:0 var(--space-3) 0 var(--space-2);border-radius:var(--radius-sm);color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:1.1em 1fr auto auto;display:grid}.ctx-item:hover,.ctx-item:focus{background:var(--color-action-soft);outline:none}.ctx-item:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.ctx-item[aria-disabled=true]{color:var(--color-text-muted);cursor:default}.ctx-item[aria-disabled=true]:hover{background:0 0}.ctx-item[aria-expanded=true]{background:var(--color-surface-2)}.ctx-check{color:var(--color-action);font-weight:700}.ctx-shortcut{color:var(--color-text-muted);font-size:var(--fs-xs);padding-left:var(--space-4)}.ctx-arrow{color:var(--color-text-muted)}.ctx-back{border-bottom:1px solid var(--color-border);margin-bottom:var(--space-1);border-radius:0;font-weight:600}.ctx-sep{height:1px;margin:var(--space-1) var(--space-2);background:var(--color-border)}@media (max-width:767px){.ctx-item{min-height:40px}.ctx-shortcut{display:none}}@media print{.ctx-layer{display:none}}
