:root,:root[data-theme=dark]{--bg: #14161a;--bg-panel: #1c1f26;--bg-elev: #232833;--border: #2e3440;--text: #e8eaf0;--text-dim: #9aa3b2;--accent: #2dd4bf;--accent-press: #14b8a6;--warn-bg: #3b2f10;--warn-text: #fbbf24;--input-bg: #10131a;--shadow: 0 4px 24px rgba(0, 0, 0, .4);color-scheme:dark}:root[data-theme=light]{--bg: #f4f6f8;--bg-panel: #ffffff;--bg-elev: #eef1f5;--border: #d8dee6;--text: #1c2330;--text-dim: #5b6675;--accent: #0d9488;--accent-press: #0f766e;--warn-bg: #fef3c7;--warn-text: #92400e;--input-bg: #ffffff;--shadow: 0 4px 24px rgba(30, 40, 60, .12);color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Leelawadee UI,Tahoma,Noto Sans Thai,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1rem;background:var(--bg-panel);border-bottom:1px solid var(--border);gap:1rem}.brand{display:flex;align-items:baseline;gap:.4rem}.brand-mark{font-weight:800;color:var(--accent);letter-spacing:.03em}.brand-name{font-weight:600}.brand-ver{color:var(--text-dim);font-size:.75rem}.topbar-actions{display:flex;align-items:center;gap:.5rem}.file-name{max-width:22rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-dim)}.btn{background:var(--bg-elev);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.45rem .9rem;cursor:pointer;font:inherit;transition:background .15s,border-color .15s}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#05241f;font-weight:700}.btn.primary:hover:not(:disabled){background:var(--accent-press)}.btn.ghost{background:transparent}.lang-switch{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.lang-switch .btn{border:none;border-radius:0;padding:.45rem .6rem}.lang-switch .btn.active{background:var(--accent);color:#05241f;font-weight:700}.file-btn{display:inline-flex;align-items:center;cursor:pointer}.app-body{display:flex;flex:1;min-height:0}.sidenav{width:210px;background:var(--bg-panel);border-right:1px solid var(--border);padding:.75rem .5rem;display:flex;flex-direction:column;gap:.35rem}.nav-item{text-align:left;background:transparent;border:1px solid transparent;color:var(--text);border-radius:8px;padding:.6rem .8rem;cursor:pointer;font:inherit}.nav-item:hover:not(:disabled){background:var(--bg-elev)}.nav-item.active{background:color-mix(in srgb,var(--accent) 16%,transparent);border-color:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent);font-weight:700}.nav-item:disabled{opacity:.4;cursor:not-allowed}.sidenav-hint{margin-top:auto;color:var(--text-dim);font-size:.72rem;line-height:1.5;padding:.5rem}.content{flex:1;overflow:auto;padding:1rem}.empty-hint{color:var(--text-dim);padding:3rem 1rem;text-align:center}.drop-zone{margin:2rem auto;max-width:32rem;border:2px dashed var(--border);border-radius:16px;padding:3rem 2rem;text-align:center;background:var(--bg-panel)}.drop-title{font-size:1.1rem;font-weight:700;margin-bottom:.5rem}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:.9rem 1rem;margin-bottom:.8rem;box-shadow:var(--shadow)}.row{display:flex;align-items:flex-end;gap:.6rem}.wrap{flex-wrap:wrap}.gap{gap:.6rem}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.8rem}.spacer{flex:1}.field{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem}.field>span{color:var(--text-dim)}.field.inline{flex-direction:row;align-items:center;gap:.4rem}input,select{background:var(--input-bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.4rem .6rem;font:inherit}input:focus,select:focus{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:1px}input[type=number]{width:6.5rem}.radio{display:inline-flex;align-items:center;gap:.3rem;cursor:pointer}.warn-banner{background:var(--warn-bg);color:var(--warn-text);border:1px solid color-mix(in srgb,var(--warn-text) 40%,transparent);border-radius:10px;padding:.6rem .9rem;margin-bottom:.8rem}.info-line{display:flex;gap:1rem;align-items:center;color:var(--text-dim)}.info-line strong{color:var(--accent)}.glyph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:.6rem}.glyph-card{position:relative;background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:.5rem .4rem .45rem;display:flex;flex-direction:column;align-items:center;gap:.3rem}.glyph-card.edited{border-color:var(--accent)}.glyph-card canvas{border-radius:6px;background:#f4f4f5}.glyph-meta{display:flex;gap:.35rem;align-items:baseline;font-size:.72rem}.glyph-code{color:var(--text-dim);font-variant-numeric:tabular-nums}.glyph-exist{color:var(--accent)}.glyph-input{width:100%;text-align:center;padding:.25rem;font-size:.95rem}.glyph-clear{position:absolute;top:2px;right:4px;border:none;background:transparent;color:var(--text-dim);cursor:pointer;font-size:.9rem}.glyph-clear:hover{color:#f87171}.dim{color:var(--text-dim)}.preview-title{margin-bottom:.4rem;font-size:.8rem}.text-preview{background:var(--input-bg);border:1px solid var(--border);border-radius:8px;padding:.8rem;max-height:18rem;overflow:auto;white-space:pre-wrap;font-size:.85rem;line-height:1.6}.canvas-wrap{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:1rem;overflow:auto}.page-canvas{display:block;margin:0 auto;background:#fff;border-radius:4px;box-shadow:var(--shadow)}.statusbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.4rem 1rem;background:var(--bg-panel);border-top:1px solid var(--border);font-size:.8rem}.status-main{display:flex;align-items:center;gap:.7rem;min-width:0;flex:1}.status-text{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-log{color:var(--text-dim);max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-log.kind-ok{color:var(--accent)}.status-log.kind-warn{color:var(--warn-text)}.status-log.kind-error{color:#f87171}.progress{width:120px;height:6px;border-radius:3px;background:var(--bg-elev);overflow:hidden;flex-shrink:0}.progress-fill{display:block;height:100%;background:var(--accent);transition:width .2s}
