:root{--navy:#020617;--slate:#0f172a;--muted:#64748b;--line:#dce3eb;--sky:#0284c7;--canvas:#f5f7fa;--green:#059669;--amber:#d97706;--rose:#e11d48;--radius:14px;font-family:"Avenir Next",Avenir,"Segoe UI",sans-serif;color:var(--slate);background:var(--canvas)}*{box-sizing:border-box}body{margin:0;min-width:320px;background:var(--canvas)}button,input,select{font:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;z-index:30;display:flex;width:248px;flex-direction:column;background:var(--navy);color:#e2e8f0}.brand{display:flex;align-items:center;gap:12px;padding:14px;border-bottom:1px solid #1e293b}.brand-mark{display:grid;width:48px;height:48px;flex:0 0 48px;place-items:center;border-radius:12px;background:white;padding:4px}.brand-mark img{width:100%;height:100%;object-fit:contain}.brand strong,.brand small{display:block}.brand strong{font-size:16px}.brand small{margin-top:2px;color:#94a3b8;font-size:12px}.nav{display:grid;gap:4px;padding:16px 10px}.nav-item{display:flex;align-items:center;gap:12px;width:100%;height:42px;border:0;border-radius:9px;background:transparent;color:#cbd5e1;text-align:left;cursor:pointer;padding:0 12px}.nav-item>span{width:18px;text-align:center;color:#94a3b8}.nav-item i{margin-left:auto;min-width:21px;border-radius:999px;background:#e11d48;color:white;font-size:11px;font-style:normal;text-align:center;padding:2px 6px}.nav-item:hover{background:#172033;color:white}.nav-item.active{background:rgba(14,165,233,.16);color:#7dd3fc}.nav-item.active>span{color:#38bdf8}.sidebar-footer{margin-top:auto;border-top:1px solid #1e293b;padding:12px}.reset-link{width:100%;border:0;background:none;color:#64748b;font-size:12px;cursor:pointer;text-align:left;padding:5px 8px 12px}.reset-link:hover{color:#cbd5e1}.user{display:flex;align-items:center;gap:10px}.user>b{display:grid;width:32px;height:32px;place-items:center;border-radius:50%;background:#bae6fd;color:#075985;font-size:12px}.user span,.user small{display:block}.user span{font-size:14px}.user small{color:#64748b;font-size:11px;margin-top:2px}.workspace{width:calc(100% - 248px);margin-left:248px}.topbar{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:16px;row-gap:3px;min-height:68px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.96);padding:9px 28px;backdrop-filter:blur(8px)}.title-wrap{display:flex;align-items:center;gap:12px}.title-wrap h1{margin:0;font-size:19px}.title-wrap p,.header-readout p{margin:3px 0 0;color:var(--muted);font-size:12px}.icon-button{display:none;border:0;background:none;font-size:22px}.primary-button,.secondary-button{min-height:40px;border-radius:9px;padding:0 16px;font-weight:650;cursor:pointer}.primary-button{border:1px solid #0369a1;background:var(--sky);color:white;box-shadow:0 1px 2px rgba(15,23,42,.1)}.primary-button:hover{background:#0369a1}.secondary-button{border:1px solid var(--line);background:white;color:#334155}.content{max-width:1480px;margin:0 auto;padding:28px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric,.panel{border:1px solid var(--line);border-radius:var(--radius);background:white;box-shadow:0 1px 2px rgba(15,23,42,.04)}.metric{padding:20px}.metric-label{color:var(--muted);font-size:13px;font-weight:650}.metric-value{margin-top:12px;font-size:30px;font-weight:750;letter-spacing:-.03em}.metric-detail{margin-top:4px;color:var(--muted);font-size:13px}.main-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(320px,.75fr);gap:20px;margin-top:20px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #eef2f6;padding:18px 20px}.panel-heading h2{margin:0;font-size:16px}.panel-heading p{margin:4px 0 0;color:var(--muted);font-size:13px}.fleet-row{display:grid;grid-template-columns:minmax(190px,1.4fr) 80px 110px minmax(130px,1fr);align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid #eef2f6}.fleet-row:last-child{border-bottom:0}.aircraft-name strong,.aircraft-name small{display:block}.aircraft-name small{margin-top:3px;color:var(--muted);font-size:12px}.right{text-align:right}.badge{display:inline-flex;align-items:center;width:max-content;border:1px solid;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:700}.available{border-color:#a7f3d0;background:#ecfdf5;color:#047857}.flying{border-color:#fde68a;background:#fffbeb;color:#b45309}.maintenance{border-color:#fecdd3;background:#fff1f2;color:#be123c}.timeline{padding:18px 20px}.timeline-item{position:relative;display:grid;grid-template-columns:10px 1fr;gap:12px;padding-bottom:18px}.timeline-item:last-child{padding-bottom:0}.timeline-item:before{content:"";position:absolute;left:4px;top:11px;bottom:-2px;width:1px;background:#e2e8f0}.timeline-item:last-child:before{display:none}.dot{position:relative;z-index:1;width:10px;height:10px;margin-top:5px;border-radius:50%;background:var(--sky);box-shadow:0 0 0 4px white}.timeline-title{display:flex;justify-content:space-between;gap:10px;font-size:13px}.timeline-meta{margin-top:3px;color:var(--muted);font-size:12px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid var(--line)}.toolbar h2{margin:0;font-size:17px}.toolbar p{margin:4px 0 0;color:var(--muted);font-size:13px}.toolbar-actions{display:flex;align-items:center;gap:8px}.toolbar select,.toolbar button,.modal select,.modal input{height:40px;border:1px solid #cbd5e1;border-radius:8px;background:white;padding:0 11px;color:#1e293b}.calendar-scroll{overflow-x:auto}.calendar{min-width:980px}.calendar-head,.calendar-body{display:grid;grid-template-columns:64px repeat(7,minmax(0,1fr))}.calendar-head{border-bottom:1px solid var(--line);background:#f8fafc}.calendar-head>div{border-right:1px solid var(--line);padding:11px;text-align:center}.calendar-head>div:last-child{border-right:0}.calendar-head b,.calendar-head small{display:block}.calendar-head small{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.calendar-head b{width:30px;height:30px;margin:4px auto 0;border-radius:50%;line-height:30px;font-size:13px}.calendar-head .today{background:#e0f2fe}.calendar-head .today b{background:var(--sky);color:white}.time-axis,.day-column{position:relative;height:var(--day-height,1728px)}.time-axis{border-right:1px solid var(--line);background:#f8fafc}.time-label{position:absolute;right:7px;transform:translateY(-50%);color:#94a3b8;font-size:10px}.day-column{border-right:1px solid var(--line);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 17px,#edf1f5 17px,#edf1f5 18px)}.day-column.today{background-color:rgba(224,242,254,.25)}.day-column[data-book-slot]{cursor:pointer}.day-column[data-book-slot]:hover{background-color:rgba(224,242,254,.6)}.calendar-event{position:absolute;left:4px;right:4px;overflow:hidden;border:1px solid;border-radius:7px;padding:7px;text-align:left;cursor:pointer;box-shadow:0 1px 2px rgba(15,23,42,.08)}.event-blue{border-color:#7dd3fc;background:#e0f2fe;color:#0c4a6e}.event-green{border-color:#6ee7b7;background:#d1fae5;color:#064e3b}.event-purple{border-color:#c4b5fd;background:#ede9fe;color:#4c1d95}.event-amber{border-color:#fcd34d;background:#fef3c7;color:#78350f}.calendar-event b,.calendar-event small{display:block}.calendar-event b{font-size:11px}.calendar-event small{margin-top:2px;font-size:10px}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:13px 18px;border-bottom:1px solid #eef2f6;text-align:left;font-size:13px}.table th{background:#f8fafc;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.empty-state{padding:60px 24px;text-align:center;color:var(--muted)}.upload-grid{display:grid;grid-template-columns:minmax(300px,.75fr) minmax(0,1.4fr);gap:20px}.upload-box{display:grid;min-height:220px;place-items:center;border:2px dashed #cbd5e1;border-radius:14px;background:#f8fafc;padding:25px;text-align:center;cursor:pointer}.upload-box:hover{border-color:#38bdf8;background:#f0f9ff}.upload-box b,.upload-box small{display:block}.upload-box small{max-width:360px;margin-top:8px;color:var(--muted);line-height:1.5}.file-list{max-height:150px;overflow:auto;margin:14px 0}.file{display:flex;justify-content:space-between;gap:10px;padding:6px 0;color:var(--muted);font-size:12px}.modal{width:min(520px,calc(100% - 30px));border:0;border-radius:16px;padding:0;box-shadow:0 25px 70px rgba(15,23,42,.35)}.modal::backdrop{background:rgba(2,6,23,.6);backdrop-filter:blur(2px)}.modal form{display:grid;gap:16px;padding:24px}.modal-heading{display:flex;justify-content:space-between;gap:20px}.modal h2{margin:0}.modal p{margin:6px 0 0;color:var(--muted);font-size:13px;line-height:1.5}.close-button{align-self:start;border:0;background:none;color:#64748b;font-size:24px;cursor:pointer}.modal label{display:grid;gap:7px;color:#475569;font-size:13px;font-weight:650}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.info-note{border:1px solid #bae6fd;border-radius:9px;background:#f0f9ff;color:#075985;padding:11px;font-size:13px;line-height:1.45}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:4px}.toast{position:fixed;right:22px;bottom:22px;z-index:100;max-width:360px;transform:translateY(100px);border-radius:10px;background:#0f172a;color:white;padding:13px 17px;font-size:13px;opacity:0;transition:.25s;box-shadow:0 10px 30px rgba(15,23,42,.3)}.toast.show{transform:translateY(0);opacity:1}.notice{margin-bottom:18px;border:1px solid #bae6fd;border-radius:12px;background:#f0f9ff;color:#075985;padding:13px 16px;font-size:13px}.button-row{display:flex;gap:8px}.danger-button{border:1px solid #fecdd3;border-radius:8px;background:#fff1f2;color:#be123c;padding:8px 12px;cursor:pointer}.mobile-overlay{display:none}
@media(max-width:1050px){.metric-grid{grid-template-columns:repeat(2,1fr)}.main-grid,.upload-grid{grid-template-columns:1fr}}
/* Two breakpoints, not one. Below 1024px the sidebar is a drawer behind the ☰ button and the
   workspace has the whole window: an iPad held upright (768px) or a laptop zoomed to 150% is not
   wide enough for a 248px sidebar beside the desktop header and panels. Below 761px the phone
   rules follow: a compact header, stacked toolbars, two-column fleet rows. */
@media(max-width:1023px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0);box-shadow:12px 0 30px rgba(2,6,23,.3)}.sidebar.open:after{content:"";position:fixed;inset:0 0 0 248px;background:rgba(2,6,23,.35)}.workspace{width:100%;margin-left:0}.icon-button{display:block}}
@media(max-width:760px){.topbar{padding:9px 15px}.topbar .primary-button{padding:0 11px;font-size:12px}.content{padding:16px}.metric-grid{grid-template-columns:1fr 1fr;gap:10px}.metric{padding:15px}.metric-value{font-size:24px}.fleet-row{grid-template-columns:1fr 90px}.fleet-row>:nth-child(2){display:none}.field-row{grid-template-columns:1fr}.toolbar{align-items:flex-start;flex-direction:column}.toolbar-actions{width:100%;overflow:auto}}@media(max-width:480px){.metric-grid{grid-template-columns:1fr}.title-wrap p{display:none}.brand{padding-top:max(14px,env(safe-area-inset-top))}}
.topbar-actions{display:flex;align-items:center;gap:12px}.connection-status{display:inline-flex;align-items:center;gap:7px;color:#64748b;font-size:12px;font-weight:700}.connection-status:before{content:"";width:8px;height:8px;border-radius:50%;background:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.14)}.connection-status.connected{color:#047857}.connection-status.connected:before{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.16)}

@media(max-width:700px){.connection-status{display:none}}

.nav{overflow-y:auto}.sidebar-footer{flex:0 0 auto}

.settings-strip{display:flex;gap:1px;overflow:hidden;margin-bottom:16px;border:1px solid #cbd5e1;border-radius:12px;background:#cbd5e1}.settings-strip span{flex:1;min-width:150px;background:#fff;padding:12px 15px;color:#64748b;font-size:13px}.settings-strip b{color:#0f172a}.neutral{border-color:#cbd5e1;background:#f8fafc;color:#475569}.source-label{border-radius:999px;background:#f1f5f9;color:#475569;padding:6px 10px;font-size:12px;font-weight:700}.attention-panel,.requirements-panel,.billing-panel{margin-top:20px}.upload-panel{padding:20px}.full-width{width:100%}.empty-state.compact{padding:20px}.money{font-variant-numeric:tabular-nums;font-weight:700}.review-row{background:#fffbeb}.issue-list{display:grid}.issue-row{display:grid;grid-template-columns:5px minmax(0,1fr);gap:15px;border-bottom:1px solid #eef2f6;padding:17px 20px}.issue-row:last-child{border-bottom:0}.severity-marker{border-radius:99px;background:#94a3b8}.severity-marker.critical{background:#be123c}.severity-marker.high{background:#ea580c}.severity-marker.medium{background:#d97706}.issue-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.issue-row p{margin:7px 0;color:#475569;font-size:14px;line-height:1.5}.issue-row small{color:#94a3b8}.eyebrow{color:#7dd3fc;font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
@media(max-width:1000px){.settings-strip{flex-wrap:wrap}.settings-strip span{flex:1 1 40%}}
@media(max-width:620px){.settings-strip span{flex-basis:100%}.table{min-width:720px}.panel{overflow-x:auto}.issue-heading{align-items:flex-start}.issue-row p{font-size:13px}}

[hidden]{display:none!important}.auth-button{white-space:nowrap}.auth-modal{width:min(500px,calc(100% - 30px))}.primary-button:disabled,.secondary-button:disabled{cursor:wait;opacity:.6}.customer-metrics{margin-bottom:20px}.customers-panel{overflow:hidden}.table-wrap{overflow:auto}.search-input{width:min(320px,70vw);height:40px;border:1px solid #cbd5e1;border-radius:8px;background:white;padding:0 12px}.compact-button{min-height:32px;height:32px;padding:0 10px;font-size:12px}.access-panel{display:grid;max-width:600px;justify-items:start;gap:12px;margin:50px auto;border:1px solid var(--line);border-radius:16px;background:white;padding:32px;box-shadow:0 8px 30px rgba(15,23,42,.08)}.access-panel h2,.access-panel p{margin:0}.access-panel p{color:var(--muted);line-height:1.6}.stacked-label{display:grid;gap:7px;margin-bottom:14px;color:#475569;font-size:13px;font-weight:650}.stacked-label select{height:40px;border:1px solid #cbd5e1;border-radius:8px;background:white;padding:0 11px;color:#1e293b}.success-notice{border-color:#a7f3d0;background:#ecfdf5;color:#047857}.document-list{display:grid}.document-row{display:grid;grid-template-columns:minmax(0,1fr) 90px 110px;align-items:center;gap:14px;border-bottom:1px solid #eef2f6;padding:15px 20px}.document-row:last-child{border-bottom:0}.document-row b,.document-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.document-row small{margin-top:4px;color:var(--muted);font-size:12px}.issue-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.issue-footer small{color:#94a3b8}@media(max-width:760px){.auth-button{display:none}.document-row{grid-template-columns:minmax(0,1fr) 85px}.document-row>.badge{grid-column:1/-1}.customer-metrics{grid-template-columns:1fr 1fr}}@media(max-width:480px){.customer-metrics{grid-template-columns:1fr}.document-row{grid-template-columns:1fr}.issue-footer{align-items:flex-start;flex-direction:column}}
.link-button{border:0;background:none;color:#0369a1;padding:0;font-size:13px;font-weight:650;cursor:pointer}.link-button:hover{text-decoration:underline}.danger-link{color:#be123c}.row-actions{display:flex;align-items:center;gap:12px;white-space:nowrap}.modal .checkbox-label{display:flex;align-items:center;gap:9px;font-weight:500}.modal .checkbox-label input{width:16px;height:16px;margin:0;accent-color:#0369a1}#delete-maintenance{margin-right:auto}
.org-switcher{display:grid;gap:6px;margin:0 14px 14px;color:#94a3b8;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.org-switcher select{height:36px;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:rgba(255,255,255,.06);padding:0 9px;color:#e2e8f0;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none}.org-switcher select option{background:#0f172a;color:#e2e8f0}
.org-settings{display:flex;flex-wrap:wrap;align-items:flex-end;gap:16px;padding:0 20px 16px}.org-settings .stacked-label{margin-bottom:0}.org-settings .compact-input{width:200px;height:40px;border:1px solid #cbd5e1;border-radius:8px;padding:0 11px}.org-settings .checkbox-label{display:flex;align-items:center;gap:9px;color:#475569;font-size:13px;font-weight:650}.org-settings .checkbox-label input{width:16px;height:16px;margin:0;accent-color:#0369a1}.org-settings+.info-note{margin:0 20px 20px}
.wide-input{min-width:180px}.requirements-panel .compact-input{height:36px;border:1px solid #cbd5e1;border-radius:8px;padding:0 10px;font-size:13px}.requirements-panel .checkbox-label{display:flex;align-items:center;gap:8px;color:#475569;font-size:13px;font-weight:650;white-space:nowrap}.requirements-panel .checkbox-label input{width:16px;height:16px;margin:0;accent-color:#0369a1}
.side-slot{display:grid;gap:7px;border:1px solid #eef2f6;border-radius:10px;padding:10px;margin-top:10px}.side-slot.held{border-color:#a7f3d0;background:#f0fdf4}.side-label{color:#475569;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.side-slot.held .side-label{color:#047857}.side-slot .portal-actions{margin:0}
.camera-frame{position:relative;display:grid;place-items:center;max-width:100%}.camera-frame video,.camera-frame canvas{display:block;max-width:100%;max-height:60vh}.camera-frame #camera-guide,.camera-frame #camera-handles{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.camera-frame #camera-handles{pointer-events:auto;touch-action:none;cursor:grab}.camera-frame #camera-handles.dragging{cursor:grabbing}.camera-hint{margin:8px 0 0;color:#64748b;font-size:13px;text-align:center}
.expired-date{color:#be123c}
.maintenance-remaining{white-space:nowrap}
.expiring-date{color:#b45309}.expiry-notice{border-color:#fcd34d;background:#fffbeb;color:#92400e}.expiry-notice-urgent{border-color:#fecdd3;background:#fff1f2;color:#9f1239}.expiry-list{margin:8px 0 0;padding-left:20px}.expiry-list li{margin-top:3px;font-size:13px}.currency-panel{margin-top:20px}.credentials-grid small{display:block;margin-top:3px;font-size:12px}
.roster-table{min-width:1220px}.roster-table td,.roster-table th{vertical-align:top}.roster-table .metric-detail{white-space:normal}

.optional-hint{color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}

.modal form>*{min-width:0}.modal select{width:100%;max-width:100%}

.checkbox-group{display:grid;gap:7px;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc;margin:0;padding:14px}.checkbox-group legend{padding:0 6px;color:#475569;font-size:13px;font-weight:650}.checkbox-group>div{display:grid;gap:6px}.checkbox-group small{color:var(--muted);font-size:12px}

.cfr-cite{color:var(--muted);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}

.also-covers{border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc;margin:10px 0 0;padding:10px 12px}.also-covers summary{color:#334155;font-size:12px;font-weight:650;cursor:pointer}.also-covers .checkbox-label{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:13px;font-weight:500}.also-covers .checkbox-label input{width:16px;height:16px;margin:0;accent-color:#0369a1}


.field-note{color:var(--muted);font-size:12px;font-weight:500}
.span-badge{display:inline-block;margin-left:6px;border:1px solid #fde68a;border-radius:999px;background:#fffbeb;color:#b45309;padding:0 7px;font-size:11px;line-height:15px;font-weight:700;vertical-align:1px}.info-note.spans-days{border-color:#fde68a;background:#fffbeb;color:#92400e}

.overview-flights{margin-top:20px}.overview-flights .pending-row td{background:#fbfdff}

.report-crumbs{display:flex;align-items:center;gap:9px;margin-bottom:16px;color:var(--muted);font-size:13px}.report-crumbs b{color:var(--slate)}.report-crumbs .link-button{margin-top:0;font-size:13px;font-weight:650}
.report-header{margin-bottom:20px}.report-header .toolbar{border-bottom:0;padding-bottom:14px}
.report-range{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;border-top:1px solid #eef2f6;background:#f8fafc;padding:14px 20px}.report-range label{display:grid;gap:6px;color:#475569;font-size:12px;font-weight:700}.report-range select,.report-range input{height:38px;border:1px solid #cbd5e1;border-radius:8px;background:white;color:#1e293b;padding:0 10px;font:inherit}.report-range-label{margin-left:auto;padding-bottom:10px;color:#475569;font-size:12px;font-weight:700}
.report-basis{border-top:1px solid #eef2f6;color:var(--muted);font-size:12px;line-height:1.5;padding:12px 20px}
.report-groups{display:grid;gap:26px;padding:20px}.report-group h3{margin:0 0 4px;font-size:15px}.report-group>p{margin:0 0 12px;color:var(--muted);font-size:13px}
.report-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}.report-card{display:grid;align-content:start;gap:5px;border:1px solid var(--line);border-radius:11px;background:white;color:var(--slate);padding:13px 15px;font:inherit;text-align:left;cursor:pointer}.report-card:hover{border-color:var(--sky);background:#f0f9ff}.report-card b{font-size:13.5px}.report-card small{color:var(--muted);font-size:12px;line-height:1.45}
@media(max-width:760px){.report-range{align-items:stretch;flex-direction:column}.report-range-label{margin-left:0;padding-bottom:0}.report-cards{grid-template-columns:1fr}}
.report-scope{border-top:0}.report-range label.report-archived{display:flex;align-items:center;gap:7px;margin-top:0;padding-bottom:11px;color:#475569;font-size:12px;font-weight:700;cursor:pointer}.report-range label.report-archived input{width:15px;height:15px;margin:0;accent-color:#0284c7}
.field-picker{border-top:1px solid #eef2f6;background:#f8fafc}.field-picker>summary{display:flex;align-items:center;gap:10px;cursor:pointer;padding:12px 20px;color:#475569;font-size:12px;font-weight:700;list-style:none}.field-picker>summary::-webkit-details-marker{display:none}.field-picker>summary:before{content:"▸";color:#94a3b8}.field-picker[open]>summary:before{content:"▾"}.field-picker>summary:hover{background:#f1f5f9}.field-picker>summary span{color:var(--muted);font-weight:650}
.field-presets{display:flex;flex-wrap:wrap;align-items:center;gap:8px;border-top:1px solid #eef2f6;padding:12px 20px}.field-presets>span{color:var(--muted);font-size:12px;font-weight:700}
.field-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;border-top:1px solid #eef2f6;padding:16px 20px}.field-group{display:grid;align-content:start;gap:5px}.field-group>b{margin-bottom:3px;color:#0f172a;font-size:12px}.field-check{display:flex;align-items:flex-start;gap:7px;color:#475569;font-size:12.5px;line-height:1.35;cursor:pointer}.field-check input{margin:1px 0 0;accent-color:#0284c7}.field-check:hover{color:#0369a1}
@media(max-width:760px){.field-groups{grid-template-columns:1fr 1fr}}

/* City, state and ZIP read as one line; a two-column grid wraps the ZIP onto its own row. */
@media(min-width:761px){.field-row.field-row-3{grid-template-columns:2fr 1fr 1fr}}

/* Uncaught-error panel and the staging-override banner (item 10 of the launch cleanup). */
.error-panel{position:fixed;right:16px;bottom:16px;z-index:60;width:min(520px,calc(100vw - 32px));border:1px solid #fca5a5;border-radius:12px;background:#fff1f2;color:#7f1d1d;padding:14px 16px;box-shadow:0 12px 30px rgba(15,23,42,.18)}
.error-panel-heading{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}
.error-panel-heading span{font-size:13px;color:#991b1b}
.error-panel pre{margin:0 0 10px;max-height:180px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:12px;background:#fff;border:1px solid #fecaca;border-radius:8px;padding:8px;color:#1f2937}
.error-panel-actions{display:flex;gap:10px;align-items:center}
.config-banner{position:sticky;top:0;z-index:70;background:#fef3c7;color:#78350f;border-bottom:1px solid #fcd34d;padding:8px 16px;font-size:13px;text-align:center}

.privacy-notice{margin:6px 0 10px;font-size:13px;color:#475569}
.privacy-notice a{color:#1d4ed8}
.splash-legal{margin:14px 0 0;font-size:13px;color:#64748b;text-align:center}
.splash-legal a{color:#475569}

/* An aircraft with its own colour (Fleet page): the class says custom, the colour rides in --event-color. */
.event-custom{border-color:var(--event-color,#7dd3fc);background:color-mix(in srgb,var(--event-color,#7dd3fc) 16%,white);color:color-mix(in srgb,var(--event-color,#0c4a6e) 62%,black)}
.color-swatch{display:inline-block;width:14px;height:14px;border-radius:4px;border:1px solid rgba(15,23,42,.2);vertical-align:-2px;margin-right:6px}
.import-preview{max-height:320px;overflow:auto;margin:12px 0}
.import-preview table{font-size:12px}
.import-preview .bad{background:#fef2f2}
.import-summary{display:flex;flex-wrap:wrap;gap:10px 18px;font-size:13px;margin:6px 0 10px}
.import-ignored{font-size:13px;color:var(--muted);margin:0 0 10px;overflow-wrap:anywhere}.import-ignored b{color:var(--slate)}
.import-modal{width:min(1000px,calc(100% - 30px))}

/* The header's clock and weather lines. The topbar was a fixed 68px; it now grows with what
   is under the title, and publishes its measured height as --topbar-height so anything that
   sticks below it (help.css's matrix header) still lands in the right place. */
.title-wrap{min-width:0}.title-lines{min-width:0}
/* Row two of the header grid: on a wide screen it sits under the title, on a phone it spans
   the whole width rather than the sliver left beside the buttons. */
.header-readout{grid-column:1;display:grid;gap:2px;min-width:0}
.page-clock{display:flex;align-items:baseline;gap:7px;white-space:nowrap;font-variant-numeric:tabular-nums}
.page-clock b,.page-clock span{font-weight:650;color:#475569}
#clock-utc{font-weight:600;color:#64748b}
#clock-utc:before{content:"·";margin-right:7px;color:#cbd5e1}
/* Flight category, by the colours every flight-planning chart uses: green VFR, blue MVFR,
   red IFR, magenta LIFR. The dot and the category word read the same variable. One line per
   airport, up to three, stacked in the order an administrator named them. The lines share one
   four-column grid (each line is display:contents), so every report starts at the same place
   whatever the width of the identifier and category before it. */
.page-metars{display:grid;grid-template-columns:auto auto auto minmax(0,1fr);align-items:center;column-gap:7px;row-gap:3px;min-width:0;margin-top:3px;white-space:nowrap}
.page-metar{display:contents;--metar-color:#94a3b8;--metar-halo:rgba(148,163,184,.18)}
.metar-dot{width:9px;height:9px;border-radius:50%;background:var(--metar-color);box-shadow:0 0 0 3px var(--metar-halo)}
.metar-station,.metar-category{font-size:11px;font-weight:800;letter-spacing:.04em}
.metar-station{color:#334155}
.metar-category{color:var(--metar-color)}
.metar-detail{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.metar-vfr{--metar-color:#15803d;--metar-halo:rgba(21,128,61,.18)}
.metar-mvfr{--metar-color:#1d4ed8;--metar-halo:rgba(29,78,216,.18)}
.metar-ifr{--metar-color:#be123c;--metar-halo:rgba(190,18,60,.18)}
.metar-lifr{--metar-color:#a21caf;--metar-halo:rgba(162,28,175,.18)}
.metar-stale .metar-detail{color:#b45309;font-weight:650}
@media(max-width:600px){.header-readout{grid-column:1/-1;margin-top:2px}#page-clock,#page-metar{font-size:11px}#clock-utc:before{margin-right:5px}.page-clock{gap:5px}}

/* A reservation's state on top of its aircraft colour (eventState in app.js): out flying is
   ringed in amber with a tag, checked in is greyed out. The doubled class outranks the
   palette and the custom colour, so the state always shows. */
.calendar-event.event-flying,.timeline-event.event-flying,.month-chip.event-flying{border-color:#d97706;box-shadow:0 0 0 2px rgba(217,119,6,.35),0 1px 2px rgba(15,23,42,.08)}
.calendar-event.event-done,.timeline-event.event-done,.month-chip.event-done{border-color:#cbd5e1;background:#f1f5f9;color:#64748b;box-shadow:none}
.calendar-event.event-done:hover,.timeline-event.event-done:hover{color:#334155}
.event-state{display:inline-block;margin-left:5px;border-radius:999px;padding:0 5px;font-size:9px;font-style:normal;font-weight:700;letter-spacing:.04em;line-height:14px;text-transform:uppercase;vertical-align:1px}
.event-flying .event-state{background:#d97706;color:white}
.event-done .event-state{background:#cbd5e1;color:#334155}
.timeline-event .event-state{font-size:10px;line-height:16px;vertical-align:2px}
.schedule-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin:6px 0 0;color:var(--muted);font-size:12px}
.schedule-legend span{display:inline-flex;align-items:center}
.legend-swatch{display:inline-block;width:12px;height:12px;margin-right:5px;border:1px solid #7dd3fc;border-radius:3px;background:#e0f2fe}
.legend-swatch.event-flying{border-color:#d97706;box-shadow:0 0 0 2px rgba(217,119,6,.35)}
.legend-swatch.event-done{border-color:#cbd5e1;background:#f1f5f9}
@media(max-width:760px){.schedule-legend{display:none}}

/* The current time across the week: a thin blue line over every column, with a dot where it
   leaves the time axis. Day view's vertical .now-line (app/index.html) is the same blue. */
.calendar-body{position:relative}
.now-line-h{position:absolute;left:0;right:0;z-index:2;height:0;border-top:2px solid #0284c7;pointer-events:none}
.now-line-h::before{content:"";position:absolute;left:59px;top:-5px;width:8px;height:8px;border-radius:50%;background:#0284c7}

/* Week and Month view freeze their header (freezeScheduleHead in app.js): the toolbar sticks
   under the topbar and the row of day names under the toolbar, while the calendar scrolls
   beneath. A sticky element sticks to its nearest scroll container, so the panel must not be
   one: a phone's .panel{overflow-x:auto} is undone here. The toolbar now paints its own white,
   so the panel is clipped to its rounded outline instead: clip-path only paints, so unlike any
   overflow value it has no say in what the toolbar sticks to, and the stuck toolbar keeps
   square corners that nothing scrolling beneath can show through. On a phone, or a window too
   short to spare the room, only the day names stay. */
.panel.schedule-freeze{overflow:visible;clip-path:inset(0 round var(--radius))}
.schedule-freeze>.toolbar{position:sticky;top:var(--topbar-height,68px);z-index:12;background:white}
.schedule-freeze .calendar-frozen,.schedule-freeze .month-head{position:sticky;top:calc(var(--topbar-height,68px) + var(--schedule-toolbar-height,0px));z-index:11}
.calendar-frozen{overflow-x:auto;scrollbar-width:none}
.calendar-frozen::-webkit-scrollbar{display:none}
@media(max-width:760px),(max-height:620px){.schedule-freeze>.toolbar{position:static}.schedule-freeze .calendar-frozen,.schedule-freeze .month-head{top:var(--topbar-height,68px)}}

/* A checked-in flight's ADS-B track: one series, so one colour; hairline axes; the line breaks where coverage did. */
.flight-track{display:grid;gap:10px;border-top:1px solid #eef2f6;padding-top:14px}.track-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px}.track-facts div{display:grid;gap:2px;border:1px solid #e2e8f0;border-radius:8px;background:#fff;padding:8px 10px}.track-facts span{color:#64748b;font-size:11px;font-weight:700;text-transform:uppercase}.track-facts b{font-size:14px}.track-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.track-heading h3{margin:0;font-size:15px}.track-note{margin:0;color:#475569;font-size:13px;line-height:1.45}
.track-map,.track-profile{display:block;width:100%;height:auto;border:1px solid #e2e8f0;border-radius:10px;background:#fbfdff}.track-profile{touch-action:pan-y}.track-profile:focus-visible{outline:2px solid var(--sky);outline-offset:2px}
.track-line{fill:none;stroke:var(--sky);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.track-area{fill:var(--sky);fill-opacity:.1;stroke:none}.track-dot{fill:var(--sky)}.track-marker,.track-cursor{fill:var(--sky);stroke:#fff;stroke-width:2}
.track-label{fill:#334155;font-size:12px;font-weight:700}.track-axis{fill:#64748b;font-size:11px;font-variant-numeric:tabular-nums}.track-grid{stroke:#e2e8f0;stroke-width:1}.track-scale{fill:none;stroke:#64748b;stroke-width:1}.track-crosshair{stroke:#94a3b8;stroke-width:1}
/* The live map (Leaflet) that replaces the drawing: same shape, a casing under the line so it reads over imagery and chart. */
.track-map-live{aspect-ratio:472/250;height:auto;min-height:220px;overflow:hidden;background:#dbe4ec;font:inherit}.track-map-live:focus-visible{outline:2px solid var(--sky);outline-offset:2px}
.track-map-live .track-line-casing{fill:none;stroke:#fff;stroke-opacity:.85;stroke-width:5;stroke-linejoin:round;stroke-linecap:round}.track-map-live .track-line-live{fill:none;stroke:var(--sky);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}
.track-map-live .track-dot-live{fill:var(--sky);fill-opacity:1;stroke:#fff;stroke-width:1}.track-map-live .track-marker-live,.track-map-live .track-cursor-live{fill:var(--sky);fill-opacity:1;stroke:#fff;stroke-width:2}.track-map-live .track-cursor-live{fill:#f59e0b}
.track-label-live{border:0;border-radius:5px;background:rgba(255,255,255,.92);box-shadow:0 1px 3px rgba(15,23,42,.25);color:#0f172a;font-size:12px;font-weight:700;padding:1px 5px}.track-label-live:before{display:none}
.track-map-buttons{display:grid;background:#fff}.track-map-buttons button{display:block;width:100%;min-height:28px;border:0;border-bottom:1px solid #e2e8f0;background:#fff;color:#334155;font-size:12px;font-weight:650;text-align:left;padding:4px 9px;cursor:pointer}.track-map-buttons button:last-child{border-bottom:0}.track-map-buttons button:hover{background:#f0f9ff}.track-map-buttons button[aria-pressed="true"]{background:#e0f2fe;color:#075985}.track-map-buttons button:focus-visible{outline:2px solid var(--sky);outline-offset:-2px}.track-map-fit{border-bottom:2px solid #e2e8f0!important}
.track-map-scale{border:1.5px solid #334155;border-top:0;background:rgba(255,255,255,.8);color:#0f172a;font-size:11px;font-variant-numeric:tabular-nums;line-height:1.3;padding:0 4px;white-space:nowrap}
.track-map-live .leaflet-control-attribution{font-size:10px;line-height:1.35}
.track-map-note{position:absolute;top:10px;left:50%;z-index:1000;max-width:calc(100% - 120px);transform:translateX(-50%);margin:0;border-radius:7px;background:rgba(15,23,42,.82);color:#fff;font-size:12px;font-weight:600;line-height:1.35;text-align:center;padding:5px 10px;pointer-events:none}.track-map-note[hidden]{display:none}.track-map-unavailable{top:auto;bottom:30px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa}
.track-profile-wrap{position:relative}.track-tip{position:absolute;top:8px;pointer-events:none;border:1px solid #e2e8f0;border-radius:8px;background:#fff;box-shadow:0 4px 14px rgba(15,23,42,.12);padding:5px 9px;font-size:12px;white-space:nowrap}.track-tip b{display:block;color:var(--slate);font-size:13px}.track-tip span{color:var(--muted)}
.track-legs-view summary{color:#334155;font-size:12px;font-weight:650;cursor:pointer}.track-legs{width:100%;margin-top:6px;border-collapse:collapse;font-size:12px}.track-legs th,.track-legs td{border-bottom:1px solid #eef2f6;padding:5px 4px;text-align:left}.track-legs th{color:#64748b;font-weight:700}.track-legs td{font-variant-numeric:tabular-nums}.track-credit{margin:0;color:#94a3b8;font-size:11px}
.plan-banner{display:flex;align-items:center;flex-wrap:wrap;gap:10px;max-width:1480px;margin:16px auto 0;border:1px solid #bae6fd;border-radius:12px;background:#f0f9ff;color:#075985;padding:10px 14px;font-size:13px;line-height:1.45}.plan-banner span{flex:1;min-width:220px}.plan-banner.read-only{border-color:#fcd34d;background:#fffbeb;color:#92400e}.plan-banner[hidden]{display:none}
.signup-panel{text-align:left}.signup-form{display:grid;gap:12px}.signup-form label{display:grid;gap:6px;color:#475569;font-size:13px;font-weight:650}.signup-form input,.signup-form select{height:40px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;padding:0 10px;color:#1e293b;font:inherit}
.plan-choices{display:grid;gap:8px}.plan-choice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;border:1px solid #e2e8f0;border-radius:10px;padding:10px 12px;cursor:pointer}.plan-choice:has(input:checked){border-color:var(--sky);background:#f0f9ff}.plan-choice:has(input:disabled){opacity:.55;cursor:not-allowed}.plan-choice b{display:block;font-size:14px}.plan-choice small{display:block;margin-top:2px;color:#64748b;font-size:12px;line-height:1.45}
@media(max-width:760px){.plan-banner{margin:12px 16px 0}}
.squawk-flag{max-width:10rem;white-space:normal;overflow-wrap:anywhere}.squawk-link{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;margin-top:8px}.squawk-link label{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;color:#475569;font-size:13px}.squawk-link select{height:32px;max-width:min(22rem,100%);border:1px solid #cbd5e1;border-radius:8px;background:white;padding:0 8px;color:#1e293b;font-size:12px}@media(max-width:480px){.squawk-link,.squawk-link label{justify-content:flex-start}}
.form-error{border:1px solid #fecaca;border-radius:9px;background:#fff1f2;color:#be123c;padding:11px;font-size:13px;line-height:1.45}.modal form>*{scroll-margin:16px 0}.modal [aria-invalid="true"]{border-color:#e11d48;box-shadow:0 0 0 3px rgba(225,29,72,.15)}.toast{display:flex;align-items:flex-start;gap:12px}.toast-text{flex:1;min-width:0}.toast-dismiss{flex:0 0 auto;margin:-3px -6px 0 0;border:0;background:none;color:#cbd5e1;font-size:20px;line-height:1;padding:0 2px;cursor:pointer}.toast-dismiss::before{content:"×"}.toast-dismiss:hover,.toast-dismiss:focus-visible{color:white}.toast-error{background:#9f1239}
.code-entry{display:grid;gap:8px;margin-top:12px;border-top:1px solid #bae6fd;padding-top:12px}.code-entry label{display:grid;gap:6px;font-size:13px;font-weight:650}.code-entry input{height:44px;border:1px solid #cbd5e1;border-radius:9px;padding:0 12px;color:#1e293b;font:inherit;font-size:18px;letter-spacing:.2em}
