:root{--navy:#173f61;--navy-2:#0f2e49;--teal:#0f8a7a;--green:#3f8759;--mustard:#d99b08;--purple:#765d96;--red:#b44e54;--ink:#24313c;--muted:#657583;--line:#d8e0e7;--paper:#f5f7fa;--white:#fff;--soft-blue:#eaf3fa;--soft-teal:#e7f5f2;--soft-yellow:#fff6dc;--soft-purple:#f2edf8;--soft-red:#fbecef;--shadow:0 14px 38px rgba(23,63,97,.12);--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;color:var(--ink);background:radial-gradient(circle at 8% 5%,rgba(15,138,122,.1),transparent 23rem),radial-gradient(circle at 94% 6%,rgba(217,155,8,.11),transparent 25rem),var(--paper);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid rgba(15,138,122,.25);outline-offset:2px}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(340px,.95fr) minmax(0,1.05fr);background:#fff}.auth-panel{display:grid;place-items:center;padding:clamp(28px,5vw,56px);background:radial-gradient(circle at 12% 0%,rgba(15,138,122,.06),transparent 28rem),var(--white)}.auth-card{width:min(420px,100%);background:transparent;border:0;border-radius:0;padding:8px 0;box-shadow:none;animation:authCardIn .55s ease both}.auth-logo{display:flex;align-items:center;justify-content:center;margin-bottom:28px}.auth-mark{width:56px;height:56px;border-radius:14px;display:block;object-fit:cover;background:transparent;box-shadow:0 12px 28px #0f8a7a38}.auth-card h2{margin:0 0 8px;color:var(--ink);font-size:clamp(1.7rem,3vw,2.15rem);letter-spacing:-.04em;text-align:center;font-weight:900}.auth-lead{margin:0 0 26px;color:var(--muted);line-height:1.55;text-align:center;font-size:.95rem}.auth-password-field{margin-top:16px}.auth-input-wrap{position:relative}.auth-input-wrap input{padding-right:44px}.auth-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--muted);width:34px;height:34px;border-radius:8px;display:grid;place-items:center;padding:0}.auth-eye:hover{color:var(--navy);background:var(--soft-blue)}.auth-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0 22px;flex-wrap:wrap}.auth-check{display:inline-flex;align-items:center;gap:8px;font-size:.82rem;color:var(--muted);font-weight:650;cursor:pointer;-webkit-user-select:none;user-select:none}.auth-check input{width:auto;accent-color:var(--navy)}.auth-link,.auth-hint-inline{font-size:.82rem;font-weight:750}.auth-link{color:var(--navy);text-decoration:none}.auth-link:hover{text-decoration:underline}.auth-hint-inline{color:var(--muted)}.auth-submit{width:100%;min-height:46px;font-size:.92rem;letter-spacing:.02em}.auth-copy{margin:22px 0 0;text-align:center;font-size:.72rem;color:#9aa7b2}.auth-visual{position:relative;overflow:hidden;color:#fff;padding:clamp(28px,5vw,56px);display:flex;flex-direction:column;justify-content:space-between;gap:24px;background:radial-gradient(circle at 18% 22%,rgba(255,255,255,.14) 0 1.5px,transparent 2px),radial-gradient(circle at 82% 78%,rgba(255,255,255,.12) 0 1.5px,transparent 2px),linear-gradient(155deg,var(--navy-2) 0%,var(--navy) 52%,#0d6e72 100%);background-size:22px 22px,22px 22px,auto}.auth-visual:before,.auth-visual:after{content:"";position:absolute;pointer-events:none;border-radius:50%;border:1px solid rgba(255,255,255,.14)}.auth-visual:before{width:280px;height:280px;right:-90px;top:18%;opacity:.55}.auth-visual:after{width:180px;height:180px;left:-60px;bottom:12%;opacity:.4}.auth-visual-copy{position:relative;z-index:2;text-align:right;animation:authFadeUp .7s ease both}.auth-visual-copy h1{margin:0;font-size:clamp(1.8rem,3.2vw,2.6rem);letter-spacing:-.04em;font-weight:900;line-height:1.05}.auth-visual-copy p{margin:8px 0 0;font-size:.95rem;color:#ffffffb8}.auth-visual-stage{position:relative;z-index:1;flex:1;display:grid;place-items:center;min-height:0}.auth-blob{width:min(420px,78%);aspect-ratio:4/5;border-radius:58% 42% 48% 52%/48% 46% 54% 52%;overflow:hidden;box-shadow:0 30px 70px #00000047;animation:authBlobFloat 8s ease-in-out infinite,authFadeUp .8s .1s ease both;background:#ffffff14}.auth-hero{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.02)}.auth-detail{position:absolute;right:6%;bottom:8%;width:min(180px,28%);aspect-ratio:4/3;object-fit:cover;border-radius:18px;border:3px solid rgba(255,255,255,.85);box-shadow:0 16px 36px #00000047;animation:authFadeUp .85s .22s ease both}.auth-points{position:relative;z-index:2;list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;animation:authFadeUp .75s .18s ease both}.auth-points li{padding:8px 12px;border-radius:999px;background:#ffffff14;font-size:.78rem;font-weight:700;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}@keyframes authCardIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes authFadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes authBlobFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@media(prefers-reduced-motion:reduce){.auth-card,.auth-visual-copy,.auth-blob,.auth-detail,.auth-points{animation:none}}.setup-code{background:#101b25;color:#d8edf7;border-radius:13px;padding:14px;overflow:auto;font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;margin:14px 0}.app-shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr}.topbar{position:sticky;top:0;z-index:50;color:#fff;background:linear-gradient(110deg,var(--navy-2),var(--navy) 64%,#116d70);box-shadow:0 10px 30px #0f2e4938}.topbar-inner{max-width:1800px;margin:0 auto;padding:12px 20px;display:flex;gap:16px;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:11px;min-width:210px}.brand-mark{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,var(--teal),#24b29e);font-weight:950;letter-spacing:-.04em;box-shadow:inset 0 0 0 1px #ffffff38}.brand-title{font-weight:900;font-size:.98rem;line-height:1.1}.brand-subtitle{font-size:.74rem;color:#ffffffb8;margin-top:4px}.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.top-user{display:flex;align-items:center;gap:9px;padding:4px 8px 4px 4px;border:1px solid rgba(255,255,255,.17);border-radius:13px;background:#ffffff14}.top-user-btn{cursor:pointer;color:inherit;font:inherit;transition:.15s ease}.top-user-btn:hover{background:#ffffff29;border-color:#ffffff47}.top-user-btn:focus-visible{outline:2px solid rgba(255,255,255,.55);outline-offset:2px}.avatar{width:34px;height:34px;border-radius:11px;background:#ffffff29;display:grid;place-items:center;font-size:.78rem;font-weight:950;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.avatar-sm{width:28px;height:28px;border-radius:9px;font-size:.68rem}.avatar-lg{width:56px;height:56px;border-radius:16px;font-size:1.1rem;background:var(--soft-teal);color:#1f5f55;flex-shrink:0}.avatar-preview{width:72px;height:72px;border-radius:18px;border:1px solid var(--line);background:#f6f9fb;display:grid;place-items:center;overflow:hidden;color:var(--muted);font-weight:800}.avatar-preview img{width:100%;height:100%;object-fit:cover;display:block}.avatar-field-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.avatar-field-actions{display:grid;gap:6px}.person-cell{display:flex;align-items:center;gap:10px}.parallel-window-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}.muted{color:var(--muted);font-size:.74rem}.admin-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:18px;align-items:start}.page-wrap.admin-shell,.admin-shell{display:grid;grid-template-columns:248px minmax(0,1fr);gap:0;align-items:stretch;width:100%;max-width:none;height:100vh;min-height:100vh;margin:0;padding:0;border:0;border-radius:0;background:#f7fafc;overflow:hidden;box-shadow:none}.admin-shell>.admin-sidebar{height:100vh;min-height:100vh;max-height:100vh;overflow:hidden;background:linear-gradient(180deg,#fff,#f4f9fb);border:0;border-right:1px solid var(--line);border-radius:0;box-shadow:none;padding:18px 14px;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:16px}.admin-shell>.admin-sidebar .admin-nav{overflow:auto;min-height:0}.admin-brand{display:flex;align-items:center;gap:12px;padding:4px 8px 10px}.admin-brand-mark{width:40px;height:40px;border-radius:12px;object-fit:cover;box-shadow:0 8px 18px #0f8a7a33}.admin-brand strong{display:block;color:var(--navy);font-size:.92rem;letter-spacing:-.02em}.admin-brand span{display:block;color:var(--muted);font-size:.72rem;margin-top:2px}.admin-sidebar-head{display:grid;gap:4px}.admin-sidebar-head strong{color:var(--navy);font-size:.95rem}.admin-sidebar-head span{color:var(--muted);font-size:.74rem;line-height:1.4}.admin-nav{display:grid;gap:4px;align-content:start}.admin-nav button{border:1px solid transparent;background:transparent;color:#355064;border-radius:12px;padding:10px 12px;font-size:.78rem;font-weight:750;text-align:left;transition:.15s ease;display:flex;align-items:center;gap:10px}.admin-nav button svg{width:18px;height:18px;flex-shrink:0;opacity:.85}.admin-nav button:hover{background:#eef5f8;color:var(--navy)}.admin-nav button.active{background:linear-gradient(135deg,#173f61,#0f8a7a);border-color:transparent;color:#fff;box-shadow:0 10px 22px #173f6138}.admin-nav button.active svg{opacity:1}.admin-sidebar-foot{display:grid;gap:8px;padding-top:8px;border-top:1px solid #e6eef3}.admin-sidebar-cta{width:100%;display:flex;align-items:center;gap:10px;text-align:left;border:1px solid #d7e7e3;background:var(--soft-teal);border-radius:14px;padding:12px;color:var(--navy)}.admin-sidebar-cta svg{width:20px;height:20px;flex-shrink:0;color:var(--teal)}.admin-sidebar-cta strong{display:block;font-size:.78rem}.admin-sidebar-cta em{display:block;font-style:normal;font-size:.68rem;color:var(--muted);margin-top:2px}.admin-sidebar-logout{width:100%;display:flex;align-items:center;gap:10px;text-align:left;border:1px solid transparent;background:transparent;border-radius:12px;padding:10px 12px;color:var(--muted);font-size:.8rem;font-weight:650}.admin-sidebar-logout svg{width:18px;height:18px;flex-shrink:0}.admin-sidebar-logout:hover{background:#f4f1ef;color:var(--red);border-color:#f0d9d4}.admin-workspace{min-width:0;min-height:0;height:100vh;display:grid;grid-template-rows:auto minmax(0,1fr);background:#f7fafc;overflow:hidden}.admin-topbar{display:grid;grid-template-columns:minmax(160px,1fr) minmax(220px,420px) auto;gap:14px;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line);background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:5;flex-shrink:0}.admin-topbar-copy h1{margin:0;color:var(--navy);font-size:1.15rem;letter-spacing:-.03em}.admin-topbar-copy p{margin:3px 0 0;color:var(--muted);font-size:.74rem}.admin-search{display:flex;align-items:center;gap:8px;background:#fff;border:0;border-radius:999px;padding:0 14px;min-height:42px}.admin-search svg{width:16px;height:16px;color:var(--muted);flex-shrink:0}.admin-search input{border:0;outline:none;background:transparent;width:100%;font-size:.82rem;color:var(--ink)}.admin-topbar-actions{display:flex;align-items:center;gap:10px;justify-content:flex-end}.admin-icon-btn{position:relative;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:#fff;color:var(--navy);display:grid;place-items:center}.admin-icon-btn svg{width:18px;height:18px}.admin-icon-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--red);color:#fff;font-size:.62rem;font-weight:900;display:grid;place-items:center}.admin-top-user{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;color:inherit;font:inherit;text-align:left;transition:border-color .15s ease,box-shadow .15s ease}.admin-top-user:hover{border-color:#c5d0e0;box-shadow:0 1px 4px #0f234614}.admin-top-user strong{display:block;font-size:.76rem;color:var(--navy);line-height:1.1}.admin-top-user span{display:block;font-size:.66rem;color:var(--muted)}.admin-main{min-width:0;min-height:0;padding:18px 20px 24px;overflow:auto;overscroll-behavior:contain}body.admin-mode{background:#f7fafc;overflow:hidden;height:100%}body.admin-mode .page-wrap.admin-shell{margin:0;padding:0;max-width:none;height:100vh;min-height:100vh;border-radius:0;border:0}@media(max-width:1100px){.page-wrap.admin-shell,.admin-shell{grid-template-columns:1fr;height:100vh}.admin-shell>.admin-sidebar{height:auto;min-height:0;max-height:none;overflow:visible;border-right:0;border-bottom:1px solid var(--line)}.admin-workspace{height:auto;min-height:0;grid-template-rows:auto 1fr}body.admin-mode{overflow:auto}.admin-topbar{grid-template-columns:1fr;gap:10px}}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.kpi-card{padding:16px 18px;border:1px solid var(--line);border-radius:15px;background:#fff;display:grid;gap:6px}.kpi-card span{font-size:.7rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.kpi-card strong{font-size:1.65rem;font-weight:950;color:var(--navy);letter-spacing:-.05em}.metric-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.metric-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid #edf1f4}.metric-list li:last-child{border-bottom:0}.case-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.case-card{border:1px solid var(--line);border-radius:16px;background:#fff;padding:18px;display:grid;gap:14px;box-shadow:0 8px 24px #173f610f}.case-card-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.case-card-title h3{margin:4px 0 0;color:var(--navy);font-size:1.05rem;letter-spacing:-.02em}.case-card-title p{margin:4px 0 0;color:var(--muted);font-size:.78rem}.case-index{display:inline-block;font-size:.68rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:var(--teal)}.case-card-meta{display:flex;gap:8px;flex-wrap:wrap}.case-card-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding-top:4px;border-top:1px solid #edf1f4}.case-card-actions .table-icon-actions{margin-left:auto}.case-session-list{display:grid;gap:7px}.case-session-btn{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;border:1px solid var(--line);background:#fbfcfd;border-radius:11px;padding:10px 12px;text-align:left;transition:.15s ease}.case-session-btn:hover{border-color:#b7c8d4;background:#fff;transform:translateY(-1px)}.case-session-btn strong{display:block;color:var(--navy);font-size:.82rem}.case-session-btn small{display:block;margin-top:2px;color:var(--muted);font-size:.68rem}.case-session-meta{display:flex;align-items:center;gap:6px;flex-shrink:0}.case-editor-tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.case-editor-tabs button{border:1px solid var(--line);background:#fff;color:var(--navy);border-radius:999px;padding:8px 14px;font-size:.76rem;font-weight:800}.case-editor-tabs button.active{background:var(--navy);border-color:var(--navy);color:#fff}.case-editor-students-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.case-student-chips{display:flex;gap:8px;flex-wrap:wrap}.case-student-chips.compact .case-student-chip{padding:4px 8px;font-size:.68rem}.case-student-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid #dce6ec;background:#f7fafc;border-radius:999px;padding:6px 10px;font-size:.74rem;font-weight:750;color:#40515e}.case-student-chip.muted{background:#eef2f5;color:var(--muted)}.case-student-chip.finished{border-color:#d6c4e8;background:#f6f0fb;color:#6b4f85}.case-student-finish-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}.case-student-finish-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid #e4ebf0;border-radius:12px;background:#fff}.case-vignette{margin:0;font-size:.82rem;line-height:1.55;color:#4d5c68}.table-controls{display:grid;gap:14px;margin-bottom:14px}.table-controls-search .table-search{width:100%;max-width:420px;border:1px solid var(--line);border-radius:11px;padding:10px 12px}.table-controls-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:end}.table-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px;font-size:.78rem;color:var(--muted);font-weight:750}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable:hover{background:var(--navy-2);color:#fff}th.sortable.sorted{background:#1a4a6e;color:#fff}th.sortable .sort-indicator{font-size:.72rem;opacity:.75;font-weight:700}th.sortable.sorted .sort-indicator{opacity:1}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.pagination-info{font-size:.76rem;color:var(--muted);font-weight:750}.top-user-name{font-size:.77rem;font-weight:800;max-width:190px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-user-role{font-size:.66rem;color:#ffffffab}.top-btn{border:1px solid rgba(255,255,255,.24);color:#fff;background:#ffffff14;border-radius:11px;padding:9px 12px;font-size:.78rem;font-weight:800;transition:.16s ease}.top-btn:hover{background:#ffffff29;transform:translateY(-1px)}.top-btn-active{background:#ffd666f2;border-color:#ffd666f2;color:#3a2c00}.top-btn-active:hover{background:#ffd978;transform:translateY(-1px)}.top-save-indicator{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:11px;border:1px solid rgba(255,255,255,.2);background:#ffffff1a;color:#e8fff8;font-size:.72rem;font-weight:800;letter-spacing:.01em;animation:top-save-in .18s ease-out}.top-save-saving{opacity:.95}.top-save-saving .top-save-icon{animation:top-save-pulse 1s ease-in-out infinite}.top-save-saved{background:#2eb48c47;border-color:#82e6be73;color:#d9fff0;animation:top-save-in .18s ease-out,top-save-out .4s ease-in 1.2s forwards}.top-save-label{white-space:nowrap}@keyframes top-save-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}@keyframes top-save-out{to{opacity:0;transform:translateY(-3px)}}@keyframes top-save-pulse{0%,to{opacity:1}50%{opacity:.45}}@media(max-width:720px){.top-save-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}}.view-as-student-dock{position:fixed;left:0;right:0;bottom:0;z-index:80;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));background:linear-gradient(180deg,#0f2e49eb,#0f2e49fa);border-top:1px solid rgba(255,214,102,.45);box-shadow:0 -10px 28px #0f2e4947;color:#fff8e6}.view-as-student-dock-inner{max-width:1100px;margin:0 auto;display:flex;gap:14px;align-items:center;justify-content:space-between}.view-as-student-dock-copy{display:grid;gap:2px;min-width:0;font-size:.78rem;line-height:1.4}.view-as-student-dock-copy strong{font-size:.86rem;font-weight:800;letter-spacing:-.01em;color:#ffd978}.view-as-student-dock-copy span{color:#fff8e6e0}.view-as-student-exit{flex:0 0 auto;white-space:nowrap}body.view-as-student-active{padding-bottom:88px}@media(max-width:720px){.view-as-student-dock-inner{flex-direction:column;align-items:stretch;text-align:center}body.view-as-student-active{padding-bottom:120px}}.page-wrap{width:100%;max-width:1800px;margin:0 auto;padding:22px}.breadcrumbs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:.78rem;margin:0 0 14px}.breadcrumbs button{border:0;background:transparent;padding:0;color:var(--navy);font-weight:800}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}.page-head h1{margin:0;color:var(--navy);font-size:clamp(1.6rem,3vw,2.45rem);letter-spacing:-.045em;line-height:1.05}.page-head p{margin:8px 0 0;color:var(--muted);line-height:1.55;max-width:850px}.page-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.card{background:#fffffff0;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:20px}.card-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;padding:18px 20px;border-bottom:1px solid var(--line)}.card-head h2,.card-head h3{margin:0;color:var(--navy);letter-spacing:-.025em}.card-head p{margin:5px 0 0;color:var(--muted);font-size:.8rem;line-height:1.45}.card-body{padding:20px}.empty{padding:35px;text-align:center;border:1px dashed #bccbd5;border-radius:16px;background:#fbfcfd;color:var(--muted)}.empty strong{display:block;color:var(--navy);font-size:1rem;margin-bottom:5px}.btn{border:1px solid var(--line);background:#fff;color:var(--navy);border-radius:11px;padding:9px 12px;font-size:.79rem;font-weight:850;transition:.16s ease;display:inline-flex;align-items:center;justify-content:center;gap:7px;text-decoration:none}.btn:hover{transform:translateY(-1px);box-shadow:0 7px 18px #173f611a;border-color:#b7c8d4}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn.teal{background:var(--teal);border-color:var(--teal);color:#fff}.btn.green{background:var(--green);border-color:var(--green);color:#fff}.btn.warning{background:var(--soft-yellow);border-color:#eed178;color:#7d5700}.btn.danger{background:var(--soft-red);border-color:#e4b7bc;color:#923c45}.btn.ghost{background:transparent}.btn.small{padding:7px 9px;font-size:.72rem}.btn:disabled{opacity:.48;cursor:not-allowed;transform:none;box-shadow:none}.icon-btn{width:35px;height:35px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--navy);display:grid;place-items:center;font-weight:900}.icon-btn:hover{background:#f1f7f7;border-color:#b9d8d3}.icon-btn.danger{color:#9b3841}.icon-btn.danger:hover{background:var(--soft-red);border-color:#e4bbc0}.icon-btn:disabled{opacity:.45;cursor:not-allowed}.table-icon-actions{display:flex;gap:2px;align-items:center;flex-wrap:nowrap}.table-icon-action{width:28px;height:28px;padding:0;border:none;background:transparent;border-radius:8px;color:var(--muted);display:grid;place-items:center;font-size:1rem;font-weight:700;cursor:pointer;transition:background .12s ease,color .12s ease}.table-icon-action:hover{background:#173f6114;color:var(--navy)}.table-icon-action.danger{color:var(--red)}.table-icon-action.danger:hover{background:var(--soft-red);color:#9b3841}.table-icon-action:disabled{opacity:.45;cursor:not-allowed}.tag-list{display:flex;flex-wrap:wrap;gap:5px;max-width:280px}.tag-list .badge{font-size:.64rem;padding:3px 7px;font-weight:750}.student-parallels-field{margin-top:16px;display:grid;gap:8px}.student-parallels-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.student-parallels-list{max-height:min(36vh,280px);overflow:auto;display:grid;gap:4px;border:1px solid var(--line);border-radius:14px;padding:10px;background:#fbfcfd}.student-parallel-option{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:10px;font-size:.78rem;cursor:pointer;border:1px solid transparent;transition:background .12s ease}.student-parallel-option:hover{background:#f0f6f8}.student-parallel-option.is-selected{background:var(--soft-teal);border-color:#b4ddd5}.student-form-grid{margin-top:14px}.student-form-grid .field.full{grid-column:1/-1;max-width:calc(50% - 7px)}@media(max-width:850px){.student-form-grid .field.full{max-width:none}}.grid{display:grid;gap:16px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-auto{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.span-full{grid-column:1/-1}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.stat{padding:17px;border:1px solid var(--line);border-radius:15px;background:#fff}.stat-label{font-size:.7rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.stat-value{font-size:1.7rem;font-weight:950;color:var(--navy);margin-top:6px;letter-spacing:-.05em}.stat-note{font-size:.7rem;color:var(--muted);margin-top:4px}.course-card,.case-card{padding:18px;border:1px solid var(--line);border-radius:16px;background:#fff;transition:.16s ease;position:relative;overflow:hidden}.course-card:before,.case-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--teal)}.course-card:hover,.case-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px #173f611c}.course-card h3,.case-card h3{margin:0 0 6px;color:var(--navy);font-size:1rem}.course-card.parallel-entry{display:flex;align-items:center;justify-content:space-between;gap:14px}.course-card.parallel-entry strong{display:block;color:var(--navy);font-size:.95rem}.course-card.parallel-entry span{display:block;margin-top:4px;color:var(--muted);font-size:.75rem}.card-meta{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 8px;font-size:.67rem;font-weight:850;background:#edf3f6;color:#536672}.badge.teal{background:var(--soft-teal);color:#21675c}.badge.blue{background:var(--soft-blue);color:#2d5874}.badge.yellow{background:var(--soft-yellow);color:#745400}.badge.red{background:var(--soft-red);color:#8b3942}.badge.purple{background:var(--soft-purple);color:#5c4776}.badge.green{background:#eaf5ed;color:#356c48}.card-copy{font-size:.79rem;color:var(--muted);line-height:1.5;min-height:38px}.card-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid #edf1f4}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.case-form-grid .field.full{grid-column:1/-1}.field{display:grid;gap:6px}.field.full{grid-column:1/-1}.label{font-size:.75rem;font-weight:850;color:#4d5c68}input:not([type]),input[type=text],input[type=email],input[type=password],input[type=search],input[type=date],input[type=datetime-local],input[type=number],input[type=time],textarea,select{width:100%;border:1px solid #ccd7df;border-radius:11px;padding:10px 11px;color:var(--ink);background:#fffffff5;transition:border-color .15s ease,box-shadow .15s ease;resize:vertical}input:not([type]):hover,input[type=text]:hover,input[type=email]:hover,input[type=password]:hover,input[type=search]:hover,input[type=date]:hover,input[type=datetime-local]:hover,input[type=number]:hover,input[type=time]:hover,textarea:hover,select:hover{border-color:#aebfc9}input:not([type]):focus,input[type=text]:focus,input[type=email]:focus,input[type=password]:focus,input[type=search]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=number]:focus,input[type=time]:focus,textarea:focus,select:focus{border-color:var(--teal);box-shadow:0 0 0 4px #0f8a7a14}input[type=datetime-local]{min-height:42px}textarea{min-height:110px;line-height:1.5}textarea.compact{min-height:76px}textarea.tall{min-height:190px}textarea.auto-resize{resize:none;overflow:hidden;field-sizing:content}.checkbox-list{display:grid;gap:8px;max-height:230px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fafcfd}.checkbox-row{display:flex;align-items:flex-start;gap:9px;font-size:.8rem;line-height:1.4}.checkbox-row input{margin-top:2px;accent-color:var(--teal);width:17px;height:17px;flex:0 0 auto}.form-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:18px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:#fff}.table-wrap tbody tr.is-clickable{cursor:pointer}.table-wrap tbody tr.is-clickable:hover td{background:#f3f8fa}.table-wrap tbody tr.is-clickable:focus-visible{outline:2px solid var(--teal);outline-offset:-2px}table{width:100%;border-collapse:collapse;min-width:760px}th{padding:11px 10px;background:var(--navy);color:#fff;font-size:.7rem;text-align:left;line-height:1.35;position:sticky;top:0}td{border-top:1px solid var(--line);padding:10px;vertical-align:top;font-size:.77rem}tr:nth-child(2n) td{background:#fafcfd}.table-actions{display:flex;gap:6px;flex-wrap:wrap}.workspace-layout{width:100%;max-width:1600px;margin:0 auto;display:grid;grid-template-columns:280px minmax(0,1fr);gap:22px;padding:22px}.workspace-sidebar{position:sticky;top:92px;height:calc(100vh - 114px);overflow:auto;background:#ffffffe6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(216,224,231,.9);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.workspace-main{min-width:0}.session-side-meta{display:grid;gap:4px;margin-bottom:12px}.session-side-meta strong{color:var(--navy);font-size:.88rem;line-height:1.3}.session-side-meta span{font-size:.72rem;color:var(--muted);line-height:1.35}.progress-line{display:flex;align-items:center;justify-content:space-between;margin:10px 0 7px;font-size:.79rem;font-weight:750;color:var(--muted)}.progress-track{height:9px;border-radius:999px;background:#e6edf2;overflow:hidden}.progress-bar{height:100%;background:linear-gradient(90deg,var(--teal),#46b986);transition:width .28s ease}.mini-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.mini-btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 7px;font-size:.74rem;font-weight:760;color:var(--navy)}.mini-btn:disabled{opacity:.45;cursor:not-allowed}.session-controls{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.section-nav{display:grid;gap:5px}.section-btn{width:100%;text-align:left;border:0;background:transparent;border-radius:11px;padding:9px 10px;display:grid;grid-template-columns:28px minmax(0,1fr) 18px;align-items:center;gap:8px;color:#3f4d59;font-size:.81rem;font-weight:720;transition:.15s ease}.section-btn:hover{background:#eef4f7;color:var(--navy)}.section-btn.active{background:linear-gradient(90deg,var(--soft-blue),#eff8f6);color:var(--navy);box-shadow:inset 3px 0 0 var(--teal)}.section-index{width:25px;height:25px;border-radius:8px;background:#edf2f5;display:grid;place-items:center;font-size:.72rem;font-weight:900}.section-btn.active .section-index{background:var(--navy);color:#fff}.nav-check{font-size:.74rem;color:#b6c1c9;text-align:center}.nav-check.done{color:var(--teal);font-weight:1000}.nav-check.failed{color:var(--red);font-weight:1000}.side-title{font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:8px}.side-block{padding:9px 8px 14px;border-bottom:1px solid var(--line);margin-bottom:10px}.side-block:last-child{border-bottom:0;margin-bottom:0}.page-card{overflow:hidden;background:#fff;border:1px solid rgba(216,224,231,.92);border-radius:22px;box-shadow:var(--shadow);min-height:calc(100vh - 114px)}.page-header{padding:24px 28px 22px;color:#fff;position:relative;overflow:hidden;background:linear-gradient(105deg,var(--navy-2),var(--navy))}.page-header:after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;right:-100px;top:-150px;background:#ffffff14}.page-header.teal{background:linear-gradient(105deg,#0e5f61,var(--teal))}.page-header.green{background:linear-gradient(105deg,#315f43,var(--green))}.page-header.mustard{background:linear-gradient(105deg,#9d6900,var(--mustard))}.page-header.purple{background:linear-gradient(105deg,#4f3e69,var(--purple))}.page-header.red{background:linear-gradient(105deg,#79333a,var(--red))}.page-header.navy{background:linear-gradient(105deg,var(--navy-2),var(--navy))}.header-row{position:relative;z-index:1;display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.eyebrow{font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.12em;color:#ffffffad;margin-bottom:7px}.page-title{font-size:clamp(1.45rem,2.2vw,2.15rem);line-height:1.1;margin:0;font-weight:900;letter-spacing:-.035em}.page-subtitle{margin:8px 0 0;max-width:850px;color:#ffffffc2;font-size:.91rem;line-height:1.55}.page-number{flex:0 0 auto;width:54px;height:54px;border-radius:18px;background:#ffffff24;display:grid;place-items:center;font-weight:900;border:1px solid rgba(255,255,255,.15)}.page-body{padding:24px 28px 32px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:18px}.lock-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border:1px solid #e0bdc2;background:var(--soft-red);border-radius:12px;margin-bottom:14px;color:#78353c;font-size:.77rem;font-weight:750}.status-select-field{display:grid;gap:0}.status-select{width:100%;border:1px solid var(--line);border-radius:11px;padding:9px 11px;background:#fff;color:var(--navy);font-weight:750;font-size:.8rem}.status-select.compact{width:auto;min-width:140px;padding:7px 10px;font-size:.72rem;font-weight:800}.status-select:disabled{opacity:.55;cursor:not-allowed}.release-list{display:grid;gap:9px}.release{border:1px solid #bdd7e6;background:var(--soft-blue);border-radius:13px;padding:12px}.release.hidden-release{border-color:#dbc9e6;background:var(--soft-purple)}.release-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.release h4{margin:0;color:var(--navy);font-size:.84rem}.release p{white-space:pre-wrap;margin:7px 0 0;font-size:.77rem;line-height:1.55}.editor-card{border:1px solid #b8d9d3;background:linear-gradient(135deg,#f5fbfa,#fff);border-radius:16px;padding:15px;margin-bottom:15px}.editor-title{font-weight:900;color:var(--navy);margin-bottom:12px;font-size:.9rem}.entry-list{display:grid;gap:11px}.entry{border:1px solid var(--line);border-radius:15px;background:#fff;overflow:hidden;transition:.15s ease}.entry:hover{border-color:#bdccd5;box-shadow:0 8px 20px #173f6112}.entry-content{padding:14px}.entry-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}.entry-field{min-width:0}.entry-field.full{grid-column:1/-1}.entry-label{font-size:.64rem;text-transform:uppercase;letter-spacing:.07em;font-weight:950;color:var(--muted);margin-bottom:4px}.entry-value{font-size:.8rem;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.entry-value.empty-value{color:#9aa7b1;font-style:italic}.entry-meta{padding:8px 13px;border-top:1px solid #edf1f4;background:#fafcfd;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.entry-authors{font-size:.67rem;color:var(--muted);line-height:1.45}.entry-authors strong{color:#526471}.entry-actions{display:flex;gap:6px;flex-wrap:wrap}.presence-list{display:grid;gap:7px}.presence-person{display:flex;align-items:center;gap:9px;padding:7px;border-radius:11px;background:#f6f9fa}.presence-dot{width:9px;height:9px;border-radius:50%;background:#68ca91;box-shadow:0 0 0 4px #68ca9124;flex:0 0 auto}.presence-dot.offline{background:#c45b63;box-shadow:0 0 0 4px #c45b6324}.presence-name{font-size:.74rem;font-weight:800;color:#40515e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.presence-role{font-size:.63rem;color:var(--muted)}.participant-list{display:grid;gap:7px}.participant{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:11px;font-size:.72rem;border:1px solid transparent;background:#fafcfd}.participant-info{min-width:0;flex:1}.participant-name{font-weight:800;color:#40515e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.online-pill{font-size:.6rem;font-weight:850;color:#2d6b43;background:#e9f6ed;border-radius:999px;padding:3px 7px;flex:0 0 auto}.offline-pill{font-size:.6rem;font-weight:850;color:#923c45;background:#f6dfe2;border-radius:999px;padding:3px 7px;flex:0 0 auto}.picker-toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.picker-search{flex:1;min-width:220px;border:1px solid var(--line);border-radius:11px;padding:10px 12px}.picker-summary{font-size:.75rem;font-weight:750;color:var(--muted)}.picker-table{max-height:min(52vh,480px);overflow:auto}.picker-table tbody tr{cursor:pointer}.picker-table tbody tr:hover td{background:#f3f8fa}.picker-table .picker-row-selected td{background:var(--soft-teal)}.picker-table th:first-child,.picker-table td:first-child{text-align:center}.picker-table input[type=checkbox]{width:16px;height:16px;accent-color:var(--teal)}.callout{border:1px solid #ead184;background:var(--soft-yellow);border-radius:13px;padding:12px 14px;font-size:.77rem;line-height:1.55;color:#6e5512}.callout.info{border-color:#b8d5e6;background:var(--soft-blue);color:#284c66}.callout.teal{border-color:#b4ddd5;background:var(--soft-teal);color:#235d53}.callout.red{border-color:#e4bbc0;background:var(--soft-red);color:#7c343b}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0817248f;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:grid;place-items:center;padding:20px}.modal{width:min(760px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:22px;box-shadow:0 28px 80px #00000047;border:1px solid rgba(255,255,255,.3)}.modal.wide{width:min(1050px,100%)}.modal-head{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:flex-start;position:sticky;top:0;background:#fff;z-index:2}.modal-head h2{margin:0;color:var(--navy);font-size:1.2rem}.modal-head p{margin:5px 0 0;color:var(--muted);font-size:.76rem}.modal-body{padding:20px}.history-list{display:grid;gap:10px}.history-item{border-left:4px solid var(--teal);background:#f7fafb;border-radius:0 12px 12px 0;padding:11px 12px}.history-meta{font-size:.68rem;font-weight:850;color:var(--muted);margin-bottom:5px}.history-change{font-size:.77rem;line-height:1.5;white-space:pre-wrap}.loading{min-height:60vh;display:grid;place-items:center;color:var(--muted)}.spinner{width:42px;height:42px;border:4px solid #dfe9ee;border-top-color:var(--teal);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 12px}@keyframes spin{to{transform:rotate(360deg)}}.toast-root{position:fixed;right:18px;bottom:18px;z-index:200;display:grid;gap:8px;width:min(380px,calc(100vw - 36px))}.toast{padding:12px 14px;border-radius:13px;background:#183c58;color:#fff;box-shadow:0 14px 38px #0003;font-size:.78rem;line-height:1.45;animation:toastIn .2s ease}.toast.error{background:#873a42}.toast.success{background:#2f7049}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(max-width:1180px){.workspace-layout{grid-template-columns:235px minmax(0,1fr);padding:16px;gap:16px}.workspace-sidebar{top:86px;height:calc(100vh - 102px)}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:850px){.auth-shell{grid-template-columns:1fr}.auth-visual{order:-1;min-height:38vh;padding:28px 22px 32px}.auth-visual-copy{text-align:left}.auth-points{justify-content:flex-start}.auth-detail{display:none}.auth-blob{width:min(260px,62%);aspect-ratio:1}.auth-panel{padding:24px 20px 36px}.workspace-layout{display:block;padding:12px}.workspace-sidebar{position:static;height:auto;margin-bottom:12px}.section-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.page-card{min-height:0}.page-body,.page-header{padding-left:18px;padding-right:18px}.page-wrap{padding:14px}.page-head{display:block}.page-actions{justify-content:flex-start;margin-top:13px}.admin-layout{grid-template-columns:1fr}.admin-sidebar{position:static}.kpi-grid,.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3,.grid-4,.form-grid,.entry-fields{grid-template-columns:1fr}.entry-field.full{grid-column:auto}.top-user-name,.top-user-role,.brand-subtitle{display:none}}@media(max-width:560px){.topbar-inner{padding:10px}.brand{min-width:0}.brand-title{font-size:.82rem}.top-btn{padding:8px 9px}.stat-grid,.grid-2,.kpi-grid,.section-nav{grid-template-columns:1fr}.header-row,.page-head{display:block}.page-number{margin-top:12px}.session-controls{justify-content:flex-start;margin-top:12px}.auth-card h2,.auth-visual-copy h1{font-size:1.55rem}.auth-row{align-items:flex-start}}@media print{.topbar,.workspace-sidebar,.page-actions,.session-controls,.entry-actions,.editor-card,.btn,.modal-backdrop,.toolbar,.view-as-student-dock{display:none!important}body{background:#fff}.page-wrap,.workspace-layout{padding:0;display:block}.card,.page-card{box-shadow:none;border:0;border-radius:0}}.section-grid{display:grid;gap:16px}.rating-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.rating-box{border:1px solid var(--line);border-radius:14px;padding:12px;background:#fafcfd}.rating-label{font-size:.76rem;font-weight:850;color:var(--navy);margin-bottom:9px;text-align:center}.rating-options{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.rating-options label{position:relative;cursor:pointer}.rating-options input{position:absolute;opacity:0;pointer-events:none}.rating-options span{display:grid;place-items:center;border:1px solid var(--line);height:34px;border-radius:9px;background:#fff;font-weight:850;font-size:.78rem;transition:background .15s ease,border-color .15s ease,color .15s ease}.rating-options input:checked+span{background:var(--navy);border-color:var(--navy);color:#fff}.rating-options label:hover span{border-color:var(--navy)}.rating-options label:has(input:disabled){cursor:default;opacity:.85}.rating-options label:has(input:disabled):hover span{border-color:var(--line)}@media(max-width:900px){.rating-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.rating-grid{grid-template-columns:1fr}}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.span-2{grid-column:span 2}.panel{border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden}.panel.soft-blue{background:var(--soft-blue)}.panel.soft-teal{background:var(--soft-teal)}.panel.soft-yellow{background:var(--soft-yellow)}.panel.soft-purple{background:var(--soft-purple)}.panel.soft-red{background:var(--soft-red)}.panel-head{padding:10px 13px;background:var(--navy);color:#fff;font-size:.76rem;font-weight:900;text-transform:uppercase;letter-spacing:.045em;display:flex;align-items:center;justify-content:space-between;gap:10px}.panel-head.teal{background:var(--teal)}.panel-head.green{background:var(--green)}.panel-head.mustard{background:var(--mustard)}.panel-head.purple{background:var(--purple)}.panel-head.red{background:var(--red)}.panel-head .panel-head-meta{font-weight:700;text-transform:none;letter-spacing:0;opacity:.85;font-size:.7rem}.panel-body{padding:14px}.panel-body .field+.field{margin-top:12px}.session-datetime-grid{margin-top:12px}.session-student-fields+.session-student-fields{margin-top:4px}.session-student-divider{height:1px;background:var(--line);margin:14px 0 2px}.session-student-callout{margin-top:14px}.readonly-case{white-space:pre-wrap;min-height:160px;line-height:1.65;border:1px solid #cbd7df;border-radius:13px;padding:15px;background:#fff}.empty-state{color:#8795a0;font-style:italic}.case-image{width:100%;max-height:380px;object-fit:contain;border:1px solid var(--line);border-radius:14px;background:#f4f7f9;margin-top:12px;display:block}.case-image-btn{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in;border-radius:14px;margin-top:12px}.case-image-btn:focus-visible{outline:3px solid rgba(15,138,122,.25);outline-offset:2px}.case-image-btn .case-image{margin-top:0;transition:transform .16s ease,box-shadow .16s ease}.case-image-btn:hover .case-image{transform:translateY(-1px);box-shadow:0 10px 24px #173f611f}.case-image-lightbox{display:flex;justify-content:center;align-items:center;padding:4px 0}.case-image-lightbox img{max-width:100%;max-height:min(78vh,920px);object-fit:contain;border-radius:12px;border:1px solid var(--line);background:#f4f7f9}.image-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.hidden-input{display:none}.opening-teacher-hint{margin-top:14px}.problem-component-review{margin-top:8px}.problem-review-pending{margin-top:10px;color:var(--muted);font-size:.74rem;line-height:1.45}.component-badge-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.component-badge{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:8px 13px;font-size:.74rem;font-weight:780;line-height:1.25;border:1px solid transparent}.component-badge-icon{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:.68rem;font-weight:900;flex:0 0 auto}.component-badge.ok{background:#eaf5ed;border-color:#b8dcc4;color:#2d6b45}.component-badge.ok .component-badge-icon{background:#3d8b5a;color:#fff}.component-badge.not-ok{background:#fceef0;border-color:#e8c4c9;color:#8b3942}.component-badge.not-ok .component-badge-icon{background:#c45a65;color:#fff}.component-badge.pending{background:#f4f6f8;border-color:#d5dde3;color:#6b7a85;border-style:dashed}.component-badge.pending .component-badge-icon{background:#e3e9ee;color:#7a8791}.component-review-progress{margin:12px 0 10px;padding:12px 13px;border:1px solid var(--line);border-radius:12px;background:#fbfcfd}.component-review-progress-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.component-review-progress-head .label{margin:0}.component-review-progress-pill{font-size:.68rem;font-weight:850;padding:4px 8px;border-radius:999px;background:#eef2f5;color:var(--navy)}.component-review-progress-pill.done{background:var(--soft-teal);color:#21675c}.component-review-progress-track{height:7px;border-radius:999px;background:#e6edf2;overflow:hidden}.component-review-progress-bar{height:100%;background:linear-gradient(90deg,var(--teal),#46b986);transition:width .22s ease}.problem-teacher-checks{margin-top:0;padding-top:12px;border-top:0}.component-toggle-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}.component-toggle-row{display:grid;grid-template-columns:1fr;gap:10px;align-items:stretch;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}.problem-review-panel{margin-top:14px;border:1px solid var(--line);border-radius:14px;background:#fbfcfd;overflow:hidden}.problem-review-panel.open{border-color:#b4ddd5;box-shadow:0 8px 22px #0f8a7a14}.problem-review-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:12px 14px;border:0;background:transparent;cursor:pointer;font-size:.78rem;font-weight:800;color:var(--navy);text-align:left}.problem-review-summary:hover{background:#f4f8fa}.problem-review-panel.open .problem-review-summary{border-bottom:1px solid var(--line);background:#f4f8fa}.problem-review-panel .problem-teacher-checks,.problem-review-panel .problem-component-review,.problem-review-collapsed{padding:0 14px 14px}.problem-review-collapsed.field-hint{padding:0 14px 14px;margin:0}.readonly-definition{white-space:pre-wrap;line-height:1.55}.component-toggle-label{font-size:.78rem;font-weight:720;color:var(--navy);line-height:1.35}.component-toggle{display:flex;width:100%;border:1px solid #ccd7df;border-radius:999px;overflow:hidden;background:#f7fafb}.component-toggle-btn{border:0;background:transparent;padding:8px 13px;font-size:.71rem;font-weight:850;color:#6b7a85;cursor:pointer;transition:background .14s ease,color .14s ease,box-shadow .14s ease;white-space:nowrap}.component-toggle-btn:hover:not(:disabled){background:#eef4f7;color:var(--navy)}.component-toggle-btn:disabled{opacity:.45;cursor:not-allowed}.component-toggle-btn.ok.active{background:#eaf5ed;color:#2d6b45;box-shadow:inset 0 0 0 1px #b8dcc4}.component-toggle-btn.not-ok.active{background:#fceef0;color:#8b3942;box-shadow:inset 0 0 0 1px #e8c4c9}@media(max-width:720px){.component-toggle-list{grid-template-columns:1fr}.component-toggle{width:100%;justify-content:stretch}.component-toggle-btn{flex:1;text-align:center}}.ruled{background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 28px,rgba(23,63,97,.09) 29px);background-attachment:local;line-height:29px;padding-top:7px}.mini-btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 7px;font-size:.74rem;font-weight:760;color:var(--navy);cursor:pointer;transition:.16s ease}.mini-btn:hover{background:#f1f7f7;border-color:#b9d8d3}.mini-btn.danger{color:#9b3841}.mini-btn.danger:hover{background:var(--soft-red);border-color:#e4bbc0}.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px;align-items:center}.status-pill{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:6px 9px;font-size:.72rem;font-weight:850;background:#eef4f6;color:var(--navy)}.status-pill:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--teal)}.check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}.check-row{display:flex;align-items:flex-start;gap:9px;font-size:.8rem;line-height:1.4}.check-row span small{display:block;color:var(--muted);font-size:.68rem;margin-top:2px}.field-hint{font-size:.68rem;color:var(--muted);margin:5px 0 0;line-height:1.45}.parallel-form{display:grid;gap:20px}.parallel-form-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;border-radius:14px;background:var(--soft-blue);border:1px solid #c8dce8}.parallel-form-summary-text{font-size:.76rem;color:#3a5a72;font-weight:650}.parallel-form-section{display:grid;gap:10px}.parallel-form-section-title{margin:0;font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.parallel-form-fields{border:1px solid var(--line);border-radius:16px;padding:16px;background:#fbfcfd}.parallel-form-grid{align-items:start}.parallel-form-grid .field.full{grid-column:1/-1}.parallel-form-grid input[type=text],.parallel-form-grid input[type=datetime-local],.parallel-form-grid select{width:100%;box-sizing:border-box}.parallel-form-dates-hint{grid-column:1/-1;margin:2px 0 0;font-size:.68rem;color:var(--muted);line-height:1.45}.parallel-form-footer{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;padding-top:16px;border-top:1px solid var(--line)}.parallel-form-footer-summary{margin:0;font-size:.75rem;color:var(--muted)}.parallel-form-footer .form-actions{margin-top:0}.parallel-access-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.parallel-access-panel{border:1px solid var(--line);border-radius:16px;padding:14px;background:#fbfcfd;display:grid;gap:10px;min-height:0}.parallel-access-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.parallel-access-title{display:flex;align-items:center;gap:8px}.parallel-access-title strong{color:var(--navy);font-size:.88rem}.parallel-access-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:var(--navy);color:#fff;font-size:.68rem;font-weight:850}.parallel-access-filter{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none}.parallel-access-filter input{width:14px;height:14px;accent-color:var(--teal)}.parallel-access-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.parallel-access-search{flex:1;min-width:140px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:.78rem;background:#fff}.parallel-access-search:focus{border-color:#9ec9c0;outline:none;box-shadow:0 0 0 3px #0f8a7a1f}.parallel-access-actions{display:flex;gap:4px;flex-shrink:0}.parallel-access-link{border:0;background:none;color:var(--teal);font-size:.72rem;font-weight:750;padding:4px 6px;cursor:pointer;border-radius:6px}.parallel-access-link:hover{background:#0f8a7a14}.parallel-access-link.muted{color:var(--muted)}.parallel-access-meta{font-size:.68rem;color:var(--muted);margin-top:-4px}.parallel-access-empty{margin:0;padding:18px 8px;text-align:center;color:var(--muted);font-size:.76rem;line-height:1.5}.parallel-person-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:11px;border:1px solid transparent;cursor:pointer;transition:background .12s ease,border-color .12s ease}.parallel-person-row:hover{background:#f0f6f8;border-color:#dbe8ee}.parallel-person-row.is-selected{background:var(--soft-teal);border-color:#b4ddd5}.parallel-person-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--teal);flex-shrink:0;margin:0}.parallel-person-row .person-meta{min-width:0;flex:1}.parallel-person-row .person-meta strong{display:block;font-size:.78rem;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.parallel-person-row .person-meta small{display:block;color:var(--muted);font-size:.67rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.check-scroll{max-height:min(42vh,360px);overflow:auto;display:grid;gap:4px;padding-right:4px}@media(max-width:900px){.parallel-access-grid{grid-template-columns:1fr}.parallel-form-grid .field.full{grid-column:auto}.parallel-form-footer{display:block}.parallel-form-footer .form-actions{justify-content:flex-end;margin-top:10px}}.worksheet-entry+.worksheet-entry{margin-top:14px}.worksheet-meta{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center;padding:9px 13px;border-top:1px solid var(--line);background:#fff9;font-size:.7rem;color:var(--muted);line-height:1.45}.worksheet-value{white-space:pre-wrap;font-size:.84rem;color:var(--ink)}.worksheet-empty{border:1px dashed #c3d2dd;border-radius:14px;padding:22px;text-align:center;color:var(--muted);font-size:.82rem;background:#ffffff8c}.worksheet-cell-value{white-space:pre-wrap;font-size:.82rem;line-height:1.45;color:var(--ink)}.worksheet-table td{vertical-align:top}.worksheet-table th.teal{background:var(--teal)}.worksheet-table th.green{background:var(--green)}.editable-worksheet-table td{padding:0}.editable-worksheet-table td textarea{width:100%;border:0;border-radius:0;background:transparent;min-height:78px;box-shadow:none!important;resize:vertical;padding:10px}.editable-worksheet-table td select,.editable-worksheet-table td input{width:100%;min-height:54px;border:0;border-radius:0;background:transparent;box-shadow:none!important;padding:10px}.editable-worksheet-table td input[type=date]{min-height:54px;color:var(--navy)}.editable-worksheet-table td textarea.readonly-cell{color:var(--navy);cursor:default;resize:none}.hierarchy-table tr.draggable-row{cursor:grab}.hierarchy-table tr.hierarchy-row-dragging{opacity:.55}.hierarchy-drag-handle{text-align:center;color:var(--muted);-webkit-user-select:none;user-select:none;vertical-align:middle;font-size:1rem}.evolution-decision-block+.evolution-decision-block{margin-top:16px;padding-top:16px;border-top:1px dashed var(--line)}.evolution-decision-head{margin-bottom:10px}.study-student-filter select{width:100%}.study-block-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:4px}.study-score-field{flex:1;min-width:220px}.study-score-field select{width:100%;min-height:42px}.study-score-badge{display:inline-flex;align-items:center;border-radius:999px;padding:6px 12px;background:var(--soft-blue);color:var(--navy);font-size:.75rem;font-weight:800}.study-score-display{margin-top:4px}.study-score-value{border:1px solid #c4d7e4;border-radius:12px;padding:10px 12px;background:var(--soft-blue);color:var(--navy);font-size:.84rem;font-weight:800}.panel-body input.readonly-cell{border:1px solid var(--line);background:#f8fafb;color:var(--navy);cursor:default}.editable-worksheet-table td .btn{margin:8px}.worksheet-table th.mustard{background:var(--mustard)}.worksheet-table th.purple{background:var(--purple)}.worksheet-table th.navy{background:var(--navy)}.entry-student-badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 10px;background:var(--soft-blue);color:var(--navy);font-size:.72rem;font-weight:800;white-space:nowrap}.notes-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.sticky{border-radius:13px;border:1px solid #e0d5aa;min-height:120px;box-shadow:0 5px 13px #2c353e12;overflow:hidden;position:relative;display:flex;flex-direction:column}.sticky:nth-child(4n+1){background:#fff5d6}.sticky:nth-child(4n+2){background:#e6f4f1;border-color:#bdddd7}.sticky:nth-child(4n+3){background:#eaf2f8;border-color:#c4d7e4}.sticky:nth-child(4n+4){background:#f2ebf7;border-color:#d9c8e5}.sticky textarea{border:0;background:transparent;min-height:138px;border-radius:0;padding:13px;box-shadow:none!important;resize:vertical;width:100%;flex:1;font:inherit;line-height:1.45}.sticky-meta{padding:8px 10px 0}.sticky-remove{position:absolute;top:5px;right:5px;border:0;background:#ffffffb8;color:#6a7480;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;font-weight:900;cursor:pointer}.sticky-remove:hover{background:#fff;color:#c0392b}.analysis-dimensions-block+.analysis-dimensions-block{margin-top:16px;padding-top:16px;border-top:1px dashed var(--line)}.analysis-dimensions-head{margin-bottom:10px}.sticky-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px 0;flex-wrap:wrap}.sticky-body{padding:8px 12px 12px;font-size:.82rem;line-height:1.45;white-space:pre-wrap;flex:1}.sticky-foot{padding:0 12px 10px;font-size:.72rem;color:var(--muted);line-height:1.4}.dimension-entry{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:10px;background:#fbfcfd}.dimension-entry-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;flex-wrap:wrap}.row-actions{display:flex;gap:6px;margin-top:9px;justify-content:flex-end}.dashboard-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.student-card{border:1px solid var(--line);border-radius:14px;padding:12px;background:#fff;box-shadow:0 4px 14px #173f610f}.student-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.student-avatar{width:34px;height:34px;border-radius:10px;background:var(--soft-teal);color:var(--teal);display:grid;place-items:center;font-weight:900;font-size:.85rem}.student-percent{font-size:.78rem;font-weight:800;color:var(--navy)}.student-card h3{margin:0 0 4px;font-size:.88rem;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-meta{font-size:.7rem;color:var(--muted);margin-bottom:8px}.tiny-progress{height:6px;border-radius:999px;background:#e6edf2;overflow:hidden}.tiny-progress div{height:100%;background:linear-gradient(90deg,var(--teal),#46b986)}.session-readonly-grid{display:grid;gap:12px}.hint{font-size:.69rem;color:var(--muted);line-height:1.45}@media(max-width:900px){.grid-2,.grid-3{grid-template-columns:1fr}.span-2{grid-column:auto}.check-grid{grid-template-columns:1fr}.notes-grid,.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.notes-grid,.dashboard-grid{grid-template-columns:1fr}}.session-stats{display:grid;gap:18px}.stats-intro{margin-bottom:4px}.stats-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.stats-kpi .panel-body{padding:14px 16px}.stats-kpi-label{font-size:.68rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:6px}.stats-kpi-value{font-size:1.55rem;font-weight:900;color:var(--navy);line-height:1.1}.stats-kpi-hint{margin-top:6px;font-size:.72rem;color:var(--muted);line-height:1.35}.stats-charts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.stats-chart-card{border:1px solid var(--line);border-radius:16px;background:#fff;padding:14px 16px;box-shadow:var(--shadow-soft)}.stats-chart-card.span-full{grid-column:1 / -1}.stats-chart-head h3{margin:0 0 4px;font-size:.92rem;color:var(--navy)}.stats-chart-head p{margin:0 0 10px;font-size:.74rem;color:var(--muted)}.stats-chart-empty{padding:28px 12px;text-align:center;color:var(--muted);font-size:.82rem}.stats-svg{width:100%;height:auto;display:block}.stats-grid-line{stroke:#e8eef2;stroke-width:1}.stats-axis-label{font-size:9px;fill:#7a8791}.stats-box-whisker{stroke:#31576f;stroke-width:2}.stats-box-rect{fill:#0f8a7a2e;stroke:#0f8a7a;stroke-width:1.5}.stats-box-median{stroke:#173f61;stroke-width:2.5}.stats-box-mean{fill:#9d6900;stroke:#fff;stroke-width:1}.stats-box-outlier{fill:#b44a4a;stroke:#fff;stroke-width:1}.stats-box-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:8px;font-size:.72rem;color:var(--muted)}.stats-line-path{fill:none;stroke:#0f8a7a;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.stats-line-area{fill:#0f8a7a1f}.stats-line-dot{fill:#173f61;stroke:#fff;stroke-width:2}.stats-line-value{font-size:9px;fill:#173f61;font-weight:800}.stats-line-label{font-size:8px;fill:#657583}.stats-hbar-list{display:grid;gap:8px;max-height:320px;overflow:auto}.stats-hbar-row{display:grid;grid-template-columns:minmax(90px,1fr) minmax(0,2fr) 44px;gap:8px;align-items:center}.stats-hbar-label{font-size:.74rem;font-weight:700;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stats-hbar-track{height:10px;border-radius:999px;background:#e8eef2;overflow:hidden}.stats-hbar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#0f8a7a,#46b986)}.stats-hbar-value{font-size:.72rem;font-weight:800;color:var(--navy);text-align:right}.activity-heatmap th,.activity-heatmap td{font-size:.68rem;text-align:center;padding:6px 4px;min-width:28px}.activity-heatmap th:first-child,.activity-heatmap td:first-child{text-align:left;min-width:88px}.activity-heatmap-cell{font-variant-numeric:tabular-nums;font-weight:700;color:var(--navy)}.admin-activity{margin-bottom:24px}.admin-activity-toolbar{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.admin-activity-toolbar label,.admin-activity-filters label{display:grid;gap:4px;font-size:.74rem;color:var(--muted)}.admin-activity-toolbar select,.admin-activity-filters input,.admin-activity-filters select{min-width:160px}.admin-activity-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:14px}.admin-activity-logs{margin-top:18px}.admin-activity-pagination{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:12px;font-size:.82rem}.activity-log-detail{max-width:280px;font-size:.74rem;color:var(--muted)}.stats-eval-bars{display:grid;gap:10px}.stats-eval-row{display:grid;grid-template-columns:110px 1fr 36px;gap:8px;align-items:center}.stats-eval-label{font-size:.74rem;font-weight:700;color:var(--navy)}.stats-eval-track{height:10px;border-radius:999px;background:#e8eef2;overflow:hidden}.stats-eval-fill{height:100%;background:linear-gradient(90deg,#315f43,var(--green))}.stats-eval-value{font-size:.74rem;font-weight:800;text-align:right}.stats-table-wrap,.stats-heatmap-wrap{overflow:auto;max-width:100%}.stats-table,.stats-heatmap{width:100%;border-collapse:collapse;font-size:.78rem}.stats-table th,.stats-table td,.stats-heatmap th,.stats-heatmap td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:middle}.stats-table thead th,.stats-heatmap thead th{background:#eef5f7;color:var(--navy);font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}.stats-mini-bar{height:6px;border-radius:999px;background:#e8eef2;overflow:hidden;margin-bottom:4px}.stats-mini-bar div{height:100%;background:linear-gradient(90deg,var(--teal),#46b986)}.stats-pill{display:inline-flex;padding:3px 8px;border-radius:999px;font-size:.68rem;font-weight:800}.stats-pill.ok{background:#e6f5ee;color:#1f6a4d}.stats-pill.mid{background:#fff4df;color:#8f6500}.stats-pill.low{background:#fdecec;color:#9b3b3b}.stats-cell{text-align:center;font-weight:900;font-size:.82rem}.stats-cell-done{background:#e6f5ee;color:#1f6a4d}.stats-cell-failed{background:#fdecec;color:#9b3b3b}.stats-cell-pending{background:#f4f7f9;color:#8b969e}.stats-cell-total{font-weight:900;color:var(--navy)}.stats-online-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--teal);margin-left:6px;vertical-align:middle}@media(max-width:1100px){.stats-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stats-charts-grid{grid-template-columns:1fr}}@media(max-width:640px){.stats-kpi-grid{grid-template-columns:1fr}}.admin-analytics{display:grid;gap:18px}.admin-donut-wrap{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center}.admin-donut-svg{width:180px;height:180px;display:block;margin:0 auto}.admin-donut-total{font-size:1.35rem;font-weight:900;fill:var(--navy)}.admin-donut-sub{font-size:.62rem;font-weight:700;fill:var(--muted);text-transform:uppercase;letter-spacing:.06em}.admin-donut-legend{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:.76rem}.admin-donut-legend li{display:grid;grid-template-columns:10px 1fr auto auto;gap:8px;align-items:center;color:var(--navy)}.admin-donut-legend strong{font-weight:900}.admin-donut-legend em{font-style:normal;color:var(--muted);font-size:.68rem}.admin-donut-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.admin-vbar-fill{fill:#0f8a7a;opacity:.85}.admin-scatter-dot{fill:#0f8a7a;stroke:#fff;stroke-width:1}.admin-axis-title{font-size:9px;fill:#657583;font-weight:700}.admin-line-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:6px;font-size:.72rem;color:var(--muted)}.admin-line-legend span{display:inline-flex;align-items:center;gap:6px}.admin-line-legend i{width:18px;height:3px;border-radius:999px;display:inline-block}.admin-status-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.admin-status-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}@media(max-width:640px){.admin-donut-wrap{grid-template-columns:1fr}}.student-parallel-option-wrap{display:grid;gap:4px}.student-delegate-toggle{display:inline-flex;align-items:center;gap:6px;margin-left:28px;font-size:.74rem;color:var(--muted);cursor:pointer}.student-delegate-toggle input{margin:0}.user-detail{display:grid;gap:22px}.user-detail-profile{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid var(--line)}.user-detail-profile-main{flex:1;min-width:200px;display:grid;gap:4px}.user-detail-profile-title{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.user-detail-profile-title strong{color:var(--navy);font-size:1.05rem}.user-detail-meta{margin-top:4px;font-size:.76rem;color:var(--muted)}.user-detail-actions{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}.user-detail-section{display:grid;gap:10px}.user-detail-section-head h3{margin:0;color:var(--navy);font-size:.95rem}.user-detail-section-head p{margin:4px 0 0;color:var(--muted);font-size:.74rem}.user-detail-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.user-detail-membership{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fbfcfd}.user-detail-course{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--teal);margin-bottom:2px}.user-detail-membership-badges{display:flex;gap:6px;flex-wrap:wrap}.user-detail-empty{margin:0;padding:10px 0}.user-detail-logs{max-height:320px;overflow:auto}.user-detail-focus-banner{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;padding:8px 12px;border-radius:11px;background:var(--soft-teal);border:1px solid #b8e4dc;font-size:.78rem;color:#1f5f55}.error-text{color:#8b3942;font-size:.82rem;margin:0}.admin-home{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}.admin-home-main{min-width:0;display:grid;gap:16px}.admin-welcome{position:relative;overflow:hidden;border-radius:22px;color:#fff;min-height:240px;background:#123651;box-shadow:0 18px 40px #173f612e;display:grid;align-items:stretch}.admin-welcome-media{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;margin:0;min-height:0}.admin-welcome-media img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:72% 18%;display:block}.admin-welcome-media:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;background:linear-gradient(105deg,#123651 0%,#123651 26%,rgba(18,54,81,.97) 34%,rgba(18,54,81,.88) 42%,rgba(23,90,107,.62) 52%,rgba(15,138,122,.32) 62%,rgba(15,138,122,.12) 72%,transparent 84%)}.admin-welcome-copy{position:relative;z-index:2;padding:28px 32px;display:grid;align-content:center;gap:8px;max-width:min(34rem,62%);min-height:240px}.admin-welcome-kicker{margin:0;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;opacity:.75}.admin-welcome h1{margin:0;font-size:clamp(1.45rem,2.4vw,2rem);letter-spacing:-.04em;font-weight:900}.admin-welcome-lead{margin:0;max-width:42ch;color:#ffffffd1;font-size:.9rem;line-height:1.5}.admin-welcome-lead strong{color:#fff}.admin-welcome-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.admin-welcome-actions .btn{display:inline-flex;align-items:center;gap:8px}.admin-welcome-actions .btn.primary{background:#fff;color:var(--navy);border-color:#fff}.admin-welcome-actions .btn:not(.primary){background:#ffffff1f;color:#fff;border-color:#ffffff38}.admin-tool-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.admin-tool-card{display:grid;grid-template-columns:88px 1fr;gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;box-shadow:0 8px 22px #173f610d}.admin-tool-card h3{margin:0 0 4px;color:var(--navy);font-size:.92rem}.admin-tool-card p{margin:0 0 10px;color:var(--muted);font-size:.74rem;line-height:1.45}.admin-tool-card-media{width:88px;height:88px;border-radius:16px;overflow:hidden;background:#eef5f8}.admin-tool-card-media img{width:100%;height:100%;object-fit:cover;display:block}.admin-tool-card-media-icon{display:grid;place-items:center;background:linear-gradient(160deg,#e7f5f2,#eaf3fa)}.admin-tool-card-media-icon img{width:64px;height:64px;object-fit:contain}.admin-tool-card-accent{background:linear-gradient(160deg,#fff,#f3faf8)}.admin-home-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.admin-home-kpi{display:flex;gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;box-shadow:0 8px 22px #173f610a}.admin-home-kpi-icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;color:var(--navy);flex-shrink:0}.admin-home-kpi-icon svg{width:20px;height:20px}.admin-home-kpi-icon.soft-blue{background:var(--soft-blue);color:#2d5874}.admin-home-kpi-icon.soft-teal{background:var(--soft-teal);color:#1f5f55}.admin-home-kpi-icon.soft-yellow{background:var(--soft-yellow);color:#745400}.admin-home-kpi-icon.soft-purple{background:var(--soft-purple);color:#5c4776}.admin-home-kpi span{display:block;font-size:.68rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.admin-home-kpi strong{display:block;font-size:1.45rem;color:var(--navy);letter-spacing:-.04em;line-height:1.1;margin:2px 0}.admin-home-kpi em{display:block;font-style:normal;font-size:.7rem;color:var(--muted)}.admin-quick-links{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.admin-quick-links button{border:1px solid var(--line);background:#fff;border-radius:16px;padding:14px 10px;display:grid;gap:8px;place-items:center;color:var(--navy);font-size:.72rem;font-weight:800;transition:.15s ease}.admin-quick-links button svg{width:22px;height:22px;color:var(--teal)}.admin-quick-links button:hover{border-color:#b8e4dc;background:var(--soft-teal);transform:translateY(-1px)}.admin-home-panels,.admin-home-alerts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.admin-home-alerts{grid-template-columns:1.2fr .8fr}.admin-home-panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px;box-shadow:0 8px 22px #173f610a}.admin-home-panel-head{margin-bottom:12px}.admin-home-panel-head h3{margin:0;color:var(--navy);font-size:.92rem}.admin-home-panel-head p{margin:4px 0 0;color:var(--muted);font-size:.72rem}.admin-home-activity{list-style:none;margin:0;padding:0;display:grid;gap:10px}.admin-home-activity li{display:grid;grid-template-columns:64px 1fr;gap:10px;align-items:center}.admin-home-activity-date{background:var(--soft-blue);border-radius:12px;padding:8px;text-align:center}.admin-home-activity-date strong{display:block;color:var(--navy);font-size:.78rem}.admin-home-activity-date span{display:block;color:var(--muted);font-size:.62rem}.admin-home-activity strong{display:block;color:var(--navy);font-size:.82rem}.admin-home-donut{display:grid;place-items:center}.admin-home-donut-svg{width:148px;height:148px}.admin-home-donut-value{font-size:22px;font-weight:900;fill:var(--navy)}.admin-home-donut-caption{font-size:10px;fill:var(--muted);font-weight:700}.admin-home-donut-legend{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px;text-align:center}.admin-home-donut-legend strong{display:block;color:var(--navy);font-size:.95rem}.admin-home-donut-legend span{display:block;color:var(--muted);font-size:.66rem}.admin-home-bars{display:flex;align-items:flex-end;gap:10px;height:160px;padding-top:8px}.admin-home-bar{flex:1;display:grid;gap:6px;justify-items:center;height:100%}.admin-home-bar-track{position:relative;width:100%;height:100%;display:flex;align-items:flex-end;justify-content:center;gap:3px}.admin-home-bar-fill,.admin-home-bar-top{width:12px;border-radius:8px 8px 4px 4px}.admin-home-bar-fill{background:#0f8a7a}.admin-home-bar-top{background:#173f61;opacity:.85}.admin-home-bar span{font-size:.62rem;color:var(--muted);font-weight:700;text-align:center}.admin-home-alert-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.admin-home-alert-list li{display:flex;gap:10px;align-items:flex-start}.admin-home-alert-dot{width:10px;height:10px;border-radius:50%;margin-top:5px;flex-shrink:0}.admin-home-alert-dot.high{background:#b44e54}.admin-home-alert-dot.mid{background:#d99b08}.admin-home-alert-dot.low{background:#0f8a7a}.admin-home-alert-list strong{display:block;color:var(--navy);font-size:.82rem}.admin-home-alert-list span{display:block;color:var(--muted);font-size:.72rem;margin-top:2px}.admin-home-status-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.admin-home-status-grid div{background:#f6f9fb;border-radius:12px;padding:10px}.admin-home-status-grid span{display:block;font-size:.66rem;color:var(--muted)}.admin-home-status-grid strong{display:block;margin-top:2px;color:var(--navy);font-size:1rem}.admin-home-rail{display:grid;gap:12px;position:sticky;top:0}.admin-home-calendar-month{text-transform:capitalize}.admin-home-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.admin-home-calendar-dow{text-align:center;font-size:.62rem;font-weight:800;color:var(--muted);padding:4px 0}.admin-home-calendar-day{aspect-ratio:1;display:grid;place-items:center;border-radius:10px;font-size:.72rem;font-weight:700;color:var(--navy)}.admin-home-calendar-day.is-empty{visibility:hidden}.admin-home-calendar-day.is-today{background:linear-gradient(135deg,#173f61,#0f8a7a);color:#fff}.admin-home-schedule{list-style:none;margin:0;padding:0;display:grid;gap:10px}.admin-home-schedule li{display:grid;grid-template-columns:36px 1fr auto;gap:10px;align-items:center}.admin-home-schedule-time{width:36px;height:36px;border-radius:12px;background:var(--soft-teal);color:var(--teal);display:grid;place-items:center}.admin-home-schedule-time svg{width:16px;height:16px}.admin-home-schedule strong{display:block;font-size:.78rem;color:var(--navy)}.admin-home-schedule span{display:block;font-size:.68rem;color:var(--muted)}.admin-home-now{font-style:normal;font-size:.62rem;font-weight:900;color:#1f5f55;background:var(--soft-teal);border-radius:999px;padding:4px 8px}.admin-home-reminders{display:grid;gap:8px}.admin-home-reminder{width:100%;display:grid;grid-template-columns:36px 1fr auto;gap:10px;align-items:center;text-align:left;border:1px solid var(--line);border-radius:14px;padding:10px;background:#fff;color:var(--navy)}.admin-home-reminder-icon{width:36px;height:36px;border-radius:12px;display:grid;place-items:center}.admin-home-reminder-icon svg{width:16px;height:16px}.admin-home-reminder.tone-teal .admin-home-reminder-icon{background:var(--soft-teal);color:var(--teal)}.admin-home-reminder.tone-blue .admin-home-reminder-icon{background:var(--soft-blue);color:#2d5874}.admin-home-reminder.tone-yellow .admin-home-reminder-icon{background:var(--soft-yellow);color:#745400}.admin-home-reminder strong{display:block;font-size:.76rem}.admin-home-reminder em{display:block;font-style:normal;font-size:.68rem;color:var(--muted);margin-top:2px}@media(max-width:1200px){.admin-home{grid-template-columns:1fr}.admin-home-rail{position:static;grid-template-columns:repeat(3,minmax(0,1fr))}.admin-welcome{min-height:280px}.admin-welcome-copy{max-width:100%;min-height:auto;padding:24px 22px 160px}.admin-welcome-media img{object-position:center 22%}.admin-welcome-media:after{background:linear-gradient(180deg,#123651 0%,rgba(18,54,81,.92) 28%,rgba(23,90,107,.55) 48%,rgba(15,138,122,.2) 68%,transparent 88%)}.admin-tool-cards,.admin-home-kpis,.admin-quick-links,.admin-home-panels,.admin-home-alerts{grid-template-columns:1fr 1fr}}@media(max-width:720px){.admin-tool-cards,.admin-home-kpis,.admin-quick-links,.admin-home-panels,.admin-home-alerts,.admin-home-rail{grid-template-columns:1fr}}
