:root{--ink:#16222a;--sand:#f4f1ec;--sand-dark:#e9e3d8;--slate:#5b6770;--primary:#0b5d6e;--sidebar:#15222a;--sidebar-text:#b9c3c9;--sidebar-active:#a5cfdb;--card:#ffffff;--card-tint:#f1f5f8;--action-tint:#fbf7f4;--line:#e3ddd2;--success-fg:#1f4d2b;--success-bg:#dcebdd;--warning-fg:#5c3b00;--warning-bg:#f6e3b8;--danger-fg:#8c2f1b;--danger-bg:#f9e1da;--info-bg:#d0e5e8;--heat-full:#0b5c6f;--heat-good:#d2e3eb;--heat-idle:#f8e3b6;--funnel-track:#ebe6e0;--present-btn:#306b3f;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-md:8px;--radius-lg:12px}*{box-sizing:border-box}body,html{padding:0;margin:0}body{background:var(--sand);color:var(--ink);font-family:Public Sans,system-ui,-apple-system,sans-serif;font-size:14px}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-4)}.muted{color:var(--slate);font-size:13px}.btn{min-height:44px;padding:0 16px;border-radius:var(--radius-md);border:1px solid var(--line);background:var(--card);font-weight:600;font-size:14px;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.pill{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.pill-success{background:var(--success-bg);color:var(--success-fg)}.pill-warning{background:var(--warning-bg);color:var(--warning-fg)}.pill-danger{background:var(--danger-bg);color:var(--danger-fg)}.pill-info{background:var(--info-bg);color:var(--primary)}.locale-switch{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--card)}.locale-switch button{min-height:36px;min-width:44px;padding:0 12px;border:none;border-radius:999px;background:transparent;color:var(--slate);font-weight:700;font-size:13px;line-height:1;cursor:pointer;transition:background .2s,color .2s}.locale-switch button:hover{color:var(--ink);background:var(--card-tint)}.locale-switch button[aria-pressed=true]{background:#4ce5bf;color:#073143}.locale-switch button[aria-pressed=true]:hover{background:#91f4d9}.avatar{width:40px;height:40px;border-radius:50%;background:#d2e4e6;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--ink);flex-shrink:0}input,select,textarea{font-family:inherit;font-size:14px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-md);background:#fff;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:1px}label{font-size:13px;color:var(--slate);display:block;margin-bottom:4px}img,svg{max-width:100%}.app{display:flex;min-height:100vh;min-height:100dvh}.app-sidebar{width:248px;background:var(--sidebar);color:#fff;display:flex;flex-direction:column;padding:16px;flex-shrink:0;position:-webkit-sticky;position:sticky;top:0;height:100vh;height:100dvh}.app-sidebar-brand{padding:16px 8px;font-size:20px;font-weight:700;display:flex;align-items:center;justify-content:space-between}.app-brand-school{display:flex;align-items:center;min-width:0}.app-brand-logo{display:inline-flex;align-items:center;background:#fff;border-radius:8px;padding:6px 10px}.app-nav{flex-grow:1;overflow-y:auto}.app-nav a{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:8px;margin-bottom:4px;font-size:14px;font-weight:500;color:var(--sidebar-text)}.app-nav a:hover{background:rgba(255,255,255,.06)}.app-nav a[aria-current=page]{font-weight:700;color:var(--ink);background:var(--sidebar-active)}.app-sidebar-foot{border-top:1px solid rgba(255,255,255,.2);padding-top:12px;font-size:12px;color:var(--sidebar-text)}.app-body{flex-grow:1;display:flex;flex-direction:column;min-width:0}.app-header{display:flex;align-items:center;gap:16px;padding:12px 32px;flex-wrap:wrap}.app-unit{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}.app-search{flex:1 1 280px;max-width:420px}.app-close-btn,.app-menu-btn{display:none;min-width:44px;min-height:44px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--card);font-size:20px;line-height:1;align-items:center;justify-content:center}.app-close-btn{background:transparent;border-color:rgba(255,255,255,.25);color:#fff}.app-backdrop{display:none}.app-alert{margin:0 32px}.app-main{padding:32px;flex-grow:1}.app-main-inner{max-width:1400px;margin:0 auto}@media (max-width:1439px){.app-sidebar{width:224px}}@media (max-width:1023px){.app-sidebar{position:fixed;left:0;top:0;bottom:0;z-index:120;width:min(300px,85vw);transform:translateX(-100%);transition:transform .2s ease;box-shadow:none}.app-sidebar[data-open=true]{transform:translateX(0);box-shadow:0 0 40px rgba(0,0,0,.35)}.app-backdrop[data-open=true]{display:block;position:fixed;inset:0;background:rgba(22,34,42,.45);z-index:110}.app-close-btn,.app-menu-btn{display:inline-flex}.app-header{padding:12px 20px;gap:12px}.app-alert{margin:0 20px}.app-main{padding:20px}}@media (max-width:639px){.app-header{padding:8px 12px;gap:8px}.app-unit{max-width:calc(100vw - 150px);font-size:15px}.app-search{order:10;flex-basis:100%;max-width:none}.app-alert{margin:0 12px}.app-main{padding:12px}}.page-title{font-size:28px;font-weight:700;margin:0}.page-header{justify-content:space-between;align-items:center;margin-bottom:16px}.page-actions,.page-header{display:flex;flex-wrap:wrap;gap:8px}@media (max-width:639px){.page-title{font-size:22px}.page-header{align-items:flex-start}.page-actions{width:100%}.page-actions>.btn,.page-actions>button{flex:1 1 auto}input,select,textarea{font-size:16px}}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px}.grid-2,.grid-3-2{display:grid;gap:16px;align-items:start}.grid-3-2{grid-template-columns:minmax(0,3fr) minmax(0,2fr);grid-gap:16px}.tiles{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:12px}.tiles,.tiles-sm{display:grid;gap:12px}.tiles-sm{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:12px}@media (max-width:1023px){.grid-2,.grid-3-2{grid-template-columns:minmax(0,1fr)}}.grid-2>*,.grid-3-2>*,.tiles-sm>*,.tiles>*{min-width:0}@media (max-width:639px){.tiles,.tiles-sm{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.card{overflow-wrap:break-word}.pill{white-space:normal;max-width:100%}}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-wrap table{min-width:520px}.hscroll{display:flex;gap:12px;overflow-x:auto;align-items:flex-start;padding-bottom:8px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.hscroll>*{scroll-snap-align:start;flex-shrink:0}.board-col{width:290px}@media (max-width:639px){.hscroll{scroll-snap-type:x mandatory}.board-col{width:85vw}}.week{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));grid-gap:10px;gap:10px;overflow-x:auto;align-items:start;margin-top:12px}@media (max-width:1279px){.week{display:flex;scroll-snap-type:x proximity}.week>*{width:200px;flex-shrink:0;scroll-snap-align:start}}@media (max-width:639px){.week{flex-direction:column;overflow-x:visible}.week>*{width:100%}.week-day-empty{display:none}}.split{display:flex;gap:16px;height:calc(100vh - 230px);min-height:480px}.split-list{width:340px;flex-shrink:0;overflow-y:auto}.split-detail{flex-grow:1;min-width:0;overflow-y:auto}.split-back{display:none}@media (max-width:1023px){.split{height:auto;min-height:0}.split-list{width:100%}.split:not([data-selected=true]) .split-detail,.split[data-selected=true] .split-list{display:none}.split-back{display:inline-flex;margin-bottom:12px}}.dialog-backdrop{position:fixed;inset:0;background:rgba(22,34,42,.4);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.dialog{background:var(--sand);border-radius:12px;padding:24px;max-height:85vh;max-height:85dvh;overflow-y:auto;width:100%}@media (max-width:639px){.dialog-backdrop{align-items:flex-end;padding:0}.dialog{border-radius:16px 16px 0 0;padding:20px 16px calc(20px + env(safe-area-inset-bottom));max-height:92vh;max-height:92dvh}}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.row-main{flex:1 1 200px;min-width:0}@media (max-width:639px){.row-actions{width:100%;display:flex;gap:8px;flex-wrap:wrap}.row-actions>.btn,.row-actions>button{flex:1 1 auto}}.only-mobile{display:none}@media (max-width:639px){.hide-mobile{display:none!important}.only-mobile{display:initial}}.print-only{display:none}@media print{@page{size:A4;margin:14mm}body{background:#fff!important}.app-alert,.app-backdrop,.app-header,.no-print,aside,nav{display:none!important}main{padding:0!important}.table-wrap{overflow:visible}.table-wrap table{min-width:0}.print-only{display:block}table{page-break-inside:auto}tr{page-break-inside:avoid}}.lgpd{position:fixed;left:20px;bottom:20px;z-index:80;max-width:520px;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:14px;padding:18px 20px;box-shadow:0 18px 40px rgba(0,21,34,.3)}.lgpd p{margin:0 0 14px;font-size:14px;line-height:1.55;color:var(--slate)}.lgpd-actions{display:flex;align-items:center;justify-content:flex-end;gap:18px;flex-wrap:wrap}.lgpd-view{font-weight:700;font-size:14px;color:var(--primary)}.lgpd-view,.privacy-link{text-decoration:underline;text-underline-offset:3px}.privacy-link{font-size:13px;color:var(--slate)}.highcode-credit{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:inherit;opacity:.85;text-decoration:none}.highcode-credit:hover{opacity:1}.highcode-credit img{display:block;height:24px;width:auto}.legal-page{min-height:100dvh;background:var(--sand)}.legal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;max-width:860px;margin:0 auto}.legal{max-width:760px;margin:0 auto;padding:16px 16px 64px;line-height:1.6}.legal h1{font-size:30px;margin:4px 0 12px}.legal h2{font-size:19px;margin:28px 0 8px}.legal ul{padding-left:20px}.legal li{margin-bottom:6px}.legal-kicker{text-transform:uppercase;letter-spacing:.06em;font-size:12px;font-weight:700;color:var(--primary);margin:0}@media (max-width:720px){.lgpd{left:12px;right:12px;bottom:12px;max-width:none;padding:16px}.lgpd-actions{justify-content:space-between}}