:root{--page:#FCFCF4;--card:#F4F2E8;--card2:#ECE9DC;--ink:#191918;--muted:#5E5D57;--faint:#9A988E;--line:#DEDACB;--wood:#4A2E20;--brass:#A9803F;--ok:#2F7D6D;--part:#C08A2A;--bad:#B4533C;--sea:#3E6E80;--glass:#BFDCE8;--serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;--sans:-apple-system,BlinkMacSystemFont,"Inter","Segoe UI",Helvetica,Arial,sans-serif;--mono:"SF Mono",Menlo,Consolas,monospace;--side:264px;--panel:328px;--top: calc(44px + env(safe-area-inset-top)) ;--r:3px;--rad:4px;--tint:color-mix(in srgb,var(--ink) 6%,transparent);--tint2:color-mix(in srgb,var(--ink) 10%,transparent);--shadow:0 0 0 1px var(--line),0 10px 28px -16px rgba(40,30,10,.32);color-scheme:light}:root[data-theme=dark]{--page:#141413;--card:#1D1C1A;--card2:#262421;--ink:#ECEAE2;--muted:#ABA89D;--faint:#77746B;--line:#33312C;--wood:#C79A76;--brass:#D2A862;--ok:#5DB3A0;--part:#E0AE4E;--bad:#E07B62;--sea:#7FB0C2;color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--page:#141413;--card:#1D1C1A;--card2:#262421;--ink:#ECEAE2;--muted:#ABA89D;--faint:#77746B;--line:#33312C;--wood:#C79A76;--brass:#D2A862;--ok:#5DB3A0;--part:#E0AE4E;--bad:#E07B62;--sea:#7FB0C2;color-scheme:dark}}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--page);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow:hidden;overscroll-behavior:none}h1,h2,h3,.serif{font-family:var(--serif);font-weight:400;letter-spacing:-.01em}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.faint{color:var(--faint)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.app{position:fixed;inset:0;--L:0px;--R:0px;--chatw:340px}.app.lib-on{--L:var(--side)}.app.panel-on{--R:var(--panel)}.app.chat-on{--R:var(--chatw)}.top{position:fixed;top:0;left:0;right:0;height:var(--top);display:flex;align-items:center;gap:4px;padding:env(safe-area-inset-top) max(8px,env(safe-area-inset-right)) 0 max(8px,env(safe-area-inset-left));z-index:30;background:color-mix(in srgb,var(--page) 94%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);min-width:0}.brand{display:flex;align-items:baseline;gap:8px;min-width:0;margin:0 4px}.brand b{font-family:var(--serif);font-weight:400;font-size:21px;letter-spacing:-.02em;cursor:pointer}.brand b i{font-style:normal;color:var(--brass)}.brand input{background:transparent;border:0;outline:none;font-family:var(--serif);font-size:15px;color:var(--muted);min-width:60px;width:min(22vw,240px);text-overflow:ellipsis;padding:2px 0}.brand input:hover{color:var(--ink)}.brand input:focus{color:var(--ink);box-shadow:0 1px 0 var(--line)}.modes{display:flex;gap:0;position:absolute;left:50%;transform:translate(-50%)}.mode{border:0;background:transparent;border-radius:var(--r);padding:6px 11px;font-size:13px;color:var(--muted);cursor:pointer;white-space:nowrap;transition:color .15s,background .15s}.mode:hover{color:var(--ink)}.mode.on{color:var(--ink);background:var(--tint)}.mode .k{display:none}.spacer{flex:1}.tools{display:flex;gap:0;align-items:center}.sep{width:1px;height:18px;background:var(--line);margin:0 6px}.tb{width:32px;height:32px;border:0;border-radius:var(--r);background:transparent;cursor:pointer;display:grid;place-items:center;color:var(--muted);transition:background .15s,color .15s;position:relative;flex-shrink:0}.tb:hover{background:var(--tint);color:var(--ink)}.tb[disabled]{opacity:.28;pointer-events:none}.tb svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.tb.bad:hover{color:var(--bad)}.tb.on,.tb.on2{color:var(--ink)}.tb.on:after,.tb.on2:after{content:"";position:absolute;left:9px;right:9px;bottom:3px;height:2px;border-radius:1px;background:var(--brass)}.tb.agent{color:var(--brass)}.tb.agent.on:after{background:var(--brass)}@media(hover:hover){.tb[data-tip]:hover:before{content:attr(data-tip);position:absolute;top:calc(100% + 6px);right:0;background:var(--ink);color:var(--page);font-size:11.5px;padding:4px 7px;border-radius:var(--r);white-space:nowrap;z-index:50;pointer-events:none}}.seg{display:inline-flex;gap:0;border-radius:var(--r);background:var(--tint);padding:2px}.seg button{border:0;background:transparent;border-radius:2px;padding:4px 9px;font-size:12px;color:var(--muted);cursor:pointer;white-space:nowrap}.seg button:hover{color:var(--ink)}.seg button.on{background:var(--ink);color:var(--page)}.seg.sm button{padding:2px 7px;font-size:11.5px}.chips{display:flex;flex-wrap:wrap;gap:2px}.chip{background:transparent;border:0;border-radius:var(--r);padding:4px 8px;font-size:12px;color:var(--muted);cursor:pointer;transition:background .15s,color .15s;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.chip:hover{background:var(--tint);color:var(--ink)}.chip.on{background:var(--ink);color:var(--page)}.chip .c{font-family:var(--mono);font-size:10px;opacity:.6}.chip[disabled]{opacity:.35;pointer-events:none}.btn{background:transparent;border:0;border-radius:var(--r);padding:6px 10px;font-size:12.5px;cursor:pointer;color:var(--ink);transition:background .15s;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.btn:hover{background:var(--tint)}.btn.pri{background:var(--ink);color:var(--page)}.btn.pri:hover{opacity:.88}.btn.bad{color:var(--muted)}.btn.bad:hover{color:var(--bad)}.btn.sm{padding:4px 8px;font-size:12px}.btn.ghost{justify-content:flex-start;width:100%}.btn.ghost.on{background:var(--tint)}.btn[disabled]{opacity:.4;pointer-events:none}.pop{position:absolute;z-index:60;background:var(--page);box-shadow:var(--shadow);border-radius:var(--rad);padding:4px;display:flex;flex-direction:column;gap:0}.pop.menu{right:0;top:38px;min-width:230px}.pop .grp-h{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);padding:8px 10px 3px}.pop hr{border:0;border-top:1px solid var(--line);margin:4px 6px}.side{position:fixed;left:0;top:var(--top);bottom:0;width:var(--side);overflow-y:auto;padding:10px 10px 40px;z-index:20;background:var(--page);border-right:1px solid var(--line);transition:transform .25s cubic-bezier(.2,.8,.2,1)}.app:not(.is-phone):not(.lib-on) .side{transform:translate(-101%)}.search{width:100%;background:var(--tint);border:0;border-radius:var(--r);padding:7px 10px;font-size:13px;outline:none}.search::placeholder{color:var(--faint)}.sh{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin:18px 4px 6px;display:flex;justify-content:space-between;align-items:baseline}.sh i{font-style:normal;letter-spacing:0;text-transform:none;font-size:11px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:2px}.card{background:transparent;border:0;border-radius:var(--r);padding:8px 6px;cursor:pointer;text-align:left;transition:background .15s;display:flex;flex-direction:column;gap:2px;min-width:0;color:var(--ink);position:relative}.card:hover,.card.on{background:var(--tint)}.card.on:after{content:"";position:absolute;left:8px;right:8px;bottom:2px;height:2px;background:var(--brass);border-radius:1px}.card .ic{height:64px;display:grid;place-items:center;color:var(--muted)}.card .ic svg{height:60px;width:auto;max-width:100%}.card .t{font-size:12.5px;line-height:1.25;letter-spacing:-.005em}.card .m{font-size:11px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card.new .ic.plus{font-family:var(--serif);font-size:28px;color:var(--faint)}.row1{display:grid;grid-template-columns:46px 1fr;gap:9px;align-items:center}.swatches{display:flex;flex-wrap:wrap;gap:6px;padding:0 4px}.sw{width:22px;height:22px;border-radius:var(--r);border:0;cursor:pointer;box-shadow:inset 0 0 0 1px #00000024;flex-shrink:0;position:relative}.sw.on{box-shadow:inset 0 0 0 1px #00000024,0 0 0 2px var(--page),0 0 0 3px var(--ink)}.sw.sq{border-radius:var(--r);width:30px;height:22px}.note{font-size:11.5px;color:var(--faint);line-height:1.5;margin:14px 4px 0}.note b{color:var(--muted);font-weight:500}.stage{position:fixed;inset:0;overflow:hidden}.stage .vp{position:absolute;inset:0}.stage canvas{display:block;width:100%;height:100%;touch-action:none;outline:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.hud{position:absolute;pointer-events:none;z-index:5}.hud>*{pointer-events:auto}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}.foot{z-index:16;left:var(--L);right:var(--R);bottom:0;height:36px;display:flex;align-items:center;gap:6px;padding:0 8px 0 14px;background:color-mix(in srgb,var(--page) 90%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);transition:left .25s,right .25s}.sumline{display:flex;align-items:baseline;gap:0;font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;min-width:0}.sumline b{font-family:var(--serif);font-weight:400;font-size:15px;color:var(--ink)}.sumline .s:last-child{overflow:hidden;text-overflow:ellipsis}.sumline .s{padding:0 9px;border-left:1px solid var(--line);cursor:default}.sumline .s:first-child{border-left:0;padding-left:0}.sumline .s.click{cursor:pointer}.sumline .s.click:hover{color:var(--ink)}.sumline .st{display:inline-flex;align-items:center;gap:6px}.cam{display:flex;align-items:center;gap:2px;flex-shrink:0}.cam .tb{width:30px;height:30px}.cam .tb svg{width:18px;height:18px}.cam .cnt{position:absolute;top:3px;right:3px;min-width:13px;height:13px;border-radius:3px;background:var(--brass);color:#fff;font-size:9px;display:grid;place-items:center;padding:0 3px;font-family:var(--mono)}.showpop{right:0;bottom:40px;min-width:230px}.tg{display:grid;grid-template-columns:20px 1fr 26px;align-items:center;gap:10px;border:0;background:transparent;padding:7px 8px;border-radius:var(--r);cursor:pointer;color:var(--muted);font-size:12.5px;text-align:left}.tg:hover{background:var(--tint);color:var(--ink)}.tg svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.tg i{width:26px;height:14px;border-radius:3px;background:var(--line);position:relative;transition:background .15s}.tg i:after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:2px;background:var(--page);transition:left .15s}.tg.on{color:var(--ink)}.tg.on i{background:var(--brass)}.tg.on i:after{left:14px}.sunrow{display:grid;grid-template-columns:44px 1fr;align-items:center;gap:8px;padding:4px 8px;font-family:var(--mono);font-size:11.5px;color:var(--muted)}.compass{width:30px;height:30px;display:grid;place-items:center;cursor:pointer;border-radius:var(--r)}.compass:hover{background:var(--tint)}.compass svg{width:24px;height:24px}.tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--page);font-size:11.5px;padding:4px 7px;border-radius:var(--r);white-space:nowrap;opacity:0;transition:opacity .12s;z-index:30}.tip .mono{opacity:.7;margin-right:5px}.lbls{position:absolute;inset:0;pointer-events:none;overflow:hidden}.lbl{position:absolute;pointer-events:none;transform:translate(-50%,-50%);font-size:11px;white-space:nowrap;z-index:4;text-align:center;line-height:1.2}.lbl.dim{font-family:var(--mono);font-size:10.5px;background:var(--page);color:var(--ink);border-radius:2px;padding:1px 5px;box-shadow:0 0 0 1px var(--line)}.lbl.edit{pointer-events:auto;cursor:text;box-shadow:0 0 0 1px var(--brass)}.lbl.edit:hover{background:var(--brass);color:#fff}.lbl.draw{background:var(--brass);color:#fff;box-shadow:none}.lbl.meas{background:var(--page);color:var(--brass);box-shadow:0 0 0 1px var(--brass);font-size:10px}@media(pointer:coarse){.lbl.edit{padding:4px 8px;font-size:12px}}.lbl.room{color:var(--ink);text-shadow:0 0 3px var(--page),0 0 3px var(--page),0 0 6px var(--page)}.lbl.room b{font-family:var(--serif);font-weight:400;font-size:13px;display:block}.lbl.room span{font-family:var(--mono);font-size:10px;color:var(--muted)}.hint{left:calc(var(--L) + 12px);top:calc(var(--top) + 10px);font-size:12.5px;color:var(--ink);background:var(--page);border-radius:var(--rad);padding:6px 6px 6px 12px;white-space:nowrap;box-shadow:var(--shadow);display:flex;gap:10px;align-items:center}.hint button{background:transparent;border:0;color:var(--brass);cursor:pointer;font-size:12px;padding:3px 6px;border-radius:var(--r)}.hint button:hover{background:var(--tint)}.toast{left:calc(var(--L) + (100% - var(--L) - var(--R)) / 2);bottom:50px;transform:translate(-50%);background:var(--ink);color:var(--page);font-size:12.5px;padding:7px 12px;border-radius:var(--rad);white-space:nowrap;animation:fadeup .25s ease;z-index:40}@keyframes fadeup{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.walkpad{left:50%;bottom:52px;transform:translate(-50%);display:flex;gap:4px}.walkpad .btn{background:var(--page);box-shadow:var(--shadow)}.planview{position:absolute;left:var(--L);right:var(--R);top:var(--top);bottom:0;background:var(--page);overflow:auto;z-index:25;display:flex;flex-direction:column;transition:left .25s,right .25s}.planview .pbar{flex-shrink:0;display:flex;gap:2px;padding:10px 14px;align-items:center;flex-wrap:wrap;position:sticky;top:0;background:var(--page);z-index:2;border-bottom:1px solid var(--line)}.planview .svgwrap{flex:1;display:grid;place-items:center;padding:8px 16px 90px}.planview svg{max-width:100%;height:auto}.planview [data-id]{cursor:pointer}.marquee{position:absolute;display:none;border:1px dashed var(--brass);background:color-mix(in srgb,var(--brass) 8%,transparent);pointer-events:none;z-index:6}.panel,.chat{position:fixed;right:0;top:var(--top);bottom:0;width:var(--panel);display:flex;flex-direction:column;min-height:0;z-index:20;background:var(--page);border-left:1px solid var(--line);transition:transform .25s cubic-bezier(.2,.8,.2,1)}.chat{width:var(--chatw);z-index:21}.app:not(.is-phone):not(.panel-on) .panel,.app:not(.is-phone).chat-on .panel{transform:translate(101%)}.app:not(.is-phone):not(.chat-on) .chat{transform:translate(101%)}@media(min-width:1500px){.app.is-desk.chat-on.panel-on{--R:calc(var(--chatw) + var(--panel))}.app.is-desk.chat-on.panel-on .panel{transform:none}.app.is-desk.chat-on.panel-on .chat{right:var(--panel)}}.tabs{display:flex;gap:0;justify-content:space-between;padding:0 6px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none;flex-shrink:0;height:40px;align-items:stretch}.tab{background:transparent;border:0;padding:0 7px;font-size:12.5px;color:var(--muted);cursor:pointer;position:relative;white-space:nowrap;flex-shrink:0}.tab:hover,.tab.on{color:var(--ink)}.tab.on:after{content:"";position:absolute;left:7px;right:7px;bottom:-1px;height:2px;background:var(--ink)}.tab .n{font-family:var(--mono);font-size:10px;color:var(--faint);margin-left:4px}.tab .n.bad{color:var(--bad)}.pane{flex:1;overflow-y:auto;padding:14px 14px 60px}.empty{color:var(--faint);font-size:13px;line-height:1.55;padding:4px 2px}.empty b{color:var(--muted);font-weight:500}.ihead{display:flex;gap:10px;align-items:baseline;justify-content:space-between}.ihead h2{font-size:21px;line-height:1.15}.ihead .mono{font-size:11px}.code{font-family:var(--mono);font-size:10.5px;color:var(--muted);text-decoration:none;white-space:nowrap;border-bottom:1px dotted var(--line)}a.code:hover{color:var(--ink)}.stage-tag{font-size:10.5px;color:var(--faint);margin-left:2px}.spec{font-size:12.5px;color:var(--muted);line-height:1.5;margin-top:6px}.grp{margin-top:18px}.grp>.l{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-bottom:6px;display:flex;justify-content:space-between;gap:8px}.grp>.l span:last-child:not(:first-child){letter-spacing:0;text-transform:none;font-size:11px}.fld{display:grid;grid-template-columns:86px 1fr;gap:8px;align-items:start;padding:6px 0}.fld .k{padding-top:4px}.fld:first-of-type{border-top:0}.fld .k{font-size:12px;color:var(--muted);line-height:1.25}.fld .k small{display:block;color:var(--faint);font-size:10.5px;margin-top:1px}.fld.hl .k{color:var(--brass)}.rng{display:grid;grid-template-columns:1fr 62px;gap:10px;align-items:center}input[type=range]{width:100%;accent-color:var(--ink);height:18px}.num{width:62px;background:transparent;border:0;box-shadow:0 1px 0 var(--line);border-radius:0;padding:3px 2px;font-family:var(--mono);font-size:12px;text-align:right;outline:none}.num:focus{box-shadow:0 1.5px 0 var(--ink)}.slots{display:grid;grid-template-columns:1fr 1fr;gap:2px 10px}.slot{display:grid;grid-template-columns:18px 1fr;align-items:center;gap:6px;font-size:12px;color:var(--faint);font-family:var(--mono)}.sel{border:0;background:transparent;box-shadow:0 1px 0 var(--line);border-radius:0;padding:5px 2px;font-size:12.5px;color:var(--ink);font-family:var(--sans);outline:none;cursor:pointer;-webkit-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--faint) 50%),linear-gradient(135deg,var(--faint) 50%,transparent 50%);background-position:calc(100% - 9px) 52%,calc(100% - 5px) 52%;background-size:4px 4px;background-repeat:no-repeat}.sel:focus{box-shadow:0 1.5px 0 var(--ink)}.step{display:inline-flex;align-items:center;gap:4px}.step button{width:26px;height:26px;border-radius:var(--r);border:0;background:transparent;cursor:pointer;font-size:15px}.step button:hover{background:var(--tint)}.acts{display:flex;gap:2px;flex-wrap:wrap;margin-top:18px;padding-top:10px;border-top:1px solid var(--line)}.acts.icons{gap:0;align-items:center}.grp .acts{border-top:0;padding-top:0;margin-top:6px}.ck{display:grid;grid-template-columns:14px 1fr;gap:8px;padding:9px 0;border-top:1px solid var(--line);font-size:12.5px;line-height:1.45;cursor:pointer}.ck:first-child{border-top:0}.ck .i{font-size:12px;line-height:1.45;font-weight:600}.ck .code{font-size:10px;margin-right:4px}.ck .fix{margin-top:4px}.ck.err .i{color:var(--bad)}.ck.warn .i{color:var(--part)}.ck.info .i{color:var(--faint)}.ck.ok .i{color:var(--ok)}.tbl{width:100%;border-collapse:collapse;font-size:12.5px}.tbl td{padding:6px 4px;border-top:1px solid var(--line);vertical-align:top;line-height:1.35}.tbl tr:first-child td{border-top:0}.tbl td.q{text-align:right;font-family:var(--mono);white-space:nowrap;font-size:11.5px}.tbl td.n small{display:block;color:var(--faint);font-size:11px}.tbl .g td{padding-top:14px;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);border-top:0}.src{font-family:var(--mono);font-size:9.5px;border-radius:2px;padding:0 4px;margin-left:4px;vertical-align:1px}.src.jigari{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}.src.pkg,.src.house,.src.mitsa{background:color-mix(in srgb,var(--sea) 14%,transparent);color:var(--sea)}.src.est{background:color-mix(in srgb,var(--part) 16%,transparent);color:var(--part)}.bar{display:flex;height:6px;border-radius:2px;overflow:hidden;background:var(--tint);margin:8px 0 6px}.bar i{display:block;height:100%}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--faint)}.legend span{display:inline-flex;gap:5px;align-items:center}.big2{font-family:var(--serif);font-size:30px;line-height:1.05}.kv{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;font-size:12.5px;margin-top:8px}.kv span:nth-child(odd){color:var(--muted)}.kv span:nth-child(2n){font-family:var(--mono);font-size:12px;text-align:right}.roomrow{display:grid;grid-template-columns:24px 1fr auto;gap:8px;align-items:center;padding:7px 4px;border-top:1px solid var(--line);cursor:pointer;font-size:13px;border-radius:0}.roomrow:hover{background:var(--tint)}.roomrow:first-child{border-top:0}.roomrow small{color:var(--faint);font-size:11px;display:block}.badge{font-size:10.5px;border-radius:2px;padding:1px 6px}.badge.draft{background:color-mix(in srgb,var(--part) 18%,transparent);color:var(--part)}.badge.ok{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}.modal{position:fixed;inset:0;background:color-mix(in srgb,var(--page) 60%,transparent);backdrop-filter:blur(8px);z-index:100;display:grid;place-items:center;animation:fade .2s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.sheet{background:var(--page);border-radius:var(--rad);box-shadow:var(--shadow);width:min(1080px,94vw);max-height:90vh;overflow:auto;padding:28px 30px 30px;position:relative}.sheet h1{font-size:clamp(26px,3.2vw,38px);line-height:1.08}.sheet .lead{font-size:14.5px;color:var(--muted);line-height:1.55;max-width:680px;margin-top:8px}.kicker{padding-right:40px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px 14px;margin-top:22px}.gcard{background:transparent;border:0;border-radius:var(--rad);padding:0;cursor:pointer;text-align:left;overflow:hidden;color:var(--ink)}.gcard .img{aspect-ratio:4/3;background:var(--tint);display:grid;place-items:center;overflow:hidden;border-radius:var(--rad);transition:box-shadow .2s}.gcard:hover .img{box-shadow:0 0 0 2px var(--ink)}.gcard .img img{width:100%;height:100%;object-fit:cover}.gcard .b{padding:8px 2px 4px}.gcard .t{font-family:var(--serif);font-size:17px;line-height:1.15}.gcard .m{font-size:12px;color:var(--muted);margin-top:3px;line-height:1.4}.gcard .s{font-size:11px;color:var(--faint);margin-top:4px}.close{position:absolute;top:14px;right:14px}.keys{display:grid;grid-template-columns:auto 1fr;gap:7px 18px;margin-top:16px;font-size:13px}.keys b{grid-column:1/3;font-family:var(--serif);font-weight:400;font-size:17px;margin-top:10px}.keys .kk{color:var(--ink);font-size:12.5px;font-weight:500}.keys .kk.mono{font-weight:400;font-size:12px}.keys span:not(.kk){color:var(--muted)}.crumbs{left:calc(var(--L) + 12px);top:calc(var(--top) + 10px);display:flex;flex-direction:column;align-items:flex-start;gap:6px;max-width:calc(100% - var(--L) - var(--R) - 80px);transition:left .25s}.crumbs .trail{display:flex;align-items:center;gap:2px;white-space:nowrap;max-width:100%;overflow:hidden;background:color-mix(in srgb,var(--page) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:var(--rad);padding:2px 8px 2px 2px}.crumbs .back{width:28px;height:28px;border-radius:var(--r);border:0;background:transparent;color:var(--ink);display:grid;place-items:center;cursor:pointer}.crumbs .back:hover{background:var(--tint)}.crumbs .back svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.crumbs .cr{border:0;background:transparent;font-size:12.5px;color:var(--muted);cursor:pointer;padding:4px 3px}.crumbs .cr:hover{color:var(--ink)}.crumbs .cr.on{color:var(--ink);cursor:default}.crumbs .sl{color:var(--faint);font-size:12px;padding:0 1px}.crumbs .row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.crumbs .seg{background:color-mix(in srgb,var(--page) 88%,transparent);backdrop-filter:blur(12px)}.crumbs .hintline{font-size:11.5px;color:var(--muted);text-shadow:0 0 4px var(--page),0 0 8px var(--page)}.ctx{left:0;top:0;display:flex;align-items:center;gap:0;padding:3px;border-radius:var(--rad);background:var(--page);box-shadow:var(--shadow);z-index:15;transition:transform .12s ease-out;white-space:nowrap;animation:fade .15s ease}.ctx>*{flex-shrink:0}.ctx .ttl{border:0;background:transparent;font-family:var(--serif);font-size:14px;padding:0 10px 0 8px;cursor:pointer;color:var(--ink);max-width:170px;overflow:hidden;text-overflow:ellipsis;border-right:1px solid var(--line);margin-right:3px;height:24px}.ctx .stp{display:inline-flex;align-items:center;margin:0 3px 0 0;padding-right:3px;border-right:1px solid var(--line)}.ctx .stp button{border:0;background:transparent;height:30px;min-width:26px;cursor:pointer;color:var(--ink);font-size:15px;border-radius:var(--r)}.ctx .stp button:hover{background:var(--tint)}.ctx .stp .v{font-size:12.5px;padding:0 5px;font-family:var(--mono)}.ctx .stp .v small{color:var(--faint);font-size:10.5px;font-family:var(--sans)}.ctx .chip{margin:0 2px}.ctx.addmode{padding:3px 3px 3px 10px;gap:6px}.ctx.addmode .ttl{border:0;font-family:var(--sans);font-size:12.5px}.numedit{position:fixed;z-index:80;width:220px;background:var(--page);border-radius:var(--rad);padding:10px;box-shadow:var(--shadow);display:grid;gap:7px;animation:fade .12s ease}.numedit .k{font-size:11px;color:var(--muted);letter-spacing:.02em}.numedit input{width:100%;font-size:20px;border:0;background:transparent;box-shadow:0 1.5px 0 var(--ink);border-radius:0;padding:4px 2px;outline:none;color:var(--ink)}.numedit .why{font-size:12px;color:var(--muted);min-height:16px}.numedit .why b{color:var(--brass);font-weight:500}.radial-bg{position:fixed;inset:0;z-index:90;background:color-mix(in srgb,var(--page) 30%,transparent)}.radial{position:fixed;width:0;height:0}.radial .rb{position:absolute;left:-38px;top:-28px;width:76px;height:56px;border-radius:var(--rad);border:0;background:var(--page);box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;color:var(--ink);animation:rin .16s cubic-bezier(.2,.9,.3,1.2) both}.radial .rb svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.radial .rb span{font-size:10.5px;color:var(--muted);white-space:nowrap}.radial .rb.bad:hover{color:var(--bad)}body[data-radial] .ctx{display:none}.radial .rc{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:var(--brass)}@keyframes rin{0%{opacity:0;scale:.5}to{opacity:1;scale:1}}.gpick{min-width:220px;z-index:70}.gpick .k{font-size:11.5px;color:var(--muted);padding:6px 10px 4px}.chead{display:flex;align-items:center;gap:8px;padding:0 6px 0 14px;height:40px;border-bottom:1px solid var(--line);flex-shrink:0}.ctitle{display:inline-flex;align-items:center;gap:6px;font-family:var(--serif);font-size:16px}.ctitle svg{width:16px;height:16px;fill:none;stroke:var(--brass);stroke-width:1.5}.clog{flex:1;overflow-y:auto;padding:14px 14px 8px;display:flex;flex-direction:column;gap:8px}.cintro p{font-size:13px;color:var(--muted);line-height:1.55}.sugg{display:flex;flex-direction:column;align-items:stretch;gap:0;margin-top:12px;border-top:1px solid var(--line)}.sugg .chip{white-space:normal;text-align:left;border-radius:0;padding:9px 4px;line-height:1.35;color:var(--ink);border-bottom:1px solid var(--line);font-size:12.5px}.msg{font-size:13.5px;line-height:1.5;max-width:92%}.msg.me{align-self:flex-end;background:var(--tint2);color:var(--ink);border-radius:var(--rad);padding:7px 11px}.msg.ai{align-self:flex-start;color:var(--ink)}.msg.ai code{font-family:var(--mono);font-size:12px;background:var(--tint);border-radius:2px;padding:0 4px}.msg.err{color:var(--bad);font-size:12.5px}.msg.note{color:var(--faint);font-size:12px}.msg.me .look{font-size:11px;color:var(--muted)}.tool{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:11.5px;color:var(--muted)}.tool i{width:6px;height:6px;border-radius:50%;background:var(--faint)}.tool.run i{background:var(--brass);animation:blink 1s infinite}.tool.ok i{background:var(--ok)}.tool.err i{background:var(--bad)}.tool .mono{font-size:10.5px;color:var(--faint)}.tool .terr{flex-basis:100%;color:var(--bad);padding-left:12px}@keyframes blink{50%{opacity:.3}}.draft{border-left:2px solid var(--brass);padding:4px 0 4px 10px;font-size:12.5px;display:flex;flex-direction:column;gap:6px}.draft b{font-weight:500}.dacts{display:flex;gap:4px}.draft.warn{border-left-color:var(--bad)}.dlist{list-style:none;font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:2px}.dlist li{cursor:pointer}.dlist li:hover{color:var(--ink)}.dwarn{font-size:12px;color:var(--bad)}.typing{display:flex;gap:4px;padding:4px 2px}.typing i{width:5px;height:5px;border-radius:50%;background:var(--faint);animation:blink 1.1s infinite}.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}.cin{display:flex;gap:4px;align-items:flex-end;padding:8px;border-top:1px solid var(--line);flex-shrink:0}.cin textarea{flex:1;resize:none;border:0;background:var(--tint);border-radius:var(--rad);padding:8px 10px;font-size:14px;line-height:1.4;outline:none;max-height:140px;min-height:36px}.cin .look.on{color:var(--ink)}.cin .look.on:after{content:"";position:absolute;left:9px;right:9px;bottom:3px;height:2px;background:var(--brass)}.cin .send{color:var(--ink)}.cin .send:not([disabled]){color:var(--brass)}.nodeed{width:min(1120px,96vw)}.nodeed h1{font-size:28px;margin-top:4px}.ned{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:14px}.ncol{min-width:0}.nprev{height:300px;border-radius:var(--rad);background:var(--tint);overflow:hidden;touch-action:none;cursor:grab}.nsrc{width:100%;height:340px;border:0;border-radius:var(--rad);background:var(--tint);padding:12px;font-size:12px;line-height:1.5;resize:vertical;outline:none;color:var(--ink);tab-size:2}.nerr{font-size:12px;margin-top:8px;line-height:1.5}.nerr.bad{color:var(--bad)}.nerr.ok{color:var(--ok)}.coach{position:fixed;z-index:45;left:calc(var(--L) + (100% - var(--L) - var(--R)) / 2);bottom:52px;transform:translate(-50%);width:min(420px,calc(100vw - 24px));background:var(--page);border-radius:var(--rad);padding:14px 16px 10px;box-shadow:var(--shadow);animation:fade .25s ease}.coach .ch{font-family:var(--serif);font-size:18px;margin-bottom:6px}.coach .ci{display:grid;grid-template-columns:132px 1fr;gap:10px;padding:6px 0;border-top:1px solid var(--line);font-size:13px}.coach .ci b{font-weight:500}.coach .ci span{color:var(--muted)}.coach .ca{display:flex;justify-content:space-between;margin-top:6px}.coach .btn.ghost{width:auto}@media(pointer:coarse){.tb{width:40px;height:40px}.tb svg{width:21px;height:21px}.cam .tb{width:38px;height:38px}.ctx .stp button{height:38px;min-width:36px}.chip{padding:7px 10px;font-size:13px}.mode{padding:8px 12px}.foot{height:44px}}.app.is-tablet{--side:248px;--panel:308px;--chatw:330px}.app.is-tablet .brand input{width:min(16vw,180px)}.app.is-tablet .tab{padding:0 5px;font-size:12px}.app.is-tablet .sumline .s.opt,.bbar{display:none}.app.is-phone{--L:0px;--R:0px}.is-phone .top{padding:0 2px 0 6px}.is-phone .modes{display:none}.is-phone .brand input{width:min(40vw,200px);font-size:15px}.is-phone .brand b{font-size:20px}.is-phone .side,.is-phone .panel,.is-phone .chat{left:0;right:0;width:auto;top:auto;bottom:calc(56px + env(safe-area-inset-bottom));border:0;border-top:1px solid var(--line);border-radius:var(--rad) var(--rad) 0 0;transform:translateY(105%);pointer-events:none;height:52vh;transition:transform .3s cubic-bezier(.2,.8,.2,1),height .3s cubic-bezier(.2,.8,.2,1);z-index:35;padding-top:0;box-shadow:0 -10px 30px -18px #281e0a59}.is-phone .side{padding:0 10px 30px}.is-phone.sheet-lib .side,.is-phone.sheet-panel .panel,.is-phone.sheet-chat .chat{transform:none;pointer-events:auto}.is-phone.snap-peek .side,.is-phone.snap-peek .panel,.is-phone.snap-peek .chat{height:31vh}.is-phone.snap-full .side,.is-phone.snap-full .panel,.is-phone.snap-full .chat{height:calc(100% - 56px - env(safe-area-inset-bottom) - var(--top) - 8px)}.grip{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:center;height:30px;flex-shrink:0;background:inherit;touch-action:none;cursor:grab}.grip i{width:36px;height:4px;border-radius:2px;background:var(--line)}.grip .gname{position:absolute;left:14px;font-family:var(--serif);font-size:15px;color:var(--muted)}.grip .close-sheet{position:absolute;right:4px;top:-2px;width:34px;height:34px}.is-phone .side .grip{margin:0 -10px}.is-phone .bbar{display:flex;position:fixed;left:0;right:0;bottom:0;height:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);z-index:40;background:color-mix(in srgb,var(--page) 94%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line)}.bbar button{flex:1;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;color:var(--muted);cursor:pointer;position:relative}.bbar button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.bbar button.on{color:var(--ink)}.bbar button.on:after{content:"";position:absolute;top:0;left:30%;right:30%;height:2px;background:var(--brass)}.bbar .modes-pop{left:8px;right:8px;bottom:62px;position:absolute}.is-phone .foot{bottom:calc(56px + env(safe-area-inset-bottom));height:36px;padding:0 4px 0 10px}.is-phone .sumline .s.opt{display:none}.is-phone .cam>:not(.eyebtn):not(.vpop){display:none}.is-phone .grid2{grid-template-columns:repeat(3,1fr)}.is-phone .ctx{box-shadow:0 0 0 1px var(--line)}.is-phone .crumbs{top:calc(var(--top) + 8px);left:8px;max-width:calc(100% - 16px)}.is-phone .crumbs .seg{max-width:calc(100vw - 16px);overflow-x:auto;scrollbar-width:none}.is-phone .ctx{position:fixed;left:50%!important;top:auto!important;bottom:calc(100px + env(safe-area-inset-bottom));transform:translate(-50%)!important;max-width:calc(100vw - 16px);overflow-x:auto;scrollbar-width:none}.is-phone .ctx .opt{display:none}.is-phone .ctx .ttl{font-size:13.5px;max-width:110px}.is-phone.sheet-lib .ctx,.is-phone.sheet-panel .ctx,.is-phone.sheet-chat .ctx{display:none}.is-phone .hint{top:auto;bottom:calc(100px + env(safe-area-inset-bottom));font-size:12px;left:8px;right:8px;white-space:normal;justify-content:space-between}.is-phone .toast{bottom:calc(150px + env(safe-area-inset-bottom));left:50%}.is-phone .walkpad{bottom:calc(150px + env(safe-area-inset-bottom))}.is-phone .sheet{padding:20px 16px}.is-phone .ned{grid-template-columns:1fr}.is-phone .pane{padding:6px 14px 40px}.is-phone .numedit{left:50%!important;top:auto!important;bottom:calc(100px + env(safe-area-inset-bottom));transform:translate(-50%)}.is-phone .coach{bottom:calc(100px + env(safe-area-inset-bottom));left:50%}.is-phone .cin textarea{font-size:16px}.vpop{right:0;bottom:42px;top:auto;gap:6px;padding:8px;min-width:250px}.vpop .vrow{display:flex;gap:2px;flex-wrap:wrap}@media(pointer:coarse){.chips .chip{padding:5px 7px}.seg button{padding:9px 12px}.seg.sm button{padding:8px 11px}.crumbs .back{width:40px;height:40px}.pop .btn.ghost{padding:11px 12px}.tg{padding:10px 8px}}@media(max-width:1499px){.app.is-desk.panel-on .sumline .s.opt,.app.is-desk.chat-on .sumline .s.opt{display:none}}.tg.tg2{grid-template-columns:1fr 26px;width:100%;padding:6px 0}.is-phone .pop.menu{position:fixed;left:8px!important;right:8px!important;top:calc(var(--top) + 4px);max-height:calc(100vh - var(--top) - 80px);overflow:auto}.is-phone .numedit{top:calc(var(--top) + 8px)!important;bottom:auto!important}@media(pointer:coarse){.step button{width:40px;height:40px}.sw{width:30px;height:30px}.sw.sq{width:36px;height:30px}.btn.sm{min-height:36px}.numedit .btn{min-height:40px}.dacts .btn{min-height:38px}}.planview .pbar{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.planview .pbar .chip{flex-shrink:0}.planview .pbar .tb{position:sticky;right:0;background:var(--page)}.lbl.meas{font-size:11px;font-weight:500;color:var(--ink);box-shadow:0 0 0 1.5px var(--brass)}.blank{left:calc(var(--L) + (100% - var(--L) - var(--R)) / 2);top:42%;transform:translate(-50%,-50%);text-align:center;width:min(440px,calc(100vw - 32px))}.blank .bt{font-family:var(--serif);font-size:26px}.blank .bs{font-size:13px;color:var(--muted);margin-top:6px}.blank .ba{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin-top:14px}
