:root{--cream:#f5f0e6;--paper:#fffdf8;--ink:#20231f;--muted:#6d7069;--green:#294f3d;--green2:#3e6a52;--red:#9c2f34;--gold:#b98635;--line:#e3ddd0;--shadow:0 14px 40px rgba(45,39,28,.09)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font:14px/1.45 Inter,Arial,sans-serif}button,input,select,textarea{font:inherit}button,a{transition:.18s ease}.skip-link{position:fixed;left:12px;top:-50px;background:#fff;padding:10px;z-index:100}.skip-link:focus{top:12px}[hidden]{display:none!important}.eyebrow{margin:0 0 7px;color:var(--red);font-size:10px;font-weight:800;letter-spacing:.14em}.muted{color:var(--muted)}
.login-view{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;background:var(--paper)}.login-art{background:linear-gradient(90deg,#15281f55,#15281fc4),url('/assets/school-training.jpeg') center/cover;display:grid;place-items:center;color:#fff;text-align:center;padding:40px}.login-brand img{width:100px;height:100px;background:#fff;border-radius:50%;padding:4px;box-shadow:var(--shadow)}.login-brand p{font-size:12px;letter-spacing:.35em;margin:24px 0 4px}.login-brand h1{font:42px Georgia,serif;margin:0}.login-brand span{display:block;color:#d7e1db;margin-top:12px}.login-card{align-self:center;width:min(410px,calc(100% - 48px));margin:auto}.login-card h2{font:38px Georgia,serif;margin:0}.login-card>p:not(.eyebrow){color:var(--muted);margin-bottom:28px}.login-card label,.stack label{display:grid;gap:7px;font-size:12px;font-weight:700;margin:16px 0}.login-card input,.stack input,.stack select,.stack textarea{width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;padding:12px;outline:none}.login-card input:focus,.stack input:focus,.search input:focus{border-color:var(--green);box-shadow:0 0 0 3px #294f3d18}.demo-hint{font-size:11px;text-align:center;margin-top:16px!important}.primary,.secondary,.button{border:0;border-radius:8px;padding:11px 15px;font-weight:750;cursor:pointer;text-decoration:none;display:inline-block}.primary{background:var(--green);color:#fff}.primary:hover{background:var(--green2)}.login-card .primary{width:100%;margin-top:10px}.secondary{background:#fff;color:var(--green);border:1px solid var(--line)}.button.light{background:#f8f3e8;color:#263b30;margin-top:14px}.button.outline{border:1px solid var(--green);color:var(--green);width:100%;text-align:center}.alert{padding:12px 14px;border-radius:8px;margin-bottom:16px;background:#dcebe1;color:#214631;border:1px solid #b8d2c1}.alert.error{background:#f3dede;color:#75252a;border-color:#dab0b2}
.app{display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:252px;background:#202a24;color:#fff;padding:24px 18px;display:flex;flex-direction:column;z-index:30}.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;padding:0 6px 22px;border-bottom:1px solid #ffffff20}.brand img{width:48px;height:48px;background:#f7f2e8;border-radius:50%;padding:2px}.brand strong,.brand small,.profile strong,.profile small{display:block}.brand strong{font-size:17px}.brand small{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#bec9c1;margin-top:4px}.sidebar nav{display:flex;flex-direction:column;gap:4px;margin-top:22px}.sidebar nav a{display:flex;align-items:center;gap:11px;color:#cbd3ce;text-decoration:none;border-radius:9px;padding:11px 12px;font-size:13px}.sidebar nav a:hover,.sidebar nav a:focus,.sidebar nav a.active{background:#31513f;color:#fff}.sidebar nav a span{width:22px;text-align:center;font-size:18px}.sidebar nav em{margin-left:auto;background:var(--red);font-style:normal;font-size:9px;border-radius:99px;padding:2px 6px}.logout{margin-top:auto;text-align:left;background:transparent;border:0;border-top:1px solid #ffffff20;color:#bcc7c0;padding:15px 10px 10px;cursor:pointer}.logout:hover{color:#fff}.profile{padding-top:10px;display:flex;align-items:center;gap:10px}.profile>span,.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#d8c6a8;color:#493b2d;font-size:11px;font-weight:800;flex:none}.profile strong{font-size:12px}.profile small{font-size:10px;color:#aab7af;margin-top:3px}.workspace{margin-left:252px;width:calc(100% - 252px)}header{height:126px;background:#fffdf8e8;border-bottom:1px solid var(--line);padding:27px 40px;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;backdrop-filter:blur(16px);z-index:10}header h1{font:31px Georgia,serif;margin:0}header>div>p:last-child{color:var(--muted);font-size:13px;margin:5px 0 0}.icon-button,.menu-button{width:42px;height:42px;border-radius:50%;background:#fff;border:1px solid var(--line);cursor:pointer}.menu-button{display:none}main{padding:28px 40px 60px;max-width:1450px;margin:auto}.scrim{display:none}
.loading,.empty{min-height:300px;display:grid;place-items:center;align-content:center;text-align:center;color:var(--muted)}.loading i{width:30px;height:30px;border:3px solid var(--line);border-top-color:var(--green);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.hero{height:270px;border-radius:18px;overflow:hidden;display:grid;grid-template-columns:58% 42%;background:#263b30;color:#fff;box-shadow:var(--shadow)}.hero>div:first-child{padding:34px 38px}.hero>div>span{font-size:9px;font-weight:800;letter-spacing:.14em;background:#ffffff1c;border-radius:5px;padding:6px 9px}.hero h2{font:34px Georgia,serif;margin:20px 0 9px}.hero p{color:#d5ddd8}.hero-photo{background:linear-gradient(90deg,#263b30 0%,transparent 65%),url('/assets/school-training.jpeg') center/cover}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:16px 0}.metrics article{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:15px 18px;display:flex;align-items:center;gap:12px}.metrics b{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:#e3ede7;color:var(--green)}.metrics strong,.metrics small,.person strong,.person small,.attendance-row strong,.attendance-row small{display:block}.metrics small,.person small,.attendance-row small{font-size:10px;color:var(--muted);margin-top:3px}.grid.two{display:grid;grid-template-columns:1.35fr .85fr;gap:16px}.card{background:var(--paper);border:1px solid var(--line);border-radius:15px;padding:22px;box-shadow:0 4px 18px #2f281b08}.section-title{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.section-title h2,.passport h2{font:20px Georgia,serif;margin:0}.section-title a{color:var(--green);font-size:11px;font-weight:800;text-decoration:none}.lesson{width:100%;display:grid;grid-template-columns:65px 1fr 20px;align-items:center;text-align:left;gap:13px;border:0;border-top:1px solid var(--line);padding:12px 0;background:transparent;cursor:pointer}.lesson-art{height:48px;border-radius:8px;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,#234737,#609074)}.lesson strong,.lesson small{display:block}.lesson small{font-size:10px;color:var(--muted);margin:4px 0 8px}.lesson i,.bar{display:block;height:4px;background:#eae5dc;border-radius:4px;overflow:hidden}.lesson i b,.bar i{display:block;height:100%;background:var(--green)}.lesson em{font-size:24px;color:var(--muted);font-style:normal}.passport{text-align:center}.passport>.eyebrow,.passport>h2{text-align:left}.passport>p{color:var(--muted);font-size:12px}.ring{width:112px;height:112px;margin:8px auto 17px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--green) 0 var(--progress),#e7e1d6 var(--progress) 100%);position:relative}.ring:after{content:"";position:absolute;inset:9px;border-radius:50%;background:var(--paper)}.ring div{position:relative;z-index:1}.ring strong,.ring small{display:block}.ring strong{font:25px Georgia,serif}.ring small{text-transform:uppercase;color:var(--muted);font-size:9px}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.toolbar label{font-size:11px;font-weight:700}.toolbar select,select{border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px}.search{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);padding:0 12px;border-radius:8px;width:min(400px,100%)}.search input{border:0;outline:0;padding:11px 0;width:100%}.segmented{background:#e8e1d5;padding:3px;border-radius:9px}.segmented button{border:0;background:transparent;padding:8px 14px;border-radius:7px;color:var(--muted)}.segmented button.active{background:#fff;color:var(--ink);box-shadow:0 2px 8px #0001}.table-card{padding:0;overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:15px 18px;border-bottom:1px solid var(--line)}th{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:#faf7f0}.person{display:flex;align-items:center;gap:10px}.person>span{width:34px;height:34px;background:#e6decf;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:800}.status{font-style:normal;font-size:10px;font-weight:800;padding:4px 8px;border-radius:20px;background:#dcebe1;color:#2a6142}.status.pending{background:#f4e8d1;color:#7d5d22}.class-grid,.video-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.class-card,.video-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;overflow:hidden}.class-card{padding:22px}.class-card h2,.video-card h2{font:20px Georgia,serif;margin:7px 0 15px}.class-card>p:not(.eyebrow){color:var(--muted);font-size:12px}.class-card footer{border-top:1px solid var(--line);padding-top:14px;margin-top:17px;display:flex;justify-content:space-between;align-items:center}.class-card footer span{font-size:11px;color:var(--muted)}.attendance-list{display:grid}.attendance-row{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:10px;padding:13px 0;border-bottom:1px solid var(--line);position:relative}.attendance-row:last-child{border:0}.attendance-row input{opacity:0;position:absolute}.attendance-row i{width:42px;height:24px;border-radius:20px;background:#d8d4cc;position:relative}.attendance-row i:after{content:"";position:absolute;width:18px;height:18px;border-radius:50%;background:#fff;left:3px;top:3px;transition:.2s}.attendance-row input:checked+i{background:var(--green)}.attendance-row input:checked+i:after{left:21px}.attendance-row input:disabled+i{opacity:.7}.message-list{padding:0}.message{width:100%;display:grid;grid-template-columns:42px 1fr auto;gap:12px;align-items:center;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:17px 20px;cursor:pointer}.message:hover{background:#faf7f0}.message>span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#e7dfd1;font-size:10px;font-weight:800}.message strong{font-size:13px}.message p{margin:3px 0 0;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:65vw}.message small{color:var(--muted)}.message.unread{background:#f4f8f5}.message.unread strong:after{content:"";display:inline-block;width:6px;height:6px;background:var(--red);border-radius:50%;margin-left:7px}.video-art{width:100%;height:145px;border:0;background:linear-gradient(135deg,#213e31,#7e9b88);display:grid;place-items:center;position:relative;color:#fff;cursor:pointer}.video-art span{width:48px;height:48px;border-radius:50%;background:#ffffffd9;color:var(--green);display:grid;place-items:center;padding-left:3px}.video-art em{position:absolute;right:10px;bottom:9px;background:#18271edb;border-radius:4px;padding:3px 6px;font-size:10px}.video-card>div{padding:17px}.video-card>div>small{color:var(--red);font-weight:800;font-size:9px;text-transform:uppercase;letter-spacing:.08em}.video-card p{font-size:10px;color:var(--muted)}.progress-head{background:#263b30;color:#fff;border-radius:15px;padding:24px 32px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between}.progress-head h2{font:30px Georgia,serif;margin:0}.progress-head>div>p:last-child{color:#c7d2cc}.progress-head .ring{margin:0}.progress-head .ring:after{background:#263b30}.skill-list article{display:grid;grid-template-columns:220px 1fr 45px;align-items:center;gap:16px;padding:15px 0;border-bottom:1px solid var(--line)}.skill-list small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.skill-list article>span{height:7px;background:#eae5dc;border-radius:9px;overflow:hidden}.skill-list article>span i{display:block;height:100%;background:var(--green)}.skill-list b{text-align:right}dialog{width:min(560px,calc(100% - 30px));border:0;border-radius:14px;padding:0;background:var(--paper);box-shadow:0 25px 70px #0005}dialog::backdrop{background:#152019aa}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}.modal-head h2{font:23px Georgia,serif;margin:0}.modal-head button{border:0;background:transparent;font-size:25px}#modal-body{padding:22px}.player{height:230px;background:#17251e;color:#fff;border-radius:10px;display:grid;place-items:center;align-content:center}.player span{font-size:35px}.player p{color:#bdc9c1}
@media(max-width:1050px){.class-grid,.video-grid{grid-template-columns:repeat(2,1fr)}.grid.two{grid-template-columns:1fr}}@media(max-width:820px){.sidebar{transform:translateX(-100%);transition:.25s}.nav-open .sidebar{transform:none}.workspace{margin:0;width:100%}.scrim{position:fixed;inset:0;background:#0007;z-index:20}.nav-open .scrim{display:block}.menu-button{display:block}header{justify-content:flex-start;gap:15px}header .icon-button{margin-left:auto}main,header{padding-left:22px;padding-right:22px}.login-view{grid-template-columns:1fr}.login-art{min-height:260px}.login-brand img{width:70px;height:70px}.login-brand h1{font-size:31px}}@media(max-width:600px){header{height:auto;position:static;padding:18px 16px}header h1{font-size:25px}header #page-summary{display:none}main{padding:16px}.hero{height:auto;grid-template-columns:1fr}.hero-photo{height:150px;grid-row:1}.hero>div:first-child{padding:25px}.hero h2{font-size:27px}.metrics,.class-grid,.video-grid{grid-template-columns:1fr}.toolbar{align-items:stretch;flex-direction:column}.toolbar .primary{width:100%}.card{padding:17px}.table-card{padding:0}th:nth-child(3),td:nth-child(3){display:none}.message{grid-template-columns:38px 1fr}.message>small{display:none}.message p{max-width:65vw}.progress-head{padding:20px}.progress-head .ring{width:90px;height:90px}.skill-list article{grid-template-columns:1fr 42px}.skill-list article>span{grid-row:2;grid-column:1/3}.login-art{min-height:220px}.login-card{padding:35px 0}.login-brand p{margin-top:12px}.login-brand h1{font-size:27px}}
.button-row{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:1rem}.type-summary{display:grid;gap:.55rem;margin-top:1.15rem;padding-top:1rem;border-top:1px solid var(--line)}.type-summary span{display:flex;align-items:center;justify-content:space-between;gap:1rem}.type-summary small{color:var(--muted)}
.schedule-heading strong,.schedule-heading small{display:block}.schedule-heading strong{font:22px Georgia,serif}.schedule-heading small{color:var(--muted);margin-top:3px}.toolbar .button-row{margin:0}.calendar-list{display:grid;gap:18px}.calendar-day{background:var(--paper);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 4px 18px #2f281b08}.calendar-day>header{position:static;height:auto;padding:13px 18px;background:#f0eadf;border:0;display:flex;justify-content:space-between}.calendar-day>header span{font-size:11px;color:var(--muted)}.calendar-event{display:grid;grid-template-columns:80px 1fr auto;align-items:center;gap:17px;padding:17px 19px;border-top:1px solid var(--line)}.calendar-event time{font-size:16px;font-weight:800;color:var(--green)}.calendar-event time small{display:block;font-size:10px;color:var(--muted);font-weight:500}.calendar-event h2{font:20px Georgia,serif;margin:0}.calendar-event div>p:last-child{margin:5px 0 0;color:var(--muted);font-size:11px}.event-actions{display:flex;gap:8px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.student-picker,.recurrence{border:1px solid var(--line);border-radius:10px;padding:13px}.student-picker>p{font-size:11px;color:var(--muted);margin:0 0 10px}.student-picker>div{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:210px;overflow:auto}.student-picker label{display:flex;align-items:center;gap:8px;margin:0;padding:8px;border-radius:7px;background:#faf7f0}.student-picker input{width:auto}.student-picker span,.student-picker small{display:block}.student-picker small{color:var(--muted);font-weight:400}.recurrence>label{display:flex;grid-template-columns:auto 1fr;align-items:center}.recurrence input[type=checkbox],fieldset input[type=radio]{width:auto}dialog{width:min(640px,calc(100% - 30px));max-height:90vh}#modal-body{max-height:calc(90vh - 70px);overflow:auto}
.communications-toolbar>div strong,.communications-toolbar>div small{display:block}.communications-toolbar>div small{color:var(--muted);margin-top:3px}.communication-intro{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:16px}.communication-intro h2{margin-bottom:0}.communications-table td small{display:block;color:var(--muted);margin-top:5px}.status.queued,.status.prepared{background:#f4e8d1;color:#7d5d22}.status.failed{background:#f4dada;color:#8a2f2f}.recipient-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px}.recipient-summary>div{padding:14px;border:1px solid var(--line);border-radius:10px;background:#faf7f0}.recipient-summary strong,.recipient-summary small{display:block}.recipient-summary strong{font:24px Georgia,serif}.recipient-summary small{color:var(--muted)}.recipient-preview{border:1px solid var(--line);border-radius:10px;padding:12px}.recipient-preview summary{font-weight:700;cursor:pointer}.recipient-preview ul{list-style:none;padding:0;margin:12px 0 0;max-height:190px;overflow:auto}.recipient-preview li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--line)}.recipient-preview li small{color:var(--muted);text-align:right}.recipient-preview h3{font-size:12px;margin:15px 0 0}.confirmation{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center}.confirmation input{width:auto}
@media(max-width:760px){.calendar-event{grid-template-columns:60px 1fr}.event-actions{grid-column:1/3;flex-wrap:wrap}.event-actions>*{flex:1}.communication-intro{display:block}.communications-table th:nth-child(2),.communications-table td:nth-child(2){display:none}.recipient-preview li{display:block}.recipient-preview li small{text-align:left;margin-top:3px}}
@media(max-width:600px){.calendar-event{grid-template-columns:60px 1fr}.event-actions{grid-column:1/3}.event-actions>*{flex:1;text-align:center}.form-row,.student-picker>div{grid-template-columns:1fr}}
.danger{border:1px solid #d7aaad;border-radius:8px;padding:11px 15px;background:#fff;color:var(--red);font-weight:750;cursor:pointer;margin-right:10px}.danger:hover{background:#f8e8e8}.danger:focus-visible{outline:3px solid #9c2f3440;outline-offset:2px}
.student-practice{margin-top:16px}.student-welcome{padding:32px}.student-welcome h2{font:30px Georgia,serif;margin:0 0 8px}.student-calendar .calendar-event{grid-template-columns:80px 1fr}.student-calendar .calendar-event h2{margin-bottom:4px}
:where(a,button,input,select,textarea):focus-visible{outline:3px solid #b9863566;outline-offset:3px}
@media(max-width:600px){.student-welcome{padding:22px}.student-practice .lesson{grid-template-columns:52px 1fr 16px}.student-calendar .calendar-event{grid-template-columns:58px 1fr;gap:12px;padding:15px 14px}.student-calendar .calendar-event h2{font-size:18px}.student-calendar .calendar-day>header{padding:12px 14px}}
