:root{--bg:#16130f;--panel:#211c17;--panel-2:#2a241e;--line:#3b332b;--text:#ece4d6;--dim:#a3978a;--accent:#d7a86e;--ok:#43a047;--warn:#ffb300;--err:#e53935;--info:#64b5f6;color:var(--text);background:var(--bg);font-family:Segoe UI,Hiragino Sans,Noto Sans JP,system-ui,sans-serif;font-size:13px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}.app{height:100vh;--left-w:230px;--right-w:360px;--bottom-h:150px;flex-direction:column;height:100dvh;display:flex}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:nowrap;align-items:center;gap:10px;min-height:36px;padding:4px 10px;display:flex;overflow:hidden}.toolbar .brand{color:var(--accent);font-size:16px;font-weight:600}.toolbar .brand span{color:var(--dim);margin-left:6px;font-size:12px;font-weight:400}.toolbar label{color:var(--dim);align-items:center;gap:5px;display:flex}.toolbar .spacer{flex:1}.toolbar .mode-chip{background:var(--panel-2);border:1px solid var(--line);color:var(--accent);border-radius:10px;padding:2px 8px}select,input[type=number],input[type=text],button{background:var(--panel-2);color:var(--text);border:1px solid var(--line);font:inherit;border-radius:4px;padding:3px 6px}button{cursor:pointer}button:hover{border-color:var(--accent)}button.on{border-color:var(--accent);background:#3d2f1f}button.tiny{padding:0 5px;font-size:11px}button.link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}input[type=range]{width:110px;accent-color:var(--accent)}.num{width:86px}.main{flex:1;min-height:0;display:flex}.sidebar{width:var(--left-w);flex:0 0 var(--left-w);background:var(--panel);flex-direction:column;min-width:0;min-height:0;display:flex}.sidebar-body{flex:1;min-height:0;overflow-y:auto}.open-project{border-bottom:1px solid var(--line);background:var(--panel-2);align-items:center;gap:6px;padding:6px 8px;font-size:12px;display:flex}.open-project .doc{color:var(--accent)}.open-project .name{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.tabs{border-bottom:1px solid var(--line);display:flex}.tabs button{background:var(--panel);color:var(--dim);border:none;border-bottom:2px solid #0000;border-radius:0;flex:1;padding:6px 4px}.tabs button.on{color:var(--text);border-bottom-color:var(--accent);background:var(--panel)}.tabs button:hover{color:var(--text)}.palette{padding:8px}.palette h3{color:var(--dim);letter-spacing:.04em;text-transform:uppercase;margin:0 0 6px;font-size:13px;font-weight:600}.library{padding:8px}.library .row{margin-bottom:6px}.library-item{text-align:left;background:var(--panel-2);border-color:#0000;gap:1px;width:100%;margin-bottom:4px;padding:5px 8px;display:grid}.library-item .title{font-size:12px}.library-item .ja{color:var(--dim);font-size:11px}.library-item .desc{color:var(--dim);font-size:10px;line-height:1.3}.library-item.active{border-color:var(--accent);background:#3d2f1f}.library .hint{color:var(--dim);margin:2px 0 6px;font-size:11px;line-height:1.4}.sidepanel{width:var(--right-w);flex:0 0 var(--right-w);background:var(--panel);flex-direction:column;min-width:0;min-height:0;display:flex}.splitter{background:var(--line);cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none;flex:0 0 6px;position:relative}.splitter.bottom{cursor:row-resize;flex:0 0 6px}.splitter.closed{cursor:pointer}.splitter:hover,.splitter:active{background:var(--accent)}.splitter-toggle{z-index:5;width:14px;height:28px;color:var(--dim);background:var(--panel-2);border:1px solid var(--line);text-align:center;border-radius:4px;padding:0;font-size:10px;line-height:26px;position:absolute}.splitter.left .splitter-toggle{top:50%;left:-4px;transform:translateY(-50%)}.splitter.right .splitter-toggle{top:50%;right:-4px;transform:translateY(-50%)}.splitter.bottom .splitter-toggle{width:28px;height:14px;line-height:12px;top:-11px;left:50%;transform:translate(-50%)}.splitter-toggle:hover{color:var(--text);border-color:var(--accent)}.sidepanel-body{flex:1;min-height:0;overflow:auto}.sidepanel .cutlist table{font-size:11px}.sidepanel tr.sel td,.sidepanel li.sel{background:#3d2f1f}.assembly-order ol{columns:2;margin:4px 0 0 18px;padding:0;font-size:12px}.settings .desc{margin:4px 0 10px}.settings select{max-width:100%}.settings .kv>div{min-width:0}.settings .kv{grid-template-columns:80px 1fr}.settings .row{gap:4px}.settings .num{width:72px}.toolbar .project-title{color:var(--dim);white-space:nowrap;text-overflow:ellipsis;max-width:320px;font-size:12px;overflow:hidden}.menu{position:relative}.menu-label .caret{color:var(--dim);margin-left:2px;font-size:10px}.menu.open .menu-label{border-color:var(--accent)}.menu-list{z-index:50;background:var(--panel-2);border:1px solid var(--line);border-radius:6px;min-width:240px;max-width:calc(100vw - 16px);padding:4px;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #00000080}.menu-item{text-align:left;background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;width:100%;padding:5px 8px;display:flex}.menu-item:hover{background:#3d2f1f}.menu-item:disabled{opacity:.4}.menu-item .check{width:12px;color:var(--accent);font-size:11px}.menu-item .text{flex:1}.menu-item .shortcut{color:var(--dim);font-size:11px}.menu-divider{background:var(--line);height:1px;margin:4px 2px}.menu-heading{color:var(--dim);text-transform:uppercase;letter-spacing:.06em;padding:4px 8px 2px;font-size:10px}.view-controls{border:1px solid var(--line);color:var(--dim);background:#211c17e6;border-radius:10px;align-items:center;gap:10px;padding:4px 8px;font-size:12px;display:flex;position:absolute;top:8px;right:8px}.view-controls label{align-items:center;gap:5px;display:flex}.view-controls input[type=range]{width:90px}.group-title{color:var(--dim);text-transform:uppercase;letter-spacing:.06em;margin:10px 0 4px;font-size:11px}.palette-item{text-align:left;background:var(--panel-2);border-color:#0000;grid-template-rows:auto auto;grid-template-columns:12px 1fr auto;gap:0 6px;width:100%;margin-bottom:3px;padding:4px 6px;display:grid}.palette-item .swatch{border-radius:2px;grid-row:1/span 2;width:10px;height:100%}.palette-item .ja{font-size:14px}.palette-item .romaji{color:var(--dim);font-size:11px}.palette-item .sec{color:var(--dim);grid-area:1/3/span 2;align-self:center;font-size:11px}.palette-item.active{border-color:var(--accent);background:#3d2f1f}.palette-item.disabled{opacity:.4;cursor:not-allowed}.palette .hint{color:var(--dim);font-size:11px;line-height:1.4}.viewport{flex:1;min-width:0;position:relative}.viewport canvas{display:block}.viewport-overlay{pointer-events:none;flex-direction:column;gap:4px;display:flex;position:absolute;top:8px;left:8px}.chip{border:1px solid var(--line);color:var(--text);background:#211c17e6;border-radius:10px;padding:3px 8px;font-size:12px}.chip.error{border-color:var(--err);color:#ffbaba}.chip.small{color:var(--dim);margin-left:4px;padding:1px 6px;font-size:10px}.chip.small.err{color:var(--err)}.chip.small.warn{color:var(--warn)}.panel{padding:10px}.panel h3{margin:0 0 6px;font-size:14px}.panel .dim,.dim{color:var(--dim);font-weight:400}.panel .row{flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0;display:flex}.joint-name .ja{font-size:18px}.joint-name .romaji{color:var(--dim);margin-left:6px}.desc{color:var(--dim);margin:6px 0;font-size:12px;line-height:1.4}.kv{grid-template-columns:72px 1fr;align-items:center;gap:4px 8px;font-size:12px;display:grid}.kv>div:nth-child(odd){color:var(--dim)}.param{border-bottom:1px solid var(--line);padding:5px 0}.param.overridden{border-left:3px solid var(--accent);padding-left:5px}.param-head{align-items:center;gap:6px;display:flex}.param-head code{color:var(--accent)}.param-head .label{flex:1;font-size:12px}.param-body{align-items:center;gap:8px;margin-top:3px;display:flex}.param-body .value{color:var(--dim);white-space:nowrap;font-size:11px}.num-control{align-items:center;gap:6px;display:flex}.badge{border:1px solid var(--line);color:var(--dim);white-space:nowrap;border-radius:3px;padding:1px 5px;font-size:10px}.badge.lit{color:#90caf9;border-color:#37527a}.badge.open{color:#ffcc80;border-color:#7a5a2a}.badge.practice{color:#a5d6a7;border-color:#2e5a30}.badge.derived{color:var(--dim)}.picker{background:var(--panel-2);border-radius:6px;margin:6px 0;padding:6px}.cand{text-align:left;gap:1px;width:100%;margin-bottom:4px;padding:5px 8px;display:grid}.cand .ja{font-size:14px}.cand .romaji{color:var(--dim);font-size:11px}.cand .rank,.cand .reason{color:var(--dim);font-size:10px}.cand.sel{border-color:var(--accent);background:#3d2f1f}.assembly{color:var(--dim);margin:4px 0 4px 18px;padding:0;font-size:12px}.ref{color:var(--dim);margin:4px 0 0 16px;padding:0;font-size:11px}.findings{margin:4px 0;padding:0;font-size:12px;list-style:none}.findings li{border-left:3px solid var(--line);cursor:pointer;margin-bottom:2px;padding:3px 6px}.findings li code{color:var(--dim);margin-right:4px}.findings li.error{border-color:var(--err)}.findings li.warn{border-color:var(--warn)}.findings li.info{border-color:var(--info)}.findings .fix{color:var(--accent)}.joint-list{margin:0;padding:0;font-size:12px;list-style:none}.bottom{height:var(--bottom-h);flex-direction:column;flex:0 0 var(--bottom-h);background:var(--panel);min-height:0;display:flex;overflow:visible}.bottom .warnings{flex:1;min-width:0;min-height:0;padding:2px 10px 6px;overflow-y:auto}.bottom .warnings .group-title{margin:4px 0}.bottom.collapsed .warnings{padding:0 10px;overflow:hidden}.warnings.strip .group-title{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;margin:3px 0 0;overflow:hidden}table{border-collapse:collapse;width:100%;font-size:12px}th,td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:2px 6px}tr:hover td{background:var(--panel-2);cursor:pointer}tr.disabled td{opacity:.5}.warn{color:var(--warn)}.check{color:var(--dim);align-items:center;gap:4px;display:inline-flex}details summary{cursor:pointer;color:var(--dim);margin-top:6px;font-size:12px}.palette-item .ja .romaji{color:var(--dim);margin-left:4px;font-size:11px}.palette-item .en{color:var(--dim);grid-column:2;font-size:11px}.palette-item{cursor:grab}.palette-item:active{cursor:grabbing}.statusbar{border-top:1px solid var(--line);color:var(--dim);pointer-events:none;background:#211c17e6;align-items:center;gap:12px;padding:4px 10px;font-size:12px;display:flex;position:absolute;bottom:0;left:0;right:0}.statusbar .status-text{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.statusbar .measure{background:var(--panel-2);border:1px solid var(--line);color:var(--text);white-space:nowrap;border-radius:4px;padding:1px 8px}.statusbar .measure.active{border-color:var(--accent)}.warn-border{border-color:var(--warn)!important}.toolbar button:disabled{opacity:.4;cursor:default}.app.narrow .main,.app.phone .main{position:relative}.app.narrow .viewport,.app.phone .viewport{flex:1}.drawer{z-index:12;background:var(--panel);flex-direction:column;width:min(340px,85vw);min-height:0;display:flex;position:absolute;top:0;bottom:0;box-shadow:0 0 24px #0000008c}.drawer.left{border-right:1px solid var(--line);left:0}.drawer.right{border-left:1px solid var(--line);right:0}.drawer.bottom{border-top:1px solid var(--line);width:auto;height:45%;top:auto;left:0;right:0}.drawer>.sidebar,.drawer>.sidepanel{flex:1;width:100%}.drawer>.warnings{flex:1;min-height:0;padding:6px 10px;overflow-y:auto}.drawer-close{z-index:2;padding:2px 8px;font-size:14px;line-height:1;position:absolute;top:4px;right:6px}.drawer .tabs,.sheet .tabs{padding-right:34px}.drawer.left .drawer-close{right:6px}.app.narrow .bottom.strip-only{border-top:1px solid var(--line);flex:0 0 28px;height:28px}.app.narrow .bottom.strip-only .warnings{padding:0 10px}.sheet{z-index:12;background:var(--panel);border-top:1px solid var(--line);border-radius:14px 14px 0 0;flex-direction:column;min-height:0;transition:height .12s ease-out;display:flex;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -8px 24px #00000080}.sheet-handle{cursor:grab;touch-action:none;flex:0 0 22px;justify-content:center;align-items:center;display:flex}.sheet-handle span{background:var(--line);border-radius:3px;width:40px;height:5px}.sheet-body{flex-direction:column;flex:1;min-height:0;display:flex}.sheet-body>.sidebar,.sheet-body>.sidepanel{flex:1;width:100%}.sheet-body>.warnings{flex:1;min-height:0;padding:0 10px 10px;overflow-y:auto}.tabbar{background:var(--panel);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0);flex:none;display:flex}.tabbar .tab{background:var(--panel);min-height:48px;color:var(--dim);border:none;border-top:2px solid #0000;border-radius:0;flex-direction:column;flex:1;align-items:center;gap:1px;padding:6px 2px 5px;display:flex}.tabbar .tab b{color:var(--text);font-size:15px;font-weight:500}.tabbar .tab small{font-size:10px}.tabbar .tab.on{color:var(--accent);border-top-color:var(--accent);background:var(--panel-2)}.tabbar .tab.on b{color:var(--accent)}.app.phone .toolbar{gap:6px;padding:4px 6px 4px 8px}.app.phone .phone-hide,.app.phone .toolbar .brand span{display:none}.app.phone .statusbar{padding:4px 8px;font-size:11px}.app.phone .viewport-overlay{top:6px;left:6px}.panel-buttons{gap:4px;display:flex}.panel-buttons button{padding:2px 7px}.view-controls-toggle{pointer-events:auto;cursor:pointer;padding:2px 10px;font-size:14px;line-height:1.2;position:absolute;top:8px;right:8px}.app.phone .view-controls{flex-wrap:wrap;max-width:calc(100vw - 16px);top:40px;right:8px}.selection-chip{pointer-events:auto;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-color:var(--accent);max-width:calc(100% - 16px);font-size:12px;position:absolute;bottom:34px;left:8px;overflow:hidden}.statusbar .touch-actions{pointer-events:auto;gap:4px;display:flex}.statusbar .touch-actions button{padding:4px 10px;font-size:12px}@media (pointer:coarse){.tabs button{padding:10px 4px;font-size:14px}.palette-item{min-height:48px;padding:8px}.library-item{min-height:48px;padding:8px 10px}.findings li{padding:8px}.cutlist td,.cutlist th{padding:7px 6px}.assembly-order ol{columns:1}.assembly-order li{padding:6px 0}.menu-item{padding:10px;font-size:14px}.toolbar button,.tabs button,.chip{min-height:32px}.view-controls{gap:12px;padding:6px 10px}.view-controls input[type=range]{width:110px}}.chip.session.live{border-color:var(--ok)}.chip.session.offline,.chip.session.conflict{border-color:var(--warn)}.session-box{flex-direction:column;align-items:flex-start;gap:4px;max-width:min(520px,70vw);display:flex}.chip.agent{border-color:var(--accent);color:var(--text);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;max-width:100%;display:inline-flex;overflow:hidden}.chip.agent .pulse{background:var(--accent);border-radius:50%;flex:0 0 8px;width:8px;height:8px;animation:1.4s ease-in-out infinite kigumi-pulse}@keyframes kigumi-pulse{0%,to{opacity:.35}50%{opacity:1}}.session-feed{border:1px solid var(--line);background:#211c17e0;border-radius:8px;max-width:100%;padding:4px 8px;font-size:11px}.session-feed .feed-row{text-overflow:ellipsis;white-space:nowrap;line-height:1.4;overflow:hidden}.session-feed .feed-row.note{color:var(--text)}.session-feed .feed-row.edit{color:var(--dim)}.session-feed .feed-toggle{font-size:10px}.app.phone .session-box{max-width:calc(100vw - 70px)}.share-panel{border:1px solid var(--accent);background:#211c17f0;border-radius:8px;flex-direction:column;gap:4px;width:420px;max-width:100%;padding:6px 8px;font-size:11px;display:flex}.share-title{color:var(--text)}.share-prompt{resize:none;width:100%;font:inherit;background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:4px;padding:4px 6px;font-size:11px}.share-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.share-actions .dim{flex:1;min-width:120px;font-size:10px;line-height:1.3}.share-actions a{color:var(--accent)}.compass{border:1px solid var(--line);background:#211c17d9;border-radius:50%;width:64px;height:64px;position:absolute;bottom:36px;right:10px}.compass-needle{pointer-events:none;position:absolute;inset:0}.compass-letter{width:20px;height:20px;color:var(--dim);text-align:center;background:0 0;border:none;border-radius:50%;padding:0;font-size:11px;font-weight:600;line-height:20px;position:absolute;top:22px;left:22px}.compass-letter.north{color:var(--accent)}.compass-letter:hover{color:var(--text);background:#3d2f1f}.compass-centre{background:var(--panel-2);border:1px solid var(--line);border-radius:50%;width:10px;height:10px;padding:0;position:absolute;top:27px;left:27px}.compass-centre:hover{border-color:var(--accent)}.app.phone .compass{transform-origin:100% 100%;bottom:40px;transform:scale(.85)}@media (pointer:coarse){.compass-letter{width:24px;height:24px;line-height:24px;top:20px;left:20px}}
