:root{--ink: #1f2933;--ink2: #52606d;--muted: #7b8794;--line: #d9e2ec;--panel: #ffffff;--panel2: #f5f7fa;--accent: #2f6fd6;--accent2: #e8f0fd;--good: #1e8e3e;--bad: #c62828;--warn: #b26a00;--bar: #1c2530;--bar2: #2a3542;--bar-ink: #e8edf2;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;color:var(--ink)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden;background:#cfe3ef}button{font:inherit;color:inherit;cursor:pointer;border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:5px 10px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:#245bb3}button.on{background:var(--accent2);border-color:var(--accent);color:var(--accent)}button.big{padding:10px 18px;font-size:15px}button.small{padding:2px 8px;font-size:12px}button.link{border:none;background:none;color:var(--accent);padding:2px 0;text-decoration:underline}button.x{border:none;background:none;font-size:18px;line-height:1;padding:0 4px;color:var(--muted)}input,select{font:inherit;border:1px solid var(--line);border-radius:6px;padding:4px 6px;background:#fff;color:var(--ink);min-width:0}kbd{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;background:var(--panel2);border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:1px 5px}.muted{color:var(--muted)}.small{font-size:12px}.good{color:var(--good)}.bad{color:var(--bad)}.num{text-align:right;font-variant-numeric:tabular-nums}p{margin:6px 0;line-height:1.4;overflow-wrap:anywhere}.app{display:grid;grid-template-rows:auto 1fr auto;height:100vh}.main{display:grid;grid-template-columns:78px 1fr 350px;min-height:0}.world-wrap{position:relative;min-width:0;min-height:0;overflow:hidden}.world{position:absolute;top:0;right:0;bottom:0;left:0}.world.tool-road,.world.tool-ban,.world.tool-lanes,.world.tool-control{cursor:crosshair}.side{background:var(--panel2);border-left:1px solid var(--line);overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:8px;padding:8px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px}.panel h2{font-size:16px;margin:0 0 6px;display:flex;align-items:center;gap:6px;overflow-wrap:anywhere}.lbl{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}.block{margin-top:12px}.actions{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap}.err{color:var(--bad);background:#fdecea;border-radius:6px;padding:5px 8px;margin-top:6px;font-size:13px;overflow-wrap:anywhere}.warn{color:var(--warn);background:#fff4e0;border-radius:6px;padding:5px 8px;margin-top:6px;font-size:13px}.note{color:#285e9e;background:#eaf2fc;border-radius:6px;padding:5px 8px;margin-top:6px;font-size:13px;overflow-wrap:anywhere}.field{display:flex;align-items:center;gap:8px;margin-top:8px}.field>span{width:78px;color:var(--ink2);font-size:13px}.field>select,.field>input{flex:1}.field.inline>span{width:auto}.check{display:flex;align-items:center;gap:6px;margin:8px 0;font-size:13px}.topbar{display:flex;align-items:center;gap:18px;padding:6px 12px;background:var(--bar);color:var(--bar-ink)}.topbar button{background:var(--bar2);border-color:#3b4756;color:var(--bar-ink)}.topbar button.on{background:var(--accent);border-color:var(--accent);color:#fff}.topbar button.primary{background:#f0b429;border-color:#f0b429;color:#1c2530}.brand{display:flex;align-items:center;gap:8px;min-width:190px}.brand .logo{font-size:24px}.brand .chapter{font-weight:700}.brand .sub,.topbar .lbl{font-size:11px;color:#9aa5b1}.clock .time{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}.clock .day{font-size:12px;color:#9aa5b1}.clock .rush{color:#f0b429;font-weight:700}.pacebox{display:flex;align-items:center;gap:4px}.pace{min-width:36px;padding:4px 8px}.pace.play{min-width:40px}.speedread{font-size:12px;color:#9aa5b1;margin-left:6px;min-width:70px}.money .val,.live .val{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.live .val.good{color:#6fdc8c}.live .val.bad{color:#ff8a80}.live .small{font-weight:400;color:#9aa5b1}.assess{margin-left:auto}.assess .booked{font-size:13px;color:#f0b429}.assess .passed{font-weight:700;color:#6fdc8c}.menu{display:flex;gap:4px}.toolrail{background:var(--bar);display:flex;flex-direction:column;gap:4px;padding:6px}.toolrail button{display:flex;flex-direction:column;align-items:center;gap:1px;padding:7px 2px 5px;background:transparent;border-color:transparent;color:var(--bar-ink);position:relative}.toolrail button:hover{background:var(--bar2)}.toolrail button.on{background:var(--accent);color:#fff}.toolrail .ic{font-size:19px;line-height:1.1}.toolrail .tl{font-size:11px}.toolrail .key{position:absolute;top:2px;right:4px;font-size:9px;color:#9aa5b1}.toolrail .sep{height:1px;background:#3b4756;margin:6px 4px}.labels{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.plabel{position:absolute;left:0;top:0;white-space:nowrap;font-size:11px;color:#22303c;background:#ffffffc7;border-radius:4px;padding:1px 5px;display:none}.plabel.big{font-size:12px;font-weight:700;background:#1f2933b8;color:#fff}.plabel.gw{background:#2f6fd6d9;color:#fff}.plabel.site{background:#f2c94ce6;color:#3d3210;font-weight:600}.hotcards{position:absolute;top:10px;left:10px;width:300px;display:flex;flex-direction:column;gap:5px}.hotcards-title{font-size:11px;font-weight:700;color:#1f2933;background:#ffffffd9;border-radius:6px;padding:3px 8px;align-self:flex-start}.hotcard{display:flex;align-items:center;gap:8px;text-align:left;background:#fffffff2;border-left:5px solid #d7263d;box-shadow:0 1px 4px #0000001f;padding:6px 8px}.hotcard.sel{outline:2px solid #ff2bd6}.hotcard .rank{font-weight:800;color:var(--muted);width:14px}.hotcard .body{flex:1;min-width:0}.hotcard .name{font-weight:600;font-size:13px;overflow-wrap:anywhere}.hotcard .meta{font-size:11px;color:var(--ink2)}.hotcard .lost{font-weight:700;font-variant-numeric:tabular-nums;font-size:13px;white-space:nowrap}.trend{margin-left:4px;font-size:11px;color:var(--muted)}.trend.up{color:var(--bad)}.trend.down{color:var(--good)}.coach{position:absolute;left:50%;bottom:14px;transform:translate(-50%);width:min(560px,90%);background:#1c2530f0;color:#fff;border-radius:10px;padding:10px 34px 10px 14px;box-shadow:0 3px 14px #00000040}.coach-steps{display:flex;gap:4px;margin-bottom:6px}.coach-steps i{width:22px;height:4px;border-radius:2px;background:#3b4756}.coach-steps i.done{background:#6fdc8c}.coach-steps i.now{background:#f0b429}.coach-text{font-size:13.5px;line-height:1.4}.coach .x{position:absolute;right:8px;top:6px;color:#9aa5b1}.toasts{position:absolute;top:10px;left:320px;right:200px;display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none}.toasts>*{pointer-events:auto}.toast{background:#1c2530eb;color:#fff;border-radius:8px;padding:7px 12px;font-size:13px;display:flex;gap:10px;align-items:center}.toast button{background:#f0b429;border-color:#f0b429;color:#1c2530;padding:2px 8px;font-size:12px}.paused-badge{position:absolute;right:12px;top:10px;background:#ffffffeb;border-radius:8px;padding:5px 10px;font-size:13px;font-weight:600;box-shadow:0 1px 4px #0000001f}.paused-badge.skip{top:44px;background:#1c2530;color:#f0b429}.bottombar{display:flex;align-items:center;gap:14px;padding:5px 10px;background:var(--bar);color:var(--bar-ink);min-height:40px}.bottombar button{background:var(--bar2);border-color:#3b4756;color:var(--bar-ink);font-size:12px;padding:4px 8px}.bottombar button.on{background:var(--accent);border-color:var(--accent);color:#fff}.toggles{display:flex;gap:4px}.legend{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11.5px;flex:1}.legend .lg{display:flex;align-items:center;gap:4px}.legend i{width:12px;height:12px;border-radius:3px;display:inline-block}.log{flex:1;min-width:0;font-size:12px;color:#c3ccd5;line-height:1.35}.logline{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logline .lt{color:#7b8794;font-variant-numeric:tabular-nums}.bottombar .hint{font-size:11px;color:#7b8794;white-space:nowrap}.inspector .back{border:none;background:none;color:var(--accent);padding:0;margin-bottom:6px;font-size:12px}.inspector .dot{width:12px;height:12px;border-radius:50%;display:inline-block;flex:none}.bignum{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums}.explain{font-weight:600;background:var(--panel2);border-radius:8px;padding:8px 10px}.cbar{display:grid;grid-template-columns:20px 1fr 90px 38px;align-items:center;gap:6px;font-size:12.5px;margin:3px 0}.cbar .cn{overflow-wrap:anywhere;line-height:1.25}.cbar .track{height:9px;background:var(--panel2);border-radius:5px;overflow:hidden}.cbar .fill{display:block;height:100%;border-radius:5px}.cbar .cv{text-align:right;font-variant-numeric:tabular-nums}.chain{margin:0;padding-left:0;list-style:none;font-size:13px}.chain li{cursor:pointer;padding:2px 0}.chain li:hover b{color:var(--accent)}.chain .arrow{color:var(--muted)}.jlist,.hotlist,.lostlist,.plan,.bans,.snaps,.cps,.works,.tops,.moved,.opts,.parts,.moves{margin:0;padding:0;list-style:none}.jlist li{font-size:12.5px;padding:3px 0;cursor:pointer;border-bottom:1px solid var(--panel2);overflow-wrap:anywhere}.jlist li:hover{color:var(--accent)}.st{font-size:11px;font-weight:700;border-radius:4px;padding:0 4px;background:var(--panel2)}.st.done{color:var(--good)}.st.late,.st.missed{color:var(--bad)}.st.trav,.st.wait{color:var(--accent)}.hotlist li{display:flex;align-items:center;gap:8px;padding:5px 0;cursor:pointer;border-bottom:1px solid var(--panel2);font-size:13px}.hotlist li:hover .n{color:var(--accent)}.hotlist i{width:10px;height:10px;border-radius:50%;flex:none}.hotlist .n{flex:1;overflow-wrap:anywhere}.hotlist .v{font-variant-numeric:tabular-nums;color:var(--ink2)}.prompt p{font-style:italic}table.groups,table.quote,table.fc,table.diag,table.keys{width:100%;border-collapse:collapse;font-size:12.5px}table.groups td,table.groups th,table.quote td,table.fc td,table.fc th,table.diag td,table.keys td{padding:3px 4px;border-bottom:1px solid var(--panel2);vertical-align:top}table.groups th,table.fc th{font-size:11px;color:var(--muted);text-align:left;font-weight:600}table.diag td:first-child{color:var(--ink2);white-space:nowrap}table.quote tr.total td{font-weight:700;border-top:1px solid var(--line)}.now{font-weight:600}.allow-bar{position:relative;height:10px;background:var(--panel2);border-radius:5px;overflow:visible;margin:6px 0 3px}.allow-bar .fill{position:absolute;left:0;top:0;bottom:0;background:var(--accent);border-radius:5px}.allow-bar .fill.bad{background:var(--bad)}.allow-bar .mark{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink)}.stack{display:flex;height:10px;border-radius:5px;overflow:hidden;margin:8px 0 4px}.lostlist li{font-size:12px;display:flex;gap:6px;align-items:baseline;padding:2px 0;overflow-wrap:anywhere}.lostlist i{width:9px;height:9px;border-radius:2px;flex:none;display:inline-block}.plan li{font-size:12px;color:var(--ink2)}.bans li{display:flex;justify-content:space-between;gap:6px;align-items:center;font-size:12.5px;padding:3px 0}.tag{display:inline-block;background:var(--panel2);border-radius:6px;padding:3px 8px;font-size:12px}.xsec{display:flex;height:46px;margin:8px 0;border-radius:4px;overflow:hidden;border:1px solid var(--line)}.strip{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10px;border-right:1px dashed rgba(255,255,255,.6);min-width:0}.strip.lane{background:#4a525b;color:#fff}.strip.pav{background:#cfd5db;color:#333}.strip.park,.strip.load{background:#6b7480;color:#fff}.strip.clickable{cursor:pointer}.strip.pick{outline:3px solid #ff2bd6;outline-offset:-3px}.strip .sw{opacity:.8}.strip .sd{font-size:13px}.strip .su{font-weight:700}.stripedit .row{display:flex;gap:6px;align-items:center;margin:5px 0;flex-wrap:wrap}.seg-ctl{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}.seg-ctl button{font-size:12px;padding:3px 8px}.moves li{display:grid;grid-template-columns:22px 1fr auto;gap:6px;align-items:center;padding:5px 0;border-bottom:1px solid var(--panel2);font-size:12.5px}.moves li .mstate{grid-column:2 / 4;font-size:11px;color:var(--muted)}.moves li.banned .ml,.moves li.banning .ml{color:var(--bad);text-decoration:line-through}.moves li.banning .mstate,.moves li.lifting .mstate{color:var(--accent);font-weight:600}.turn{font-size:16px;text-align:center}.turn.tL{color:#c79100}.turn.tR{color:#1e88c7}.opts li{padding:4px 0;font-size:13px}.opts label{display:flex;gap:6px;align-items:flex-start}.snaps li{font-size:12.5px;padding:1px 0}.parts li{padding:4px 0;border-bottom:1px solid var(--panel2)}.parts .pl{display:flex;justify-content:space-between;gap:6px;font-size:13px;overflow-wrap:anywhere}.plan h2{margin-bottom:4px}.when{font-size:12.5px;margin-top:8px;background:var(--panel2);border-radius:6px;padding:6px 8px}.forecast{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.prog{height:8px;background:var(--panel2);border-radius:4px;overflow:hidden;margin:6px 0}.prog span{display:block;height:100%;background:var(--accent);transition:width .2s}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172073;display:flex;align-items:center;justify-content:center;z-index:10}.modal{background:var(--panel);border-radius:12px;width:min(520px,94vw);max-height:90vh;overflow:auto;box-shadow:0 10px 40px #0000004d}.modal.wide{width:min(820px,94vw)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px 0}.modal-head h2{margin:0;font-size:19px}.modal.pass .modal-head h2{color:var(--good)}.modal.fail .modal-head h2{color:var(--bad)}.modal-body{padding:8px 18px 18px}.startcard blockquote{font-size:18px;font-style:italic;margin:8px 0 2px;padding-left:12px;border-left:4px solid #f0b429}.startcard .who{color:var(--muted);margin-bottom:10px}.objectives{background:var(--panel2);border-radius:8px;padding:8px 12px;margin:10px 0}.objectives ul{margin:0;padding-left:18px}.objectives li{margin:4px 0}.report{display:grid;grid-template-columns:1.3fr 1fr;gap:20px}.bigshare{font-size:30px;font-weight:800;margin-bottom:6px}.why li{color:var(--bad)}.passtext{font-weight:600;color:var(--good)}.obs{font-style:italic;background:var(--panel2);border-radius:8px;padding:6px 10px}.tops li{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid var(--panel2);font-size:13px}.tops .v{white-space:nowrap;font-variant-numeric:tabular-nums}.moved li{font-size:13px;color:var(--warn)}.cps li,.works li{display:grid;grid-template-columns:110px 1fr auto;gap:8px;align-items:center;padding:5px 0;border-bottom:1px solid var(--panel2);font-size:13px}.works li{grid-template-columns:1fr auto}.works .ws{grid-column:1;font-size:12px;color:var(--ink2)}.cps .t{font-variant-numeric:tabular-nums;color:var(--ink2)}.help{display:grid;grid-template-columns:1.2fr 1fr;gap:24px;font-size:13.5px}.help h3{font-size:14px;margin:10px 0 4px}.help ol,.help ul{padding-left:18px;margin:0}.help li{margin:4px 0;line-height:1.4}.title-screen{height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#1c2530,#2a3f57 60%,#3d6b8e)}.title-card{width:min(640px,94vw);background:var(--panel);border-radius:16px;padding:28px 30px 22px;box-shadow:0 20px 60px #00000059;text-align:center}.title-logo{font-size:46px}.title-card h1{margin:4px 0;font-size:32px;letter-spacing:-.01em}.tagline{color:var(--ink2);font-size:15px}.chapter-pick{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch;text-align:left;background:var(--panel2);border-radius:10px;padding:12px;margin:18px 0 14px}.chapter-pick .ch{flex:1 1 200px;min-width:0;text-align:left;background:var(--panel);border:2px solid transparent;border-radius:8px;padding:8px 10px;font:inherit;color:inherit;overflow-wrap:anywhere}.chapter-pick button.ch{cursor:pointer}.chapter-pick button.ch:hover{border-color:#f0b42980}.chapter-pick .ch.sel{border-color:#f0b429}.chapter-pick .field.inline{flex:1 1 100%;justify-content:flex-end;margin-top:0}.ledger{width:100%;border-collapse:collapse;margin:2px 0 12px;font-size:13.5px}.ledger td{padding:4px 6px;border-bottom:1px solid var(--panel2);vertical-align:top}.ledger td.v{text-align:right;font-variant-numeric:tabular-nums}.ledger tr.sum td{font-weight:700;border-bottom:none}.startcard .life{margin:0 0 12px;padding-left:18px;font-size:13.5px}.ch-id{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase}.ch-name{font-size:18px;font-weight:700}.ch-desc{font-size:13px;color:var(--ink2)}.title-actions{display:flex;gap:10px;justify-content:center;margin-bottom:12px}.loading{margin:22px 0}.modal:focus{outline:none}.title-actions .continue .sub{display:block;font-size:11.5px;font-weight:400;opacity:.85;margin-top:2px}.title-notice{font-size:13px;color:var(--bad);margin:0 0 12px;overflow-wrap:anywhere}.fc-plan{font-weight:600;color:var(--ink2);overflow-wrap:anywhere}.save-msg{font-size:13px;background:var(--panel2);border-radius:6px;padding:6px 8px;overflow-wrap:anywhere}.app{width:100%;min-width:0;height:100dvh;grid-template-rows:auto minmax(0,1fr) auto}.main{min-width:0;grid-template-columns:78px minmax(0,1fr) 350px}.topbar,.bottombar{min-width:0;flex-wrap:wrap}.topbar>*,.bottombar>*{min-width:0}.toggles,.pacebox{flex-wrap:wrap}@media(max-width:1100px){.topbar{gap:8px 12px}.brand{min-width:0;flex:1 1 180px}.main{grid-template-columns:60px minmax(0,1fr) minmax(230px,28%)}.bottombar .hint{white-space:normal}}@media(max-width:760px){.topbar{padding:6px 8px;gap:6px 10px}.brand{flex:1 1 65%}.pacebox{flex:1 1 100%}.speedread{min-width:0}.assess{margin-left:0}.main{grid-template-columns:48px minmax(0,1fr);grid-template-rows:minmax(0,3fr) minmax(0,2fr)}.toolrail{grid-column:1;grid-row:1 / 3;padding:4px;overflow-y:auto}.toolrail .tl,.toolrail .key{display:none}.toolrail button{min-height:38px}.world-wrap{grid-column:2;grid-row:1}.side{grid-column:2;grid-row:2;border-top:1px solid var(--line)}.hotcards{width:min(240px,calc(100% - 20px))}.coach{width:calc(100% - 16px);bottom:8px;padding:8px 28px 8px 10px}.coach-text{font-size:12px}.bottombar{gap:5px}.bottombar .hint{display:none}.bottombar .log,.bottombar .legend{flex-basis:100%}.report,.help{grid-template-columns:minmax(0,1fr);gap:12px}.title-screen{overflow-y:auto}.title-card{max-height:95dvh;overflow:auto}}@media(max-width:1100px){.toasts{left:10px;right:10px;top:auto;bottom:110px}}
