:root{--bg:#f6f7f9;--surface:#fff;--border:#dfe3e8;--text:#1d2430;--muted:#667085;--primary:#1f4e8c;--primary-hover:#183e70;--danger:#b42318;--success-bg:#e7f6ec;--success-text:#1a7f37;--warning-bg:#fff4e0;--warning-text:#9a5b00;--danger-bg:#fdecea;--neutral-bg:#eef1f4;--radius:8px;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45}*{box-sizing:border-box}body{margin:0}h1{margin:0;font-size:1.6rem}h2{margin:0;font-size:1.1rem}a{color:var(--primary)}.layout{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.sidebar{color:#fff;background:#16233a;flex-direction:column;height:100vh;padding:1.25rem .75rem;display:flex;position:sticky;top:0}.brand{padding:0 .75rem 1.25rem;font-size:1.15rem;font-weight:700}.nav-menu{flex-direction:column;flex:1;display:flex}.menu-toggle{display:none}.sidebar ul{flex:1;margin:0;padding:0;list-style:none}.sidebar a{color:#c9d3e3;border-radius:var(--radius);padding:.55rem .75rem;text-decoration:none;display:block}.sidebar a:hover{color:#fff;background:#ffffff14}.sidebar a.active{color:#fff;background:#ffffff26;font-weight:600}.sidebar a.brand{color:#fff;border-radius:0;padding:0 .75rem 1.25rem}.sidebar a.brand:hover{background:0 0}.language-select{color:#fff;background:#ffffff14;border-color:#fff3;margin:0 .75rem .5rem}.language-select option{color:var(--text)}.sidebar .sign-out{color:#c9d3e3;text-align:left;padding:.55rem .75rem}.content{width:100%;max-width:1200px;padding:1.5rem 2rem 3rem}.page-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.25rem;display:flex}.page-header p{margin:.25rem 0 0}.breadcrumb{margin:0 0 .5rem}.actions{flex-wrap:wrap;gap:.5rem;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.25rem;padding:1rem 1.25rem}.section-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.subheading{margin:1.25rem 0 .5rem;font-size:.95rem}.toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.toolbar input[type=search]{min-width:280px}.pager{justify-content:center;align-items:center;gap:.75rem;margin:1rem 0 .5rem;display:flex}.muted{color:var(--muted)}.small{font-size:.85rem}.loading,.empty-state{color:var(--muted);margin:0;padding:1rem 0}.error-message{background:var(--danger-bg);color:var(--danger);border-radius:var(--radius);padding:.6rem .9rem}.notice{background:var(--success-bg);color:var(--success-text);border-radius:var(--radius);padding:.6rem .9rem}.plain-list{margin:.5rem 0;padding:0;list-style:none}.plain-list li{padding:.3rem 0}details summary{cursor:pointer;margin-top:.75rem}.details{grid-template-columns:max-content 1fr;gap:.4rem 1.5rem;margin:0;display:grid}.details dt{color:var(--muted)}.details dd{margin:0}button,.button{font:inherit;border:1px solid var(--primary);background:var(--primary);color:#fff;border-radius:var(--radius);cursor:pointer;white-space:nowrap;padding:.45rem .9rem;text-decoration:none;display:inline-block}button:hover:not(:disabled),.button:hover{background:var(--primary-hover)}button:disabled{opacity:.55;cursor:not-allowed}.button-secondary{background:var(--surface);color:var(--primary);border-color:var(--border)}.button-secondary:hover:not(:disabled){background:var(--neutral-bg)}.button-danger{background:var(--surface);color:var(--danger);border-color:var(--danger)}.button-danger:hover:not(:disabled){background:var(--danger-bg)}.button-link{color:var(--primary);background:0 0;border:none;padding:.2rem .3rem}.button-link:hover:not(:disabled){background:0 0;text-decoration:underline}.button-small{padding:.2rem .6rem;font-size:.85rem}.table{border-collapse:collapse;background:var(--surface);width:100%}.content>.table{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.25rem}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:.55rem .75rem}.table th{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.8rem;font-weight:600}.table tbody tr:hover{background:#fafbfc}.table tr.inactive td{color:var(--muted)}.table .num{text-align:right}.row-actions{text-align:right;white-space:nowrap}.expanded-row td{background:#fafbfc}.badge{background:var(--neutral-bg);color:var(--muted);vertical-align:middle;white-space:nowrap;border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-success{background:var(--success-bg);color:var(--success-text)}.badge-warning{background:var(--warning-bg);color:var(--warning-text)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.chips{flex-wrap:wrap;gap:.3rem;display:flex}.chip{background:var(--neutral-bg);border-radius:999px;padding:.1rem .55rem;font-size:.85rem}input,select,textarea{font:inherit;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);padding:.45rem .6rem}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:-1px}.field{border:none;flex-direction:column;flex:1;gap:.3rem;margin:0;padding:0;display:flex}.field label,.field legend{padding:0;font-size:.9rem;font-weight:600}.field-invalid input,.field-invalid select{border-color:var(--danger)}.field-error{color:var(--danger)}.field-row{gap:1rem;display:flex}.form-fields{flex-direction:column;gap:1rem;display:flex}label.checkbox{align-items:center;gap:.4rem;font-weight:400;display:flex}.form-actions{justify-content:flex-end;align-items:center;gap:.75rem;margin-top:1.25rem;display:flex}.modal{border:none;border-radius:12px;width:min(520px,92vw);padding:1.5rem;box-shadow:0 20px 50px #10182840}.modal::backdrop{background:#10182873}.modal h2{margin-bottom:1rem}.tabs{border-bottom:1px solid var(--border);gap:.25rem;margin-bottom:.75rem;display:flex}.tab{color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0}.tab:hover:not(:disabled){color:var(--text);background:0 0}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;display:grid}.stat{color:var(--text);flex-direction:column;text-decoration:none;display:flex}.stat:hover{border-color:var(--primary)}.stat-value{font-size:2rem;font-weight:700}.stat-label{color:var(--muted)}.session-list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.6rem 0;display:flex}.roster{margin:0;padding:0;list-style:none}.roster-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;padding:.5rem 0;display:flex}.roster-name{align-items:center;gap:.5rem;font-weight:500;display:flex}.segmented{display:inline-flex}.segment{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:0;min-width:88px}.segment:first-child{border-radius:var(--radius) 0 0 var(--radius)}.segment:last-child{border-radius:0 var(--radius) var(--radius) 0}.segment+.segment{border-left:none}.segment:hover:not(:disabled){background:var(--neutral-bg)}.segment-present.selected,.segment-present.selected:hover:not(:disabled){background:var(--success-text);border-color:var(--success-text);color:#fff}.segment-absent.selected,.segment-absent.selected:hover:not(:disabled){background:var(--danger);border-color:var(--danger);color:#fff}.segment-excused.selected,.segment-excused.selected:hover:not(:disabled){background:var(--muted);border-color:var(--muted);color:#fff}.sticky-actions{background:var(--surface);margin-top:0;padding:.75rem 0;position:sticky;bottom:0}.saved{color:var(--success-text);font-weight:600}.login{place-items:center;min-height:100vh;display:grid}.login form{flex-direction:column;gap:1rem;width:min(380px,92vw);display:flex}.login p{margin:0}@media (width<=760px){html{-webkit-text-size-adjust:100%}.layout{grid-template-rows:auto 1fr;grid-template-columns:1fr}.sidebar{z-index:10;height:auto;padding:.4rem 1rem;padding-top:calc(.4rem + env(safe-area-inset-top));align-self:start}.sidebar-top{justify-content:space-between;align-items:center;gap:1rem;display:flex}.sidebar a.brand{padding:0}.menu-toggle{background:#ffffff14;border-color:#fff3;min-height:40px;padding:.4rem .8rem;display:inline-block}.menu-toggle:hover:not(:disabled){background:#ffffff26}.nav-menu{display:none}.sidebar.open .nav-menu{gap:.25rem;max-height:calc(100dvh - 4rem);padding:.75rem 0 .25rem;display:flex;overflow-y:auto}.sidebar a{padding:.75rem}.language-select{margin:.5rem 0}.sidebar .sign-out{padding:.75rem}.content{padding:1rem;padding-bottom:calc(2rem + env(safe-area-inset-bottom))}.page-header{flex-direction:column;align-items:stretch;gap:.75rem}.section-header{flex-wrap:wrap}.toolbar>input,.toolbar>select{flex:100%;min-width:0}.toolbar input[type=search]{min-width:0}.card{padding:.9rem 1rem}.details{grid-template-columns:1fr;gap:.1rem}.details dd{overflow-wrap:anywhere;margin-bottom:.6rem}button,.button{min-height:36px;padding:.35rem .75rem;font-size:.9rem}.button{align-items:center;display:inline-flex}.button-link{padding:.35rem .5rem}.page-header button,.page-header .button,.modal .form-actions button,.sticky-actions button,.segment{min-height:44px;padding:.55rem 1rem;font-size:1rem}input,select,textarea{font-size:16px}input:not([type=checkbox]):not([type=radio]),select{min-height:44px}input[type=checkbox]{width:20px;height:20px}.field-row{flex-direction:column}.modal{width:100%;max-width:100%;height:100%;max-height:100%;padding:1rem;padding-top:calc(1rem + env(safe-area-inset-top));border-radius:0;margin:0;padding-bottom:0;overflow-y:auto}.modal[open]{flex-direction:column;display:flex}.modal form{flex-direction:column;flex:1 0 auto;display:flex}.modal .form-fields{padding-bottom:1.5rem}.modal .form-actions{background:var(--surface);border-top:1px solid var(--border);padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom));margin-top:auto;position:sticky;bottom:0}.modal .form-actions button{flex:1}.data-table,.data-table tbody{background:0 0;display:block}.content>.data-table{border:none}.data-table thead{display:none}.data-table tr{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:1fr 1fr;gap:.6rem 1rem;margin-bottom:.75rem;padding:.75rem .9rem;display:grid}.data-table tbody tr:hover{background:var(--surface)}.data-table tr.inactive{background:var(--bg)}.data-table td{overflow-wrap:anywhere;border:none;min-width:0;padding:0;display:block}.data-table td.num{text-align:left}.data-table td[data-label]:before{content:attr(data-label);text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin-bottom:.1rem;font-size:.72rem;font-weight:600;display:block}.data-table td.cell-title{grid-column:1/-1;font-size:1.05rem;font-weight:600}.data-table td.cell-title:before{display:none}.data-table td.cell-title .small{font-weight:400}.data-table td.cell-full{grid-column:1/-1}.data-table td.cell-hidden-mobile{display:none}.data-table td.row-actions{border-top:1px solid var(--border);white-space:normal;flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:.25rem .5rem;margin-bottom:-.3rem;padding-top:.4rem;display:flex}.data-table td.row-actions button,.data-table td.row-actions .button{min-height:32px;padding:.2rem .6rem;font-size:.85rem}.data-table td.row-actions .button-link{padding:.2rem .4rem}.data-table td.row-actions:empty{display:none}.data-table tr:has(+.expanded-row){border-bottom-right-radius:0;border-bottom-left-radius:0;margin-bottom:0}.data-table tr.expanded-row{background:#fafbfc;border-top:none;border-top-left-radius:0;border-top-right-radius:0;display:block}.data-table tr.expanded-row td{background:0 0}.stats{grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:1rem}.stats .card{margin-bottom:0}.stat-value{font-size:1.6rem}.session-list li{flex-wrap:wrap;gap:.5rem}.roster-row{flex-direction:column;align-items:stretch;gap:.5rem;padding:.75rem 0}.segmented{display:flex}.segment{flex:1;min-width:0}.sticky-actions{border-top:1px solid var(--border);padding-bottom:calc(.75rem + env(safe-area-inset-bottom))}}
