:root{--chrome:#c9c4b6;--chrome-hi:#f6f3e8;--chrome-lo:#8c8674;--chrome-lo2:#46402f;--ink:#241f17;--ink-soft:#4a4336;--paper:#fbf8ee;--teal:#0e7a77;--teal-dk:#075250;--violet:#5b3a8e;--amber:#d98c2b;--desktop:#0a6e6b;--font-display:"Alfa Slab One", Georgia, serif;--font-pixel:"VT323", "Courier New", monospace;--font-body:"IBM Plex Sans", Arial, sans-serif}*{box-sizing:border-box}body{background:linear-gradient(160deg, var(--desktop), var(--teal-dk) 70%);color:var(--ink);font-family:var(--font-body);min-height:100vh;margin:0}#app{max-width:1080px;margin:0 auto;padding:24px 16px}.win-raised{background:var(--chrome);box-shadow:inset 1px 1px 0 var(--chrome-hi), inset -1px -1px 0 var(--chrome-lo2), inset 2px 2px 0 var(--chrome), inset -2px -2px 0 var(--chrome-lo)}.win-sunken{background:var(--paper);box-shadow:inset 1px 1px 0 var(--chrome-lo2), inset -1px -1px 0 var(--chrome-hi), inset 2px 2px 0 var(--chrome-lo), inset -2px -2px 0 var(--chrome)}.window{border:1px solid var(--chrome-lo2)}.titlebar{background:linear-gradient(90deg, var(--teal), var(--violet) 85%);color:var(--chrome-hi);align-items:center;gap:8px;padding:7px 10px;display:flex}.titlebar .ttl{font-family:var(--font-display);letter-spacing:.5px;flex:1;min-width:0;font-size:20px}.menubar{background:var(--chrome);border-bottom:1px solid var(--chrome-lo2);font-family:var(--font-body);color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:18px;padding:6px 12px;font-size:13px;font-weight:500;display:flex}.menubar a{color:inherit;text-decoration:none}.menubar .grow{flex:1}.menubar .auth{font-family:var(--font-pixel);font-size:15px}.menubar .auth a{color:var(--teal-dk)}main{background:var(--chrome);padding:16px}.panel{margin-bottom:16px;padding:3px}.panel-inner{background:var(--paper);box-shadow:inset 1px 1px 0 var(--chrome-lo2), inset -1px -1px 0 var(--chrome-hi);padding:18px}.panel-head{font-family:var(--font-pixel);letter-spacing:1px;text-transform:uppercase;color:var(--teal-dk);background:var(--paper);margin:-12px 0 14px -4px;padding:0 6px;font-size:19px;display:inline-block}h1{font-family:var(--font-display);color:var(--teal-dk);margin:0 0 12px;font-size:26px}p{margin:.4em 0;line-height:1.55}a{color:var(--teal-dk)}ul.plain{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}ul.plain li a,ul.plain li .row{color:var(--ink);justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;text-decoration:none;display:flex}ul.plain li:nth-child(odd){background:#00000008}ul.plain li a:hover{background:var(--chrome)}.status-chip{font-family:var(--font-pixel);border:1px solid var(--chrome-lo2);text-transform:uppercase;letter-spacing:.5px;padding:1px 8px;font-size:14px}.status-chip.draft{background:var(--amber);color:var(--ink)}.status-chip.validated{background:var(--teal);color:var(--chrome-hi)}button.win-raised{font-family:var(--font-body);cursor:pointer;color:var(--ink);border:none;padding:7px 16px;font-size:13px;font-weight:600}button.win-raised:disabled{color:var(--chrome-lo);cursor:default}button.win-raised:active:not(:disabled){box-shadow:inset -1px -1px 0 var(--chrome-hi), inset 1px 1px 0 var(--chrome-lo2);padding-top:8px}input.win-sunken,select.win-sunken,textarea.win-sunken{font-family:var(--font-body);color:var(--ink);border:none;width:100%;padding:6px 8px;font-size:13px}textarea.win-sunken{resize:vertical}.field{flex-direction:column;gap:4px;max-width:420px;margin-bottom:12px;display:flex}.field label{font-family:var(--font-pixel);color:var(--ink-soft);font-size:15px}.row-inline{align-items:center;gap:8px;font-size:13px;display:flex}.checkish{flex:none;justify-content:center;align-items:center;width:16px;height:16px;display:flex}.checkish.on:after{content:"✓";color:var(--teal-dk);font-size:13px;font-weight:700}.tree{margin:0;padding-left:18px;list-style:none}.tree>li{margin:2px 0}.tree-root{padding-left:0}.tree-node{align-items:center;gap:6px;padding:4px 6px;display:flex}.tree-node .name{color:var(--ink);flex:1;text-decoration:none}.tree-node .name:hover{text-decoration:underline}.statusbar{font-family:var(--font-pixel);font-size:15px;display:flex}.statusbar div{padding:4px 10px}.statusbar .grow{flex:1}.error-text{color:#8c3b2a}
