:root{--bg:#1b1d21;--panel:#24262b;--panel-border:#34373d;--text:#e6e6e9;--text-dim:#9a9ca3;--accent:#5aa9ff}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}.app{flex-direction:column;height:100%;display:flex}.app-header{background:var(--panel);border-bottom:1px solid var(--panel-border);align-items:center;gap:16px;padding:8px 14px;display:flex}.app-header h1{white-space:nowrap;margin:0;font-size:15px;font-weight:600}.font-open-menu{align-items:center;gap:8px;display:flex}.font-info{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.load-error{color:#ff7b72}select,button,input[type=search],input[type=text],input[type=number]{color:var(--text);border:1px solid var(--panel-border);font:inherit;background:#2e3138;border-radius:6px;padding:5px 9px}button{cursor:pointer}button:hover{border-color:var(--accent)}.app-body{flex:1;min-height:0;display:flex}.sidebar{border-right:1px solid var(--panel-border);background:var(--panel);flex-direction:column;flex-shrink:0;width:300px;display:flex;overflow-y:auto}.sidebar-empty{color:var(--text-dim);padding:16px}.glyph-grid-wrap{flex-direction:column;min-height:0;display:flex}.glyph-search{margin:10px}.glyph-grid-meta{color:var(--text-dim);padding:0 12px 8px;font-size:12px}.glyph-grid{grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:4px;padding:0 8px 12px;display:grid}.glyph-cell{color:var(--text);content-visibility:auto;contain-intrinsic-size:68px 84px;background:0 0;border:1px solid #0000;border-radius:6px;flex-direction:column;align-items:center;gap:2px;padding:4px 2px;display:flex}.glyph-cell:hover{border-color:var(--panel-border);background:#2b2e34}.glyph-cell.selected{border-color:var(--accent);background:#2b3442}.glyph-thumb{color:var(--text)}.glyph-cell-label{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:11px;overflow:hidden}.canvas-area{flex:1;justify-content:center;align-items:center;min-width:0;display:flex;position:relative;overflow:hidden}.canvas-placeholder{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.canvas-placeholder .glyph-thumb{border:1px solid var(--panel-border);background:#202227;border-radius:8px}.hint{color:var(--text-dim)}.export-btn{border-color:var(--accent)}.header-right{align-items:center;gap:10px;margin-left:auto;display:flex}.source-link{color:var(--text-dim);white-space:nowrap;align-items:center;gap:6px;font-size:13px;text-decoration:none;display:flex}.source-link:hover{color:var(--text)}.glyph-canvas{touch-action:none;-webkit-user-select:none;user-select:none;background:#202227;width:100%;height:100%;display:block}.grid-line{stroke:#ffffff0d;stroke-width:1px}.metric-line{stroke:#5aa9ff59;stroke-width:1px;stroke-dasharray:4 4}.metric-line.advance{stroke:#ffaa5a8c}.advance-hit{stroke:#0000;stroke-width:10px;cursor:ew-resize}.advance-guide{cursor:ew-resize}.metric-label{fill:#ffffff59;-webkit-user-select:none;user-select:none;font-size:10px}.contour-path{stroke:var(--text);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.canvas-wrap{width:100%;height:100%;position:relative}.toolbar{z-index:2;background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;align-items:center;gap:4px;padding:4px;display:flex;position:absolute;top:10px;left:10px}.tool-btn{border-color:#0000;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:15px;display:flex}.tool-btn.active{border-color:var(--accent);background:#2b3442}.toolbar-sep{background:var(--panel-border);width:1px;height:22px;margin:0 3px}.toolbar-slider{color:var(--text-dim);align-items:center;gap:6px;padding:0 6px;font-size:11px;display:flex}.anchor{fill:#fff;stroke:#555;stroke-width:1px;cursor:pointer}.anchor.hover{stroke:var(--accent);stroke-width:2px}.anchor.selected{fill:var(--accent);stroke:#fff}.handle-line{stroke:#5aa9ff99;stroke-width:1px}.handle-hit{fill:#0000;cursor:pointer}.handle-dot{fill:#2b3442;stroke:var(--accent);stroke-width:1.2px}.segment-highlight{stroke:var(--accent);stroke-width:3px;fill:none;opacity:.7;pointer-events:none}.marquee{fill:#5aa9ff1a;stroke:var(--accent);stroke-width:1px;stroke-dasharray:4 3}.rubber-band{stroke:#ffffff80;stroke-width:1px;stroke-dasharray:5 4;pointer-events:none}.pencil-trace{stroke:#ffaa5acc;stroke-width:1.5px;fill:none;pointer-events:none}.right-panel{border-left:1px solid var(--panel-border);background:var(--panel);flex-shrink:0;width:250px;overflow-y:auto}.panel-tabs{border-bottom:1px solid var(--panel-border);display:flex}.panel-tabs button{color:var(--text-dim);background:0 0;border:none;border-radius:0;flex:1;padding:9px}.panel-tabs button.active{color:var(--text);border-bottom:2px solid var(--accent)}.panel{padding:12px}.panel h3{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);margin:14px 0 8px;font-size:11px}.panel h3:first-child{margin-top:0}.panel-empty{color:var(--text-dim);padding:16px}.field-row{align-items:center;gap:8px;margin-bottom:6px;display:flex}.field-row label{width:80px;color:var(--text-dim);flex-shrink:0;font-size:12px}.field-row input{width:100%;min-width:0}.btn-group{flex-wrap:wrap;gap:4px;display:flex}.btn-group button{padding:4px 8px;font-size:12px}.btn-group button.active{border-color:var(--accent);background:#2b3442}.panel-note{color:var(--text-dim);margin:8px 0;font-size:12px}.metadata-text{color:var(--text-dim);white-space:pre-wrap;border:1px solid var(--panel-border);border-radius:6px;max-height:220px;padding:8px;font-size:11px;overflow-y:auto}.restore-banner{background:#33301f;border-bottom:1px solid #57502e;align-items:center;gap:10px;padding:8px 14px;display:flex}.canvas-area{flex-direction:column;justify-content:flex-start;align-items:stretch}.canvas-wrap{flex:1;min-height:0}.canvas-area>.canvas-placeholder{flex:1;justify-content:center;align-items:center;display:flex}.preview-pane{border-top:1px solid var(--panel-border);background:var(--panel);flex-shrink:0}.preview-header{align-items:center;gap:10px;padding:6px 10px;display:flex}.preview-toggle{color:var(--text-dim);background:0 0;border-color:#0000}.preview-text{flex:1;max-width:440px}.preview-canvas{justify-content:center;padding:0 12px 8px;display:flex;overflow:auto hidden}.preview-svg{color:var(--text);max-width:100%}.add-glyph-row{gap:6px;margin:0 10px 8px;display:flex}.add-glyph-row input{flex:1;min-width:0}button.danger{color:#ff9d95;border-color:#7a3a3a}.underlay-outline{color:#7fbf7f}.underlay-ref{stroke:#c9a35a;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round}.field-row input[type=checkbox]{width:auto}.field-row input[type=range]{width:100%}.kern-pair-inputs{gap:6px;display:flex}.kern-pair-inputs input{text-align:center;width:52px;font-size:16px}.kern-preview{border:1px solid var(--panel-border);background:#202227;border-radius:6px;margin-bottom:8px;padding:4px}.kern-preview-svg{width:100%;height:110px;color:var(--text);display:block}.kern-boundary{stroke:#ffaa5a66;stroke-width:4px}.kern-list{flex-direction:column;gap:3px;max-height:320px;margin-top:6px;display:flex;overflow-y:auto}.kern-row{align-items:center;gap:4px;display:flex}.kern-row-pair{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.kern-row input{flex-shrink:0;width:64px}.kern-row .danger{flex-shrink:0;padding:4px 8px}.undo-redo-group{gap:4px;display:flex}.undo-redo-group button{justify-content:center;align-items:center;width:32px;height:30px;padding:0;font-size:15px;display:flex}.undo-redo-group button:disabled{opacity:.35;cursor:default}.undo-redo-group button:disabled:hover{border-color:var(--panel-border)}.tool-btn:disabled{opacity:.35;cursor:default}.tool-btn:disabled:hover{border-color:#0000}@media (pointer:coarse){.tool-btn{width:38px;height:38px;font-size:17px}.advance-hit{stroke-width:24px}}@media (width<=900px){.app-header{flex-wrap:wrap;row-gap:6px}.font-info{display:none}.app-body{flex-direction:column;overflow-y:auto}.sidebar{border-right:0;border-bottom:1px solid var(--panel-border);flex-shrink:0;width:100%;overflow:visible}.glyph-grid-wrap{flex-flow:wrap;align-items:center;gap:6px;padding:6px 8px}.glyph-search{flex:42%;min-width:130px;margin:0}.add-glyph-row{flex:42%;min-width:140px;margin:0}.glyph-grid-meta{display:none}.glyph-grid{-webkit-overflow-scrolling:touch;flex:100%;gap:4px;min-width:0;padding:0;display:flex;overflow-x:auto}.glyph-cell{contain-intrinsic-size:60px 76px;flex:0 0 60px}.canvas-area{flex:0 0 62dvh}.canvas-wrap{flex-direction:column;display:flex}.toolbar{border:0;border-bottom:1px solid var(--panel-border);border-radius:0;flex-wrap:wrap;position:static}.glyph-canvas{flex:1;height:auto;min-height:0}.right-panel{border-left:0;border-top:1px solid var(--panel-border);flex-shrink:0;width:100%}}
