@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap";:root{color:#252522;font-synthesis:none;background:#f6f4ee;font-family:DM Sans,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #b35e68}h1,h2,p{margin-top:0}h1,h2{font-family:Manrope,system-ui,sans-serif}h1{letter-spacing:-.045em;margin-bottom:8px;font-size:clamp(27px,3vw,38px);line-height:1.16}h2{letter-spacing:-.04em}.shell{grid-template-columns:230px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#fffaf7;background:#35252b;flex-direction:column;min-height:100vh;padding:28px 16px 18px;display:flex}.brand,.login-brand{align-items:center;gap:12px;padding:0 12px;display:flex}.brand-mark{color:#59343b;letter-spacing:-.12em;background:#efd0c3;border-radius:12px;place-items:center;width:39px;height:39px;padding-right:3px;font:800 26px Manrope,system-ui,sans-serif;display:grid}.brand strong,.login-brand strong{letter-spacing:.2em;font:800 16px/1.1 Manrope,system-ui,sans-serif;display:block}.brand span,.login-brand span{color:#d5bfc5;letter-spacing:.06em;margin-top:4px;font-size:11px;display:block}.side-section-label{letter-spacing:.18em;color:#aa9299;margin:56px 12px 14px;font-size:10px;font-weight:800}.sidebar nav{gap:6px;display:grid}.nav-item{appearance:none;color:#d2c5c8;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:13px;width:100%;padding:13px 14px;font-size:13px;font-weight:700;display:flex}.nav-item.active{color:#4b2932;background:#f5eae4}.sidebar-bottom{margin-top:auto}.workspace-chip{border:1px solid #604a50;border-radius:12px;align-items:center;gap:9px;padding:13px 11px;display:flex}.workspace-dot{background:#a6c8ac;border-radius:50%;width:9px;height:9px;box-shadow:0 0 0 3px #426047}.workspace-chip strong,.workspace-chip span{display:block}.workspace-chip strong{font-size:12px}.workspace-chip span{color:#c0a9b0;margin-top:3px;font-size:11px}.signout{color:#d2c5c8;background:0 0;border:0;align-items:center;gap:10px;width:100%;margin-top:12px;padding:14px;font-size:13px;display:flex}.signout:hover{color:#fff}.main{width:100%;min-width:0;max-width:1800px;margin:auto;padding:34px clamp(20px,3.3vw,54px) 20px}.topbar{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:29px;display:flex}.top-kicker{color:#8c6771;letter-spacing:.18em;margin-bottom:12px;font-size:10px;font-weight:800;display:block}.topbar p{color:#74716f;margin-bottom:0;font-size:14px}.topbar-right{align-items:center;gap:16px;margin-top:8px;display:flex}.timezone-pill{color:#575250;white-space:nowrap;background:#fffefa;border:1px solid #e5e0d8;border-radius:30px;align-items:center;gap:7px;padding:8px 12px;font-size:12px;font-weight:700;display:flex}.avatar{color:#5b3540;background:#dfbdad;border-radius:50%;place-items:center;width:38px;height:38px;font-weight:800;display:grid}.preview-banner,.error-banner,.notice{border-radius:10px;align-items:center;gap:10px;margin-bottom:18px;padding:12px 16px;font-size:13px;display:flex}.preview-banner{color:#64481d;background:#fbefdd;border:1px solid #f1dbb9}.preview-banner strong{white-space:nowrap}.error-banner{color:#843c38;background:#fde9e8;border:1px solid #e9bdbb}.notice{color:#2d6038;background:#e9f4eb;border:1px solid #c5e0ca}.notice button{color:inherit;background:0 0;border:0;place-items:center;margin-left:auto;display:grid}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:22px;display:grid}.stat{background:#fffefa;border:1px solid #ece8e0;border-radius:14px;align-items:center;gap:17px;min-height:104px;padding:18px 20px;display:flex;box-shadow:0 3px 20px #3e31210a}.stat-icon{border-radius:12px;flex:none;place-items:center;width:44px;height:44px;display:grid}.stat span,.stat strong{display:block}.stat span{color:#77716c;font-size:12px;font-weight:700}.stat strong{letter-spacing:-.05em;margin-top:4px;font:800 25px/1.2 Manrope,system-ui,sans-serif}.calendar-panel,.directory-card{background:#fffefa;border:1px solid #e9e5de;border-radius:16px;overflow:hidden;box-shadow:0 7px 30px #3e31210a}.calendar-toolbar{justify-content:space-between;align-items:center;gap:20px;padding:24px 25px 19px;display:flex}.eyebrow{letter-spacing:.18em;color:#a5616f;text-transform:uppercase;margin:0 0 8px;font-size:10px;font-weight:800}.calendar-toolbar h2{margin:0;font-size:20px}.toolbar-actions{align-items:center;gap:12px;display:flex}.week-switch{border:1px solid #e7e2da;border-radius:9px;align-items:center;display:flex;overflow:hidden}.week-switch button{color:#5d5351;background:0 0;border:0;place-items:center;min-width:36px;height:37px;display:grid}.week-switch .today-button{padding:0 8px;font-size:12px;font-weight:800}.button{white-space:nowrap;border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:7px;min-height:38px;padding:9px 15px;font-size:12px;font-weight:800;transition:background .18s,transform .18s;display:inline-flex}.button:hover:not(:disabled){transform:translateY(-1px)}.button-primary{color:#fff;background:#9a5362;border-color:#9a5362}.button-primary:hover:not(:disabled){background:#804151}.button-primary:disabled{opacity:.6}.button-quiet{color:#4e4846;background:#fff;border-color:#ddd8d1}.filters{background:#fcfaf6;border-top:1px solid #f0ede7;border-bottom:1px solid #ebe8e2;align-items:center;gap:10px;padding:13px 25px;display:flex}.search-field,.filter-field{color:#a29a93;background:#fff;border:1px solid #e4dfd7;border-radius:9px;align-items:center;gap:7px;height:37px;padding:0 10px;display:flex}.search-field{width:min(320px,100%)}.search-field input{color:#302b2a;background:0 0;border:0;outline:none;width:100%;min-width:0;font-size:12px}.filter-field select{color:#544d4b;background:0 0;border:0;outline:none;min-width:100px;font-size:12px}.legend{color:#77716e;align-items:center;gap:17px;margin-left:auto;font-size:11px;font-weight:700;display:flex}.legend span{white-space:nowrap;align-items:center;gap:6px;display:flex}.legend-dot{border-radius:50%;width:7px;height:7px;display:inline-block}.week-grid{grid-template-columns:repeat(7,minmax(0,1fr));min-height:445px;display:grid}.day-column{border-right:1px solid #eeeae4;min-width:0}.day-column:last-child{border-right:0}.day-heading{text-align:center;border-bottom:1px solid #efebe5;min-height:91px;padding:16px 12px 13px}.day-heading span,.day-heading strong,.day-heading small{display:block}.day-heading span{color:#76716e;text-transform:uppercase;font-size:11px;font-weight:800}.day-heading strong{letter-spacing:-.06em;border-radius:50%;place-items:center;width:34px;height:34px;margin:1px auto;font:800 23px/1.25 Manrope,system-ui,sans-serif;display:grid}.day-column.current .day-heading strong{color:#fff;background:#9a5362}.day-heading small{color:#a09994;font-size:10px}.day-events{align-content:start;gap:8px;padding:11px 7px;display:grid}.event-card{text-align:left;color:#4a343a;background:#fbf2f3;border:1px solid #efd9de;border-left:3px solid #ae6879;border-radius:8px;gap:4px;width:100%;min-width:0;padding:9px 8px;transition:transform .15s,box-shadow .15s;display:grid}.event-card:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 5px 13px #55353d1c}.event-card:disabled{opacity:1}.event-card.assessment{color:#62472c;background:#fff5e8;border-color:#f0ddc1 #f0ddc1 #f0ddc1 #b7804a}.event-card.blocked{color:#40515c;background:#f0f3f5;border-color:#dbe2e6 #dbe2e6 #dbe2e6 #899aa5}.event-time{white-space:nowrap;font-size:10px;font-weight:800}.event-card strong{overflow-wrap:anywhere;font-size:12px;line-height:1.27}.event-person,.event-location{opacity:.82;overflow-wrap:anywhere;font-size:10px}.event-location{align-items:flex-start;gap:2px;line-height:1.25;display:flex}.event-location svg{flex:none}.empty-day{text-align:center;color:#b2aaa5;margin-top:23px;font-size:11px}.app-footer{color:#9b938d;text-align:right;margin-top:20px;font-size:11px}.directory-layout{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.directory-card{min-height:280px;padding:22px}.section-title{color:#9a5362;border-bottom:1px solid #eee8e2;align-items:center;gap:12px;padding-bottom:17px;display:flex}.section-title h2{color:#2d2928;margin:0;font-size:17px}.section-title p{color:#918781;margin:3px 0 0;font-size:11px}.directory-list{max-height:330px;overflow:auto}.directory-row{border-bottom:1px solid #f2efeb;align-items:center;gap:11px;min-height:54px;font-size:12px;font-weight:700;display:flex}.directory-row:last-child{border-bottom:0}.directory-row span{overflow-wrap:anywhere;min-width:0}.directory-row small{color:#a39a95;white-space:nowrap;margin-left:auto;font-size:10px}.mini-avatar{color:#9b5664;background:#f4e1e6;border-radius:9px;flex:none;place-items:center;width:30px;height:30px;font-weight:800;display:grid}.list-empty{color:#938c85;margin:24px 0;font-size:12px}.add-card form{gap:13px;padding-top:18px;display:grid}.add-card form .button{justify-self:start}.editor label,.login-card label,.add-card label{color:#5c5551;gap:6px;font-size:12px;font-weight:800;display:grid}.editor input,.editor select,.editor textarea,.login-card input,.add-card input,.add-card select{color:#2b2928;background:#fff;border:1px solid #dcd7d0;border-radius:8px;width:100%;min-height:39px;padding:8px 10px;font-size:13px}.editor textarea{resize:vertical}.optional{color:#a49b95;font-weight:500;display:inline}.form-error{color:#a23637;background:#ffefee;border-radius:7px;margin:0;padding:9px 11px;font-size:12px}.modal-backdrop{z-index:20;background:#2d2228a8;justify-content:flex-end;display:flex;position:fixed;inset:0}.editor{background:#fffefa;width:min(100%,520px);height:100vh;padding:30px;overflow:auto;box-shadow:-18px 0 44px #0002}.editor-heading{justify-content:space-between;align-items:flex-start;margin-bottom:24px;display:flex}.editor-heading h2{margin:0;font-size:24px}.icon-button{color:#564b49;background:#f6f2ee;border:0;border-radius:9px;place-items:center;width:36px;height:36px;display:grid}.editor-form{gap:17px;display:grid}.form-grid{grid-template-columns:1fr 1fr;gap:13px;display:grid}.editor-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.editor-actions .spacer{flex:1}.text-danger{color:#a44848;background:0 0;border:0;padding:9px 0;font-size:12px;font-weight:800}.login-shell{background:#f5f2eb;place-items:center;min-height:100vh;padding:24px;display:grid}.login-shell>div{width:min(100%,410px)}.login-brand{color:#3a2930;justify-content:center;margin-bottom:-5vh}.login-brand span{color:#937981}.login-card{background:#fffefa;border:1px solid #e8e2da;border-radius:17px;width:min(100%,410px);padding:34px;box-shadow:0 22px 55px #3a2a3017}.login-card h1{font-size:28px}.login-card>p:not(.eyebrow){color:#817770;margin-bottom:24px;font-size:13px}.login-card form{gap:15px;display:grid}.login-card .full{width:100%;margin-top:5px}.loading-screen{color:#8b5a65;place-items:center;min-height:100vh;font-weight:800;display:grid}@media (width<=1150px){.week-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.day-column:nth-child(4){border-right:0}.day-column:nth-child(n+5){border-top:1px solid #eeeae4}.legend{display:none}}@media (width<=800px){.shell{grid-template-columns:1fr}.sidebar{flex-direction:row;align-items:center;gap:18px;min-height:0;padding:12px 16px}.brand{padding:0}.sidebar .side-section-label,.sidebar-bottom{display:none}.sidebar nav{margin-left:auto;display:flex}.nav-item{width:auto;padding:10px}.main{padding:24px 16px}.topbar-right{display:none}.stats{gap:8px}.stat{gap:9px;min-height:84px;padding:13px}.stat-icon{width:34px;height:34px}.stat strong{font-size:21px}}@media (width<=620px){.sidebar{flex-wrap:wrap;align-items:flex-start}.sidebar nav{width:100%;margin-left:0}.topbar{margin-bottom:20px}.topbar p{line-height:1.5}.stats{grid-template-columns:1fr 1fr}.stat:last-child{grid-column:span 2}.calendar-toolbar{flex-direction:column;align-items:flex-start;padding:19px 15px}.toolbar-actions{justify-content:space-between;width:100%}.filters{flex-wrap:wrap;padding:11px 15px}.search-field{width:100%}.week-grid{grid-template-columns:1fr}.day-column,.day-column:nth-child(4){border-top:1px solid #eeeae4;border-right:0;grid-template-columns:75px 1fr;min-height:92px;display:grid}.day-column:first-child{border-top:0}.day-heading{border-bottom:0;border-right:1px solid #eeeae4;min-height:0;padding:11px 5px}.day-events{padding:10px}.empty-day{margin:18px 0}.event-card{padding:10px}.directory-layout{grid-template-columns:1fr}.editor{padding:22px 16px}.form-grid{gap:8px}.preview-banner{flex-direction:column;align-items:flex-start;gap:3px}.timezone-pill{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.button-danger{color:#fff;background:#a44848;border-color:#a44848}.button-danger:hover:not(:disabled){background:#8e3636}.cancel-confirm{background:#fff1ef;border:1px solid #ebc9c4;border-radius:9px;padding:13px}.cancel-confirm p{color:#803f39;margin:0 0 10px;font-size:12px}.cancel-confirm div{flex-wrap:wrap;gap:8px;display:flex}.button,.week-switch button,.icon-button,.nav-item,.signout{min-height:44px}.search-field,.filter-field{height:auto;min-height:44px}.ownership-page{gap:22px;display:grid}.ownership-hero{background:#fffefa;border:1px solid #e9e2d9;border-radius:17px;justify-content:space-between;align-items:center;gap:20px;padding:27px 30px;display:flex;box-shadow:0 7px 30px #3e31210a}.ownership-hero h2{margin:0 0 8px;font-size:25px}.ownership-hero p:last-child{color:#706965;max-width:650px;margin:0;font-size:13px;line-height:1.55}.ownership-hero-mark{color:#7b4754;text-align:center;background:#f8ecea;border-radius:13px;justify-items:center;gap:8px;min-width:170px;padding:18px 22px;display:grid}.ownership-hero-mark span{font-size:11px;font-weight:800}.ownership-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.ownership-summary>div{background:#fffefa;border:1px solid #e9e5de;border-radius:13px;padding:17px 20px}.ownership-summary span{color:#7b736e;font-size:11px;font-weight:800;display:block}.ownership-summary strong{letter-spacing:-.05em;margin-top:4px;font:800 25px Manrope,system-ui,sans-serif;display:block}.ownership-summary small{color:#958a84;font-size:13px}.ownership-section{background:#fffefa;border:1px solid #e9e5de;border-radius:16px;padding:23px 25px;box-shadow:0 7px 30px #3e31210a}.ownership-section-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;display:flex}.ownership-section-head h2,.family-access h2{margin:0;font-size:19px}.ownership-section-head p:last-child,.family-access p:not(.eyebrow):not(.form-error){color:#827972;margin:7px 0 0;font-size:12px;line-height:1.5}.subtle-tag{color:#60705c;white-space:nowrap;background:#f2f4ef;border-radius:30px;align-items:center;gap:6px;padding:8px 10px;font-size:10px;font-weight:800;display:inline-flex}.role-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;display:grid}.role-card{border:1px solid #eee8e1;border-radius:12px;flex-direction:column;min-height:168px;padding:17px;display:flex}.role-card-top{justify-content:space-between;align-items:center;margin-bottom:13px;display:flex}.role-symbol{color:#9a5362;background:#f6e8e9;border-radius:9px;place-items:center;width:32px;height:32px;display:grid}.role-state{white-space:nowrap;border-radius:30px;align-items:center;gap:3px;padding:5px 7px;font-size:9px;font-weight:800;display:inline-flex}.role-state.active{color:#4b7652;background:#e8f3e9}.role-state.planned{color:#8d8178;background:#f3efea}.role-card>strong{font:800 14px Manrope,system-ui,sans-serif}.role-card>p{color:#827972;margin:5px 0 12px;font-size:11px;line-height:1.45}.role-count{margin-top:auto;font:800 18px Manrope,system-ui,sans-serif}.role-count span{color:#9d938c;font:700 10px DM Sans,system-ui,sans-serif}.ownership-table-wrap{border:1px solid #eee9e3;border-radius:10px;overflow:auto}.ownership-table{border-collapse:collapse;width:100%;min-width:520px}.ownership-table th{text-align:left;color:#827770;letter-spacing:.06em;text-transform:uppercase;background:#faf8f4;padding:12px 14px;font-size:10px}.ownership-table td{border-top:1px solid #f0ece7;padding:10px 14px;font-size:12px}.ownership-person{align-items:center;gap:9px;font-weight:800;display:flex}.login-status{color:#9b7d58;background:#f7efdf;border-radius:30px;padding:5px 8px;font-size:10px;font-weight:800}.login-status.linked{color:#4d7856;background:#e8f3e9}.role-editor{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.role-editor select,.ownership-add input,.ownership-add select{color:#3d3733;background:#fff;border:1px solid #ded8d0;border-radius:8px;min-height:39px;padding:7px 9px;font-size:12px}.role-editor .button{min-height:35px;padding:6px 9px}.role-error{color:#a23637;width:100%}.role-badge{color:#665c56;background:#f0ede9;border-radius:30px;align-items:center;gap:5px;padding:6px 9px;font-size:10px;font-weight:800;display:inline-flex}.empty-table{text-align:center;color:#8c827c;padding:25px!important}.ownership-add{border-top:1px solid #eee9e3;flex-wrap:wrap;align-items:end;gap:11px;margin-top:18px;padding-top:18px;display:flex}.ownership-add>div{margin-right:auto}.ownership-add strong{font-size:12px}.ownership-add p{color:#92877f;margin:4px 0 0;font-size:10px}.ownership-add label{color:#6e625d;gap:6px;font-size:10px;font-weight:800;display:grid}.ownership-add input{width:190px}.ownership-add select{min-width:140px}.ownership-add .form-error{width:100%}.family-access{justify-content:space-between;align-items:center;gap:25px;display:flex}.family-access>div:first-child{max-width:620px}.family-access .form-error{margin-top:12px}.family-counts{gap:10px;display:flex}.family-counts>div{text-align:center;background:#f8f5ef;border-radius:10px;min-width:90px;padding:12px}.family-counts strong,.family-counts span{display:block}.family-counts strong{font:800 20px Manrope,system-ui,sans-serif}.family-counts span{color:#81766f;font-size:10px;font-weight:800}@media (width<=1050px){.role-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=650px){.ownership-hero{align-items:flex-start;padding:22px}.ownership-hero-mark{display:none}.ownership-summary{gap:7px}.ownership-summary>div{padding:13px}.ownership-summary strong{font-size:20px}.ownership-section{padding:18px}.role-grid{grid-template-columns:1fr 1fr}.role-card{padding:12px}.ownership-section-head{display:block}.subtle-tag{margin-top:10px}.family-access{flex-direction:column;align-items:flex-start}.family-counts{width:100%}.family-counts>div{flex:1}}@media (width<=420px){.ownership-summary{grid-template-columns:1fr 1fr}.ownership-summary>div:last-child{grid-column:span 2}.role-grid{grid-template-columns:1fr}.role-card{min-height:145px}.ownership-add label,.ownership-add input,.ownership-add select,.ownership-add .button{width:100%}}.family-access{display:block}.family-access-head{justify-content:space-between;align-items:center;gap:25px;display:flex}.family-access-head>div:first-child{max-width:620px}.family-roster{border-top:1px solid #eee9e3;grid-template-columns:minmax(0,1.4fr) minmax(230px,.8fr);gap:20px;margin-top:20px;padding-top:18px;display:grid}.family-roster h3{margin:0 0 8px;font:800 13px Manrope,system-ui,sans-serif}.family-roster form{align-content:start;gap:10px;display:grid}.family-roster form label{color:#6e625d;gap:6px;font-size:10px;font-weight:800;display:grid}.family-roster input{color:#3d3733;background:#fff;border:1px solid #ded8d0;border-radius:8px;min-height:39px;padding:7px 9px;font-size:12px}.family-roster form .button{justify-self:start}.family-roster .directory-row small{margin-left:auto}@media (width<=650px){.family-access-head{flex-direction:column;align-items:flex-start}.family-roster{grid-template-columns:1fr}}:root{color:#243c49;--viva-blue:#087da8;--viva-blue-dark:#076285;--viva-sky:#5bc9eb;--viva-pale:#e5f6fc;--viva-border:#d9eaf1;--viva-muted:#637985;--viva-green:#a2c928;background:#eef9fd}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-color:var(--viva-blue)}.shell{background:#eef9fd}.sidebar{color:#fff;background:linear-gradient(#0b789f 0%,#0a6689 58%,#075773 100%)}.brand,.login-brand{color:#1f5366;background:#fff;border-radius:13px;flex-direction:column;align-items:stretch;gap:0;padding:12px 12px 10px;display:flex}.brand img,.login-brand img{object-fit:contain;width:100%;height:auto;display:block}.brand span,.login-brand span{color:#0b7196;letter-spacing:.24em;text-align:center;margin-top:5px;font-size:10px;font-weight:800;display:block}.side-section-label{color:#bee7f5;margin-top:43px}.nav-item{color:#e3f5fb}.nav-item:hover{color:#fff;background:#ffffff23}.nav-item.active{color:#075e81;box-shadow:inset 3px 0 var(--viva-green);background:#e3f7fd}.workspace-chip{background:#ffffff0f;border-color:#7ec9df80}.workspace-dot{background:var(--viva-green);box-shadow:0 0 0 3px #a2c92832}.workspace-chip span,.signout{color:#d3edf5}.main{color:#243c49}.top-kicker,.eyebrow{color:var(--viva-blue)}.topbar p,.ownership-hero p:last-child{color:var(--viva-muted)}.timezone-pill{border-color:var(--viva-border);color:#4d6876;background:#fff}.avatar{color:#075e81;background:#c9edf8}.preview-banner{background:#fff7e8;border-color:#f0dfbd}.notice{background:#eaf7ed}.stat,.calendar-panel,.directory-card,.ownership-hero,.ownership-summary>div,.ownership-section,.login-card,.editor{border-color:var(--viva-border);background:#fff;box-shadow:0 6px 26px #0b597a0b}.stat:first-child{background:#e0f5fc}.stat-icon.rose{color:#096e94;background:#c8ebf8}.stat-icon.peach{color:#9a6533;background:#fcecd8}.stat-icon.sage{color:#577619;background:#e8f2cf}.stat span,.ownership-summary span{color:#5d7380}.calendar-toolbar{border-top:4px solid var(--viva-sky);padding-top:20px}.week-switch,.search-field,.filter-field{border-color:var(--viva-border)}.week-switch button{color:#476473}.week-switch button:hover{background:var(--viva-pale)}.button-primary{background:var(--viva-blue);border-color:var(--viva-blue);color:#fff}.button-primary:hover:not(:disabled){background:var(--viva-blue-dark);border-color:var(--viva-blue-dark)}.button-quiet{color:#365463;border-color:#c9dfe8}.button-quiet:hover{background:var(--viva-pale)}.filters{border-color:var(--viva-border);background:#f2fbfe}.legend{color:#5b7480}.legend-dot.lesson{background:#43b8db}.legend-dot.assessment{background:#d69955}.legend-dot.blocked{background:#8a9da8}.day-column,.day-heading,.day-column:nth-child(n+5){border-color:#e3eef3}.day-column.current{background:#f4fbfe}.day-column.current .day-heading strong{background:var(--viva-blue);color:#fff}.day-heading span{color:#5c7886}.day-heading small,.empty-day{color:#8198a3}.event-card.lesson{color:#214f63;background:#eaf8fc;border-color:#cbeaf4 #cbeaf4 #cbeaf4 #37aad0}.event-card.assessment{background:#fff6e9;border-color:#f2dfc3 #f2dfc3 #f2dfc3 #d49a55}.event-card.blocked{background:#f0f5f7;border-color:#dbe7eb #dbe7eb #dbe7eb #8299a3}.app-footer{color:#7d929d}.section-title{color:var(--viva-blue);border-color:var(--viva-border)}.section-title h2{color:#263d49}.section-title p,.directory-row small,.list-empty{color:#718995}.directory-row{border-color:#e6f0f4}.mini-avatar{color:#08719b;background:#e2f5fb}.mini-avatar.room{color:#607d24;background:#e9f3d8}.mini-avatar.student{color:#a46a37;background:#fff0e2}.editor label,.login-card label,.add-card label{color:#46616e}.editor input,.editor select,.editor textarea,.login-card input,.add-card input,.add-card select,.role-editor select,.ownership-add input,.ownership-add select,.family-roster input{color:#243c49;border-color:#cbdfe8}.modal-backdrop{background:#142c37ad}.icon-button{color:#3c6172;background:#eaf6fa}.login-shell{background:radial-gradient(circle at 50% 8%,#d9f3fb 0,#eef9fd 42%,#f7fcfe 100%)}.login-brand{margin:0 auto 28px;padding:16px 18px 12px;box-shadow:0 8px 26px #0b597a0d;width:min(100%,270px)!important}.login-card{margin:auto}.login-card>p:not(.eyebrow){color:var(--viva-muted)}.loading-screen{color:var(--viva-blue);background:#eef9fd}.ownership-hero{border-top:4px solid var(--viva-sky)}.ownership-hero-mark{color:#08719b;background:#e3f5fb}.subtle-tag{color:#53721d;background:#e9f4d6}.role-card{border-color:var(--viva-border)}.role-symbol{color:#0b749c;background:#e0f4fb}.role-symbol.management{color:#648124;background:#e8f3d8}.role-symbol.assessor{color:#3f7890;background:#e4f5f9}.role-symbol.teacher{color:#4e78a0;background:#e8f1fb}.role-symbol.parent,.role-symbol.student{color:#667f8b;background:#f0f6f8}.role-card>p,.ownership-section-head p:last-child,.family-access p:not(.eyebrow):not(.form-error){color:#657d89}.ownership-table-wrap,.ownership-table td,.ownership-add,.family-roster{border-color:var(--viva-border)}.ownership-table th{color:#547381;background:#eff9fc}.role-badge.admin{color:#076b91;background:#e1f5fb}.family-counts>div{background:#eaf8fc}.review-strip{color:#795a24;background:#fff9ec;border-bottom:1px solid #f2dfb8;flex-wrap:wrap;align-items:center;gap:10px 18px;padding:10px 24px;font-size:11px;display:flex}.review-strip strong{font-size:11px}.review-strip span{color:#816e4a}.event-flags{flex-wrap:wrap;gap:4px;display:flex}.event-flags span{color:#28637b;background:#d5edf5;border-radius:20px;width:max-content;padding:3px 6px;font-size:9px;font-weight:800;line-height:1}.event-flags .needs-review{color:#86611f;background:#fff0cf}.series-hint{color:#315c6e;background:#eef9fc;border:1px solid #cce8f2;border-radius:9px;gap:4px;margin:0;padding:12px 14px;font-size:12px;line-height:1.45;display:grid}.series-hint strong{font-size:12px}.editor-form .editor-check{align-items:center;gap:10px;font-size:12px;font-weight:700;line-height:1.4;display:flex}.editor-check input[type=checkbox]{width:18px;height:18px;min-height:18px;accent-color:var(--viva-blue);flex:none;margin:0}@media (width<=800px){.brand{flex:none;width:165px;padding:7px 9px 6px}.brand span{margin-top:1px;font-size:8px}.sidebar{gap:10px}}@media (width<=620px){.brand{width:150px}.day-column,.day-column:nth-child(4){border-color:#e3eef3}.review-strip{padding:10px 15px}}.calendar-toolbar{flex-wrap:wrap}.calendar-summary{color:#66818e;margin:7px 0 0;font-size:11px;font-weight:700}.calendar-summary strong{color:#0b7196;font-variant-numeric:tabular-nums}.calendar-summary span{color:#9eb5bf;padding:0 5px}.toolbar-actions{flex-wrap:wrap;justify-content:flex-end}.view-switch{border:1px solid var(--viva-border);background:#edf7fa;border-radius:10px;gap:2px;padding:3px;display:inline-flex}.view-switch button{color:#57727e;background:0 0;border:0;border-radius:7px;min-height:34px;padding:0 12px;font-size:12px;font-weight:800}.view-switch button.active{color:#086d94;background:#fff;box-shadow:0 1px 5px #0b597a1d}.calendar-date-jump{border:1px solid var(--viva-border);color:#345463;background:#fff;border-radius:9px;min-height:38px;padding:5px 8px;font-size:12px;font-weight:700}.calendar-filter-panel{border-top:1px solid var(--viva-border);border-bottom:1px solid var(--viva-border);background:#f5fbfd;gap:10px;padding:14px 24px 15px;display:grid}.calendar-filter-panel .search-field{width:min(340px,100%)}.filter-row{align-items:center;gap:12px;min-width:0;display:flex}.filter-row>strong{color:#526e7b;flex:none;width:68px;font-size:11px}.filter-chips{scrollbar-width:thin;gap:7px;padding:2px 1px 4px;display:flex;overflow-x:auto}.filter-chips button{color:#43616e;white-space:nowrap;background:#fff;border:1px solid #cadfe8;border-radius:999px;align-items:center;gap:7px;min-height:36px;padding:6px 11px;font-size:11px;font-weight:800;display:inline-flex}.filter-chips button.active{color:#135f7d;background:#e4f6fc;border-color:#6fbcd5}.filter-chips button:not(.active){opacity:.54}.filter-chips .location-filter:not(.active){opacity:1}.filter-chips .filter-all.active{color:#fff;background:#087da8;border-color:#087da8}.filter-chips .teacher-filter i{border-radius:50%;flex:none;width:10px;height:10px;box-shadow:0 0 0 2px #ffffffb0}.filter-chips .location-filter svg{flex:none}.calendar-empty{color:#56717e;background:#edf7fa;padding:10px 24px;font-size:12px}.timetable-scroll-tools{color:#728b96;justify-content:space-between;align-items:center;gap:10px;min-height:35px;padding:4px 14px 4px 24px;font-size:10px;font-weight:700;display:flex}.timetable-scroll-tools>div{gap:4px;display:flex}.timetable-scroll-tools button{color:#4b7282;background:#fff;border:1px solid #d5e7ee;border-radius:6px;place-items:center;width:28px;height:25px;display:grid}.timetable-scroll-tools button:hover{background:#e7f7fc}.timetable-scroll{overscroll-behavior:contain;scrollbar-color:#bddce8 #f4fafc;width:100%;max-height:min(74vh,980px);overflow:auto}.timetable-sheet{background:#fff;grid-template-rows:66px auto;width:max-content;min-width:100%;display:grid}.timetable-corner,.timetable-day-head{z-index:4;background:#fff;border-bottom:1px solid #dbeaf0;position:sticky;top:0}.timetable-corner{z-index:6;color:#63818f;letter-spacing:.1em;border-right:1px solid #dbeaf0;place-items:center;font-size:10px;font-weight:800;display:grid;left:0}.timetable-day-head{color:#516f7c;border-right:1px solid #e2edf2;justify-content:center;align-items:center;gap:7px;display:flex}.timetable-day-head span{text-transform:uppercase;font-size:10px;font-weight:800}.timetable-day-head strong{letter-spacing:-.05em;font:800 19px Manrope,system-ui,sans-serif}.timetable-day-head small{color:#829aa4;font-size:9px}.timetable-day-head.today{color:#086e94;background:#e8f8fc}.timetable-ruler{z-index:3;background:#fff;border-right:1px solid #dbeaf0;position:sticky;left:0}.timetable-ruler span{color:#78929e;font-variant-numeric:tabular-nums;font-size:10px;font-weight:800;position:absolute;right:8px;transform:translateY(-7px)}.timetable-day{background:#fff;border-right:1px solid #e0ecf1;min-width:0;position:relative}.timetable-day.today{background:#f8fdff}.timetable-hour-line{border-top:1px solid #e4eef2;position:absolute;left:0;right:0}.timetable-hour-line:after{content:"";border-top:1px dashed #edf3f5;position:absolute;top:33px;left:0;right:0}.timed-event{z-index:1;border:1px solid color-mix(in srgb, var(--teacher-accent) 35%, #fff);border-left:4px solid var(--teacher-accent);background:var(--teacher-tint);color:#263f4b;text-align:left;border-radius:6px;flex-direction:column;gap:1px;min-width:0;padding:4px 6px;display:flex;position:absolute;overflow:hidden;box-shadow:0 2px 5px #0a4a6512}.timed-event:hover:not(:disabled){z-index:2;filter:brightness(.98);box-shadow:0 4px 12px #0a4a6529}.timed-event:disabled{opacity:1}.timed-event-time{color:var(--teacher-accent);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:9px;font-weight:800;line-height:1.1}.timed-event strong{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:10px;line-height:1.17;display:-webkit-box;overflow:hidden}.timed-event-detail{color:#56717d;white-space:nowrap;text-overflow:ellipsis;font-size:9px;line-height:1.2;overflow:hidden}.timed-event.short{padding:3px 4px}.timed-event.short strong{-webkit-line-clamp:1}.timed-event.blocked{background:#eef2f4}.timed-review{color:#795a24;background:#fff0cf;border-radius:3px;padding:1px 3px;font-size:8px;font-weight:800;position:absolute;bottom:3px;right:3px}.timetable-day:has(.timed-event) .timetable-hour-line{pointer-events:none}@media (width<=1150px){.calendar-toolbar{align-items:flex-start}.toolbar-actions{justify-content:flex-start}}@media (width<=620px){.calendar-toolbar{padding:17px 14px}.calendar-toolbar h2{font-size:18px}.toolbar-actions{gap:8px}.view-switch button{padding:0 9px}.calendar-date-jump{max-width:140px}.calendar-filter-panel{padding:12px 14px}.filter-row{display:block}.filter-row>strong{width:auto;margin:0 0 5px;display:block}.filter-chips button{min-height:40px}.timetable-scroll{max-height:68vh}}
