:root{--bg:#e9edf2;--panel:#fff;--surface-2:#f4f6f9;--line:#d5dbe3;--text:#1c2430;--muted:#5b6673;--primary:#1f4e79;--primary-weak:#e8eef5;--accent:#f0b35a;--danger:#b3261e;--ok:#2e7d32;--attention:#f5b700;--tap:44px;--tap-main:52px;--radius:8px;--fs-body:14px;--fs-sub:13px;--toolbar-h:52px;--status-h:44px;--right-w:240px;--right-w-collapsed:64px}@media (pointer:fine){:root{--status-h:32px}}@media (width>=1280px){:root{--right-w:280px}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html,body{touch-action:pan-x pan-y}body{background:var(--bg);color:var(--text);overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-text-size-adjust:100%;font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Hiragino Kaku Gothic ProN,Noto Sans JP,Segoe UI,sans-serif;font-size:15px}input,textarea,select{-webkit-user-select:text;user-select:text;font:inherit}button{min-height:var(--tap);min-width:var(--tap);font:inherit;border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer;touch-action:manipulation;white-space:nowrap;border-radius:10px;padding:0 14px;font-size:15px}button.primary{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600}button.active{background:var(--primary-weak);border-color:var(--primary);color:var(--primary);font-weight:600}button.danger{color:var(--danger);border-color:#e7b3b3}button.ghost{background:0 0;border-color:#0000}button.small{min-height:var(--tap);min-width:var(--tap);padding:0 10px;font-size:13px}@media (pointer:fine){button.small{min-width:32px;min-height:32px}}.num{font-variant-numeric:tabular-nums}button:disabled{opacity:.4;cursor:default}.field{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.field>span{color:var(--muted);font-size:13px}.field input,.field select{min-height:var(--tap);border:1px solid var(--line);color:var(--text);background:#fff;border-radius:8px;padding:0 10px;font-size:16px}.field input[type=color]{width:60px;padding:2px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.muted{color:var(--muted);font-size:13px}.warn{color:#9a5b00;background:#fff5e0;border:1px solid #f2d59a;border-radius:8px;padding:8px 10px;font-size:13px}.error{color:var(--danger);font-size:13px}h1{margin:0 0 12px;font-size:20px}h2{margin:16px 0 8px;font-size:16px}h3{color:var(--muted);margin:12px 0 6px;font-size:14px}.list-screen{max-width:760px;padding:calc(20px + env(safe-area-inset-top,0)) 16px calc(40px + env(safe-area-inset-bottom,0));margin:0 auto}.list-screen header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:16px;display:flex}.project-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;padding:12px 14px;display:flex}.project-card .name{font-size:17px;font-weight:600}.project-card .meta{color:var(--muted);margin-top:2px;font-size:13px}.project-card .actions{flex-shrink:0;gap:6px;display:flex}.empty{background:var(--panel);border:1px dashed var(--line);text-align:center;color:var(--muted);border-radius:12px;padding:24px}.editor{grid-template-columns:minmax(0, 1fr) var(--right-w);grid-template-rows:var(--toolbar-h) minmax(0, 1fr) auto var(--status-h);height:100%;padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0);grid-template-areas:"tool tool""canvas right""dock right""status status";display:grid}.editor[data-right-collapsed=true]{grid-template-columns:minmax(0, 1fr) var(--right-w-collapsed)}.toolbar{grid-area:tool}.canvas-cell{grid-area:canvas}.right-col{grid-area:right}.takeoff-dock{grid-area:dock}.statusbar{grid-area:status}@media (orientation:portrait){.editor{grid-template-columns:minmax(0,1fr);grid-template-rows:var(--toolbar-h) minmax(min(160px, 18dvh), 1fr) auto auto var(--status-h);grid-template-areas:"tool""canvas""dock""right""status"}.editor[data-right-collapsed=true]{grid-template-columns:minmax(0,1fr)}}.toolbar,.right-col,.statusbar,.takeoff-dock{touch-action:manipulation}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);white-space:nowrap;align-items:center;gap:6px;min-width:0;padding:4px 8px;display:flex;overflow-x:auto}.toolbar .spacer{flex:1}.toolbar .title{text-overflow:ellipsis;max-width:180px;font-weight:600;overflow:hidden}.toolbar .pager{align-items:center;gap:2px;display:flex}.toolbar .pager span{text-align:center;min-width:56px}.toolbar .status{color:var(--muted);padding:0 6px;font-size:13px}.canvas-wrap{touch-action:none;background:#cfd6de;position:relative;overflow:hidden}.canvas-wrap .konvajs-content{touch-action:none}.canvas-empty{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.palette{background:var(--panel);flex-direction:column;gap:6px;padding:8px;display:flex;overflow:auto}.palette.collapsed{align-items:stretch;padding:4px}.palette.collapsed .wire-type-btn{justify-content:center;padding:0}.palette .head{color:var(--muted);margin:4px 0 2px;font-size:12px}.palette .ctx input{border:1px solid var(--line);border-radius:8px;width:100%;min-height:40px;padding:0 8px;font-size:15px}.wire-type-btn{text-align:left;justify-content:flex-start;align-items:center;gap:8px;width:100%;display:flex;overflow:hidden}.wire-type-btn .dot{border:1px solid #00000026;border-radius:50%;flex:none;width:14px;height:14px}.wire-type-btn .label{text-overflow:ellipsis;overflow:hidden}@media (orientation:portrait){.palette{flex-flow:row;align-items:center;max-height:120px;overflow-x:auto}.palette .ctx{gap:6px;display:flex}.palette .ctx input{width:120px}.wire-type-btn{flex:none;width:auto}.palette .head{display:none}}.bottombar{border:1px solid var(--line);z-index:30;background:#fffffff5;border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px;padding:8px;display:flex;position:absolute;bottom:8px;left:8px;right:8px;box-shadow:0 2px 10px #00000024}.bottombar .info{flex:1;min-width:160px}.bottombar .big{font-size:20px;font-weight:700}.loupe{border:3px solid var(--primary);pointer-events:none;z-index:10;background:#fff;border-radius:50%;width:150px;height:150px;position:absolute;overflow:hidden;box-shadow:0 4px 14px #0000004d}.loupe canvas{width:150px;height:150px;display:block}.side-panel{background:var(--panel);border:1px solid var(--line);z-index:20;border-radius:12px;width:min(520px,94%);padding:12px 12px 84px;position:absolute;top:8px;bottom:8px;right:8px;overflow:auto;box-shadow:0 4px 16px #0000002e}.side-panel.narrow{width:min(340px,94%);max-height:80%;top:auto}.side-panel header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.tabs{flex-wrap:wrap;gap:4px;margin-bottom:8px;display:flex}table.summary{border-collapse:collapse;width:100%;font-size:14px}.summary th,.summary td{border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;padding:7px 6px}.summary th:first-child,.summary td:first-child{text-align:left}.summary tr.group td{background:var(--primary-weak);font-weight:600}.summary tr.total td{border-top:2px solid var(--primary);font-weight:700}.summary .swatch{vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.modal-backdrop{z-index:50;padding:max(12px, env(safe-area-inset-top,0)) max(12px, env(safe-area-inset-right,0)) max(12px, env(safe-area-inset-bottom,0)) max(12px, env(safe-area-inset-left,0));background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border-radius:14px;width:min(560px,100%);max-height:92vh;padding:18px;overflow:auto;box-shadow:0 8px 30px #00000040}.modal h2{margin-top:0}.modal .actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.presets{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.type-editor-row{grid-template-columns:60px 1fr auto;align-items:center;gap:8px;margin-bottom:8px;display:grid}.type-editor-row input[type=text]{min-height:var(--tap);border:1px solid var(--line);border-radius:8px;padding:0 10px;font-size:16px}.type-editor-row input[type=color]{border:1px solid var(--line);background:#fff;border-radius:8px;width:56px;height:44px;padding:2px}.canvas-cell{min-width:0;min-height:0;position:relative;overflow:hidden}.right-col{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;min-width:0;min-height:0;display:flex}.right-col-head{border-bottom:1px solid var(--line);flex:none;align-items:stretch;gap:2px;padding:4px;display:flex}.right-col-head .right-tab{min-width:0;font-size:var(--fs-sub);background:0 0;border-color:#0000;flex:1;padding:0 6px}.right-col-head .right-tab.active{background:var(--primary-weak);color:var(--primary);border-color:var(--primary);font-weight:600}.right-col-head .right-collapse{width:var(--tap);flex:none;padding:0}.right-col[data-collapsed=true] .right-col-head{justify-content:center}.right-col-body{flex:1;min-height:0;overflow:auto}.right-col-body>.palette{min-height:100%}.props-body{padding:8px}.props-body .field input,.props-body .field select{width:100%}@media (orientation:portrait){.right-col{border-left:none;border-top:1px solid var(--line);max-height:30vh}.right-col[data-tab=palette] .right-col-body{max-height:120px}.editor:has(.tk-dock[data-size=expanded]) .right-col{max-height:20vh}}.side-host{background:var(--panel);border:1px solid var(--line);z-index:20;border-radius:12px;flex-direction:column;width:min(520px,55%);display:flex;position:absolute;top:8px;bottom:8px;right:8px;overflow:hidden;box-shadow:0 4px 16px #0000002e}.side-host-grip{display:none}.side-host-head{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:4px;padding:4px 6px;display:flex}.side-host-head .spacer{flex:1}.side-host-head [role=tab]{background:0 0;border-color:#0000}.side-host-head [role=tab].active{background:var(--primary-weak);color:var(--primary);border-color:var(--primary);font-weight:600}.side-host-body{flex:1;min-height:0;padding:12px 12px 24px;overflow:auto}@media (orientation:portrait){.side-host{border-radius:14px 14px 0 0;width:auto;height:45%;inset:auto 0 0}.side-host[data-sheet=half]{height:50%}.side-host[data-sheet=full]{height:90%}.side-host-grip{width:100%;min-height:var(--tap);border:none;flex:none;justify-content:center;align-items:center;padding:0;display:flex}.side-host-grip span{background:var(--line);border-radius:3px;width:44px;height:5px;display:block}}.takeoff-dock{background:var(--panel);border-top:1px solid var(--line);min-width:0;overflow:hidden}.dock-legacy .side-panel{width:auto;max-height:none;box-shadow:none;border:none;border-radius:0;padding:0 12px 12px;position:static}.statusbar{background:var(--surface-2);border-top:1px solid var(--line);min-width:0;font-size:var(--fs-sub);color:var(--muted);align-items:center;gap:8px;padding:0 8px;display:flex;overflow:hidden}.statusbar .spacer{flex:1}.statusbar>button{align-self:stretch}.canvas-wrap{width:100%;height:100%}.wire-type-btn .mark{background:#fff;border:2px solid;border-radius:6px;flex:none;justify-content:center;align-items:center;width:26px;height:22px;font-size:11px;font-weight:700;display:inline-flex}.rule-row{grid-template-columns:1fr 1fr 1.3fr auto;align-items:center;gap:6px;margin-bottom:6px;display:grid}.rule-row select{border:1px solid var(--line);background:#fff;border-radius:8px;min-height:40px;font-size:14px}.symbol-type-row{grid-template-columns:48px 1fr 1fr 90px auto;align-items:center;gap:6px;margin-bottom:6px;display:grid}.symbol-type-row input[type=text],.symbol-type-row input[type=number],.symbol-type-row select{border:1px solid var(--line);background:#fff;border-radius:8px;min-height:40px;padding:0 8px;font-size:14px}.symbol-type-row .mount-field{flex-direction:column;gap:2px;min-width:0;display:flex}.symbol-type-row .mount-field input{width:100%;min-width:0}.symbol-type-row .mount-field .error{font-size:12px}.symbol-type-row input[aria-invalid=true],.field input[aria-invalid=true]{border-color:var(--danger);background:#fff6f5}.symbol-type-row input[type=color]{border:1px solid var(--line);background:#fff;border-radius:8px;width:44px;height:40px;padding:2px}@media (width<=600px){.symbol-type-row{grid-template-columns:44px 1fr 1fr}.rule-row{grid-template-columns:1fr 1fr}}.badge{background:var(--accent);color:#1c2430;text-align:center;border-radius:10px;min-width:20px;margin-left:6px;padding:0 6px;font-size:12px;font-weight:700;line-height:20px;display:inline-block}.proposal-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:8px 0;display:flex}.proposal-row .body{cursor:pointer;flex:1;min-width:0}.proposal-row .tag{background:var(--primary-weak);color:var(--primary);border-radius:6px;margin-right:4px;padding:1px 6px;font-size:11px;display:inline-block}.app-update{z-index:48;pointer-events:none;padding:0 max(12px, env(safe-area-inset-right,0)) 0 max(12px, env(safe-area-inset-left,0));left:0;right:0;bottom:calc(16px + env(safe-area-inset-bottom,0));justify-content:center;display:flex;position:fixed}.app-update[data-place=editor]{bottom:auto;top:calc(var(--toolbar-h) + 68px + env(safe-area-inset-top,0))}body:has(.ts-wrap) .app-update[data-place=editor]{top:calc(var(--toolbar-h) + 128px + env(safe-area-inset-top,0))}.app-update-card{pointer-events:auto;color:#fff;touch-action:manipulation;background:#1c2430;border-radius:14px;flex-wrap:wrap;align-items:center;gap:12px;width:min(620px,100%);padding:8px 8px 8px 14px;animation:.2s ease-out app-update-in;display:flex;box-shadow:0 8px 24px #0000004d}.app-update-icon{color:var(--accent)}.app-update-text{flex:220px;min-width:0;padding:4px 0;line-height:1.4}.app-update-title{font-size:15px;font-weight:700}.app-update-body{font-size:var(--fs-sub);color:#d6dde6;white-space:normal}.app-update-actions{gap:12px;margin-left:auto;display:flex}.app-update-actions button{min-height:var(--tap);min-width:var(--tap);border-radius:10px;font-size:15px}.app-update-later{color:#fff;background:0 0;border-color:#ffffff59}.app-update-later:hover{background:#ffffff1a}.app-update-now{color:var(--primary);background:#fff;border-color:#fff;padding:0 16px;font-weight:700}@keyframes app-update-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.app-update[data-place=editor] .app-update-card{animation-name:app-update-in-top}@keyframes app-update-in-top{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.app-update-card{animation:none}}.vw-loading-cover{pointer-events:auto;touch-action:none;z-index:1;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.vw-loading-cover--error{pointer-events:none;touch-action:auto}.vw-loading-cover--error .vw-loading-card{pointer-events:auto}.vw-loading-card{max-width:min(440px,100%);color:var(--text);border:1px solid var(--line);background:#fff;border-radius:12px;align-items:center;gap:14px;padding:18px 22px;display:flex;box-shadow:0 6px 24px #0000002e}.vw-loading-card--error{border-color:#e7b3b3;display:block}.vw-loading-title{font-size:16px;font-weight:700;line-height:1.4}.vw-loading-text{font-size:var(--fs-body);color:var(--danger);margin-top:6px;font-weight:600}.vw-loading-sub{font-size:var(--fs-sub);color:var(--muted);white-space:pre-line;margin-top:4px}.vw-loading-pill{color:var(--text);border:1px solid var(--line);font-size:var(--fs-sub);pointer-events:none;z-index:2;background:#fffffff5;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;display:flex;position:absolute;top:10px;right:10px;box-shadow:0 2px 8px #0000001f}.editor[data-side-panel=readout] .vw-loading-pill,.editor[data-side-panel=ai] .vw-loading-pill{left:10px;right:auto}.vw-spinner{border:3px solid var(--primary-weak);border-top-color:var(--primary);border-radius:50%;flex:none;width:28px;height:28px;animation:.9s linear infinite vw-spin}.vw-spinner--small{border-width:2px;width:14px;height:14px}@keyframes vw-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.vw-spinner{animation-duration:2.4s}}.vw-filter-chip{z-index:2;color:#5c4400;max-width:calc(100% - 16px);font-size:var(--fs-sub);background:#fff8e1;border:1px solid #f2d59a;border-radius:999px;align-items:center;gap:8px;padding:2px 4px 2px 12px;display:flex;position:absolute;top:8px;left:8px;box-shadow:0 2px 8px #0000001a}.vw-filter-chip-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.vw-filter-chip button{border-radius:999px;flex:none}.editor[data-side-panel=readout] .vw-filter-chip~.vw-loading-pill,.editor[data-side-panel=ai] .vw-filter-chip~.vw-loading-pill{top:60px}.canvas-wrap{--ds-tool:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.canvas-wrap:after{content:"";border:3px solid var(--ds-tool);pointer-events:none;z-index:5;position:absolute;inset:0}.canvas-wrap[data-tool=symbol]{--ds-tool:#2e7d32;cursor:crosshair}.canvas-wrap[data-tool=trace]{--ds-tool:#c43e00;cursor:crosshair}.canvas-wrap[data-tool=measure]{--ds-tool:#00838f;cursor:crosshair}.canvas-wrap[data-tool=scale]{--ds-tool:#1f4e79;cursor:crosshair}.canvas-wrap[data-tool=connect]{--ds-tool:#6a1b9a;cursor:default}.canvas-wrap[data-tool=select]{cursor:default}.canvas-wrap[data-tool=connect][data-hover=symbol],.canvas-wrap[data-tool=select][data-hover]{cursor:pointer}.canvas-wrap[data-window=true]{cursor:zoom-in}.canvas-wrap[data-space=true]{cursor:grab}.canvas-wrap[data-panning=true]{cursor:grabbing}.ds-hint{z-index:6;color:#fff;max-width:calc(100% - 24px);font-size:var(--fs-body,14px);pointer-events:auto;background:#1c2430eb;border-radius:24px;align-items:center;gap:12px;padding:4px 4px 4px 16px;line-height:1.4;display:flex;position:absolute;top:12px;left:12px;box-shadow:0 2px 10px #00000040}.ds-hint>span{padding:8px 0}.ds-hint-btn{color:#fff;min-width:72px;min-height:44px;font:inherit;cursor:pointer;background:0 0;border:1px solid #ffffffb3;border-radius:22px;flex:none;padding:0 16px;font-weight:700}@media (pointer:fine){.ds-hint-btn{min-height:32px}}.ai-review{z-index:30;background:var(--panel,#fff);border:1px solid var(--line);border-radius:var(--radius,8px);touch-action:manipulation;flex-direction:column;gap:6px;max-width:820px;margin:0 auto;padding:10px 12px 8px;display:flex;position:absolute;bottom:8px;left:8px;right:8px;overflow:hidden;box-shadow:0 6px 20px #00000038}.ai-review-progress{background:var(--surface-2,#eef1f4);height:4px;display:flex;position:absolute;top:0;left:0;right:0}.ai-review-progress .ok{background:var(--ok);transition:width .2s}.ai-review-progress .ng{background:var(--danger);transition:width .2s}.ai-review-head{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.ai-review-count{font-variant-numeric:tabular-nums;color:var(--primary);font-weight:700}.ai-review-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;font-size:15px;overflow:hidden}.ai-review-conf{background:var(--primary-weak);color:var(--primary);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:12px}.ai-review-conf.low{color:#8a5300;background:#fff5e0;border:1px solid #f2d59a}.ai-review-tag{color:#6b4e00;white-space:nowrap;background:#fff3c4;border:1px solid #e6c65c;border-radius:6px;padding:2px 8px;font-size:12px}.ai-review-done-tag{color:var(--ok);white-space:nowrap;background:#e6f4ea;border-radius:6px;padding:2px 8px;font-size:12px}.ai-review-spacer{flex:1}.ai-review-reason{text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;line-height:1.4;display:-webkit-box;overflow:hidden}.ai-review-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.ai-review-group{align-items:center;gap:12px;display:flex}.ai-review-actions button{min-height:var(--tap,44px);min-width:var(--tap,44px);justify-content:center;align-items:center;gap:4px;padding:0 14px;display:inline-flex}.ai-review-actions button.primary{padding:0 18px}.ai-review-stats{font-size:12px}.ai-review-keys{display:none}@media (pointer:fine){.ai-review-keys{display:inline}.ai-review-actions button{min-height:36px}}@media (width<=600px){.ai-review-actions{justify-content:stretch}.ai-review-group,.ai-review-group button{flex:1}}.cm-menu{z-index:40;background:var(--panel);border:1px solid var(--line);touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:12px;outline:none;flex-direction:column;gap:2px;min-width:220px;max-width:min(320px,100% - 8px);padding:6px;display:flex;position:absolute;box-shadow:0 6px 20px #00000038}.cm-menu-title{font-size:var(--fs-sub);color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;text-overflow:ellipsis;margin-bottom:4px;padding:4px 8px 6px;overflow:hidden}.cm-menu-decide{border-bottom:1px solid var(--line);gap:12px;margin-bottom:4px;padding:2px 2px 6px;display:flex}.cm-menu button{min-height:var(--tap);min-width:var(--tap);text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:10px;padding:0 12px;font-size:15px;display:flex}.cm-menu .cm-decide{border-color:var(--line);background:var(--surface-2);flex:1;justify-content:center;font-weight:700}.cm-menu .cm-decide.cm-ok{background:var(--ok);border-color:var(--ok);color:#fff}.cm-menu .cm-decide.cm-danger{color:var(--danger);background:#fff;border-color:#e7b3b3}.cm-menu .cm-item.cm-danger{color:var(--danger);border-top:1px solid var(--line);border-radius:0 0 8px 8px;margin-top:4px}.cm-menu .cm-item:hover,.cm-menu .cm-item:focus-visible{background:var(--primary-weak)}.cm-menu button:focus-visible{outline:2px solid var(--primary);outline-offset:1px}@media (pointer:fine){.cm-menu button{min-height:32px;font-size:14px}.cm-menu .cm-decide{min-height:36px}}.cm-float{z-index:15;border:1px solid var(--line);touch-action:manipulation;white-space:nowrap;-webkit-user-select:none;user-select:none;background:#fffffff7;border-radius:12px;align-items:center;gap:6px;padding:4px;display:flex;position:absolute;box-shadow:0 3px 12px #0003}.cm-float .cm-float-btn{min-height:var(--tap);min-width:var(--tap);border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer;border-radius:9px;align-items:center;gap:6px;padding:0 12px;font-size:15px;display:inline-flex}.cm-float .cm-float-danger{color:var(--danger);border-color:#e7b3b3}.cm-float-decide{border-left:1px solid var(--line);gap:12px;margin-left:6px;padding-left:10px;display:inline-flex}.cm-float .cm-float-ok{background:var(--ok);border-color:var(--ok);color:#fff;font-weight:700}.cm-float .cm-float-reject{color:var(--danger);border-color:#e7b3b3;font-weight:700}.cm-float .cm-float-btn:focus-visible{outline:2px solid var(--primary);outline-offset:1px}@media (pointer:fine){.cm-float .cm-float-btn{min-height:36px;padding:0 10px;font-size:14px}.cm-float .cm-float-btn:hover{background:var(--primary-weak)}.cm-float .cm-float-ok:hover{background:#256b29}}.cm-chooser{z-index:40;background:var(--panel);border:1px solid var(--line);touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:12px;outline:none;flex-direction:column;width:min(300px,100% - 8px);max-height:min(70%,420px);display:flex;position:absolute;overflow:hidden;box-shadow:0 6px 20px #00000038}.cm-chooser-head{font-size:var(--fs-sub);color:var(--muted);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:2px 2px 2px 12px;font-weight:700;display:flex}.cm-chooser .cm-chooser-close{min-height:var(--tap);min-width:var(--tap);color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.cm-chooser-list{flex-direction:column;gap:2px;padding:4px;display:flex;overflow-y:auto}.cm-chooser .cm-chooser-row{text-align:left;width:100%;min-height:48px;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:10px;padding:4px 10px;font-size:15px;display:flex}.cm-chooser .cm-chooser-row:hover,.cm-chooser .cm-chooser-row:focus-visible{background:var(--primary-weak);border-color:var(--primary);outline:none}.cm-chooser-num{color:#fff;background:#1f2933;border-radius:50%;flex:none;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;font-weight:700;display:inline-flex}.cm-chooser-text{flex-direction:column;flex:1;min-width:0;display:flex}.cm-chooser-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.cm-chooser-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.cm-chooser-tag{color:#1f2933;border:1px dashed #1f2933;border-radius:6px;flex:none;padding:2px 6px;font-size:11px}.cm-chooser-tag.sel{background:var(--primary);border-style:solid;border-color:var(--primary);color:#fff}.cm-chooser-pin{z-index:39;color:#fff;pointer-events:none;background:#1f2933;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;margin:-30px 0 0 6px;font-size:12px;font-weight:700;transition:transform .1s;display:flex;position:absolute;box-shadow:0 1px 4px #00000059}.cm-chooser-pin.hot{background:var(--accent);color:#1f2933;transform:scale(1.35)}@media (pointer:fine){.cm-chooser .cm-chooser-row{min-height:40px;font-size:14px}.cm-chooser .cm-chooser-close{min-width:32px;min-height:32px}}.ts-wrap{z-index:7;pointer-events:none;flex-direction:column;align-items:flex-start;gap:6px;max-width:calc(100% - 24px);display:flex;position:absolute;top:68px;left:12px}.ts-bar{pointer-events:auto;border:1px solid var(--line);touch-action:manipulation;background:#fffffff7;border-radius:12px;gap:6px;padding:4px;display:flex;box-shadow:0 3px 12px #0000002e}.ts-btn{min-height:var(--tap);align-items:center;gap:6px;padding:0 12px;font-size:15px;display:inline-flex}.ts-btn[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700}.ts-hint{pointer-events:none;color:#fff;font-size:var(--fs-body,14px);background:#1c2430eb;border-radius:10px;padding:6px 12px;line-height:1.4}:is(.editor[data-side-panel=readout] .canvas-cell:has(.vw-filter-chip~.vw-loading-pill) .ts-wrap,.editor[data-side-panel=ai] .canvas-cell:has(.vw-filter-chip~.vw-loading-pill) .ts-wrap){top:112px}.tt-pop{z-index:45;background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;width:min(300px,100vw - 16px);display:flex;position:fixed;overflow:hidden;box-shadow:0 8px 24px #00000038}.tt-pop-head{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:6px;padding:2px 4px 2px 12px;display:flex}.tt-pop-head strong{font-size:var(--fs-body);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.tt-pop-close{padding:0}.tt-pop-body{flex-direction:column;gap:8px;min-height:0;padding:8px;display:flex;overflow:auto}.tt-pop-list{flex-direction:column;gap:2px;display:flex}.tt-pop-item{text-align:left;border-color:#0000;justify-content:flex-start;align-items:center;gap:10px;width:100%;padding:0 10px;display:flex}.tt-pop-item.active{background:var(--primary-weak);color:var(--primary);border-color:var(--primary)}.tt-pop-name{text-overflow:ellipsis;flex:1;overflow:hidden}.tt-pop-count{justify-content:space-between;align-items:center;gap:12px;display:flex}.tt-pop-count strong{text-align:center;flex:1;font-size:18px}.tt-pop-chips{flex-wrap:wrap;gap:8px;display:flex}.tt-pop-chips button{padding:0 12px}.tt-pop-input{gap:8px;display:flex}.tt-pop-input input{min-width:0;min-height:var(--tap);border:1px solid var(--line);border-radius:8px;flex:1;padding:0 10px;font-size:16px}.tt-pop-check{min-height:var(--tap);font-size:var(--fs-sub);align-items:center;gap:8px;display:flex}.tt-pop-check input{width:22px;height:22px}.tt-pop-clear{color:var(--muted);align-self:flex-start}.tt-pop-note{font-size:var(--fs-sub);color:var(--muted);margin:0}.tt-dot{border:1px solid #00000026;border-radius:50%;flex:none;width:12px;height:12px;display:inline-block}.tt-mark{background:#fff;border:2px solid;border-radius:6px;flex:none;justify-content:center;align-items:center;min-width:26px;height:22px;padding:0 3px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.tt-bulk{min-height:var(--tap);white-space:nowrap;scrollbar-width:thin;background:#fff7e8;border-bottom:1px solid #f2d59a;flex:none;align-items:center;gap:6px;padding:0 8px;display:flex;overflow-x:auto}.tt-bulk-count{font-size:var(--fs-sub);margin-right:4px}.tt-bulk button{flex:none;align-items:center;gap:4px;display:inline-flex}.tt-bulk-sep{background:var(--line);flex:none;align-self:stretch;width:1px;margin:8px 2px}.tt-bulk-judge{flex:none;gap:12px;display:inline-flex}.tt-bulk .tt-accept:not(:disabled){color:var(--ok);border-color:#9ccc9f;font-weight:600}@media (pointer:fine){.tt-bulk{min-height:32px}}.tt-table{background:var(--panel);flex-direction:column;min-width:0;min-height:0;display:flex;position:absolute;inset:0}.tt-filters{min-height:var(--tap);white-space:nowrap;border-bottom:1px solid var(--line);scrollbar-width:thin;flex:none;align-items:center;gap:6px;padding:0 8px;display:flex;overflow-x:auto}.tt-chip{border-radius:999px;flex:none;align-items:center;gap:6px;display:inline-flex}.tt-chip-n{background:var(--surface-2);min-width:18px;color:var(--muted);text-align:center;border-radius:9px;padding:0 5px;font-size:11px;line-height:18px}.tt-chip.active .tt-chip-n{color:var(--primary);background:#fff}.tt-select{min-height:var(--tap);border:1px solid var(--line);background:var(--panel);font-size:var(--fs-sub);color:var(--muted);border-radius:999px;flex:none;align-items:center;gap:4px;padding:0 4px 0 10px;display:inline-flex}.tt-select.active{border-color:var(--primary);background:var(--primary-weak);color:var(--primary)}.tt-select select{font:inherit;font-size:var(--fs-sub);color:var(--text);background:0 0;border:none;max-width:140px;min-height:40px}@media (pointer:fine){.tt-filters,.tt-select{min-height:32px}.tt-select select{min-height:30px}}.tt-summary{font-size:var(--fs-sub);flex:none;align-items:center;gap:4px;margin-left:auto;padding-left:8px;display:inline-flex}.tt-empty{color:var(--muted);font-size:var(--fs-sub);flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:16px;display:flex}.tt-scroll{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;min-height:0;position:relative;overflow:auto}.tt-inner{position:relative}.tt-head,.tt-row{align-items:center;column-gap:0;display:grid}.tt-head{z-index:2;background:var(--surface-2);border-bottom:1px solid var(--line);color:var(--muted);font-size:12px;position:sticky;top:0}.tt-th{min-width:0;height:100%;color:var(--muted);border-radius:0;align-items:center;gap:2px;padding:0 6px;font-size:12px;font-weight:600;display:flex}button.tt-th{min-width:0;min-height:0}.tt-al-right{text-align:right;justify-content:flex-end}.tt-al-center{text-align:center;justify-content:center}.tt-al-left{text-align:left;justify-content:flex-start}.tt-row{border-bottom:1px solid var(--line);background:var(--panel);font-size:var(--fs-body);cursor:pointer;position:absolute;left:0;right:0}.tt-row:hover{background:#f7f9fc}.tt-row[data-status=proposed]{outline-offset:-3px;background:#fffdf6;outline:1px dashed #b98a2a}.tt-row[data-selected]{box-shadow:inset 5px 0 0 var(--accent);background:#fff4e0}.tt-row[data-primary]{background:#ffe9c2}.tt-td{white-space:nowrap;align-items:center;gap:4px;min-width:0;height:100%;padding:0 6px;display:flex;overflow:hidden}button.tt-td{min-width:0;min-height:0;font-size:var(--fs-body);color:var(--text);border-radius:0}.tt-edit{text-underline-offset:4px;-webkit-text-decoration:underline dotted #1f4e7959;text-decoration:underline dotted #1f4e7959}.tt-edit:hover{background:#1f4e790f}.tt-ellipsis{text-overflow:ellipsis;min-width:0;overflow:hidden}.tt-muted{color:var(--muted);font-size:var(--fs-sub)}.tt-td .num,.tt-row .num{font-variant-numeric:tabular-nums}.tt-tag{color:#4a5561;background:#eceff3;border-radius:5px;flex:none;padding:0 5px;font-size:11px;font-weight:600;line-height:18px}.tt-tag-warn{color:#8a4b00;background:#fde6c8}.tt-conf.low{color:#8a5300;background:#fff5e0;border:1px solid #f2d59a;border-radius:999px;padding:0 6px;font-size:12px;line-height:18px}.tt-danger{color:var(--danger);font-weight:700}.tt-check{border-radius:0;justify-content:center;align-items:center;width:44px;min-width:0;height:100%;min-height:0;padding:0;display:flex}.tt-box{background:#fff;border:2px solid #8a96a3;border-radius:5px;width:20px;height:20px;position:relative}.tt-box[data-state=on]{background:var(--primary);border-color:var(--primary)}.tt-box[data-state=on]:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:5px;height:10px;position:absolute;top:1px;left:5px;transform:rotate(45deg)}.tt-box[data-state=some]{border-color:var(--primary)}.tt-box[data-state=some]:after{content:"";background:var(--primary);height:2px;position:absolute;top:7px;left:3px;right:3px}.tt-judge{align-items:center;gap:12px;display:inline-flex}.tt-judge button{padding:0 8px}.tt-row .tt-judge button{min-height:min(var(--tap), var(--tt-row-h,44px))}@media (pointer:fine){.tt-row .tt-judge button{min-height:32px}}.tt-accept{color:var(--ok);border-color:#9ccc9f;font-weight:600}.tt-group-list{flex:1;min-height:0;overflow:auto}.tt-group{width:100%;min-height:var(--tap);border:none;border-bottom:1px solid var(--line);background:var(--panel);text-align:left;border-radius:0;align-items:center;gap:8px;padding:0 10px;display:flex}.tt-group .tt-group-name{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.tt-group .tt-group-n{font-weight:700}.tt-head>:last-child,.tt-row>:last-child{z-index:1;background:inherit;position:sticky;right:0;box-shadow:-8px 0 8px -8px #00000040}.tt-head{background:var(--surface-2)}.tt-mode{background:var(--surface-2);border-radius:10px;flex:none;gap:2px;padding:0;display:inline-flex}.tt-mode button{background:0 0;border-color:#0000}.tt-mode button.active{background:var(--panel);border-color:var(--primary)}.tk-totals{background:var(--surface-2);border-bottom:1px solid var(--line);touch-action:pan-x;cursor:ns-resize;-webkit-user-select:none;user-select:none;flex:none;align-items:center;gap:8px;min-width:0;height:52px;padding:0 4px 0 0;display:flex}.tk-totals button{cursor:pointer}.tk-dock[data-dragging=true] .tk-totals{cursor:grabbing}.tk-totals-grip{width:20px;color:var(--muted);flex:none;justify-content:center;align-self:stretch;align-items:center;display:flex}.tk-totals-scope{line-height:1.2;font-size:var(--fs-body);white-space:nowrap;flex-direction:column;flex:none;display:flex}.tk-totals-sub{color:var(--muted);font-size:11px}.tk-totals-scroll{scrollbar-width:thin;-webkit-overflow-scrolling:touch;flex:auto;align-items:center;gap:6px;min-width:0;padding:0 2px;display:flex;overflow:auto hidden}.tk-totals-scroll,.tk-totals-alerts{touch-action:pan-x}.tk-totals-empty{color:var(--muted);font-size:var(--fs-sub);white-space:nowrap}.tk-sep{background:var(--line);flex:none;width:1px;height:24px;margin:0 2px}.tk-chip{min-height:var(--tap);border:1px solid var(--line);background:var(--panel);min-width:0;font-size:var(--fs-sub);color:var(--text);border-radius:22px;flex:none;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.tk-chip.is-active{border-color:var(--primary);background:var(--primary-weak);color:var(--primary);font-weight:600}.tk-chip-soft{color:var(--muted);background:0 0}.tk-chip-name{text-overflow:ellipsis;max-width:12em;overflow:hidden}.tk-chip-val{font-weight:700}.tk-dot{border-radius:50%;flex:none;width:10px;height:10px}.tk-mark{background:#fff;border:2px solid;border-radius:5px;flex:none;justify-content:center;align-items:center;min-width:22px;height:20px;padding:0 3px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.tk-totals-alerts{scrollbar-width:none;flex:0 auto;align-items:center;gap:6px;max-width:50%;display:flex;overflow-x:auto}.tk-alert{min-height:var(--tap);text-align:left;border-radius:8px;flex-direction:column;flex:none;justify-content:center;align-items:flex-start;gap:1px;padding:2px 10px;font-size:12px;line-height:1.15;display:inline-flex}.tk-alert-main{font-weight:700;font-size:var(--fs-sub);align-items:center;gap:4px;display:inline-flex}.tk-alert-sub{opacity:.9;font-size:11px}.tk-alert-proposed{color:#37404c;background:#eef0f3;border:1px dashed #7a8594}.tk-alert-warn{color:#8a5200;background:#fff5e0;border:1px solid #f2d59a}.tk-alert.is-active{outline:2px solid var(--primary);outline-offset:-2px}.tk-totals-steps{flex:none;gap:4px;display:flex}.tk-step{min-height:var(--tap);min-width:var(--tap);justify-content:center;align-items:center;padding:0;display:inline-flex}@media (pointer:fine){.tk-chip,.tk-alert{min-height:36px}.tk-step{min-width:32px;min-height:32px}.tk-totals-scroll::-webkit-scrollbar{height:6px}}@media (width<=900px){.tk-totals-scope{font-size:var(--fs-sub)}}.tk-dock{box-sizing:content-box;flex-direction:column;height:52px;max-height:80vh;display:flex}.tk-dock[data-size=standard]{height:300px}.tk-dock[data-size=expanded]{height:65dvh}@media (orientation:portrait){.tk-dock[data-size=standard]{height:366px}}@media (pointer:fine){.tk-dock[data-size=standard]{height:374px}}.tk-dock[data-dragging=true] .tk-body{pointer-events:none;overflow:hidden}.tk-head{border-bottom:1px solid var(--line);scrollbar-width:none;flex:none;align-items:center;gap:8px;min-width:0;padding:2px 8px;display:flex;overflow-x:auto}.tk-spacer{flex:1 1 0;min-width:0}.tk-seg{outline:1px solid var(--line);outline-offset:-1px;background:var(--panel);border-radius:10px;flex:none;display:inline-flex;overflow:hidden}.tk-seg-btn{min-height:var(--tap);min-width:var(--tap);border:none;border-right:1px solid var(--line);font-size:var(--fs-sub);background:0 0;border-radius:0;align-items:center;gap:6px;padding:0 12px;display:inline-flex}.tk-seg-btn:last-child{border-right:none}.tk-seg-btn.is-on{background:var(--primary);color:#fff;font-weight:600}.tk-count{background:var(--surface-2);min-width:20px;color:var(--text);text-align:center;border-radius:10px;padding:0 6px;font-size:12px;font-weight:600;line-height:18px;display:inline-block}.tk-seg-btn.is-on .tk-count{color:#fff;background:#ffffff40}.tk-filter-on{min-width:0;max-width:320px;min-height:var(--tap);font-size:var(--fs-sub);border-color:var(--primary);background:var(--primary-weak);color:var(--primary);flex:0 auto;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.tk-filter-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tk-excel{min-height:var(--tap);font-size:var(--fs-sub);flex:none;align-items:center;gap:6px;font-weight:600;display:inline-flex}.tk-body{-webkit-overflow-scrolling:touch;flex:auto;min-height:0;position:relative;overflow:auto}.tk-empty{color:var(--muted);font-size:var(--fs-sub);flex-wrap:wrap;align-items:center;gap:12px;margin:12px;display:flex}.tk-empty p{margin:0}.tk-import{min-height:var(--tap);align-items:center;gap:6px;display:inline-flex}@media (pointer:fine){.tk-import{min-height:32px}}.tk-summary{padding:8px 12px 12px}.tk-summary .tabs{align-items:center}.tk-summary .tabs button.small{min-height:var(--tap)}.tk-summary .summary-note{margin-left:auto}.tk-summary .warn{margin:0 0 8px}.tk-summary h3{font-size:var(--fs-body);margin:12px 0 6px}.tk-summary table.summary{font-size:var(--fs-body)}@media (pointer:fine){.tk-seg-btn,.tk-filter-on,.tk-excel,.tk-summary .tabs button.small{min-height:32px}}@media (orientation:portrait){.tk-seg-btn{padding:0 10px}.tk-filter-on{max-width:200px}}.tk-drag-guide{z-index:35;pointer-events:none;box-sizing:border-box;border-top:3px solid var(--primary);background:#fff9;justify-content:center;align-items:flex-start;display:flex;position:fixed;box-shadow:0 -2px 10px #0000002e}.tk-drag-guide-label{background:var(--primary);color:#fff;font-size:var(--fs-sub);white-space:nowrap;border-radius:12px;margin-top:6px;padding:2px 10px;font-weight:600}.mb-wrap{z-index:30;pointer-events:none;justify-content:center;transition:right .15s,bottom .15s;display:flex;position:absolute;left:8px}.mb-bar{pointer-events:auto;border:1px solid var(--line);touch-action:manipulation;scrollbar-width:none;background:#fffffff7;border-radius:14px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 12px;max-width:100%;padding:6px 6px 6px 14px;display:flex;overflow-x:auto;box-shadow:0 4px 14px #0000002e}.mb-bar::-webkit-scrollbar{display:none}.mb-bar>button{flex:none;align-items:center;gap:4px;display:inline-flex}.mb-figure{flex-direction:column;flex:none;justify-content:center;max-width:100%;margin-right:4px;line-height:1.15;display:inline-flex}.mb-figure>*{text-overflow:ellipsis;max-width:100%;overflow:hidden}.mb-big{color:var(--text);white-space:nowrap;font-size:22px;font-weight:700}.mb-from{font-size:18px}.mb-small{font-size:var(--fs-sub);color:var(--muted);white-space:nowrap}.mb-ellipsis{text-overflow:ellipsis;max-width:320px;overflow:hidden}.mb-warn{color:#9a5b00;white-space:nowrap;align-items:center;gap:6px;margin-right:4px;font-weight:700;display:inline-flex}@media (width<=700px){.mb-bar{column-gap:12px;padding-left:10px}.mb-big{font-size:19px}.mb-ellipsis{display:none}}.nt-wrap{z-index:40;pointer-events:none;justify-content:center;padding:0 12px;display:flex;position:absolute;top:10px;left:0}.nt-toast{pointer-events:auto;color:#fff;touch-action:manipulation;background:#1c2430;border-radius:12px;align-items:center;gap:12px;max-width:min(640px,100%);padding:4px 4px 4px 16px;font-size:15px;line-height:1.35;animation:.18s ease-out nt-in;display:flex;box-shadow:0 6px 18px #00000047}.nt-text{white-space:normal;min-width:0;padding:8px 0}.nt-toast button{min-height:var(--tap);min-width:var(--tap);border-radius:10px;flex:none;justify-content:center;align-items:center;gap:4px;font-size:15px;display:inline-flex}.nt-action{color:var(--primary);background:#fff;border-color:#fff;padding:0 14px;font-weight:700}.nt-close{color:#fff;background:0 0;border-color:#0000;padding:0}.nt-close:hover{background:#ffffff1f}@keyframes nt-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.nt-toast{animation:none}}.palette.pl-root{background:var(--panel);flex-direction:column;gap:8px;padding:8px;display:flex;overflow:auto}.pl-top{flex-direction:column;gap:6px;display:flex}.pl-ptabs{display:none}.pl-ctx{width:100%;min-height:var(--tap);text-align:left;font-size:var(--fs-sub);background:var(--surface-2);border-color:var(--line);justify-content:space-between;align-items:center;gap:6px;padding:0 10px;display:flex}.pl-ctx-text{text-overflow:ellipsis;min-width:0;overflow:hidden}.pl-ctx-text strong{font-weight:600}.pl-ctx-empty,.pl-ctx svg{color:var(--muted)}.pl-ctx-edit{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);flex-direction:column;gap:6px;padding:8px;display:flex}.pl-ctx-field{font-size:var(--fs-sub);color:var(--muted);align-items:center;gap:6px;display:flex}.pl-ctx-field span{flex:none;width:2.5em}.pl-ctx-field input{min-width:0;min-height:var(--tap);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);background:#fff;flex:1;padding:0 8px;font-size:16px}.pl-ctx-actions{justify-content:flex-end;gap:12px;display:flex}.pl-sec{flex-direction:column;gap:6px;display:flex}.pl-head{color:var(--text);margin:2px 0 0;font-size:14px;font-weight:700}.pl-head-sub{color:var(--muted);font-size:12px;font-weight:400}.pl-tiles{grid-template-columns:1fr 1fr;gap:6px;display:grid}.pl-tile{width:100%;min-width:0;min-height:var(--tap);text-align:left;white-space:normal;align-items:center;gap:6px;padding:4px 6px;display:flex}.pl-mark{white-space:nowrap;background:#fff;border:2px solid;border-radius:6px;flex:none;justify-content:center;align-items:center;min-width:28px;height:24px;padding:0 2px;font-size:11px;font-weight:700;display:inline-flex}.pl-name{-webkit-line-clamp:2;word-break:break-all;-webkit-box-orient:vertical;flex:1;min-width:0;font-size:12px;line-height:1.2;display:-webkit-box;overflow:hidden}.pl-count{color:var(--text);flex:none;font-size:13px;font-weight:700}.pl-count small{color:#9a5b00;margin-left:1px;font-size:11px;font-weight:600}.pl-wires{flex-direction:column;gap:4px;display:flex}.pl-wire{width:100%;min-height:var(--tap);text-align:left;align-items:center;gap:8px;padding:0 8px;display:flex}.pl-wire .pl-name{-webkit-line-clamp:1;font-size:13px}.pl-swatch{border:1px solid #00000026;border-radius:50%;flex:none;width:14px;height:14px}.pl-swatch-big{width:20px;height:20px}.pl-len{flex:none;font-size:13px;font-weight:600}.pl-tag{color:var(--primary);background:var(--primary-weak);border-radius:6px;padding:1px 6px;font-size:11px;font-weight:600}.pl-tile[aria-pressed=true],.pl-wire[aria-pressed=true],.pl-mini[aria-pressed=true]{background:var(--primary-weak);border-color:var(--primary);color:var(--primary);border-width:2px;font-weight:600}.pl-more{width:100%;min-height:var(--tap);font-size:var(--fs-sub);color:var(--muted);background:0 0;border-style:dashed;justify-content:center;align-items:center;gap:4px;display:flex}.pl-edit{width:100%;font-size:var(--fs-sub);color:var(--primary);background:0 0;border-color:#0000;justify-content:center;align-items:center;gap:4px;display:flex}@media (pointer:fine){.pl-more,.pl-edit{min-height:36px}}.palette.pl-root.pl-collapsed{align-items:stretch;gap:4px;padding:4px}.pl-mini{width:100%;min-width:0;min-height:var(--tap);justify-content:center;align-items:center;padding:0;display:flex}.pl-mini-sep{background:var(--line);flex:none;height:1px;margin:4px 2px}@media (orientation:portrait){.palette.pl-root{flex-flow:row;align-items:center;gap:8px;max-height:120px;padding:6px 8px;overflow:auto hidden}.pl-top{flex-direction:row;flex:none;align-items:center}.pl-ptabs{border:1px solid var(--line);border-radius:calc(var(--radius) + 1px);background:var(--surface-2);flex:none;padding:1px;display:inline-flex}.pl-ptab{background:0 0;border-color:#0000;padding:0 12px}.pl-ptab[aria-selected=true]{background:var(--primary);color:#fff;font-weight:600}.pl-ctx{flex:none;width:auto;max-width:220px}.pl-ctx-edit{flex-direction:row;flex:none;align-items:center;padding:4px 6px}.pl-ctx-field input{flex:none;width:120px}.pl-sec{flex-direction:row;flex:none;align-items:center}.palette.pl-root[data-ptab=symbols] .pl-sec-wires,.palette.pl-root[data-ptab=wires] .pl-sec-symbols,.pl-head{display:none}.pl-tiles,.pl-wires{flex-direction:row;flex:none;gap:6px;display:flex}.pl-tile{flex:none;width:auto;min-width:116px;max-width:170px}.pl-wire{flex:none;width:auto}.pl-wire .pl-name{max-width:140px}.pl-more,.pl-edit{flex:none;width:auto;padding:0 10px}.palette.pl-root.pl-collapsed{flex-direction:row}.pl-mini{width:var(--tap);flex:none}.pl-mini-sep{width:1px;height:28px;margin:0 4px}}.pp-body{padding-bottom:calc(24px + var(--kb,0px));flex-direction:column;gap:4px;display:flex;container-type:inline-size}.pp-collapsed{text-align:center;color:var(--muted);font-variant-numeric:tabular-nums;padding:8px 0;font-weight:700}.pp-head{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}.pp-head strong{font-size:15px}.pp-spacer{flex:1}.pp-head button{align-items:center;gap:4px;display:inline-flex}.pp-status{border-radius:6px;padding:0 6px;font-size:11px;font-weight:700;line-height:20px}.pp-status-accepted{color:var(--ok);background:#e3f1e4}.pp-status-proposed{color:#7a5200;background:#fff1cc;border:1px dashed #b98a2a}.pp-status-rejected{color:var(--muted);background:#eceff3}.pp-mark{background:#fff;border:2px solid;border-radius:6px;flex:none;justify-content:center;align-items:center;min-width:28px;height:24px;padding:0 3px;font-size:12px;font-weight:700;line-height:1;display:inline-flex}.pp-band{background:#fff5d6;border:1px solid #f2d59a;border-radius:10px;flex-direction:column;gap:8px;margin-bottom:8px;padding:8px 10px;display:flex}.pp-band-text{font-size:var(--fs-sub);flex-direction:column;gap:2px;display:flex}.pp-band-text strong{color:#7a5200}.pp-band-note{color:var(--muted);word-break:break-all}.pp-judge{flex-wrap:wrap;gap:12px;display:flex}.pp-judge button{flex:1;justify-content:center;align-items:center;gap:4px;display:inline-flex}.pp-length{margin-bottom:4px}.pp-big{font-size:22px;font-weight:700}.pp-formula{color:var(--muted);font-size:12px;line-height:1.5}.pp-route{font-size:var(--fs-sub);word-break:break-all;margin:0 0 8px}.pp-field{margin-bottom:10px}.pp-field select{width:100%;min-height:var(--tap);border:1px solid var(--line);color:var(--text);background:#fff;border-radius:8px;padding:0 10px;font-size:16px}.pp-field input[aria-invalid=true]{border-color:var(--danger);background:#fff6f5}.pp-error{color:var(--danger);font-size:12px;font-style:normal}.pp-hint{color:var(--muted);font-size:12px}.pp-warn-text{color:#8a4b00}.pp-select-wrap{align-items:center;gap:8px;display:flex}.pp-select-wrap select{flex:1;min-width:0}.pp-dot{border:1px solid #00000026;border-radius:50%;flex:none;width:14px;height:14px}.pp-stepper{align-items:center;gap:8px;display:flex}.pp-stepper strong{text-align:center;min-width:56px;font-size:18px}.pp-stepper button{justify-content:center;align-items:center;padding:0;display:inline-flex}.pp-pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pp-pair .field input{width:100%}@container (width<=220px){.pp-pair{grid-template-columns:1fr}}.pp-auto{align-self:flex-start;margin-bottom:10px}.pp-facts{font-size:var(--fs-sub);grid-template-columns:auto 1fr;gap:4px 10px;margin:0 0 10px;display:grid}.pp-facts dt{color:var(--muted)}.pp-facts dd{margin:0}.pp-danger{color:var(--danger);font-weight:700}.pp-section{border-top:1px solid var(--line);margin-top:4px;padding-top:8px}.pp-section h3{margin:0 0 8px}.pp-check{min-height:var(--tap);font-size:var(--fs-sub);align-items:center;gap:8px;display:flex}.pp-check input{width:22px;height:22px}.pp-actions{flex-wrap:wrap;gap:12px;margin-top:6px;display:flex}.pp-actions button{align-items:center;gap:4px;display:inline-flex}.pp-tip{margin-top:6px}@media (orientation:portrait){.pp-pair{grid-template-columns:1fr 1fr}}.ai-panel{flex-direction:column;gap:10px;display:flex}.ai-panel h3{margin:0 0 4px;font-size:15px}.ai-lead{margin:0}.ai-note{color:#7a4a00;background:#fff5e0;border:1px solid #f2d59a;border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px;margin:0;padding:8px 10px;font-size:13px;display:flex}.ai-step{border:1px solid var(--line);border-radius:var(--radius,8px);background:var(--panel,#fff)}.ai-step>summary{min-height:var(--tap,44px);cursor:pointer;align-items:center;gap:8px;padding:0 10px;font-weight:600;list-style:none;display:flex}.ai-step>summary::-webkit-details-marker{display:none}.ai-step>summary:after{content:"▾";color:var(--muted);margin-left:auto;font-weight:400}.ai-step[open]>summary:after{content:"▴"}.ai-step-no{background:var(--primary-weak);width:24px;height:24px;color:var(--primary);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:13px;display:inline-flex}.ai-step-no.done{background:var(--ok);color:#fff}.ai-step-title{white-space:nowrap}.ai-step-meta{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-weight:400;overflow:hidden}.ai-step-body{flex-direction:column;gap:8px;padding:4px 12px 12px;display:flex}.ai-step-body p{margin:0}.ai-step-body>button,.ai-step-body .row>button{align-self:flex-start;align-items:center;gap:6px;display:inline-flex}.ai-step.ai-off{opacity:.55}.ai-textarea{font:inherit;border:1px solid var(--line);resize:vertical;min-height:var(--tap,44px);border-radius:8px;padding:8px;font-size:15px}.ai-prompt{background:var(--surface-2,#f3f5f7);border:1px dashed var(--line);-webkit-user-select:all;user-select:all;word-break:break-all;border-radius:8px;padding:8px 10px;font-size:13px;line-height:1.5}.ai-busy{margin:0}.ai-error{flex-direction:column;gap:2px;display:flex}.ai-result{flex-direction:column;gap:4px;display:flex}.ai-result ul{margin:4px 0 0;padding-left:18px}.ai-result summary{cursor:pointer;min-height:var(--tap,44px);align-items:center;display:flex}.ai-section{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding-top:10px;display:flex}.ai-section p{margin:0}.ai-count-table{border-collapse:collapse;width:100%;font-size:13px}.ai-count-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:4px 6px;font-weight:600}.ai-count-table td{height:var(--tap,44px);border-bottom:1px solid var(--line);padding:0 6px}.ai-count-table th.num,.ai-count-table td.num{text-align:right;font-variant-numeric:tabular-nums}.ai-count-table tbody tr{cursor:pointer}.ai-count-table tbody tr:hover,.ai-count-table tbody tr:focus-visible{background:var(--primary-weak);outline:none}.ai-count-mismatch td{color:#8c1d18;background:#fdecea;font-weight:600}.ai-count-match td:last-child{color:var(--ok)}.ai-count-noText td:last-child{color:var(--muted)}@media (pointer:fine){.ai-count-table td{height:32px}}.ai-sug{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:6px 0;display:flex}.ai-sug-body{flex:1;min-width:0;font-size:14px}.ai-sug-tag{background:var(--primary-weak);color:var(--primary);border-radius:6px;margin-right:4px;padding:1px 6px;font-size:11px;display:inline-block}.ai-sug-actions{flex:none;gap:16px;display:flex}.ai-sug-actions button{min-height:var(--tap,44px);min-width:var(--tap,44px)}@media (pointer:fine){.ai-sug-actions button{min-height:32px}}.ai-check-counts{flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;display:flex}.ai-chip{min-height:var(--tap,44px);color:#6b4e00;background:#fff3c4;border:1px solid #e6c65c;border-radius:999px;padding:0 10px;font-size:13px}.ai-chip.ai-chip-low{color:#8a5300;background:#fff5e0;border-color:#f2d59a}.ai-chip-static{color:#8a5300;background:#fff5e0;border-radius:999px;padding:2px 10px;font-size:13px}.ai-order{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ai-check-main{flex-wrap:wrap;gap:12px;display:flex}.ai-check-main button{min-height:var(--tap-main,52px);flex:160px;justify-content:center;align-items:center;gap:6px;display:inline-flex}.ai-check-bulk{justify-content:flex-end;gap:16px;margin-top:4px;display:flex}.ai-check-bulk button.danger{color:var(--danger)}@media (pointer:fine){.ai-chip,.ai-result summary,.ai-step>summary{min-height:32px}}.ai-count-double td{color:#7a4800;background:#fff5e0;font-weight:600}.ro-panel{font-size:var(--fs-body);color:var(--text);flex-direction:column;gap:12px;display:flex}.ro-intro{font-size:var(--fs-sub);color:var(--muted);margin:0;line-height:1.5}.ro-panel .sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ro-sec{border:1px solid var(--line);background:var(--panel);border-radius:10px;flex-direction:column;gap:8px;padding:10px 12px 12px;display:flex}.ro-sec h3{align-items:center;gap:6px;margin:0;font-size:15px;display:flex}.ro-sec[data-tone=attention]{border-color:var(--attention);box-shadow:inset 4px 0 0 var(--attention)}.ro-sec[data-tone=warn]{border-color:#f2d59a;box-shadow:inset 4px 0 #e0a100}.ro-sec[data-tone=ok]{box-shadow:inset 4px 0 0 var(--ok)}.ro-notext{background:var(--surface-2)}.ro-notext p{margin:0;line-height:1.5}.ro-row{width:100%;min-height:var(--tap);text-align:left;white-space:normal;background:var(--surface-2);font-size:var(--fs-body);border:1px solid #0000;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;display:flex}.ro-row:hover:not(:disabled){border-color:var(--primary)}.ro-row:disabled{opacity:1;cursor:default}.ro-kv>span{align-items:baseline;gap:8px;display:flex}.ro-k{min-width:5em;color:var(--muted);font-size:12px;display:inline-block}.ro-headline{flex-wrap:wrap;align-items:center;gap:6px;font-size:15px;display:flex}.ro-reason{font-size:var(--fs-sub);color:var(--muted);line-height:1.45}.ro-sub{color:var(--muted);font-size:12px;font-weight:400}.ro-tag{background:var(--primary-weak);color:var(--primary);border-radius:6px;padding:0 6px;font-size:11px;font-weight:600;line-height:18px;display:inline-block}.ro-tag-ok{color:var(--ok);background:#e6f2e7}.ro-tag-attention{color:#6b5100;background:#fff3c4}.ro-warn{color:#7a4a00;font-size:var(--fs-sub);background:#fff5e0;border:1px solid #f2d59a;border-radius:8px;align-items:flex-start;gap:6px;margin:0;padding:8px 10px;line-height:1.5;display:flex}.ro-warn svg{flex:none;margin-top:2px}.ro-actions{flex-wrap:wrap;gap:12px;display:flex}.ro-actions button{align-items:center;gap:6px;display:inline-flex}.ro-note{margin:0;font-size:12px;line-height:1.5}.ro-note ul{margin:4px 0 0;padding-left:18px}.ro-foot{text-align:right;margin:0}.ro-stepper{font-size:var(--fs-sub);color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;padding:4px 0;display:flex}.ro-stepper button{align-items:center;gap:2px;display:inline-flex}.ro-chips{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.ro-chip{border:1px solid var(--line);background:var(--panel);border-radius:10px;align-items:stretch;display:flex;overflow:hidden}.ro-chip[data-existing=true]{background:var(--surface-2)}.ro-chip-check{min-width:var(--tap);min-height:var(--tap);color:var(--ok);cursor:pointer;justify-content:center;align-items:center;display:flex}.ro-chip-check input{cursor:pointer;width:20px;height:20px;margin:0}.ro-chip-name{border:0;border-left:1px solid var(--line);font-size:var(--fs-body);background:0 0;border-radius:0;align-items:center;gap:6px;padding:0 12px 0 10px;display:inline-flex}.ro-table{border-collapse:collapse;width:100%;font-size:var(--fs-sub)}.ro-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:4px 6px;font-size:12px;font-weight:600}.ro-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:0 6px}.ro-table .num{text-align:right;font-variant-numeric:tabular-nums}.ro-table tr[data-active=true] td{background:var(--primary-weak)}.ro-table tr[data-judge=mismatch] .ro-judge{color:var(--danger);font-weight:600}.ro-table tr[data-judge=match] .ro-judge{color:var(--ok);font-weight:600}.ro-col-check{width:var(--tap);padding:0!important}.ro-cell-check{min-width:var(--tap);min-height:var(--tap);cursor:pointer;justify-content:center;align-items:center;display:flex}.ro-cell-check input{cursor:pointer;width:20px;height:20px;margin:0}.ro-cell-btn{width:100%;min-height:var(--tap);text-align:left;white-space:normal;font-size:var(--fs-sub);background:0 0;border:0;border-radius:0;flex-direction:column;justify-content:center;align-items:flex-start;padding:2px 0;display:flex}.ro-cell-btn:hover strong{text-decoration:underline}.ro-judge{font-size:12px;line-height:1.3}@media (pointer:fine){.ro-chip-check,.ro-cell-check{min-width:36px;min-height:36px}.ro-cell-btn{min-height:36px}.ro-col-check{width:36px}}.tb-pop{z-index:45;background:var(--panel);min-width:220px;max-width:min(360px,100vw - 8px);max-height:min(70vh,520px);color:var(--text);border:1px solid var(--line);font-size:var(--fs-body);-webkit-user-select:none;user-select:none;touch-action:manipulation;border-radius:12px;flex-direction:column;gap:2px;padding:6px;display:flex;overflow:auto;box-shadow:0 8px 24px #0003}.tb-pop-item{text-align:left;width:100%;min-height:var(--tap);border-radius:var(--radius);background:0 0;border-color:#0000;justify-content:flex-start;align-items:center;gap:10px;padding:0 12px;display:flex}.tb-pop-item:not(:disabled):hover{background:var(--surface-2)}.tb-pop-item[aria-checked=true]{background:var(--primary-weak);color:var(--primary);font-weight:600}.tb-pop-sep{background:var(--line);flex:none;height:1px;margin:4px 2px}.tb-pop-head{font-size:var(--fs-sub);color:var(--muted);white-space:normal;padding:6px 8px 2px}@media (pointer:fine){.tb-pop-item{min-height:36px}}table.tb-keys{border-collapse:collapse;width:100%;font-size:var(--fs-body)}.tb-keys th,.tb-keys td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:6px 4px}.tb-keys th{white-space:nowrap;width:1%;padding-right:12px;font-weight:400}.tb-keys kbd{border:1px solid var(--line);background:var(--surface-2);border-bottom-width:2px;border-radius:4px;padding:1px 6px;font:600 12px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;display:inline-block}.statusbar.sb-root{white-space:nowrap;min-width:0;font-size:var(--fs-sub);color:var(--text);align-items:center;gap:8px;padding:0 6px 0 8px;display:flex;overflow:hidden}.sb-mode{background:var(--primary);color:#fff;height:24px;font-weight:700;font-size:var(--fs-sub);letter-spacing:.02em;border-radius:12px;flex:none;align-items:center;padding:0 10px;display:inline-flex}.sb-left{flex:auto;align-items:center;gap:6px;min-width:0;display:flex}.sb-mid{flex:0 auto;align-items:center;gap:10px;min-width:0;max-width:42%;display:flex}.sb-right{flex:none;align-items:center;gap:4px;display:flex}.sb-mid:empty{display:none}.sb-hint{text-overflow:ellipsis;min-width:0;color:var(--text);font-size:14px;overflow:hidden}.sb-warn{color:#9a5b00;font-weight:600}.sb-step{flex:none}.sb-info{text-overflow:ellipsis;min-width:0;color:var(--text);align-items:center;gap:4px;display:inline-flex;overflow:hidden}.sb-info svg{flex:none}.sb-hover{color:var(--muted)}.sb-snap{color:var(--primary);flex:none;font-weight:600}.sb-live{flex:none}.sb-live strong{font-size:15px}.sb-sub{color:var(--muted);font-size:12px}.sb-btn{align-items:center;gap:4px;padding:0 8px;display:inline-flex}.sb-zoom{justify-content:center;min-width:64px}.sb-toggle{color:var(--muted)}.sb-toggle[aria-pressed=true]{background:var(--primary-weak);color:var(--primary);border-color:var(--primary);font-weight:600}.sb-toggle[aria-pressed=false] .sb-word-always{text-decoration:line-through;text-decoration-thickness:1px}.sb-key{display:none}.sb-scale{font-weight:600}.sb-tone-danger.sb-scale{color:var(--danger);background:#fdecea;border-color:#e7b3b3}.sb-tone-attention.sb-scale{color:#6b4e00;border-color:var(--attention);background:#fff5d6}strong.sb-tone-danger{color:var(--danger)}strong.sb-tone-attention{color:#6b4e00}.sb-scale-pop .tb-pop-head div{margin-top:2px}@media (pointer:fine) and (width>=1280px){.sb-key{color:inherit;opacity:.7;border:1px solid;border-radius:3px;padding:1px 3px;font:600 10px/1 ui-monospace,SFMono-Regular,Menlo,monospace;display:inline-block}}@media (width<=999px){.sb-word,.sb-toggle svg{display:none}.sb-mid{max-width:34%}}@media (width<=700px){.sb-mid,.sb-scale svg{display:none}}.sb-mode[data-tool=symbol]{background:#2e7d32}.sb-mode[data-tool=trace]{background:#c43e00}.sb-mode[data-tool=measure]{background:#00838f}.sb-mode[data-tool=scale]{background:#1f4e79}.sb-mode[data-tool=connect]{background:#6a1b9a}.vw-menu-btn{align-items:center;gap:6px;display:inline-flex;position:relative}.vw-menu-dot{background:var(--attention);border:1.5px solid #fff;border-radius:50%;width:9px;height:9px;position:absolute;top:6px;right:6px}@media (orientation:portrait) and (width<=900px){.vw-menu-btn-label{font-size:11px}}.vw-panel{z-index:40;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--panel);width:min(380px,100vw - 16px);color:var(--text);border:1px solid var(--line);font-size:var(--fs-body);touch-action:pan-y;border-radius:12px;padding:4px 14px 12px;position:fixed;overflow-y:auto;box-shadow:0 10px 32px #00000038}.vw-panel-head{z-index:1;background:var(--panel);border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:4px 0;display:flex;position:sticky;top:0}.vw-panel-head strong{font-size:16px}.vw-panel-page{min-width:0;color:var(--muted);font-size:var(--fs-sub);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.vw-close{flex:none}.vw-note{background:var(--surface-2);color:var(--muted);font-size:var(--fs-sub);border-radius:8px;margin:8px 0 4px;padding:8px 10px}.vw-section{padding:10px 0 2px}.vw-section+.vw-section{border-top:1px solid var(--line)}.vw-section-title{font-size:var(--fs-sub);color:var(--muted);margin:0 0 6px;font-weight:700}.vw-hint{color:var(--muted);margin-top:6px;font-size:12.5px;line-height:1.5}.vw-hint button{margin-left:6px}.vw-empty{color:var(--muted);font-size:var(--fs-sub);padding:4px 0}.vw-seg{border:1px solid var(--line);border-radius:8px;gap:0;display:flex;overflow:hidden}.vw-seg button{background:var(--panel);min-width:0;font-size:var(--fs-sub);border:none;border-radius:0;flex:1;padding:0 6px}.vw-seg button+button{border-left:1px solid var(--line)}.vw-seg button.active{background:var(--primary);color:#fff;font-weight:700}.vw-toggles{flex-wrap:wrap;gap:8px;display:flex}.vw-toggles button{flex:1;justify-content:center;align-items:center;gap:6px;display:inline-flex}.vw-toggles button:not(.active){color:var(--muted)}.vw-legend{margin:0;padding:0;list-style:none}.vw-legend li{min-height:var(--tap);border-bottom:1px dashed var(--line);align-items:center;gap:8px;display:flex}.vw-legend li:last-child{border-bottom:none}.vw-legend li.vw-off .vw-legend-name,.vw-legend li.vw-off .vw-legend-val,.vw-legend li.vw-off .vw-line-sample{opacity:.4}.vw-eye{color:var(--muted);flex:none;padding:0}.vw-legend li:not(.vw-off) .vw-eye{color:var(--primary)}.vw-line-sample{border-radius:2px;flex:none;width:22px;height:4px}.vw-legend-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.vw-legend-val{text-align:right;flex-direction:column;flex:none;align-items:flex-end;font-weight:600;line-height:1.25;display:flex}.vw-legend-sub{color:var(--muted);font-size:12px;font-weight:400}.vw-mark{white-space:nowrap;background:#fff;border:2px solid;border-radius:4px;flex:none;justify-content:center;align-items:center;width:26px;height:22px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.vw-mark--circle{border-radius:50%;width:24px;height:24px}.vw-mark--square{width:22px}.vw-mark--diamond{width:20px;height:20px;margin:0 3px;transform:rotate(45deg)}.vw-mark--diamond>span{transform:rotate(-45deg)}.vw-mark--unknown{color:#757575;border-color:#757575}.vw-guide{margin:0;padding:0;list-style:none}.vw-guide li{font-size:var(--fs-sub);align-items:center;gap:8px;padding:5px 0;line-height:1.4;display:flex}.vw-guide-line{border-top:3px solid #e53935;flex:none;width:28px;height:0}.vw-guide-line--dash{border-top-style:dashed}.vw-badge{color:#fff;background:#1f2933;border-radius:3px;flex:none;justify-content:center;align-items:center;min-width:20px;height:16px;padding:0 3px;font-size:10px;font-weight:700;display:inline-flex}.vw-badge--low{color:#1f2933;background:#f5b700}.vw-guide-sel{background:#e53935;border-radius:3px;flex:none;width:22px;height:14px;margin:0 4px;box-shadow:0 0 0 3px #fff,0 0 0 4px #1f2933}.vw-guide-label{background:#fff;border:1.5px solid #e53935;border-radius:4px;flex:none;padding:0 5px;font-size:11px;line-height:14px}.vw-panel-foot{border-top:1px solid var(--line);justify-content:flex-end;margin-top:6px;padding-top:10px;display:flex}@media (pointer:fine){.vw-seg button,.vw-toggles button,.vw-panel-foot button,.vw-close,.vw-eye{min-height:32px}.vw-close,.vw-eye{min-width:32px}.vw-legend li{min-height:34px}}.toolbar.tb-root{white-space:nowrap;align-items:center;gap:4px;min-width:0;padding:0 6px;display:flex;overflow:hidden}.tb-group{flex:none;align-items:center;gap:4px;min-width:0;display:flex}.tb-sep{background:var(--line);flex:none;width:1px;height:28px;margin:0 2px}.tb-spacer{flex:1 1 0;min-width:0}.tb-btn{min-height:var(--tap);min-width:var(--tap);font-size:var(--fs-body);border-radius:var(--radius);color:var(--text);background:0 0;border-color:#0000;justify-content:center;align-items:center;gap:4px;padding:0 8px;display:inline-flex;position:relative}.tb-btn:not(:disabled):hover{background:var(--surface-2)}.tb-btn.tb-icon{padding:0}.tb-label{line-height:1.1}.tb-label-portrait,.tb-key{display:none}.tb-group-project{flex:0 auto;min-width:44px}.tb-project{flex-direction:column;justify-content:center;min-width:0;line-height:1.2;display:flex}.tb-title{font-weight:600;font-size:var(--fs-body);text-overflow:ellipsis;max-width:220px;overflow:hidden}.tb-save{color:var(--muted);align-items:center;gap:3px;font-size:12px;display:inline-flex}.tb-save-ok{color:var(--ok)}.tb-save-busy{color:var(--muted)}.tb-save-error{color:var(--danger);font-weight:700}button.tb-project-error{min-height:var(--tap);border-radius:var(--radius);text-align:left;background:#fdecea;border:1px solid #e7b3b3;align-items:flex-start;min-width:0;padding:0 8px}.tb-back-dot{background:var(--danger);border:2px solid var(--panel);border-radius:50%;width:10px;height:10px;position:absolute;top:6px;right:6px}.tb-pager{flex:0 auto;gap:0}.tb-page{align-items:baseline;gap:6px;min-width:0;padding:0 2px;display:inline-flex}.tb-page-no{flex:none;font-weight:600}.tb-page-name{font-size:var(--fs-sub);color:var(--muted);text-overflow:ellipsis;min-width:0;max-width:180px;overflow:hidden}.tb-tools{border:1px solid var(--line);border-radius:calc(var(--radius) + 1px);background:var(--surface-2);gap:0;padding:1px}.tb-tools .tb-tool{border-radius:var(--radius)}.tb-tools .tb-tool+.tb-tool{margin-left:1px}.tb-tool[aria-pressed=true],.tb-tool[aria-pressed=true]:not(:disabled):hover{background:var(--primary);color:#fff;font-weight:600}.tb-tool[aria-pressed=true] .tb-key{color:#fff;border-color:#ffffff80}.tb-takeoff[aria-pressed=true]{background:var(--primary-weak);color:var(--primary);font-weight:600}.tb-badge{background:var(--accent);color:#1c2430;text-align:center;border-radius:11px;min-width:22px;padding:0 6px;font-size:12px;font-weight:700;line-height:22px;display:inline-block}.tb-ops{gap:2px}.tb-view{align-items:center;display:inline-flex}.tb-view>button{min-height:var(--tap);min-width:var(--tap);font-size:var(--fs-body);border-radius:var(--radius);gap:4px;padding:0 8px}.tb-view>button:not(.active){background:0 0;border-color:#0000}.tb-view>button:not(.active):not(:disabled):hover{background:var(--surface-2)}.tb-more{padding:0}@media (pointer:fine){.tb-btn,.tb-view>button{min-width:36px;min-height:36px}}@media (pointer:fine) and (width>=1280px){.tb-key{color:var(--muted);border:1px solid var(--line);border-radius:4px;margin-left:2px;padding:2px 4px;font:600 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace;display:inline-block}}@media (width<=1279px){.tb-label-wide,.tb-save-word{display:none}}@media (width<=999px){.tb-label-mid,.tb-page-name{display:none}}@media (width<=1099px) and (orientation:landscape){.tb-btn,.tb-view>button{padding:0 6px}}@media (width<=999px) and (orientation:landscape){.tb-tools .tb-label,.tb-takeoff .tb-label{display:none}}@media (orientation:portrait){.toolbar.tb-root{gap:2px;padding:0 4px}.tb-btn{flex-direction:column;gap:1px;padding:2px 4px;font-size:10px}.tb-btn .tb-label,.tb-btn .tb-label-wide,.tb-btn .tb-label-mid,.tb-btn .tb-label-portrait{font-size:10px;display:block}.tb-project{display:none}.tb-group-project{flex:none}.tb-page-name,.tb-key{display:none}.tb-sep{margin:0 1px}.tb-takeoff .tb-badge{min-width:18px;padding:0 4px;font-size:11px;line-height:18px;position:absolute;top:0;right:-2px}.tb-view button{flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:2px 4px;font-size:10px;display:inline-flex}}@media (orientation:portrait) and (width<=700px){.tb-btn .tb-label,.tb-btn .tb-label-wide,.tb-btn .tb-label-mid,.tb-btn .tb-label-portrait{display:none}}.list-screen.app-list{max-width:820px}.list-screen.app-list[data-update]{padding-bottom:calc(140px + env(safe-area-inset-bottom,0))}.app-list .app-list-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:16px;display:flex}.app-list-title{flex-direction:column;gap:4px;min-width:0;display:flex}.app-list-title h1{margin:0;font-size:22px}.app-offline{font-size:var(--fs-sub);color:var(--ok);background:#e8f3e9;border-radius:999px;align-self:flex-start;align-items:center;gap:4px;padding:2px 10px 2px 8px;display:inline-flex}.app-list-actions{flex-wrap:wrap;gap:12px;display:flex}.app-list-actions button,.app-empty-actions button{align-items:center;gap:6px;display:inline-flex}.app-new{min-height:var(--tap-main);padding:0 18px}.app-busy{color:var(--muted);font-size:var(--fs-sub);margin:0 0 12px}.app-error{color:var(--danger);background:#fdecea;border:1px solid #f1c0bb;border-radius:10px;align-items:flex-start;gap:10px;margin:0 0 12px;padding:8px 4px 8px 12px;display:flex}.app-error>svg{margin-top:3px}.app-error-text{flex:1;min-width:0;padding-top:2px}.app-error-title{font-weight:700}.app-error-hint{color:var(--text);font-size:var(--fs-sub);margin-top:2px}.app-error-close{color:var(--danger);background:0 0;border-color:#0000;padding:0}.app-cards{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.app-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}.app-card[data-expanded]{border-color:var(--primary)}.app-card-main{align-items:stretch;display:flex}.app-card-open{text-align:left;white-space:normal;background:0 0;border:0;border-radius:0;flex:1;align-items:center;gap:12px;min-width:0;min-height:72px;padding:12px 8px 12px 16px;display:flex}.app-card-open:hover:not(:disabled){background:var(--surface-2)}.app-card-open:active:not(:disabled){background:var(--primary-weak)}.app-card-body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.app-card-name{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:17px;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.app-card-meta{color:var(--muted);font-size:var(--fs-sub)}.app-dot{margin:0 2px}.app-card-stats{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.app-stat{font-size:var(--fs-sub);color:var(--text);background:var(--surface-2);border:1px solid var(--line);white-space:nowrap;border-radius:999px;padding:2px 10px}.app-stat b{margin:0 2px;font-size:15px}.app-stat-proposed{color:#7a5200;background:#fff5d6;border-color:#f2d59a}.app-card-go{min-height:var(--tap);background:var(--primary);color:#fff;border-radius:10px;flex:none;align-items:center;gap:2px;padding:0 10px 0 14px;font-size:15px;font-weight:700;display:inline-flex}.app-card .app-card-more{border-left:1px solid var(--line);width:52px;min-height:72px;color:var(--muted);border-radius:0;flex:none;padding:0}.app-card .app-card-more[aria-expanded=true]{background:var(--primary-weak);color:var(--primary)}.app-card-menu{border-top:1px solid var(--line);background:var(--surface-2);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;display:flex}.app-card-menu button{align-items:center;gap:6px;display:inline-flex}.app-card-menu button.danger{margin-left:12px}.app-card-menu-close{margin-left:auto}.app-list-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.app-empty{background:var(--panel);border:1px dashed var(--line);text-align:center;border-radius:12px;padding:28px 20px}.app-empty-lead{margin:0 0 4px;font-size:17px;font-weight:700}.app-empty-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:16px;display:flex}.app-confirm-name{overflow-wrap:anywhere;font-size:16px;font-weight:700}.app-confirm-actions{flex-wrap:wrap;justify-content:flex-end;gap:16px;width:100%;display:flex}.app-danger-fill{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:700}@media (width<=480px){.app-card-go{color:var(--primary);background:0 0;gap:0;padding:0 6px;font-size:0}.app-list-actions{width:100%}.app-list-actions button{flex:1;justify-content:center}}@media (pointer:fine){.app-card-open{min-height:64px}.app-card .app-card-more{width:44px;min-height:64px}}
