:root{color-scheme:dark;--ink: #1a1512;--paper: #e9e2d2;--paper-2: #cfc4ad;--teal: #4fb3a9;--brass: #c9a24a;--red: #d9534f;--table: #2a2320}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--table);color:var(--paper);font-family:Avenir Next,Segoe UI,system-ui,sans-serif}#app{height:100%}button{font:inherit}.qw-menu{max-width:560px;margin:0 auto;padding:8vh 24px 40px}.qw-kicker{font-family:JetBrains Mono,Menlo,monospace;font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--brass)}.qw-h1{font-size:clamp(40px,9vw,64px);margin:6px 0 8px;letter-spacing:.02em;font-weight:800;color:var(--paper)}.qw-lede{color:var(--paper-2);max-width:44ch;line-height:1.5;margin:0 0 28px}.qw-chapter{font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--paper-2);margin:10px 0}.qw-levels{display:grid;gap:10px}.qw-level{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:12px;text-align:left;padding:14px 16px;border-radius:10px;border:1px solid rgba(233,226,210,.14);background:#e9e2d20d;color:var(--paper);cursor:pointer}.qw-level:hover{border-color:var(--teal);background:#4fb3a91a}.qw-level-num{font-family:JetBrains Mono,Menlo,monospace;color:var(--brass);font-size:18px;letter-spacing:.05em;white-space:nowrap}.qw-level{grid-template-columns:56px 1fr auto}.qw-level-name{font-size:17px;font-weight:600}.qw-level-par{font-family:JetBrains Mono,Menlo,monospace;font-size:12px;color:var(--paper-2)}.qw-play{position:relative;height:100%}.qw-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.qw-hud{position:absolute;left:0;right:0;top:0;display:flex;align-items:center;gap:16px;padding:14px 18px;pointer-events:none}.qw-title{font-weight:700;font-size:18px}.qw-moves{font-family:JetBrains Mono,Menlo,monospace;font-size:13px;color:var(--paper-2)}.qw-bar{margin-left:auto;display:flex;gap:8px;pointer-events:auto}.qw-btn{padding:8px 14px;border-radius:8px;border:1px solid rgba(233,226,210,.25);background:#1a1512b3;color:var(--paper);cursor:pointer}.qw-btn:hover{border-color:var(--teal)}.qw-btn:disabled{opacity:.4;cursor:default}.qw-btn.qw-primary{background:var(--teal);color:var(--ink);border-color:var(--teal);font-weight:700}.qw-btn.qw-ghost{background:transparent}.qw-rot{width:40px;padding:8px 0}.qw-card[hidden]{display:none}.qw-card{position:absolute;left:50%;bottom:8vh;transform:translate(-50%);min-width:280px;max-width:92vw;padding:20px 24px;border-radius:14px;background:#e9e2d2f5;color:var(--ink);display:flex;flex-direction:column;align-items:center;gap:8px;box-shadow:0 20px 60px #00000080}.qw-card .qw-btn{border-color:#1a15124d;background:transparent;color:var(--ink)}.qw-card .qw-btn.qw-primary{background:var(--ink);color:var(--paper)}.qw-card-kicker{font-family:JetBrains Mono,Menlo,monospace;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#6b5a3c}.qw-card-title{font-size:24px;font-weight:800}.qw-card-stars{font-size:26px;color:var(--brass);letter-spacing:.1em}.qw-card-text{color:#4a4238;font-size:14px}.qw-loading{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:var(--table)}.qw-loading-title{font-size:28px;font-weight:800}.qw-loading-bar{width:min(420px,80vw);height:6px;border-radius:3px;background:#e9e2d226;overflow:hidden}.qw-loading-fill{height:100%;width:5%;background:var(--teal);transition:width .3s ease-out}@media(max-width:640px){.qw-hud{flex-wrap:wrap;gap:8px;padding:10px 12px}.qw-bar{margin-left:0;width:100%}.qw-btn{padding:10px 12px}}.qw-edit{display:grid;grid-template-rows:auto minmax(0,1fr);height:100%}.qw-edit-top{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(233,226,210,.12);flex-wrap:wrap}.qw-edit-top .qw-spacer{flex:1}.qw-edit-body{display:grid;grid-template-columns:232px minmax(0,1fr) 320px;min-height:0}.qw-edit-left,.qw-edit-right{overflow:auto;padding:12px;display:flex;flex-direction:column;gap:14px}.qw-edit-left{border-right:1px solid rgba(233,226,210,.12)}.qw-edit-right{border-left:1px solid rgba(233,226,210,.12)}.qw-edit-board{min-width:0;min-height:0;overflow:auto;background:#211b18;display:flex;align-items:center;justify-content:center}.qw-edit-board svg{max-width:100%;max-height:100%;touch-action:none;user-select:none;-webkit-user-select:none;cursor:crosshair}.qw-edit-board svg.tool-select{cursor:default}.qw-edit-board [data-node],.qw-edit-board [data-piece],.qw-edit-board [data-edge]{cursor:pointer}.qw-edit-preview{width:100%;aspect-ratio:4 / 3;border-radius:10px;display:block;background:var(--table)}.qw-panel-h{font-family:JetBrains Mono,Menlo,monospace;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--brass);margin:0 0 6px}.qw-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px}.qw-tool{padding:8px 6px;border-radius:8px;border:1px solid rgba(233,226,210,.2);background:#e9e2d20a;color:var(--paper);cursor:pointer;font-size:13px}.qw-tool.qw-on{background:var(--teal);color:var(--ink);border-color:var(--teal);font-weight:700}.qw-tool kbd{opacity:.55;font-family:JetBrains Mono,Menlo,monospace;font-size:10px;margin-left:4px}.qw-hint{font-size:12px;color:var(--paper-2);line-height:1.45;margin:0}.qw-field{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px;min-height:28px}.qw-field>span:first-child{color:var(--paper-2)}.qw-edit input[type=text],.qw-edit select,.qw-edit textarea{font:inherit;font-size:13px;padding:5px 8px;border-radius:6px;border:1px solid rgba(233,226,210,.25);background:#1a1512b3;color:var(--paper)}.qw-edit input[type=text]{width:110px}.qw-edit-top input[type=text]{width:200px;font-weight:600}.qw-edit input[type=checkbox]{accent-color:var(--teal);width:16px;height:16px}.qw-edit input[type=range]{width:100%;accent-color:var(--teal)}.qw-edit .qw-btn{padding:6px 12px;font-size:13px}.qw-btn.qw-danger{border-color:#d9534f99;color:#f0a09c}.qw-btn.qw-small{padding:4px 8px;font-size:12px}.qw-row{display:flex;gap:6px;flex-wrap:wrap}.qw-status{font-weight:700;font-size:15px}.qw-status.ok{color:#86d38f}.qw-status.bad{color:#f08b86}.qw-status.warn{color:var(--brass)}.qw-mono{font-family:JetBrains Mono,Menlo,monospace;font-size:12px;color:var(--paper-2);word-break:break-word;line-height:1.5}.qw-stops{font-family:JetBrains Mono,Menlo,monospace;font-size:12px;color:var(--paper-2)}.qw-dialog{border:none;border-radius:14px;padding:20px 22px;background:var(--paper);color:var(--ink);width:min(560px,92vw);box-shadow:0 20px 60px #00000080}.qw-dialog::backdrop{background:#0000008c}.qw-dialog h2{margin:0 0 12px;font-size:20px}.qw-dialog .qw-field{margin:8px 0}.qw-dialog input[type=text],.qw-dialog textarea{font-family:JetBrains Mono,Menlo,monospace;font-size:12px;width:100%;padding:8px;border-radius:8px;border:1px solid rgba(26,21,18,.3);background:#fff;color:var(--ink)}.qw-dialog textarea{min-height:220px;resize:vertical}.qw-dialog .qw-btn{border-color:#1a15124d;background:transparent;color:var(--ink)}.qw-dialog .qw-btn.qw-primary{background:var(--ink);color:var(--paper)}.qw-dialog .qw-error{color:var(--red);font-size:13px;min-height:1.2em}.qw-dialog label{display:block;font-size:12px;color:#6b5a3c;margin:10px 0 4px;letter-spacing:.1em;text-transform:uppercase}@media(max-width:960px){.qw-edit-body{grid-template-columns:1fr;grid-template-rows:minmax(300px,55vh) auto auto;overflow:auto}.qw-edit-board{order:0}.qw-edit-left{order:1;border-right:none;border-top:1px solid rgba(233,226,210,.12)}.qw-edit-right{order:2;border-left:none;border-top:1px solid rgba(233,226,210,.12)}}
