
:root{--nav-bg:#10233b;--nav-accent:#40d4b0}
body{padding-left:246px!important;background:#f3f6fa!important;min-height:100vh}
#eft-shell-nav{position:fixed;z-index:800;left:0;top:0;bottom:0;width:246px;background:var(--nav-bg);color:#e8f0f7;display:flex;flex-direction:column;box-sizing:border-box;box-shadow:3px 0 16px #17263d22}
#eft-shell-nav .brand{padding:23px 19px 17px;border-bottom:1px solid #ffffff1c;font-weight:800;font-size:20px;letter-spacing:.03em}
#eft-shell-nav .brand small{display:block;color:#a6b9ca;font-weight:400;font-size:11px;letter-spacing:0;margin-top:6px}
#eft-shell-nav .navlinks{overflow-y:auto;padding:12px 9px;flex:1}
#eft-shell-nav button{display:block;width:100%;text-align:left;color:#c8d6e3;background:transparent;border:0;border-radius:9px;padding:12px 13px;margin:3px 0;font-size:13px;font-weight:600;cursor:pointer}
#eft-shell-nav button:hover{background:#ffffff13;color:white}
#eft-shell-nav button.active{background:#20435c;color:#fff;box-shadow:inset 3px 0 var(--nav-accent)}
#eft-shell-nav .navfooter{padding:16px;font-size:11px;color:#92a9bd;border-top:1px solid #ffffff1a}
#eft-page-banner{padding:18px 25px;background:#fff;border-bottom:1px solid #dce4ed;display:flex;align-items:center;justify-content:space-between;gap:15px}
#eft-page-banner h2{margin:0!important;font-size:23px;color:#18334e}#eft-page-banner p{margin:5px 0 0;color:#607387;font-size:12px}
#eft-page-banner .version{font-size:11px;color:#617589;border:1px solid #dbe4ed;border-radius:20px;padding:6px 11px;white-space:nowrap}
#eft-page-tabs{display:flex;flex-wrap:wrap;gap:7px;padding:12px 25px 0;background:#f3f6fa}
#eft-page-tabs:empty{display:none}
#eft-page-tabs button{background:#fff;border:1px solid #d6e0e9;border-radius:8px;padding:9px 14px;color:#4b6176;font-size:12px;cursor:pointer}
#eft-page-tabs button.active{background:#143b5b;color:#fff;border-color:#143b5b}
body>header{background:#fff!important;color:#1a3550!important;box-shadow:none!important;border-bottom:1px solid #dbe4ed}
body>main{max-width:1600px!important;padding:20px 24px!important;margin:0 auto!important}
body.eft-nav-ready main>[data-eft-page],body.eft-nav-ready main>section[data-eft-page],body.eft-nav-ready main>div[data-eft-page],body.eft-nav-ready main>p[data-eft-page],body.eft-nav-ready main>footer[data-eft-page]{display:none!important}
body.eft-nav-ready main>[data-eft-page].eft-page-visible,body.eft-nav-ready main>section[data-eft-page].eft-page-visible,body.eft-nav-ready main>div[data-eft-page].eft-page-visible,body.eft-nav-ready main>p[data-eft-page].eft-page-visible{display:block!important}
body.eft-nav-ready main>.planner-section[data-eft-page].eft-page-visible{display:block!important}
body.eft-nav-ready main>[data-eft-page="dashboard"].eft-page-visible{display:grid!important}
#eft-dashboard{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:17px}
.eft-dash-card{border:1px solid #dce5ed;border-radius:14px;background:#fff;padding:23px;min-height:140px;box-shadow:0 4px 12px #152c4510}
.eft-dash-card h3{margin:0 0 12px;font-size:17px;color:#173b5b}.eft-dash-card p{color:#60758a;font-size:13px;line-height:1.5}.eft-dash-card button{border:0;background:#173b5b;color:white;padding:9px 14px;border-radius:7px;cursor:pointer}
.eft-subtab-hide{display:none!important}
body.eft-nav-ready main>section.panel{max-width:none}
@media(max-width:760px){body{padding-left:0!important;padding-bottom:66px}#eft-shell-nav{top:auto;right:0;width:100%;height:62px}#eft-shell-nav .brand,#eft-shell-nav .navfooter{display:none}#eft-shell-nav .navlinks{display:flex;overflow-x:auto;padding:6px;gap:4px}#eft-shell-nav button{white-space:nowrap;width:auto;padding:10px;margin:0;font-size:11px}#eft-page-banner{padding:14px}#eft-page-tabs{padding:9px 12px}body>main{padding:12px!important}}
@media print{body{padding-left:0!important}#eft-shell-nav,#eft-page-banner,#eft-page-tabs{display:none!important}}

#eft-registration-course{margin-top:18px;padding:16px;border:1px solid #cbd5e1;border-radius:10px;background:#f8fafc}#eft-registration-course h3{margin-top:0}.reg-create{display:flex;align-items:center;gap:8px}.reg-create input{width:auto}#reg-result{color:#166534;font-weight:600}#reg-documents{padding:12px;border:1px solid #cbd5e1;border-radius:10px;margin-bottom:16px}.reg-new[hidden]{display:none!important}

/* v4.2.8: creation is exclusively through New Student Registration.
   Keep the legacy DOM control available for the registration workflow's
   internal click handler, but never show it in the Student Database. */
#toms-student-db #sdb-new { display: none !important; }

/* v4.2.10: read-only summary in Students > Personal Details only. */
#eft-student-document-summary{border:1px solid #d5e2eb;background:#fff;border-radius:10px;padding:17px;margin:16px 0}
#eft-student-document-summary h3{margin:0 0 13px}
.eft-student-doc-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.eft-student-doc-summary-grid>div{padding:12px;background:#f4f7fa;border-radius:8px}
.eft-student-doc-summary-grid strong,.eft-student-doc-summary-grid span{display:block;font-size:13px}
.eft-student-doc-summary-grid span{margin-top:6px;color:#36566e}
body.eft-registration-mode #eft-student-document-summary{display:none!important}

/* v4.2.12: student list and two-tab layout */
#eft-student-list-section{margin:12px 0 22px;padding:16px;border:1px solid #d7e0eb;border-radius:12px;background:#fff}
#eft-student-list-section h3{margin:0 0 12px}
.eft-student-search-label{display:block;max-width:450px;margin-bottom:12px}
#eft-student-search{display:block;width:100%;margin-top:5px}
.eft-student-table-scroll{overflow-x:auto;max-height:340px;overflow-y:auto}
#eft-student-list-section table{width:100%;border-collapse:collapse}
#eft-student-list-section th,#eft-student-list-section td{padding:10px 12px;text-align:left;border-bottom:1px solid #e2e8f0}
#eft-student-list-section tbody tr{cursor:pointer}
#eft-student-list-section tbody tr:hover{background:#edf5ff}
#eft-student-list-section tbody tr.eft-student-selected{background:#dbeafe;box-shadow:inset 4px 0 #2563eb}
#eft-student-records-view{padding:14px 0}
body:not(.eft-registration-mode) #toms-student-db #sdb-list,body:not(.eft-registration-mode) #toms-student-db #sdb-id{display:none}
body:not(.eft-registration-mode) #toms-student-db .student-grid:has(>label>#sdb-id)>label:has(#sdb-id){display:none}
body:not(.eft-registration-mode) #toms-student-db #eft-reg-intro{display:none}
body.eft-registration-mode #eft-student-list-section,body.eft-registration-mode #eft-student-records-view{display:none!important}
body:not(.eft-registration-mode) #toms-student-db > h3:has(+div #sdb-list){display:none}
body:not(.eft-registration-mode) #toms-student-db div:has(>table>tbody#sdb-list){display:none}

/* v4.2.15: tabs directly below student table, never in the page header. */
#toms-student-db > #eft-page-tabs{display:flex;gap:8px;padding:0 0 18px;margin:0 0 18px;border-bottom:1px solid #d7e0eb}
body.eft-registration-mode #toms-student-db > #eft-page-tabs{display:none!important}

/* Student Training Records: six existing progress indicators, scoped to Students. */
#eft-progress-six{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:16px 0}
#eft-progress-six .v35-card{border:1px solid #d8e2ec;border-radius:11px;background:#f8fbfd;padding:15px 8px;text-align:center}
#eft-progress-six .v35-ring{height:116px;width:116px;margin:0 auto 9px;border-radius:50%;background:conic-gradient(#167b9a var(--pct),#dce5ec 0);display:grid;place-items:center;position:relative}
#eft-progress-six .v35-ring:before{content:"";position:absolute;inset:12px;background:#f8fbfd;border-radius:50%}
#eft-progress-six .v35-ring strong{position:relative;font-size:15px;color:#143b57;white-space:pre-line}
#eft-progress-six .v35-card>strong{font-size:13px}
/* v4.3.2: course/overall training record switch within the selected student's tab */
.eft-record-view-controls{display:flex;flex-wrap:wrap;gap:14px;margin:12px 0 18px}
.eft-record-view-controls label{display:flex;flex-direction:column;gap:5px;min-width:220px}
#eft-progress-six .v35-grid{margin-top:12px}
#eft-progress-breakdown{margin-top:20px}

/* v4.3.3: progress cards are nested in .v35-grid after the record view switch. */
#eft-progress-six > .v35-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;width:100%;}

/* v4.4.4: Keep planning statistics on a single horizontal row. */
#stats.stats{display:flex;flex-wrap:nowrap;gap:10px;overflow-x:auto;max-width:100%;padding-bottom:6px;align-items:stretch;}
#stats.stats .stat{flex:1 0 125px;min-width:125px;padding:10px 12px;}
#stats.stats .stat strong{font-size:21px;margin-bottom:4px;}
#stats.stats .stat span{font-size:12px;}

/* v4.5.6: keep date picker accessible in the flight planning controls. */
.eft-planning-start-date{display:inline-flex!important;align-items:center;gap:8px;white-space:nowrap;}
.eft-planning-start-date input{min-width:145px;}
main>[data-eft-planning-summary].eft-page-visible{display:block!important;}

/* v4.5.7: Both populated reports are nested in Flight Planning. */
.planner-section > section[data-eft-planning-summary]{display:block!important;margin-top:18px;}
.planner-section > section[data-eft-planning-summary] .scroll{overflow-x:auto;}

/* v4.5.31: Planning Settings now live within Flight Planning; respect user-mode hiding. */
body.user-mode #settings input:disabled{opacity:.75;cursor:not-allowed}
#settings #aircraft .scroll{overflow-x:auto;max-width:100%}
#settings #aircraft table{white-space:nowrap}

#settings .availability-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0 18px}
#settings .availability-actions button{background:#eff4f8;border:1px solid #a9bccd;color:#173b57;border-radius:8px;padding:9px 12px;cursor:pointer}
#settings .availability-actions button:disabled{opacity:.5;cursor:not-allowed}

/* v4.5.65: explicit availability editor unlock */
#settings .availability-unlock{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:12px 0;padding:12px 0}
#settings .availability-unlock button{padding:10px 15px}
#settings .availability-unlock span{font-size:13px;color:#34536c}
#settings #availability input[type="checkbox"]:not(:disabled),#settings #aircraft input[type="checkbox"]:not(:disabled){cursor:pointer;accent-color:#087e68}

/* v4.5.110: EFT branding and navigation groups */
:root{--nav-accent:#ff9600}
#eft-shell-nav .navlinks button{color:#ffab30}
#eft-shell-nav .navlinks button:hover{color:#ffd58e}
#eft-shell-nav .navlinks button.active{color:#fff;box-shadow:inset 3px 0 #ff9600}
#eft-shell-nav .navlinks button.eft-nav-section-start{margin-top:23px;padding-top:17px;border-top:1px solid #ffffff30;border-radius:0 0 9px 9px}
#eft-shell-nav .brand small{font-size:10px;white-space:nowrap;letter-spacing:-.15px}
body>header #modulecaption{white-space:nowrap}
@media(max-width:760px){#eft-shell-nav .navlinks button.eft-nav-section-start{margin-top:0;padding-top:10px;border-top:0;border-left:1px solid #ffffff40}}

/* Operational dashboard v4.5.148 */
#eft-dashboard{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-content:start}
#eft-dashboard .eft-dash-summary{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
#eft-dashboard .eft-dash-summary>div{background:#fff;border:1px solid #dce5ed;border-radius:12px;padding:14px 18px;display:flex;justify-content:space-between;align-items:center;gap:12px}
#eft-dashboard .eft-dash-summary span{color:#60758a;font-size:13px}#eft-dashboard .eft-dash-summary strong{font-size:26px;color:#173b5b}
#eft-dashboard .eft-dash-section{background:#fff;border:1px solid #dce5ed;border-radius:13px;padding:18px;min-width:0;box-shadow:0 4px 12px #152c4510}
#eft-dashboard .eft-dash-section h3{margin:0 0 12px;font-size:17px;color:#173b5b}
#eft-dashboard .eft-dash-scroll{overflow:auto}#eft-dashboard table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}
#eft-dashboard th,#eft-dashboard td{text-align:left;padding:9px 8px;border-bottom:1px solid #e9eef3}
#eft-dashboard th{color:#60758a;font-weight:600}#eft-dashboard tr[data-course]{cursor:pointer}#eft-dashboard tr[data-course]:hover{background:#f0f6fc}
#eft-dashboard .eft-dash-note{color:#60758a;font-size:12px;margin:-4px 0 12px}
#eft-dashboard .eft-dash-status{font-weight:700;padding:3px 8px;border-radius:6px;display:inline-block}
#eft-dashboard .eft-dash-status.red{background:#fee2e2;color:#991b1b}#eft-dashboard .eft-dash-status.yellow{background:#fef3c7;color:#92400e}
@media(max-width:1100px){#eft-dashboard{grid-template-columns:1fr}}@media(max-width:650px){#eft-dashboard .eft-dash-summary{grid-template-columns:1fr}}

/* v4.5.149: distinct KPI strip above operational sections */
#eft-dashboard .eft-dash-summary{margin-bottom:15px;padding:15px 16px;background:#eaf1f7;border:1px solid #d3e1ec;border-radius:15px;gap:15px}
#eft-dashboard .eft-dash-summary>div{background:#fff;border:1px solid #cbdbe8;border-top:3px solid #ef972a;border-radius:10px;padding:16px 18px;box-shadow:0 4px 12px #173b5b12}
#eft-dashboard .eft-dash-summary strong{font-size:29px}

/* v4.5.150: give each operational dashboard area the same visual separation as the KPI strip */
#eft-dashboard .eft-dash-section{background:#eaf1f7;border:1px solid #d3e1ec;border-radius:15px;padding:15px 16px 16px;box-shadow:none;min-width:0}
#eft-dashboard .eft-dash-section h3{background:#fff;border:1px solid #cbdbe8;border-top:3px solid #ef972a;border-radius:10px 10px 0 0;margin:0;padding:13px 15px;color:#173b5b}
#eft-dashboard .eft-dash-section .eft-dash-scroll{background:#fff;border:1px solid #cbdbe8;border-top:0;border-radius:0 0 10px 10px;padding:6px 12px 12px;box-shadow:0 4px 12px #173b5b12}
#eft-dashboard .eft-dash-section .eft-dash-note{background:#fff;border-left:1px solid #cbdbe8;border-right:1px solid #cbdbe8;margin:0;padding:9px 15px 3px}

/* v4.5.156: color-coded dashboard training types */
#eft-dashboard .eft-dash-training-type{display:inline-block;min-width:60px;text-align:center;padding:4px 9px;border-radius:6px;font-weight:700}
#eft-dashboard .eft-dash-training-type.theory{background:#dcfce7;color:#166534}
#eft-dashboard .eft-dash-training-type.flight{background:#dbeafe;color:#1e40af}

/* Four summary metrics in one row on desktop, wrapping on narrow screens. */
.eft-dash-summary{grid-template-columns:repeat(4,minmax(0,1fr))!important}
@media(max-width:850px){.eft-dash-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:480px){.eft-dash-summary{grid-template-columns:1fr!important}}


/* Dashboard refinement: simplified branding and instructor KPI layout. */
body>header #modulecaption{display:none!important}
#eft-page-banner p:empty{display:none}
#eft-dashboard #toms-instructor-dashboard{
  grid-column:1/-1;min-width:0;background:#eaf1f7;border:1px solid #d3e1ec;
  border-radius:15px;padding:16px;
}
#toms-instructor-dashboard[hidden]{display:none!important}
#toms-instructor-dashboard .eft-i293-head{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;
  background:#fff;border:1px solid #cbdbe8;border-top:3px solid #ef972a;
  border-radius:10px;padding:13px 16px;margin-bottom:13px;
}
#toms-instructor-dashboard .eft-i293-head h3{font-size:17px;line-height:1.35;margin:0;color:#173b5b}
#toms-instructor-dashboard .eft-i293-head button{
  background:#fff;border:1px solid #b8cddd;border-radius:7px;color:#173b5b;
  font-size:12px;font-weight:600;padding:7px 12px;cursor:pointer;
}
#toms-instructor-dashboard .eft-i293-head button:hover{background:#f1f6fa}
#toms-instructor-dashboard .eft-i293-kpis{
  display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:12px;
}
#toms-instructor-dashboard .eft-i293-kpi{
  min-width:0;min-height:96px;display:flex;flex-direction:column;justify-content:space-between;gap:10px;
  background:#fff;border:1px solid #cbdbe8;border-radius:10px;padding:14px 15px;
}
#toms-instructor-dashboard .eft-i293-kpi span{font-size:12px;line-height:1.4;color:#526a80;font-weight:600}
#toms-instructor-dashboard .eft-i293-kpi strong{font-size:28px;line-height:1;color:#173b5b;font-variant-numeric:tabular-nums}
#toms-instructor-dashboard .eft-i293-kpi-alert strong{color:#a4441c}
/* v4.5.337: strong red/yellow expiration KPI tiles. */
#toms-instructor-dashboard .eft-i293-kpi.eft-i293-kpi-danger{background:#e00000;border:1px solid #b50000;border-left:5px solid #b50000}
#toms-instructor-dashboard .eft-i293-kpi.eft-i293-kpi-danger span,#toms-instructor-dashboard .eft-i293-kpi.eft-i293-kpi-danger strong{color:#ffffff}
#toms-instructor-dashboard .eft-i293-kpi.eft-i293-kpi-warning{background:#ffdf00;border:1px solid #d6ac00;border-left:5px solid #b58c00}
#toms-instructor-dashboard .eft-i293-kpi.eft-i293-kpi-warning span,#toms-instructor-dashboard .eft-i293-kpi.eft-i293-kpi-warning strong{color:#171717}

#toms-instructor-dashboard .eft-i293-toolbar{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;
  background:#fff;border:1px solid #cbdbe8;border-bottom:0;
  border-radius:10px 10px 0 0;padding:11px 14px;
}
#toms-instructor-dashboard .eft-i293-toolbar label{display:flex;align-items:center;flex-wrap:wrap;gap:9px;color:#526a80;font-size:13px;font-weight:600}
#toms-instructor-dashboard .eft-i293-toolbar select{min-width:200px;max-width:100%;padding:7px 10px;font-size:13px;color:#173b5b;background:#fff;border:1px solid #cbdbe8;border-radius:7px}
#toms-instructor-dashboard .eft-i293-count{font-size:12px;color:#526a80;white-space:nowrap}
#toms-instructor-dashboard .eft-i293-count strong{color:#173b5b;font-variant-numeric:tabular-nums}
#toms-instructor-dashboard .eft-dash-scroll{background:#fff;border:1px solid #cbdbe8;border-radius:0 0 10px 10px;overflow-x:auto;padding:5px 12px 12px}
#toms-instructor-dashboard .eft-dash-scroll table{width:100%;min-width:650px}
#toms-instructor-dashboard .eft-dash-scroll td{white-space:normal;vertical-align:top}
#toms-instructor-dashboard>.eft-dash-note{margin:10px 1px 0!important;background:transparent!important;border:0!important;padding:0!important;line-height:1.5}
@media(max-width:1250px){#toms-instructor-dashboard .eft-i293-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){#toms-instructor-dashboard .eft-i293-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){#toms-instructor-dashboard .eft-i293-kpis{grid-template-columns:1fr}#toms-instructor-dashboard .eft-i293-toolbar select{min-width:0;width:100%}}

/* v4.5.296: explicit status filter on central Students list */
.eft-student-list-controls{display:flex;gap:14px;align-items:end;flex-wrap:wrap;margin-bottom:12px}
.eft-student-list-controls .eft-student-search-label{flex:1 1 260px;margin:0}
.eft-student-status-label{display:block;min-width:160px}
#eft-student-status-filter{display:block;width:100%;margin-top:5px}
#eft-student-diagnostic:empty{display:none}

/* v4.5.297 central directory failure is shown beside the student list */
#eft-student-directory-error:not([hidden]){display:flex;align-items:center;gap:12px;flex-wrap:wrap;border:1px solid #e9b3b3;border-radius:6px;padding:12px;margin:10px 0;color:#8b2525;background:#fff7f7}
#eft-student-directory-error button{background:#173b63;color:white;border:0;border-radius:5px;padding:7px 12px;cursor:pointer}

/* v4.5.338 - compact two-line aircraft / registration cell, no taller rows. */
#settings #aircraft th.toms-airframe-label-cell{padding-top:3px;padding-bottom:3px;white-space:nowrap;vertical-align:middle}
#settings #aircraft .toms-airframe-label{display:flex;flex-direction:column;gap:0;justify-content:center;line-height:12px;min-height:25px}
#settings #aircraft .toms-airframe-type{font-size:12px;font-weight:700;line-height:13px}
#settings #aircraft .toms-airframe-registration{font-size:11px;font-weight:500;line-height:12px;color:#53657b}
#settings #aircraft .toms-airframe-unregistered{font-size:10px;color:#8291a2}
