.v2-livebar{position:sticky;top:0;z-index:80;display:flex;gap:12px;align-items:center;padding:9px 18px;background:#fff4d6;color:#604300;border-bottom:1px solid #e7ca7a;font-weight:750}.v2-livebar.ready{background:#e6f6ee;color:#075d38;border-color:#99d9ba}.v2-livebar .spacer{flex:1}.v2-livebar button{border:1px solid currentColor;border-radius:9px;background:transparent;color:inherit;padding:7px 11px;font-weight:800}.v2-station-label{display:flex;align-items:center;gap:7px;font-size:12px}.v2-station-label select{border:1px solid currentColor;border-radius:8px;background:var(--panel,#fff);color:var(--text,#162033);padding:6px 28px 6px 9px;font-weight:800}.v2-lock{opacity:.55!important;cursor:not-allowed!important}.v2-modal{position:fixed;inset:0;z-index:300;background:rgba(7,14,27,.72);display:grid;place-items:center;padding:18px}.v2-modal[hidden]{display:none}.v2-modal-card{width:min(470px,100%);background:var(--panel,#fff);color:var(--text,#162033);border:1px solid var(--border,#dce4ef);border-radius:20px;padding:24px;box-shadow:0 26px 80px rgba(0,0,0,.25)}.v2-modal-card label{display:grid;gap:7px;font-weight:800}.v2-modal-card input{min-height:46px;border:1px solid var(--border,#cad5e4);border-radius:10px;padding:0 12px;background:var(--panel,#fff);color:inherit}.v2-modal-actions{display:flex;gap:10px;margin-top:16px}.v2-modal-actions button{min-height:42px;border:0;border-radius:10px;padding:0 15px;font-weight:800}.v2-modal-actions .connect{background:#2864e8;color:white}.live-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:14px 0}.live-card{background:var(--panel,#fff);border:1px solid var(--line,#dce4ef);border-radius:14px;padding:15px}.live-card span{display:block;color:var(--muted,#65748a);font-size:12px;text-transform:uppercase;letter-spacing:.06em;font-weight:800}.live-card b{display:block;font-size:27px;margin-top:6px}.live-note{padding:13px 15px;border-left:4px solid #2864e8;border-radius:8px;background:color-mix(in srgb,#2864e8 8%,var(--panel,#fff));margin:12px 0}.live-empty{padding:26px;text-align:center;color:var(--muted,#65748a)}.live-table{width:100%;border-collapse:collapse}.live-table th,.live-table td{padding:11px 13px;border-bottom:1px solid var(--line,#dce4ef);text-align:left}.live-table th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted,#65748a)}.live-table-wrap{overflow:auto}.live-source{font-size:12px;color:var(--muted,#65748a)}@media(max-width:850px){.v2-livebar{flex-wrap:wrap}.live-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.live-table{min-width:760px}}
.v2-station-label input{border:1px solid currentColor;border-radius:8px;background:var(--panel,#fff);color:var(--text,#162033);padding:5px 8px;font-weight:800}
.v2-auth-locked{overflow:hidden}.v2-auth-locked>.app,.v2-auth-locked>.v2-livebar{visibility:hidden;pointer-events:none}.v2-login-gate{background:radial-gradient(circle at 22% 12%,rgba(36,197,197,.18),transparent 34%),radial-gradient(circle at 78% 88%,rgba(37,111,255,.24),transparent 40%),#071018}.v2-login-gate .v2-modal-card{width:min(500px,100%);padding:34px;border-color:#2b4054;background:#0f1b28;color:#f3f7fb;box-shadow:0 32px 100px #000a}.v2-login-brand{display:flex;align-items:center;gap:11px;margin-bottom:28px}.v2-login-mark{display:grid;place-items:center;width:52px;height:52px;border-radius:15px;background:linear-gradient(145deg,#194cd0,#20b3c7);color:#06101a;font-size:30px;font-weight:950;box-shadow:0 12px 30px rgba(30,86,217,.35)}.v2-login-word{font-size:29px;font-weight:900;letter-spacing:-.055em}.v2-login-version{border-radius:9px;padding:6px 9px;background:#173252;color:#79adff;font-size:14px;font-weight:900}.v2-login-gate h2{margin:6px 0 8px;font-size:28px;letter-spacing:-.035em}.v2-login-gate .eyebrow{color:#8fa5b8}.v2-login-gate .sub,.v2-login-help{color:#aab8c7}.v2-login-gate label{margin-top:15px}.v2-login-gate input,.v2-login-gate select{width:100%;min-height:48px;border:1px solid #34475c;border-radius:11px;background:#172638;color:#f3f7fb;padding:0 13px}.v2-login-gate .connect{width:100%;min-height:48px;background:#2864e8;color:#fff}.v2-login-help{margin:18px 0 0;text-align:center;font-size:12px}
.roster-actionbar{display:flex;align-items:center;gap:10px;padding:14px 16px;margin-bottom:14px;border:1px solid var(--line);border-radius:16px;background:var(--panel)}
.roster-actionbar>div{display:grid;gap:3px}.roster-actionbar>div span{color:var(--muted);font-size:12px}.roster-file{position:relative;overflow:hidden;cursor:pointer}.roster-file input{position:absolute;inset:0;opacity:0;cursor:pointer}.roster-tabs{margin-bottom:14px;overflow:auto}
@media(max-width:800px){.roster-actionbar{align-items:stretch;flex-direction:column}.roster-actionbar .spacer{display:none}.roster-actionbar button,.roster-actionbar .roster-file{text-align:center;width:100%}}
.v2-workspace>.hero{margin-bottom:16px}
.v2-workspace .live-grid{display:flex;gap:0;background:var(--panel,#fff);border:1px solid var(--line,#dce4ef);border-radius:13px;overflow:hidden}
.v2-workspace .live-card{flex:1;min-width:0;background:transparent;border:0;border-right:1px solid var(--line,#dce4ef);border-radius:0;padding:14px 16px}
.v2-workspace .live-card:last-child{border-right:0}.v2-workspace .live-card span{font-size:11px}.v2-workspace .live-card b{font-size:24px;margin-top:4px}.v2-workspace .live-card small{display:block;color:var(--muted,#65748a);margin-top:2px}
.v2-workspace>.live-table-wrap,.v2-workspace>.live-grid+.live-table-wrap{background:var(--panel,#fff);border:1px solid var(--line,#dce4ef);border-radius:13px}
.v2-workspace .panel>.live-table-wrap{border:0;border-radius:0;background:transparent}
@media(max-width:850px){.v2-workspace .live-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.v2-workspace .live-card{border-right:1px solid var(--line,#dce4ef);border-bottom:1px solid var(--line,#dce4ef)}.v2-workspace .live-card:nth-child(2n){border-right:0}}
#gse .gse-tabs{overflow:visible;position:relative;z-index:10}#gse .gse-nav-group{position:relative}#gse .gse-nav-menu{z-index:120}
.gse-demand-scroll{overflow:auto}.gse-demand-grid{width:100%;border-collapse:collapse;white-space:nowrap}.gse-demand-grid th,.gse-demand-grid td{padding:8px 10px;border:1px solid var(--line);text-align:center}.gse-demand-grid th{background:var(--panel2);color:var(--muted);font-size:11px}.gse-demand-grid tbody th{position:sticky;left:0;z-index:2;text-align:left;color:var(--txt)}.gse-demand-grid td.over{background:color-mix(in srgb,var(--red) 24%,var(--panel));color:var(--red);font-weight:900}
.gse-day-picker{display:grid;gap:4px;color:var(--muted);font-size:11px;font-weight:800}.gse-day-picker input{min-height:40px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--txt);padding:7px 10px}@media(max-width:700px){#gse-forecast>.panel>.ph{align-items:stretch;flex-direction:column}#gse-forecast>.panel>.ph>.spacer{display:none}}
.airside-map{position:relative;min-height:650px;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:radial-gradient(ellipse at 50% 55%,color-mix(in srgb,var(--panel2) 88%,#244863) 0,color-mix(in srgb,var(--bg) 93%,#183348) 72%)}.airside-apron{position:absolute;inset:7%;border:1px solid color-mix(in srgb,var(--line) 80%,#7ea4bd);border-radius:38% 45% 25% 32%;background:repeating-linear-gradient(115deg,transparent 0,transparent 78px,color-mix(in srgb,var(--line) 38%,transparent) 79px,color-mix(in srgb,var(--line) 38%,transparent) 80px)}.airside-map-label{position:absolute;left:14px;bottom:12px;color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.04em}.airside-gate{position:absolute;z-index:4;transform:translate(-50%,-50%);min-width:42px;height:38px;border:2px solid #71859e;border-radius:10px;background:var(--panel);color:var(--txt);font-weight:900;box-shadow:0 6px 18px #0005}.airside-gate.busy{border-color:var(--blue)}.airside-gate.oos{border-color:var(--red);border-style:dashed}.airside-gate i{position:absolute;right:-7px;top:-8px;display:grid;place-items:center;width:19px;height:19px;border-radius:50%;background:var(--blue);color:white;font-size:10px;font-style:normal}.airside-flight{position:absolute;z-index:3;transform:translate(-50%,-50%);min-width:108px;padding:6px 8px;border:1px solid #5b7897;border-radius:9px;background:color-mix(in srgb,var(--panel) 92%,transparent);box-shadow:0 7px 18px #0005;pointer-events:none}.airside-flight b,.airside-flight span{display:block}.airside-flight span{color:var(--muted);font-size:9px}.airside-marker{position:absolute;z-index:6;transform:translate(-50%,-50%);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:2px solid var(--blue);border-radius:999px;background:var(--panel);color:var(--txt);padding:6px 8px;font-size:10px;box-shadow:0 6px 16px #0007}.airside-marker.cabin{border-color:var(--violet)}.airside-marker.lav{border-color:var(--amber)}.airside-marker.water{border-color:#45c8ef}.airside-marker.coord{border-color:var(--green)}.airside-marker.gse{border-color:#f97316}.airside-marker[hidden]{display:none}.airside-empty{padding:38px;text-align:center}.airside-empty p{max-width:650px;margin:8px auto 15px;color:var(--muted)}@media(max-width:950px){.airside-map{min-height:520px}}@media(max-width:650px){.airside-map{min-height:430px}.airside-flight{display:none}.airside-marker{max-width:82px}}
.airside-map.leaflet-container .leaflet-tile{width:256px!important;height:256px!important;max-width:none!important;max-height:none!important}
.airside-map.leaflet-container{font:inherit;background:#0b1620}.v2-leaflet-gate-wrap,.v2-leaflet-person-wrap{background:transparent!important;border:0!important}.v2-leaflet-gate{position:relative;width:36px;height:36px;display:grid;place-items:center;border:2px solid var(--gate-color);border-radius:9px;background:color-mix(in srgb,var(--gate-color) 24%,#101a27);color:#fff;font-size:12px;font-weight:900;text-shadow:0 1px 2px #000;box-shadow:0 5px 14px #0007}.v2-leaflet-gate i{position:absolute;right:-7px;top:-7px;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#2864e8;color:#fff;font-size:9px;font-style:normal}.v2-leaflet-person{width:20px;height:20px;display:grid;place-items:center;border:2px solid var(--person-color);border-radius:50%;background:#0b141c;box-shadow:0 4px 11px #0008;font-size:11px}.v2-leaflet-person.gse{width:22px;height:22px;border-color:#f97316}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--panel);color:var(--txt)}.leaflet-control-zoom a{color:#111!important}
.v2-empty-state{display:grid;place-items:center;gap:9px;min-height:260px;padding:28px;text-align:center;color:var(--muted)}.v2-empty-state b{color:var(--txt);font-size:17px}.v2-flow-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;overflow:hidden;margin-bottom:16px;border:1px solid var(--line);border-radius:18px;background:var(--line)}.v2-flow-strip>div{display:grid;grid-template-columns:34px 1fr;column-gap:9px;align-items:center;padding:16px;background:var(--panel)}.v2-flow-strip span{grid-row:1/3;display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:var(--panel2);color:var(--blue);font-weight:900}.v2-flow-strip b{font-size:13px}.v2-flow-strip small{color:var(--muted)}.v2-action-card{display:block;color:var(--txt);text-decoration:none;transition:transform .15s ease,border-color .15s ease}.v2-action-card:hover{transform:translateY(-2px);border-color:var(--blue)}.v2-action-card p{color:var(--muted);line-height:1.5}.v2-action-card>b{color:var(--blue)}@media(max-width:850px){.v2-flow-strip{grid-template-columns:1fr 1fr}}@media(max-width:520px){.v2-flow-strip{grid-template-columns:1fr}}
.v2-intelligence-actions{grid-template-columns:repeat(3,1fr)}button.v2-action-card{width:100%;text-align:left;font:inherit}.v2-timeline{min-width:980px;overflow:hidden}.v2-time-head,.v2-time-row{display:grid;grid-template-columns:190px minmax(780px,1fr);border-bottom:1px solid var(--line)}.v2-time-head>*,.v2-time-row>*{padding:11px 13px}.v2-time-head>div,.v2-time-track{position:relative}.v2-time-head>div span{position:absolute;transform:translateX(-50%);color:var(--muted);font-size:10px}.v2-time-row>div:first-child b,.v2-time-row>div:first-child small{display:block}.v2-time-row>div:first-child small{margin-top:3px;color:var(--muted)}.v2-time-track{min-height:64px;background-image:linear-gradient(to right,transparent calc(12.5% - 1px),var(--line) calc(12.5% - 1px),var(--line) 12.5%);background-size:12.5% 100%}.v2-flight-block{position:absolute;top:10px;height:44px;min-width:72px;overflow:hidden;border:1px solid #6683a3;border-radius:10px;background:var(--panel2);color:var(--txt);padding:6px 9px;text-align:left}.v2-flight-block b,.v2-flight-block small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v2-flight-block small{color:var(--muted)}.v2-time-row.unassigned{background:color-mix(in srgb,var(--red) 7%,transparent)}.v2-time-row.unassigned .v2-flight-block{border-color:var(--red)}.v2-pa-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px}.v2-flight-review{position:fixed;inset:0;z-index:80;padding:18px;background:#02070bcc}.v2-review-card{width:min(720px,100%);height:100%;margin-left:auto;overflow:auto;border:1px solid var(--line);border-radius:18px;background:var(--bg)}.v2-row-action{white-space:nowrap}@media(max-width:900px){.v2-intelligence-actions,.v2-pa-layout{grid-template-columns:1fr}}
#intelligence .segmented button:not(.on){opacity:.45;pointer-events:none}
.v2-connected .ps-flight{grid-template-columns:90px minmax(180px,1fr) 120px;width:100%;border-top:0;border-left:0;border-right:0;border-radius:0;background:transparent;color:var(--txt);text-align:left;font:inherit}
.v2-connected .ps-flight.sel{border-left:3px solid var(--blue);background:var(--panel2)}
.v2-connected .ps-flight .pill{justify-self:end;white-space:nowrap}
@media(max-width:650px){.v2-connected .ps-flight{grid-template-columns:72px 1fr}.v2-connected .ps-flight>.pill{grid-column:2;justify-self:start}}
#v2ConfigPreview.v2-modal-card{width:min(920px,100%);max-height:calc(100vh - 36px);overflow:auto}
#v2ConfigPreview .live-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:10px}
#v2ConfigPreview .live-card{min-width:0}
#v2ConfigPreview .live-card span,#v2ConfigPreview .live-card b{overflow-wrap:anywhere}
#v2ConfigPreview .live-table{min-width:0;table-layout:fixed}
#v2ConfigPreview .live-table th,#v2ConfigPreview .live-table td{overflow-wrap:anywhere;vertical-align:top}
#v2ConfigPreview .live-table th:first-child,#v2ConfigPreview .live-table td:first-child{width:28%}
#v2ConfigPreview .live-table th:last-child,#v2ConfigPreview .live-table td:last-child{width:25%}
@media(max-width:600px){#v2ConfigPreview.v2-modal-card{padding:18px}#v2ConfigPreview .live-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#v2ConfigPreview .live-card{padding:12px}#v2ConfigPreview .live-card b{font-size:22px}#v2ConfigPreview .live-table th,#v2ConfigPreview .live-table td{padding:9px 7px;font-size:12px}}
.v2-login-logo{display:block;width:min(260px,72%);height:auto;object-fit:contain}
.airside-map.leaflet-container{contain:layout paint}.airside-map .leaflet-tile{will-change:auto}.airside-map.leaflet-fade-anim .leaflet-tile{transition:opacity .12s linear}
.v2-flight-block[draggable="true"]{cursor:grab}.v2-flight-block.dragging{opacity:.4;cursor:grabbing}.v2-time-track[data-allocation-team]{transition:background-color .14s ease,box-shadow .14s ease}.v2-time-track.drop-target{background-color:color-mix(in srgb,var(--blue) 14%,var(--panel));box-shadow:inset 0 0 0 2px var(--blue)}
.user-role-groups{display:grid;gap:10px;margin-top:14px}.user-role-group{border:1px solid var(--line,#d9dee7);border-radius:16px;background:var(--panel,#fff);overflow:hidden}.user-role-group>summary{display:flex;align-items:center;gap:12px;padding:16px 18px;font-weight:800;cursor:pointer;list-style:none}.user-role-group>summary::-webkit-details-marker{display:none}.user-role-group>summary:before{content:'›';font-size:24px;line-height:1;transition:transform .16s ease}.user-role-group[open]>summary:before{transform:rotate(90deg)}.user-role-group>summary .count{margin-left:auto}.user-role-group .live-table{margin:0;border-width:1px 0 0;border-radius:0}

/* Shared phone shell: compact controls, safe-area clearance and no squeezed desktop header. */
@media(max-width:700px){
html,body{max-width:100%;overflow-x:hidden}
.v2-livebar{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(132px,1fr);gap:10px 12px;padding:calc(12px + env(safe-area-inset-top)) 14px 14px;font-size:14px}
.v2-livebar>b{align-self:center;font-size:19px;white-space:nowrap}
.v2-livebar .v2-station-label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;font-size:13px}
.v2-livebar .v2-station-label select,.v2-livebar .v2-station-label input{width:100%;min-width:0;min-height:43px;font-size:16px}
.v2-livebar #v2ViewAsWrap,.v2-livebar #v2LiveMessage{grid-column:1/-1}
.v2-livebar #v2LiveMessage{font-size:13px}.v2-livebar .spacer{display:none}.v2-livebar button{min-height:42px}
.v2-livebar #v2Connect,.v2-livebar #v2LiveSync{grid-column:2;justify-self:stretch}
}
@media(max-width:430px){.v2-livebar{grid-template-columns:1fr}.v2-livebar>b,.v2-livebar .v2-station-label,.v2-livebar #v2ViewAsWrap,.v2-livebar #v2LiveMessage,.v2-livebar #v2Connect,.v2-livebar #v2LiveSync{grid-column:1}}

/* Native V2 follows the approved focused mobile workspaces shown in the operations deck. */
.v2-native-nav{display:none}
@media(max-width:700px){
body.v2-native-app{--bg:#ffffff;--panel:#fff;--panel2:#eef3fd;--line:#d7e1f5;--txt:#14203a;--muted:#5a6b8c;background:#ffffff;padding-bottom:calc(74px + env(safe-area-inset-bottom))}
.v2-native-app>.app>.top{display:none}
.v2-native-app .v2-livebar{position:sticky;top:0;z-index:90;grid-template-columns:1fr 124px;background:#fff;color:#17191d;border-color:#d9d8d3;box-shadow:0 2px 12px #17191d0c}
.v2-native-app .v2-livebar>b{font-size:21px;letter-spacing:-.04em}.v2-native-app .v2-livebar>b:after{content:' V2';color:#2563df;font-size:13px;letter-spacing:0}
.v2-native-app .v2-livebar .v2-station-label{font-size:11px;color:#687079}.v2-native-app .v2-livebar .v2-station-label select,.v2-native-app .v2-livebar .v2-station-label input{border-color:#d9d8d3;background:#f6f5f1;color:#17191d}
.v2-native-app .v2-livebar #v2LiveMessage{color:#11834b;font-size:12px}.v2-native-app .v2-livebar #v2Connect{border-color:#2563df;color:#2563df}
.v2-native-app .wrap{padding:15px 14px 22px}.v2-native-app .hero{padding:15px;border-radius:17px;background:#17191d;color:#fff}.v2-native-app .hero h1{font-size:24px}.v2-native-app .hero p{color:#c7ccd2}.v2-native-app .hero .pill{background:#fff2cf;color:#765100}
.v2-native-app .panel,.v2-native-app .kpi,.v2-native-app .live-card,.v2-native-app .section{box-shadow:0 4px 16px #17191d0a}
.v2-native-app .primary{background:#2563df;color:#fff}.v2-native-app .pill.blue{background:#e2ebff;color:#174cb7}
.v2-native-app .v2-native-nav{position:fixed;left:0;right:0;bottom:0;z-index:200;display:grid;grid-template-columns:repeat(4,1fr);min-height:70px;padding:6px 8px max(8px,env(safe-area-inset-bottom));border-top:1px solid #d9d8d3;background:#fff}
.v2-native-app .v2-native-nav button{display:grid;place-items:center;align-content:center;gap:2px;border:0;background:transparent;color:#60676e;font:800 11px/1.2 inherit}.v2-native-app .v2-native-nav button i{font-style:normal;font-size:20px}.v2-native-app .v2-native-nav button.on{color:#2563df}
.v2-native-app.v2-native-modules-open>.app>.top{position:fixed;left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));top:auto;z-index:190;display:block;padding:14px;border:1px solid #d9d8d3;border-radius:20px;background:#fff;box-shadow:0 18px 55px #17191d2b}
.v2-native-app.v2-native-modules-open>.app>.top>.brand,.v2-native-app.v2-native-modules-open>.app>.top>.spacer,.v2-native-app.v2-native-modules-open>.app>.top>.chip{display:none}
.v2-native-app.v2-native-modules-open>.app>.top>.nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;max-height:55vh;overflow:auto;padding:0}
.v2-native-app.v2-native-modules-open>.app>.top>.nav>button,.v2-native-app.v2-native-modules-open>.app>.top>.nav>.nav-group>button{width:100%;min-height:48px;text-align:left;border:1px solid #d9d8d3;background:#f6f5f1;color:#17191d}
.v2-native-app.v2-native-modules-open .nav-menu{position:fixed;left:22px;right:22px;top:auto;bottom:calc(154px + env(safe-area-inset-bottom));width:auto;max-height:45vh;overflow:auto;background:#fff;color:#17191d;border-color:#d9d8d3}
.v2-native-app.v2-native-modules-open .nav-menu button{color:#17191d}
}

/* Dark mode for the native shell — additive, not a rewrite: every rule here
   has one extra [data-theme="dark"] attribute selector versus its light
   counterpart above, so it wins on specificity without needing :not()
   guards on the light rules or any change to them. Follows the OS setting
   (see the matchMedia listener near the top of v2-live-readonly.js) — dead
   until that existed, since nothing ever set data-theme before. */
@media(max-width:700px){
body.v2-native-app[data-theme="dark"]{--bg:#0b0f17;--panel:#141b26;--panel2:#1b2430;--line:#2a3542;--txt:#edf1f7;--muted:#93a0b5;background:#0b0f17}
.v2-native-app[data-theme="dark"] .v2-livebar{background:#141b26;color:#edf1f7;border-color:#2a3542;box-shadow:0 2px 12px rgba(0,0,0,.35)}
.v2-native-app[data-theme="dark"] .v2-livebar>b:after{color:#3b82f6}
.v2-native-app[data-theme="dark"] .v2-livebar .v2-station-label{color:#93a0b5}
.v2-native-app[data-theme="dark"] .v2-livebar .v2-station-label select,.v2-native-app[data-theme="dark"] .v2-livebar .v2-station-label input{border-color:#2a3542;background:#1b2430;color:#edf1f7}
.v2-native-app[data-theme="dark"] .v2-livebar #v2LiveMessage{color:#34d399}
.v2-native-app[data-theme="dark"] .v2-livebar #v2Connect{border-color:#3b82f6;color:#3b82f6}
.v2-native-app[data-theme="dark"] .hero{background:#1b2430;color:#edf1f7}
.v2-native-app[data-theme="dark"] .hero p{color:#93a0b5}
.v2-native-app[data-theme="dark"] .hero .pill{background:#3b2a0b;color:#ffc761}
.v2-native-app[data-theme="dark"] .panel,.v2-native-app[data-theme="dark"] .kpi,.v2-native-app[data-theme="dark"] .live-card,.v2-native-app[data-theme="dark"] .section{box-shadow:0 4px 16px rgba(0,0,0,.35)}
.v2-native-app[data-theme="dark"] .pill.blue{background:#1c2f52;color:#8fb4ff}
.v2-native-app[data-theme="dark"] .v2-native-nav{border-top-color:#2a3542;background:#141b26}
.v2-native-app[data-theme="dark"] .v2-native-nav button{color:#93a0b5}
.v2-native-app[data-theme="dark"] .v2-native-nav button.on{color:#3b82f6}
.v2-native-app.v2-native-modules-open[data-theme="dark"]>.app>.top{border-color:#2a3542;background:#141b26;box-shadow:0 18px 55px rgba(0,0,0,.5)}
.v2-native-app.v2-native-modules-open[data-theme="dark"]>.app>.top>.nav>button,.v2-native-app.v2-native-modules-open[data-theme="dark"]>.app>.top>.nav>.nav-group>button{border-color:#2a3542;background:#1b2430;color:#edf1f7}
.v2-native-app.v2-native-modules-open[data-theme="dark"] .nav-menu{background:#141b26;color:#edf1f7;border-color:#2a3542}
.v2-native-app.v2-native-modules-open[data-theme="dark"] .nav-menu button{color:#edf1f7}
}
/* Field work (Ramp/Cabin/PS/PA/Coordinator) — shared primitives across all
   five role screens, so a visual pass here elevates every one of them at
   once. One-handed, gloved, arm's-length tap targets throughout, generous
   spacing between rows (per Jason — ramp crews work outdoors, in gloves).
   White/blue only, no green — matches the approved Ramp-turn direction.
   Everything here reads var(--bg/--panel/--line/--txt/--muted/--blue) with
   no hardcoded fallback overriding them, so dark mode (data-theme="dark",
   see the matchMedia listener in v2-live-readonly.js) cascades through
   automatically — no separate dark rules needed for this block. */
#fieldWork,#fieldMe,#fieldDay{font-size:14.5px}
/* Day tab — the department's full day in time order, one row per flight /
   job / passenger / work order (time, label, state pill). Same tokens as
   the Now tab so dark mode cascades; rows are intentionally full-width,
   one per line, matching the field-steps direction for gloved use. */
#fieldDay .field-day-list{display:grid;grid-template-columns:1fr;gap:10px;margin:10px 0 18px}
#fieldDay .field-day-row{display:flex;align-items:center;gap:12px;min-height:56px;border:1.5px solid var(--line);background:var(--panel);color:var(--txt);border-radius:16px;padding:12px 14px}
#fieldDay .field-day-row time{font-variant-numeric:tabular-nums;font-weight:800;min-width:48px;flex-shrink:0}
#fieldDay .field-day-row>div{flex-grow:1;min-width:0}
#fieldDay .field-day-row>div>b{display:block;font-size:15px}
#fieldDay .field-day-row>div>span{display:block;color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#fieldDay .field-day-row .pill{flex-shrink:0}
/* Manager tap-through: the same row as a button (Today → read-only detail). */
#fieldDay button.field-day-row{width:100%;text-align:left;font:inherit;cursor:pointer;touch-action:manipulation;transition:transform .08s ease}
#fieldDay button.field-day-row:active{transform:scale(.98)}
#fieldDay .live-grid{grid-template-columns:1fr 1fr;gap:10px;margin:10px 0 18px}
/* Messages (Me tab): thread as chat bubbles, own on the right in blue. */
#fieldMe .field-thread{display:flex;flex-direction:column;gap:8px;max-height:52vh;overflow:auto;padding:6px 2px;margin:10px 0}
#fieldMe .field-bubble-row{display:flex}
#fieldMe .field-bubble-row.own{justify-content:flex-end}
#fieldMe .field-bubble{max-width:82%;background:var(--panel2);color:var(--txt);border-radius:14px;padding:9px 12px;font-size:14px;line-height:1.4}
#fieldMe .field-bubble-row.own .field-bubble{background:var(--blue);color:#fff}
#fieldMe .field-bubble small{display:block;font-size:11px;opacity:.7;margin-top:3px}
#fieldMe .field-dm-form{display:flex;gap:8px;margin:6px 0}
#fieldMe .field-dm-form input{flex:1;min-height:48px;font:inherit;font-size:15px;padding:10px 12px;border:1.5px solid var(--line);border-radius:14px;background:var(--panel);color:var(--txt)}
#fieldMe .field-dm-form button{min-height:48px;padding:0 18px}
#fieldMe .field-plain-list{display:flex;flex-direction:column;margin:4px 0 18px}
#fieldMe .field-plain-row{display:flex;align-items:center;gap:14px;width:100%;min-height:60px;padding:12px 0;border:0;border-bottom:1px solid var(--line);background:none;color:var(--txt);font:inherit;text-align:left;touch-action:manipulation}
#fieldMe .field-plain-row:last-child{border-bottom:0}
#fieldMe .field-plain-row .t{flex-grow:1;min-width:0}
#fieldMe .field-plain-row .t b{display:block;font-size:15px}
#fieldMe .field-plain-row .t span{display:block;font-size:13px;margin-top:3px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#fieldMe .field-plain-row .t span.amber{color:#B07A12;font-weight:700}
#fieldMe .field-plain-row .chev{color:var(--line);font-size:26px;line-height:1;flex-shrink:0}
/* Manager oversight (Now tab): KPI tiles per department, 2×2, then plain
   attention rows — same primitives as the GSE lists. */
#fieldWork .live-grid{grid-template-columns:1fr 1fr;gap:10px;margin:10px 0 14px}
/* Unread-notification badge on the Me nav button. */
.v2-native-nav button{position:relative}
.v2-native-nav button .badge{position:absolute;top:4px;left:calc(50% + 6px);min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--red,#b93630);color:#fff;font-size:11px;font-weight:800;font-style:normal;line-height:18px;text-align:center;box-shadow:0 0 0 2px var(--panel,#fff)}
#fieldMe .field-plain-list{margin:4px 0 14px}
#fieldMe .field-plain-row{display:flex;align-items:center;gap:14px;width:100%;min-height:56px;padding:11px 0;border:0;border-bottom:1px solid var(--line);background:none;color:var(--txt);font:inherit;text-align:left;touch-action:manipulation}
#fieldMe .field-plain-row:last-child{border-bottom:0}
#fieldMe .field-plain-row .t{flex-grow:1;min-width:0}
#fieldMe .field-plain-row .t b{display:block;font-size:15px}
#fieldMe .field-plain-row .t span{display:block;font-size:13px;margin-top:3px;color:var(--muted)}
#fieldMe .field-plain-row .t span.red{color:var(--red,#b93630);font-weight:700}
#fieldMe .field-plain-row .t span.amber{color:#B07A12;font-weight:700}
#fieldMe .field-plain-row .chev{color:var(--line);font-size:26px;line-height:1;flex-shrink:0}
/* Direction A — progress rail + one big action (Ramp/Cabin/PS sheets).
   Rail line runs between the first and last node centres; the fill is a
   0–100 custom property set per render. Compact variant (Cabin/PS) uses
   32px numbered nodes with no labels. */
#fieldWork .field-rail{position:relative;margin:12px 0 18px;padding-top:4px}
#fieldWork .field-rail-line,#fieldWork .field-rail-fill{position:absolute;top:24px;left:22px;right:22px;height:4px;border-radius:2px;background:var(--line)}
#fieldWork .field-rail-fill{right:auto;width:calc((100% - 44px) * var(--rail-fill,0) / 100);background:var(--blue)}
#fieldWork .field-rail-nodes{display:flex;justify-content:space-between;position:relative}
#fieldWork .field-rail-node{display:flex;flex-direction:column;align-items:center;gap:6px;width:64px;text-align:center}
#fieldWork .field-rail-node .dot{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;line-height:1;background:var(--panel);border:2px solid var(--line);color:var(--muted)}
#fieldWork .field-rail-node.done .dot{background:var(--blue);border-color:var(--blue);color:#fff;font-size:18px;font-weight:800}
#fieldWork .field-rail-node.current .dot{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 0 0 4px var(--panel2)}
#fieldWork .field-rail-node b{font-size:11.5px;font-weight:700;color:var(--muted)}
#fieldWork .field-rail-node.current b{color:var(--blue);font-weight:800}
#fieldWork .field-rail-node small{font-size:11px;color:var(--muted);margin-top:-4px}
#fieldWork .field-rail.compact .field-rail-line,#fieldWork .field-rail.compact .field-rail-fill{top:18px;left:16px;right:16px}
#fieldWork .field-rail.compact .field-rail-fill{right:auto;width:calc((100% - 32px) * var(--rail-fill,0) / 100)}
#fieldWork .field-rail.compact .field-rail-node{width:auto}
#fieldWork .field-rail.compact .field-rail-node .dot{width:32px;height:32px;font-size:13px;font-weight:800}
#fieldWork .field-rail-caption{font-size:13px;color:var(--muted);margin:-8px 0 12px}
#fieldWork .field-now-action{display:flex;align-items:center;gap:16px;width:100%;min-height:72px;padding:20px 18px;background:var(--blue);border:0;border-radius:18px;color:#fff;text-align:left;font:inherit;touch-action:manipulation;transition:transform .08s ease}
#fieldWork .field-now-action+.field-now-action{margin-top:10px}
#fieldWork .field-now-action:not(:disabled):active{transform:scale(.97)}
#fieldWork .field-now-action:disabled{opacity:.5}
#fieldWork .field-now-action .ring{width:26px;height:26px;border-radius:50%;border:2px solid rgba(255,255,255,.7);flex-shrink:0}
#fieldWork .field-now-action .txt{flex-grow:1;min-width:0}
#fieldWork .field-now-action .txt b{display:block;font-size:19px;font-weight:800;letter-spacing:-.01em}
#fieldWork .field-now-action .txt small{display:block;font-size:12.5px;color:rgba(255,255,255,.78);margin-top:3px}
#fieldWork .field-now-action .chev{font-size:28px;line-height:1;opacity:.9;flex-shrink:0}
/* Bypass-pin safety check — a Yes/No in the "Now" slot. Yes is the same
   blue as a big action; No is outlined red so it can't be hit by habit. */
#fieldWork .field-now-safety{display:flex;flex-direction:column;gap:12px;padding:16px 18px;border:2px solid var(--blue);border-radius:18px;background:var(--panel)}
#fieldWork .field-now-action+.field-now-safety,#fieldWork .field-now-safety+.field-now-action{margin-top:10px}
#fieldWork .field-now-safety .txt b{display:block;font-size:17px;font-weight:800;letter-spacing:-.01em}
#fieldWork .field-now-safety .txt small{display:block;font-size:12.5px;color:var(--muted);margin-top:3px}
#fieldWork .field-now-safety .row{display:flex;gap:10px}
#fieldWork .field-now-safety .row button{flex:1;min-height:56px;border-radius:14px;font:inherit;font-weight:800;font-size:15.5px;touch-action:manipulation}
#fieldWork .field-now-safety .row .yes{background:var(--blue);border:0;color:#fff;flex:2}
#fieldWork .field-now-safety .row .no{background:var(--panel);border:2px solid var(--red,#b93630);color:var(--red,#b93630)}
#fieldWork .field-now-safety .row button:disabled{opacity:.5}
#fieldWork .field-step-folded.warn .ci{background:var(--red,#b93630)}
#fieldWork .field-step-folded.warn>b{color:var(--red,#b93630)}
#fieldWork .field-now-done{display:flex;flex-direction:column;gap:3px;padding:18px;border-radius:18px;background:var(--panel2);color:var(--txt)}
#fieldWork .field-now-done b{font-size:17px}
#fieldWork .field-now-done small{color:var(--muted);font-size:13px}
#fieldWork .field-then{font-size:13px;color:var(--muted);margin:10px 0 6px}
#fieldWork .field-then b{color:var(--txt)}
#fieldWork .field-optional{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;margin-top:10px;padding:12px 16px;border:1.5px solid var(--line);border-radius:16px;background:var(--panel);color:var(--muted);font:inherit;text-align:left;touch-action:manipulation}
#fieldWork .field-optional .ci{font-size:18px;line-height:1}
#fieldWork .field-optional b{flex-grow:1;font-weight:600;color:var(--muted)}
#fieldWork .field-optional small{font-size:11.5px;font-weight:700;color:#8A7A45;background:#F6EFDB;padding:3px 8px;border-radius:999px;flex-shrink:0}
#fieldWork .field-optional:disabled{opacity:.5}
#fieldWork .field-secondary-row{display:flex;gap:10px;margin:14px 0 18px}
#fieldWork .field-secondary-row button{flex:1;min-height:48px}
/* GSE pre-use inspection checklist (modal): one block per item, three
   big radio choices, optional note. */
#v2ConfigPreview .field-inspect-item{padding:10px 0;border-top:1px solid var(--line)}
#v2ConfigPreview .field-inspect-item>b{display:block;font-size:14px;margin-bottom:6px}
#v2ConfigPreview .field-inspect-choice{display:flex;gap:6px;margin-bottom:6px}
#v2ConfigPreview .field-inspect-choice label{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px;border:1.5px solid var(--line);border-radius:12px;font-weight:700;font-size:13px;touch-action:manipulation}
#v2ConfigPreview .field-inspect-choice label:has(input:checked){background:var(--blue);border-color:var(--blue);color:#fff}
#v2ConfigPreview .field-inspect-choice label:has(input[value="defect"]:checked){background:var(--red,#b93630);border-color:var(--red,#b93630)}
#v2ConfigPreview .field-inspect-choice input{margin:0}
#v2ConfigPreview .field-check{display:flex;align-items:center;gap:10px;font-size:14px;margin:10px 0}
/* Direction C — plain rows (GSE lists on Now and Day): dividers, status as
   coloured second line, chevron. */
/* Intelligence › Beta — desk layout: tiles, team timeline, capacity strip. */
#intelligence .beta-tiles{grid-template-columns:repeat(3,1fr)}
#intelligence .beta-panel{margin-top:14px}
#intelligence .beta-panel .ph .sub{display:block;margin-top:2px}
#intelligence svg.beta-timeline,#intelligence svg.beta-capacity{width:100%;height:auto;display:block;font-family:inherit;margin-top:8px}
#intelligence svg.beta-timeline{min-height:120px}
#intelligence .beta-timeline .grid{stroke:var(--line);stroke-width:1;opacity:.55}
#intelligence .beta-timeline .grid.major{opacity:1}
#intelligence .beta-timeline .lane{font-size:12px;font-weight:700;fill:var(--txt)}
#intelligence .beta-timeline .lane-sep{stroke:var(--line);stroke-width:1;opacity:.5}
#intelligence .beta-timeline .turn{fill:var(--blue);opacity:.85}
#intelligence .beta-timeline .turn.late{fill:#B07A12}
#intelligence .beta-timeline .turn-label{font-size:10px;font-weight:700;fill:#fff;pointer-events:none}
#intelligence .beta-timeline .clash{fill:var(--red,#b93630);opacity:.55}
#intelligence .beta-timeline .now,#intelligence .beta-capacity .now{stroke:var(--txt);stroke-width:1.5;stroke-dasharray:4 3}
#intelligence .beta-timeline .now-label{font-size:10px;font-weight:700;fill:var(--txt)}
#intelligence .beta-timeline .axis,#intelligence .beta-capacity .axis{stroke:var(--muted);stroke-width:1}
#intelligence .beta-timeline .axis-label,#intelligence .beta-capacity .axis-label{font-size:10px;fill:var(--muted)}
#intelligence .beta-capacity .lane{font-size:12px;font-weight:700;fill:var(--txt)}
#intelligence .beta-capacity .lane.muted{font-weight:500;fill:var(--muted)}
#intelligence .beta-capacity .demand{fill:var(--blue);opacity:.5}
#intelligence .beta-capacity .demand.short{fill:var(--red,#b93630);opacity:.75}
#intelligence .beta-capacity .supply{fill:none;stroke:var(--txt);stroke-width:2}
#intelligence .beta-ok{color:var(--txt)}
#intelligence .beta-amber{color:#B07A12;font-weight:700}
#intelligence .beta-red{color:var(--red,#b93630);font-weight:700}
#intelligence details.beta-roadmap{margin-top:18px}
#intelligence details.beta-roadmap summary{cursor:pointer;font-weight:700;padding:10px 0;color:var(--muted)}
#intelligence .beta-brief-ask{display:flex;gap:8px;margin:0 0 10px}
#intelligence .beta-brief-ask input{flex:1;min-width:0}
#intelligence #betaBriefOut .field-plain-list{margin-top:6px}
#intelligence .beta-brief-raw{white-space:pre-wrap;font-size:12px;max-height:320px;overflow:auto}
#intelligence .beta-assign-row{display:flex;gap:8px;flex-wrap:wrap;padding:4px 0 10px}
#intelligence .beta-timeline .turn.skill-miss{stroke:#B07A12;stroke-width:2;stroke-dasharray:3 2}
#intelligence .beta-timeline .skill-flag{font-size:11px;font-weight:800;fill:#fff;pointer-events:none}
#intelligence .beta-why{margin:0 0 12px 12px;padding:8px 12px;border-left:3px solid var(--blue);}
#intelligence .beta-apply-note{margin:-2px 0 10px 12px}
#intelligence .beta-h3{font-size:14px;margin:14px 0 2px}
/* Intelligence › Beta reuses the field primitives on the desk. */
#intelligence .field-plain-list{display:flex;flex-direction:column;margin:4px 0 22px}
#intelligence .field-plain-row{display:flex;align-items:center;gap:14px;width:100%;min-height:52px;padding:10px 4px;border:0;border-bottom:1px solid var(--line);background:none;color:var(--txt);font:inherit;text-align:left}
#intelligence .field-plain-row:last-child{border-bottom:0}
#intelligence .field-plain-row .t{flex-grow:1;min-width:0}
#intelligence .field-plain-row .t b{display:block;font-size:14.5px}
#intelligence .field-plain-row .t span{display:block;font-size:13px;margin-top:2px;color:var(--muted)}
#intelligence .field-plain-row .t span.red{color:var(--red,#b93630);font-weight:700}
#intelligence .field-plain-row .t span.amber{color:#B07A12;font-weight:700}
#intelligence .field-plain-row .chev{display:none}
#intelligence .section{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:18px 0 6px}
#intelligence .section>b{font-size:15px}
#intelligence .section>span{color:var(--muted);font-size:13px}
#fieldWork .field-plain-list,#fieldDay .field-plain-list{display:flex;flex-direction:column;margin:4px 0 18px}
#fieldWork .field-plain-row,#fieldDay .field-plain-row{display:flex;align-items:center;gap:14px;width:100%;min-height:64px;padding:13px 0;border:0;border-bottom:1px solid var(--line);background:none;color:var(--txt);font:inherit;text-align:left;touch-action:manipulation}
#fieldWork .field-plain-row:last-child,#fieldDay .field-plain-row:last-child{border-bottom:0}
#fieldWork .field-plain-row .t,#fieldDay .field-plain-row .t{flex-grow:1;min-width:0}
#fieldWork .field-plain-row .t b,#fieldDay .field-plain-row .t b{display:block;font-size:15.5px}
#fieldWork .field-plain-row .t span,#fieldDay .field-plain-row .t span{display:block;font-size:13px;margin-top:3px;color:var(--muted)}
#fieldWork .field-plain-row .t span.red,#fieldDay .field-plain-row .t span.red{color:var(--red,#b93630);font-weight:700}
#fieldWork .field-plain-row .t span.amber,#fieldDay .field-plain-row .t span.amber{color:#B07A12;font-weight:700}
#fieldWork .field-plain-row .chev,#fieldDay .field-plain-row .chev{color:var(--line);font-size:26px;line-height:1;flex-shrink:0}
#fieldDay .field-plain-row .chev{display:none}
#fieldWork button.field-plain-row:active{background:var(--panel2)}
#fieldWork .field-steps{display:grid;grid-template-columns:1fr;gap:14px;margin:14px 0}
#fieldWork .field-card{display:block;width:100%;text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:16px;padding:16px;cursor:pointer;box-shadow:0 1px 2px rgba(16,24,40,.05);transition:transform .08s ease,box-shadow .08s ease}
#fieldWork .field-card:active{transform:scale(.98);box-shadow:none}
#fieldWork .field-card h2{font-size:16px;letter-spacing:-.01em}
#fieldWork .field-step{display:flex;align-items:center;gap:12px;min-height:56px;width:100%;border:1.5px solid var(--line);background:var(--panel);color:var(--txt);border-radius:16px;padding:16px 16px;text-align:left;font:inherit;touch-action:manipulation;transition:transform .08s ease}
#fieldWork .field-step:not(:disabled):active{transform:scale(.97)}
#fieldWork .field-step .ci{font-size:20px;line-height:1;flex-shrink:0}
#fieldWork .field-step:disabled{opacity:.5}
#fieldWork .field-step > b{flex-grow:1;font-size:16px;font-weight:700}
#fieldWork .field-step small{color:var(--muted);font-weight:700}
/* Highlighted "next actionable" row — Ramp's toggle direction wasn't the
   one that shipped, but a single row still earns this treatment when it's
   the one obvious next tap (e.g. Passenger Assistance's next checkpoint). */
#fieldWork .field-step.next{background:var(--blue);border-color:var(--blue);color:#fff}
#fieldWork .field-step.next .ci{color:#fff}
#fieldWork .field-step.next small{color:rgba(255,255,255,.78)}
/* Folded/completed row — Jason's call over a full-size done card: once a
   milestone is logged it shrinks to one compact line (icon, label, time)
   instead of staying at full height, so the list a supervisor glances at
   mid-turn stays short no matter how far along the turn is. */
#fieldWork .field-step-folded{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--panel2);border-radius:12px;font-size:13.5px}
#fieldWork .field-step-folded .ci{width:18px;height:18px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0}
#fieldWork .field-step-folded > b{flex-grow:1;font-weight:700;color:var(--txt);font-size:13.5px}
#fieldWork .field-step-folded small{color:var(--muted);font-weight:600;flex-shrink:0}
/* Vertical checkpoint timeline (Passenger Assistance journey) — connecting
   line between steps, done/current/pending states distinguished by dot
   fill, not just color, so it still reads at a glance in bright sun. */
#fieldWork .field-journey{display:grid;gap:0;margin:12px 0;position:relative}
#fieldWork .field-journey .field-step{border-radius:0;border-left:0;border-right:0;border-top:0;padding-left:34px;position:relative;min-height:52px;justify-content:center}
#fieldWork .field-journey .field-step:first-child{border-top-left-radius:13px;border-top-right-radius:13px;border-top:1px solid var(--line,#dce4ef)}
#fieldWork .field-journey .field-step:last-child{border-bottom-left-radius:13px;border-bottom-right-radius:13px}
#fieldWork .field-journey .field-step .ci{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:15px;width:16px;text-align:center}
#fieldWork .field-journey .field-step:not(:last-child)::after{content:'';position:absolute;left:17px;top:100%;width:1px;height:1px;border-left:2px dotted var(--line,#dce4ef)}
#v2ConfigPreview .field-presence-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line,#dce4ef);font-size:13px}
#v2ConfigPreview .field-presence-row:last-of-type{border-bottom:none}
#v2ConfigPreview .field-presence-btn{border:1px solid var(--line,#dce4ef);background:var(--panel,#fff);color:var(--txt,#162033);border-radius:999px;padding:7px 14px;font-weight:750;touch-action:manipulation}
#v2ConfigPreview .field-presence-btn:disabled{opacity:.5}
#v2ConfigPreview .field-presence-btn.on{background:var(--blue);border-color:var(--blue);color:#fff}
#v2ConfigPreview .field-presence-btn.warn.on{background:var(--red,#b93630);border-color:var(--red,#b93630);color:#fff}
/* Me tab — avatar + name/role header, section cards below. */
#fieldMe .field-avatar{display:flex;align-items:center;gap:14px;margin:4px 0 14px}
#fieldMe .field-avatar-circle{width:52px;height:52px;border-radius:50%;background:var(--blue,#1e56d9);color:#fff;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:800;flex-shrink:0}
/* Field warning text must remain legible on both white and dark panels. */
body:not([data-theme="dark"]) #fieldWork .field-plain-row .t span.amber,body:not([data-theme="dark"]) #fieldDay .field-plain-row .t span.amber,body:not([data-theme="dark"]) #fieldMe .field-plain-row .t span.amber{color:#805400}
body[data-theme="dark"] #fieldWork .field-plain-row .t span.amber,body[data-theme="dark"] #fieldDay .field-plain-row .t span.amber,body[data-theme="dark"] #fieldMe .field-plain-row .t span.amber{color:#ffc761}
.field-service-guide{padding:14px 16px;margin:14px 0;color:var(--txt);overflow-wrap:anywhere}
.field-service-guide summary{cursor:pointer;font-weight:750;min-height:44px;display:list-item}
.field-service-guide ol{padding-left:22px}.field-service-guide li{margin:8px 0}
#fieldWlForm fieldset{border:1px solid var(--line);border-radius:12px;margin:12px 0;padding:10px 12px}
#fieldWlForm fieldset label{display:flex;align-items:center;gap:12px;min-height:48px;margin:4px 0;font-weight:600}
#fieldWlForm fieldset input[type="checkbox"]{width:22px;height:22px;min-height:22px;flex:0 0 22px;padding:0;margin:0;accent-color:#1e56d9}
body[data-theme="dark"] #v2ConfigPreview .field-inspect-choice label:has(input:checked){background:#1e56d9;color:#fff!important}
body[data-theme="dark"] #v2ConfigPreview .field-inspect-choice label:has(input[value="defect"]:checked){background:#b93630}
#fieldMe .field-avatar div>b{display:block;font-size:17px}
#fieldMe .field-avatar div>span{color:var(--muted,#65748a);font-size:13px}
#fieldMe .panel{border-radius:16px;box-shadow:0 1px 2px rgba(16,24,40,.05)}
#fieldMe [data-field-signout]{width:100%;color:var(--red,#b93630);border-color:var(--red,#b93630)}
.v2-native-app #fieldWork .field-step{min-height:72px}
.v2-native-app #fieldWork .field-journey .field-step{min-height:56px}
.v2-native-field .v2-native-nav{grid-template-columns:repeat(3,1fr)}
.v2-native-field .v2-native-nav button[hidden]{display:none}
/* Management performance reports */
.mgmt-modal-head{position:sticky;top:0;z-index:5;background:var(--surface,#fff)}
.management-report{max-width:1180px;margin:0 auto;background:#f5f7fb;color:#172033;border-radius:22px;overflow:hidden}
.mgmt-hero{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;padding:34px;background:linear-gradient(135deg,#0d1b32,#173a72);color:#fff}
.mgmt-hero span{font-size:12px;font-weight:800;letter-spacing:.16em;color:#93b8ff}.mgmt-hero h2{font-size:34px;margin:8px 0}.mgmt-hero p{margin:0;color:#ccd8ec}
.mgmt-hero>strong{font-size:38px;text-align:right;white-space:nowrap}.mgmt-hero>strong small{display:block;font-size:12px;font-weight:600;color:#ccd8ec}
.mgmt-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:#dbe2ed;border-bottom:1px solid #dbe2ed}
.mgmt-metric-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid #dbe2ed;border-radius:14px;overflow:hidden}
.mgmt-metric{background:#fff;padding:18px;min-height:108px}.mgmt-metric span{display:block;color:#66758a;font-size:12px;font-weight:750;text-transform:uppercase;letter-spacing:.06em}.mgmt-metric b{display:block;font-size:26px;margin:9px 0 5px}.mgmt-metric small{color:#66758a;line-height:1.35}
.mgmt-section{margin:18px;background:#fff;border:1px solid #dbe2ed;border-radius:16px;overflow:hidden}.mgmt-section-head{padding:20px 22px 12px}.mgmt-section h3{font-size:21px;margin:0}.mgmt-section-head p{margin:5px 0 0;color:#66758a}.mgmt-section>.fis-table,.mgmt-section>table{margin:0;border-radius:0;border-width:1px 0 0}
.mgmt-coverage-warning{display:flex;gap:18px;align-items:flex-start;margin:18px;padding:16px 18px;border-radius:12px;border-left:5px solid #d99015;background:#fff5df;color:#66450d}.mgmt-coverage-warning b{white-space:nowrap}.mgmt-coverage-warning span{line-height:1.45}
.mgmt-split{display:grid;grid-template-columns:minmax(0,3fr) minmax(180px,1fr);gap:24px;padding:12px 22px 22px}
.mgmt-chart{height:210px;display:grid;grid-template-columns:repeat(24,minmax(12px,1fr));align-items:end;gap:4px;border-bottom:1px solid #ccd5e2;padding-top:20px}.mgmt-bar-col{height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;min-width:0}.mgmt-bar-col b{font-size:9px;color:#617087;min-height:13px}.mgmt-bar-col i{display:block;width:100%;max-width:24px;background:linear-gradient(#2e6dea,#2057c7);border-radius:5px 5px 0 0;min-height:3px}.mgmt-bar-col span{font-size:9px;color:#617087;margin-top:5px}
.mgmt-summary-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mgmt-summary-list p{margin:0;padding:14px;background:#f5f7fb;border-radius:11px}.mgmt-summary-list b{display:block;font-size:24px}.mgmt-summary-list span{color:#66758a;font-size:12px}
.mgmt-clashes{padding:14px 22px 22px;display:grid;gap:7px}.mgmt-clashes>div{display:grid;grid-template-columns:100px 1fr 70px 1fr;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;background:#fff8ec;border-left:4px solid #dd9418}.mgmt-clashes span,.mgmt-clashes i{font-size:12px;color:#765a25}.mgmt-clashes i{text-align:center}
.mgmt-allocation{position:relative;margin:8px 22px 22px;padding-top:34px;border:1px solid #d8e0eb;border-radius:14px;overflow:hidden;background:repeating-linear-gradient(90deg,#fff 0,#fff calc(12.5% - 1px),#e5eaf1 calc(12.5% - 1px),#e5eaf1 12.5%)}.mgmt-time-axis{position:absolute;left:0;right:0;top:0;height:34px;border-bottom:1px solid #d8e0eb;background:#f7f9fc}.mgmt-time-axis span{position:absolute;top:10px;transform:translateX(-50%);font-size:10px;color:#68768a}.mgmt-flight-lane{position:relative;height:66px;border-bottom:1px solid #e2e7ef}.mgmt-flight-lane:last-child{border-bottom:0}.mgmt-flight-block{position:absolute;top:10px;height:46px;min-width:38px;padding:7px 9px;border:1px solid #7ca4ff;border-radius:9px;background:#dce8ff;color:#163b7b;overflow:hidden;box-shadow:0 2px 5px #1e4e9f18}.mgmt-flight-block.airline{background:#e6e1ff;border-color:#9a83ed;color:#4c338f}.mgmt-flight-block b,.mgmt-flight-block span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mgmt-flight-block b{font-size:11px}.mgmt-flight-block span{font-size:9px;margin-top:2px;opacity:.8}
.management-report footer{display:flex;justify-content:space-between;gap:20px;padding:20px 24px;margin-top:18px;background:#e8edf5;color:#536176;font-size:11px}.management-report footer span{text-align:right}.mgmt-actions{max-width:1180px;margin:14px auto!important}
@media(max-width:900px){.mgmt-metric-grid,.mgmt-metric-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.mgmt-split{grid-template-columns:1fr}.mgmt-clashes>div{grid-template-columns:1fr 1fr}.mgmt-clashes i{display:none}.mgmt-hero{align-items:flex-start;flex-direction:column}.mgmt-hero>strong{text-align:left}}
@media print{.management-report{background:#fff}.mgmt-section{break-inside:avoid}.mgmt-hero{-webkit-print-color-adjust:exact;print-color-adjust:exact}.mgmt-metric-grid{grid-template-columns:repeat(4,1fr)}.mgmt-chart{height:150px}}
.v2-review-card{width:min(1040px,100%)}
.v2-review-card .dh{position:sticky;top:0;z-index:3;background:var(--bg);border-bottom:1px solid var(--line)}
.v2-review-card .section{padding:24px 28px}
.v2-review-card .assign-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 22px}
.v2-review-card label{display:grid;gap:7px;align-content:start;color:var(--muted);font-size:13px;font-weight:700}
.v2-review-card input,.v2-review-card select,.v2-review-card textarea{width:100%;min-width:0;color:var(--txt);font-size:16px}
.v2-review-card .action-row{display:flex;flex-wrap:wrap;gap:10px}
.v2-review-card .section>h3{margin-top:0}
@media(max-width:760px){.v2-flight-review{padding:0}.v2-review-card{border-radius:0}.v2-review-card .section{padding:18px}.v2-review-card .assign-slots{grid-template-columns:1fr}}
body[data-theme="dark"] .v2-review-card input,body[data-theme="dark"] .v2-review-card select,body[data-theme="dark"] .v2-review-card textarea{color-scheme:dark;background:#101a2e!important;border:1px solid #405173!important;color:#f4f7ff!important;caret-color:#79adff}
body[data-theme="dark"] .v2-review-card input::placeholder,body[data-theme="dark"] .v2-review-card textarea::placeholder{color:#a8b6d0!important;opacity:1}
body[data-theme="dark"] .v2-review-card input:disabled,body[data-theme="dark"] .v2-review-card select:disabled{background:#182238!important;color:#94a3bc!important;opacity:1}
body[data-theme="dark"] .v2-review-card .action-row button:not(.primary):not(.danger){border:1px solid #405173;background:#1b2743;color:#eaf0fb}
body[data-theme="dark"] .v2-review-card .action-row button:not(.primary):not(.danger):hover{border-color:#6c84aa;background:#243352}
body[data-theme="dark"] .v2-review-card .action-row .primary{background:#3b82f6;color:#fff}
body[data-theme="dark"] .v2-review-card .action-row .danger{background:#421d25;border-color:#9f4350;color:#ffacb6}
body[data-theme="dark"] .v2-review-card .pill.amber{background:#3b2a0b;color:#ffc761}
body[data-theme="dark"]{color-scheme:dark}
body[data-theme="dark"] .v2-modal-card,body[data-theme="dark"] #v2ConfigPreview{background:var(--panel)!important;border-color:var(--line)!important;color:var(--txt)!important}
body[data-theme="dark"] .v2-modal-card h1,body[data-theme="dark"] .v2-modal-card h2,body[data-theme="dark"] .v2-modal-card h3,body[data-theme="dark"] .v2-modal-card b,body[data-theme="dark"] .v2-modal-card label{color:var(--txt)!important}
body[data-theme="dark"] input:not([type="checkbox"]):not([type="radio"]),body[data-theme="dark"] select,body[data-theme="dark"] textarea{color-scheme:dark;background:#101a2e!important;border:1px solid #405173!important;color:#f4f7ff!important;caret-color:#79adff}
body[data-theme="dark"] input::placeholder,body[data-theme="dark"] textarea::placeholder{color:#a8b6d0!important;opacity:1}
body[data-theme="dark"] input:disabled,body[data-theme="dark"] select:disabled,body[data-theme="dark"] textarea:disabled{background:#182238!important;color:#94a3bc!important;opacity:1}
body[data-theme="dark"] select option{background:#101a2e;color:#f4f7ff}
body[data-theme="dark"] #v2ConfigPreview .v2-modal-actions button:not(.primary):not(.connect),body[data-theme="dark"] .v2-modal-card .v2-modal-actions button:not(.primary):not(.connect){border:1px solid #405173;background:#1b2743;color:#eaf0fb}
.turn-signoffs .ph{padding:0 0 16px;margin-bottom:16px}.turn-signoff-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.turn-signoff-card{display:grid;gap:6px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--panel2)}.turn-signoff-card>span{color:var(--muted);font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.05em}.turn-signoff-card>b{font-size:17px}.turn-signoff-card>small{color:var(--muted)}.turn-signoff-card>p{margin:3px 0;color:var(--txt)}.turn-signoff-card.complete{border-left:4px solid var(--green)}.turn-signoff-card.pending{border-left:4px solid var(--amber)}.occ-final-row{display:flex;align-items:center;gap:16px;margin-top:14px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--panel2)}.occ-final-row>div{display:grid;gap:3px}.occ-final-row span{color:var(--muted);font-size:12px}.occ-final-row button{margin-left:auto}.digital-signoff{display:flex!important;grid-column:1/-1;grid-template-columns:auto 1fr!important;align-items:center!important;margin-top:14px;padding:13px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}.digital-signoff input{width:auto!important}@media(max-width:760px){.turn-signoff-grid{grid-template-columns:1fr}.occ-final-row{align-items:stretch;flex-direction:column}.occ-final-row button{margin-left:0}}
