:root{--ink:#343434;--muted:#6d747d;--paper:#f5f6f8;--card:#fff;--line:#d9dce2;--navy:#303666;--navy-deep:#171a46;--blue:#6786a1;--blue-light:#9fb8d4;--amber:#f1b84b;--red:#ad3940;--green:#28745e;--shadow:0 18px 50px rgba(27,31,70,.12)}
*{box-sizing:border-box}html{background:var(--paper)}body{margin:0;background:linear-gradient(135deg,rgba(103,134,161,.05),transparent 38%),var(--paper);color:var(--ink);font:15px/1.6 Montserrat,"Segoe UI",Arial,sans-serif}a{color:inherit;text-decoration:none}h1,h2,p{margin-top:0}h1,h2,.brand-name,.signal-mark{font-family:Orbitron,Eurostile,"Segoe UI",sans-serif}h1{font-size:clamp(2.2rem,5vw,4.25rem);font-weight:300;line-height:1.08;letter-spacing:.02em}h2{font-size:1.15rem;font-weight:500;letter-spacing:.03em}small{color:var(--muted)}code{display:block;max-width:100%;overflow:auto;padding:.5rem 0;color:#465c70;font-size:.78rem}
.topbar{height:96px;display:flex;align-items:center;gap:2rem;padding:0 max(4vw,24px);border-bottom:1px solid #eceef1;background:rgba(255,255,255,.96);position:sticky;top:0;z-index:5;backdrop-filter:blur(14px);box-shadow:0 2px 14px rgba(25,29,56,.04)}.brand{display:flex;align-items:center;gap:14px;min-width:max-content}.brand-mark{position:relative;width:48px;height:48px;border:3px solid #3b3d40;border-radius:50%;display:block}.brand-mark:before,.brand-mark:after{content:"";position:absolute;top:9px;width:16px;height:3px;background:#3b3d40}.brand-mark:before{left:5px;transform:rotate(54deg)}.brand-mark:after{right:5px;transform:rotate(-54deg)}.brand-mark i{position:absolute;left:21px;top:8px;width:3px;height:30px;background:#3b3d40}.brand-rule{height:56px;width:1px;background:#8c8d90}.brand-name{display:flex;align-items:baseline;color:#5d6972;font-size:1.35rem;font-weight:300;letter-spacing:.08em}.brand-name>span{color:#252629;font-size:1.55rem;font-weight:600;letter-spacing:.03em}.brand-name small{display:block;margin-left:.65rem;padding-left:.65rem;border-left:1px solid var(--line);font:600 .62rem/1.3 Montserrat,"Segoe UI",sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--blue)}.topbar nav{display:flex;gap:1.7rem;margin:auto}.topbar nav a{position:relative;color:#626a73;font-weight:600;font-size:.82rem;letter-spacing:.03em}.topbar nav a:after{content:"";position:absolute;left:0;right:100%;bottom:-10px;height:2px;background:var(--blue);transition:right .2s}.topbar nav a:hover:after{right:0}
main{max-width:1280px;margin:auto;padding:3.5rem max(4vw,24px) 6rem}.hero{min-height:calc(100vh - 165px);display:grid;grid-template-columns:1.4fr .72fr;align-items:stretch;gap:0;overflow:hidden;background:var(--navy-deep);box-shadow:var(--shadow);position:relative}.hero:before,.hero:after{content:"";position:absolute;border:2px solid rgba(139,162,218,.25);border-radius:50%;pointer-events:none}.hero:before{width:640px;height:640px;left:-170px;top:15%}.hero:after{width:440px;height:440px;left:-70px;top:31%}.hero-copy{position:relative;z-index:1;padding:clamp(3rem,7vw,7rem);display:flex;flex-direction:column;justify-content:center;color:#fff;background:radial-gradient(circle at 24% 40%,rgba(73,87,161,.5),transparent 32%),linear-gradient(135deg,rgba(48,54,102,.3),transparent)}.hero h1{max-width:780px;margin-bottom:1.5rem}.hero .lede{font-size:1.12rem;color:#d7dce8;max-width:660px}.signal-mark{width:78px;height:78px;border:1px solid rgba(255,255,255,.35);border-radius:50%;display:grid;place-items:center;margin-bottom:2rem;color:#dbe3ff;font-size:1.1rem;letter-spacing:.14em;box-shadow:0 0 0 12px rgba(107,125,203,.08)}.lede{font-size:1.18rem;color:var(--muted);max-width:650px}.eyebrow{text-transform:uppercase;letter-spacing:.2em;font-size:.69rem;font-weight:700;color:var(--blue)}.hero .eyebrow{color:#a9bde7}.trust-row{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:1rem}.trust-row span,.criteria span{border:1px solid var(--line);padding:.45rem .75rem;background:rgba(255,255,255,.65);font-size:.75rem;letter-spacing:.03em}.hero .trust-row span{border-color:rgba(255,255,255,.25);background:rgba(9,12,46,.35);color:#e8ebf6}
.login-card,.panel,.metric-grid article{background:var(--card);border:1px solid var(--line);padding:1.7rem;box-shadow:var(--shadow)}.login-card{position:relative;z-index:2;border:0;padding:clamp(2.25rem,4vw,4rem);display:flex;flex-direction:column;justify-content:center;box-shadow:-18px 0 50px rgba(5,8,35,.18)}.login-card h2{font-size:1.75rem;font-weight:400;color:var(--navy);margin-bottom:1.6rem}.notice{background:#edf2f7;padding:.85rem;margin:1rem 0;font-size:.85rem;border-left:3px solid var(--blue)}.notice.amber{background:#fff4d9;color:#694e09;border-color:var(--amber)}.demo-code{font-weight:800;color:var(--navy)}
form{display:grid;gap:1rem;margin-top:1.2rem}label{display:grid;gap:.45rem;color:#535a63;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}input,textarea,select{width:100%;border:1px solid #cfd3da;background:#fff;padding:.78rem .85rem;color:var(--ink);font:inherit}textarea{min-height:80px;resize:vertical}input:focus,textarea:focus,select:focus{outline:3px solid rgba(103,134,161,.18);border-color:var(--blue)}button,.button{border:0;background:var(--navy);color:#fff;font-weight:700;padding:.82rem 1.15rem;cursor:pointer;text-align:center;text-transform:uppercase;letter-spacing:.08em;font-size:.73rem;transition:background .2s,transform .2s}button:hover,.button:hover{background:#414a84;transform:translateY(-1px)}button:disabled{opacity:.5}.ghost{background:transparent;color:#525962;border:1px solid #cfd3da}.ghost:hover{background:#f2f4f6;color:var(--navy)}.secondary{background:#e9eef4;color:#425e78}.fine{color:var(--muted);font-size:.75rem;margin-top:1rem}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:2.5rem;border-bottom:1px solid var(--line);padding-bottom:2rem}.page-head h1{font-size:clamp(2rem,4vw,3.4rem);margin-bottom:.6rem;color:var(--navy);font-weight:300}.page-head p{color:var(--muted);max-width:650px}.page-head h1 small{font:600 .85rem Montserrat,"Segoe UI",sans-serif;letter-spacing:.06em}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1rem}.metric-grid article{display:grid;box-shadow:none;border-top:4px solid var(--navy)}.metric-grid strong{font:300 2.25rem Orbitron,Eurostile,"Segoe UI",sans-serif;margin:.4rem 0;color:var(--navy)}.metric-grid span{color:var(--muted);font-weight:700;font-size:.76rem;text-transform:uppercase;letter-spacing:.07em}.split{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.panel{box-shadow:none;margin-top:1rem}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--line);padding-bottom:1rem}.panel-head h2{margin:0;color:var(--navy)}.panel-head a{color:var(--blue);font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}
.row-link,.journal,.audit-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line)}.row-link div,.journal div{display:grid}.row-link:hover strong{color:var(--blue)}.status{display:inline-flex;width:max-content;background:#eaecf0;color:#5f6670;padding:.25rem .55rem;font-size:.63rem;font-weight:800;letter-spacing:.09em}.status.active,.status.published{background:#dff1ea;color:#24664f}.status.draft,.status.validated{background:#fff0c8;color:#745600}.status.cancelled,.status.rejected{background:#fae2e3;color:var(--red)}.empty{padding:2rem;text-align:center;color:var(--muted);border:1px dashed var(--line);margin-top:1rem}.timeline{display:flex;gap:.8rem;padding:1rem 0;border-bottom:1px solid var(--line)}.timeline i{width:8px;height:8px;border-radius:50%;background:var(--blue);margin-top:.45rem}.timeline div{display:grid}.positive{color:var(--green)}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.8rem;margin:1rem 0}.media-grid article{display:grid;gap:.35rem;border:1px solid var(--line);padding:1rem}.media-icon{height:90px;background:linear-gradient(145deg,#dfe8f1,#eef0f5);display:grid;place-items:center;font-size:2rem;color:var(--navy)}.error{color:var(--red)}.criteria{display:flex;gap:.5rem;flex-wrap:wrap;margin:1rem 0;font-size:.78rem}.criteria.vertical{display:grid}.check{display:flex;grid-template-columns:auto 1fr;align-items:center}.check input{width:auto}.actions{display:flex;gap:.6rem}.actions form{margin:0}.contract{padding:1rem 0;border-bottom:1px solid var(--line)}.contract>div{display:flex;justify-content:space-between}.audit-row{display:grid;grid-template-columns:180px 1fr 1.3fr}.audit-row time{color:var(--muted);font-size:.78rem}.audit-row div{display:grid}#toast{position:fixed;right:1.5rem;bottom:1.5rem;transform:translateY(120px);opacity:0;background:var(--navy-deep);color:#fff;padding:.8rem 1rem;transition:.2s;z-index:10}#toast.show{transform:none;opacity:1}#toast.bad{background:var(--red)}
@media(max-width:980px){.brand-name small{display:none}.topbar nav{gap:1rem}.hero{grid-template-columns:1.1fr .8fr}.hero-copy{padding:3rem}}
@media(max-width:800px){.topbar{height:78px}.topbar nav{display:none}.brand-mark{width:40px;height:40px}.brand-mark i{left:17px;height:25px}.brand-rule{height:44px}.brand-name{font-size:1rem}.brand-name>span{font-size:1.1rem}.hero,.split{grid-template-columns:1fr}.hero{min-height:0}.hero-copy{padding:3rem 1.5rem}.login-card{padding:2.5rem 1.5rem}.metric-grid{grid-template-columns:1fr}.page-head{align-items:flex-start;flex-direction:column}.audit-row{grid-template-columns:1fr}.field-pair{grid-template-columns:1fr}main{padding:1.5rem 0 4rem}.page-head,.panel,.metric-grid,.split{margin-left:20px;margin-right:20px}.panel{padding:1.2rem}}
.period-form{display:flex;align-items:end;gap:.65rem;margin:0}.period-form label{min-width:170px}.period-form button{height:45px}.source-strip{display:flex;gap:.55rem;flex-wrap:wrap;margin:1rem 0}.source-state{display:grid;padding:.55rem .75rem;border-left:3px solid var(--green);background:#e8f3ef;text-transform:capitalize;font-size:.72rem}.source-state.stale{border-color:var(--amber);background:#fff5dc}.source-state.error{border-color:var(--red);background:#fae7e8}.source-state small{max-width:300px;text-transform:none}.map-panel{padding:0;overflow:hidden}.map-panel .panel-head{padding:1rem 1.4rem}.fleet-map{height:480px;background:#dde4e9;z-index:1}.fleet-map.map-error{display:grid;place-items:center;color:var(--red)}.map-popup{display:grid;gap:.3rem;min-width:180px}.map-popup span{display:block;color:var(--muted);font-size:.78rem}.map-popup a{color:var(--blue);font-weight:700}.device-table-wrap{overflow:auto}.device-table{width:100%;border-collapse:collapse;min-width:1100px}.device-alias{display:flex;align-items:center;gap:.45rem;margin:0}.device-alias input{width:min(260px,100%);padding:.45rem .55rem;font-weight:700}.device-alias button{padding:.45rem .7rem;letter-spacing:.04em}.device-alias-detail{margin:.75rem 0 0;max-width:420px}.device-table th{text-align:left;color:var(--muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.08em}.device-table th,.device-table td{padding:.9rem .7rem;border-bottom:1px solid var(--line);vertical-align:top}.device-table td>small,.device-table td>a+small,.device-table td>.status+small{display:block}.device-table td:first-child a{color:var(--navy)}.status.online{background:#dff1ea;color:var(--green)}.status.stale{background:#fff0c8;color:#745600}.status.offline{background:#fae2e3;color:var(--red)}.warning{display:inline-flex;background:#fae2e3;color:var(--red);padding:.25rem .55rem;font-size:.67rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em}.warning-large{padding:.7rem 1rem}.metric-time{font-size:1rem!important;overflow-wrap:anywhere}.supply-detail{align-items:start}.revenue-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;padding:1rem 0}.revenue-row div{display:grid}.revenue-row span,.facts dt{color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.07em}.revenue-row strong{font:400 1.3rem Orbitron,Eurostile,"Segoe UI",sans-serif;color:var(--navy)}.facts{display:grid;grid-template-columns:minmax(120px,.6fr) 1fr;gap:.65rem;margin:1rem 0 0}.facts dd{margin:0;overflow-wrap:anywhere}.timeline.movement i{background:var(--red)}.leaflet-control-attribution{font-size:10px}
@media(max-width:980px){.supply-head{align-items:flex-start;flex-direction:column}.period-form{width:100%;flex-wrap:wrap}.period-form label{flex:1}.fleet-map{height:400px}}
@media(max-width:800px){.source-strip{margin-left:20px;margin-right:20px}.period-form{display:grid}.period-form label{min-width:0}.fleet-map{height:360px}.revenue-row{grid-template-columns:1fr}.facts{grid-template-columns:1fr}.supply-metrics{margin-left:20px;margin-right:20px}}
.cellular-panel h3{margin:.5rem 0;color:var(--navy);font-size:.9rem}.cellular-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.usage-row{display:grid;gap:.2rem;padding:.8rem 0;border-bottom:1px solid var(--line)}.usage-row span{color:var(--muted)}.cellular-history{margin-top:1.5rem}.usage-table{min-width:700px}.usage-table caption{text-align:left;color:var(--muted);font-size:.75rem;padding-bottom:.5rem}@media(max-width:800px){.cellular-grid{grid-template-columns:1fr}}
.plays-card{margin:0 0 1.4rem}.plays-head{align-items:flex-start}.plays-toolbar{display:flex;gap:.55rem;flex-wrap:wrap}.plays-menu{position:relative}.plays-menu-panel{position:absolute;right:0;top:calc(100% + .4rem);z-index:4;min-width:240px;display:grid;gap:.65rem;padding:1rem;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}.plays-range-list{display:grid}.plays-range-list button{background:transparent;color:var(--ink);text-align:left;text-transform:none;letter-spacing:0;font-weight:600;padding:.45rem .2rem}.plays-range-list button:hover{background:#f2f4f6;transform:none}.plays-custom{display:grid;gap:.65rem}.plays-campaign-list{display:grid;gap:.4rem;max-height:220px;overflow:auto}.plays-chart{position:relative;min-height:300px}.plays-chart svg{width:100%;height:300px;display:block}.plays-axis{stroke:var(--line);stroke-width:1}.plays-grid{stroke:#eef1f4;stroke-width:1}.plays-tick{fill:var(--muted);font-size:11px;font-family:Montserrat,"Segoe UI",sans-serif}.plays-x{text-anchor:middle}.plays-area{fill:rgba(103,134,161,.16)}.plays-line{fill:none;stroke:var(--navy);stroke-width:2.5}.plays-empty{position:absolute;inset:auto 1.4rem 1.4rem;margin:0}@media(max-width:800px){.plays-card{margin-left:20px;margin-right:20px}.plays-menu-panel{left:0;right:auto}}
