:root{--paper:#faf5e7;--ink:#284a43;--muted:#768176;--line:#d6cfb9;--green:#356e5b;--gold:#efd28d;--glass:#163e37da;font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);font-synthesis:none}*{box-sizing:border-box}body{margin:0;overflow:hidden;background:#b4d6df;font-size:13px}canvas{display:block;touch-action:none}[hidden]{display:none!important}button,select{font:inherit}button{border:1px solid #c6c7ae;border-radius:8px;background:var(--green);color:#fff8e8;padding:9px 13px;cursor:pointer;white-space:nowrap;touch-action:manipulation}button:hover:not(:disabled){filter:brightness(1.12)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{background:#e1e0d2;color:#969887;border-color:#d6d5c3;cursor:default}button:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #d8a854;outline-offset:3px}button.quiet{background:transparent;color:var(--green)}.ic{width:21px;height:21px;flex:none;vertical-align:middle}kbd{font:10px system-ui;border:1px solid #d1e5d344;border-radius:3px;padding:1px 3px;margin-left:4px}#play-ui{position:fixed;inset:0;pointer-events:none;z-index:10;user-select:none}.play-hud{position:absolute;top:max(18px,env(safe-area-inset-top));left:22px;right:22px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:#fffbed;text-shadow:0 1px 5px #173e3780}.hud-left{display:flex;align-items:center;gap:17px}.brand{font:700 18px "Songti SC","STSong",serif;letter-spacing:2px}.hud-left strong{color:#ffdf9d;font-size:23px;font-variant-numeric:tabular-nums}#play-day{font-size:12px;opacity:.92}.play-hud nav{display:flex;gap:7px;pointer-events:auto}.play-hud button{display:flex;align-items:center;gap:6px;background:#173c3570;border-color:#f9edca33;backdrop-filter:blur(10px);padding:8px 10px;font-size:11px;color:#fffbea}.play-hud button .ic{width:17px;height:17px}#play-held{position:absolute;left:24px;bottom:74px;display:flex;gap:10px;align-items:center;padding:11px 15px;border-radius:12px;background:var(--glass);border:1px solid #e6d6a740;color:#fff7df;font-size:13px;max-width:calc(100% - 48px)}#play-held b{color:var(--gold);margin-left:5px}#play-held em{display:block;font-style:normal;font-size:10px;color:var(--gold);margin-top:4px}#play-guide{position:absolute;top:70px;left:24px;max-width:min(410px,calc(100% - 48px));font-size:12px;line-height:1.65;color:#fffbed;text-shadow:0 1px 5px #133d36,0 1px 12px #133d36}#play-crosshair{position:absolute;top:50%;left:50%;width:5px;height:5px;border-radius:50%;background:#fffcee;box-shadow:0 0 0 1px #18443e88,0 0 8px #132c30a0}#play-prompt{position:absolute;left:50%;bottom:83px;transform:translateX(-50%);padding:10px 17px;background:var(--glass);border:1px solid #e4d1a840;border-radius:9px;color:#fff8e7;font-size:14px;text-align:center;max-width:min(520px,calc(100% - 28px));width:max-content;line-height:1.6}#play-controls{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);color:#fff9e9cc;text-shadow:0 1px 4px #173f39;font-size:11px;text-align:center;width:calc(100% - 32px)}#play-message{position:absolute;top:110px;left:50%;transform:translate(-50%,-5px);background:#224e45f0;color:#fff8e7;padding:11px 17px;border:1px solid #d5bd8544;border-radius:9px;opacity:0;transition:opacity .18s,transform .18s;max-width:min(500px,calc(100% - 32px));text-align:center;font-size:12px;line-height:1.6;z-index:45}#play-message.show{opacity:1;transform:translate(-50%,0)}#play-receipt{position:absolute;top:100px;right:26px;font-size:22px;font-weight:750;color:#ffe4a0;text-shadow:0 1px 3px #154734,0 2px 16px #154734;opacity:0;transform:translateY(10px);transition:opacity .2s,transform .2s}#play-receipt.show{opacity:1;transform:translateY(0)}#play-activity{position:absolute;bottom:148px;left:50%;transform:translateX(-50%);width:min(390px,calc(100% - 32px));background:var(--glass);border:1px solid #e9d9b543;border-radius:13px;padding:16px 18px;color:#f9f7e6;backdrop-filter:blur(8px)}#play-activity h2{font-size:15px;margin:0 0 12px;font-weight:650}#play-activity h2 small{font-size:12px;font-weight:400}#play-activity p{font-size:11px;color:#c9d6bd;margin:9px 0 0}.catch-kicker{font-size:10px;color:#d9c894;display:block;margin-bottom:6px}.meter{margin:12px 0}.meter>div:first-child{display:flex;justify-content:space-between;font-size:11px;gap:8px;margin-bottom:6px}.meter b{font-size:11px;font-weight:500}.meter-track{height:6px;background:#163a31;border-radius:6px;overflow:hidden}.meter-track i{height:100%;display:block;background:#d9c78c;border-radius:6px}.meter.danger i{background:#e98a66}.meter.stamina i{background:#86bfa0}.manual-gauge{position:relative;height:18px;border-radius:6px;background:#153d32;overflow:hidden}.manual-gauge .good-zone{position:absolute;top:0;height:100%;background:#8caf61aa;border-left:2px solid #cbea9b;border-right:2px solid #cbea9b}.manual-gauge i{position:absolute;top:0;height:100%;background:#fff3c5}.manual-gauge.pound i{width:4px;transform:translateX(-2px)}.manual-gauge.squeeze i{background:#f0dca073;border-right:3px solid #fff3c5}
#ledger-shade{position:absolute;inset:0;pointer-events:auto;background:#123a3459;backdrop-filter:blur(3px);z-index:30}#ledger{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(680px,calc(100% - 36px));max-height:calc(100dvh - 56px);display:flex;flex-direction:column;pointer-events:auto;z-index:31;background:var(--paper);border:1px solid #d2c69e;border-radius:16px;box-shadow:0 25px 80px #0b302952;overflow:hidden}.ledger-header{padding:20px 25px 15px;display:flex;justify-content:space-between;align-items:center;flex:none}.ledger-header small{font-size:10px;letter-spacing:2px;color:#8f835f}.ledger-header h1{font:700 23px "Songti SC","STSong",serif;margin:5px 0 0;letter-spacing:1px}.ledger-header>button{padding:7px;background:transparent;color:var(--ink);border-color:var(--line)}#ledger-tabs{display:flex;border-bottom:1px solid var(--line);padding:0 22px;gap:4px;flex:none}#ledger-tabs button{display:flex;align-items:center;justify-content:center;gap:7px;flex:1;padding:12px 5px;border:0;border-radius:7px 7px 0 0;background:transparent;color:#788477;font-size:12px;border-bottom:2px solid transparent}#ledger-tabs button[aria-selected=true]{background:#e8ecdd;color:var(--green);border-bottom-color:var(--green)}#ledger-tabs .ic{width:17px;height:17px}#ledger-content{padding:21px 26px 26px;overflow:auto;min-height:0;overscroll-behavior:contain;scrollbar-width:thin}.ledger-footer{padding:12px 26px;border-top:1px solid var(--line);color:#858772;display:flex;justify-content:space-between;font-size:10px;gap:12px;flex:none}.ledger-intro{margin-bottom:19px}.ledger-intro>span{font-size:10px;color:#9b8350;letter-spacing:1px}.ledger-intro h2{font-size:19px;margin:6px 0 8px}.ledger-intro p{font-size:12px;line-height:1.9;margin:0;color:var(--muted)}.ledger-totals{display:flex;gap:22px;margin:0 0 19px;padding:15px 0;border-block:1px solid #dedbc8}.ledger-totals>div{display:flex;flex-direction:column;gap:6px}.ledger-totals small{font-size:10px;color:var(--muted)}.ledger-totals b{font-size:21px;font-variant-numeric:tabular-nums;color:#92703a}.ledger-row{display:flex;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid #e0ddce;min-width:0}.row-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:#e7ecdd;flex:none}.row-copy{flex:1;min-width:0}.row-copy b{font-size:13px;line-height:1.7;display:block}.row-copy b small{font-weight:400}.row-copy p,.row-copy small{color:var(--muted);font-size:11px;line-height:1.7;margin:4px 0 0;overflow-wrap:anywhere}.ledger-row>button{font-size:11px;padding:8px 10px;flex:none;max-width:112px;white-space:normal}.stock-mark{font-style:normal;font-size:10px;color:#a07934;font-weight:500}.empty{font-size:12px;line-height:1.9;padding:20px;background:#edf0e2;border-radius:9px;color:#778371}.day-action{margin-top:24px;display:flex;align-items:center;gap:13px;flex-wrap:wrap}.day-action small{font-size:10px;color:var(--muted)}.container-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}.container-grid>div{display:flex;justify-content:space-between;gap:9px;background:#eaeddf;border-radius:7px;padding:10px;font-size:11px}.container-grid b{white-space:nowrap}.dex-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.dex-card{padding:17px 12px;border:1px dashed #d0d2c1;border-radius:10px;display:flex;align-items:center;flex-direction:column;gap:9px;color:#a0a38f;text-align:center}.dex-card.discovered{border-style:solid;background:#fefcf2;color:var(--ink)}.dex-card>span{height:38px;display:grid;place-items:center}.dex-card .ic{width:32px;height:32px}.dex-card b{font-size:12px}.dex-card small{font-size:10px;line-height:1.8}.layout-stations{display:flex;flex-wrap:wrap;gap:7px}.layout-stations button{font-size:12px}.layout-pad{text-align:center;margin:20px 0;padding:16px;background:#e9eddf;border-radius:10px}.layout-pad>div{margin-top:9px;display:flex;gap:8px;justify-content:center}.layout-pad b{font-size:12px}.layout-pad button{font-size:11px;min-width:82px}.route-editor{margin-top:20px;display:flex;gap:8px;align-items:end;flex-wrap:wrap}.route-editor label{display:flex;flex-direction:column;gap:6px;font-size:11px;flex:1;min-width:110px}.route-editor select{width:100%;padding:9px;border:1px solid var(--line);border-radius:6px;background:#fffdf1;color:var(--ink)}.ledger-open .play-hud,.ledger-open #play-guide,.ledger-open #play-held,.ledger-open #play-activity,.ledger-open #play-prompt,.ledger-open #play-controls,.ledger-open #touch-controls{visibility:hidden}
#touch-controls{display:none}.touch-look-label{position:absolute;right:25px;bottom:200px;color:#fff8e7a0;text-shadow:0 1px 4px #194436;font-size:9px;pointer-events:none}
@media(pointer:coarse){#touch-controls{display:block;position:absolute;inset:0;pointer-events:none}#touch-look{position:absolute;inset:20% 0 0 48%;pointer-events:auto;touch-action:none}.touch-dpad{position:absolute;bottom:max(28px,env(safe-area-inset-bottom));left:22px;width:144px;height:140px;display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px);gap:4px;pointer-events:auto}.touch-dpad button{padding:0;background:#193f3777;border-color:#efebd244;font-size:21px;touch-action:none}.touch-dpad button:nth-child(1){grid-area:1/2}.touch-dpad button:nth-child(2){grid-area:2/1}.touch-dpad button:nth-child(3){grid-area:2/2}.touch-dpad button:nth-child(4){grid-area:2/3}.touch-actions{position:absolute;bottom:max(36px,env(safe-area-inset-bottom));right:23px;display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:auto}.touch-actions button{touch-action:none;background:#1c4a3ed9;border-color:#efe7c35e;min-height:44px;min-width:65px;font-size:11px}#touch-primary{min-height:64px;min-width:88px;border-radius:32px;background:#e1c88dee;color:#2f4b3e;font-size:13px;font-weight:700}#play-controls{display:none}#play-prompt{bottom:210px;font-size:12px}#play-activity{bottom:268px}#play-held{bottom:190px;left:20px;font-size:11px;max-width:calc(100% - 40px)}.activity-mode #play-held{display:none}kbd{display:none}}
@media(max-width:600px){.play-hud{top:max(14px,env(safe-area-inset-top));left:14px;right:14px;align-items:flex-start}.hud-left{gap:8px;flex-wrap:wrap;max-width:185px}.brand{font-size:15px;width:100%;letter-spacing:1px}.hud-left strong{font-size:19px}#play-day{font-size:10px}.play-hud nav{gap:5px}.play-hud button{padding:7px;flex-direction:column;gap:4px;font-size:9px}.play-hud button .ic{width:17px;height:17px}#play-guide{left:16px;top:91px;font-size:11px;max-width:calc(100% - 32px)}#play-message{top:139px;font-size:11px}#play-receipt{top:96px;right:16px;font-size:18px}#ledger{width:calc(100% - 20px);max-height:calc(100dvh - 24px);border-radius:12px}.ledger-header{padding:17px 17px 13px}.ledger-header h1{font-size:21px}#ledger-tabs{padding:0 11px;gap:0}#ledger-tabs button{padding:11px 3px;gap:4px;font-size:11px}#ledger-tabs .ic{width:15px;height:15px}#ledger-content{padding:18px 16px 22px}.ledger-footer{padding:11px 16px;font-size:9px}.ledger-footer span{display:none}.ledger-row{gap:9px}.row-icon{width:31px;height:31px}.ledger-row>button{max-width:84px;padding:7px 8px}.row-copy b{font-size:12px}.row-copy p,.row-copy small{font-size:10px}.dex-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.container-grid{font-size:10px}.container-grid>div{padding:8px;font-size:10px}.ledger-totals{gap:17px}.ledger-totals b{font-size:19px}.ledger-intro h2{font-size:18px}.ledger-intro p{font-size:11px}.touch-dpad{left:16px;transform:scale(.9);transform-origin:left bottom}.touch-actions{right:17px}}
@media(max-height:560px) and (min-width:601px){#play-activity{bottom:125px;width:340px;padding:10px 14px}.meter{margin:8px 0}#play-prompt{bottom:64px}#play-guide{top:62px}#ledger{max-height:calc(100dvh - 20px)}.ledger-header{padding:12px 20px}.ledger-footer{padding:8px 20px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}
@media(max-width:600px) and (pointer:fine){#play-held{left:14px;bottom:137px;font-size:11px;max-width:calc(100% - 28px)}#play-prompt{bottom:70px;font-size:12px}}
@media(pointer:coarse){#play-held{bottom:160px}}
.order-actions{display:flex;flex-direction:column;align-items:stretch;gap:6px;flex:none}.order-actions:empty{display:none}.order-actions button{font-size:11px;padding:8px 10px}.row-copy .school-note{display:block;color:#968045;margin-top:6px}.school-aim b{font-size:12px;color:#e3cf91}.school-aim.aimed b{color:#c6e7a1}.school-aim p{line-height:1.8}.meter+.school-aim{margin-top:14px;padding-top:12px;border-top:1px solid #e8d9a32b}@media(max-width:600px){.order-actions button{font-size:10px;padding:7px 8px}}
#play-test{font-size:9px;letter-spacing:.5px;border:1px solid #f4d27c77;border-radius:4px;padding:3px 5px;color:#ffe0a0;background:#624b28b5;text-shadow:none;white-space:nowrap}@media(max-width:600px){#play-test{font-size:8px;padding:2px 4px}}
/* Cargo is shown as goods and occupied space; figures live in the ledger. */
.product-icon{width:36px;height:32px;flex:none;vertical-align:middle;overflow:visible}.row-icon .product-icon{width:31px;height:28px}.goods-strip{display:flex;align-items:center;flex-wrap:wrap;gap:3px;margin:5px 0;max-width:100%}.goods-unit{display:inline-flex;width:27px;height:25px;align-items:center;justify-content:center;border-radius:5px;background:#e3e6d633;flex:none}.goods-unit .product-icon{width:25px;height:23px}.goods-unit.vacant{background:transparent;outline:1px dashed #9baf9666}.goods-unit.vacant .product-icon{filter:grayscale(1);opacity:.2}.goods-more{font-size:18px;color:var(--muted);padding:0 3px}.held-copy{display:flex;flex-direction:column;min-width:0;gap:4px}#play-held>.product-icon{width:44px;height:39px}#play-held .goods-strip{margin:0;max-width:280px}#play-held .goods-unit{background:#d9e0b912}#play-held .goods-more{color:#ddd1ad}.load-view{min-width:105px;max-width:240px;flex:1}.load-goods{display:flex;align-items:center;gap:2px;min-height:29px;overflow:hidden}.load-goods .product-icon{width:28px;height:25px}.empty-vessel{font-size:10px;opacity:.55}.load-track{height:5px;border:1px solid #98ab8d66;background:#304d3e15;border-radius:4px;overflow:hidden;margin-top:4px}.load-track i{display:block;height:100%;background:#80a783;border-radius:4px}#play-held .load-track{background:#0c2b25;border-color:#e4d5ad33}#play-held .load-track i{background:#dfcb8b}.container-grid>div{display:grid;grid-template-columns:1fr auto;align-items:start;gap:7px}.container-grid .load-view{grid-column:1/-1;max-width:none;min-width:0;grid-row:2}.container-grid small{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}.stock-state{display:inline-block;width:7px;height:7px;border-radius:50%;background:#83a47c;margin-right:5px}.stock-state.working{background:#c79a50;box-shadow:0 0 0 3px #c79a5020}.stock-state.moving{background:#6e9eae;box-shadow:3px 0 0 #6e9eae40}.work-steps{display:flex;gap:5px;margin:0 0 12px;flex-wrap:wrap}.work-steps i{width:13px;height:13px;border-radius:50%;border:1px solid #b8c39866;background:#163a31}.work-steps i.done{background:#d8c68b;border-color:#ede0ad}.undiscovered-fish{filter:grayscale(1);opacity:.3}#play-activity .goods-strip{margin-bottom:12px}.order-goods{margin:7px 0}.dex-card .product-icon{width:43px;height:38px}@media(max-width:600px){.goods-unit{width:24px;height:23px}.goods-unit .product-icon{width:23px;height:21px}#play-held .goods-strip{max-width:220px}.order-goods{gap:3px}.load-goods .product-icon{width:25px;height:23px}}
.catch-product{float:right;margin:0 0 5px 12px}.catch-product .product-icon{width:66px;height:50px}
