:root{--nav:#061a2d;--rose:#f3a6b5;--lime:#eef5b6;--paper:#f4f6f3;--card:#fff;--line:#dce2e5;--muted:#637080}
.portal{display:grid;grid-template-columns:260px 1fr;min-height:100vh;background:var(--paper)}
.side{background:var(--nav);color:#fff;padding:28px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.side .brand{display:block;margin:0 10px 35px}.side nav{display:grid;gap:5px}.side nav a{padding:12px 14px;border-radius:12px;color:#dae3ea;font-weight:bold}.side nav a:hover,.side nav a.active{background:#ffffff18;color:var(--lime)}.side .logout{margin-top:auto;padding:12px 14px;color:var(--rose);font-weight:bold}
.work{padding:34px max(4vw,25px);min-width:0}.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.top h1{margin:4px 0;font-size:clamp(28px,4vw,46px);letter-spacing:-1.5px}.profile{display:grid;text-align:right;font-size:14px}.profile span,.role{color:var(--muted)}.role{font-size:12px;text-transform:uppercase;letter-spacing:1.5px}
.metric{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:20px 0 35px}.metric article,.panel,.action-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px}.metric b{display:block;font-size:32px;color:var(--nav)}.metric span{color:var(--muted)}
.actions{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:24px}.action-card{display:block;transition:.15s}.action-card:hover{transform:translateY(-2px);border-color:var(--rose);box-shadow:0 8px 24px #061a2d12}.action-card b{display:block;font-size:18px;margin-bottom:5px}.action-card span{color:var(--muted);font-size:14px}
.panel{margin-bottom:22px}.panel h2{font-size:22px;margin-top:0}.primary,.secondary,.danger{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:11px;padding:12px 16px;font-weight:bold;cursor:pointer}.primary{background:var(--nav);color:#fff}.secondary{background:var(--lime);color:var(--nav)}.danger{background:#ffe4e6;color:#8b1625}.button-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}button:disabled,.primary:disabled,.danger:disabled{opacity:.45;cursor:not-allowed}
.data-list{display:grid;gap:10px}.data-row{display:grid;grid-template-columns:1.5fr 1fr 1fr auto;align-items:center;gap:15px;background:#fff;border:1px solid var(--line);padding:15px;border-radius:14px}.badge{display:inline-block;padding:5px 9px;border-radius:99px;background:#eef1f3;font-size:12px;font-weight:bold}.badge.validated,.badge.active,.badge.published,.badge.attended,.badge.passed,.badge.scheduled{background:#e5f6c8;color:#244b16}.badge.missing,.badge.cancelled,.badge.absent,.badge.failed{background:#ffe4e6;color:#8b1625}.badge.draft,.badge.postponed{background:#fff4cc;color:#745100}
.form-grid label{font-weight:bold;font-size:14px}.password-row{display:flex;gap:8px}.password-row input{flex:1}fieldset.field{border:0;padding:0;margin:0}fieldset.field legend{margin-bottom:8px;font-weight:bold}.check-grid{display:flex;gap:10px;flex-wrap:wrap}.check-grid label{background:#f3f5f6;border:1px solid var(--line);border-radius:10px;padding:10px 13px}.check-grid input{width:auto}.inline-form,.quick-form{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.quick-form{margin-top:10px;min-width:250px}
.settings-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.settings-grid form{background:#f7f8f8;border:1px solid var(--line);border-radius:13px;padding:14px}.settings-grid button{margin-top:10px}
.reset-form{margin-top:7px}
.report-form{display:grid;gap:9px;margin-top:10px;min-width:280px}.check-line{display:flex;gap:8px;align-items:center;font-size:13px}.check-line input{width:auto}
.tabs{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}.tabs a{padding:10px 14px;border-radius:10px;background:#fff;border:1px solid var(--line);font-weight:bold}.tabs a.active{background:var(--nav);color:#fff}.request-card{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:16px}.request-card p{margin:6px 0;color:var(--muted)}
.week-grid{display:grid;grid-template-columns:110px repeat(6,1fr);gap:8px;min-width:760px}.week-wrap{overflow:auto}.week-cell{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center}.week-cell input{width:auto}.week-cell input[type=time]{width:100%;padding:7px 4px;margin-top:6px}.week-cell.active{background:var(--lime);border-color:#cad66b}
.slot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.slot-card{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;border:1px solid var(--line);border-radius:16px;padding:18px;background:#fff}.slot-card h3{margin:3px 0 8px}.slot-card p{color:var(--muted);margin:0 0 5px}
.timeline{display:grid;gap:10px}.timeline-item{display:grid;grid-template-columns:75px 1fr auto;gap:16px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:14px}.timeline-item time{display:grid;color:var(--muted);text-align:center}.timeline-item time b{font-size:19px;color:var(--nav)}.timeline-item h3,.timeline-item p{margin:0}.timeline-item p{color:var(--muted);font-size:14px;margin-top:4px}.timeline-item.past{opacity:.65}.empty{color:var(--muted);padding:18px;text-align:center}
.exam-row details{position:relative}.exam-row details[open]{z-index:2}.exam-row details .quick-form{position:absolute;right:0;top:28px;background:#fff;border:1px solid var(--line);padding:14px;border-radius:13px;box-shadow:0 12px 30px #061a2d1f}
@media(max-width:900px){.actions{grid-template-columns:1fr 1fr}.metric{grid-template-columns:1fr 1fr}.data-row{grid-template-columns:1fr 1fr}.slot-grid{grid-template-columns:1fr}.settings-grid{grid-template-columns:1fr}}
@media(max-width:760px){.portal{grid-template-columns:1fr}.side{position:static;height:auto;padding:15px}.side .brand{margin:0 0 12px}.side nav{grid-template-columns:repeat(2,1fr)}.side .logout{margin-top:12px}.work{padding:22px 16px}.top{align-items:flex-start}.profile{display:none}.actions,.metric{grid-template-columns:1fr}.data-row{grid-template-columns:1fr}.slot-card{align-items:flex-start;flex-direction:column}.timeline-item{grid-template-columns:58px 1fr}.timeline-item>.badge{grid-column:2}.exam-row details .quick-form{position:static;box-shadow:none}.inline-form{align-items:stretch;flex-direction:column}.request-card{grid-template-columns:1fr}}
