:root{--bg: #11141a;--surface: #1a1f28;--border: #2c3442;--text: #e8ecf2;--muted: #9aa5b5;--accent: #4f8cff;--danger: #e5484d;--ok: #35c18f;--radius: 8px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Noto Sans,Noto Sans SC,sans-serif;color-scheme:dark}:root[data-theme=light]{--bg: #f5f7fa;--surface: #ffffff;--border: #d5dbe3;--text: #17202c;--muted: #5b6676;--accent: #1f5fd1;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);line-height:1.5}a{color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:16px;top:8px;z-index:10;background:var(--surface);padding:8px 12px}.shell{display:grid;grid-template-columns:220px 1fr;grid-template-rows:auto 1fr;min-height:100vh}.topbar{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:center;padding:10px 20px;border-bottom:1px solid var(--border);background:var(--surface)}.topbar-right{display:flex;gap:12px;align-items:center}.brand{font-weight:700;font-size:18px}.sidebar{border-right:1px solid var(--border);padding:12px}.sidebar ul{list-style:none;margin:0;padding:0}.sidebar a{display:block;padding:7px 10px;border-radius:var(--radius);color:var(--text);text-decoration:none}.sidebar a.active{background:color-mix(in srgb,var(--accent) 20%,transparent);font-weight:600}.nav-heading{font-size:12px;text-transform:uppercase;color:var(--muted);margin:16px 10px 4px}.content{padding:20px 28px;max-width:1200px;width:100%}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin:12px 0}.card-list{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.form{display:flex;flex-direction:column;gap:12px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.span-2{grid-column:1 / -1}label{display:flex;flex-direction:column;gap:4px;font-size:14px}fieldset label,.track label{flex-direction:row;align-items:center;gap:6px}input,select,textarea{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:7px 9px}button,.button{font:inherit;background:var(--accent);color:#fff;border:none;border-radius:6px;padding:8px 14px;cursor:pointer;text-decoration:none;display:inline-block}button.secondary,.button.secondary{background:transparent;color:var(--text);border:1px solid var(--border)}button.danger{background:var(--danger)}button:disabled{opacity:.5;cursor:not-allowed}.actions,.filters,.inline-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:10px 0}.page-header{display:flex;justify-content:space-between;align-items:center;gap:12px}table{width:100%;border-collapse:collapse;margin:8px 0}th,td{text-align:left;padding:8px;border-bottom:1px solid var(--border);vertical-align:top}.muted{color:var(--muted)}.alert{padding:10px 12px;border-radius:6px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.alert-error{background:color-mix(in srgb,var(--danger) 18%,transparent)}.alert-ok{background:color-mix(in srgb,var(--ok) 18%,transparent)}.badge{font-size:12px;background:var(--accent);color:#fff;border-radius:10px;padding:1px 8px}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.stat-value{font-size:26px;font-weight:700}.stat-label{color:var(--muted);font-size:13px}.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}.chart figcaption{font-weight:600;margin-bottom:8px}.auth-page{min-height:100vh;display:grid;place-items:center;padding:16px}.auth-card{width:min(420px,100%)}.auth-header{display:flex;justify-content:space-between;align-items:center}.sso{display:flex;flex-direction:column;gap:8px}.divider{text-align:center;color:var(--muted)}.tracks{display:grid;grid-template-columns:1fr 1fr;gap:16px}.controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:12px}.controls label{flex-direction:row;align-items:center}.transcript{min-height:160px;max-height:420px;overflow-y:auto}.turn{padding:4px 0}.turn-action{color:var(--muted)}.graph{width:100%;max-height:360px;color:var(--text)}.graph .node{fill:var(--surface);stroke:var(--accent)}.graph text{fill:var(--text)}.graph-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:12px;align-items:start}.graph-canvas{overflow:auto;max-height:560px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg)}.graph-editor .graph{max-height:none;width:auto;touch-action:none;-webkit-user-select:none;user-select:none}.graph .gnode{cursor:grab}.graph .gnode:focus,.graph .edge:focus{outline:none}.graph .gnode:focus-visible .node,.graph .gnode.selected .node{stroke-width:3;stroke:var(--ok)}.graph .gnode:focus-visible .node{stroke-dasharray:4 2}.graph .gnode.invalid .node{stroke:var(--danger)}.graph .node-sub{fill:var(--muted)}.graph .port{fill:var(--accent);cursor:crosshair}.graph .start-mark{fill:var(--ok)}.graph .edge{cursor:pointer}.graph .edge-line{stroke:currentColor;stroke-opacity:.6;stroke-width:1.5}.graph .edge-hit{stroke:transparent;stroke-width:12}.graph .edge.selected .edge-line,.graph .edge:focus-visible .edge-line{stroke:var(--ok);stroke-opacity:1;stroke-width:3}.graph .drafting{stroke-dasharray:5 4}.graph-panel{border:1px solid var(--border);border-radius:var(--radius);padding:12px}.graph-panel h3{margin-top:0}label.checkbox{flex-direction:row;align-items:center;gap:6px}.problems{display:block;padding-left:28px}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:16px;background:#0000008c}.dialog{width:min(480px,100%);max-height:calc(100vh - 32px);overflow-y:auto;margin:0}.dialog h2{margin:0}.score-bar meter{width:100%;height:10px}.ipa{font-family:Charis SIL,Doulos SIL,Noto Sans,Segoe UI,sans-serif}fieldset{border:1px solid var(--border);border-radius:var(--radius)}h1:focus,h2:focus{outline:none}h1:focus-visible,h2:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.details-grid{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px}.details-grid dd{margin:0}.swagger-container{background:#fff;border-radius:var(--radius)}@media (max-width: 760px){.shell{grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--border)}.sidebar ul{display:flex;flex-wrap:wrap;gap:4px}.grid-2,.tracks,.graph-layout{grid-template-columns:1fr}}.public-docs{max-width:1200px;margin:0 auto;padding:1rem}
