:root{--color-brand-1: #fdfdff;--color-brand-2: #f8f8ff;--color-brand-3: #f0f1fe;--color-brand-4: #e6e7ff;--color-brand-5: #dadcff;--color-brand-6: #cbcdff;--color-brand-7: #b8baff;--color-brand-8: #9b9ef0;--color-brand-9: #5b5bd6;--color-brand-10: #5151cd;--color-brand-11: #5753c6;--color-brand-12: #272962;--color-neutral-1: #fbfcfd;--color-neutral-2: #f8f9fa;--color-neutral-3: #f1f3f5;--color-neutral-4: #eceef0;--color-neutral-5: #e6e8eb;--color-neutral-6: #dfe3e6;--color-neutral-7: #d7dbdf;--color-neutral-8: #c1c8cd;--color-neutral-9: #889096;--color-neutral-10: #7e868c;--color-neutral-11: #687076;--color-neutral-12: #11181c;--color-danger-1: #fffcfc;--color-danger-2: #fff7f7;--color-danger-3: #feebec;--color-danger-4: #ffdbdc;--color-danger-5: #ffcdce;--color-danger-6: #fdbdbe;--color-danger-7: #f4a9aa;--color-danger-8: #eb8e90;--color-danger-9: #e5484d;--color-danger-10: #dc3e42;--color-danger-11: #ce2c31;--color-danger-12: #641723;--color-warning-1: #fefdfb;--color-warning-2: #fefbe9;--color-warning-3: #fff7c2;--color-warning-4: #ffee9c;--color-warning-5: #fbe577;--color-warning-6: #f3d673;--color-warning-7: #e9c162;--color-warning-8: #e2a336;--color-warning-9: #ffc53d;--color-warning-10: #ffba18;--color-warning-11: #ab6400;--color-warning-12: #4f3422;--color-success-1: #fbfefc;--color-success-2: #f4fbf6;--color-success-3: #e6f6eb;--color-success-4: #d6f1df;--color-success-5: #c4e8d1;--color-success-6: #adddc0;--color-success-7: #8eceaa;--color-success-8: #5bb98b;--color-success-9: #30a46c;--color-success-10: #2b9a66;--color-success-11: #218358;--color-success-12: #193b2d;--color-bg-app: var(--color-neutral-1);--color-bg-subtle: var(--color-neutral-2);--color-bg-element: var(--color-neutral-3);--color-border-subtle: var(--color-neutral-6);--color-border-default: var(--color-neutral-7);--color-border-strong: var(--color-neutral-8);--color-text-primary: var(--color-neutral-12);--color-text-secondary: var(--color-neutral-11);--color-text-disabled: var(--color-neutral-9);--color-text-brand: var(--color-brand-11);--color-text-danger: var(--color-danger-11);--color-text-on-brand: #ffffff;--color-solid-brand: var(--color-brand-9);--color-solid-success: var(--color-success-9);--color-solid-danger: var(--color-danger-9);--color-solid-warning: var(--color-warning-10);--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px;color:var(--color-text-primary);background:var(--color-bg-subtle);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button{cursor:pointer}.app-shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh;background:var(--color-bg-subtle)}.sidebar{display:flex;flex-direction:column;gap:4px;height:100vh;border-right:1px solid var(--color-border-subtle);background:var(--color-bg-app);padding:24px 16px;position:sticky;top:0}.brand-lockup{display:flex;align-items:center;gap:10px;padding:4px 8px 20px}.brand-mark,.settings-logo{display:grid;place-items:center;background:var(--color-solid-brand);color:var(--color-text-on-brand);font-weight:800}.brand-mark{width:36px;height:36px;border-radius:8px;font-size:18px;overflow:hidden}.brand-mark img,.settings-logo img,.mobile-brand img{width:100%;height:100%;object-fit:cover}.brand-lockup strong,.brand-lockup span{display:block;white-space:nowrap}.brand-lockup strong{font-size:15px}.brand-lockup span{color:var(--color-text-secondary);font-size:11px}.role-switcher{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:10px}.role-chip{border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-secondary);padding:7px 8px;font-size:12px}.role-chip.active{border-color:var(--color-solid-brand);background:var(--color-brand-3);color:var(--color-solid-brand);font-weight:700}.nav-list{display:flex;flex:1;flex-direction:column;gap:4px}.nav-section{margin:16px 0 4px;padding-left:10px;color:var(--color-text-secondary);font-size:10px;font-weight:800;opacity:.75}.nav-item{display:flex;align-items:center;gap:12px;width:100%;border:0;border-radius:8px;background:transparent;color:var(--color-text-primary);padding:8px 10px;text-align:left}.nav-item.active{background:var(--color-brand-3);color:var(--color-solid-brand)}.nav-item span{width:18px;text-align:center}.nav-item strong{flex:1;font-size:13px;font-weight:600}.nav-item em{color:var(--color-text-disabled);font-size:11px;font-style:normal}.nav-spacer{flex:1}.main-area{min-width:0;background:var(--color-bg-app)}.topbar{display:flex;align-items:center;gap:16px;height:73px;border-bottom:1px solid var(--color-border-subtle);background:var(--color-bg-app);padding:18px 32px}.topbar h1{margin:0;font-size:22px;line-height:1}.topbar-spacer{flex:1}.search-box{display:flex;align-items:center;gap:8px;width:280px;height:36px;border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-subtle);padding:0 12px}.search-box span{color:var(--color-text-secondary)}.search-box input{width:100%;border:0;outline:0;background:transparent;color:var(--color-text-primary);font-size:13px}.icon-button,.avatar{display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:18px}.icon-button{background:var(--color-bg-element)}.avatar{background:var(--color-brand-3);color:var(--color-solid-brand);font-size:12px;font-weight:800}.content{padding:24px 32px}.page-stack{display:grid;gap:24px}.page-hero,.settings-hero{display:flex;align-items:center;justify-content:space-between}.page-hero h2,.settings-hero h2{margin:0;font-size:26px;line-height:1.3}.settings-hero h2{font-size:28px}.page-hero p,.settings-hero p{margin:4px 0 0;color:var(--color-text-secondary);font-size:14px}.eyebrow{margin:0 0 6px;color:var(--color-text-brand);font-size:11px;font-weight:800}.primary-button{border:0;border-radius:8px;background:var(--color-solid-brand);color:var(--color-text-on-brand);padding:10px 16px;font-size:13px;font-weight:800}.primary-button.compact{padding:8px 14px}.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric-card,.panel{border:1px solid var(--color-border-subtle);background:var(--color-bg-app)}.metric-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-height:126px;border-radius:12px;padding:20px}.metric-card span{color:var(--color-text-secondary);font-size:12px;font-weight:600}.metric-card strong{font-size:30px;line-height:1}.trend-pill,.status-pill{border-radius:999px;padding:3px 8px;font-size:11px;font-style:normal;font-weight:800}.trend-pill.success{background:var(--color-success-3);color:var(--color-solid-success)}.trend-pill.danger{background:var(--color-danger-3);color:var(--color-solid-danger)}.trend-pill.warning{background:var(--color-warning-3);color:var(--color-warning-11)}.hero-actions{display:flex;gap:8px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px;min-height:490px}.dashboard-side-stack{display:grid;gap:16px}.panel{border-radius:12px;padding:20px}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.panel-heading h2{margin:0;font-size:16px}.panel-heading p{margin:2px 0 0;color:var(--color-text-secondary);font-size:12px}.panel-heading button{border:0;background:transparent;color:var(--color-solid-brand);font-size:12px;font-weight:700}.today-panel,.attendance-panel{min-height:490px}.session-list{display:grid;gap:14px;margin-top:20px}.session-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-app);padding:14px}.session-time{border-radius:8px;background:var(--color-brand-3);color:var(--color-solid-brand);padding:6px 10px;font-size:13px;font-weight:800}.session-row strong,.session-row small{display:block}.session-row strong{font-size:13px}.session-row small{margin-top:3px;color:var(--color-text-secondary);font-size:11px}.status-pill{background:var(--color-bg-element);color:var(--color-text-secondary)}.status-pill.success{background:var(--color-success-3);color:var(--color-solid-success)}.status-pill.warning{background:var(--color-warning-3);color:var(--color-warning-11)}.status-pill.danger{background:var(--color-danger-3);color:var(--color-solid-danger)}.chart-legend{display:flex;gap:16px}.chart-legend span{display:flex;align-items:center;gap:6px;color:var(--color-text-secondary);font-size:11px}.chart-legend i{width:8px;height:8px;border-radius:50%}.present{background:var(--color-solid-success)}.absent{background:var(--color-solid-danger)}.late{background:var(--color-solid-warning)}.attendance-chart{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:end;gap:24px;height:390px;padding:24px 18px 4px}.chart-column{display:grid;justify-items:center;gap:4px;height:100%}.bar-stack{display:flex;flex:1;flex-direction:column;justify-content:flex-end;width:32px}.bar{width:32px}.bar.late{border-radius:4px 4px 0 0}.bar.empty{height:8px;border-radius:4px;background:var(--color-bg-element)}.chart-column strong{color:var(--color-text-secondary);font-size:12px}.chart-column strong.active{color:var(--color-solid-brand)}.chart-column span{color:var(--color-text-disabled);font-size:10px}.settings-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px}.settings-nav{display:grid;align-content:start;gap:4px;border:1px solid var(--color-border-subtle);border-radius:12px;background:var(--color-bg-app);padding:12px 8px}.settings-nav-item{display:flex;align-items:center;gap:10px;border:0;border-radius:8px;background:transparent;padding:10px 12px;color:var(--color-text-primary);font-size:13px;font-weight:600}.settings-nav-item.active{background:var(--color-brand-3);color:var(--color-solid-brand)}.settings-content{display:grid;gap:16px}.settings-card{display:grid;gap:16px;padding:24px}.settings-card header h2{margin:0;font-size:16px}.settings-card header p{margin:4px 0 0;color:var(--color-text-secondary);font-size:13px}.logo-row{display:flex;align-items:center;gap:16px}.settings-logo{width:56px;height:56px;border-radius:10px;font-size:24px;overflow:hidden;flex:0 0 auto}.logo-row p{margin:4px 0 8px;color:var(--color-text-secondary);font-size:12px}.logo-row input{width:min(360px,100%);border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:8px 10px;font-size:12px}.logo-row button,.brand-card-heading button,.save-bar button{border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:7px 12px;font-size:12px;font-weight:700}.logo-row .text-danger{border:0;color:var(--color-solid-danger)}.brand-card-heading .brand-preview-button{border-color:transparent;color:var(--color-text-on-brand)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid label{display:grid;gap:6px;color:var(--color-text-primary);font-size:13px;font-weight:700}.form-grid b{color:var(--color-solid-danger)}.form-grid input,.form-grid select{width:100%;height:40px;border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:0 14px;font-size:13px}.form-grid .full{grid-column:1 / -1}.inline-form-panel{display:grid;gap:16px}.form-actions{display:flex;justify-content:flex-end;gap:8px}.form-actions button{border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:8px 12px;font-size:12px;font-weight:800}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--color-border-subtle);padding:12px 0}.toggle-row strong,.toggle-row span{display:block}.toggle-row strong{font-size:14px}.toggle-row span{margin-top:2px;color:var(--color-text-secondary);font-size:12px}.switch{position:relative;width:40px;height:24px;border:0;border-radius:12px;background:var(--color-border-strong);cursor:pointer}.switch:after{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:10px;background:var(--color-bg-app);content:""}.switch.on{background:var(--color-solid-brand)}.switch.on:after{left:18px}.brand-card-heading{display:flex;align-items:center;justify-content:space-between}.brand-card-heading em{border-radius:4px;background:var(--color-warning-3);color:var(--color-warning-11);padding:2px 8px;font-size:11px;font-style:normal}.color-swatches{display:flex;gap:10px}.swatch{display:grid;justify-items:center;gap:6px;border:0;background:transparent;color:var(--color-text-secondary);font-size:11px}.swatch span{display:grid;place-items:center;width:56px;height:56px;border-radius:12px;color:var(--color-text-primary);font-weight:900}.swatch.active{color:var(--color-text-primary);font-weight:800}.swatch.active span{border:3px solid var(--color-text-primary)}.save-bar{position:sticky;bottom:12px;display:flex;align-items:center;justify-content:space-between;border-radius:10px;background:var(--color-bg-element);padding:14px 16px}.save-bar span{color:var(--color-text-secondary);font-size:13px}.save-bar div{display:flex;gap:8px}.schedule-page{gap:20px}.schedule-toolbar,.schedule-title,.schedule-actions{display:flex;align-items:center}.schedule-toolbar{justify-content:space-between}.schedule-title{gap:12px}.schedule-title h2{margin:0;font-size:18px}.schedule-title p{margin:2px 0 0;color:var(--color-text-secondary);font-size:11px}.calendar-nav{display:flex;overflow:hidden;border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-app)}.calendar-nav button{display:grid;place-items:center;width:34px;height:34px;border:0;background:var(--color-bg-app);color:var(--color-text-primary);font-size:18px}.schedule-actions{gap:12px}.segmented-control{display:flex;overflow:hidden;border-radius:var(--radius-md);background:var(--color-bg-element);padding:2px}.segmented-control button{border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-text-secondary);padding:7px 14px;font-size:12px;font-weight:700}.segmented-control .active{background:var(--color-bg-app);color:var(--color-text-primary)}.secondary-button{border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-app);color:var(--color-text-primary);padding:8px 12px;font-size:12px;font-weight:800}.schedule-board{overflow:hidden;border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);background:var(--color-bg-app)}.schedule-detail-panel{display:grid;gap:16px}.schedule-detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px}.assignment-list{display:grid;gap:10px}.assignment-list>strong{font-size:13px}.assignment-list label{display:flex;align-items:center;gap:8px;border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-app);padding:10px 12px;font-size:13px;font-weight:800}.schedule-week-header{display:grid;grid-template-columns:64px repeat(7,minmax(0,1fr));height:52px;border-bottom:1px solid var(--color-border-subtle);background:var(--color-bg-subtle)}.time-gutter{border-right:1px solid var(--color-border-subtle)}.day-head{display:grid;place-items:center;align-content:center;gap:2px;border-right:1px solid var(--color-border-subtle);background:var(--color-bg-app)}.day-head span{color:var(--color-text-secondary);font-size:11px;font-weight:700}.day-head strong{display:grid;place-items:center;min-width:28px;height:28px;color:var(--color-text-primary);font-size:16px}.day-head.active span{color:var(--color-text-brand)}.day-head.active strong{border-radius:var(--radius-full);background:var(--color-solid-brand);color:var(--color-text-on-brand);font-size:14px}.day-head.muted span,.day-head.muted strong{color:var(--color-text-disabled)}.schedule-grid{display:grid;grid-template-columns:64px 1fr;min-height:728px}.time-column{display:grid;grid-template-rows:repeat(13,56px);border-right:1px solid var(--color-border-subtle)}.time-column span{border-bottom:1px solid var(--color-border-subtle);color:var(--color-text-secondary);padding:6px 8px;font-size:11px}.week-grid{position:relative;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-width:0}.day-column{position:relative;min-height:728px;border-right:1px solid var(--color-border-subtle);background:repeating-linear-gradient(to bottom,transparent 0,transparent 55px,var(--color-border-subtle) 55px,var(--color-border-subtle) 56px)}.day-column.active{background:linear-gradient(var(--color-brand-2),var(--color-brand-2)),repeating-linear-gradient(to bottom,transparent 0,transparent 55px,var(--color-border-subtle) 55px,var(--color-border-subtle) 56px)}.schedule-event{position:absolute;left:4px;right:4px;display:flex;gap:6px;overflow:hidden;border:1px solid;border-radius:4px;padding:6px}.schedule-event i{width:3px;border-radius:2px;background:currentColor;flex:0 0 auto}.schedule-event div{min-width:0}.schedule-event time,.schedule-event strong,.schedule-event span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-event time{font-size:10px;font-weight:800}.schedule-event strong{color:var(--color-text-primary);font-size:12px}.schedule-event span{color:var(--color-text-secondary);font-size:10px}.schedule-event.brand{border-color:var(--color-brand-7);background:var(--color-brand-3);color:var(--color-brand-11)}.schedule-event.success{border-color:var(--color-success-7);background:var(--color-success-3);color:var(--color-success-11)}.schedule-event.warning{border-color:var(--color-warning-7);background:var(--color-warning-3);color:var(--color-warning-11)}.schedule-event.danger{border-color:var(--color-danger-7);background:var(--color-danger-3);color:var(--color-danger-11)}.event-half{width:calc(50% - 6px)}.event-compact{width:calc(38% - 6px)}.event-left{left:4px;right:auto}.event-right{left:auto;right:4px}.overflow-chip{position:absolute;right:4px;width:28px;height:52px;border:1px solid var(--color-border-subtle);border-radius:4px;background:var(--color-bg-element);color:var(--color-text-secondary);font-size:11px;font-weight:800}.current-time-line{position:absolute;top:140px;left:calc((100% / 7) * 2);width:calc(100% / 7);height:2px;background:var(--color-solid-danger)}.current-time-line:before{position:absolute;top:-3px;left:-4px;width:8px;height:8px;border-radius:var(--radius-full);background:var(--color-solid-danger);content:""}.student-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.students-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start}.student-table,.student-detail-stack,.pass-product-list,.pass-issue-form,.usage-log-list{display:grid;gap:10px;margin-top:18px}.pass-issue-form{grid-template-columns:minmax(0,1fr) auto}.pass-issue-form select{min-width:0;height:40px;border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:0 12px;font-size:13px}.pass-usage-actions{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;margin-top:16px}.pass-usage-actions input{min-width:0;height:40px;border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:0 12px}.pass-usage-actions button{border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:0 12px;font-size:12px;font-weight:800}.risk-list,.care-record-list{display:grid;gap:8px;margin-top:14px}.risk-list article,.care-record-list article{border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-app);padding:10px 12px}.risk-list strong,.risk-list span,.care-record-list strong,.care-record-list span{display:block}.risk-list span,.care-record-list span{margin-top:3px;color:var(--color-text-secondary);font-size:12px}.care-record-form{display:grid;grid-template-columns:100px minmax(0,1fr) auto;gap:8px}.care-record-form select,.care-record-form input{min-width:0;height:40px;border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:0 12px}.care-record-form button{border:0;border-radius:8px;background:var(--color-solid-brand);color:#fff;padding:0 12px;font-weight:800}.student-row-card{display:grid;grid-template-columns:150px minmax(160px,1fr) 150px 86px;align-items:center;gap:16px;border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-app);padding:14px}.student-row-card strong,.student-row-card span{display:block}.student-row-card strong{font-size:13px}.student-row-card span{margin-top:3px;color:var(--color-text-secondary);font-size:12px}.student-tags{display:flex;flex-wrap:wrap;gap:6px}.student-tags em{border-radius:var(--radius-full);background:var(--color-bg-element);color:var(--color-text-secondary);padding:4px 8px;font-size:11px;font-style:normal;font-weight:700}.student-detail-panel{display:grid;gap:16px}.pass-progress{display:grid;gap:10px;border-radius:var(--radius-md);background:var(--color-brand-2);padding:14px}.pass-progress div{display:flex;align-items:baseline;justify-content:space-between}.pass-progress span,.pass-progress small{color:var(--color-text-secondary);font-size:12px}.pass-progress strong{color:var(--color-solid-brand);font-size:24px}.pass-progress progress{overflow:hidden;width:100%;height:8px;border:0;border-radius:var(--radius-full);background:var(--color-border-subtle)}.pass-progress progress::-webkit-progress-bar{background:var(--color-border-subtle)}.pass-progress progress::-webkit-progress-value{background:var(--color-solid-brand)}.detail-list{display:grid;gap:10px;margin:0}.detail-list div{display:grid;gap:4px}.detail-list dt{color:var(--color-text-secondary);font-size:11px;font-weight:800}.detail-list dd{margin:0;color:var(--color-text-primary);font-size:13px}.pass-product-list article{display:grid;grid-template-columns:1fr auto;gap:3px 12px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:12px}.pass-product-list strong,.pass-product-list b{font-size:13px}.pass-product-list span{color:var(--color-text-secondary);font-size:12px}.pass-product-list b{grid-row:1 / span 2;grid-column:2;align-self:center;color:var(--color-solid-brand)}.usage-log-list article{display:grid;grid-template-columns:72px 120px minmax(0,1fr) 150px;align-items:center;gap:12px;border-top:1px solid var(--color-border-subtle);padding:12px 0}.usage-log-list article:first-child{border-top:0}.usage-log-list strong,.usage-log-list span,.usage-log-list time{font-size:13px}.usage-log-list span,.usage-log-list time{color:var(--color-text-secondary)}.log-badge{width:fit-content;border-radius:var(--radius-full);padding:4px 8px;font-size:11px;font-weight:800}.log-badge.consume{background:var(--color-brand-3);color:var(--color-solid-brand)}.log-badge.restore{background:var(--color-success-3);color:var(--color-solid-success)}.teacher-layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px;align-items:start}.teacher-side,.attendance-check-list,.absence-queue,.availability-list,.teacher-student-list{display:grid;gap:10px}.attendance-check-list,.absence-queue,.availability-list,.teacher-student-list{margin-top:18px}.attendance-check-list article{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:14px}.attendance-check-list strong,.attendance-check-list span,.absence-queue strong,.absence-queue span,.teacher-student-list strong,.teacher-student-list span{display:block}.attendance-check-list span,.absence-queue span,.teacher-student-list span{margin-top:3px;color:var(--color-text-secondary);font-size:12px}.attendance-actions{display:grid;grid-template-columns:repeat(3,64px);gap:6px}.attendance-actions button{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-bg-app);color:var(--color-text-secondary);padding:8px 0;font-size:12px;font-weight:800}.attendance-actions button.active{border-color:var(--color-solid-brand);background:var(--color-brand-3);color:var(--color-solid-brand)}.absence-queue article,.teacher-student-list article{display:grid;gap:10px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:12px}.absence-queue article div{display:flex;gap:6px}.absence-queue select{width:100%;border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:9px 10px;font-size:12px}.class-note-box{display:grid;gap:6px;margin-top:18px;border-radius:var(--radius-md);background:var(--color-success-2);padding:14px}.class-note-box strong{font-size:13px}.class-note-box p{margin:0 0 8px;color:var(--color-text-secondary);font-size:12px}.class-note-form,.availability-form{display:grid;gap:8px;margin-top:14px}.class-note-form input,.class-note-form textarea,.availability-form input{width:100%;border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:10px 12px;font-size:13px}.class-note-form textarea{min-height:84px;resize:vertical}.availability-list article{display:grid;gap:4px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:12px}.availability-list strong,.availability-list span{display:block}.availability-list strong{font-size:12px}.availability-list span{color:var(--color-text-secondary);font-size:12px}.class-note-box article{border-top:1px solid var(--color-border-subtle);padding-top:10px}.class-note-box span{color:var(--color-text-secondary);font-size:12px}.notices-layout{display:grid;grid-template-columns:420px minmax(0,1fr);gap:16px;align-items:start}.notice-editor{display:grid;gap:14px}.notice-editor label{display:grid;gap:6px}.notice-editor label span{color:var(--color-text-secondary);font-size:12px;font-weight:800}.notice-editor input,.notice-editor textarea{width:100%;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-bg-subtle);color:var(--color-text-primary);padding:10px 12px}.notice-editor textarea{min-height:130px;resize:vertical}.notice-options{display:flex;gap:8px}.notice-options button{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-bg-app);color:var(--color-text-secondary);padding:8px 12px;font-size:12px;font-weight:800}.notice-options button.active{border-color:var(--color-solid-brand);background:var(--color-brand-3);color:var(--color-solid-brand)}.notice-list{display:grid;gap:10px;margin-top:18px}.notice-list article{display:grid;gap:8px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:14px}.notice-list strong,.notice-list span{display:block}.notice-list strong{font-size:14px}.notice-list span,.notice-list p{color:var(--color-text-secondary);font-size:12px}.notice-list p{margin:0}.note-preview{display:grid;gap:6px}.note-preview strong{font-size:14px}.note-preview span{color:var(--color-text-secondary);font-size:12px}.company-page{min-height:100vh;background:var(--color-bg);padding:24px}.company-section{width:min(1120px,100%);margin:18px auto 0}.company-landing-preview{width:min(1120px,100%);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:32px;align-items:center;border-radius:var(--radius-lg);background:var(--color-neutral-12);color:var(--color-text-on-brand);padding:32px}.company-landing-preview strong{color:var(--color-brand-6);font-size:13px}.company-landing-preview h1,.company-landing-preview h2{max-width:640px;margin:10px 0;font-size:34px;line-height:1.2}.company-landing-preview p{max-width:560px;margin:0;color:var(--color-neutral-6);font-size:14px}.company-landing-preview form{display:grid;gap:8px}.company-landing-preview ul{display:grid;gap:8px;margin:18px 0 0;padding-left:18px;color:var(--color-neutral-3);font-size:13px}.company-landing-preview input{width:100%;border:1px solid var(--color-neutral-10);border-radius:var(--radius-md);background:var(--color-neutral-12);color:var(--color-text-on-brand);padding:10px 12px}.admin-grid{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px;align-items:start}.admin-shell{display:grid;min-height:100vh;grid-template-columns:248px minmax(0,1fr);background:var(--color-bg-app)}.admin-sidebar{border-right:1px solid var(--color-border-default);background:var(--color-bg-surface);padding:24px 18px}.admin-brand{display:grid;gap:4px;margin-bottom:28px}.admin-brand strong{color:var(--color-text-primary);font-size:20px}.admin-brand span,.admin-topbar p,.academy-link-grid span{color:var(--color-text-secondary)}.admin-sidebar nav{display:grid;gap:8px}.admin-sidebar a{border-radius:8px;color:var(--color-text-secondary);font-size:14px;font-weight:800;padding:10px 12px;text-decoration:none}.admin-sidebar a.active,.admin-sidebar a:hover{background:var(--color-bg-muted);color:var(--color-text-primary)}.admin-main{display:grid;gap:20px;align-content:start;padding:28px}.admin-topbar{display:flex;align-items:center;justify-content:space-between;gap:20px}.admin-topbar h1{margin:4px 0;color:var(--color-text-primary);font-size:28px}.academy-link-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.academy-link-grid article{display:grid;gap:10px;border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-surface);padding:14px}.academy-link-grid strong,.academy-link-grid span{display:block}.academy-link-grid a{border:1px solid var(--color-border-default);border-radius:8px;color:var(--color-text-primary);font-size:12px;font-weight:800;padding:8px 10px;text-align:center;text-decoration:none}.academy-link-grid button{border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-muted);color:var(--color-text-primary);font-size:12px;font-weight:800;padding:8px 10px}.admin-settings-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:18px}.admin-settings-grid label{display:grid;gap:6px;color:var(--color-text-secondary);font-size:12px;font-weight:800}.admin-settings-grid input{height:40px;border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:0 10px}.admin-feature-toggle{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--color-border-default);border-radius:8px;background:var(--color-bg-surface);color:var(--color-text-primary);padding:12px;text-align:left}.admin-feature-toggle span{border-radius:999px;background:var(--color-bg-muted);color:var(--color-text-secondary);font-size:11px;font-weight:900;padding:4px 8px}.admin-feature-toggle.on{border-color:var(--color-solid-brand)}.admin-feature-toggle.on span{background:var(--color-solid-brand);color:var(--color-text-on-brand)}.admin-save-status{margin:12px 0 0;color:var(--color-text-secondary);font-size:13px;font-weight:800}.student-app-link{border:1px solid var(--color-border-default);border-radius:8px;color:var(--color-text-primary);font-size:12px;font-weight:800;padding:8px 10px;text-decoration:none}.admin-side,.tenant-table,.ticket-list{display:grid;gap:10px}.tenant-table,.ticket-list,.step-list{margin-top:18px}.tenant-setup-form{display:grid;gap:8px;margin-top:14px}.tenant-setup-form input{width:100%;height:40px;border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:0 12px}.ticket-form{display:grid;gap:8px;margin-top:14px}.ticket-form input,.ticket-form textarea{width:100%;border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:10px 12px}.ticket-form textarea{min-height:84px;resize:vertical}.tenant-table article{display:grid;grid-template-columns:minmax(0,1fr) 70px 80px 110px;gap:12px;align-items:center;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:12px}.tenant-table select{min-width:0;border:1px solid var(--color-border-subtle);border-radius:8px;background:var(--color-bg-app);color:var(--color-text-primary);padding:6px;font-size:12px}.tenant-table strong,.tenant-table span,.tenant-table time{font-size:13px}.tenant-table span,.tenant-table time{color:var(--color-text-secondary)}.step-list{display:grid;gap:8px;padding-left:18px}.step-list li{color:var(--color-text-secondary);font-size:13px}.ticket-list article{display:grid;grid-template-columns:48px minmax(0,1fr) 56px;align-items:center;gap:10px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:12px}.ticket-list span,.ticket-list em{border-radius:var(--radius-full);background:var(--color-bg-element);color:var(--color-text-secondary);padding:4px 8px;font-size:11px;font-style:normal;font-weight:800;text-align:center}.ticket-list strong{font-size:13px}.mobile-page{display:grid;grid-template-rows:auto auto 1fr auto;width:min(390px,100vw);min-height:100vh;margin:0 auto;background:var(--color-bg-subtle)}.status-bar{display:flex;align-items:center;justify-content:space-between;height:44px;padding:14px 24px 0;color:var(--color-text-primary);font-size:15px}.mobile-header{display:flex;align-items:center;justify-content:space-between;height:52px;padding:0 20px}.mobile-brand,.mobile-actions{display:flex;align-items:center;gap:8px}.mobile-brand span{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--color-solid-brand);color:var(--color-text-on-brand);font-weight:800;overflow:hidden}.mobile-brand strong{font-size:18px}.mobile-actions button,.mobile-actions i{display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:18px;background:transparent;font-style:normal}.mobile-actions i{background:var(--color-brand-3);color:var(--color-solid-brand);font-weight:800}.mobile-content{display:grid;align-content:start;gap:24px;padding:8px 20px 32px}.mobile-hero{display:grid;gap:8px}.mobile-hero p{margin:0;color:var(--color-text-secondary);font-size:15px}.mobile-hero div{display:flex;align-items:baseline;gap:8px}.mobile-hero strong{font-size:48px;line-height:1}.mobile-hero span{font-size:28px;font-weight:800}.mobile-hero em{border-radius:999px;background:var(--color-success-3);color:var(--color-solid-success);padding:4px 8px;font-size:13px;font-style:normal;font-weight:800}.quick-actions{display:flex;justify-content:space-between;border-radius:18px;background:var(--color-bg-app);padding:18px 12px}.quick-actions button{display:grid;justify-items:center;gap:8px;border:0;background:transparent;color:var(--color-text-primary);font-size:12px;font-weight:600}.quick-actions span,.alert-row>span{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;font-size:20px;font-weight:800}.quick-actions .brand{background:var(--color-brand-3)}.quick-actions .success{background:var(--color-success-3)}.quick-actions .warning,.alert-row>.warning{background:var(--color-warning-3)}.quick-actions .danger,.alert-row>.danger{background:var(--color-danger-3)}.mobile-card{border-radius:20px;background:var(--color-bg-app);padding:20px}.today-classes header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.today-classes h1,.mobile-alerts h2{margin:0;font-size:18px}.today-classes p,.alert-row p{margin:2px 0 0;color:var(--color-text-secondary);font-size:13px}.today-classes header button,.alert-row button{border:0;background:transparent;font-size:28px;line-height:1}.mobile-class-row{display:grid;grid-template-columns:58px 2px minmax(0,1fr) auto;align-items:center;gap:14px;margin-top:14px}.mobile-class-row strong{font-size:18px}.mobile-class-row i{width:2px;height:24px;border-radius:1px;background:var(--color-solid-brand)}.mobile-class-row i.live{background:var(--color-solid-success)}.mobile-class-row span{min-width:0;overflow:hidden;font-size:15px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.mobile-class-row em{color:var(--color-text-secondary);font-size:13px;font-style:normal}.mobile-class-row em.live{border-radius:999px;background:var(--color-success-3);color:var(--color-solid-success);padding:3px 8px;font-size:11px;font-weight:800}.mobile-alerts{display:grid;gap:8px}.alert-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:16px}.alert-row strong{font-size:15px}.absence-request-form{display:grid;gap:10px}.absence-request-form input,.absence-request-form select{width:100%;height:40px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-bg-app);color:var(--color-text-primary);padding:0 12px}.absence-request-form button{height:40px;border:0;border-radius:var(--radius-md);background:var(--color-solid-brand);color:#fff;font-weight:800}.bottom-tabs{position:sticky;bottom:0;display:flex;justify-content:space-between;height:84px;border-top:1px solid var(--color-border-subtle);background:var(--color-bg-app);padding:12px 18px 30px}.bottom-tabs button{display:grid;justify-items:center;gap:4px;border:0;background:transparent;color:var(--color-text-disabled);font-size:11px}.bottom-tabs button.active{color:var(--color-text-primary);font-weight:800}.bottom-tabs span{font-size:24px;line-height:1}.state-panel{border:1px solid var(--color-border-subtle);border-radius:var(--radius-2);background:var(--color-bg-surface);color:var(--color-text-secondary);padding:16px;font-size:14px;font-weight:700}.state-panel.error{border-color:var(--color-danger-7);background:var(--color-danger-2);color:var(--color-danger-11)}.state-panel.empty{background:var(--color-bg-subtle)}@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.topbar{padding:16px 20px}.search-box{display:none}.content{padding:20px}.summary-grid,.dashboard-grid,.settings-layout,.form-grid,.student-summary-grid,.students-layout,.teacher-layout,.notices-layout,.company-landing-preview,.admin-shell,.admin-grid,.academy-link-grid,.tenant-table article,.student-row-card,.usage-log-list article{grid-template-columns:1fr}.settings-nav{display:none}}
