@font-face{font-family:Anton;src:url(/fonts/Anton-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#202327;background:#f4f5f6;font-synthesis:none;text-rendering:optimizeLegibility;font-optical-sizing:auto;--ink: #191c20;--muted: #858b92;--line: #e1e4e7;--panel: #fff;--blue: #2868e9;--blue-pale: #eaf1ff}*{box-sizing:border-box}body{min-width:360px;min-height:100vh;margin:0}button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--blue);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.43}.app-shell{min-height:100vh;display:flex;flex-direction:column;overflow:hidden;background:#f3f4f5}.topbar{height:66px;flex:0 0 66px;display:flex;align-items:center;gap:10px;padding:0 24px;color:#fff;background:var(--ink)}.brand{display:flex;align-items:center;gap:9px;min-width:188px;color:inherit;text-decoration:none;font-family:Anton,Impact,sans-serif;font-size:23px;letter-spacing:.1px}.brand-mark{width:28px;height:28px;display:grid;place-items:center;border:1px solid #56616e;border-radius:6px;color:#93b7ff;font-size:19px}.font-select{display:flex;align-items:baseline;gap:9px;min-width:220px;padding:9px 13px;border:1px solid #454a50;border-radius:5px;color:#f5f6f7;background:#22262b}.font-select-name{font-size:14px;font-weight:650}.font-select-style{color:#8f969e;font-size:12px}.chevron{margin-left:auto;color:#a9afb6;font-size:17px;line-height:.6}.topbar-spacer{flex:1}.top-button,.export-button{height:38px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:5px;color:#d2d6dc;background:transparent;cursor:pointer;font-size:13px;font-weight:550}.top-button{padding:0 10px}.top-button:hover:not(:disabled){color:#fff;background:#292e34}.top-button svg,.export-button svg,.load-font-button svg,.search-box svg,.tool-button svg{width:17px;height:17px;flex:none}.export-button{min-width:150px;margin-left:8px;padding:0 15px;color:#fff;background:var(--blue);font-weight:650}.export-button:hover:not(:disabled){background:#1c59d7}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;clip-path:inset(50%)}.workspace{min-height:550px;flex:1;display:grid;grid-template-columns:246px minmax(380px,1fr) 272px;background:var(--panel)}.glyph-panel,.inspector-panel{min-width:0;padding:23px 20px 18px;background:#fff}.glyph-panel{border-right:1px solid var(--line)}.section-title-row{display:flex;align-items:baseline;justify-content:space-between;margin:1px 0 16px}h2,h3,p{margin:0}h2{font-size:14px;font-weight:680;letter-spacing:-.15px}.glyph-count{color:#9ca2a9;font-size:11px}.search-box{height:37px;display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid #dce0e4;border-radius:4px;color:#7d848c}.search-box:focus-within{border-color:#9dbbfa;box-shadow:0 0 0 3px #e9f0ff}.search-box svg{width:15px;height:15px}.search-box input{width:100%;min-width:0;border:0;outline:0;color:#2b2f34;background:transparent;font-size:12px}.search-box input::placeholder{color:#969ca4}.glyph-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:16px}.glyph-tile{aspect-ratio:1;min-width:0;border:1px solid #e0e3e6;border-radius:4px;color:#202327;background:#fafbfc;cursor:pointer;font-size:26px;line-height:1}.glyph-tile:hover{border-color:#a8b8d5;background:#f5f8fd}.glyph-tile.selected{border:1.5px solid var(--blue);color:#1a55bf;background:var(--blue-pale);box-shadow:inset 0 0 0 1px #2868e914}.load-font-button{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:20px;padding:10px 9px;border:1px solid #dfe2e5;border-radius:4px;color:#42484f;background:#fff;cursor:pointer;font-size:12px;font-weight:600}.load-font-button:hover{border-color:#b9c9e5;background:#f7f9fc}.load-font-button svg{width:15px;height:15px;color:#66717d}.local-note{display:flex;align-items:center;gap:7px;margin-top:14px;color:#858c94;font-size:11px}.local-dot{width:7px;height:7px;border-radius:50%;background:#64a888}.editor-column{min-width:0;display:flex;flex-direction:column;padding:22px 20px 13px;border-right:1px solid var(--line)}.canvas-heading{display:flex;align-items:center;justify-content:space-between;padding:0 2px 15px}.canvas-heading h2{margin-bottom:5px}.font-meta{color:#969ca3;font-size:11px}.loaded-state{display:inline-flex;align-items:center;gap:7px;color:#59616a;font-size:11px}.status-dot{width:7px;height:7px;flex:none;border-radius:50%;background:#468f70;box-shadow:0 0 0 3px #e6f4ed}.canvas-surface{position:relative;min-height:385px;flex:1;display:grid;place-items:center;overflow:hidden;border:1px solid #e0e3e5;border-radius:4px;background-color:#f8f9fa;background-image:linear-gradient(#ffffffb5,#ffffffb5)}.canvas-surface.is-dragging{cursor:grabbing}.glyph-canvas{z-index:1;width:min(100%,780px);height:clamp(385px,60vh,640px);min-height:385px;overflow:visible;touch-action:none}.glyph-fill{fill:#17191c}.guide-line{stroke:#c6ccd3;stroke-width:1.2;stroke-dasharray:6 5}.baseline-line{stroke:#b6bdc5;stroke-width:1.2}.guide-label{position:absolute;left:14px;z-index:2;padding-right:8px;color:#79818a;background:#f8f9fa;font-size:10px;pointer-events:none}.cap-label{top:15%}.baseline-label{bottom:2%}.point-hit{fill:transparent;cursor:grab;pointer-events:all}.point-visible{fill:#fff;stroke:#527fe4;stroke-width:8;vector-effect:non-scaling-stroke}.point-visible.off{fill:#d9e5ff;stroke-width:5}.point-visible.active{fill:var(--blue);stroke:#fff;stroke-width:7}.selection-help{position:absolute;right:13px;bottom:12px;z-index:2;padding:6px 9px;border:1px solid #dce5f6;border-radius:4px;color:#4c617f;background:#fff;font-size:10px}.canvas-message{color:#777f87;font-size:13px}.canvas-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 2px 0;color:#90969c;font-size:10px}.inspector-panel{padding:24px 19px 18px}.inspector-panel>h2{margin:0 0 18px}.inspector-section{padding:17px 0 18px;border-top:1px solid var(--line)}.inspector-section h3{margin-bottom:14px;font-size:12px;font-weight:650}.number-row,.metric-row{display:grid;grid-template-columns:18px 1fr auto;align-items:center;gap:8px;margin:8px 0;color:#737a82;font-size:11px}.number-row input,.metric-row input{width:100%;height:34px;min-width:0;padding:0 9px;border:1px solid #dfe2e5;border-radius:4px;color:#30353b;background:#fff;font-size:12px}.number-row input:focus,.metric-row input:focus{border-color:#8eaff3;outline:0;box-shadow:0 0 0 3px #e9f0ff}.unit{color:#9da3aa;font-size:10px}.inspector-empty{color:#9299a1;font-size:11px;line-height:1.55}.tool-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.tool-button{min-width:0;display:flex;flex-direction:column;align-items:center;gap:7px;padding:9px 3px 8px;border:1px solid #e0e3e6;border-radius:4px;color:#737a82;background:#fff;cursor:pointer;font-size:10px}.tool-button:hover:not(:disabled){border-color:#b6c7e5;color:#394a69}.tool-button.active{border-color:#8eaff3;color:#255dcc;background:#f2f6ff}.tool-button svg{width:16px;height:16px}.curve-toggle{width:100%;display:flex;align-items:center;gap:8px;margin-top:9px;padding:8px 9px;border:0;border-radius:4px;color:#565e66;background:#f6f7f8;cursor:pointer;font-size:10px;text-align:left}.curve-toggle:disabled{opacity:.55}.curve-glyph{width:8px;height:8px;border:1px solid var(--blue);border-radius:50%;background:#fff}.curve-glyph.off{border-radius:1px;background:#dce7ff}.toggle-action{margin-left:auto;color:#7189b5}.metrics-section{padding-bottom:12px}.metric-row{grid-template-columns:1fr 78px;gap:10px;margin:0;color:#5a6169;font-size:11px}.metric-row input{text-align:right}.metric-caption{margin-top:7px;color:#9ba1a7;font-size:10px;line-height:1.45}.font-license{display:flex;flex-direction:column;gap:5px;padding-top:14px;border-top:1px solid var(--line);color:#a0a5ab;font-size:10px}.font-license a{color:#64748b;text-decoration:underline;text-underline-offset:2px}.preview-panel{min-height:180px;margin:0 10px 9px;padding:18px 20px 13px;border:1px solid #e2e5e7;border-radius:5px;background:#fff}.preview-topline{display:flex;align-items:center;justify-content:space-between;gap:16px}.preview-topline h2{margin-bottom:5px}.preview-topline span{color:#9299a1;font-size:10px}.preview-topline input{width:min(36%,330px);height:32px;padding:0 10px;border:1px solid #e0e3e6;border-radius:4px;color:#4a5159;background:#fff;font-size:11px}.preview-text{min-height:90px;display:flex;align-items:center;overflow:hidden;padding:8px 8px 0;color:#15171a;font-size:clamp(31px,5.7vw,76px);line-height:.98;letter-spacing:.01em;white-space:nowrap}.notice{position:fixed;right:22px;bottom:47px;z-index:5;max-width:min(540px,calc(100vw - 36px));display:flex;align-items:center;gap:18px;padding:11px 12px 11px 15px;border:1px solid #cad8ed;border-radius:5px;color:#384b68;background:#fff;box-shadow:0 10px 34px #1c28331c;font-size:12px}.notice button{border:0;color:#687482;background:transparent;cursor:pointer;font-size:18px;line-height:1}.statusbar{min-height:31px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 20px;color:#8e949b;background:#f8f9fa;font-size:10px}.statusbar>span:first-child{display:inline-flex;align-items:center;gap:7px}.statusbar .status-dot{width:6px;height:6px;box-shadow:none}.build-stamp{color:#a7adb4}@media(max-width:1050px){.workspace{grid-template-columns:210px minmax(300px,1fr) 240px}.glyph-panel,.inspector-panel{padding-inline:15px}.glyph-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.glyph-tile{font-size:22px}.editor-column{padding-inline:14px}}@media(max-width:760px){body{min-width:360px}.topbar{height:58px;flex-basis:58px;gap:4px;padding:0 12px}.brand{min-width:auto;gap:7px;margin-right:7px;font-size:20px}.brand-mark{width:25px;height:25px}.font-select{min-width:96px;gap:5px;padding:8px}.font-select-style{display:none}.top-button{padding:0 6px}.top-button span{display:none}.export-button{min-width:40px;margin-left:2px;padding:0 10px}.export-button span{display:none}.workspace{grid-template-columns:1fr}.glyph-panel{order:2;padding:15px;border-top:1px solid var(--line);border-right:0}.glyph-panel .section-title-row{margin-bottom:10px}.glyph-grid{grid-template-columns:repeat(13,minmax(0,1fr));gap:4px;margin-top:10px}.glyph-tile{font-size:clamp(13px,3.8vw,20px)}.load-font-button{margin-top:10px}.local-note{margin-top:9px}.editor-column{order:1;min-height:490px;padding:17px 12px 10px;border-right:0}.canvas-surface{min-height:340px}.glyph-canvas{height:360px;min-height:340px}.inspector-panel{order:3;display:grid;grid-template-columns:1fr 1fr;gap:0 18px;padding:15px;border-top:1px solid var(--line)}.inspector-panel>h2{grid-column:1 / -1;margin-bottom:8px}.inspector-section{padding:13px 0}.inspector-section:nth-of-type(2){grid-row:span 2}.font-license{grid-column:1 / -1;padding-top:12px}.preview-panel{min-height:150px;padding:14px 12px 10px}.preview-topline{align-items:flex-start}.preview-topline input{width:48%}.preview-text{min-height:82px;max-width:100%;overflow:hidden;font-size:clamp(18px,7.2vw,28px);line-height:1.02;white-space:normal;overflow-wrap:anywhere}.statusbar{flex-wrap:wrap;justify-content:center;padding:8px 12px}}:root{color:#34373a;background:#dfe1e2;--ink: #303336;--muted: #818589;--line: #d0d2d3;--panel: #e7e8e8;--blue: #526a78;--blue-pale: #dce2e4}.app-shell{background:#dfe1e2}.topbar{color:#e4e5e5;background:#343739}.brand-mark{color:#d1d4d4;border-color:#676a6b}.font-select{color:#e5e6e6;background:#3d4042;border-color:#55585a}.top-button{color:#c8caca}.top-button:hover:not(:disabled){color:#fff;background:#46494b}.export-button{color:#f4f4f2;background:#656b6d}.export-button:hover:not(:disabled){background:#555b5d}.workspace{order:2;background:#e5e6e6}.statusbar{order:3}.glyph-panel,.inspector-panel{background:#e7e8e8}.glyph-panel,.editor-column{border-color:#d3d5d5}.search-box{border-color:#d3d5d5;background:#e9eaea}.search-box input{color:#45484a}.glyph-tile{color:#55595b;border-color:#d3d5d5;background:#e3e4e4}.glyph-tile:hover{border-color:#afb4b5;background:#e9eaea}.glyph-tile.selected{color:#38474f;border-color:#8f9a9f;background:#d9ddde;box-shadow:none}.load-font-button{color:#505456;border-color:#d0d2d2;background:#e7e8e8}.load-font-button:hover{border-color:#afb4b5;background:#edeeee}.canvas-surface{border-color:#d0d2d2;background-color:#e3e5e5;background-image:none}.guide-label{color:#878d8f;background:#e3e5e5}.guide-line{stroke:#c5c9ca}.baseline-line{stroke:#adb3b5}.glyph-fill{fill:#35383a}.point-hit{cursor:grab}.point-visible{fill:#f0f1f1;stroke:#778990}.point-visible.off{fill:#cbd4d6;stroke:#778990;stroke-width:1.5}.point-visible.active{fill:#526a78;stroke:#f4f5f5}.point-visible.hovered{fill:#becbd0;stroke:#3d616f;stroke-width:2.5}.point-visible.active.hovered{fill:#526a78}.segment-hit{fill:none;stroke:transparent;stroke-width:28;stroke-linecap:round;stroke-linejoin:round;pointer-events:stroke;cursor:grab}.segment-hit.hovered{stroke:#526a7830;stroke-width:20}.handle-geometry{pointer-events:none}.handle-geometry line{stroke:#8a9ba0;stroke-width:1.2;stroke-dasharray:4 4;vector-effect:non-scaling-stroke}.canvas-surface.is-dragging .point-hit,.canvas-surface.is-dragging .segment-hit{cursor:grabbing}.selection-help{color:#707b7f;border-color:#d0d6d7;background:#e8eaea}.number-row input,.metric-row input,.preview-topline input{color:#45494b;border-color:#d1d4d4;background:#e9eaea}.tool-button{color:#72787a;border-color:#d3d5d5;background:#e5e6e6}.tool-button.active{color:#425860;border-color:#aab4b7;background:#dce1e2}.curve-toggle{color:#555b5d;background:#dfe1e1}.curve-mode{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:7px}.curve-mode button{padding:7px 8px;border:1px solid #d1d4d4;border-radius:4px;color:#73797b;background:#e6e7e7;cursor:pointer;font-size:10px}.curve-mode button.active{color:#394d55;border-color:#aeb8ba;background:#d9dfe0}.curve-mode button:disabled{opacity:.45;cursor:not-allowed}.curve-caption{margin-top:7px;color:#93989a;font-size:9px;line-height:1.4}.statusbar{background:#e5e6e6}.proof-strip{order:1;padding:15px 24px 16px;border-bottom:1px solid #d0d2d2;background:#dfe1e2}.proof-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:10px}.proof-heading h2{margin-bottom:3px}.proof-heading>div>span{color:#8d9294;font-size:10px}.proof-input{display:flex;align-items:center;gap:9px;color:#828789;font-size:10px}.proof-input input{width:min(34vw,360px);height:30px;padding:0 10px;border:1px solid #cfd2d2;border-radius:4px;color:#484c4e;background:#e8e9e9;font-size:11px}.proof-samples{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.proof-sample{min-width:0;min-height:84px;overflow:hidden;padding:10px 13px 8px;border:1px solid #d2d4d4;border-radius:4px}.proof-sample>span{display:block;margin-bottom:7px;font:9px/1.2 Inter,ui-sans-serif,system-ui,sans-serif;letter-spacing:.08em;opacity:.58}.proof-sample p{overflow:hidden;font-size:clamp(17px,2.4vw,33px);line-height:.98;white-space:nowrap;text-overflow:clip}.proof-sample.paper{color:#343638;background:#f0f1f0}.proof-sample.night{color:#f0f1ef;border-color:#45494b;background:#35383a}.proof-sample.gray{color:#343638;background:#c8cbcc}@media(max-width:760px){.proof-strip{padding:12px}.proof-samples{grid-template-columns:1fr;gap:6px}.proof-sample{min-height:62px;padding:8px 10px}.proof-sample>span{margin-bottom:4px}.proof-sample p{font-size:clamp(20px,7vw,28px)}.proof-input{gap:6px}.proof-input input{width:min(54vw,250px)}}.session-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 20px;padding:12px 24px;border-bottom:1px solid var(--line);background:#e7e8e8}.project-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.project-actions button,.glyph-groups button{border:1px solid #bfc5c7;border-radius:4px;color:#454c50;background:#eff0f0;padding:7px 10px;cursor:pointer;font-size:11px}.project-actions button:hover:not(:disabled),.glyph-groups button:hover{background:#fff;border-color:#8b999f}.session-state{color:#667277;font-size:11px}.session-state.dirty{color:#86541d}.export-name{display:flex;align-items:center;gap:9px;color:#5d666b;font-size:11px}.export-name input{width:220px;min-width:0;padding:7px 9px;border:1px solid #bfc5c7;border-radius:4px;background:#f0f1f1;color:#343a3d}.glyph-groups{display:flex;flex-wrap:wrap;gap:4px;margin-top:11px}.glyph-groups button{padding:5px 7px;font-size:10px}.glyph-groups button[aria-pressed=true]{color:#2e4652;background:#cfd9dd;border-color:#879aa4}.glyph-grid{max-height:390px;overflow-y:auto;align-content:start;padding:1px}.glyph-empty{margin-top:13px;color:#68767c;font-size:11px;line-height:1.5}.font-select{min-width:140px;max-width:270px}.font-select-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.proof-sample p{white-space:normal;overflow-wrap:anywhere;line-height:1.12}.canvas-footer,.font-meta,.inspector-empty,.metric-caption,.curve-caption,.statusbar{color:#667277}@media(max-width:760px){.session-toolbar{padding:10px 12px;gap:9px}.export-name{width:100%}.export-name input{flex:1}.topbar{gap:2px}.brand{margin-right:2px;font-size:18px;gap:5px}.font-select{min-width:0;flex:1;padding:7px}.topbar-spacer{display:none}.top-button{flex-shrink:0}.export-button{flex-shrink:0;min-width:32px;padding:0 7px}.glyph-grid{grid-template-columns:repeat(8,minmax(0,1fr));max-height:220px}.proof-heading{flex-wrap:wrap;gap:8px}.proof-input{width:100%}.proof-input input{flex:1;width:auto}.statusbar{text-align:center;line-height:1.5}}
