:root{--paper: #f4eddc;--paper-2: #fbf7ec;--paper-3: #fdfbf3;--ink: #1f2433;--ink-2: #4b4a45;--muted: #6a6357;--faint: #9a917f;--rule: #d9cfb5;--rule-soft: #ddd3ba;--hl: #ece5cf;--red: #b23a30;--green: #2b6f62;--amber: #b7862c;--serif: "Newsreader", "Iowan Old Style", Georgia, serif;--sans: "Libre Franklin", "Helvetica Neue", Arial, sans-serif;--mono: "IBM Plex Mono", "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font:13px/1.4 var(--sans);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}input,select{font:inherit;color:var(--ink);background:var(--paper-3);border:1.5px solid var(--ink);padding:8px 10px;border-radius:0}input:focus,select:focus{outline:2px solid var(--amber);outline-offset:1px}.serif{font-family:var(--serif)}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.lbl{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600}.muted{color:var(--muted)}.faint{color:var(--faint)}.pos{color:var(--green)}.neg{color:var(--red)}.stamp{display:inline-block;border:2px solid var(--red);color:var(--red);font-weight:700;font-size:10px;letter-spacing:.16em;text-transform:uppercase;padding:2px 6px;border-radius:2px;white-space:nowrap}.stamp.ink{border-color:var(--ink);color:var(--ink)}.stamp.green{border-color:var(--green);color:var(--green)}.stamp.amber{border-color:var(--amber);color:var(--amber)}.stamp.tilt{transform:rotate(-3deg)}.card{background:var(--paper-2);border:1px solid var(--rule);box-shadow:0 1px #e3d9c0,0 6px 14px -10px #32281459}.card-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:10px 14px 6px}.card-body{padding:0 14px 12px}.scroll-x{overflow-x:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 14px;border:1.5px solid var(--ink);font-weight:600;font-size:13px;background:var(--paper-3)}.btn.primary{background:var(--ink);color:var(--paper);letter-spacing:.06em;text-transform:uppercase}.btn.small{min-height:30px;padding:0 10px;font-size:11px}.btn:disabled{opacity:.4;cursor:default}table{border-collapse:collapse;width:100%}th{text-align:right;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:4px 6px;border-bottom:1px solid var(--rule)}th:first-child,td:first-child{text-align:left}td{padding:6px;text-align:right;border-bottom:1px dotted var(--rule-soft);font-size:12px;vertical-align:middle}td.best{background:var(--hl);font-weight:600}.gauge{display:inline-block;width:46px;height:7px;background:var(--rule-soft);position:relative;vertical-align:middle}.gauge i{position:absolute;left:0;top:0;bottom:0;background:var(--ink)}.gauge.alert i{background:var(--red)}.app{height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:22px;padding:0 20px;height:58px;background:var(--paper-2);border-bottom:2px solid var(--ink);flex:none}.brand{font-family:var(--serif);font-size:24px;font-weight:600;letter-spacing:.04em}.turn{font-family:var(--serif);font-size:19px;font-style:italic}.stat{display:flex;flex-direction:column;line-height:1.15}.stat b{font-family:var(--mono);font-size:15px;font-weight:600}.ap{display:flex;gap:4px}.ap i{width:13px;height:13px;border:2px solid var(--ink);display:block}.ap i.on{background:var(--ink)}.spacer{flex:1}.desk{flex:1;min-height:0;display:grid;grid-template-columns:300px minmax(0,1fr) 350px;gap:14px;padding:14px 18px}.col{display:flex;flex-direction:column;gap:14px;min-height:0;overflow:auto}.col.center{overflow:auto}.board-card{flex:none;height:clamp(320px,50vh,560px);position:relative;overflow:hidden;background:#f7f1e1}.board-card svg{display:block;width:100%;height:100%}.board-note{position:absolute;top:10px;left:14px;right:14px;display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--muted);pointer-events:none}.turnsheet{display:flex;align-items:center;gap:12px;padding:0 20px;height:54px;background:var(--paper-2);border-top:2px solid var(--ink);flex:none;overflow-x:auto}.chip{font-size:12px;border:1px solid var(--ink);padding:4px 10px;background:var(--paper-3);white-space:nowrap}.chip.done{border-color:var(--faint);color:var(--ink-2)}.tabs{display:none}.dispatch{border:1px solid var(--rule);padding:10px 12px;background:var(--paper-3);position:relative}.dispatch.bullish{border-color:var(--green)}.dispatch.bearish{border-color:var(--red)}.dispatch h4{font-family:var(--serif);font-size:16px;font-weight:600;margin:0 80px 3px 0;line-height:1.2}.dispatch p{margin:0;font-size:11.5px;color:var(--ink-2);line-height:1.35}.dispatch .stamp{position:absolute;top:8px;right:10px}.tender{display:grid;grid-template-columns:48px 1fr auto;gap:8px;align-items:center;padding:7px 0;border-bottom:1px dotted var(--rule-soft)}.tender:last-child{border-bottom:0}.cargo{border:1px solid var(--ink);padding:10px 12px;background:var(--paper-3);display:flex;flex-direction:column;gap:6px}.kv{display:flex;justify-content:space-between;gap:10px;font-size:12px}.kv span{color:var(--muted)}.hubrow{cursor:pointer}.hubrow:hover td{background:var(--hl)}.hub-node{cursor:pointer}.hub-node:hover circle:first-child{fill:var(--hl)}.overlay{position:fixed;inset:0;background:#1f243359;display:flex;align-items:center;justify-content:center;z-index:20;padding:20px}.sheet{background:var(--paper-2);border:2px solid var(--ink);width:min(520px,100%);max-height:100%;overflow:auto;padding:18px 20px 20px;display:flex;flex-direction:column;gap:14px;box-shadow:0 20px 40px -20px #1f243399}.sheet h2{font-family:var(--serif);font-size:24px;font-weight:600;margin:2px 0 0;line-height:1.15}.stepper{display:flex;align-items:center;gap:12px}.stepper button{width:56px;height:56px;border:2px solid var(--ink);font-size:26px;font-weight:600;display:flex;align-items:center;justify-content:center}.stepper .val{flex:1;text-align:center;font-family:var(--mono);font-size:44px;font-weight:600;line-height:1}.stepper input{width:100%;text-align:center;font-family:var(--mono);font-size:40px;font-weight:600;border:0;background:transparent;padding:0}.dest{display:grid;grid-template-columns:1fr auto auto;gap:0 14px;padding:9px 12px;border-top:1px dotted var(--rule-soft);align-items:baseline;cursor:pointer}.dest.best,.dest:hover{background:var(--hl)}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.reveal-line{padding:8px 0;border-bottom:1px dotted var(--rule-soft);font-size:13px;opacity:0;animation:fade .35s forwards}.reveal-line.mine{font-weight:600}.reveal-line.alert{color:var(--red)}@keyframes fade{to{opacity:1}}.err{color:var(--red);font-size:12px;min-height:16px}.start{max-width:640px;margin:40px auto;padding:0 20px;display:flex;flex-direction:column;gap:18px}.start .scen{border:1px solid var(--ink);background:var(--paper-3);padding:14px 16px;display:flex;flex-direction:column;gap:6px;text-align:left}.start .scen:hover{background:var(--hl)}@media(max-width:900px){.topbar{height:auto;padding:max(10px,env(safe-area-inset-top)) 16px 10px;gap:12px}.topbar .brand,.topbar .stat.desktop,.topbar .btn{display:none}.topbar .stat b{white-space:nowrap}.desk{display:block;padding:0;overflow:auto}.col{display:none;padding:12px;gap:12px}.col.active{display:flex;overflow:visible}.col.center.active{display:flex}.board-card{height:400px;flex:none}.turnsheet{height:auto;padding:8px 12px}.tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-top:2px solid var(--ink);background:var(--paper-2);padding-bottom:env(safe-area-inset-bottom);flex:none}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:64px;font-size:10px;font-weight:600;letter-spacing:.08em;color:var(--ink-2);position:relative}.tab.on{background:var(--ink);color:var(--paper)}.tab .dot{position:absolute;top:10px;right:22%;width:8px;height:8px;border-radius:50%;background:var(--red)}.overlay{align-items:flex-end;padding:0}.sheet{width:100%;border-width:3px 0 0;padding-bottom:max(20px,env(safe-area-inset-bottom))}}.rv-panel{padding:14px 16px 16px;display:flex;flex-direction:column;gap:12px;flex:1;min-height:0}.rv-body{overflow:auto;flex:1;min-height:0;display:flex;flex-direction:column;gap:2px}.rv-act{padding:12px 0 4px;border-bottom:1px solid var(--ink);margin-bottom:4px}.rv-tender{display:flex;gap:8px;align-items:baseline;font-size:12.5px;padding:8px 0 4px}.rv-bid{display:flex;justify-content:space-between;padding:3px 0 3px 26px;font-size:13px;color:var(--ink-2)}.rv-bid.mine{color:var(--ink);font-weight:600;border-left:3px solid var(--ink);padding-left:23px}.rv-out{padding:4px 0 8px 26px;font-size:12.5px;font-style:italic;border-bottom:1px dotted var(--rule-soft)}.rv-out.mine{color:var(--green);font-weight:600;font-style:normal}.rv-line{padding:6px 0;border-bottom:1px dotted var(--rule-soft);font-size:12.5px}.rv-line.mine{font-weight:600}.rv-line.alert{color:var(--red)}.rv-price{display:flex;align-items:baseline;gap:12px;padding:10px 0;font-size:18px}.flip{animation:flip .6s cubic-bezier(.2,.7,.2,1) both;transform-origin:center;margin:6px 0}@keyframes flip{0%{transform:perspective(600px) rotateY(90deg);opacity:0}to{transform:none;opacity:1}}.rv-overlay{background:transparent;pointer-events:none}.rv-sheet{pointer-events:auto;max-height:56vh}.tutorial{display:flex;align-items:center;gap:12px;padding:8px 20px;background:#fff8e6;border-bottom:1px solid var(--amber)}@media(max-width:900px){.tutorial{padding:8px 12px;align-items:flex-start}}.sheet.debrief{width:min(860px,100%);max-height:92vh;gap:18px}.debrief section{display:flex;flex-direction:column}.bridge{display:flex;flex-direction:column;gap:4px}.bridge-row{display:grid;grid-template-columns:220px 1fr 64px;gap:10px;align-items:center;font-size:12.5px}.bridge-row small{display:block;font-size:10px;color:var(--faint);font-weight:400}.bridge-row i{display:block;height:12px;background:var(--rule-soft);position:relative}.bridge-row i b{display:block;height:100%}.bridge-row.total{font-weight:600;border-top:1px solid var(--ink);padding-top:6px}.bridge-row .mono:last-child{text-align:right}.lesson{border:1px solid var(--rule);border-left-width:4px;padding:8px 10px;background:var(--paper-3)}.lesson.bad{border-left-color:var(--red)}.lesson.warn{border-left-color:var(--amber)}.lesson.good{border-left-color:var(--green)}.lesson.info{border-left-color:var(--faint)}@media(max-width:900px){.bridge-row{grid-template-columns:1fr 56px}.bridge-row i{display:none}.sheet.debrief{max-height:100vh}}
