:root{--bg: var(--tg-theme-bg-color, #f6f7f4);--surface: var(--tg-theme-secondary-bg-color, #ffffff);--surface-2: #eef1ea;--fg: var(--tg-theme-text-color, #16211a);--muted: var(--tg-theme-hint-color, #7a8580);--line: rgba(22, 33, 26, .12);--accent: var(--tg-theme-button-color, #2f8f46);--accent-fg: var(--tg-theme-button-text-color, #ffffff);--accent-soft: rgba(47, 143, 70, .12);--gold: #e8a317;--gold-soft: rgba(232, 163, 23, .16);--danger: var(--tg-theme-destructive-text-color, #cf3b31);--danger-soft: rgba(207, 59, 49, .12);--warn: #c76a00;--warn-soft: rgba(199, 106, 0, .14);--info: #1f6fb2;--info-soft: rgba(31, 111, 178, .12);--land: #c7e3a3;--land-line: #a8cd80;--land-locked: #cfd3cb;--hub: #7a5240;--r-sm: 8px;--r: 12px;--r-lg: 16px;--tap: 44px;--nav-h: 56px;--gap: 8px;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--pad: 12px;--shadow: 0 1px 2px rgba(22, 33, 26, .08), 0 4px 16px rgba(22, 33, 26, .06);--shadow-up: 0 -1px 0 var(--line), 0 -8px 24px rgba(22, 33, 26, .06)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: var(--tg-theme-bg-color, #14181a);--surface: var(--tg-theme-secondary-bg-color, #1e2426);--surface-2: #2a3134;--fg: var(--tg-theme-text-color, #e8eceb);--muted: var(--tg-theme-hint-color, #8d9a96);--line: rgba(232, 236, 235, .14);--accent: var(--tg-theme-button-color, #43a75c);--accent-soft: rgba(67, 167, 92, .18);--gold: #f0b93f;--gold-soft: rgba(240, 185, 63, .18);--danger: var(--tg-theme-destructive-text-color, #f06a60);--danger-soft: rgba(240, 106, 96, .16);--warn: #e59338;--warn-soft: rgba(229, 147, 56, .16);--info: #5aa9e6;--info-soft: rgba(90, 169, 230, .16);--land: #5d7a48;--land-line: #6f8f57;--land-locked: #333b3d;--hub: #6b4a3a;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 16px rgba(0, 0, 0, .3);--shadow-up: 0 -1px 0 var(--line), 0 -8px 24px rgba(0, 0, 0, .35)}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior-y:none}body{margin:0;font:15px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--fg);min-height:var(--app-h, 100dvh);-webkit-font-smoothing:antialiased;text-size-adjust:100%}#app{max-width:520px;margin:0 auto;min-height:inherit;background:var(--bg);position:relative}@media(min-width:560px){body{background:#0d1210}#app{box-shadow:0 0 0 1px var(--line),0 20px 60px #00000073}}main{padding:var(--gap) var(--pad);padding-bottom:calc(var(--nav-h) + var(--safe-b) + 20px)}h2{font-size:20px;margin:0 0 4px}h3{font-size:16px;margin:18px 0 6px;letter-spacing:-.01em}h3:first-child{margin-top:4px}b,strong{font-weight:650}.muted{color:var(--muted)}.error{color:var(--danger)}.warn{color:var(--warn)}.dim{opacity:.45}.small-text{font-size:13px}.center-text{text-align:center}.clickable{cursor:pointer}.plus{color:var(--accent);font-weight:600}.minus{color:var(--danger);font-weight:600}.money,.royal,.num{font-variant-numeric:tabular-nums}.center{min-height:70vh;padding:24px var(--pad);display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;text-align:center}.center input{width:100%;max-width:240px;text-align:center}.center button{width:100%;max-width:240px}.ic{display:block;flex:none}.row .ic,button .ic,.badge .ic{display:inline-block;vertical-align:-.18em}.topbar{position:sticky;top:0;z-index:20;display:flex;flex-direction:column;gap:6px;padding:calc(var(--safe-t) + 8px) var(--pad) 10px;background:var(--surface);border-bottom:1px solid var(--line)}.topbar .name{font-weight:650;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wallet{display:flex;align-items:center;gap:10px}.wallet .money,.wallet .royal{display:inline-flex;align-items:center;gap:4px;font-weight:700;font-size:15px;white-space:nowrap}.wallet .royal{color:var(--fg)}.lvl-badge{display:inline-flex;align-items:center;gap:3px;background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:2px 8px;font-size:13px;font-weight:700}.xpbar,.storage{position:relative;background:var(--surface-2);border-radius:999px;overflow:hidden}.xpbar{height:6px}.xpbar.thin{height:4px}.xpbar-fill{height:100%;background:linear-gradient(90deg,#4aa3e0,#1f6fb2);transition:width .5s ease}.storage{height:6px}.meter{display:flex;flex-direction:column;gap:3px}.meter-label{font-size:13px;gap:5px}.meter-num{font-size:13px;font-weight:600}.storage-fill{height:100%;background:#86c56e;transition:width .5s ease}.storage-fill.warn{background:#e8a93f}.storage-fill.full{background:#e0685e}.quest{background:var(--accent-soft);border-radius:var(--r);padding:8px 10px;font-size:14px}.quest.done{background:var(--gold-soft);box-shadow:0 0 0 2px var(--gold) inset}@media(prefers-reduced-motion:no-preference){.quest.done{animation:breathe 1.6s ease-in-out infinite alternate}}@keyframes breathe{0%{box-shadow:0 0 0 2px var(--gold) inset}to{box-shadow:0 0 0 2px var(--gold) inset,0 0 14px var(--gold-soft)}}.tabs{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:520px;z-index:20;display:grid;grid-template-columns:repeat(5,1fr);background:var(--surface);box-shadow:var(--shadow-up);padding-bottom:var(--safe-b)}.tabs button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--nav-h);background:none;color:var(--muted);border:0;border-radius:0;padding:6px 0;font-size:11px;font-weight:600}.tabs button.active{color:var(--accent)}.tabs button.active .tab-icon{transform:translateY(-1px)}.tab-icon{transition:transform .15s}button{background:var(--accent);color:var(--accent-fg);border:0;border-radius:var(--r-sm);padding:0 14px;min-height:var(--tap);font:inherit;font-weight:600;cursor:pointer;transition:transform .08s,opacity .15s}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.4;cursor:default}button.secondary{background:var(--surface-2);color:var(--fg)}button.danger{background:var(--danger-soft);color:var(--danger)}button.ghost{background:none;color:var(--accent);padding:0 8px}button.small{min-height:32px;padding:0 10px;font-size:13px}button.wide{width:100%;margin:8px 0}.cta{position:sticky;bottom:calc(var(--safe-b) + var(--nav-h) + 8px);z-index:10;display:flex;gap:var(--gap);padding-top:var(--gap)}.cta button{flex:1}input,select,textarea{font:inherit;font-size:16px;padding:0 10px;min-height:var(--tap);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--bg);color:var(--fg);min-width:0;max-width:100%}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}input.short{width:84px;text-align:center}select{appearance:none;padding-right:28px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:right 14px center,right 9px center;background-size:5px 5px,5px 5px;background-repeat:no-repeat}.form{display:flex;flex-direction:column;gap:var(--gap);padding:4px 0}.form label{display:flex;justify-content:space-between;gap:10px;align-items:center}.form label>span:first-child{color:var(--muted);font-size:14px}.row{display:flex;gap:var(--gap);align-items:center}.row.wrap{flex-wrap:wrap}.between{justify-content:space-between}.grow{flex:1;min-width:0}.panel{background:var(--surface);border-radius:var(--r);padding:12px;margin:var(--gap) 0;box-shadow:var(--shadow)}.panel.highlight{box-shadow:var(--shadow),0 0 0 2px var(--accent)}.list>.row,.list-row,.build-row{padding:10px 0;border-bottom:1px solid var(--line)}.list>.row:last-child,.list-row:last-child,.build-row:last-child{border-bottom:0}.build-row{display:flex;justify-content:space-between;align-items:center;gap:10px}.subtabs,.seg{display:flex;gap:6px;margin:4px 0 10px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;mask-image:linear-gradient(90deg,#000 calc(100% - 24px),transparent)}.subtabs::-webkit-scrollbar,.seg::-webkit-scrollbar{display:none}.subtabs button,.seg button{background:var(--surface-2);color:var(--fg);border:0;min-height:38px;padding:0 14px;border-radius:999px;white-space:nowrap;font-size:14px;scroll-snap-align:start}.subtabs button.active,.seg button.active{background:var(--accent);color:var(--accent-fg)}.seg.wide{mask-image:none}.seg.wide button{flex:1}.filters{display:flex;gap:var(--gap);flex-wrap:wrap;align-items:center}.filters select{flex:1;min-width:150px}.badge{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--muted)}.badge.sell{background:var(--accent-soft);color:var(--accent)}.badge.buy{background:var(--info-soft);color:var(--info)}.badge.star{background:var(--gold-soft);color:var(--warn)}.tier{font-size:11px;font-weight:700;padding:1px 6px;border-radius:5px;background:var(--surface-2);color:var(--muted)}.listing.closed,.contract.cancelled{opacity:.5}.banner{background:var(--warn-soft);color:var(--warn);padding:8px 12px;border-radius:var(--r);margin-bottom:var(--gap);font-size:14px;font-weight:500}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + var(--safe-b) + 12px);width:calc(100% - 2 * var(--pad));max-width:496px;z-index:40;background:#22282a;color:#fff;padding:12px 14px;border-radius:var(--r);box-shadow:var(--shadow);font-size:14px}@media(prefers-reduced-motion:no-preference){.toast{animation:toast-in .2s ease-out}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}}details{margin:var(--gap) 0}summary{cursor:pointer;padding:10px 0;font-weight:600;min-height:var(--tap);display:flex;align-items:center;gap:6px}summary::marker{content:""}summary:before{content:"▸";display:inline-block;transition:transform .15s}details[open]>summary:before{transform:rotate(90deg)}table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:8px 4px;text-align:left;border-bottom:1px solid var(--line)}th{color:var(--muted);font-size:12px;font-weight:600}tr.warn td{color:var(--warn)}tr.selrow td{background:var(--accent-soft)}.grid{display:grid;gap:3px;width:100%;margin:0 auto;touch-action:manipulation}.tile{position:relative;aspect-ratio:1;padding:0;min-height:0;border-radius:6px;background:var(--land);box-shadow:inset 0 0 0 1px var(--land-line);color:#16211a;font-size:9px;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}.tile.locked{background:var(--land-locked);box-shadow:none;opacity:.35}.tile.next{background:var(--land-locked);box-shadow:inset 0 0 0 2px var(--accent);opacity:.85}.tile.next .mark{color:var(--accent);font-size:18px;font-weight:700;line-height:1}.tile.hub{background:var(--hub);color:#fff;box-shadow:none;gap:2px}.tile.hub .bicon{font-size:26px}.tile.hub .bname{font-size:11px;font-weight:600;opacity:.9}.tile.sel{box-shadow:inset 0 0 0 2px var(--info);z-index:1}.tile.paused{filter:grayscale(1) brightness(.9)}.tile.stalled:after{content:"";position:absolute;top:3px;right:3px;width:7px;height:7px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 1.5px var(--surface)}.tile .bname{line-height:1.05;text-align:center;padding:0 1px}.tile .bicon{font-size:15px;line-height:1}.tile .lvl{position:absolute;bottom:1px;right:3px;font-weight:800;font-size:9px}.tile .decor{position:absolute;top:1px;left:2px;font-size:10px}@media(min-width:380px){.tile{font-size:10px}.tile .bicon{font-size:17px}}.bell{position:relative;background:none;color:var(--fg);padding:0;min-height:36px;width:36px;display:grid;place-items:center}.bell-count{position:absolute;top:0;right:0;background:var(--danger);color:#fff;border-radius:999px;font-size:10px;font-weight:700;padding:0 5px;line-height:15px;box-shadow:0 0 0 2px var(--surface)}.sheet{position:fixed;inset:0;background:#0a0e0c80;z-index:50;display:flex;align-items:flex-end;justify-content:center}.sheet-body{background:var(--bg);width:100%;max-width:520px;max-height:80vh;overflow-y:auto;overscroll-behavior:contain;border-radius:var(--r-lg) var(--r-lg) 0 0;padding:8px var(--pad) calc(var(--safe-b) + 16px)}.sheet-body:before{content:"";display:block;width:36px;height:4px;border-radius:999px;background:var(--line);margin:4px auto 10px}@media(prefers-reduced-motion:no-preference){.sheet{animation:fade .15s ease-out}.sheet-body{animation:rise .22s cubic-bezier(.2,.8,.2,1)}}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{transform:translateY(100%)}}.unread{background:var(--accent-soft);border-radius:var(--r-sm);padding-left:8px;padding-right:8px}.road-row{padding:10px 0;border-bottom:1px solid var(--line);opacity:.5}.road-row.done{opacity:1}.road-row.cur{opacity:1;background:var(--accent-soft);border-radius:var(--r);padding:10px;border-bottom:0}
