*{box-sizing:border-box}body{margin:0;font-family:Inter,"Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--text)}button,select{font:inherit}.app{min-height:100vh;display:grid;grid-template-columns:232px 1fr}.sidebar{background:var(--compat-color-001);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;padding:4px 8px 22px}.mark{width:40px;height:40px;border-radius:12px;background:var(--brand);color:white;display:grid;place-items:center;font-weight:900;font-size:23px}.brand b{font-size:20px;letter-spacing:.6px;color:var(--compat-color-002)}.brand small,.user small{display:block;color:var(--muted);font-size:10px;margin-top:2px}nav{display:flex;flex-direction:column;gap:5px}nav button{border:0;background:transparent;text-align:left;padding:11px 12px;border-radius:10px;color:var(--compat-color-003);cursor:pointer;font-weight:650}nav button.active{background:var(--compat-color-004);color:var(--compat-color-005)}nav button:hover{background:var(--compat-color-006)}.user{margin-top:auto;border-top:1px solid var(--line);padding:15px 7px 0;display:flex;gap:9px;align-items:center}.avatar{width:34px;height:34px;border-radius:50%;background:var(--aqua);display:grid;place-items:center;font-size:12px;font-weight:800}main{min-width:0}header{height:78px;background:var(--compat-color-001);border-bottom:1px solid var(--line);padding:13px 26px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}h1{font-size:21px;margin:0}header p,.panel-title p{margin:3px 0 0;color:var(--muted);font-size:12px}.head-actions{display:flex;gap:8px}.primary{background:var(--brand)!important;color:var(--compat-color-001)!important;border-color:var(--brand)!important}.ghost{background:var(--compat-color-001)}.head-actions button,.toolbar button,.panel button,.report-toolbar button,.modal button{border:1px solid var(--line);padding:9px 13px;border-radius:9px;cursor:pointer;background:var(--compat-color-001);color:var(--text);font-weight:700}.page{display:none;padding:22px 26px}.page.active{display:block}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.kpis article,.panel{background:var(--compat-color-001);border:1px solid var(--compat-color-007);border-radius:14px;box-shadow:var(--shadow)}.kpis article{padding:18px}.kpis span{color:var(--muted);font-size:12px}.kpis strong{display:block;font-size:28px;margin:8px 0 4px}.kpis em{font-style:normal;font-size:11px;color:var(--compat-color-008)}.grid2{display:grid;grid-template-columns:1.25fr .75fr;gap:14px;margin-top:14px}.panel{padding:18px}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.panel-title h2{font-size:16px;margin:0}.link{border:0!important;color:var(--brand)!important;background:transparent!important}.today-row{display:grid;grid-template-columns:62px 74px 1fr 90px;align-items:center;border-top:1px solid var(--compat-color-009);padding:11px 4px;font-size:13px}.today-row b{color:var(--compat-color-005)}.tag{padding:5px 8px;border-radius:7px;background:var(--blue);font-size:11px;text-align:center}.alerts>div{padding:12px 2px;border-top:1px solid var(--compat-color-009);display:grid;grid-template-columns:70px 1fr auto;gap:8px;align-items:center;font-size:12px}.alerts i{font-style:normal;background:var(--pink);padding:4px 7px;border-radius:7px}.toolbar{background:var(--compat-color-001);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;align-items:center;gap:16px;box-shadow:var(--shadow)}.weeknav{display:flex;align-items:center;background:var(--compat-color-010);border-radius:10px}.weeknav button{border:0;background:transparent;font-size:20px}.weeknav div{text-align:center;min-width:70px}.weeknav small{display:block;font-size:10px;color:var(--muted)}.weeknav strong{font-size:20px;color:var(--compat-color-005)}.range{min-width:190px}.range b,.range span{display:block}.range span{font-size:11px;color:var(--muted);margin-top:3px}.filters{margin-left:auto;display:flex;gap:8px}.filters select,.report-toolbar select{border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--compat-color-001)}.legend{display:flex;gap:18px;align-items:center;padding:12px 6px;font-size:11px;color:var(--compat-color-011)}.dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}.dot.blue{background:var(--compat-color-012)}.dot.yellow{background:var(--compat-color-013)}.dot.red{background:var(--compat-color-014)}.dot.cyan{background:var(--compat-color-015)}.hint{margin-left:auto}.schedule-wrap{overflow:auto;background:var(--compat-color-001);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);max-height:calc(100vh - 235px)}.schedule-table{border-collapse:separate;border-spacing:0;width:100%;min-width:980px;font-size:11px}.schedule-table th{position:sticky;top:0;z-index:5;background:var(--compat-color-016);border-bottom:1px solid var(--line);padding:9px 5px}.schedule-table th:first-child{left:0;z-index:7}.schedule-table td{border-right:1px solid var(--compat-color-017);border-bottom:1px solid var(--compat-color-017);height:66px;min-width:122px;padding:4px;vertical-align:top}.schedule-table td:first-child{position:sticky;left:0;z-index:4;min-width:82px;width:82px;text-align:center;vertical-align:middle;font-size:13px;font-weight:900;background:var(--compat-color-001)}.schedule-table tr.group-gap td{height:10px;background:var(--compat-color-018);padding:0}.dayhead b,.dayhead span{display:block}.dayhead b{font-size:12px}.dayhead span{font-size:10px;color:var(--compat-color-011);margin-top:2px}.slot{height:100%;border-radius:7px;background:var(--compat-color-016);cursor:pointer;overflow:hidden;border:1px solid var(--compat-color-019)}.slot:hover{box-shadow:inset 0 0 0 2px var(--compat-color-020)}.slot-top{display:grid;grid-template-columns:1fr 38px}.slot-code{background:var(--compat-color-012);color:var(--compat-color-001);font-weight:900;padding:5px 6px}.slot-no{background:var(--compat-color-021);color:var(--compat-color-022);font-weight:900;text-align:center;padding:5px 2px}.slot-meta{display:flex;justify-content:space-between;padding:5px 6px;font-weight:700}.teacher{color:var(--compat-color-023)}.room{color:var(--compat-color-024)}.row-green{background:var(--compat-color-025)!important;color:var(--compat-color-001)}.row-yellow{background:var(--compat-color-026)!important;color:var(--compat-color-027)}.row-blue{background:var(--compat-color-012)!important;color:var(--compat-color-001)}.row-pink{background:var(--compat-color-028)!important;color:var(--compat-color-001)}.placeholder,.session-demo{background:var(--compat-color-016);border:1px dashed var(--compat-color-029);border-radius:12px;padding:35px;text-align:center}.placeholder b,.placeholder span{display:block}.placeholder span{margin-top:7px;color:var(--muted)}.classcards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.classcards div{border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--compat-color-030)}.classcards b,.classcards span,.classcards em{display:block}.classcards b{color:var(--compat-color-005);font-size:17px}.classcards span{margin:5px 0}.classcards em{font-style:normal;color:var(--muted);font-size:12px}.chips{display:flex;gap:7px;flex-wrap:wrap;justify-content:center}.chips span{background:var(--blue);padding:6px 9px;border-radius:7px;font-size:11px}.report-toolbar{background:var(--compat-color-001);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;gap:10px;align-items:end;position:sticky;top:90px;z-index:10}.report-toolbar label{display:block;font-size:10px;color:var(--muted);margin-bottom:4px}.report-preview{padding:20px 0}.paper{max-width:1050px;margin:auto;background:var(--compat-color-001);border:1px solid var(--compat-color-031);box-shadow:0 10px 35px var(--compat-color-032);padding:28px}.report-head{display:flex;justify-content:space-between;border-bottom:3px solid var(--navy);padding-bottom:13px}.report-head>div:last-child{text-align:right}.report-head b,.report-head span,.report-head strong{display:block}.report-head b{font-size:22px;color:var(--compat-color-005)}.report-head span{font-size:10px;color:var(--muted);margin-top:3px}.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:18px 0}.summary div{padding:11px;border-radius:8px;background:var(--aqua)}.summary small,.summary b{display:block}.summary b{margin-top:4px}.report-table{width:100%;border-collapse:collapse;font-size:11px}.report-table th{background:var(--navy);color:var(--compat-color-001);padding:8px}.report-table td{border:1px solid var(--compat-color-033);padding:8px}.report-foot{text-align:right;color:var(--muted);font-size:9px}.modal{display:none;position:fixed;inset:0;background:var(--compat-color-034);z-index:100;place-items:center}.modal.show{display:grid}.modal-card{width:min(470px,92vw);background:var(--compat-color-001);border-radius:16px;padding:22px;box-shadow:0 20px 60px var(--compat-color-035);position:relative}.close{position:absolute;right:12px;top:10px;border:0!important;font-size:20px!important}.modal-card small{color:var(--muted)}.modal-card h2{color:var(--compat-color-005)}.modal-body-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--compat-color-009);font-size:13px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}@media(max-width:900px){.app{grid-template-columns:70px 1fr}.sidebar{padding:14px 8px}.brand>div:last-child,.user>div:last-child{display:none}.brand{justify-content:center;padding-left:0;padding-right:0}nav button{font-size:0;text-align:center;padding:12px 4px}nav button::first-letter{font-size:18px}.kpis{grid-template-columns:1fr 1fr}.grid2{grid-template-columns:1fr}.filters select{display:none}.page{padding:14px}.toolbar{flex-wrap:wrap}.filters{margin-left:0}.classcards{grid-template-columns:1fr}.report-toolbar{flex-wrap:wrap}}
.module-tools{display:flex;gap:9px;margin-bottom:14px}.module-tools input,.module-tools select,#sessionClass,#scoreClass,.session-table select,.session-table input,.score-input{border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--compat-color-001);color:var(--text)}.module-tools input{min-width:280px}.data-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:11px}.data-table{width:100%;border-collapse:collapse;font-size:12px}.data-table th{background:var(--compat-color-036);text-align:left;padding:10px;color:var(--compat-color-037);white-space:nowrap}.data-table td{padding:10px;border-top:1px solid var(--compat-color-038);vertical-align:middle}.student-name b,.student-name small{display:block}.student-name small{color:var(--muted);margin-top:3px}.pill{display:inline-block;padding:4px 7px;border-radius:7px;background:var(--blue);margin:2px;font-size:10px}.status-on{background:var(--green);color:var(--compat-color-039)}.mini-btn{border:1px solid var(--line);background:var(--compat-color-001);border-radius:7px;padding:5px 8px;cursor:pointer}.classcards>div{cursor:pointer;position:relative}.classcards>div:hover{box-shadow:0 5px 18px var(--compat-color-040)}.class-meta{display:flex!important;justify-content:space-between;margin-top:12px!important;padding-top:9px;border-top:1px solid var(--compat-color-041)}.progress{height:6px;background:var(--compat-color-042);border-radius:6px;margin-top:10px;overflow:hidden}.progress i{display:block;height:100%;background:var(--brand);border-radius:6px}.session-head{background:var(--aqua);border-radius:10px;padding:10px 12px;margin-bottom:12px;font-size:12px}.session-table input[type=number]{width:62px}.session-table input[type=text]{min-width:130px}.session-table input[type=checkbox]{width:17px;height:17px}.savebar{display:flex;justify-content:space-between;align-items:center;margin-top:12px;color:var(--muted);font-size:11px}.score-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:15px}.score-card{border:1px solid var(--line);border-radius:11px;padding:13px;background:var(--compat-color-030)}.score-card b,.score-card span{display:block}.score-card span{color:var(--muted);font-size:10px;margin-top:3px}.score-input{width:72px}.band{font-weight:900;color:var(--compat-color-005)}.toast{position:fixed;right:24px;bottom:24px;background:var(--compat-color-043);color:var(--compat-color-001);padding:11px 15px;border-radius:9px;z-index:200;opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}@media(max-width:900px){.module-tools{flex-wrap:wrap}.module-tools input{min-width:100%}.score-grid{grid-template-columns:1fr 1fr}}

/* V0.3 integrated */

.subtabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}.subtabs button{border:1px solid var(--line);background:white;border-radius:9px;padding:9px 13px;cursor:pointer}.subtabs button.active{background:var(--compat-color-044);border-color:var(--compat-color-045);color:var(--compat-color-046);font-weight:800}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:12px;font-weight:800;color:var(--compat-color-047)}.field input,.field select,.field textarea{border:1px solid var(--compat-color-048);border-radius:9px;padding:10px 11px;font:inherit;background:var(--compat-color-001)}.field textarea{min-height:74px;resize:vertical}.checkgrid{display:flex;flex-wrap:wrap;gap:8px}.checkpill{border:1px solid var(--compat-color-048);border-radius:999px;padding:8px 10px;background:white}.checkpill input{margin-right:6px}.wide-modal .modal-card{width:min(760px,94vw)}
.stats-mini{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 16px}.stats-mini>div{background:white;border:1px solid var(--line);border-radius:12px;padding:14px}.stats-mini small{display:block;color:var(--muted)}.stats-mini b{font-size:22px}.toolbar-line{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 14px}.toolbar-line>div{display:flex;gap:8px;flex-wrap:wrap}.toolbar-line input,.toolbar-line select{border:1px solid var(--line);border-radius:9px;padding:9px 10px}.danger{background:var(--compat-color-049)!important;color:var(--compat-color-050)!important;border-color:var(--compat-color-051)!important}.ok{color:var(--ok);font-weight:800}.muted{color:var(--muted)}.actionset{display:flex;gap:5px}.actionset button{border:1px solid var(--line);background:white;border-radius:7px;padding:6px 8px;cursor:pointer}.student-detail{display:grid;grid-template-columns:1fr 1fr;gap:12px}.student-detail>div{border:1px solid var(--line);border-radius:10px;padding:12px}.student-detail span{display:block;color:var(--muted);font-size:12px}.student-detail b{display:block;margin-top:3px}.badge{display:inline-flex;border-radius:999px;padding:4px 8px;background:var(--compat-color-052);color:var(--compat-color-046);font-size:12px;font-weight:800}.badge.warn{background:var(--compat-color-053);color:var(--compat-color-054)}.badge.red{background:var(--compat-color-055);color:var(--compat-color-050)}.program-grid,.teacher-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.program-card,.teacher-card{border:1px solid var(--line);border-radius:13px;padding:15px;background:white}.program-card h3,.teacher-card h3{margin:0 0 5px}.program-card p,.teacher-card p{color:var(--muted);font-size:13px}.program-card footer,.teacher-card footer{display:flex;justify-content:space-between;margin-top:12px;font-size:12px}.report-options{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:15px}.report-options button{border:1px solid var(--line);border-radius:12px;background:white;padding:14px;text-align:left;cursor:pointer}.report-options button.active{border-color:var(--compat-color-056);background:var(--compat-color-057)}.report-options b{display:block;margin-bottom:4px}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.settings-card{background:white;border:1px solid var(--line);border-radius:13px;padding:16px}.settings-card h3{margin-top:0}.settings-card .field{margin-top:10px}.sticky-save{position:sticky;bottom:12px;display:flex;justify-content:flex-end;margin-top:14px}.empty{padding:28px;text-align:center;color:var(--muted)}
@media(max-width:900px){.program-grid,.teacher-grid,.stats-mini,.report-options{grid-template-columns:repeat(2,1fr)}.form-grid,.settings-grid{grid-template-columns:1fr}.field.full{grid-column:auto}}
@media print{.sidebar,header,.report-toolbar,.report-options{display:none!important}.app main{margin:0!important}.page{display:none!important}#reports{display:block!important}.report-preview{background:white!important;padding:0!important}.paper{box-shadow:none!important;border:none!important;width:100%!important}}

#cloudBtn.cloud-ok{border-color:var(--compat-color-058);background:var(--compat-color-059);color:var(--compat-color-060)}.user small{max-width:150px;overflow:hidden;text-overflow:ellipsis}


/* OLYMPUS V1.1 — BRAND DESIGN SYSTEM + PRODUCTION AUTH */

.brand .mark,.auth-logo{background:linear-gradient(145deg,var(--olympus-navy),var(--olympus-teal-2))}.brand b,.modal-card h2,.report-head b,.classcards b,.band{color:var(--olympus-navy)}
nav button.active{background:var(--olympus-mint);color:var(--olympus-navy);box-shadow:inset 3px 0 0 var(--olympus-teal)}
nav button:hover{background:var(--olympus-ice)}.primary{background:var(--olympus-teal)!important;border-color:var(--olympus-teal)!important}.primary:hover{background:var(--compat-color-061)!important}
.subtabs button.active,.report-options button.active{background:var(--olympus-mint);border-color:var(--compat-color-062);color:var(--olympus-navy)}
.progress i{background:linear-gradient(90deg,var(--olympus-teal),var(--olympus-teal-2))}.report-table th{background:var(--olympus-navy)}
.auth-gate{position:fixed;inset:0;z-index:1000;background:linear-gradient(145deg,var(--compat-color-063),var(--compat-color-064));display:grid;place-items:center;padding:24px}.auth-shell{width:min(430px,94vw);background:var(--compat-color-001);border:1px solid var(--compat-color-065);border-radius:22px;padding:34px;text-align:center;box-shadow:0 24px 70px var(--compat-color-066)}.auth-logo{width:58px;height:58px;border-radius:18px;color:var(--compat-color-001);display:grid;place-items:center;margin:0 auto 14px;font-size:30px;font-weight:900}.auth-shell h1{color:var(--olympus-navy);letter-spacing:1px;margin:0}.auth-shell p{color:var(--compat-color-067);margin:7px 0 22px}.auth-shell #authGateState{font-size:13px;color:var(--compat-color-067);margin-bottom:18px}.auth-shell button{border:0;border-radius:10px;padding:11px 18px;font-weight:800;cursor:pointer}.auth-ready .auth-gate{display:none}.auth-pending .app,.auth-required .app{filter:blur(2px);pointer-events:none;user-select:none}.auth-required .auth-gate{display:grid}
.criteria-grid{display:grid;grid-template-columns:repeat(4,minmax(90px,1fr));gap:5px}.criteria-grid input{width:100%;min-width:64px}.criteria-label{font-size:9px;color:var(--compat-color-068);display:block;margin-bottom:3px}.score-wide{min-width:310px}.production-note{padding:10px 12px;border-radius:10px;background:var(--olympus-mint);color:var(--olympus-navy);font-size:12px;margin-bottom:12px}
@media(max-width:900px){.criteria-grid{grid-template-columns:repeat(2,1fr)}}

/* OLYMPUS V1.2 */
.finance-kpis{margin-bottom:14px}.finance-kpis article{box-shadow:none}.criteria-grid input{min-width:56px}.auth-shell{border-top:5px solid var(--brand)}
/* OLYMPUS V1.3 finance convergence */
.finance-section{margin-bottom:18px}.finance-section h3{color:var(--navy,var(--compat-color-069));margin:0 0 10px}.finance-section .data-table input,.finance-section .data-table select{min-width:90px;max-width:150px}.finance-section td button{margin:2px}.debt{font-weight:700;color:var(--compat-color-070)}.finance-section small{opacity:.65}

.inline-auth-r0{position:fixed;inset:0;z-index:5000;display:grid;place-items:center;background:var(--compat-color-071);padding:20px}.inline-auth-r0[hidden]{display:none}.inline-auth-card-r0{position:relative;width:min(440px,94vw);background:var(--compat-color-001);border-radius:16px;padding:26px;box-shadow:0 25px 80px var(--compat-color-072)}.inline-auth-card-r0 h2{margin:0 0 18px}.inline-auth-card-r0 label{display:block;font-size:12px;color:var(--compat-color-073);margin:11px 0 5px}.inline-auth-card-r0 input{width:100%;box-sizing:border-box;padding:11px;border:1px solid var(--compat-color-074);border-radius:9px}.inline-auth-card-r0 p{font-size:13px;color:var(--compat-color-075);min-height:20px}.inline-auth-close-r0{position:absolute;right:10px;top:8px;border:0;background:transparent;font-size:24px}.inline-auth-actions-r0{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.inline-auth-actions-r0 button{padding:9px 14px;border-radius:8px;border:1px solid var(--compat-color-076);background:var(--compat-color-001)}.inline-auth-actions-r0 .primary{background:var(--compat-color-077);color:var(--compat-color-001);border-color:var(--compat-color-077)}
/* OLYMPUS PERMISSIONS R1 */
.permission-scope-r1{margin-top:10px;padding:10px 12px;border:1px solid var(--compat-color-078);border-radius:10px;background:var(--compat-color-079);font-size:12px;line-height:1.55;color:var(--compat-color-047)}.permission-scope-r1 b{color:var(--compat-color-080)}.permission-scope-r1 span{color:var(--compat-color-081)}.permission-user-r1{margin:0 0 12px;padding:14px;border:1px solid var(--compat-color-078);border-radius:12px;background:var(--compat-color-082)}.permission-user-r1 .checkgrid{padding:8px;border-radius:10px;background:var(--compat-color-083)}.permission-user-r1 .checkpill{cursor:pointer}.permission-user-r1 .checkpill:has(input:checked){border-color:var(--compat-color-084);background:var(--compat-color-085);color:var(--compat-color-080)}


/* ===== OLYMPUS UI/PERMISSIONS R2 ===== */

body{font-size:16px;line-height:1.45;background:linear-gradient(180deg,var(--compat-color-086) 0%,var(--compat-color-087) 48%,var(--compat-color-088) 100%)}
main{background:linear-gradient(180deg,var(--compat-color-089) 0%,var(--compat-color-088) 100%)}
.sidebar{background:linear-gradient(180deg,var(--compat-color-090) 0%,var(--compat-color-091) 70%,var(--compat-color-092) 100%)}
nav button{font-size:15px;padding:13px 12px;border:1px solid transparent}
nav button.active{background:linear-gradient(90deg,var(--compat-color-093),var(--compat-color-094));border-color:var(--compat-color-095);color:var(--compat-color-096);box-shadow:0 6px 16px var(--compat-color-097)}
nav button:hover{background:var(--compat-color-098);border-color:var(--compat-color-099)}
header{background:linear-gradient(90deg,var(--compat-color-001) 0%,var(--compat-color-100) 65%,var(--compat-color-101) 100%)}
h1{font-size:24px}.panel-title h2{font-size:18px}.panel-title p,header p{font-size:13px}
.kpis article,.panel,.settings-card,.teacher-card,.program-card,.class-card{background:linear-gradient(180deg,var(--compat-color-001) 0%,var(--compat-color-102) 100%);border:1px solid var(--line-2);box-shadow:0 10px 26px var(--compat-color-103)}
.kpis article{padding:20px}.kpis span{font-size:13px}.kpis strong{font-size:32px}.kpis em{font-size:12px}
.panel{padding:18px}.panel-title{margin:-18px -18px 16px;padding:14px 16px;border-bottom:1px solid var(--compat-color-104);background:linear-gradient(90deg,var(--compat-color-105),var(--compat-color-106))}
.toolbar,.schedule-wrap,.report-box,.settings-card,.modal-content{border-color:var(--line-2)}
.toolbar{background:linear-gradient(90deg,var(--compat-color-090),var(--compat-color-087) 60%,var(--compat-color-101))}
.filters select,.report-toolbar select,.field input,.field select,.modal input,.modal select,.modal textarea,textarea,input,select{font-size:15px;padding:10px 12px;border:1px solid var(--compat-color-107);border-radius:10px;background:var(--compat-color-001)}
button,.head-actions button,.toolbar button,.panel button,.report-toolbar button,.modal button{font-size:14px;padding:10px 14px;border-radius:10px}
.data-table,.schedule-table{font-size:13px}.schedule-table td:first-child{font-size:14px}.schedule-table th{font-size:12px;background:linear-gradient(180deg,var(--compat-color-108),var(--compat-color-101))}
.data-table thead th{position:sticky;top:0;background:linear-gradient(180deg,var(--compat-color-108),var(--compat-color-109));color:var(--compat-color-096);border-bottom:1px solid var(--compat-color-110);font-size:13px;padding:11px 8px}.data-table tbody td{padding:10px 8px;border-bottom:1px solid var(--compat-color-111)}.data-table tbody tr:nth-child(odd) td{background:var(--table-odd)}.data-table tbody tr:nth-child(even) td{background:var(--table-even)}.data-table tbody tr:hover td{background:var(--table-hover)}
.legend{background:var(--compat-color-001);border:1px solid var(--compat-color-112);border-radius:12px;padding:12px 14px}.today-row,.alerts>div{font-size:13px}.tag,.badge{font-size:12px;font-weight:700}
#dashboard .panel,#dashboard .kpis article{border-top:4px solid var(--compat-color-113)}#schedule .toolbar,#schedule .schedule-wrap{border-top:4px solid var(--compat-color-114)}#classes .panel{border-top:4px solid var(--compat-color-115)}#students .panel{border-top:4px solid var(--compat-color-116)}#session .panel{border-top:4px solid var(--compat-color-117)}#scores .panel{border-top:4px solid var(--compat-color-118)}#reports .panel{border-top:4px solid var(--compat-color-119)}#finance .panel{border-top:4px solid var(--compat-color-120)}#programs .panel{border-top:4px solid var(--compat-color-121)}#teachers .panel{border-top:4px solid var(--compat-color-122)}#settings .settings-card{border-top:4px solid var(--compat-color-113)}
.checkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.checkpill{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--compat-color-123);border-radius:12px;background:linear-gradient(180deg,var(--compat-color-087),var(--compat-color-105));font-size:14px;font-weight:600}.checkpill input{margin:0;transform:scale(1.15)}.accent-grid .checkpill:nth-child(4n+1){background:linear-gradient(180deg,var(--compat-color-087),var(--compat-color-124))}.accent-grid .checkpill:nth-child(4n+2){background:linear-gradient(180deg,var(--compat-color-125),var(--compat-color-126))}.accent-grid .checkpill:nth-child(4n+3){background:linear-gradient(180deg,var(--compat-color-127),var(--compat-color-128))}.accent-grid .checkpill:nth-child(4n+4){background:linear-gradient(180deg,var(--compat-color-129),var(--compat-color-130))}
.permission-user-r2{border:1px solid var(--compat-color-131);border-radius:16px;padding:16px 16px 14px;margin-bottom:16px;background:linear-gradient(180deg,var(--compat-color-001) 0%,var(--compat-color-082) 100%);box-shadow:0 8px 20px var(--compat-color-132)}.permission-user-r2.add-user{border-style:dashed;background:linear-gradient(180deg,var(--compat-color-125),var(--compat-color-082))}.permission-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.permission-head h3{margin:0 0 2px;font-size:18px}.permission-head p{margin:0;color:var(--compat-color-133);font-size:13px}.role-chip{display:inline-block;padding:8px 12px;border-radius:999px;font-size:12px;font-weight:800}.role-chip.manager{background:var(--compat-color-134);color:var(--compat-color-135)}.role-chip.teacher{background:var(--compat-color-136);color:var(--compat-color-137)}.manager-mode .accent-grid{opacity:.78}.summary.summary-roles{margin-bottom:14px}.summary.summary-roles>div{background:linear-gradient(180deg,var(--compat-color-105),var(--compat-color-138));border:1px solid var(--compat-color-139)}
.owner-finance-note{background:linear-gradient(180deg,var(--compat-color-092),var(--compat-color-087));border:1px dashed var(--compat-color-140)}.owner-finance-note p{font-size:14px;line-height:1.6}.finance-section h3{font-size:17px}
.empty,.placeholder,.session-demo{font-size:15px}
@media (max-width:1280px){.kpis{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}.checkgrid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}}


/* ===== WEEK 39/40 SCHEDULE VISUAL AUTHORITY R3 =====
   Do not change these four visual semantics without Owner authority. */
.schedule-table td:first-child[class*="row-"]{font-size:15px;font-weight:900;letter-spacing:.15px}
.schedule-table .slot-top{display:grid;grid-template-columns:1fr 38px}
.schedule-table .slot-code{background:var(--compat-color-012)!important;color:var(--compat-color-001)!important;font-weight:900!important;font-size:14px;padding:6px 7px}
.schedule-table .slot-no{background:var(--compat-color-021)!important;color:var(--compat-color-022)!important;font-weight:900!important;font-size:14px;text-align:center;padding:6px 3px}
.schedule-table .slot-meta{display:flex;justify-content:space-between;padding:6px 7px;font-weight:800;font-size:12px;background:var(--compat-color-082)}
.schedule-table .slot-meta .teacher{color:var(--compat-color-023)!important;background:transparent!important;padding:0!important;border-radius:0!important}
.schedule-table .slot-meta .room{color:var(--compat-color-024)!important;background:transparent!important}
.schedule-table .row-green{background:var(--compat-color-025)!important;color:var(--compat-color-001)!important}
.schedule-table .row-yellow{background:var(--compat-color-026)!important;color:var(--compat-color-027)!important}
.schedule-table .row-blue{background:var(--compat-color-012)!important;color:var(--compat-color-001)!important}
.schedule-table .row-pink{background:var(--compat-color-028)!important;color:var(--compat-color-001)!important}
.schedule-table .slot-off .slot-code{background:var(--compat-color-141)!important}
.dashboard-empty{padding:18px 8px;text-align:left;background:var(--compat-color-079);border:1px dashed var(--compat-color-142);border-radius:10px}


/* ===== SCHEDULE TIME R4 ===== */
.schedule-table .slot-meta .room{display:flex;align-items:center;gap:5px;margin-left:auto}
.schedule-table .slot-time{display:inline-block;background:var(--compat-color-143);color:var(--compat-color-144);border:1px solid var(--compat-color-145);border-radius:6px;padding:1px 5px;font-size:11px;font-weight:900}
.schedule-days-r4{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.schedule-day-r4{display:grid;grid-template-columns:auto 30px 1fr;gap:7px;align-items:center;padding:8px 10px;border:1px solid var(--compat-color-146);border-radius:10px;background:var(--compat-color-147)}.schedule-day-r4 .sr4Time{min-width:0;padding:7px 8px}


/* ===== PAYROLL LEDGER R2 ===== */
.payroll-period-r2{margin-top:10px;border:1px solid var(--compat-color-148);border-radius:12px;background:linear-gradient(180deg,var(--compat-color-082),var(--compat-color-098));padding:8px 10px}.payroll-teacher-r2{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;margin-top:5px;border-radius:8px;background:linear-gradient(90deg,var(--compat-color-108),var(--compat-color-149));font-size:13px}.payroll-teacher-r2 b{color:var(--compat-color-096)}.lifecycle-effective-r3{background:var(--compat-color-087);border:1px dashed var(--compat-color-150);border-radius:10px;padding:10px}

/* OLYMPUS R15 — MOBILE COMPACTNESS + CASCADE REPAIR
   R14 visual acceptance showed late desktop nav/header rules overriding the
   intended compact mobile treatment. This final rule is intentionally last. */
@media (max-width:600px){
  .app{grid-template-columns:56px minmax(0,1fr)}
  .sidebar{padding:10px 5px}
  .brand{justify-content:center;padding:2px 0 12px}
  .brand .mark{width:36px;height:36px;border-radius:10px;font-size:20px}
  nav{gap:4px}
  nav button{font-size:18px!important;text-align:center!important;padding:10px 2px!important;line-height:1!important;min-height:42px}
  nav button span{display:none!important}
  .user{justify-content:center;padding:12px 0 0}
  .user .avatar{width:32px;height:32px}
  header{height:64px;padding:8px 10px;gap:8px}
  header>div:first-child{min-width:0;flex:1}
  h1{font-size:18px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  header p{display:none}
  .head-actions{gap:5px;flex:0 0 auto}
  #cloudBtn,#notifyBtn,#quickAdd{width:40px;height:40px;padding:0!important;font-size:0!important;display:grid;place-items:center}
  #cloudBtn::before{content:"☁";font-size:17px}
  #notifyBtn::before{content:"🔔";font-size:16px}
  #quickAdd::before{content:"＋";font-size:20px;font-weight:900}
  .page{padding:12px!important}
  .kpis{gap:10px}
  .kpis article{padding:14px 12px}
}

/* R20 — fresh-browser auth modal visibility.
   The auth gate is z-index:1000 while the app modal base is z-index:100.
   During auth-required, put an opened app modal above both the gate and
   the inline fallback auth layer (z-index:5000). */
body.auth-required .modal.show{
  z-index:6000;
}

/* ===== OLYMPUS OWNER ADJUSTMENTS A1 — MODAL VIEWPORT SAFETY ===== */
.modal-card{
  max-height:min(88vh,820px);
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
#modalBody{
  min-height:0;
  overflow-y:auto;
  overscroll-behavior:contain;
  padding-right:4px;
}
#modalActions{
  flex-shrink:0;
  background:var(--compat-color-001);
  padding-top:4px;
}
@media(max-width:600px){
  .modal{padding:10px}
  .modal-card{max-height:calc(100dvh - 20px);width:min(100%,470px);padding:18px 16px}
  .wide-modal .modal-card{width:100%}
  #modalActions{flex-wrap:wrap}
}

/* OLYMPUS OWNER ADJUSTMENTS D1 — BRANDING */
.brand .mark.has-logo{background:var(--compat-color-001);border:1px solid var(--line);overflow:hidden}
.brand .mark.has-logo img{width:100%;height:100%;object-fit:contain;display:block}
.report-brand-left{display:flex;align-items:center;gap:11px;min-width:0}
.report-brand-logo{width:48px;height:48px;border-radius:10px;flex:0 0 48px;display:grid;place-items:center;overflow:hidden;background:linear-gradient(145deg,var(--olympus-navy,var(--compat-color-151)),var(--olympus-teal-2,var(--compat-color-152)));color:var(--compat-color-001);font-weight:900;font-size:24px}
.report-brand-logo img{width:100%;height:100%;object-fit:contain;background:var(--compat-color-001);display:block}
.report-brand-logo-fallback{display:grid;place-items:center;width:100%;height:100%}
.report-brand-copy{min-width:0}
.report-brand-copy b{display:block}
.report-brand-copy .report-brand-sub{display:block}
.report-brand-contact{display:flex;flex-wrap:wrap;gap:3px 10px;margin-top:4px}
.report-brand-contact small{font-size:9px;color:var(--muted,var(--compat-color-068));white-space:nowrap}
@media(max-width:600px){.report-brand-left{align-items:flex-start}.report-brand-logo{width:40px;height:40px;flex-basis:40px}.report-brand-contact{display:block}.report-brand-contact small{display:block;white-space:normal}}

/* OLYMPUS R24 — BUILT-IN BRAND LOGO */
.auth-logo.has-logo{background:var(--compat-color-001);overflow:hidden;padding:0;border:1px solid var(--line);color:transparent}
.auth-logo.has-logo img{width:100%;height:100%;object-fit:contain;display:block}
