:root{--mandu-midnight: #0B2432;--mandu-midnight950: #06151D;--mandu-midnight900: #0B2432;--mandu-midnight800: #103646;--mandu-midnight700: #174B60;--mandu-midnight600: #1E6178;--mandu-midnight500: #2A7A91;--mandu-midnight400: #4E95A8;--mandu-midnight300: #79B3C0;--mandu-midnight200: #A9D1D8;--mandu-midnight100: #D8EAED;--mandu-midnight50: #F1F8F9;--mandu-clay950: #35120D;--mandu-clay900: #522017;--mandu-clay800: #713023;--mandu-clay700: #93422F;--mandu-clay600: #B4553D;--mandu-clay500: #CF6B4F;--mandu-clay400: #DF866D;--mandu-clay300: #EBA997;--mandu-clay200: #F3C9BE;--mandu-clay100: #F9E5DF;--mandu-clay50: #FFF6F3;--mandu-wheat950: #2C210C;--mandu-wheat900: #473616;--mandu-wheat800: #644C20;--mandu-wheat700: #84662A;--mandu-wheat600: #A58339;--mandu-wheat500: #C3A252;--mandu-wheat400: #D6B970;--mandu-wheat300: #E5CF9B;--mandu-wheat200: #F0E1BF;--mandu-wheat100: #F8F0DE;--mandu-wheat50: #FEFBF4;--mandu-graphite950: #11171A;--mandu-graphite900: #1B2428;--mandu-graphite800: #2B373C;--mandu-graphite700: #445258;--mandu-graphite600: #5D6C72;--mandu-graphite500: #75848A;--mandu-graphite400: #96A2A7;--mandu-graphite300: #B7C0C4;--mandu-graphite200: #D2D8DA;--mandu-graphite100: #E9ECEE;--mandu-graphite50: #F6F8F8;--mandu-green700: #28634F;--mandu-green500: #3E8A70;--mandu-green100: #E0F0EA;--mandu-red700: #9E3C3C;--mandu-red500: #C85A5A;--mandu-red100: #F8E4E4;--mandu-amber700: #88621E;--mandu-amber500: #C99735;--mandu-amber100: #F7EBCF;--mandu-white: #FFFFFF;--mandu-cream: #FEFBF4;--mandu-black: #000000;--mandu-font-sans: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mandu-radius-xs: 6px;--mandu-radius-sm: 10px;--mandu-radius-md: 16px;--mandu-radius-lg: 24px;--mandu-radius-xl: 32px;--mandu-shadow-1: 0 1px 2px rgba(6,21,29,.08);--mandu-shadow-2: 0 8px 24px rgba(6,21,29,.12);--mandu-space-1: 4px;--mandu-space-2: 8px;--mandu-space-3: 12px;--mandu-space-4: 16px;--mandu-space-5: 24px;--mandu-space-6: 32px;--mandu-space-7: 48px;--mandu-space-8: 64px}[data-theme=dark]{--surface: var(--mandu-midnight950);--surface-raised: var(--mandu-midnight900);--text-primary: var(--mandu-white);--text-secondary: var(--mandu-midnight200);--border: var(--mandu-midnight700)}:root{--bg: var(--mandu-graphite50);--surface: var(--mandu-white);--surface-2: var(--mandu-graphite100);--text: var(--mandu-midnight950);--text-2: var(--mandu-graphite700);--border: var(--mandu-graphite200);--brand: var(--mandu-midnight);--brand-contrast: var(--mandu-white);--accent: var(--mandu-clay600);--accent-soft: var(--mandu-clay100);--ok: var(--mandu-green700);--ok-soft: var(--mandu-green100);--warn: var(--mandu-amber700);--warn-soft: var(--mandu-amber100);--danger: var(--mandu-red700);--danger-strong: #B3261E;--danger-soft: var(--mandu-red100);--info-soft: var(--mandu-midnight100);--focus: #1E6178;--radius: var(--mandu-radius-md);--shadow: var(--mandu-shadow-2);color-scheme:light}[data-theme=dark]{--bg: var(--mandu-midnight950);--surface: var(--mandu-midnight900);--surface-2: var(--mandu-midnight800);--text: var(--mandu-white);--text-2: var(--mandu-midnight200);--border: var(--mandu-midnight700);--brand: var(--mandu-midnight300);--brand-contrast: var(--mandu-midnight950);--accent: var(--mandu-clay400);--accent-soft: #3a1d16;--ok: #6FC3A4;--ok-soft: #12352a;--warn: #E5BD62;--warn-soft: #3b2e10;--danger: #F08A84;--danger-strong: #E5534B;--danger-soft: #3d1414;--info-soft: var(--mandu-midnight800);--focus: #79B3C0;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--mandu-font-sans);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--brand)}h1,h2,h3{margin:0 0 .5rem;line-height:1.2}h1{font-size:1.6rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:.25rem 0 .75rem}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.muted{color:var(--text-2)}.small{font-size:.85rem}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.9em;word-break:break-all}.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:.5rem}.spread{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}.grid{display:grid;gap:1rem}.grid-2{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid-3{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.stack>*+*{margin-top:.75rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;box-shadow:var(--mandu-shadow-1)}.card.flat{box-shadow:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:44px;padding:.55rem 1rem;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer;text-decoration:none;transition:background .15s,transform .05s}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-contrast)}.btn.accent{background:var(--accent);border-color:var(--accent);color:#fff}.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.danger{background:var(--danger-strong);border-color:var(--danger-strong);color:#fff}.btn.ghost{background:transparent;border-color:transparent}.btn.small{min-height:34px;padding:.3rem .65rem;font-size:.9rem;border-radius:10px}.btn.big{min-height:64px;font-size:1.25rem;border-radius:16px;width:100%}.btn.huge{min-height:84px;font-size:1.6rem;letter-spacing:.02em;border-radius:20px;width:100%}label.field{display:flex;flex-direction:column;gap:.3rem;font-weight:600;font-size:.95rem}label.field .hint{font-weight:400;color:var(--text-2);font-size:.85rem}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.6rem .7rem;min-height:44px;width:100%}textarea{min-height:90px;resize:vertical}input[type=checkbox],input[type=radio]{width:22px;height:22px;min-height:0;accent-color:var(--brand)}.check{display:flex;gap:.6rem;align-items:flex-start;font-weight:500}.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .55rem;border-radius:999px;font-size:.78rem;font-weight:700;background:var(--surface-2);color:var(--text);border:1px solid var(--border);white-space:nowrap}.badge.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}.badge.danger{background:var(--danger-soft);color:var(--danger);border-color:transparent}.badge.info{background:var(--info-soft);color:var(--text);border-color:transparent}.badge.accent{background:var(--accent-soft);color:var(--accent);border-color:transparent}.dot{width:12px;height:12px;border-radius:50%;display:inline-block;flex:none}.dot.GREEN{background:#2e9e6b}.dot.YELLOW{background:#d9a520}.dot.RED{background:#d64545}.dot.NONE{background:var(--mandu-graphite400)}.alert{padding:.8rem 1rem;border-radius:12px;border:1px solid var(--border);background:var(--surface-2)}.alert.danger{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.alert.warn{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.alert.ok{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}.alert.info{background:var(--info-soft);border-color:var(--border)}.empty{text-align:center;color:var(--text-2);padding:2rem 1rem;border:2px dashed var(--border);border-radius:var(--radius)}.skeleton{background:linear-gradient(90deg,var(--surface-2),var(--surface),var(--surface-2));background-size:200% 100%;animation:sk 1.2s infinite;border-radius:8px;min-height:1rem}@keyframes sk{0%{background-position:200% 0}to{background-position:-200% 0}}table.table{width:100%;border-collapse:collapse;font-size:.92rem}table.table th,table.table td{padding:.55rem .5rem;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}table.table th{font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-2)}.table-wrap{overflow-x:auto}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#06151d8c;display:flex;align-items:flex-end;justify-content:center;z-index:50;padding:0}@media (min-width: 720px){.modal-backdrop{align-items:center;padding:1rem}}.modal{background:var(--surface);color:var(--text);width:100%;max-width:640px;max-height:92vh;overflow:auto;border-radius:20px 20px 0 0;padding:1.25rem;box-shadow:var(--shadow)}@media (min-width: 720px){.modal{border-radius:20px}}.toast-zone{position:fixed;bottom:1rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:.5rem;z-index:60;width:min(92vw,520px)}.toast{padding:.8rem 1rem;border-radius:12px;background:var(--brand);color:var(--brand-contrast);box-shadow:var(--shadow);font-weight:600}.toast.error{background:var(--danger-strong);color:#fff}.tabs{display:flex;gap:.25rem;overflow-x:auto;border-bottom:1px solid var(--border)}.tabs button{background:none;border:none;padding:.7rem .9rem;font:inherit;font-weight:600;color:var(--text-2);cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap}.tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent)}.kpi{display:flex;flex-direction:column;gap:.15rem}.kpi .v{font-size:1.7rem;font-weight:800}.kpi .l{color:var(--text-2);font-size:.85rem}.bar{height:10px;border-radius:6px;background:var(--accent)}.map{width:100%;height:100%;min-height:280px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}.qr svg{width:100%;max-width:220px;height:auto;background:#fff;border-radius:12px;padding:4px}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition:none!important}}:root{--space-control: 44px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}.row>*,.spread>*,.grid>*,.grid-2>*,.grid-3>*{min-width:0}input,select,textarea{max-width:100%}.card,.alert,.empty,.modal{overflow-wrap:anywhere}.card{box-shadow:none}.table-wrap{max-width:100%;overscroll-behavior-inline:contain}table.table th{text-transform:none;letter-spacing:0;font-size:.85rem}.modal{max-height:90dvh;padding-bottom:max(1.25rem,env(safe-area-inset-bottom))}button,a,input,select,textarea{touch-action:manipulation}@media (max-width: 720px),(pointer: coarse){.btn.small,.tabs button{min-height:var(--space-control)}.toast-zone{bottom:calc(6rem + env(safe-area-inset-bottom))}.modal-backdrop{padding-bottom:env(safe-area-inset-bottom)}}body{font-size:17px}.app{max-width:560px;margin:0 auto;min-height:100vh;padding:.75rem .75rem calc(5.5rem + env(safe-area-inset-bottom))}.head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.75rem}.head img{height:30px}.tabbar{position:fixed;bottom:0;left:0;right:0;background:var(--mandu-midnight);display:flex;justify-content:space-around;padding:.4rem .25rem calc(.4rem + env(safe-area-inset-bottom));z-index:30}.tabbar a{color:#d8eaed;text-decoration:none;font-size:.78rem;font-weight:700;display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.3rem .5rem;border-radius:10px;min-width:60px}.tabbar a span{font-size:1.35rem;line-height:1}.tabbar a.active{background:#ffffff24;color:#fff}.status{border-radius:18px;padding:1rem;color:#fff;background:var(--mandu-midnight)}.status.QUEUE{background:var(--mandu-green700)}.status.BLOCKED{background:#b3261e}.status .big{font-size:2.6rem;font-weight:900;line-height:1}.stop{border:3px solid var(--brand);border-radius:20px;padding:1rem;background:var(--surface)}.stop .addr{font-size:1.35rem;font-weight:800;line-height:1.25}.stop .label{font-size:2rem;font-weight:900}.pin-input{font-size:2.2rem;text-align:center;letter-spacing:.6em;font-weight:800}.offline{background:var(--warn-soft);color:var(--warn);border:2px solid var(--warn);border-radius:12px;padding:.6rem .8rem;font-weight:700;margin-bottom:.75rem}.track{max-width:560px;margin:0 auto;padding:1rem}.track .stage{display:flex;justify-content:space-between;margin:1rem 0}.track .stage div{flex:1;text-align:center;font-size:.78rem;color:var(--text-2);position:relative}.track .stage div:before{content:"";display:block;width:18px;height:18px;border-radius:50%;margin:0 auto .3rem;background:var(--border)}.track .stage div.on{color:var(--text);font-weight:700}.track .stage div.on:before{background:var(--accent)}.stars button{font-size:2.2rem;background:none;border:none;cursor:pointer;color:var(--mandu-wheat500)}.app{padding-top:1rem}.head{border-bottom:1px solid var(--border);padding-bottom:.85rem;margin-bottom:1rem}.head>*{min-width:0}.tabbar a{min-width:0;min-height:52px;flex:1;padding-inline:.1rem}.stop{border-width:2px;border-radius:14px}.status{border-radius:14px}.track .stage{gap:.4rem}.pin-input{letter-spacing:.35em}@media (min-width: 1000px){.app{max-width:760px;padding:1.5rem 2rem 7rem}.tabbar{left:50%;right:auto;transform:translate(-50%);width:760px;border-radius:14px 14px 0 0}}.notice-action{display:block;width:100%;text-align:left;font:inherit;margin-bottom:.5rem;cursor:pointer}:root{--bg: #F3F6F7;--primary: #146080}.app{padding-top:.75rem}.btn{border-radius:16px;font-size:1.05rem}.btn.primary{background:var(--primary);border-color:var(--primary)}.btn.huge{min-height:88px;font-size:1.7rem;border-radius:22px}.btn.big{min-height:68px}.card{border-radius:18px}.status{border-radius:20px;padding:1.25rem}.status .big{font-size:3rem}.stop{border-radius:20px;border-color:var(--primary);border-width:3px}.tabbar{background:#0b2432}.tabbar a.active{background:var(--primary)}
