:root{--ink:#101820;--paper:#1a2830;--paper-2:#243640;--text:#eef4f0;--muted:#8aa0a4;--line:#3a5058;--gem:#3ec8a8;--gem-dim:#3ec8a829;--gold:#e0b060;--gold-dim:#e0b06029;--copper:#d08858;--copper-dim:#d0885829;--progress:#5cb8d4;--progress-dim:#5cb8d429;--danger:#e07070;--ok:#7cba86;--ok-dim:#7cba8624;--focus-ring:#3ec8a861;color:var(--text);background:var(--ink);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Iowan Old Style,Palatino,Georgia,serif;line-height:1.5}*{box-sizing:border-box}body{background:radial-gradient(780px 360px at 92% -8%, #3ec8a824, transparent 54%), radial-gradient(600px 300px at 8% 0%, #e0b0601a, transparent 50%), var(--ink);min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}button,input,select,textarea{font-family:inherit}button{cursor:pointer;font-family:Segoe UI,Avenir Next,system-ui,sans-serif}input,select,textarea{color:var(--text)}.app{width:min(640px,100% - 28px);margin:0 auto;padding:26px 0 72px}.top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.brand{align-items:center;gap:12px;display:flex}.mark{flex:none;width:48px;height:48px}h1{letter-spacing:-.03em;margin:0;font-size:1.85rem;font-weight:750}.tag{color:var(--gem);margin:2px 0 0;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.98rem;font-weight:650}.tools{z-index:20;flex-wrap:wrap;gap:8px;display:flex;position:relative}.ghost,.tiny,.solid{color:var(--text);border:1px solid var(--line);background:0 0;border-radius:999px;padding:7px 14px;font-size:.86rem}.ghost:hover,.tiny:hover{background:var(--paper)}.ghost.danger,.tiny.danger{color:var(--danger)}.ghost.warn,.tiny.warn{color:var(--danger);background:#e070701f;border-color:#e0707073}.ghost:disabled,.tiny:disabled,.solid:disabled{opacity:.4;cursor:not-allowed}.solid{background:var(--gem);border-color:var(--gem);color:#082018;font-weight:700}.solid:hover:not(:disabled){filter:brightness(1.05)}.solid.wide{width:100%;min-height:48px;font-size:1.02rem}.tiny{padding:4px 10px;font-size:.74rem}.tiny.check{color:var(--ok);border-color:#7cba8666}.tiny.seat{color:var(--gold);border-color:#e0b06073}.tiny.advance{color:var(--progress);border-color:#5cb8d473}.blurb{color:var(--muted);margin:14px 0 0;font-size:.92rem}.empty{color:var(--muted);margin:0;font-size:.92rem}.notice{background:var(--gem-dim);color:var(--gem);border:1px solid #3ec8a866;border-radius:12px;margin:14px 0 0;padding:10px 14px;font-size:.92rem}.notice.ok{background:var(--ok-dim);color:var(--ok);border-color:#7cba8659}.notice.warn{background:var(--gold-dim);color:var(--gold);border-color:#e0b06066}button.notice{text-align:left;cursor:pointer;width:100%;display:block}.kicker{text-transform:uppercase;letter-spacing:.14em;color:var(--gem);margin:0 0 10px;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.72rem}.counts{flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.counts li{border:1px solid var(--line);background:var(--paper);color:var(--muted);border-radius:999px;padding:6px 12px;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.82rem}.counts strong{font-variant-numeric:tabular-nums;color:var(--text);margin-right:4px}.counts .quests{color:var(--gem);border-color:#3ec8a873}.counts .recruiting{color:var(--gold);border-color:#e0b06073}.composer{background:var(--paper);border:1px solid var(--line);border-radius:16px;margin-top:22px;padding:16px}.hint{color:var(--muted);margin:0;font-size:.8rem}.hint.tight{margin:-4px 0 10px}.gate-form{gap:10px;display:grid}.gate-form label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);gap:4px;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.72rem;display:grid}input[type=text],input[type=number],textarea{background:var(--paper-2);border:1px solid var(--line);width:100%;min-width:0;color:var(--text);resize:vertical;border-radius:12px;padding:9px 12px;font-size:1rem}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--paper-2);color:var(--text);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:.84rem}.chip.on{font-weight:700}.chip.recruiting.on{color:var(--gold);background:var(--gold-dim);border-color:#e0b0608c}.chip.progress.on{color:var(--progress);background:var(--progress-dim);border-color:#5cb8d48c}.chip.done.on{color:var(--ok);background:var(--ok-dim);border-color:#7cba868c}.section{margin-top:28px}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:12px;display:flex}.section-head .kicker{margin:0}.list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.card{border:1px solid var(--line);background:var(--paper);border-radius:14px;gap:12px;padding:12px 14px;display:grid}.card.done{opacity:.86}.card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.card h2{margin:0;font-size:1.12rem;font-weight:700}.card.done h2{color:var(--muted)}.meta{flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0 0;display:flex}.seats{color:var(--gold);margin:0;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.86rem}.milestone{color:var(--text);margin:8px 0 0;font-size:.94rem}.milestone.checked{color:var(--muted);text-decoration:line-through}.note{color:var(--muted);margin:4px 0 0;font-size:.86rem}.badge{border:1px solid var(--line);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-radius:999px;width:fit-content;margin:0;padding:2px 8px;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.68rem;display:inline-block}.badge.recruiting{color:var(--gold);border-color:#e0b06073}.badge.progress{color:var(--progress);border-color:#5cb8d473}.badge.done{color:var(--ok);border-color:#7cba8666}.party{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.member{background:var(--paper-2);color:var(--text);border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:.78rem}.member:hover{border-color:var(--danger);color:var(--danger)}.inline-form{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.card-tools{gap:8px;display:grid}.row-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.empty-bar{width:100%;min-height:72px;color:var(--danger);cursor:pointer;z-index:50;background:#e0707029;border:1px solid #e0707073;border-radius:12px;margin:14px 0 0;font-size:1.05rem;font-weight:650;display:block;position:relative}.foot{color:var(--muted);margin-top:22px;font-size:.8rem}button:focus,input:focus,textarea:focus{border-color:var(--gem);box-shadow:0 0 0 3px var(--focus-ring);outline:none}
