:root{ --bg:rgba(13,20,32,.86); --bd:rgba(255,255,255,.12); --tx:#eef3f8; --acc:#ffb703; --go:#22a565; --bad:#e04848; --amb:#f0a020; }
*{ box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html,body{ margin:0; height:100%; overflow:hidden; background:#0d1726; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; color:var(--tx); touch-action:none; user-select:none; -webkit-user-select:none; }
#c{ position:fixed; inset:0; width:100%; height:100%; display:block; }
.hidden{ display:none !important; }
button{ font:inherit; color:inherit; background:rgba(255,255,255,.1); border:1px solid var(--bd); border-radius:12px; padding:8px 12px; cursor:pointer; min-height:44px; }
button:active{ transform:scale(.97); }
button:disabled{ opacity:.55; cursor:default; }
#hud{ position:fixed; inset:0; pointer-events:none; }
#hud > *{ pointer-events:auto; }
#top{ position:absolute; top:calc(env(safe-area-inset-top) + 8px); left:8px; right:8px; display:flex; gap:6px; align-items:center; flex-wrap:wrap; pointer-events:none; }
#top > *{ pointer-events:auto; }
.stat{ background:var(--bg); border:1px solid var(--bd); border-radius:12px; padding:8px 11px; font-weight:700; font-size:15px; backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); white-space:nowrap; }
#money{ color:#9ef0b8; transition:transform .2s; } #money.up{ animation:pop .5s; } #money.down{ animation:popd .5s; }
@keyframes pop{ 50%{ transform:scale(1.15); color:#cfffdc } } @keyframes popd{ 50%{ transform:scale(1.1); color:#ff9a9a } }
#rating{ color:#ffd76a; }
#speed{ margin-left:auto; display:flex; gap:4px; background:var(--bg); border:1px solid var(--bd); border-radius:12px; padding:3px; }
#speed button{ min-width:44px; padding:6px 8px; border:none; background:transparent; }
#speed button.on{ background:var(--acc); color:#1a1a1a; }
#camBtns{ position:absolute; right:8px; top:calc(env(safe-area-inset-top) + 64px); display:flex; flex-direction:column; gap:6px; }
#camBtns button{ width:52px; height:52px; font-size:22px; background:var(--bg); border-radius:14px; padding:0; }
#tabs{ position:absolute; left:0; right:0; bottom:0; display:flex; gap:4px; padding:6px 6px calc(env(safe-area-inset-bottom) + 6px); background:linear-gradient(transparent, rgba(8,13,22,.92) 35%); }
#tabs button{ flex:1; min-height:60px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; background:var(--bg); border-radius:14px; padding:4px 2px; position:relative; }
#tabs button.on{ background:var(--acc); color:#1b1b1b; border-color:var(--acc); }
#tabs .ti{ font-size:22px; line-height:1; } #tabs .tn{ font-size:11.5px; font-weight:700; }
.badge{ position:absolute; top:3px; right:6px; background:var(--bad); color:#fff; font-size:11px; border-radius:9px; padding:1px 6px; min-width:18px; } .badge:empty{ display:none; }
#panel, #sel{ position:absolute; left:6px; right:6px; bottom:calc(env(safe-area-inset-bottom) + 78px); max-height:46vh; overflow-y:auto; background:var(--bg); border:1px solid var(--bd); border-radius:16px; padding:10px 12px 12px; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); touch-action:pan-y; -webkit-overflow-scrolling:touch; }
#sel{ max-height:42vh; }
.ph{ display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-bottom:6px; } .ph b{ font-size:17px; } .ph span{ font-size:12.5px; opacity:.75; text-align:right; }
h4{ margin:12px 0 6px; font-size:13px; text-transform:uppercase; letter-spacing:.06em; opacity:.7; }
p{ margin:6px 0; font-size:14px; line-height:1.35; } .dim{ opacity:.6; font-size:13px; }
.card{ background:rgba(255,255,255,.06); border:1px solid var(--bd); border-radius:12px; padding:8px 10px; margin:6px 0; }
.row1{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:15px; } .row2{ font-size:13px; opacity:.88; margin-top:4px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; } .row3{ display:flex; gap:6px; margin-top:8px; } .row3 button{ flex:1; }
.al{ opacity:.85; } .ty{ opacity:.6; font-size:12.5px; }
.chip{ display:inline-block; width:14px; height:14px; border-radius:4px; border:2px solid #fff; flex:none; }
.rws{ display:flex; gap:6px; margin-top:7px; align-items:center; flex-wrap:wrap; font-size:13px; }
button.rw{ min-width:58px; min-height:52px; font-weight:800; font-size:16px; background:#1f5fa8; border-color:#4a8be0; }
button.rw.busy{ background:#7a3b16; border-color:#d07a2a; }
button.big{ width:100%; min-height:56px; font-size:16px; font-weight:800; margin-top:8px; }
button.go{ background:var(--go); border-color:#3fd28a; } button.danger{ background:var(--bad); border-color:#ff8080; }
.red{ color:#ff7b7b; font-weight:700; } .green{ color:#6fe39b; font-weight:700; } .amber{ color:#ffc35a; font-weight:700; }
.warnbox{ background:rgba(240,160,32,.18); border:1px solid rgba(240,160,32,.6); border-radius:10px; padding:8px; margin:6px 0; font-size:14px; display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.bar{ display:inline-block; width:70px; height:7px; background:rgba(255,255,255,.15); border-radius:4px; overflow:hidden; vertical-align:middle; } .bar i{ display:block; height:100%; width:0; background:#6fe39b; border-radius:4px; transition:width .3s; }
.bar.pat i{ background:linear-gradient(90deg,#e04848,#f0a020 40%,#6fe39b); } .bar.mini{ width:100%; height:4px; margin-top:3px; }
.svcs{ display:grid; grid-template-columns:repeat(auto-fill,minmax(64px,1fr)); gap:6px; margin-top:8px; }
button.svc{ min-height:62px; padding:4px 2px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px; border-radius:12px; }
button.svc .si{ font-size:20px; line-height:1.1; } button.svc .sn{ font-size:12px; font-weight:700; } button.svc small{ font-size:10.5px; opacity:.8; }
button.svc.need{ background:#1f5fa8; border-color:#5b9ae6; opacity:1; } button.svc.go, button.svc.work{ background:rgba(255,183,3,.25); border-color:var(--acc); opacity:1; } button.svc.done{ background:rgba(34,165,101,.25); border-color:#3fd28a; opacity:1; }
button.svc.push.go{ background:var(--go); opacity:1; }
.fleet .fl, .fl{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; padding:6px 0; border-bottom:1px solid var(--bd); font-size:13.5px; } .fl > span{ flex:1 1 140px; } .fl button{ min-height:44px; font-size:12.5px; padding:6px 9px; } .fl button.on{ background:rgba(34,165,101,.35); border-color:#3fd28a; }
.grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(98px,1fr)); gap:6px; }
.grid button{ display:flex; flex-direction:column; align-items:center; gap:2px; min-height:70px; font-size:12.5px; font-weight:600; } .grid .si{ font-size:22px; } .grid small{ opacity:.75; } .grid button.on{ background:var(--acc); color:#1b1b1b; }
.stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:6px; } .stats div{ background:rgba(255,255,255,.06); border-radius:10px; padding:6px; text-align:center; } .stats small{ display:block; font-size:11px; opacity:.7; } .stats b{ font-size:17px; }
.airl{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:4px 10px; font-size:13px; } .airl div{ display:flex; align-items:center; gap:6px; } .airl span{ flex:1; } .airl small{ opacity:.6; } .airl .bar{ width:44px; }
.mini div{ font-size:13px; padding:5px 2px; border-bottom:1px solid var(--bd); display:flex; gap:6px; align-items:center; cursor:pointer; }
.opt{ margin-top:10px; font-size:13.5px; } .opt button{ width:100%; min-height:50px; }
button.x{ margin-left:auto; min-height:40px; min-width:44px; }
#hint{ position:absolute; left:50%; transform:translateX(-50%); top:calc(env(safe-area-inset-top) + 62px); width:min(560px, calc(100% - 80px)); background:rgba(255,183,3,.95); color:#1b1b1b; border-radius:14px; padding:9px 10px 9px 12px; font-size:14.5px; font-weight:600; display:flex; gap:8px; align-items:center; box-shadow:0 6px 24px rgba(0,0,0,.35); }
#hint span{ flex:1; } #hint button{ background:#1b1b1b; color:#fff; border:none; min-height:44px; padding:6px 12px; } #hint button.dim{ background:transparent; color:#1b1b1b; opacity:.7; font-size:12px; padding:4px; }
#toast{ position:absolute; left:8px; top:calc(env(safe-area-inset-top) + 62px); display:flex; flex-direction:column; gap:5px; width:min(420px, calc(100% - 76px)); pointer-events:none; }
#hint:not(.hidden) ~ #toast{ top:calc(env(safe-area-inset-top) + 140px); }
.tmsg{ background:var(--bg); border:1px solid var(--bd); border-left:4px solid #5b9ae6; border-radius:10px; padding:7px 10px; font-size:13.5px; transition:opacity .5s, transform .5s; }
.tmsg.good{ border-left-color:#3fd28a; } .tmsg.bad{ border-left-color:var(--bad); background:rgba(70,14,14,.92); } .tmsg.warn{ border-left-color:var(--amb); } .tmsg.out{ opacity:0; transform:translateX(-20px); }
#person{ position:absolute; left:50%; transform:translateX(-50%); bottom:calc(env(safe-area-inset-bottom) + 84px); width:min(380px, calc(100% - 20px)); background:#fffdf5; color:#1b1b1b; border-radius:16px; padding:10px 14px; font-size:14px; box-shadow:0 8px 30px rgba(0,0,0,.4); }
#person div{ margin-top:4px; } #person small{ opacity:.6; } #person .bar{ background:#ddd; }
#overlay{ position:fixed; inset:0; z-index:20; background:rgba(0,0,0,.55); display:flex; align-items:center; justify-content:center; padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom); }
.ov{ width:min(900px, 100%); height:min(640px, 100%); background:#16191d; border-radius:18px; display:flex; flex-direction:column; overflow:hidden; border:1px solid var(--bd); }
.ovh{ display:flex; align-items:center; gap:10px; padding:10px 12px; } .ovh b{ font-size:17px; } .ovs{ font-size:13px; opacity:.7; flex:1; } .ovx{ min-width:52px; min-height:48px; }
.ovc{ flex:1; width:100%; min-height:0; touch-action:none; }
.ovb{ display:flex; gap:8px; padding:10px; } .cart{ flex:1; min-height:64px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; font-weight:800; background:#262b31; border:2px solid var(--c,#666); }
.cart i{ width:28px; height:12px; border-radius:3px; background:var(--c,#666); } .cart.ok{ background:var(--go); } .cart.done{ background:var(--acc); color:#1b1b1b; }
#flash{ position:fixed; inset:0; pointer-events:none; opacity:0; transition:opacity .25s; z-index:15; }
#start{ position:fixed; inset:0; z-index:30; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:16px; text-align:center; padding:24px; background:radial-gradient(ellipse at 50% 30%, rgba(30,60,110,.55), rgba(5,10,20,.92)); transition:opacity .5s; }
#start.gone{ opacity:0; pointer-events:none; }
.logo .l0{ font-size:44px; } .logo .l1{ font-size:72px; font-weight:900; letter-spacing:.08em; line-height:.9; color:#fff; text-shadow:0 4px 30px rgba(80,150,255,.6); } .logo .l2{ font-size:26px; font-weight:800; letter-spacing:.5em; color:var(--acc); margin-top:4px; padding-left:.5em; }
#start p{ max-width:440px; font-size:16px; opacity:.88; } #start .go{ font-size:20px; font-weight:800; padding:14px 34px; min-height:60px; border-radius:16px; }
@media (min-width: 900px){ #panel, #sel{ left:auto; right:70px; width:430px; max-height:calc(100vh - 170px); bottom:84px; } #tabs{ left:50%; right:auto; transform:translateX(-50%); width:720px; background:none; } #person{ bottom:96px; } }
@media (max-height: 500px) and (orientation: landscape){ #panel, #sel{ left:auto; right:64px; width:min(400px, 52vw); top:calc(env(safe-area-inset-top) + 56px); bottom:calc(env(safe-area-inset-bottom) + 72px); max-height:none; } #tabs{ padding-top:4px; background:none; left:auto; right:0; width:min(520px, 60vw); } #tabs button{ min-height:56px; } #tabs .tn{ font-size:10.5px; } #camBtns{ top:auto; bottom:calc(env(safe-area-inset-bottom) + 70px); left:8px; right:auto; flex-direction:row; } #camBtns button{ width:46px; height:46px; } #hint{ top:52px; width:min(420px, 50vw); left:8px; transform:none; font-size:13px; } #toast{ top:auto; bottom:126px; } .stat{ padding:6px 9px; font-size:14px; } }

@media (max-width: 520px){ .stat{ padding:6px 7px; font-size:13px; } #speed button{ min-width:36px; padding:4px 5px; } #top{ gap:4px; } #hint{ top:calc(env(safe-area-inset-top) + 104px); width:calc(100% - 76px); left:8px; transform:none; font-size:13.5px; } #toast{ top:calc(env(safe-area-inset-top) + 104px); } #hint:not(.hidden) ~ #toast{ top:calc(env(safe-area-inset-top) + 220px); } #camBtns{ top:calc(env(safe-area-inset-top) + 104px); } #camBtns button{ width:48px; height:48px; } }
