:root{font-family:'DM Sans',system-ui,sans-serif;color:#172844;background:#f4f7fc;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}[v-cloak]{display:none!important}.icon{width:19px;height:19px;display:inline-block;vertical-align:middle;flex:none}.muted{color:#92a0b5}.eyebrow{font-size:10px;letter-spacing:.15em;font-weight:800;color:#2b76e8}.button{border:0;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-size:12px;font-weight:800;white-space:nowrap;padding:11px 16px;transition:transform .2s,background .2s,box-shadow .2s}.button:hover{transform:translateY(-1px)}.button:disabled{opacity:.5;cursor:not-allowed;transform:none}.button .icon{width:16px;height:16px}.button.primary{background:#1766e8;color:white;box-shadow:0 8px 20px rgba(27,105,229,.2)}.button.primary:hover{background:#0858db}.button.subtle{background:white;color:#52627a;border:1px solid #e2e9f3;box-shadow:0 2px 10px rgba(24,50,91,.03)}.button.compact{padding:10px 14px}.icon-button{width:34px;height:34px;border:0;background:transparent;border-radius:9px;color:#70819a;display:inline-flex;align-items:center;justify-content:center}.icon-button:hover{background:#edf4ff;color:#1265e6}.mobile-only{display:none}.brand,.admin-brand{display:inline-flex;align-items:center;gap:10px;font-family:Manrope,system-ui,sans-serif;font-weight:800;letter-spacing:-.04em;font-size:19px}.brand-icon{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;background:#1568ec;color:white;border-radius:10px;box-shadow:0 5px 12px rgba(21,104,236,.25)}.brand-icon .icon{width:22px;height:22px}.brand-accent{color:#1766e8}.connection{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:700;color:#667891;background:#f6f9fe;border:1px solid #e7edf5;border-radius:100px;padding:7px 10px;white-space:nowrap}.connection i,.live-dot{width:7px;height:7px;display:inline-block;flex:none;border-radius:50%;background:#92a0b5}.connection.live i,.live-dot{background:#16bf71;box-shadow:0 0 0 4px rgba(22,191,113,.12)}.connection.connecting i{background:#f0ad2e}.connection.offline i{background:#94a3b8}.loading-ring{width:28px;height:28px;border:3px solid #e4edfb;border-top-color:#1766e8;display:inline-block;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}

/* Public fleet */
.public-shell{height:100dvh;min-height:600px;display:flex;flex-direction:column;padding:0;background:#f3f7fc}.public-header{height:64px;flex:none;background:white;border:0;border-bottom:1px solid #e1e9f2;border-radius:0;display:flex;align-items:center;justify-content:space-between;padding:0 23px;box-shadow:0 9px 34px rgba(33,74,120,.05);z-index:10}.header-actions{display:flex;align-items:center;gap:14px}.public-content{min-height:0;flex:1;display:flex;border:0;border-radius:0;overflow:hidden}.fleet-sidebar{--sidebar-w:345px;width:var(--sidebar-w);flex:none;background:white;display:flex;flex-direction:column;overflow:auto;border-right:1px solid #e7edf4;padding:25px 21px 0;z-index:3;scrollbar-width:thin;transition:margin-left .25s ease,visibility .25s}.sidebar-heading{display:flex;justify-content:space-between}.sidebar-heading h1{font-family:Manrope,sans-serif;font-size:21px;letter-spacing:-.055em;margin:7px 0 4px;color:#14243f}.sidebar-heading p{font-size:12px;color:#8b99ac;margin:0}.sidebar-stats{margin:23px 0;display:flex;align-items:center;gap:13px;padding:17px 18px;background:linear-gradient(105deg,#f1f6ff,#f7faff);border:1px solid #e6efff;border-radius:13px}.stat-orb{width:43px;height:43px;border-radius:12px;background:white;color:#1766e8;display:flex;align-items:center;justify-content:center;box-shadow:0 5px 14px rgba(41,112,218,.1)}.stat-orb .icon{width:23px;height:23px}.sidebar-stats strong{display:block;font:800 19px Manrope,sans-serif;line-height:1.1}.sidebar-stats span:not(.stat-orb){font-size:10px;color:#8a9cb2;display:block;margin-top:3px}.stat-divider{height:29px;width:1px;background:#dfe8f6;margin:0 3px}.filter-block{margin-bottom:13px;min-width:0}.filter-block label{font-size:11px;font-weight:800;color:#4c5d75;display:block;margin-bottom:7px}.filter-block input,.filter-block select,.admin-toolbar select{height:39px;width:100%;border:1px solid #dfe7f1;border-radius:8px;background:white;color:#29415f;padding:0 11px;outline:none;font-size:11px}.filter-block input:focus,.filter-block select:focus,.admin-toolbar select:focus{border-color:#4b91ed;box-shadow:0 0 0 3px rgba(34,120,230,.1)}.filter-block input::placeholder{color:#9caac0}.search-field{position:relative}.search-field>.icon{position:absolute;left:11px;top:10px;width:17px;height:17px;color:#91a0b4}.search-field input{padding-left:37px;padding-right:33px}.search-field button{position:absolute;right:3px;top:3px;width:33px;height:33px;border:0;background:transparent;color:#94a2b4}.search-field button .icon{width:15px;height:15px}.filter-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}.list-title{display:flex;align-items:center;justify-content:space-between;padding:6px 1px 9px;border-bottom:1px solid #edf1f6}.list-title strong{font-size:11px}.list-title strong span{color:#a2afbe;font-weight:600;margin-left:5px}.list-title .icon-button{height:25px;width:25px}.list-title .icon{width:15px;height:15px}.bus-list{overflow:auto;min-height:50px;scrollbar-width:thin}.bus-row{width:100%;padding:12px 7px 12px 1px;background:white;border:0;border-bottom:1px solid #edf1f6;text-align:left;display:flex;align-items:center;gap:10px;transition:background .2s}.bus-row:hover,.bus-row.selected{background:#f5f9ff}.bus-status-icon{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:white;flex:none}.bus-status-icon .icon{width:18px;height:18px}.moving.bus-status-icon,.moving.table-bus-icon{background:#15ba68}.stopped.bus-status-icon,.stopped.table-bus-icon{background:#f2a91d}.stale.bus-status-icon,.stale.table-bus-icon{background:#8794a7}.offline.bus-status-icon,.offline.table-bus-icon{background:#ed4d58}.bus-row-main{flex:1;min-width:0}.bus-row-main>strong{display:block;font-size:10px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.route-arrow{color:#8ea3bc}.bus-row-main small{display:flex;align-items:center;gap:7px;margin-top:5px}.bus-row-main small b{font-size:9px;padding:3px 5px;border-radius:4px;background:#f0f4f9;color:#536682}.mini-status{font-size:9px;font-weight:700;border-radius:4px;padding:3px 5px}.mini-status.moving,.status-badge.moving{color:#168452;background:#d8f9e7}.mini-status.stopped,.status-badge.stopped{color:#a36906;background:#fff0c8}.mini-status.stale,.status-badge.stale{color:#62748b;background:#e8edf3}.mini-status.offline,.status-badge.offline{color:#be3847;background:#ffe4e7}.bus-row-time{font-size:9px;color:#95a2b4;white-space:nowrap}.sidebar-footer{margin-top:auto;border-top:1px solid #edf1f5;padding:14px 0;display:flex;align-items:center;gap:8px;color:#9aa8ba;font-size:10px}.sidebar-footer .live-dot{width:6px;height:6px}.empty-list{padding:40px 16px;text-align:center;color:#9aa8ba;font-size:11px}.empty-list>.icon{width:32px;height:32px;display:block;margin:0 auto 12px;color:#b8c8da}.empty-list strong{display:block;color:#4c6079}.empty-list p{margin:6px 0}.inline-alert{padding:10px 12px;background:#fff0ed;border:1px solid #f7d3ce;color:#ae3c35;border-radius:8px;font-size:11px;margin:10px 0}

/* Map and overlays */
.public-map-area,.admin-map-card,.track-card{position:relative;min-width:0}.public-map-area{flex:1;background:#dcefe7;overflow:hidden}.fleet-map{width:100%;height:100%;position:relative;background:radial-gradient(circle at 70% 20%,#e6f4df,#d7e9e8 65%,#c8dfeb)}.fleet-map canvas{outline:none}.map-error{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#dcebe8,#e9f1e5);padding:30px;text-align:center}.map-error-card{background:white;border:1px solid #e0e9ef;box-shadow:0 10px 30px rgba(39,68,91,.13);border-radius:15px;padding:25px;max-width:280px}.map-error-card .icon{width:29px;height:29px;color:#1766e8}.map-error-card strong{display:block;margin:10px 0 4px;font:800 15px Manrope,system-ui,sans-serif}.map-error-card p{font-size:11px;color:#7d8da0;line-height:1.5;margin:0}.map-top-info{position:absolute;top:22px;left:22px;right:22px;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none}.map-title{background:white;border:1px solid #edf2f6;border-radius:11px;box-shadow:0 7px 20px rgba(39,73,100,.1);padding:12px 16px;display:flex;flex-direction:column;gap:2px}.map-title strong{font:800 14px Manrope,system-ui,sans-serif;color:#213a57}.map-count{display:inline-flex;align-items:center;gap:7px;background:white;border:1px solid #edf2f6;border-radius:100px;padding:10px 13px;box-shadow:0 7px 20px rgba(39,73,100,.1);color:#526880;font-size:10px;font-weight:800}.map-count .icon{color:#1766e8;width:15px;height:15px}.map-legend{position:absolute;left:22px;bottom:22px;display:flex;align-items:center;gap:17px;background:white;padding:12px 16px;border-radius:9px;box-shadow:0 7px 24px rgba(30,65,92,.12);font-size:10px;font-weight:700;color:#52657c}.legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.legend-dot.moving{background:#16bf71}.legend-dot.stopped{background:#f4b02b}.legend-dot.stale{background:#8794a7}.legend-dot.offline{background:#ed4d58}.map-bus-card{position:absolute;left:50%;top:43%;transform:translate(-50%,-50%);display:flex;gap:13px;min-width:295px;max-width:calc(100% - 28px);background:white;border:1px solid #e6edf4;border-radius:14px;box-shadow:0 13px 40px rgba(31,65,95,.19);padding:17px 32px 17px 16px}.close-card{position:absolute;right:8px;top:8px;border:0;background:transparent;color:#9ba8b8}.close-card .icon{width:15px;height:15px}.map-bus-icon{width:54px;height:54px;flex:none;border-radius:10px;background:linear-gradient(145deg,#e5efff,#f7faff);display:grid;place-items:center;color:#1766e8}.map-bus-icon .icon{height:30px;width:30px}.map-card-content{min-width:0}.map-card-heading{display:flex;align-items:center;gap:7px}.map-card-heading strong{font:800 14px Manrope,system-ui,sans-serif}.map-card-content p{font-size:11px;margin:7px 0;color:#52647e}.map-card-content p span{color:#1766e8}.map-card-facts{display:flex;gap:14px;margin:9px 0 7px}.map-card-facts span{font-size:10px;color:#50627b;display:flex;align-items:center;gap:3px}.map-card-facts .icon{width:13px;height:13px;color:#7d92ac}.map-card-content small{font-size:9px;color:#94a3b5}.yandex-bus-marker{border:2px solid white;width:35px;height:35px;border-radius:12px 12px 12px 3px;display:grid;place-items:center;box-shadow:0 4px 12px rgba(15,38,77,.27);transform:translate(-50%,-100%) rotate(-45deg);cursor:pointer}.yandex-bus-marker .icon{width:18px;height:18px;transform:rotate(45deg)}.yandex-bus-marker.moving{background:#13b764;color:white}.yandex-bus-marker.stopped{background:#efa924;color:white}.yandex-bus-marker.stale{background:#8d9bb0;color:white}.yandex-bus-marker.offline{background:#e94e58;color:white}.yandex-bus-marker.selected{background:#1766e8;box-shadow:0 0 0 6px rgba(27,105,229,.2),0 4px 12px rgba(15,38,77,.2)}.yandex-cluster-marker{background:#1766e8;color:white;border:3px solid white;box-shadow:0 0 0 5px rgba(23,102,232,.16),0 5px 14px rgba(20,71,136,.25);height:39px;min-width:39px;border-radius:100px;display:grid;place-items:center;font:800 12px Manrope,system-ui,sans-serif;transform:translate(-50%,-50%);cursor:pointer}.mobile-bottom-nav{display:none}

/* Login */
.login-shell{min-height:100dvh;background:radial-gradient(circle at 15% 10%,#dcecff,#f4f7fc 48%,#f8f9fc);display:grid;place-items:center;padding:65px 24px;position:relative}.login-back{position:absolute;top:28px;left:max(28px,calc((100vw - 1010px)/2));display:flex;align-items:center;gap:8px;color:#677b94;font-size:12px;font-weight:700}.login-back:hover{color:#1766e8}.login-back .icon{width:16px;height:16px}.login-card{width:min(1010px,100%);min-height:550px;display:grid;grid-template-columns:.9fr 1fr;background:white;border-radius:20px;overflow:hidden;box-shadow:0 30px 80px rgba(25,63,108,.16);border:1px solid #e0e7f0}.login-visual{background:linear-gradient(148deg,#0b4bb2,#1475ee 61%,#35a3f3);padding:31px 39px;color:white;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.login-visual:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 90% 28%,rgba(255,255,255,.18),transparent 27%),radial-gradient(circle at 6% 88%,rgba(0,27,112,.35),transparent 40%)}.login-visual-top,.login-visual-copy,.login-visual-bottom{position:relative;z-index:1}.login-visual-top{display:flex;align-items:center;gap:10px;font:800 18px Manrope,system-ui,sans-serif}.login-visual-top .brand-icon{background:white;color:#1766e8;box-shadow:none}.login-visual-copy{padding-top:150px}.login-visual-copy .eyebrow{color:#b5d5ff}.login-visual-copy h1{font:800 clamp(35px,4vw,54px)/1.1 Manrope,system-ui,sans-serif;letter-spacing:-.06em;margin:13px 0}.login-visual-copy p{max-width:290px;font-size:13px;line-height:1.7;color:#d8e9ff;margin:0}.login-visual-bottom{font-size:10px;color:#d8e9ff;display:flex;align-items:center;gap:10px;margin-top:35px}.login-visual-bottom .live-dot{background:#4ce49a;box-shadow:0 0 0 4px rgba(44,232,145,.16)}.login-orbit{position:absolute;border:1px solid rgba(255,255,255,.14);border-radius:50%}.orbit-one{width:420px;height:420px;right:-155px;top:-95px}.orbit-two{width:300px;height:300px;right:-95px;top:-35px}.login-route{position:absolute;left:76px;right:60px;top:170px;height:85px;border-top:2px dashed rgba(255,255,255,.4);transform:rotate(-10deg)}.route-node{position:absolute;top:-9px;width:16px;height:16px;background:white;border-radius:50%;box-shadow:0 0 0 5px rgba(255,255,255,.2)}.route-node.start{left:0}.route-node.finish{right:0}.route-bus{position:absolute;top:-25px;left:52%;background:white;color:#1766e8;width:40px;height:40px;border-radius:10px;display:grid;place-items:center;box-shadow:0 8px 20px rgba(0,34,94,.25);transform:rotate(10deg)}.route-bus .icon{width:25px;height:25px}.login-form-area{padding:32px min(7vw,85px);display:flex;flex-direction:column;justify-content:center}.form-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:50px}.form-kicker{font-size:10px;letter-spacing:.15em;font-weight:800;color:#1766e8}.form-guard{display:flex;align-items:center;gap:5px;color:#9cabbd;font-size:10px;font-weight:700}.form-guard .icon{width:14px;height:14px}.form-symbol{width:48px;height:48px;border-radius:14px;background:#eaf3ff;color:#1766e8;display:grid;place-items:center}.form-symbol .icon{height:26px;width:26px}.login-form-intro h2{font:800 29px Manrope,system-ui,sans-serif;letter-spacing:-.05em;margin:18px 0 5px}.login-form-intro p{color:#8797aa;font-size:12px;line-height:1.6;margin:0 0 28px}.login-form-area .filter-block{margin-bottom:17px}.login-form-area .filter-block label{font-size:11px}.login-form-area .filter-block input{height:44px;font-size:12px}.password-field{position:relative}.password-field input{padding-right:45px}.password-field button{position:absolute;right:6px;top:5px;height:34px;width:34px;border:0;background:none;color:#8ca0b8}.password-field button .icon{width:17px;height:17px}.login-submit{margin-top:4px;width:100%;height:45px;justify-content:space-between;padding:0 17px}.form-error{font-size:11px;color:#c13b47;background:#fff0f0;border-radius:7px;padding:9px 11px}.form-footnote{font-size:10px;color:#9eacbd;text-align:center;margin-top:28px}

/* Admin */
.admin-shell{min-height:100dvh;display:flex;background:#f4f7fb}.admin-nav{width:226px;flex:none;min-height:100dvh;display:flex;flex-direction:column;padding:23px 13px;background:linear-gradient(175deg,#0e2745,#102b4d 55%,#0b203b);color:#aec0d6}.admin-brand{padding:2px 9px 39px;color:white;font-size:16px;white-space:nowrap}.admin-brand .brand-icon{width:31px;height:31px}.admin-brand small{position:absolute;left:56px;top:50px;color:#6198d1;font-size:8px;letter-spacing:.15em}.nav-section-label{font-size:9px;letter-spacing:.13em;font-weight:800;color:#6886a6;padding:0 13px 10px}.admin-nav-item{display:flex;align-items:center;gap:12px;width:100%;border:0;border-radius:9px;background:transparent;color:#a8bad0;text-align:left;padding:12px 13px;font-size:11px;font-weight:700;transition:background .2s,color .2s}.admin-nav-item:hover,.admin-nav-item.active{background:#1b416a;color:white}.admin-nav-item.active:before{content:'';width:3px;height:19px;background:#50a5ff;position:absolute;left:13px;border-radius:2px}.admin-nav-item .icon{width:18px;height:18px}.admin-nav-spacer{flex:1}.admin-profile{border-top:1px solid #2e4661;margin-top:30px;padding:20px 8px 12px;display:flex;align-items:center;gap:9px;min-width:0}.avatar,.admin-avatar-small{background:#ee6f96;color:white;border-radius:50%;width:32px;height:32px;display:grid;place-items:center;font-size:12px;font-weight:800;flex:none}.admin-profile div{min-width:0}.admin-profile strong,.admin-profile small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-profile strong{font-size:11px;color:white}.admin-profile small{font-size:9px;color:#7f9ab6;margin-top:3px}.logout-link{color:#a9bdd2}.admin-main{min-width:0;flex:1;display:flex;flex-direction:column}.admin-topbar{height:66px;flex:none;background:white;border-bottom:1px solid #e5ecf4;display:flex;align-items:center;justify-content:space-between;padding:0 33px}.admin-breadcrumb{display:flex;align-items:center;gap:12px;color:#9cabbc;font-size:11px;font-weight:700}.admin-breadcrumb strong{color:#314962}.admin-breadcrumb .icon{width:13px;height:13px}.admin-top-actions{display:flex;align-items:center;gap:17px}.admin-avatar-small{width:29px;height:29px;font-size:10px}.admin-body{padding:30px 34px 50px;max-width:1600px;width:100%;margin:0 auto}.page-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:25px}.page-intro h1{font:800 27px Manrope,system-ui,sans-serif;letter-spacing:-.05em;margin:7px 0 3px}.page-intro p{color:#8b9aae;font-size:12px;margin:0}.title-count{color:#1766e8;background:#e8f1ff;font:800 12px Manrope,system-ui,sans-serif;padding:4px 9px;border-radius:50px;vertical-align:middle;letter-spacing:0}.admin-toolbar{display:flex;align-items:center;gap:9px;margin-bottom:16px}.admin-search{width:min(400px,100%)}.admin-search input{height:40px;width:100%;border:1px solid #e0e8f1;border-radius:8px;background:white;color:#334964;outline:none;padding-left:38px;font-size:11px}.admin-toolbar select{width:auto;min-width:160px;height:40px}.table-card{background:white;border:1px solid #e1e8f1;border-radius:12px;overflow:auto;box-shadow:0 8px 24px rgba(31,62,106,.035)}.fleet-table{width:100%;border-collapse:collapse;white-space:nowrap}.fleet-table th{text-align:left;font-size:10px;font-weight:800;color:#7588a0;background:#f8fafd;padding:15px 15px;border-bottom:1px solid #e5edf5}.fleet-table td{font-size:11px;color:#41546d;padding:12px 15px;border-bottom:1px solid #edf1f6}.fleet-table tr:last-child td{border-bottom:0}.fleet-table tbody tr{cursor:pointer}.fleet-table tbody tr:hover{background:#f8fbff}.fleet-table th:first-child,.fleet-table td:first-child{width:44px;padding-left:19px;padding-right:0}.fleet-table input[type=checkbox]{accent-color:#1766e8;width:14px;height:14px;cursor:pointer}.fleet-table td:nth-child(3) strong{font-weight:700}.table-bus{display:flex;align-items:center;gap:8px}.table-bus-icon{width:28px;height:28px;border-radius:8px;color:white;display:grid;place-items:center}.table-bus-icon .icon{width:16px;height:16px}.table-bus strong,.table-bus small{display:block}.table-bus strong{font-weight:800;color:#213752}.table-bus small{font-size:9px;color:#a2afbf;margin-top:2px}.status-badge{border-radius:5px;font-size:9px;font-weight:800;padding:5px 7px;white-space:nowrap}.status-badge.scheduled{color:#1766e8;background:#e3efff}.status-badge.completed{color:#62748b;background:#e9eef4}.status-badge.cancelled{color:#c74b59;background:#ffe7e9}.status-badge.unknown{color:#68788a;background:#e9eef4}.row-arrow{border:0;background:#f1f6ff;color:#377ceb;border-radius:7px;width:25px;height:25px}.row-arrow .icon{width:14px;height:14px}.table-empty{text-align:center;padding:45px!important;color:#8c9bae!important}.pagination{display:flex;justify-content:space-between;align-items:center;color:#92a1b3;font-size:11px;margin-top:17px}.pagination>div{display:flex;gap:7px}.pagination .button{font-size:10px;padding:8px 12px}.admin-map-card{height:min(68vh,740px);background:#dae8e3;border:1px solid #e0e8f1;border-radius:14px;overflow:hidden;box-shadow:0 8px 24px rgba(31,62,106,.05)}.admin-map-count{position:absolute;top:17px;left:17px;background:white;border-radius:8px;padding:10px 14px;font-size:11px;font-weight:800;box-shadow:0 5px 15px rgba(27,64,102,.15)}

/* Detail */
.back-link{background:none;border:0;padding:0;display:flex;align-items:center;gap:7px;color:#3e83e9;font-size:11px;font-weight:800;margin-bottom:20px}.back-link .icon{width:15px;height:15px}.detail-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:23px}.detail-title-line{display:flex;align-items:center;gap:10px}.detail-title-line h1{font:800 27px Manrope,system-ui,sans-serif;margin:0;letter-spacing:-.05em}.detail-bus-icon{width:36px;height:36px;background:#e5f0ff;color:#1766e8;display:grid;place-items:center;border-radius:10px}.detail-bus-icon .icon{width:22px;height:22px}.detail-heading p{color:#7e8fa4;margin:8px 0 0 46px;font-size:12px}.detail-heading p span:not(.detail-separator){color:#1766e8}.detail-separator{padding:0 5px;color:#c2cbd5}.detail-last-gps{display:flex;align-items:center;gap:8px;color:#76889f;font-size:11px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.metric-card,.journey-card,.track-card{background:white;border:1px solid #e1e8f1;border-radius:11px;box-shadow:0 5px 20px rgba(33,66,110,.035)}.metric-card{padding:18px 19px;min-height:104px}.metric-card>span{display:block;color:#8293a7;font-size:10px;font-weight:700}.metric-card strong{display:block;font:800 25px Manrope,system-ui,sans-serif;color:#192941;letter-spacing:-.05em;margin:8px 0 3px}.metric-card em{font:700 12px Manrope,system-ui,sans-serif;font-style:normal;letter-spacing:0}.metric-card small{color:#a7b3c3;font-size:9px}.detail-content{display:grid;grid-template-columns:360px minmax(0,1fr);gap:16px}.journey-card{padding:21px}.card-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.card-heading h2{font:800 15px Manrope,system-ui,sans-serif;margin:5px 0 0;letter-spacing:-.03em}.detail-plate{padding:6px 9px;background:#f2f6fb;color:#526782;border-radius:6px;font-size:10px;font-weight:800}.journey-timeline{margin:26px 0 17px 5px}.timeline-item{display:flex;gap:17px;position:relative;padding-bottom:26px}.timeline-item:last-child{padding-bottom:0}.timeline-item:before{content:'';position:absolute;left:5px;top:13px;bottom:0;width:1px;background:#dfe7f1}.timeline-item:last-child:before{display:none}.timeline-node{width:11px;height:11px;border-radius:50%;border:2px solid #aec0d1;background:white;flex:none;margin-top:2px;z-index:1}.timeline-item.done .timeline-node{border-color:#1766e8;background:#1766e8;box-shadow:0 0 0 4px #eaf3ff}.timeline-item:last-child.done .timeline-node{border-color:#16bf71;background:#16bf71;box-shadow:0 0 0 4px #e0faec}.timeline-item div{display:flex;flex-direction:column;gap:4px}.timeline-item small{font-size:10px;color:#8294a9;font-weight:700}.timeline-item strong{font-size:12px;color:#273d58}.timeline-item div>span{font-size:10px;color:#96a5b7}.journey-extra{border-top:1px solid #e8eef5;padding-top:16px;display:flex;justify-content:space-between;gap:8px;font-size:10px}.journey-extra span{color:#92a1b2}.journey-extra strong{color:#3c526e}.track-card{padding:18px;overflow:hidden;min-height:425px}.track-pill{font-size:10px;font-weight:800;color:#31875f;background:#eafbf1;padding:7px 10px;border-radius:50px}.track-pill .live-dot{width:6px;height:6px;margin-right:6px}.detail-map{height:350px;margin-top:16px;border-radius:8px;overflow:hidden}.track-footer{display:flex;gap:15px;align-items:center;margin-top:12px;color:#687a90;font-size:10px}.track-line,.track-gap{display:inline-block;width:18px;height:2px;background:#1766e8;vertical-align:middle;margin-right:4px}.track-gap{background:repeating-linear-gradient(90deg,#e7565e 0,#e7565e 4px,transparent 4px,transparent 7px)}.detail-loading{display:flex;align-items:center;gap:12px;color:#8293a8;font-size:12px;padding:50px}.detail-loading .loading-ring{width:20px;height:20px}

@media(max-width:1100px){.fleet-sidebar{--sidebar-w:315px}.admin-nav{width:202px}.admin-body{padding:26px 22px}.detail-content{grid-template-columns:310px minmax(0,1fr)}}
@media(max-width:820px){.public-shell{padding:0;min-height:0}.public-header{border-radius:0;height:58px;padding:0 14px}.public-content{border-radius:0;border-left:0;border-right:0}.header-actions>.connection{display:none}.mobile-only{display:inline-flex}.fleet-sidebar{position:absolute;left:0;top:58px;bottom:60px;width:min(345px,90vw);z-index:1100;transform:translateX(-110%);transition:transform .25s;box-shadow:10px 0 30px rgba(18,53,88,.12)}.fleet-sidebar.open{transform:translateX(0)}.public-map-area{width:100%}.map-top-info{top:14px;left:14px;right:14px}.map-legend{left:12px;right:12px;bottom:75px;justify-content:space-between;gap:4px;padding:11px 8px;font-size:8px}.map-bus-card{left:12px;right:12px;top:auto;bottom:128px;transform:none;max-width:none}.mobile-bottom-nav{height:59px;display:flex;background:white;border-top:1px solid #e4eaf2;position:absolute;bottom:0;left:0;right:0;z-index:6;justify-content:space-around;align-items:center}.mobile-bottom-nav>*{border:0;background:none;color:#9aa7b7;font-size:9px;font-weight:800;display:flex;flex-direction:column;align-items:center;gap:3px}.mobile-bottom-nav .active{color:#1766e8}.mobile-bottom-nav .icon{height:20px;width:20px}.admin-nav{position:fixed;z-index:30;top:0;bottom:0;left:0;transform:translateX(-105%);transition:transform .25s;box-shadow:15px 0 35px rgba(17,40,71,.15)}.admin-nav.open{transform:translateX(0)}.admin-topbar{padding:0 18px;height:58px}.admin-body{padding:21px 16px}.metric-grid{grid-template-columns:repeat(2,1fr)}.detail-content{grid-template-columns:1fr}.detail-heading{align-items:flex-start}.detail-last-gps{align-self:flex-end}.admin-toolbar{flex-wrap:wrap}.admin-search{flex:1;min-width:220px}.admin-map-card{height:65vh}}
@media(max-width:600px){.public-header .brand{font-size:16px}.public-header .brand-icon{width:30px;height:30px}.header-actions .button{font-size:10px;padding:8px}.header-actions .button .icon{display:none}.map-top-info .map-title{padding:9px 11px}.map-count{font-size:9px;padding:8px}.map-legend{bottom:70px;flex-wrap:wrap;justify-content:center;column-gap:12px;row-gap:6px}.map-bus-card{bottom:125px}.login-shell{padding:60px 15px 20px;display:block}.login-back{top:20px;left:20px}.login-card{display:flex;flex-direction:column;min-height:auto}.login-visual{min-height:185px;padding:20px 24px}.login-visual-top{font-size:15px}.login-visual-copy{padding-top:17px}.login-visual-copy h1{font-size:30px;margin:5px 0}.login-visual-copy p{display:none}.login-visual-bottom,.login-route{display:none}.login-form-area{padding:25px}.form-top{margin-bottom:20px}.login-form-intro h2{font-size:24px}.page-intro h1{font-size:23px}.page-intro .button{font-size:0;gap:0;padding:10px}.page-intro .button .icon{width:18px;height:18px}.admin-toolbar{display:grid;grid-template-columns:1fr 1fr}.admin-search{grid-column:1/-1;width:100%}.admin-toolbar select{min-width:0}.admin-toolbar>.button{font-size:10px}.fleet-table th:nth-child(3),.fleet-table td:nth-child(3),.fleet-table th:nth-child(5),.fleet-table td:nth-child(5),.fleet-table th:nth-child(6),.fleet-table td:nth-child(6){display:none}.fleet-table td,.fleet-table th{padding:11px 9px}.fleet-table th:first-child,.fleet-table td:first-child{padding-left:12px}.table-bus small{max-width:80px;overflow:hidden;text-overflow:ellipsis}.pagination{align-items:flex-start;gap:12px;flex-direction:column}.detail-heading{display:block}.detail-heading p{margin-left:0}.detail-last-gps{margin-top:12px}.metric-card{padding:14px}.metric-card strong{font-size:19px}.metric-card small{font-size:8px}.track-card{padding:13px}.detail-map{height:300px}.admin-top-actions .connection{font-size:0;padding:7px}.admin-top-actions .connection i{margin:0}}
.online.bus-status-icon,.online.table-bus-icon{background:#1766e8}.mini-status.online,.status-badge.online{color:#155fc7;background:#e0efff}.legend-dot.online{background:#1766e8}.yandex-bus-marker.online{background:#1766e8;color:white}

.leaflet-dashboard-icon{border:0;background:transparent}.leaflet-dashboard-icon .yandex-bus-marker{transform:rotate(-45deg)}.leaflet-dashboard-icon .yandex-cluster-marker{transform:none}.fleet-map .leaflet-container{font-family:'DM Sans',system-ui,sans-serif}.map-top-info,.map-legend,.map-bus-card,.sidebar-handle{z-index:500}
.public-map .leaflet-top.leaflet-left{top:78px}

/* Keep the status key alongside the map controls, with room to wrap on phones. */
.map-top-info{gap:12px;align-items:center}
.map-legend{position:static;flex-wrap:wrap;gap:8px 14px;min-width:0;box-shadow:0 7px 20px rgba(39,73,100,.1)}
.map-legend span{white-space:nowrap}
@media(max-width:1100px){
    .public-map .leaflet-top.leaflet-left{top:115px}
}
@media(max-width:820px){
    .map-top-info{flex-direction:column-reverse;align-items:stretch;gap:10px}
    .map-top-actions{justify-content:flex-end}
    .map-legend{align-self:flex-start;max-width:100%;padding:10px 12px;justify-content:flex-start;font-size:9px}
    .public-map .leaflet-top.leaflet-left{top:125px}
}
@media(max-width:600px){
    .map-legend{gap:6px 10px}
}

/* Public display / station monitor mode */
.map-top-actions{display:flex;align-items:center;gap:9px;pointer-events:auto}
.map-display-toggle{height:36px;border:1px solid #edf2f6;border-radius:10px;background:white;color:#39516d;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 12px;box-shadow:0 7px 20px rgba(39,73,100,.1);font-size:10px;font-weight:800;white-space:nowrap;transition:color .2s,background .2s,transform .2s}
.map-display-toggle:hover{color:#1766e8;background:#f8fbff;transform:translateY(-1px)}
.map-display-toggle .icon{width:16px;height:16px}
.public-shell.monitor-mode{padding:0;min-height:0;background:#dcefe7}
.public-shell.monitor-mode .public-header,.public-shell.monitor-mode .fleet-sidebar,.public-shell.monitor-mode .mobile-bottom-nav,.public-shell.monitor-mode .map-title,.public-shell.monitor-mode .map-legend,.public-shell.monitor-mode .map-bus-card{display:none}
.public-shell.monitor-mode .public-content{border:0;border-radius:0;box-shadow:none}
.public-shell.monitor-mode .public-map-area{width:100vw;height:100dvh}
.public-shell.monitor-mode .map-top-info{top:18px;left:18px;right:18px;justify-content:flex-end}
.public-shell.monitor-mode .map-display-toggle{background:#172844;color:white;border-color:#172844;box-shadow:0 8px 24px rgba(13,31,53,.22)}
.public-shell.monitor-mode .map-display-toggle:hover{background:#0d1d32;color:white}
.public-shell.monitor-mode .public-map .leaflet-top.leaflet-left{top:10px}
@media(max-width:600px){.map-display-toggle span{display:none}.map-display-toggle{width:36px;padding:0}.map-top-actions{gap:6px}}

/* Keep admin navigation visible while long trip lists scroll inside the table. */
.admin-shell{height:100dvh;min-height:0;overflow:hidden}
.admin-nav{height:100dvh;min-height:0;overflow-y:auto}
.admin-main{height:100%;min-height:0;overflow-y:auto}
.admin-body .table-card{max-height:clamp(220px,calc(100dvh - 335px),680px);scrollbar-width:thin}
.fleet-table thead th{position:sticky;top:0;z-index:1}

/* Shared language switch for the public map and admin pages. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.locale-switch{display:inline-flex;align-items:center;flex:none}
.locale-switch select{max-width:105px;height:34px;border:1px solid #dfe7f1;border-radius:8px;background:#fff;color:#29415f;padding:0 7px;font-size:11px;font-weight:700;cursor:pointer}
.locale-switch select:focus{outline:2px solid #4b91ed;outline-offset:2px}
.login-form-area .form-top{gap:10px;flex-wrap:wrap}
.login-form-area .form-top .locale-switch{order:3;margin-left:auto}
@media(max-width:600px){.header-actions{gap:7px}.header-actions .locale-switch select{max-width:78px;font-size:10px}.admin-top-actions{gap:8px}}
@media(max-width:480px){.public-header .brand{font-size:14px}.public-header .brand-icon{width:27px;height:27px}.public-header{padding:0 10px}.header-actions .button{width:32px;height:32px;padding:0}.header-actions .button span{display:none}.header-actions .button .icon{display:inline-block}.header-actions .locale-switch select{max-width:72px}.header-actions .icon-button{width:30px}}

/* Embed mode: /dashboard?embed=1 inside a partner <iframe>. Header and bottom nav are hidden, filters stay. */
.public-shell.embed-mode{padding:0;min-height:0;height:100dvh;background:transparent}
.public-shell.embed-mode .public-header,.public-shell.embed-mode .mobile-bottom-nav{display:none}
.public-shell.embed-mode .public-content{border:0;border-radius:0;box-shadow:none}
.public-shell.embed-no-sidebar .fleet-sidebar{display:none}
@media(max-width:820px){.public-shell.embed-mode .fleet-sidebar{top:0;bottom:0}.public-shell.embed-mode .map-legend{bottom:14px}.public-shell.embed-mode .map-bus-card{bottom:68px}}

/* Collapsible filter panel: a handle on the map's left edge opens and closes it in every mode, iframes included. */
.sidebar-handle{position:absolute;left:0;top:50%;transform:translateY(-50%);height:44px;padding:0 14px 0 11px;display:inline-flex;align-items:center;gap:8px;border:1px solid #edf2f6;border-left:0;border-radius:0 12px 12px 0;background:white;color:#39516d;box-shadow:0 7px 20px rgba(39,73,100,.14);font-size:11px;font-weight:800;white-space:nowrap;transition:color .2s,background .2s,transform .25s}
.sidebar-handle:hover{color:#1766e8;background:#f8fbff}
.sidebar-handle:focus-visible{outline:2px solid #1766e8;outline-offset:2px}
.sidebar-handle .icon{width:18px;height:18px}
.sidebar-handle.is-open{padding:0 9px 0 7px}
.sidebar-handle.is-open span{display:none}
.public-shell.monitor-mode .sidebar-handle,.public-shell.embed-no-sidebar .sidebar-handle{display:none}
@media(min-width:821px){.public-shell.sidebar-collapsed .fleet-sidebar{margin-left:calc(-1 * var(--sidebar-w));visibility:hidden}}
@media(max-width:820px){.sidebar-handle.is-open{transform:translate(min(345px,90vw),-50%)}}
/* Selected-bus info card: floating fallback keeps the old centred layout; anchored mode pins it to the marker. */
.map-card-anchor.is-floating{position:absolute;inset:0;pointer-events:none;z-index:500}.map-card-anchor.is-floating .map-bus-card{pointer-events:auto}
.map-card-anchor.is-anchored{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none}
.map-card-anchor.is-anchored .map-bus-card{pointer-events:auto;position:absolute;left:0;right:auto;top:auto;bottom:44px;transform:translateX(-50%);width:max-content;min-width:260px;max-width:min(340px,calc(100vw - 24px));cursor:default}
.map-card-anchor.is-anchored .map-bus-card::after{content:'';position:absolute;left:50%;bottom:-8px;width:14px;height:14px;background:inherit;border-right:1px solid #e6edf4;border-bottom:1px solid #e6edf4;transform:translateX(-50%) rotate(45deg)}
.map-card-anchor.is-anchored.place-below .map-bus-card{bottom:auto;top:14px}
.map-card-anchor.is-anchored.place-below .map-bus-card::after{bottom:auto;top:-8px;transform:translateX(-50%) rotate(225deg)}
.map-card-anchor.is-anchored.place-right .map-bus-card{left:-22px;transform:none}.map-card-anchor.is-anchored.place-right .map-bus-card::after{left:22px}
.map-card-anchor.is-anchored.place-left .map-bus-card{left:auto;right:-22px;transform:none}.map-card-anchor.is-anchored.place-left .map-bus-card::after{left:auto;right:22px;transform:rotate(45deg)}
.map-card-anchor.is-anchored.place-below.place-left .map-bus-card::after{transform:rotate(225deg)}
.leaflet-dashboard-card{border:0;background:transparent;overflow:visible}.leaflet-dashboard-card.leaflet-interactive{cursor:default}
/* AvtoTicket logo (shared with web-ui): round mark + wordmark. */
.brand-mark{width:40px;height:40px;flex:none}.brand-text{width:96px;height:auto;display:block}
.admin-brand .brand-mark{width:34px;height:34px}.admin-brand .brand-text{width:84px}
.login-visual-top .brand-mark{width:36px;height:36px}
@media(max-width:820px){.brand-mark{width:34px;height:34px}.brand-text{width:84px}}
@media(max-width:480px){.brand-text{width:72px}}
