:root{--bg:var(--tg-theme-bg-color,#f4f1ee);--card:var(--tg-theme-secondary-bg-color,#fff);--text:var(--tg-theme-text-color,#1d1b19);--hint:var(--tg-theme-hint-color,#8a847e);--button:var(--tg-theme-button-color,#f26b1d);--button-text:var(--tg-theme-button-text-color,#fff);--seat:#f26b1d;--seat-deep:#c4500f;--seat-stitch:#ffb27f;--taken:#8d8a87;--taken-deep:#6b6866;--mine:#8b5cf6;--mine-deep:#6d28d9;--mine-stitch:#ddd6fe;--body:#23262b;--body-edge:#3a3f46;--floor:#15171a;--trim:#2d3137;--glass:#7fa7c9}@media (prefers-color-scheme:dark){:root:not(.tg){--bg:#141414;--card:#1f1f1f;--text:#f2efeb;--hint:#8f8a85}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;margin:0;font:15px/1.4 -apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,sans-serif}.app{padding:16px 16px calc(24px + env(safe-area-inset-bottom));max-width:440px;margin:0 auto}.trip{text-align:center;margin-bottom:8px}.route{display:flex;letter-spacing:-.01em;justify-content:center;align-items: center;gap:10px;font-size:22px;font-weight:700}.arrow{fill:none;stroke:var(--button);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.meta{color:var(--hint);margin-top:2px}.dot{margin:0 6px}.strong{color:var(--text);font-weight:600}.danger-text{color:#e5484d}.car-wrap{display:flex;justify-content:center}#car{overflow:visible;width:auto;max-width:100%;height:min(64vh,540px)}.seat{cursor:pointer;outline:none;transform-box:fill-box;transform-origin:center;transition:transform .15s}.seat .cushion,.seat .back,.seat .head{transition:fill .2s}.seat .cushion{fill:var(--seat)}.seat .back,.seat .head{fill:var(--seat-deep)}.seat .stitch{fill:none;stroke:var(--seat-stitch);stroke-width:1;stroke-dasharray:3 3;opacity:.7}.seat .ring{fill:none;stroke:#fff;stroke-width:3;opacity:0;transition:opacity .15s}.seat .label{fill:#fff;text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:15px;font-weight:700}.seat .sublabel{fill:#fff;text-anchor:middle;dominant-baseline:central;opacity:.95;pointer-events:none;font-size:10px;font-weight:600}.seat.free:hover{transform:scale(1.03)}.seat.free:focus-visible{transform:scale(1.03)}.seat.selected .ring{opacity:1}.arrived-badge circle{fill:#22a861;stroke:var(--floor);stroke-width:2.5}.arrived-badge path{fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.seat.taken{cursor:default}.seat.taken.clickable{cursor:pointer}.seat.taken .cushion{fill:var(--taken)}.seat.taken .back,.seat.taken .head{fill:var(--taken-deep)}.seat.taken .stitch{stroke:#b9b6b3}.seat.mine .cushion{fill:var(--mine)}.seat.mine .back,.seat.mine .head{fill:var(--mine-deep)}.seat.mine .stitch{stroke:var(--mine-stitch);opacity:.9}.seat.mine .ring{opacity:1;stroke:#c4b5fd;filter:drop-shadow(0 0 6px #8b5cf6e6)}.seat.driver{cursor:default}.seat.driver .cushion{fill:var(--seat);opacity:.55}.seat.driver .back,.seat.driver .head{fill:var(--seat-deep);opacity:.55}@keyframes pulse{0%,to{opacity:0}50%{opacity:.55}}.seat.free .ring{animation:2.4s ease-in-out infinite pulse;stroke:var(--seat-stitch)}.seat.free.selected .ring{animation:none;opacity:1;stroke:#fff}#car.has-mine .seat.free:not(.selected) .ring{animation:none;opacity:0}.legend{display:flex;color:var(--hint);justify-content:center;gap:18px;margin:6px 0 14px;font-size:13px}.legend span{display:inline-flex;align-items: center;gap:6px}.sw{display:inline-block;border-radius:4px;width:12px;height:12px}.sw.free{background:var(--seat)}.sw.taken{background:var(--taken)}.sw.mine{background:var(--mine);box-shadow:0 0 6px #8b5cf6cc}.sheet{background:var(--card);animation:.2s ease-out rise;border-radius:18px;padding:16px;box-shadow:0 6px 24px #00000014}@keyframes rise{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}.sheet-row{display:flex;justify-content:space-between;align-items: center;gap:12px}.sheet-title{font-size:17px;font-weight:700}.sheet-sub{color:var(--hint);font-size:13px}.price{white-space:nowrap;font-size:22px;font-weight:800}.price small{color:var(--hint);font-size:14px;font-weight:600}.note{color:var(--hint);margin:10px 0 12px;font-size:13px}.note:empty{display:none}.action{background:var(--button);color:var(--button-text);font:inherit;cursor:pointer;border:0;border-radius:12px;width:100%;padding:14px;font-size:16px;font-weight:700}.action.secondary{color:#e5484d;background:0 0;box-shadow:inset 0 0 0 1.5px #e5484d}.action:disabled{opacity:.5;cursor:default}.tg .action{display:none}.demo-nav{position:sticky;z-index:10;display:flex;background:color-mix(in srgb,var(--bg)85%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid color-mix(in srgb,var(--hint)25%,transparent);flex-wrap:wrap;justify-content:center;gap:4px;padding:8px;top:0}.demo-nav a{color:var(--hint);text-decoration:none;border-radius:999px;padding:6px 10px;font-size:13px;font-weight:600}.demo-nav a.active{background:var(--seat);color:#fff}.tg .demo-nav{display:none}.card{background:var(--card);border-radius:18px;margin-top:12px;padding:16px;box-shadow:0 6px 24px #0000000f}.card[hidden],.sheet[hidden]{display:none}.sheet{margin-top:4px}.page-head{margin:4px 0 14px}.page-head h1{letter-spacing:-.01em;margin:0;font-size:24px}.page-head .meta{margin:2px 0 0}.section-title{margin:18px 0 4px;font-weight:700}.section-title .meta{display:inline;font-weight:400}.empty{color:var(--hint);text-align:center}.field-label{color:var(--hint);margin-bottom:6px;font-size:13px}.badge-row{display:flex;justify-content:center;margin:2px 0 4px}.badge{background:color-mix(in srgb,var(--seat)15%,transparent);color:var(--seat-deep);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700}.action.compact{white-space:nowrap;width:auto;padding:12px 16px;font-size:15px}a.action{display:block;text-align:center;text-decoration:none;box-sizing:border-box;margin-top:12px}.action.ghost{color:var(--seat);box-shadow:inset 0 0 0 1.5px var(--seat);background:0 0}#save{margin-top:16px}.icon-btn{background:color-mix(in srgb,var(--hint)18%,transparent);color:var(--hint);cursor:pointer;border:0;border-radius:50%;flex:none;width:30px;height:30px;font-size:14px}.link-danger{display:block;cursor:pointer;color:#e5484d;font:inherit;background:0 0;border:0;margin:18px auto 0;padding:8px;font-weight:600}.armed{animation:.25s shake}@keyframes shake{25%{transform:translate(-3px)}75%{transform:translate(3px)}}.stepper{display:flex;align-items: center;gap:10px;margin:14px 0}.stepper>button{cursor:pointer;background:color-mix(in srgb,var(--seat)14%,transparent);color:var(--seat-deep);border:0;border-radius:14px;flex:none;width:48px;height:48px;font-size:24px;font-weight:700}.price-input{display:flex;background:var(--bg);box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--hint)30%,transparent);border-radius:14px;flex:1;align-items:baseline;gap:6px;padding:10px 14px}.price-input:focus-within{box-shadow:inset 0 0 0 2px var(--seat)}.price-input input{outline:none;color:var(--text);font:inherit;text-align:right;background:0 0;border:0;width:100%;min-width:0;font-size:24px;font-weight:800}.price-input span{color:var(--hint);font-weight:600}.price-input.small input{font-size:18px}.inline-form{display:flex;align-items:stretch;gap:10px}.stats{display:flex;gap:12px}.stats>div{background:var(--bg);border-radius:14px;flex:1;padding:10px 12px}.stat-num{font-size:22px;font-weight:800}.stat-num small{color:var(--hint);font-size:14px;font-weight:600}.stat-label{color:var(--hint);font-size:12px}.plist{list-style:none;margin:12px 0 0;padding:0}.plist li{display:flex;border-top:1px solid color-mix(in srgb,var(--hint)18%,transparent);align-items: center;gap:10px;padding:8px 0}.plist li:first-child{border-top:0}.pnum{display:grid;background:var(--seat);color:#fff;border-radius:7px;flex:none;place-items: center;width:24px;height:24px;font-size:13px;font-weight:700}.pname{flex:1;font-weight:600}.pname.muted{color:var(--hint);font-weight:400}.pprice{color:var(--hint);font-variant-numeric:tabular-nums}.route-list{list-style:none;display:grid;gap:10px;margin:0;padding:0}.route-card{display:flex;text-decoration:none;color:inherit;background:var(--card);border-radius:16px;align-items: center;gap:12px;padding:14px 14px 14px 16px;box-shadow:0 4px 16px #0000000d}.route-card-main{flex:1;min-width:0}.route-card-title{font-size:16px;font-weight:700}.arrow-text{color:var(--seat)}.route-card-sub{color:var(--hint);margin-top:2px;font-size:13px}.route-card-time{font-variant-numeric:tabular-nums;font-size:18px;font-weight:800}.chev{color:var(--hint);font-size:22px}.form{display:grid;gap:12px;margin-top:0}.field{display:grid}.field input{font:inherit;color:var(--text);background:var(--bg);outline:none;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--hint)30%,transparent);border:0;border-radius:12px;padding:12px 14px;font-size:16px}.field input:focus{box-shadow:inset 0 0 0 2px var(--seat)}.ab{display:flex;align-items: center;gap:10px}.ab-fields{display:grid;flex:1;gap:12px}.swap{cursor:pointer;background:color-mix(in srgb,var(--seat)14%,transparent);color:var(--seat-deep);border:0;border-radius:50%;flex:none;width:40px;height:40px;font-size:20px;font-weight:700}.car-wrap.compact #car{height:min(54vh,460px)}#toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:20;opacity:0;pointer-events:none;color:#fff;text-align:center;background:#1d1b19;border-radius:12px;max-width:calc(100% - 32px);padding:10px 16px;transition:opacity .2s,transform .2s;font-size:14px;font-weight:600;transform:translate(-50%,20px)}#toast.show{opacity:1;transform:translate(-50%)}.ok-text{color:#22a861;font-weight:600}.action.ghost-gray{color:var(--hint);box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--hint)50%,transparent);background:0 0}.sheet .link-danger{margin-top:8px;font-size:14px}.stats>div.all-here{background:#22a86129}.stats>div.all-here .stat-num,.stats>div.all-here .stat-label{color:#22a861}.pname{display:flex;flex-direction:column}.pstatus{font-size:12px;font-weight:500}.pstatus.ok{color:#22a861}.pstatus.wait{color:var(--hint)}.center-msg{display:grid;text-align:center;place-content: center;gap:6px;min-height:60vh;padding:0 16px}.center-msg h2{margin:0;font-size:20px}.center-msg p{color:var(--hint);margin:0}.spinner{border:3px solid color-mix(in srgb,var(--seat)25%,transparent);border-top-color:var(--seat);animation:.8s linear infinite spin;border-radius:50%;width:32px;height:32px;margin:auto}@keyframes spin{to{transform:rotate(360deg)}}.demo-label{color:var(--hint);align-self: center;margin-right:4px;font-size:12px}#write{margin-bottom:10px}
