*{box-sizing:border-box}
:root{color-scheme:dark;--text:#e8edf1;--soft:#a8b3bd;--line:#313b43;--panel:#1b2229;--accent:#9de4d2;font-family:Inter,"Segoe UI",system-ui,sans-serif;font-size:14px}
body{margin:0;color:var(--text);background:#11161b;min-height:100vh}
.symbols,[hidden]{display:none!important}
svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
button,.open,select,input{font:inherit}button,.open,select,summary{cursor:pointer}button,.open,select{background:#222b33;border:1px solid #39444e;color:var(--text);border-radius:7px}
button,.open{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 12px;font-weight:550}
button:not(:disabled):hover,.open:hover{background:#303b44;border-color:#52616c}button:disabled{opacity:.4;cursor:default}
button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,.open:focus-within{outline:2px solid var(--accent);outline-offset:3px}
header{min-height:67px;border-bottom:1px solid #30383e;display:flex;align-items:center;padding:12px clamp(18px,3vw,56px);gap:18px;background:#171d23}
.brand,.actions,.workspace-title,.monitorbar,.live,.aside-title,.exportline,figcaption{display:flex;align-items:center}
.brand{gap:8px;font-size:22px;font-weight:680;letter-spacing:-1px}.brand i{display:grid;place-items:center;margin-right:4px;color:var(--accent)}.brand svg{width:29px;height:29px;stroke-width:2.2}.brand span{font-weight:360;color:#b3bdc6}
.local,.live{color:var(--soft);font-size:12px}.local{display:flex;align-items:center;gap:7px;border-left:1px solid #3b444c;padding-left:18px}.local b,.live b{width:6px;height:6px;border-radius:100%;background:#87d1bc}
.actions{margin-left:auto;gap:10px}.open{position:relative}.open input{position:absolute;inset:0;width:100%;opacity:0;cursor:pointer}#save{background:var(--accent);border-color:transparent;color:#122b24}#save:hover{background:#baf4e4}
main{display:grid;grid-template-columns:minmax(0,1fr) minmax(275px,320px);align-items:start;gap:clamp(18px,2.3vw,40px);max-width:1800px;margin:auto;padding:clamp(20px,3vw,48px)}
article{min-width:0;position:sticky;top:20px}.workspace-title{gap:8px;margin-bottom:20px}.workspace-title>div{margin-right:auto}.eyebrow{font:600 10px/1.4 "Segoe UI",sans-serif;color:#8cb0ad;letter-spacing:.17em;margin:0 0 5px}h1,h2,h3{margin:0}h1{font-size:clamp(27px,2.8vw,42px);letter-spacing:-.055em;line-height:1.12;font-weight:610}#undo,#expand{padding:8px}
figure{margin:0;border:1px solid #36414a;border-radius:12px;background:#13191e;overflow:hidden;box-shadow:0 12px 36px #0002}
.monitorbar,figcaption{padding:10px 15px;gap:10px;background:#1c232a}.monitorbar{border-bottom:1px solid #303940}.live{gap:8px;margin-right:auto;font-weight:550;color:#d4dce2}
.compare{display:flex;padding:3px;background:#11171b;border:1px solid #333e47;border-radius:7px}.compare button{border:0;background:transparent;color:#98a5b0;font-size:12px;border-radius:4px;padding:5px 11px}.compare button[aria-pressed=true]{background:#35414a;color:#f3f6f7}
#expand{border-color:transparent;background:transparent;color:#aab5bd}
.mat{height:clamp(300px,56vh,760px);display:flex;align-items:center;justify-content:center;padding:clamp(10px,2vw,32px);background:radial-gradient(#3a4349aa .8px,transparent 1px) 0 0/14px 14px,#161c21}
canvas{max-width:100%;max-height:100%;width:auto;height:auto;display:block;box-shadow:0 5px 24px #0006}
figcaption{border-top:1px solid #303940;color:#b9c5cb;font-size:12px;min-height:44px}figcaption em{font-style:normal;color:#667780}figcaption span{overflow-wrap:anywhere}figcaption strong{margin-left:auto;padding:3px 7px;color:var(--accent);background:#263632;border:1px solid #374d46;border-radius:5px;font:11px ui-monospace,Consolas,monospace;white-space:nowrap}
.exportline{margin-top:14px;padding:10px 13px;gap:12px;background:#191f25;border:1px solid #2f3840;border-radius:9px}.exportline label{display:flex;align-items:center;gap:8px;font-size:13px;color:#cdd6dc}.exportline span{margin-left:auto;font:11px monospace;color:#93a1ac}.messages{display:flex;gap:12px;color:var(--soft);font-size:12px;margin-top:8px}
aside{background:var(--panel);border:1px solid #333e47;border-radius:12px;overflow:hidden}.aside-title{gap:10px;padding:15px 18px;background:#20282f;color:var(--accent)}h2{color:var(--text);font-size:16px;font-weight:600}.group{border-top:1px solid var(--line);padding:14px 18px}.group h3,.group>summary{font:600 13px/1.4 inherit;font-size:13px;font-weight:650}
.group>summary{list-style:none;display:flex;justify-content:space-between;align-items:center}.group>summary::-webkit-details-marker{display:none}.group>summary:after{content:'';width:6px;height:6px;border-right:1.5px solid #9facb5;border-bottom:1.5px solid #9facb5;transform:rotate(45deg);margin-right:3px}.group[open]>summary:after{transform:rotate(225deg)}.group[open]>summary{margin-bottom:13px}
.modes{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.modes button{justify-content:start;font-size:13px;padding:10px}.modes svg{color:#aab7c1}.modes button[aria-pressed=true]{background:#233a35;border-color:#538578;color:#b2e8d9}.modes button[aria-pressed=true] svg{color:#9ce3cd}
#glyphs{margin-top:14px}#glyphs label,.option,#ranges label{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#c4cdd3;font-size:13px}.option{margin-top:10px}
select{max-width:100%;padding:6px 8px;font-size:12px}#glyphs select{max-width:66%}#glyphs label{margin-bottom:8px}#specimen{background:#131a20;padding:8px 10px;color:#9dc5bb;font-size:20px;overflow:hidden;border-radius:6px}
.option input{accent-color:var(--accent);width:16px;height:16px;margin:0}#ranges output{font:11px Consolas,monospace;color:#cad9df;background:#28333b;padding:2px 5px;border-radius:3px}#ranges input{width:100%;accent-color:#92cdbf;margin:6px 0 10px;height:12px}#ranges input:last-child{margin-bottom:0}
figure:fullscreen{display:flex;flex-direction:column;border:0;border-radius:0}figure:fullscreen .mat{flex:1;min-height:0}
@media(max-width:860px){main{grid-template-columns:minmax(0,1fr) 265px;padding:16px;gap:14px}.group{padding:12px}.mat{height:43vh}.local{display:none}}
@media(max-width:680px){header{padding:10px 12px;gap:6px;min-height:54px}.brand{font-size:19px}.brand span{display:none}.actions{gap:5px}.actions button,.open{font-size:12px;padding:7px}.actions svg{width:14px}main{grid-template-columns:1fr;padding:15px 12px}.workspace-title{margin-bottom:12px}article{position:static}.mat{height:clamp(180px,34vh,360px)}.messages:empty{display:none}.group{padding:14px 16px}.exportline{margin-top:9px}.exportline label{font-size:12px}}
@media(prefers-reduced-motion:no-preference){button,.open,select{transition:background-color .16s,border-color .16s,color .16s}.group[open]>:not(summary){animation:enter .16s ease-out}@keyframes enter{from{opacity:.5;transform:translateY(-2px)}to{opacity:1;transform:none}}}
.exportline{flex-wrap:wrap}.modes button:last-child:nth-child(odd){grid-column:span 2}
.filter-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 10px;margin:8px 0}.filter-row .option{margin:0}.tip-toggle{padding:0;width:20px;height:20px;border-radius:50%;font-size:12px;color:var(--soft)}.filter-tip{display:none;grid-column:1/-1;padding:8px 10px;background:#12191e;border-left:2px solid var(--accent);border-radius:3px;color:#ccd7dd;font-size:12px}.tip-toggle:is(:hover,:focus-visible,[aria-expanded=true])+.filter-tip{display:block}
#importDialog{color:var(--text);background:#1b232a;border:1px solid #47545e;border-radius:16px;padding:24px;width:min(440px,calc(100% - 30px));box-shadow:0 24px 90px #0008}#importDialog::backdrop{background:#070b10b8;backdrop-filter:blur(4px)}.dialog-head{display:flex;align-items:center;justify-content:space-between}#dismiss{width:30px;height:30px;padding:0;font-size:21px}#importTitle{font-size:28px;margin-top:12px}#importDialog p,#dropzone span{color:var(--soft);line-height:1.5}#dropzone{display:grid;justify-items:center;gap:9px;text-align:center;border:1px dashed #59776f;border-radius:10px;padding:26px 12px;background:#172622}#dropzone.dragging{background:#294b40;border-color:var(--accent)}#dropzone svg{color:var(--accent);width:32px;height:32px}#browse{background:var(--accent);color:#132a23;margin-top:8px}#importFeedback:empty{display:none}
@media(prefers-reduced-motion:no-preference){#importDialog[open],.ink-panel:not([hidden]),.filter-tip{animation:revealPanel .19s ease-out}button:active:not(:disabled){transform:scale(.97)}button{transition:transform .12s ease,background .15s,border-color .15s}#dropzone{transition:background .16s,border-color .16s}@keyframes revealPanel{from{opacity:.4;transform:translateY(5px)}to{opacity:1;transform:none}}}
.region-tools{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:8px 12px;background:#171e24;border-bottom:1px solid var(--line)}.region-tools label{color:var(--soft);font-size:12px}.region-tools button{font-size:12px;padding:6px 9px}.region-tools button[aria-pressed=true]{background:#25483e;color:var(--accent)}#regionHint{margin:0;padding:6px 12px;color:var(--accent);font-size:12px}.mat{position:relative}#outlines{position:absolute;pointer-events:none;z-index:1;overflow:hidden;stroke:none}#outlines polygon{fill:#94ffe709;stroke:#aeefde;stroke-width:1.5;stroke-dasharray:5 3}.drawing{cursor:crosshair;touch-action:none}.reset-row{display:flex;align-items:center;gap:6px;min-width:0}.reset-row>:first-child{flex:1;min-width:0}.reset-setting{padding:0;width:22px;height:22px;flex:none;font-size:15px;color:#adbac0;background:transparent;border-color:transparent}.reset-setting:hover{color:var(--accent)}#colors .ink-tabs{grid-template-columns:1fr}#colors .reset-row .ink-tab{justify-content:flex-start}.filter-row .reset-row{width:100%}#glyphs .reset-row{margin:7px 0}.exportline .reset-row select{max-width:100%}#viewer:fullscreen .mat{flex:1}
/* A viewport-sized workspace; only one tool category is open at a time. */
header{height:58px;min-height:58px;padding-block:8px}
main{height:calc(100dvh - 58px);min-height:0;max-width:none;padding:16px;gap:16px;align-items:stretch;grid-template-columns:minmax(0,1fr) 336px}
article{position:static;min-height:0;display:flex;flex-direction:column}
.workspace-title{flex:none;margin-bottom:12px}.eyebrow{display:none}h1{font-size:27px}
#viewer{flex:1;min-height:0;display:flex;flex-direction:column}
.mat{flex:1;min-height:0;height:auto;padding:12px}
canvas{max-width:100%;max-height:100%;object-fit:contain}
.monitorbar{padding:6px 12px;flex:none}figcaption{min-height:34px;padding:6px 12px;flex:none}
.region-tools{padding:6px 10px;flex:none}.exportline{flex:none;margin-top:10px;padding:7px 10px}.messages{flex:none;min-height:0}.messages:has(span:not(:empty)){min-height:17px}
aside{align-self:start;min-height:0;max-height:100%}.aside-title{padding:11px 15px}
.tool-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;padding:8px;background:#151d23;border-top:1px solid var(--line)}
.tool-tabs button{font-size:12px;padding:8px 2px;border:0;background:transparent;color:var(--soft);border-radius:5px}
.tool-tabs button[aria-selected=true]{background:#2b433c;color:#bef0df}
aside > .group{padding:14px 15px}aside > details.group > summary{display:none}
#glyphs{margin-top:12px}#colors{margin-block:0}
.filter-row{margin:11px 0}.filter-row:first-of-type{margin-top:0}.filter-row:last-of-type{margin-bottom:0}
.filter-tip{position:fixed;z-index:20;width:260px;box-shadow:0 7px 30px #0008;font-size:12px;line-height:1.4}
#colors .ink-panel small{font-size:10px}#colors .ink-plane{height:125px}
@media(max-height:720px) and (min-width:681px){
 main{padding:10px;gap:10px}.workspace-title{margin-bottom:8px}.aside-title{padding:8px 14px}.tool-tabs{padding:5px}
 aside > .group{padding:10px 14px}.modes button{padding:8px 10px}.modes{gap:5px}
 #colors .ink-panel{padding:9px}#colors .ink-plane{height:90px}#colors .ink-panel small{display:none}
 .option{margin-top:8px}.filter-row{margin:8px 0}#glyphs .reset-row{margin:5px 0}#specimen{padding:5px 8px}
}
@media(max-width:680px){
 header{height:50px;min-height:50px}.brand{font-size:17px}
 main{height:calc(100dvh - 50px);padding:8px;gap:8px;grid-template-columns:1fr;grid-template-rows:minmax(220px,1fr) auto}
 .workspace-title{display:none}.mat{padding:6px}.monitorbar{padding:4px 8px}
 .region-tools{gap:4px;padding:4px 6px}.region-tools button{padding:5px;font-size:11px}.region-tools label{font-size:0}
 .region-tools select{font-size:11px;padding:4px}.exportline{gap:5px;padding:5px 6px;margin-top:6px}.exportline>label{font-size:0}.exportline>label svg{width:14px}
 .exportline .reset-row select{font-size:11px}.aside-title{display:none}
 .tool-tabs{padding:4px}.tool-tabs button{padding:6px 2px}
 aside>.group{padding:8px 12px}.modes{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin-top:5px}.modes button{flex-direction:column;justify-content:center;font-size:10px;padding:5px 1px;gap:3px}
 #glyphs{margin-top:6px}#glyphs .reset-row{margin:4px 0}#glyphs label{margin:0}
 #specimen{display:none}#colors .ink-tabs{grid-template-columns:1fr 1fr}
 #colors .ink-panel{padding:8px}#colors .ink-plane{height:85px}#colors .ink-panel small{display:none}
 .filter-row{margin:5px 0}#ranges input{margin:3px 0 6px}
}
@media(max-height:470px){main{height:auto;min-height:calc(100dvh - 58px)}article{min-height:330px}}
