@import url("./moving-map.css?v=navigation-v1");
@import url("./illustrated-view.css?v=navigation-v1");
@import url("./brand.css");
@import url("./f150-view.css");
@import url("./device-evidence.css");
.nft{--nft-ink:#122e34;--nft-paper:#f4f6f2;--nft-mint:#00c3a9;--nft-amber:#f1aa3e;--nft-muted:#a6bbb7;--nft-line:#304b4f;--nft-surface:#19373d;--nft-white:#f4f6f2;box-sizing:border-box;background:#122e34;color:#f4f6f2;font:14px/1.4 Inter,system-ui,sans-serif;border:1px solid #355155;border-radius:24px;position:relative;max-width:100%;isolation:isolate;overflow:hidden;box-shadow:0 20px 50px #09212720}
.nft *{box-sizing:border-box}.nft [hidden]{display:none!important}.nft button{font:inherit;color:inherit;min-height:48px;min-width:48px;border:1px solid var(--nft-line);border-radius:12px;padding:10px 15px;background:var(--nft-surface);cursor:pointer}.nft button:focus-visible,.nft a:focus-visible{outline:3px solid var(--nft-mint);outline-offset:2px}.nft button:disabled{cursor:default;opacity:.45}.nft h2,.nft h3,.nft p{margin:0}.nft h2{font-size:24px;line-height:1.16;letter-spacing:-.03em}.nft h3{font-size:20px;line-height:1.2}.nft small{font-size:12px;color:var(--nft-muted);display:block}.nft-header{min-height:72px;padding:10px 22px;display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid #304b4f;background:#102c32}.nft-brand{display:flex;align-items:center;gap:12px;min-width:0}.nft-brand>div{min-width:0}.nft-brand strong{font-size:17px;letter-spacing:-.03em;white-space:nowrap}.nft-brand strong span{font-weight:400}.nft-brand small{margin-top:2px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nft-orbit{display:flex;align-items:center;justify-content:center;width:36px;height:36px;flex:none;border:4px solid #f4f6f2;border-right-color:var(--nft-mint);border-bottom-color:var(--nft-amber);border-radius:50%;font-size:23px;color:var(--nft-mint);transform:rotate(-35deg)}.nft-header-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.nft .nft-connection{font-size:12px;background:#1b3a40;display:flex;gap:8px;align-items:center;border:1px solid #365258;padding:8px 12px}.nft-connection [data-link-dot]{width:6px;height:6px;border-radius:50%;background:#8ca19d;flex:none}.nft-connection [data-link-dot].is-connected{background:var(--nft-mint)}.nft-mode,.nft-demo,.nft-edition{font-size:11px;letter-spacing:.08em;font-weight:650;white-space:nowrap}.nft-mode{color:#b9d3ce}.nft-edition{color:#a6bbb7;letter-spacing:.18em;margin-right:14px}.nft-demo{color:#f7c76f;border:1px solid #786746;padding:3px 6px;border-radius:5px}.nft-body{padding:20px}.nft-drive{display:grid;grid-template-columns:minmax(150px,.87fr) minmax(180px,1.35fr) minmax(205px,1fr);gap:20px;height:334px;min-height:0}.nft-speed-panel{display:flex;flex-direction:column;align-items:flex-start;padding:15px 8px 7px 12px;min-width:0}.nft-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.12em;font-weight:650;color:#a6bbb7}.nft-speed{display:flex;flex-direction:column;margin-top:24px;gap:0}.nft-speed b{font-size:clamp(98px,13vw,144px);font-weight:500;letter-spacing:-.07em;line-height:.9;font-variant-numeric:tabular-nums;color:#f4f6f2}.nft-speed span{font-size:17px;color:#b4c8c3;margin:12px 0 14px}.nft-speed-panel>p{font-size:12px;color:#9dbab2;max-width:170px;min-height:34px}.nft-runtime{margin-top:auto;padding-top:17px;border-top:1px solid #365055;width:100%}.nft-runtime strong{display:block;font-size:25px;font-weight:500;line-height:1.2;letter-spacing:-.02em;margin-top:6px;font-variant-numeric:tabular-nums}.nft-vehicle-glance{background:radial-gradient(ellipse at 50% 58%,#315453 0,#214342 43%,#1b393e 77%);border:1px solid #365451;border-radius:19px;padding:15px 16px 12px;display:flex;flex-direction:column;min-width:0;min-height:0}.nft-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.nft-model-kind{font-size:11px;color:#bbd0c8}.nft-model{display:flex;align-items:center;justify-content:center;flex:1;min-height:0;position:relative}.nft .nfv-vehicle{display:block;width:auto;height:100%;max-height:245px;max-width:100%;margin:auto;z-index:1;filter:drop-shadow(0 12px 8px #071b2044)}.nft-model-ground{position:absolute;width:75%;height:30%;bottom:19%;border-radius:50%;background:#08252235;filter:blur(16px)}.nft-model-caption{text-align:center;font-weight:600;font-size:15px;margin-top:4px;overflow-wrap:anywhere}.nft-model-caption small{font-weight:400;font-size:11px;margin-top:2px}.nft-service-summary{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:12px;padding-top:10px;border-top:1px solid #46605b;font-size:11px;color:#adc4bb}.nft-service-summary i{width:5px;height:5px;flex:none;border-radius:50%;background:#a7bbb0}.nft-service-summary strong{font-size:11px;font-weight:500;color:#dce6dc}.nft-service-summary[data-tone=due] i,.nft-service-summary[data-tone=check] i{background:var(--nft-amber)}.nft-service-summary[data-tone=due] strong,.nft-service-summary[data-tone=check] strong{color:#f2bc5b}.nft-glance{display:grid;grid-template-rows:minmax(170px,1fr) auto auto;gap:12px;min-width:0;min-height:0}.nft-mini-map{background:#e1e8de;border-radius:18px;overflow:hidden;display:flex;flex-direction:column;color:#203b38;min-height:0}.nft-map-canvas{position:relative;flex:1;min-height:130px;background:#dce4d8;overflow:hidden}.nft-map-canvas>svg{display:block;width:100%;height:100%;position:absolute;inset:0}.nft-map-empty{display:flex;align-items:center;justify-content:center;height:100%;min-height:130px;padding:22px;color:#526b60;text-align:center;font-size:13px}.nft-map-caption{padding:10px 13px;background:#edf0e7;flex:none;line-height:1.2}.nft-map-caption>span{font-size:12px;font-weight:600}.nft-map-caption>small{font-size:11px;color:#53695e;margin-top:3px}.nft-map-source{position:absolute;left:8px;bottom:5px;font:10px/1.2 system-ui,sans-serif;color:#3a584b;background:#e9eee3d9;padding:2px 4px;border-radius:3px;text-decoration:none}.nft-map-source:hover{text-decoration:underline}.nft-voltage-card{display:flex;justify-content:space-between;align-items:center;gap:8px;background:#1d3d40;border:1px solid #38554f;border-radius:15px;padding:13px 14px}.nft-voltage-card .nft-eyebrow{font-size:10px;letter-spacing:.08em;color:#b0c8bc}.nft-voltage-card strong{font-size:26px;line-height:1.1;font-weight:500;letter-spacing:-.035em;white-space:nowrap;color:#bfe4ce;font-variant-numeric:tabular-nums}.nft-voltage-card small{font-size:11px;margin-top:5px;max-width:135px}.nft-obd-note{display:flex;gap:8px;align-items:center;padding:0 5px;color:#98b2ac;font-size:11px}.nft-obd-note i{width:5px;height:5px;border-radius:50%;background:#7d9b93;flex:none}.nft-obd-note span{display:flex;justify-content:space-between;width:100%;gap:7px;flex-wrap:wrap}.nft-obd-note b{font-weight:400;color:#bcd0c8}.nft-footer{min-height:68px;border-top:1px solid #304b4f;background:#102c32;padding:9px 20px;display:flex;align-items:center;gap:16px}.nft-footer nav{display:flex;gap:5px;flex:none}.nft-footer nav button{border:0;background:transparent;padding:10px 19px;font-size:13px;font-weight:500;color:#b9ccc4}.nft-footer nav button[aria-pressed=true]{background:#dcebdd;color:#14332f}.nft-footer-note{font-size:11px;color:#9db6ae;margin-left:auto;max-width:155px}.nft .nft-park,.nft .nft-primary{background:var(--nft-mint);color:#062d29;border-color:var(--nft-mint);font-weight:650;font-size:12px}.nft .nft-park{flex:none}.nft-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.nft-inspect{display:grid;grid-template-columns:230px minmax(0,1fr);gap:24px;min-height:350px}.nft-inspect-model{border-radius:18px;background:radial-gradient(ellipse,#335551,#1b393e 70%);border:1px solid #365451;padding:18px;display:flex;flex-direction:column;text-align:center}.nft-inspect-model .nft-model{min-height:260px;margin:12px 0}.nft-inspect-model small{font-size:11px}.nft-components{min-width:0}.nft-components h2{margin-top:5px}.nft-section-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0}.nft-section-tabs button{font-size:12px;padding:8px 12px;min-height:48px;border-radius:10px;color:#c5d7ce}.nft-section-tabs button[aria-pressed=true]{background:#dcebdd;color:#14332f;border-color:#dcebdd}.nft-component-list{display:grid;gap:8px}.nft-component{background:#1b383d;padding:13px 16px;border:1px solid #355052;border-radius:12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.nft-component>div{flex:1;min-width:0}.nft-component strong{font-size:14px;overflow-wrap:anywhere}.nft-component small{font-size:11px}.nft-component p{flex-basis:100%;font-size:12px;color:#b0c6bc}.nft-condition{font-size:11px;background:#2d4648;color:#c1d2c9;border-radius:6px;padding:5px 8px}.nft-condition-due,.nft-condition-check{background:#554a30;color:#ffcf7b}.nft-condition-within{background:#2b5041;color:#c0e4c5}.nft-record-note{color:#a6bbb2;font-size:11px;margin-top:14px!important}.nft-empty{padding:24px;background:#223f41;border-radius:12px}.nft-empty p{margin-top:7px;font-size:13px}.nft-tracker{display:grid;grid-template-columns:1fr 1.2fr;gap:28px;min-height:350px}.nft-tracker-device{border-radius:18px;background:#1c3a3f;border:1px solid #365451;padding:24px;text-align:center}.nft-device-box{width:126px;height:126px;margin:2px auto 24px;border-radius:24px;background:#18393d;box-shadow:inset 0 0 0 5px #3e5b59,0 8px 0 #0e252a;color:#e8eee2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.nft-device-box .nft-orbit{width:35px;height:35px;font-size:20px;margin-bottom:6px}.nft-device-box strong{font-size:14px;letter-spacing:.09em}.nft-device-box>span:not(.nft-orbit){font-size:9px;letter-spacing:.2em}.nft-device-box i{display:block;width:5px;height:5px;border-radius:50%;background:var(--nft-mint);margin-top:5px}.nft-tracker-device h2{margin:8px 0}.nft-tracker-details{padding:8px 4px;min-width:0}.nft-tracker-details h2{margin:6px 0 10px}.nft-tracker-details>p{font-size:12px;color:#b0c6bc}.nft-tracker-details dl{margin:16px 0}.nft-tracker-details dl div{display:flex;justify-content:space-between;gap:15px;padding:9px 0;border-bottom:1px solid #355052;font-size:12px}.nft-tracker-details dt{color:#a6bbb2}.nft-tracker-details dd{margin:0;text-align:right;overflow-wrap:anywhere}.nft-connection-actions{display:flex;gap:8px;flex-wrap:wrap}.nft-connection-actions button{font-size:12px}.nft .nft-icon-button{font-size:24px;padding:4px;background:transparent;border:0}.nft-setup{display:flex;align-items:center;gap:10px;min-height:48px;margin:12px 0;font-size:12px}.nft-setup input{width:22px;height:22px;accent-color:#00c3a9;flex:none}.nft-device-list{list-style:none;counter-reset:nft-device;margin:22px 0 0;padding:0;text-align:left;display:grid;gap:15px}.nft-device-list li{counter-increment:nft-device;position:relative;padding-left:34px}.nft-device-list li::before{content:counter(nft-device);position:absolute;left:0;top:0;width:23px;height:23px;display:grid;place-items:center;border-radius:50%;background:#365b51;color:#cee5d5;font-size:11px;font-weight:650}.nft-device-list strong{display:block;font-size:13px}.nft-device-list span{display:block;font-size:11px;color:#a6bbb2;margin-top:3px}
@media(max-width:900px){.nft-header{padding:9px 16px;min-height:64px}.nft-edition{display:none}.nft-body{padding:14px}.nft-drive{height:326px;gap:12px;grid-template-columns:minmax(145px,.85fr) minmax(165px,1.2fr) minmax(190px,1fr)}.nft-speed-panel{padding:12px 5px 5px}.nft-speed b{font-size:112px}.nft-speed{margin-top:27px}.nft-runtime strong{font-size:23px}.nft-vehicle-glance{padding:12px}.nft .nfv-vehicle{max-height:222px}.nft-model-kind{display:none}.nft-service-summary{gap:5px;flex-wrap:wrap;margin-top:9px;padding-top:8px}.nft-footer{padding:8px 14px;min-height:64px;gap:10px}.nft-footer nav button{padding:10px 15px}.nft-footer-note{max-width:120px}.nft-glance{gap:10px}.nft-voltage-card{padding:12px}.nft-voltage-card strong{font-size:23px}.nft-voltage-card small{font-size:10px}.nft-inspect{grid-template-columns:185px minmax(0,1fr);gap:18px}.nft-tracker{gap:20px}.nft-header-right{gap:9px}.nft-brand strong{font-size:16px}.nft-brand small{max-width:180px}.nft-mode{font-size:10px}}
@media(min-width:680px) and (max-height:550px){.nft-header{min-height:58px;padding-top:5px;padding-bottom:5px}.nft-body{padding:12px 14px}.nft-drive{height:270px;gap:12px}.nft-speed{margin-top:15px}.nft-speed b{font-size:106px}.nft-speed span{margin:8px 0 7px}.nft-speed-panel>p{min-height:28px;font-size:11px}.nft-runtime{padding-top:10px}.nft-runtime strong{font-size:22px}.nft .nfv-vehicle{max-height:180px}.nft-vehicle-glance{padding:11px 13px}.nft-model-caption{font-size:13px}.nft-model-caption small{display:none}.nft-service-summary{margin-top:8px;padding-top:8px}.nft-glance{grid-template-rows:minmax(140px,1fr) auto auto;gap:8px}.nft-map-canvas{min-height:100px}.nft-map-empty{min-height:100px}.nft-voltage-card{padding:10px 12px}.nft-footer{min-height:58px;padding:5px 14px}.nft-inspect{min-height:278px}.nft-inspect-model .nft-model{min-height:210px}}
@media(max-width:679px){.nft{border-radius:20px}.nft-header{align-items:center;gap:8px;flex-wrap:wrap;padding:12px}.nft-header-right{margin-left:auto;gap:8px}.nft-brand strong{font-size:15px}.nft-brand small{font-size:11px;max-width:155px}.nft .nft-connection{font-size:11px}.nft-mode{font-size:10px}.nft-drive{height:auto;grid-template-columns:minmax(125px,.8fr) minmax(140px,1fr);gap:12px}.nft-speed-panel{min-height:285px;padding:13px 4px}.nft-speed b{font-size:96px}.nft-speed{margin-top:24px}.nft-runtime{margin-top:20px}.nft-runtime .nft-eyebrow{font-size:10px}.nft-runtime strong{font-size:24px}.nft-vehicle-glance{min-height:285px;padding:12px 10px}.nft .nfv-vehicle{height:195px;max-height:195px}.nft-model{min-height:180px}.nft-glance{grid-column:1/-1;grid-template-columns:1.3fr 1fr;grid-template-rows:auto auto;gap:10px}.nft-mini-map{grid-row:1/3;min-height:200px}.nft-map-canvas{min-height:145px}.nft-voltage-card{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:15px}.nft-voltage-card strong{font-size:30px}.nft-obd-note{align-items:flex-start;font-size:11px;padding-top:4px}.nft-obd-note i{margin-top:5px}.nft-obd-note span{display:block}.nft-obd-note b{display:block;margin-top:4px}.nft-footer{flex-wrap:wrap;padding:10px 12px;gap:10px}.nft-footer nav{flex:1}.nft-footer nav button{padding:10px 13px}.nft-footer-note{order:3;max-width:none;width:100%;margin:0}.nft .nft-park{padding:10px;font-size:11px}.nft-inspect{grid-template-columns:1fr;gap:12px}.nft-inspect-model{display:none}.nft-components h2{font-size:25px;max-width:340px}.nft-section-tabs{gap:6px}.nft-section-tabs button{font-size:11px;padding:8px 11px}.nft-tracker{grid-template-columns:1fr;gap:16px}.nft-tracker-device{padding:20px}.nft-tracker-details{padding:8px}.nft-component{padding:13px}.nft-service-summary>span{display:none}}
@media(max-width:370px){.nft-header-right{width:100%;justify-content:space-between}.nft-body{padding:10px}.nft-drive{gap:8px;grid-template-columns:minmax(115px,.83fr) minmax(128px,1fr)}.nft-speed b{font-size:85px}.nft-speed-panel{padding:12px 2px}.nft-model-caption{font-size:13px}.nft-model-caption small{font-size:10px}.nft-footer nav{justify-content:space-between;width:100%}.nft .nft-park{width:100%}.nft-glance{grid-template-columns:1.2fr 1fr}.nft-map-caption{padding:9px}.nft-map-caption small{font-size:10px}.nft-voltage-card{padding:11px}.nft-voltage-card strong{font-size:26px}}
@media(prefers-reduced-motion:reduce){.nft *{animation:none!important;transition:none!important}}

.nft-model-caption>strong{display:block;font:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nft-mark{display:block;flex:none;width:36px;height:36px;color:var(--nft-paper)}.nft-mark svg{display:block;width:100%;height:100%}
.nft-parts-count{font-size:12px;color:var(--nft-muted);margin-top:9px!important}
.nft-section-tabs button{display:flex;align-items:center;gap:8px}.nft-section-tabs button>span{font-size:11px;opacity:.7;font-variant-numeric:tabular-nums}
.nft-parts-tools{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px;margin:0 0 15px}.nft-part-search{flex:1 1 200px;font-size:11px;color:var(--nft-muted)}
.nft-part-search input{display:block;width:100%;min-height:48px;padding:10px 12px;margin-top:5px;background:#17363b;border:1px solid #46615f;border-radius:11px;color:var(--nft-paper);font:16px/1.4 system-ui,sans-serif}
.nft-part-search input:focus-visible,.nft-component summary:focus-visible,.nft-parts-attention input:focus-visible{outline:3px solid var(--nft-mint);outline-offset:3px}
.nft-parts-attention{display:flex;align-items:center;gap:7px;min-height:48px;font-size:12px}.nft-parts-attention input{width:20px;height:20px;accent-color:var(--nft-mint)}.nft-parts-tools button{font-size:12px}
.nft .nft-component{display:block;padding:0;overflow:hidden}.nft-component summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:72px;padding:14px 16px;cursor:pointer;list-style:none}.nft-component summary::-webkit-details-marker{display:none}.nft-component summary>div{min-width:0}.nft-component summary strong{display:block}.nft-component summary .nft-condition{flex:none}.nft-component[open]{border-color:#628477}.nft-component[open] summary{background:#244640}
.nft-part-evidence{padding:15px 16px;border-top:1px solid #355052}.nft-part-evidence dl{display:grid;gap:8px;margin:13px 0 0;font-size:12px}.nft-part-evidence dl>div{display:grid;grid-template-columns:100px minmax(0,1fr);gap:12px}.nft-part-evidence dt{color:var(--nft-muted)}.nft-part-evidence dd{margin:0;overflow-wrap:anywhere}.nft-part-evidence>p{margin-bottom:10px}
.nft-wheel-controls{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px}.nft-wheel-controls button{font-size:11px;padding:8px 5px}.nft-wheel-controls button[aria-pressed=true]{background:#dcebdd;color:#14332f}
.nft-devices-heading{margin-bottom:18px}.nft-devices-heading h2{margin-top:5px}.nft-devices-heading p{color:var(--nft-muted);font-size:12px;margin-top:8px}
.nft-system-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:24px}.nft-system-card{padding:17px;background:#193a3d;border:1px solid #365451;border-radius:16px;min-width:0}.nft-device-number{color:var(--nft-mint);font-size:11px;letter-spacing:.12em}.nft-system-card h3{font-size:17px;margin:6px 0}.nft-system-card p{font-size:12px;color:var(--nft-muted);min-height:35px}.nft-system-card>strong{display:block;font-size:13px;margin-top:15px;overflow-wrap:anywhere}.nft-system-card>small{font-size:11px;margin-top:5px}
.nft[data-screen=connection] .nft-tracker{grid-template-columns:1fr 1.1fr;min-height:0}.nft-device-records{padding:8px 0;min-width:0}.nft-device-records>article{padding:16px;border:1px solid #355451;border-radius:14px;margin-top:10px}.nft-device-records>article h3{font-size:16px;margin-bottom:14px}.nft-device-records>.nft-empty{margin-top:10px}.nft .nf-device-evidence{--nde-text:#f4f6f2;--nde-muted:#a6bbb7;--nde-line:#426159}
@media(max-width:679px){.nft-system-cards{grid-template-columns:1fr}.nft-system-card p{min-height:0}.nft-system-card>strong{margin-top:10px}.nft[data-screen=connection] .nft-tracker{grid-template-columns:1fr}.nft-part-evidence dl>div{grid-template-columns:82px minmax(0,1fr)}}

/* A fixed cockpit height also needs a bounded grid row; implicit rows can
   otherwise grow to min-content size and overlap the footer. */
@media(min-width:680px){.nft-drive{grid-template-rows:minmax(0,1fr)}.nft-drive>*{min-height:0}}
@media(min-width:680px) and (max-height:550px){.nft-speed b{font-size:96px}.nft-speed{margin-top:10px}}
/* Fullscreen landscape phones: retain 48px controls and all reading sources. */
@media(min-width:680px) and (max-height:420px){.nft-header{min-height:54px;padding-top:2px;padding-bottom:2px}.nft-footer{min-height:54px;padding-top:2px;padding-bottom:2px}.nft-body{padding:8px 14px}.nft-drive{height:232px}.nft-speed-panel{padding:6px 5px}.nft-speed{margin-top:4px}.nft-speed span{font-size:14px;margin:3px 0}.nft-speed-panel>p{min-height:31px}.nft-runtime{padding-top:6px}.nft-runtime .nft-eyebrow{font-size:10px;letter-spacing:.08em}.nft-runtime strong{font-size:20px;margin-top:2px}.nft-vehicle-glance{padding:9px 12px}.nft .nfv-vehicle{max-height:145px}.nft-service-summary{margin-top:6px;padding-top:6px}.nft-glance{grid-template-rows:minmax(122px,1fr) auto auto;gap:6px}.nft-map-canvas,.nft-map-empty{min-height:78px}.nft-map-caption{padding:7px 10px}.nft-map-empty{padding:12px;font-size:12px}.nft-voltage-card{padding:8px 10px}.nft-voltage-card small{margin-top:3px}.nft-obd-note{font-size:10px;gap:5px}}

/* Heading survives the disabled detailed model; unavailable data stays blank. */
.nft-heading{display:grid;text-align:right;gap:2px;flex:none;line-height:1.2}.nft-heading strong{font-size:12px;font-variant-numeric:tabular-nums;font-weight:650}.nft-heading small{font-size:9px;color:#b6d0c9}

/* In portrait, the map gets the full row; vehicle diagnostics sit below it. */
@media(max-width:679px){
 .nft[data-screen=drive] .nft-glance{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto}
 .nft[data-screen=drive] .nft-mini-map{grid-column:1/-1;grid-row:1;min-height:280px}
 .nft[data-screen=drive] .nft-mini-map .nft-map-canvas{min-height:225px}
 .nft[data-screen=drive] .nft-voltage-card{grid-column:1;grid-row:2;flex-direction:column;align-items:flex-start;justify-content:center;gap:6px}
 .nft[data-screen=drive] .nft-voltage-card strong{font-size:24px}
 .nft[data-screen=drive] .nft-obd-note{grid-column:2;grid-row:2;align-items:center;padding:8px}
 .nft[data-screen=drive] .nft-model{min-height:150px}
 .nft[data-screen=drive] .nft-model-caption small,.nft[data-screen=drive] .nfi-caption{display:none!important}
}
/* THE JOB PAGE AND THE SPOTIFY BUTTON (2026-09-26). The Job page is a parked page, like Vehicle: the
   day's work order (addresses, gear, the stretch of road), its checklist with 76px ticks, the
   driver's answer, on the way / on site / done, and the shop visit. The owner's mark only. */
.nft .nft-brand small.nft-job-line{color:#dce6dc;font-weight:600;max-width:min(420px,30vw)}
.nft-job-line:empty{display:none!important}
.nft .nft-music{display:inline-flex;align-items:center;gap:6px;min-height:48px;padding:0 14px;border-radius:12px;border:1px solid #365258;background:#1b3a40;color:#f4f6f2;font-size:12px;font-weight:650;text-decoration:none;flex:none}
.nft .nft-music span{font-size:16px;color:var(--nft-mint)}
.nft-job{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:20px;min-height:350px;align-items:start}
.nft-job--empty{display:block}
.nft-job-main,.nft-job-check,.nft-job-shop{background:#1b383d;border:1px solid #355052;border-radius:16px;padding:16px;display:grid;gap:8px;min-width:0}
.nft-job-shop{grid-column:1/-1}
/* photos on the job (2026-10-17): the full width under the job and its checklist; the big button is the car floor (76 px), the input inside it reachable by keyboard */
.nft-job-photos{grid-column:1/-1;background:#1b383d;border:1px solid #355052;border-radius:16px;padding:16px;display:grid;gap:10px;min-width:0}
.nft-job-phase{display:flex;gap:6px;flex-wrap:wrap}.nft .nft-job-phase button{min-height:56px;min-width:76px;font-size:13px}.nft .nft-job-phase button[aria-pressed=true]{background:#dcebdd;color:#14332f;border-color:#dcebdd}
.nft-job-photo{position:relative;display:flex;align-items:center;justify-content:center;gap:10px;min-height:76px;padding:10px 22px;border-radius:12px;background:var(--nft-mint);color:#062d29;font-weight:700;font-size:15px;cursor:pointer;justify-self:start;min-width:220px}
.nft-job-photo input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.nft-job-photo:focus-within{outline:3px solid var(--nft-amber);outline-offset:2px}
.nft-job-photo:has(input:disabled){opacity:.45;cursor:default}.nft-job-photo:has(input:disabled) input{cursor:default}
.nft-job-photo-hint{font-size:12px;color:var(--nft-muted)}
.nft-pretrip-kept{font-size:13px;color:var(--nft-mint);margin:4px 0 0}
.nft-job-main h2{font-size:22px}
.nft-job-when{font-weight:650;color:#dce6dc}
.nft-job-answer{font-size:13px;color:#b9d3ce}
.nft-job-answer[data-response=pending],.nft-job-answer[data-response=declined]{color:#f1c47a}
.nft-job-gear{font-weight:700}
.nft-job-notes{font-size:13px;color:#b0c6bc}
.nft-job-pick{display:flex;gap:6px;flex-wrap:wrap}
.nft-job-pick button[aria-pressed=true]{background:#dcebdd;color:#14332f}
.nft-job-stops{list-style:none;margin:0;padding:0;display:grid;gap:6px;counter-reset:nft-stop}
.nft-job-stops li{counter-increment:nft-stop;display:flex;align-items:center;gap:10px}
.nft-job-stops li::before{content:counter(nft-stop);flex:0 0 26px;height:26px;display:grid;place-items:center;border-radius:50%;background:#122e34;border:2px solid var(--nft-amber);font-weight:800;font-size:12px}
.nft-job-stops li>span{flex:1;min-width:0}
.nft-job-stops li>span b{display:block}
.nft-job-stops button[aria-pressed=true]{background:var(--nft-mint);color:#062d29;border-color:var(--nft-mint)}
.nft-job-acts{display:flex;gap:8px;flex-wrap:wrap}
.nft .nft-job-acts button,.nft .nft-job-check li button{min-height:76px;min-width:76px;font-size:13px;font-weight:650}
.nft-job-check ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.nft-job-check li{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid #355052}
.nft-job-check li:first-child{border-top:0}
.nft-job-mark{flex:0 0 30px;height:30px;display:grid;place-items:center;border-radius:8px;border:2px solid #4b6a68;font-weight:900}
.nft-job-check li[data-state=done] .nft-job-mark{background:var(--nft-mint);border-color:var(--nft-mint);color:#062d29}
.nft-job-item{flex:1;min-width:0;display:grid;gap:2px}
.nft-job-item em{font-style:normal;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#f1c47a}
.nft-job-note{display:grid;gap:8px;padding:10px;border:1.5px solid var(--nft-amber);border-radius:12px}
.nft-job-note label{display:grid;gap:6px;font-size:13px;font-weight:650}
.nft-job-note textarea{font:inherit;border-radius:10px;border:1px solid #4b6a68;background:#122e34;color:#f4f6f2;padding:10px;min-height:64px}
.nft-job-note>div{display:flex;gap:8px}
.nft-job-note-row{display:block!important;border-top:0!important}
@media(max-width:900px){.nft-job{grid-template-columns:1fr}.nft .nft-brand small.nft-job-line{max-width:20vw}}
@media(min-width:680px) and (max-height:550px){.nft-job{min-height:250px}.nft .nft-job-acts button,.nft .nft-job-check li button{min-height:56px}}
.nft-job-park{display:flex;align-items:center;gap:12px;min-height:56px;margin-bottom:14px;padding:10px 14px;border:1.5px solid var(--nft-amber);border-radius:14px}
.nft-job-park input{width:26px;height:26px;accent-color:#00c3a9;flex:none}
.nft-job-park b{display:block}
.nft-job-said{grid-column:1/-1;margin:0 0 12px;padding:10px 14px;border-radius:12px;background:#1d3d40;border:1px solid #38554f;font-weight:600}
.nft-job-said.is-error{border-color:var(--nft-amber);color:#f7d9a6}
/* the pinned fleet phone cannot open another app (lock task): its Spotify link is not offered (the app sets nx-pinned) */
.nx-pinned .nft .nft-music{display:none!important}
/* WHERE TO, MUSIC, FULL MAP (owner, 2026-09-27): parked pages, like Job. The footer's row of views scrolls
   sideways when it no longer fits (a phone on its side) instead of pushing the page wider. */
.nft-footer nav{flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}.nft-footer nav::-webkit-scrollbar{display:none}
.nft-footer nav button{flex:none;white-space:nowrap}
@media(max-width:1180px){.nft-footer-note{display:none}}
.nft-go,.nft-music-page{display:grid;gap:14px;align-content:start;max-width:980px}
.nft-go section,.nft-music-page section{display:grid;gap:8px}
.nft-go-search{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.nft-go-search label{flex:1 1 260px;display:grid;gap:6px;font-size:12px;color:var(--nft-muted)}
.nft-go-search input{width:100%;min-height:56px;padding:12px 14px;background:#17363b;border:1px solid #46615f;border-radius:12px;color:var(--nft-paper);font:18px/1.3 system-ui,sans-serif}
.nft-go-search input:focus-visible{outline:3px solid var(--nft-mint);outline-offset:2px}
.nft .nft-go-search button{min-height:56px;padding:0 22px;font-weight:700}
.nft-go-hint{font-size:12px;color:var(--nft-muted);margin:0}
.nft-go-none{margin:0;color:#f1c47a}
.nft-go-list{display:grid;gap:6px}
.nft .nft-go-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:76px;text-align:left;padding:12px 16px;background:#1b383d;border:1px solid #355052;border-radius:14px}
.nft-go-row span{display:grid;gap:3px;min-width:0}.nft-go-row b{font-size:16px}.nft-go-row small{font-size:12px;color:#b0c6bc}
.nft-go-row em{font-style:normal;font-size:12px;color:#dce6dc;flex:none}
.nft-go-chosen{background:#1b383d;border:1.5px solid var(--nft-mint);border-radius:16px;padding:16px}
.nft-go-chosen h2{font-size:22px;margin:0}.nft-go-facts{display:flex;flex-wrap:wrap;gap:4px 18px;margin:0}.nft-go-facts div{display:flex;gap:6px;align-items:baseline;min-width:0}.nft-go-facts dt{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:#b0c6bc}.nft-go-facts dd{margin:0;font-weight:650;overflow-wrap:anywhere}.nft-go-facts dd.is-unknown{font-weight:500;color:#b0c6bc}.nft-go-sub{margin:0;color:#b0c6bc;font-size:13px}.nft-go-plan{margin:0;font-weight:650;font-size:16px}
.nft-go-note{display:grid;gap:6px;font-size:12px;color:var(--nft-muted)}
.nft-go-note input{min-height:48px;padding:10px 12px;background:#122e34;border:1px solid #4b6a68;border-radius:10px;color:var(--nft-paper);font:15px/1.3 system-ui,sans-serif}
.nft-remote-note{margin:0;padding:10px 14px;border-radius:12px;border:1px dashed #5d7c78;color:#dce6dc;font-size:13px}
.nft-music-row{display:flex;align-items:center;gap:10px;min-height:76px;padding:10px 14px;background:#1b383d;border:1px solid #355052;border-radius:14px}
.nft-music-row>span{flex:1;display:grid;gap:3px;min-width:0}.nft-music-row small{font-size:12px;color:#b0c6bc}
.nft .nft-music-row>button.nft-primary{min-height:60px}
.nft .nft-music-row>button[aria-pressed=true]{background:#dcebdd;color:#14332f}
.nft-music-row>a{display:inline-flex;align-items:center;min-height:48px;padding:0 12px;border-radius:12px;border:1px solid #365258;color:#f4f6f2;text-decoration:none;font-size:13px}
.nft-player{display:flex;align-items:center;gap:8px;padding:6px 14px;border-top:1px solid #304b4f;background:#0f2a2f}
.nft-player iframe{flex:1;border:0;border-radius:12px;height:80px;min-width:0}
@media(max-width:679px){.nft .nft-go-search button{width:100%}.nft-music-row{flex-wrap:wrap}}
@media(min-width:680px) and (max-height:550px){.nft .nft-go-row,.nft-music-row{min-height:60px}.nft-go-search input,.nft .nft-go-search button{min-height:50px}.nft-player iframe{height:64px}}
.nx-pinned .nft .nft-music-row>a{display:none!important}
.nft .nft-brand small.nft-viewas{display:inline-block;margin-top:2px;padding:2px 8px;border-radius:999px;background:#f1aa3e;color:#122e34;font-weight:750;font-size:11px;letter-spacing:.02em;max-width:none}
/* THE OFFICE AT THE WHEEL OF THE PHONE (owner, 2026-09-27): in the office's view, the driver's phone as it is and
   its controls; on the driver's phone, what the office said, big enough to read at a glance. Amber, never red. */
.nft-remote-bar{display:grid;gap:8px;padding:10px 20px;border-bottom:1px solid #304b4f;background:#0f2a2f}
.nft-remote-state{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;font-size:13px}
.nft-remote-state b{display:inline-flex;align-items:center;gap:6px}
.nft-remote-state b::before{content:"";width:9px;height:9px;border-radius:50%;background:#5d7c78}
.nft-remote-state b[data-remote-live=yes]::before{background:var(--nft-mint)}
.nft-remote-state span{color:#cfe0da}
.nft-remote-acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.nft .nft-remote-acts button{min-height:44px;font-size:12px;font-weight:650;padding:8px 12px}
.nft-remote-acts form{display:flex;gap:6px;flex:1 1 260px}
.nft-remote-acts input{flex:1;min-width:0;min-height:44px;padding:8px 10px;background:#17363b;border:1px solid #46615f;border-radius:10px;color:var(--nft-paper);font:14px/1.3 system-ui,sans-serif}
.nft-remote-log{list-style:none;margin:0;padding:0;display:flex;gap:6px;flex-wrap:wrap;font-size:11px}
.nft-remote-log li{display:grid;padding:4px 10px;border-radius:10px;border:1px solid #355052}
.nft-remote-log li small{color:#f1c47a}.nft-remote-log li[data-applied=yes] small{color:#8fe0d2}
.nft-office{display:flex;align-items:center;gap:14px;padding:12px 20px;background:#f1aa3e;color:#122e34}
.nft-office span{flex:1;display:grid;gap:2px}.nft-office small{font-size:12px;font-weight:700}.nft-office b{font-size:20px;line-height:1.25}
.nft .nft-office button{min-height:56px;min-width:76px;background:#122e34;color:#f4f6f2;border-color:#122e34;font-weight:750}
@media(max-width:679px),(min-width:680px) and (max-height:550px){.nft-remote-bar{padding:8px 12px}.nft-remote-log{display:none}.nft-office b{font-size:17px}}
/* HANDS-OFF (owner, 2026-09-27, paraphrased: some drivers should not touch the phone; the office runs it). On the
   driver's phone, one band across the cockpit in mint on ink (never red), and every driver control dimmed and off;
   in the office, the switch for the truck beside the phone's line. Also marks the turn-by-turn's bar (.flt-nav). */
.nft-handsoff{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;padding:10px 20px;background:#00c3a9;color:#122e34;border-bottom:3px solid #122e34}
.nft-handsoff b{font-size:21px;line-height:1.2;font-weight:800}
.nft-handsoff span{font-size:17px;font-weight:700}
.nft .nft-handsoff small{color:#122e34;font-size:13px;font-weight:650}
/* hands-off: Spotify's own play button stays the one thing the driver may tap (owner, 2026-09-28: they tap play) */
.nft-is-handsoff a.nft-music{pointer-events:none}
.nft-is-handsoff a.nft-music{opacity:.45}
.nft-handsoff-pill{flex:0 1 auto;display:inline-flex;align-items:center;min-height:48px;padding:6px 14px;border-radius:12px;background:#00c3a9;color:#122e34;font-weight:800;font-size:.95rem;line-height:1.15}
.flt-nav [data-hands-held]{opacity:.45;cursor:default}
.nft-hands{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding-top:8px;border-top:1px solid #304b4f}
.nft .nft-hands-switch{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:6px 16px 6px 8px;border-radius:999px;font-weight:750}
.nft-hands-switch i{position:relative;flex:none;width:46px;height:28px;border-radius:14px;background:#46615f}
.nft-hands-switch i::after{content:"";position:absolute;top:4px;left:4px;width:20px;height:20px;border-radius:50%;background:#f4f6f2;transition:left .15s}
.nft-hands-switch[aria-checked=true] i{background:#00c3a9}.nft-hands-switch[aria-checked=true] i::after{left:22px}
.nft-hands-switch b{font-size:12px;letter-spacing:.04em;color:#cfe0da}
.nft .nft-hands[data-hands=on] .nft-hands-switch{border-color:#00c3a9;background:#123f40}
.nft-hands-line{flex:1 1 220px;font-size:13px;color:#cfe0da}
.nft-hands[data-hands=on] .nft-hands-line{color:#f4f6f2;font-weight:650}
.nft .nft-hands-said{flex-basis:100%;color:#f1c47a;font-size:12px}
.nft-hands-note{flex:1 1 240px;min-width:0;min-height:48px;padding:8px 10px;background:#17363b;border:1px solid #46615f;border-radius:10px;color:#f4f6f2;font:14px/1.3 system-ui,sans-serif}
@media(max-width:679px),(min-width:680px) and (max-height:550px){.nft-handsoff{padding:6px 12px}.nft-handsoff b{font-size:18px}.nft-handsoff span{font-size:15px}}
/* the office's message inside the full-screen turn-by-turn (it covers the cockpit's own band): amber, above its bar */
.flt-nav .nft-office-nav{flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:10px 16px;border-top:3px solid #122e34;font-family:Inter,system-ui,sans-serif}
.nft-office-nav small{display:block;font-size:12px;font-weight:700;color:#122e34}
.nft-office-nav button{min-height:56px;min-width:76px;padding:10px 15px;border-radius:12px;border:1px solid #122e34;background:#122e34;color:#f4f6f2;font:inherit;font-weight:750;cursor:pointer}
@media(orientation:landscape) and (max-height:560px){.flt-nav .nft-office-nav{padding:6px 14px}.nft-office-nav b{font-size:17px}.nft-office-nav button{min-height:48px}}

/* the driver's pre-trip (round 8): first on the Job page until done today; OK / Defect as big as the checklist's */
.nft-pretrip{background:#1b383d;border:1px solid #355052;border-radius:16px;padding:16px;display:grid;gap:8px;min-width:0}
.nft-pretrip--done{border-color:#2f6b5c}
.nft-pretrip p{margin:0}
.nft-pretrip-lead{color:#b7c6c2;font-size:14px}
.nft-pretrip-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.nft-pretrip-list li{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:6px 0;border-top:1px solid #355052}
.nft-pretrip-list li.nft-pretrip-group{border-top:0;padding:10px 0 0;color:#9fb3ae;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.nft-pretrip-list .nft-job-item{flex:1 1 200px;min-width:0}
.nft .nft-pretrip-list button{min-height:56px;min-width:96px;font-size:13px;font-weight:650}
.nft .nft-pretrip-list button[aria-pressed="true"][data-result="pass"]{background:#2f8f74;border-color:#2f8f74;color:#fff}
.nft .nft-pretrip-list button[aria-pressed="true"][data-result="fail"]{background:#e3a33a;border-color:#e3a33a;color:#1b1b1b}
.nft-pretrip-note{flex:1 1 100%;display:grid;gap:4px;font-size:13px;color:#d9e4e1}
.nft-pretrip-note textarea{min-height:56px;font:inherit;font-size:16px;border-radius:10px;padding:8px;border:1px solid #4a6b6d;background:#11282b;color:#eef4f2}
.nft .nft-pretrip .nft-job-acts button{min-height:76px}

/* The pre-trip card leads with its title and how many items are answered (2026-10-17). */
.nft-pretrip-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:8px;border-bottom:1px solid #52706e}
.nft-pretrip-title{font-size:20px;line-height:1.2;font-weight:800;color:#f4f6f2}
.nft .nft-pretrip-heading>[data-pt-count]{display:grid;place-items:center;flex:none;min-height:48px;padding:6px 12px;border-radius:12px;background:#dcebdd;color:#14332f;font-size:16px;font-variant-numeric:tabular-nums;white-space:nowrap}
.nft-pretrip-lead{color:#d4e1dc;font-size:16px}
.nft-pretrip-list li.nft-pretrip-group{color:#c5d7cf;font-size:14px}
.nft .nft-pretrip-list button{min-height:56px;min-width:96px;font-size:15px}
.nft .nft-pretrip-list button[aria-pressed="true"][data-result="pass"]{background:#26745f;border-color:#26745f;color:#fff}
.nft .nft-pretrip-list button[aria-pressed="true"][data-result="fail"]{background:#f1aa3e;border-color:#f1aa3e;color:#122e34}
.nft-pretrip-note{font-size:15px;color:#f4f6f2}
.nft .nft-pretrip-note textarea{min-height:64px}
@media(max-width:679px){
  .nft-footer{align-items:stretch}
  .nft-footer nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;overflow:visible}
  .nft-footer nav button{min-width:0;min-height:52px;padding:8px 4px;white-space:normal;font-size:12px;line-height:1.15}
  .nft .nft-park{min-height:52px;flex:1 1 100%;font-size:14px;padding:10px 14px}
  .nft-pretrip{padding:14px}
  .nft-pretrip-title{font-size:21px}
  .nft-pretrip-list li[data-pt-row] .nft-job-item{flex:1 1 100%}   /* upright: the item's name on its own line, OK and Defect side by side under it */
  .nft .nft-pretrip-list li[data-pt-row] button{flex:1 1 0}
}
