@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap";.statistics-chart{--chart-bg: var(--surface, #fff);--chart-text: var(--text, #202b3c);--chart-muted: var(--muted, #8290a4);--chart-border: var(--border, #e8edf5);min-width:0;margin:16px 0;padding:16px;border:1px solid var(--chart-border);border-radius:8px;background:var(--chart-bg);color:var(--chart-text)}.role-portal .statistics-chart{--chart-bg: var(--rp-card);--chart-text: var(--rp-text);--chart-muted: var(--rp-muted);--chart-border: var(--rp-border)}.statistics-chart h2{margin:0 0 14px;color:var(--chart-text);font-family:Manrope,Nunito,sans-serif;font-size:15px;font-weight:750}.semester-attendance-controls{display:flex;align-items:center;gap:12px;margin:16px 0 0;color:var(--text, #202b3c);font-size:13px;font-weight:700}.semester-attendance-controls select{min-width:150px;min-height:38px;padding:7px 10px;border:1px solid var(--border, #e8edf5);border-radius:8px;background:var(--surface, #fff);color:inherit;font:inherit}.semester-attendance-empty{margin:12px 0;color:var(--muted, #8290a4);font-size:13px}.role-portal .semester-attendance-controls{color:var(--rp-text)}.role-portal .semester-attendance-controls select{border-color:var(--rp-border);background:var(--rp-bg);color:var(--rp-text)}.statistics-donut-layout{display:flex;min-height:186px;align-items:center;justify-content:center;gap:25px;flex-wrap:wrap}.statistics-donut{position:relative;display:grid;width:176px;height:176px;flex:0 0 auto;place-items:center;border-radius:50%}.statistics-donut:before{position:absolute;top:24px;right:24px;bottom:24px;left:24px;border-radius:50%;background:var(--chart-bg);content:""}.statistics-donut-center{position:relative;z-index:1;display:flex;align-items:center;flex-direction:column;gap:2px}.statistics-donut-center strong{font-family:Manrope,Nunito,sans-serif;font-size:25px;font-weight:800}.statistics-donut-center span{color:var(--chart-muted);font-size:12px}.statistics-legend{display:flex;min-width:190px;max-width:360px;flex:1;flex-direction:column;gap:9px}.statistics-legend-row{display:grid;grid-template-columns:10px minmax(80px,1fr) 40px 42px;align-items:center;gap:9px;color:var(--chart-muted);font-size:12px}.statistics-legend-row>i,.statistics-series-item>i{width:10px;height:10px;border-radius:3px}.statistics-legend-row strong{color:var(--chart-text);font-size:12px;text-align:right}.statistics-legend-row small{font-size:12px;text-align:right}.statistics-series-legend{min-width:0;max-width:none;flex-direction:row;flex-wrap:wrap;gap:8px 18px;margin-bottom:10px}.statistics-series-item{display:inline-flex;align-items:center;gap:7px;color:var(--chart-muted);font-size:12px}.statistics-chart-scroll{width:100%;overflow-x:auto}.statistics-chart-inner{width:100%;padding:2px 6px 0 0}.statistics-plot-row{display:grid;grid-template-columns:30px minmax(0,1fr);height:205px}.statistics-axis-labels{display:flex;align-items:stretch;flex-direction:column;justify-content:space-between;padding:0 5px 0 0;color:var(--chart-muted);font-size:12px;text-align:right}.statistics-plot-area{position:relative;min-width:0}.statistics-gridlines{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:space-between}.statistics-gridlines i{display:block;width:100%;border-top:1px solid var(--chart-border)}.statistics-bar-groups{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(var(--category-count, 1),minmax(0,1fr));align-items:stretch}.statistics-bar-group{display:flex;min-width:0;align-items:stretch;justify-content:center;gap:3px}.statistics-bar-slot{display:flex;width:12px;height:100%;align-items:flex-end;justify-content:center}.statistics-bar{display:block;width:100%;min-height:0;border-radius:3px 3px 0 0}.statistics-x-labels{display:grid;grid-template-columns:30px repeat(var(--category-count, 1),minmax(0,1fr));min-height:30px;padding-top:7px}.statistics-x-labels small{overflow:hidden;color:var(--chart-muted);font-size:12px;text-align:center;text-overflow:ellipsis;white-space:nowrap}@media(max-width:580px){.statistics-chart{padding:13px}.statistics-donut-layout{gap:14px}.statistics-donut{width:150px;height:150px}.statistics-donut:before{top:21px;right:21px;bottom:21px;left:21px}.statistics-plot-row{height:180px}.statistics-bar-slot{width:9px}}.role-portal{--rp-bg: #f5f7fa;--rp-card: #fff;--rp-text: #111827;--rp-muted: #6b7280;--rp-border: #e2e8f0;--rp-primary: #1e56a0;--rp-secondary: #eef2ff;display:flex;min-height:100vh;background:var(--rp-bg);color:var(--rp-text);font-family:Inter,Segoe UI,sans-serif}.role-portal.portal-dark{--rp-bg: #0f172a;--rp-card: #1e293b;--rp-text: #f1f5f9;--rp-muted: #94a3b8;--rp-border: #334155;--rp-primary: #3b82f6;--rp-secondary: #1e3a5f;color-scheme:dark}.rp-sidebar{position:fixed;z-index:20;inset:0 auto 0 0;display:flex;width:256px;flex-direction:column;isolation:isolate;overflow:hidden;border-right:1px solid rgb(255 255 255 / 14%);background:radial-gradient(ellipse at 84% 4%,rgb(139 220 255 / 29%),transparent 31%),radial-gradient(ellipse at 5% 66%,rgb(91 149 255 / 20%),transparent 39%),linear-gradient(160deg,#2869c7,#2059b0 44%,#17458f);color:#fff}.rp-sidebar:before{position:absolute;z-index:0;top:0;right:0;bottom:0;left:0;background:linear-gradient(118deg,transparent 8%,rgb(255 255 255 / 5%) 28%,transparent 45%),radial-gradient(ellipse at 82% 2%,rgb(255 255 255 / 12%),transparent 25%);content:"";pointer-events:none}.rp-sidebar:after{position:absolute;z-index:0;top:62px;right:-220px;width:380px;height:380px;border:1px solid rgb(219 242 255 / 17%);border-radius:50%;box-shadow:0 0 0 22px #dbf2ff0a,0 0 0 48px #dbf2ff08,0 0 48px #6bcdff1f;content:"";pointer-events:none}.rp-sidebar>*{position:relative;z-index:1}.rp-brand{display:flex;min-height:76px;align-items:center;gap:12px;padding:16px;border-bottom:1px solid rgb(255 255 255 / 18%)}.rp-logo{display:block;width:48px;height:48px;overflow:hidden;border-radius:8px;background:var(--rp-primary)}.rp-logo img{width:100%;height:100%;object-fit:cover}.rp-brand>span:last-child{display:flex;flex-direction:column;gap:2px}.rp-brand strong{color:#fff;font-family:Nunito,sans-serif;font-size:15px;font-weight:800}.rp-brand small{color:#ffffffb8;font-size:12px}.rp-role-badge{align-self:flex-start;margin:12px 16px 4px;padding:4px 10px;border-radius:999px;background:#ffffff26;color:#fff;font-size:12px;font-weight:700}.rp-nav{display:flex;flex:1;flex-direction:column;gap:2px;overflow-y:auto;padding:8px 12px}.rp-nav-item{display:flex;min-height:39px;align-items:center;gap:10px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:#ffffffc2;cursor:pointer;font-size:13px;font-weight:500;text-align:left}.rp-nav-item:hover{background:#ffffff1c;color:#fff}.rp-nav-item.active{background:#fff3;color:#fff;font-weight:700}.rp-nav-item svg{flex:0 0 auto}.rp-sidebar-footer{padding:12px;border-top:1px solid rgb(255 255 255 / 18%)}.rp-user{display:flex;min-width:0;align-items:center;gap:10px;padding:4px 0 12px}.rp-user>span:last-child{display:flex;min-width:0;flex-direction:column;gap:3px}.rp-user strong,.rp-user small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rp-user strong{color:#fff;font-size:12px}.rp-user small{color:#ffffffad;font-size:12px}.rp-avatar,.rp-header-avatar{display:grid;flex:0 0 auto;width:34px;height:34px;place-items:center;border-radius:50%;background:var(--rp-primary);color:#fff;font-size:12px;font-weight:800}.rp-logout{display:flex;width:100%;min-height:37px;align-items:center;gap:10px;padding:0 5px;border:0;border-radius:7px;background:transparent;color:#fff;cursor:pointer;font-size:13px}.rp-logout:hover{background:#ffffff21}.rp-main{min-width:0;min-height:100vh;flex:1;margin-left:256px}.rp-header{position:sticky;z-index:10;top:0;isolation:isolate;overflow:hidden;display:flex;height:64px;align-items:center;gap:12px;padding:0 20px;border-bottom:1px solid rgb(255 255 255 / 22%);background:radial-gradient(ellipse at 88% -70%,rgb(151 225 255 / 34%),transparent 40%),linear-gradient(105deg,#2869c7,#245dbd 48%,#1d53a8);color:#fff}.rp-header:before{position:absolute;z-index:0;top:-86px;right:70px;width:250px;height:150px;border:1px solid rgb(231 247 255 / 18%);border-radius:50%;box-shadow:0 0 0 13px #e7f7ff0d,0 0 0 32px #e7f7ff0a,0 0 32px #73d5ff2b;content:"";pointer-events:none}.rp-header>*{position:relative;z-index:1}.rp-breadcrumb{display:flex;min-width:0;flex:1;align-items:center;gap:8px;color:#ffffffb8;font-size:12px}.rp-breadcrumb strong{overflow:hidden;color:#fff;font-family:Nunito,sans-serif;font-size:16px;text-overflow:ellipsis;white-space:nowrap}.rp-header-actions{display:flex;align-items:center;gap:8px}.rp-connected{display:flex;align-items:center;gap:7px;margin-right:6px;color:#ffffffd1;font-size:12px}.rp-connected i{width:8px;height:8px;border-radius:50%;background:#16a34a}.rp-icon-button,.rp-menu-button{display:grid;width:36px;height:36px;place-items:center;border:0;border-radius:8px;background:transparent;color:#fff;cursor:pointer}.rp-icon-button:hover,.rp-menu-button:hover{background:#ffffff24;color:#fff}.rp-header-avatar{width:34px;height:34px;border:0;background:#fff;color:#245dbd}.portal-dark .rp-sidebar{background:radial-gradient(ellipse at 84% 4%,rgb(110 196 255 / 25%),transparent 31%),radial-gradient(ellipse at 5% 66%,rgb(85 125 255 / 19%),transparent 39%),linear-gradient(160deg,#214f9e,#1c4384 48%,#17376f)}.portal-dark .rp-header{background:radial-gradient(ellipse at 88% -70%,rgb(113 199 255 / 30%),transparent 40%),linear-gradient(105deg,#214f9e,#1d488e 48%,#173e7e)}.rp-header .rp-secondary-button{border-color:#ffffff59;background:#ffffff1a;color:#fff}.rp-header .rp-secondary-button:hover:not(:disabled){border-color:#fff;color:#fff}.rp-menu-button,.rp-backdrop{display:none}.rp-content{width:min(100%,1500px);margin:0 auto;padding:20px}.rp-page-title{display:flex;min-height:58px;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:20px}.rp-page-title h1{margin:0;font-family:Nunito,sans-serif;font-size:24px;font-weight:800;line-height:1.25}.rp-page-title p{margin:5px 0 0;color:var(--rp-muted);font-size:13px}.rp-page-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.rp-import-help{flex-basis:100%;color:var(--rp-muted);font-size:11px;line-height:1.45}.rp-secondary-button{display:inline-flex;min-height:38px;align-items:center;justify-content:center;gap:8px;padding:0 13px;border:1px solid var(--rp-border);border-radius:9px;background:var(--rp-card);color:var(--rp-text);cursor:pointer;font-size:12px;font-weight:600;white-space:nowrap}.rp-secondary-button:hover:not(:disabled){border-color:var(--rp-primary);color:var(--rp-primary)}.rp-secondary-button:disabled{cursor:default;opacity:.6}.rp-inline-actions{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:13px;padding-top:12px;border-top:1px solid var(--rp-border)}.rp-inline-actions .rp-secondary-button{min-height:34px;padding:0 9px;font-size:12px}.rp-class-card,.rp-event-card{padding:15px}.rp-class-open,.rp-event-open{display:block;width:100%;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;text-align:left}.rp-class-open:focus-visible,.rp-event-open:focus-visible{outline:3px solid color-mix(in srgb,var(--rp-primary) 30%,transparent);outline-offset:4px}.rp-form-modal{width:min(100%,760px)}.rp-form-modal>label,.rp-form-grid label,.rp-profile-form label{display:flex;min-width:0;flex-direction:column;gap:6px;color:var(--rp-muted);font-size:12px;font-weight:600}.rp-form-modal input,.rp-form-modal select,.rp-form-modal textarea,.rp-form-grid input,.rp-form-grid select,.rp-form-grid textarea,.rp-profile-form input,.rp-profile-form select,.rp-profile-form textarea,.rp-table select{width:100%;min-width:0;min-height:39px;padding:8px 10px;border:1px solid var(--rp-border);border-radius:7px;background:var(--rp-bg);color:var(--rp-text);font:inherit;font-size:12px}.rp-form-modal textarea,.rp-form-grid textarea,.rp-profile-form textarea{resize:vertical}.rp-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.rp-form-wide{grid-column:1 / -1}.rp-registration-form-link{align-self:flex-start;color:var(--rp-primary);font-size:12px;font-weight:700}.rp-registration-form-details{margin-top:20px;padding-top:4px;border-top:1px solid var(--rp-border)}.rp-form-grid .rp-checkbox-field{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:5px 10px}.rp-form-grid .rp-checkbox-field input[type=checkbox]{width:18px;min-height:18px;padding:0;accent-color:#2563eb}.rp-form-grid .rp-checkbox-field small{grid-column:2;color:var(--rp-muted);font-size:12px;font-weight:400}.rp-editor-section{display:flex;flex-direction:column;gap:10px}.rp-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--rp-text)}.rp-editor-section>small{color:var(--rp-muted);font-size:12px;line-height:1.5}.rp-editor-row{display:grid;align-items:end;gap:9px}.rp-benefit-row{grid-template-columns:minmax(145px,1.1fr) minmax(90px,.55fr) minmax(160px,1.5fr) 36px}.rp-period-row{grid-template-columns:minmax(110px,.8fr) minmax(180px,1fr) minmax(180px,1fr) 36px}.rp-editor-row .rp-icon-button{border:1px solid var(--rp-border);color:var(--rp-muted)}.rp-editor-row .rp-icon-button:hover{background:color-mix(in srgb,#ef4444 10%,var(--rp-card));color:#dc2626}.rp-image-help{color:var(--rp-muted);font-size:12px;font-weight:400;line-height:1.5}.rp-event-image-preview{display:block;width:100%;max-height:190px;border:1px solid var(--rp-border);border-radius:8px;object-fit:cover}.rp-form-hint{grid-column:1 / -1;color:var(--rp-muted);font-size:12px;line-height:1.5}.rp-form-modal footer,.rp-modal form>footer{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:13px;border-top:1px solid var(--rp-border)}.rp-form-modal .rp-error{min-height:0;margin-bottom:12px;padding:12px}.rp-qr-modal{width:min(100%,560px)}.rp-qr-result{display:flex;align-items:center;flex-direction:column;gap:10px;padding:6px 12px 14px;text-align:center}.rp-qr-image{padding:12px;border:1px solid var(--rp-border);border-radius:8px;background:#fff}.rp-qr-result strong{font-family:Nunito,sans-serif;font-size:16px}.rp-qr-result>span,.rp-qr-result p{color:var(--rp-muted);font-size:12px;line-height:1.55}.rp-roster-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;color:var(--rp-muted);font-size:12px}.rp-attendance-session-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.rp-attendance-top-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.rp-attendance-manual-button{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:8px 13px;border:1px solid var(--rp-primary);border-radius:9px;background:var(--rp-primary);color:#fff;font:inherit;font-weight:700;cursor:pointer;box-shadow:0 3px 10px #1e56a029}.rp-attendance-manual-button:hover{filter:brightness(1.07);transform:translateY(-1px)}.rp-manual-session-picker{width:min(100%,620px)}.rp-manual-session-list{display:grid;gap:8px}.rp-manual-attendance-page{display:grid;gap:18px}.rp-manual-page-heading{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:18px;border:1px solid var(--rp-border);border-radius:15px;background:linear-gradient(120deg,color-mix(in srgb,var(--rp-primary) 8%,var(--rp-card)),var(--rp-card) 68%)}.rp-manual-page-heading>div{min-width:0}.rp-manual-page-heading h1{margin:3px 0 0;font-family:Nunito,sans-serif;font-size:24px}.rp-manual-page-heading p{margin:4px 0 0;color:var(--rp-muted);font-size:13px}.rp-manual-session-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,350px),1fr));gap:12px}.rp-manual-session-card{display:flex;align-items:center;gap:13px;min-width:0;padding:16px;border:1px solid var(--rp-border);border-radius:14px;background:var(--rp-card);color:var(--rp-text);text-align:left;cursor:pointer;transition:border-color .16s,transform .16s,box-shadow .16s}.rp-manual-session-card:hover{transform:translateY(-2px);border-color:var(--rp-primary);box-shadow:0 7px 20px #1e56a017}.rp-manual-subject-card{min-height:120px}.rp-spin{animation:rp-spin .8s linear infinite}.rp-manual-session-copy{display:grid;flex:1;gap:4px}.rp-manual-session-copy strong{font-size:14px}.rp-manual-session-copy small{color:var(--rp-muted);font-size:12px}.rp-manual-session-state{display:flex;align-items:center;gap:11px;padding:13px 15px;border:1px solid var(--rp-border);border-radius:12px;background:var(--rp-card)}.rp-manual-session-state.is-open{border-color:#86d6ad;background:color-mix(in srgb,#22a06b 7%,var(--rp-card))}.rp-manual-session-state.is-closed{background:color-mix(in srgb,#64748b 6%,var(--rp-card))}.rp-state-dot{width:9px;height:9px;flex:none;border-radius:50%;background:#8993a4}.is-open .rp-state-dot{background:#20a36a;box-shadow:0 0 0 4px #20a36a1f}.rp-manual-session-state>div{display:grid;flex:1;gap:3px}.rp-manual-session-state strong{font-size:13px}.rp-manual-session-state small{color:var(--rp-muted);font-size:12px}.rp-manual-student-count{color:var(--rp-primary);font-size:13px;font-weight:700}.rp-manual-student-list{display:grid;gap:10px}.rp-manual-student-row{display:grid;grid-template-columns:42px minmax(140px,1fr) auto;align-items:center;gap:12px;padding:13px 15px;border:1px solid var(--rp-border);border-radius:13px;background:var(--rp-card)}.rp-manual-student-avatar{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--rp-secondary);color:var(--rp-primary);font-weight:800}.rp-manual-student-identity{display:grid;gap:3px;min-width:0}.rp-manual-student-identity strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.rp-manual-student-identity small,.rp-manual-student-time{color:var(--rp-muted);font-size:11px}.rp-manual-status-actions{display:flex;flex-wrap:wrap;gap:6px;grid-column:2/4}.rp-manual-status-option{padding:7px 10px;border:1px solid var(--rp-border);border-radius:9px;background:var(--rp-card);color:var(--rp-muted);font:inherit;font-size:12px;cursor:pointer}.rp-manual-status-option:hover:not(:disabled){border-color:var(--rp-primary);color:var(--rp-primary)}.rp-manual-status-option:disabled{cursor:not-allowed;opacity:.58}.rp-manual-status-option.is-present{border-color:#86d6ad;background:#e9f8ef;color:#176a42;font-weight:700}.rp-manual-status-option.is-late{border-color:#f2d18b;background:#fff7df;color:#8a5b00;font-weight:700}.rp-manual-status-option.is-absent{border-color:#f0aaa5;background:#fff0ef;color:#a3342e;font-weight:700}.rp-manual-status-option.is-excused{border-color:#c6b8f4;background:#f3efff;color:#6243ac;font-weight:700}.rp-manual-bulk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:11px 13px;border:1px solid var(--rp-border);border-radius:12px 12px 0 0;background:var(--rp-card)}.rp-manual-select-all{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700}.rp-manual-select-all input,.rp-manual-check-column input{width:16px;height:16px;accent-color:var(--rp-primary)}.rp-manual-selected-count{color:var(--rp-muted);font-size:12px}.rp-manual-selected-count strong{color:var(--rp-primary)}.rp-manual-bulk-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.rp-manual-bulk-controls label{color:var(--rp-muted);font-size:12px}.rp-manual-bulk-controls select{min-height:36px;padding:6px 9px;border:1px solid var(--rp-border);border-radius:8px;background:var(--rp-card);color:var(--rp-text);font:inherit}.rp-manual-bulk-controls .rp-attendance-manual-button{min-height:36px;padding:7px 11px}.rp-attendance-manual-button:disabled{cursor:not-allowed;opacity:.55;transform:none}.rp-manual-table-wrap{max-height:calc(100vh - 350px);min-height:250px;overflow:auto;border:1px solid var(--rp-border);border-top:0;border-radius:0 0 12px 12px;background:var(--rp-card)}.rp-manual-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.rp-manual-table th{position:sticky;z-index:2;top:0;padding:10px 12px;border-bottom:1px solid var(--rp-border);background:var(--rp-secondary);color:var(--rp-text);text-align:left;white-space:nowrap}.rp-manual-table td{padding:8px 12px;border-bottom:1px solid var(--rp-border);vertical-align:middle}.rp-manual-table tbody tr:nth-child(2n){background:color-mix(in srgb,var(--rp-secondary) 30%,var(--rp-card))}.rp-manual-table tbody tr:hover{background:color-mix(in srgb,var(--rp-primary) 6%,var(--rp-card))}.rp-manual-table tbody tr.is-selected{background:color-mix(in srgb,var(--rp-primary) 10%,var(--rp-card))}.rp-manual-check-column{width:54px;text-align:center!important}.rp-manual-status-check-column{width:92px;text-align:center!important}.rp-manual-status-check-column input{width:16px;height:16px;accent-color:var(--rp-primary);cursor:pointer}.rp-manual-status-check-column.is-present input{accent-color:#168052}.rp-manual-status-check-column.is-late input{accent-color:#a56a00}.rp-manual-status-check-column.is-excused input{accent-color:#6747b8}.rp-manual-status-check-column.is-absent input{accent-color:#ba3e37}.rp-manual-status-check-column input:disabled{cursor:not-allowed;opacity:.55}.rp-manual-row-number{width:55px;color:var(--rp-muted);text-align:center}.rp-manual-student-code{min-width:130px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.rp-manual-student-name{min-width:180px;font-weight:700}.rp-manual-status-label{display:inline-flex;align-items:center;min-height:27px;padding:4px 9px;border:1px solid var(--rp-border);border-radius:999px;background:var(--rp-card);color:var(--rp-muted);white-space:nowrap}.rp-manual-status-label.is-present{border-color:#86d6ad;background:#e9f8ef;color:#176a42}.rp-manual-status-label.is-late{border-color:#f2d18b;background:#fff7df;color:#8a5b00}.rp-manual-status-label.is-absent{border-color:#f0aaa5;background:#fff0ef;color:#a3342e}.rp-manual-status-label.is-excused{border-color:#c6b8f4;background:#f3efff;color:#6243ac}.rp-manual-status-label.is-pending{background:color-mix(in srgb,var(--rp-secondary) 42%,var(--rp-card))}.rp-attendance-session-card{display:flex;align-items:center;gap:11px;min-width:min(100%,360px);padding:11px 13px;border:1px solid var(--rp-border);border-radius:12px;background:var(--rp-card);color:var(--rp-text);text-align:left;cursor:pointer}.rp-attendance-session-card:hover{border-color:var(--rp-primary);box-shadow:0 5px 18px #1e56a014}.rp-attendance-session-card>span:nth-child(2){display:grid;gap:3px;flex:1}.rp-attendance-session-card small{color:var(--rp-muted)}.rp-attendance-session-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--rp-secondary);color:var(--rp-primary)}.rp-attendance-session-cta{display:flex;align-items:center;gap:3px;color:var(--rp-primary);font-size:12px;font-weight:700}.rp-attendance-roster-modal{width:min(100%,980px)}.rp-roster-summary.is-editable{padding:10px 12px;border-radius:10px;background:color-mix(in srgb,#22a06b 10%,var(--rp-card));color:#168052}.rp-manual-attendance-note{display:flex;align-items:flex-start;gap:11px;margin:0 0 14px;padding:13px 14px;border:1px solid color-mix(in srgb,var(--rp-primary) 20%,var(--rp-border));border-radius:12px;background:color-mix(in srgb,var(--rp-primary) 5%,var(--rp-card))}.rp-manual-attendance-note>span{display:grid;place-items:center;width:36px;height:36px;flex:0 0 auto;border-radius:10px;background:var(--rp-secondary);color:var(--rp-primary)}.rp-manual-attendance-note strong{display:block;margin:1px 0 3px;font-size:14px}.rp-manual-attendance-note p{margin:0;color:var(--rp-muted);font-size:12px;line-height:1.5}.rp-manual-status-select{min-width:145px;padding:7px 9px;border:1px solid var(--rp-border);border-radius:8px;background:var(--rp-card);color:var(--rp-text);font:inherit}.rp-profile-form{display:flex;flex-direction:column;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid var(--rp-border)}.rp-profile-form h2{margin:0}.rp-account-readonly{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}.rp-account-readonly>div{display:flex;min-width:0;flex-direction:column;gap:5px}.rp-account-readonly span{color:var(--rp-muted);font-size:12px}.rp-account-readonly strong{overflow-wrap:anywhere;font-size:12px}.notification-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.notification-item{display:flex;width:100%;min-height:70px;align-items:center;gap:12px;padding:13px;border:1px solid var(--rp-border);border-radius:8px;background:var(--rp-card);color:var(--rp-text);cursor:pointer;text-align:left}.notification-icon{display:grid;width:38px;height:38px;flex:0 0 auto;place-items:center;border-radius:8px;background:var(--rp-secondary);color:var(--rp-primary)}.notification-copy small{color:var(--rp-muted);font-size:12px}.rp-card{min-width:0;border:1px solid var(--rp-border);border-radius:12px;background:var(--rp-card)}.rp-metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.rp-metrics-compact{margin-bottom:16px}.rp-metric-card{display:flex;min-height:96px;align-items:center;gap:13px;padding:15px;border:1px solid var(--rp-border);border-radius:9px;background:var(--rp-card)}.rp-metric-icon{display:grid;width:42px;height:42px;flex:0 0 auto;place-items:center;border-radius:8px;background:color-mix(in srgb,var(--rp-primary) 12%,transparent);color:var(--rp-primary)}.rp-metric-icon.tone-1{background:#dcfce7;color:#16a34a}.rp-metric-icon.tone-2{background:#fef3c7;color:#d97706}.rp-metric-icon.tone-3{background:#cffafe;color:#0891b2}.rp-metric-icon.tone-4{background:#fee2e2;color:#dc2626}.rp-metric-card>div{display:flex;min-width:0;flex-direction:column;gap:4px}.rp-metric-card>div span{overflow:hidden;color:var(--rp-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.rp-metric-card>div strong{font-family:Nunito,sans-serif;font-size:22px;font-weight:800}.rp-chart-card{margin-top:16px;padding:18px}.rp-chart-card h2,.rp-list-card h2{margin:0 0 16px;font-family:Nunito,sans-serif;font-size:17px}.rp-bars{display:flex;flex-direction:column;gap:14px}.rp-bar-row{display:grid;grid-template-columns:minmax(100px,180px) minmax(80px,1fr) 44px;align-items:center;gap:12px;font-size:12px}.rp-bar-row>span{overflow:hidden;color:var(--rp-muted);text-overflow:ellipsis;white-space:nowrap}.rp-bar-row>div,.rp-progress-track{height:9px;overflow:hidden;border-radius:99px;background:var(--rp-bg)}.rp-bar-row i,.rp-progress-track i{display:block;height:100%;border-radius:inherit;background:var(--rp-primary)}.rp-bar-row strong{text-align:right}.rp-quick-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.rp-quick-card{display:flex;min-height:76px;align-items:center;gap:12px;padding:14px;color:var(--rp-primary);cursor:pointer;text-align:left}.rp-quick-card>span{display:flex;min-width:0;flex:1;flex-direction:column;gap:4px;color:var(--rp-text)}.rp-quick-card strong{font-size:13px}.rp-quick-card small{color:var(--rp-muted);font-size:12px}.rp-dashboard-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.rp-dashboard-filter-group{min-width:0;padding:14px;border:1px solid var(--rp-border);border-radius:10px;background:var(--rp-card)}.rp-dashboard-filter-group h2{display:flex;align-items:center;gap:8px;margin:0 0 11px;font-family:Nunito,sans-serif;font-size:14px}.rp-dashboard-filter-group h2 svg{color:var(--rp-primary)}.rp-dashboard-filter-group .rp-search{width:100%;min-height:38px;margin-bottom:8px;padding:0 10px}.rp-dashboard-filter-group>select{width:100%;min-height:38px;padding:7px 10px;border:1px solid var(--rp-border);border-radius:8px;background:var(--rp-bg);color:var(--rp-text);font:inherit;font-size:12px}.rp-semester-filter{display:flex;align-items:center;gap:12px;margin-top:16px;padding:12px 14px;border:1px solid var(--rp-border);border-radius:10px;background:var(--rp-card);color:var(--rp-text);font-size:13px;font-weight:700}.rp-semester-filter select{min-width:160px;min-height:38px;padding:7px 10px;border:1px solid var(--rp-border);border-radius:8px;background:var(--rp-bg);color:var(--rp-text);font:inherit}.rp-filter-error,.rp-filter-hint{margin:8px 0 0;color:var(--rp-muted);font-size:12px}.rp-filter-error{color:#dc2626}.rp-calendar-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.rp-calendar-period{display:flex;align-items:center;gap:5px}.rp-calendar-period strong{min-width:155px;font-family:Nunito,sans-serif;font-size:16px;text-align:center}.rp-segmented{display:flex;padding:3px;border:1px solid var(--rp-border);border-radius:9px;background:var(--rp-card)}.rp-segmented button{min-height:31px;padding:0 12px;border:0;border-radius:6px;background:transparent;color:var(--rp-muted);cursor:pointer;font-size:12px}.rp-segmented button.selected{background:var(--rp-secondary);color:var(--rp-primary);font-weight:700}.rp-list-card{padding:18px}.rp-list-row{display:flex;min-height:64px;align-items:center;gap:12px;border-top:1px solid var(--rp-border)}.rp-list-icon{display:grid;width:36px;height:36px;flex:0 0 auto;place-items:center;border-radius:9px;background:var(--rp-secondary);color:var(--rp-primary)}.rp-list-main{display:flex;min-width:0;flex:1;flex-direction:column;gap:5px}.rp-list-main strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.rp-list-main small,.rp-list-time{color:var(--rp-muted);font-size:12px}.rp-list-time{white-space:nowrap}.rp-search{display:flex;width:min(100%,430px);min-height:42px;align-items:center;gap:9px;margin-bottom:16px;padding:0 12px;border:1px solid var(--rp-border);border-radius:9px;background:var(--rp-card);color:var(--rp-muted)}.rp-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--rp-text);font-size:12px}.rp-search button{display:grid;width:28px;height:28px;place-items:center;border:0;border-radius:6px;background:transparent;color:var(--rp-muted);cursor:pointer}.rp-class-grid,.rp-event-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.rp-class-card{display:block;padding:18px;color:var(--rp-text);cursor:pointer;text-align:left;transition:border-color .16s,box-shadow .16s}.rp-class-card:hover,.rp-event-card:hover{border-color:var(--rp-primary);box-shadow:0 5px 18px #1e56a014}.rp-class-code,.rp-event-id{color:var(--rp-primary);font-family:JetBrains Mono,monospace;font-size:12px;font-weight:700}.rp-class-card h2,.rp-event-card h2{margin:8px 0 5px;font-family:Nunito,sans-serif;font-size:18px}.rp-class-card p{margin:0;color:var(--rp-muted);font-size:12px}.rp-class-meta{display:flex;justify-content:space-between;gap:10px;margin-top:15px;padding-top:12px;border-top:1px solid var(--rp-border);color:var(--rp-muted);font-size:12px}.rp-class-meta span:first-child{display:flex;align-items:center;gap:5px}.rp-event-card{padding:17px;transition:border-color .16s,box-shadow .16s}.rp-event-tabs,.rp-event-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px}.rp-event-tabs button{border:1px solid var(--rp-border);border-radius:10px;background:var(--rp-card);color:var(--rp-muted);padding:8px 12px;cursor:pointer;font:inherit}.rp-event-tabs button.active{background:var(--rp-primary);border-color:var(--rp-primary);color:#fff}.rp-event-status-new{background:#dcfce7!important;color:#166534!important}.rp-event-status-live{background:#fef3c7!important;color:#92400e!important}.rp-event-status-ended{background:#fee2e2!important;color:#991b1b!important}.rp-event-select{display:flex;align-items:center;gap:6px;margin:0 0 8px;color:var(--rp-muted);font-size:13px}.rp-event-top,.rp-event-detail,.rp-event-progress{display:flex;align-items:center;justify-content:space-between;gap:10px}.rp-event-id{color:var(--rp-muted);font-size:12px}.rp-tag{padding:4px 9px;border-radius:99px;background:var(--rp-secondary);color:var(--rp-primary);font-size:12px;font-weight:700}.rp-event-detail{justify-content:flex-start;margin-top:9px;color:var(--rp-muted);font-size:12px}.rp-event-progress{margin:16px 0 7px;color:var(--rp-muted);font-size:12px}.rp-event-progress strong{color:var(--rp-text)}.rp-progress-track{height:7px}.rp-table-wrap{width:100%;overflow-x:auto;border:1px solid var(--rp-border);border-radius:10px;background:var(--rp-card)}.rp-table{width:100%;border-collapse:collapse;font-size:12px;text-align:left}.rp-table th{height:46px;padding:0 15px;background:color-mix(in srgb,var(--rp-bg) 80%,transparent);color:var(--rp-muted);font-size:12px;font-weight:700;white-space:nowrap}.rp-table td{min-width:110px;height:49px;padding:8px 15px;border-top:1px solid var(--rp-border);color:var(--rp-text)}.rp-report-select{display:flex;max-width:560px;flex-direction:column;gap:9px;margin-bottom:18px;padding:16px}.rp-report-select label{font-size:12px;font-weight:700}.rp-report-select select{min-height:42px;padding:0 11px;border:1px solid var(--rp-border);border-radius:8px;background:var(--rp-card);color:var(--rp-text);font:inherit}.rp-settings-card{display:flex;max-width:780px;align-items:center;gap:12px;padding:18px}.rp-settings-card>div{flex:1}.rp-settings-card h2{margin:0 0 5px;font-family:Nunito,sans-serif;font-size:16px}.rp-settings-card p{margin:0;color:var(--rp-muted);font-size:12px}.rp-parameter-card{max-width:980px;margin-top:16px;padding:18px}.rp-parameter-card>header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.rp-parameter-card>header h2{margin:0 0 5px;font-family:Nunito,sans-serif;font-size:16px}.rp-parameter-card>header p{margin:0;color:var(--rp-muted);font-size:12px;line-height:1.5}.rp-parameter-card>header>svg{color:var(--rp-primary)}.rp-searchable-field{position:relative;display:grid;min-width:0;gap:6px;color:var(--rp-muted);font-size:12px}.rp-searchable-select{position:relative}.rp-searchable-select>input{width:100%;min-height:39px;padding:8px 11px;border:1px solid var(--rp-border);border-radius:7px;background:var(--rp-bg);color:var(--rp-text);font:inherit}.rp-searchable-select>input:focus{outline:2px solid color-mix(in srgb,var(--rp-primary) 22%,transparent);border-color:var(--rp-primary)}.rp-searchable-options{position:absolute;z-index:10;top:calc(100% + 4px);right:0;left:0;max-height:260px;overflow:auto;padding:4px;border:1px solid var(--rp-border);border-radius:8px;background:var(--rp-card);box-shadow:0 8px 24px #0f172a24}.rp-searchable-options>button{display:block;width:100%;padding:9px 10px;border:0;border-radius:5px;background:transparent;color:var(--rp-text);font:inherit;font-size:12px;text-align:left;cursor:pointer}.rp-searchable-options>button:hover,.rp-searchable-options>button[aria-selected=true]{background:var(--rp-secondary)}.rp-searchable-options>p{margin:0;padding:9px 10px;color:var(--rp-muted);font-size:12px}.rp-parameter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin-top:16px}.rp-parameter-field{display:grid;align-content:start;gap:8px;min-width:0;padding:14px;border:1px solid var(--rp-border);border-radius:10px;background:color-mix(in srgb,var(--rp-secondary) 25%,var(--rp-card));color:var(--rp-text);font-size:12px;font-weight:700}.rp-parameter-field>label:first-child{line-height:1.45}.rp-parameter-field>div{display:flex;align-items:center;gap:8px}.rp-parameter-field input[type=number]{width:100%;min-width:0;min-height:39px;padding:8px 10px;border:1px solid var(--rp-border);border-radius:7px;background:var(--rp-bg);color:var(--rp-text);font:inherit;font-size:13px}.rp-parameter-field input:disabled{opacity:.65}.rp-parameter-field>div>small{color:var(--rp-muted);font-weight:600;white-space:nowrap}.rp-parameter-inherit{display:flex;align-items:center;gap:7px;color:var(--rp-muted);font-size:11px;font-weight:500}.rp-parameter-inherit input{accent-color:var(--rp-primary)}.rp-parameter-range{color:var(--rp-muted);font-size:10px;font-weight:500}.rp-parameter-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid var(--rp-border);color:var(--rp-muted);font-size:11px}.rp-parameter-notice{margin:0 0 12px;color:#168052;font-size:12px;font-weight:600}.rp-parameter-help{margin:10px 0 0;color:var(--rp-muted);font-size:11px}.rp-profile-layout{display:grid;grid-template-columns:280px minmax(0,1fr);align-items:start;gap:16px}.rp-profile-summary{display:flex;min-height:235px;align-items:center;flex-direction:column;gap:10px;padding:22px;text-align:center}.rp-profile-avatar{display:grid;width:76px;height:76px;place-items:center;border-radius:50%;background:var(--rp-secondary);color:var(--rp-primary);font-family:Nunito,sans-serif;font-size:24px;font-weight:800}.rp-profile-summary h2{margin:2px 0 0;font-family:Nunito,sans-serif;font-size:18px}.rp-profile-summary code{color:var(--rp-muted);font-size:12px}.rp-profile-details{padding:20px}.rp-profile-details h2{margin:0 0 15px;font-family:Nunito,sans-serif;font-size:17px}.rp-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.rp-profile-grid>div{display:flex;min-height:69px;flex-direction:column;justify-content:center;gap:6px;padding:10px 12px;border:1px solid var(--rp-border);border-radius:8px}.rp-profile-grid span{color:var(--rp-muted);font-size:12px}.rp-profile-grid strong{font-size:13px;font-weight:600;overflow-wrap:anywhere}.rp-state,.rp-empty,.rp-error{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;min-height:190px;color:var(--rp-muted);text-align:center}.rp-spinner{width:25px;height:25px;border:3px solid var(--rp-border);border-top-color:var(--rp-primary);border-radius:50%;animation:rp-spin .8s linear infinite}@keyframes rp-spin{to{transform:rotate(360deg)}}.rp-empty{padding:28px 16px}.rp-empty>span{display:grid;width:48px;height:48px;place-items:center;border-radius:50%;background:var(--rp-secondary);color:var(--rp-primary)}.rp-empty strong,.rp-error strong{color:var(--rp-text);font-family:Nunito,sans-serif;font-size:16px}.rp-empty p,.rp-error p{max-width:500px;margin:0;font-size:12px;line-height:1.6}.rp-error{min-height:160px;padding:18px;border:1px solid #fecaca;border-radius:10px;background:color-mix(in srgb,#fee2e2 35%,var(--rp-card));color:#b91c1c}.rp-error .rp-secondary-button{margin-top:3px}.rp-modal-backdrop{position:fixed;z-index:50;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#0f172a73}.rp-modal{width:min(100%,900px);max-height:85vh;overflow:auto;padding:18px;border:1px solid var(--rp-border);border-radius:13px;background:var(--rp-card);color:var(--rp-text);box-shadow:0 20px 70px #0003}.rp-modal>header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.rp-modal h2{margin:0;font-family:Nunito,sans-serif;font-size:20px}.rp-modal p{margin:4px 0 0;color:var(--rp-muted);font-size:12px}.rp-detail-intro{margin:0 0 16px;padding:15px 16px;border:1px solid var(--rp-border);border-left:3px solid var(--rp-primary);border-radius:9px;background:color-mix(in srgb,var(--rp-secondary) 42%,var(--rp-card))}.rp-detail-eyebrow{color:var(--rp-primary);font-size:12px;font-weight:800;letter-spacing:.08em}.rp-detail-intro p{margin:7px 0 0;color:var(--rp-text);font-size:13px;line-height:1.65}.rp-class-detail-grid{margin-bottom:18px}.rp-event-detail-cover{position:relative;display:flex;min-height:155px;align-items:flex-end;overflow:hidden;margin-bottom:15px;padding:16px;border-radius:9px;background:linear-gradient(135deg,#1e56a0,#4385d4 58%,#90b8eb);color:#fff}.rp-event-detail-cover.has-image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.rp-event-detail-cover.has-image:after{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(0deg,#0f172ab8,#0f172a0d);content:""}.rp-event-detail-cover span{position:relative;z-index:1;font-size:12px;font-weight:700;letter-spacing:.08em}.rp-clickable-row{cursor:pointer}.rp-clickable-row:hover{background:color-mix(in srgb,var(--rp-primary) 7%,var(--rp-card))}.rp-certificate-preview{display:block;width:100%;height:min(68vh,760px);margin-top:14px;border:1px solid var(--rp-border);border-radius:10px;background:#f8fafc}.rp-template-modal{width:min(100%,1040px)}.rp-template-preview{height:min(42vh,480px);margin-top:0}.rp-signature-editor{display:grid;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid var(--rp-border)}.rp-signer-editor{display:grid;gap:10px;padding:14px;border:1px solid var(--rp-border);border-radius:10px;background:color-mix(in srgb,var(--rp-secondary) 20%,var(--rp-card))}.rp-signature-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.rp-signature-heading h3{margin:0;font-family:Nunito,sans-serif;font-size:15px}.rp-signature-heading p,.rp-signature-help{margin:4px 0 0;color:var(--rp-muted);font-size:12px;line-height:1.5}.rp-signature-current{width:145px;height:54px;object-fit:contain;border:1px solid var(--rp-border);border-radius:7px;background:#fff}.rp-signature-name{display:grid;max-width:520px;gap:5px;color:var(--rp-muted);font-size:12px;font-weight:600}.rp-signature-name input{min-height:38px;padding:8px 10px;border:1px solid var(--rp-border);border-radius:7px;background:var(--rp-bg);color:var(--rp-text);font:inherit}.rp-signature-actions,.rp-signature-footer{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.rp-signature-color{display:inline-flex;min-height:38px;align-items:center;gap:8px;padding:0 10px;border:1px solid var(--rp-border);border-radius:9px;color:var(--rp-text);font-size:12px;font-weight:600}.rp-signature-color input{width:30px;height:28px;padding:2px;border:0;background:transparent;cursor:pointer}.rp-signature-canvas{display:block;width:100%;height:auto;border:1px dashed var(--rp-border);border-radius:8px;background:#fff;cursor:crosshair;touch-action:none}.rp-signature-help{margin:-5px 0 0}.rp-signature-footer{justify-content:flex-end;padding-top:12px;border-top:1px solid var(--rp-border)}.rp-signature-save{border-color:var(--rp-primary);background:var(--rp-primary);color:#fff}.rp-signature-save:hover:not(:disabled){background:color-mix(in srgb,var(--rp-primary) 88%,#000);color:#fff}.rp-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:14px 0}.rp-detail-grid>div{display:grid;gap:5px;padding:12px;border:1px solid var(--rp-border);border-radius:9px;background:var(--rp-card)}.rp-detail-grid small{color:var(--rp-muted);font-size:12px}.rp-feedback-content{padding:16px;border:1px solid var(--rp-border);border-radius:10px;background:var(--rp-card);line-height:1.65;white-space:pre-wrap}.rp-event-description{color:var(--rp-muted);line-height:1.6}.rp-modal-section-title{margin:20px 0 10px;font-family:Nunito,sans-serif;font-size:15px}.rp-detail-list-item{margin:0 0 8px!important;padding:10px 12px;border:1px solid var(--rp-border);border-radius:8px;color:var(--rp-text)!important;line-height:1.55}.rp-modal-muted{color:var(--rp-muted);font-size:12px;line-height:1.55}.rp-detail-error{margin:12px 0;padding:11px 12px;border:1px solid #fca5a5;border-radius:8px;background:color-mix(in srgb,#fee2e2 30%,var(--rp-card));color:#b91c1c;font-size:12px;line-height:1.5}.rp-import-preview{display:grid;max-height:42vh;gap:8px;overflow:auto;margin-top:14px}.rp-import-preview>div{display:grid;gap:4px;padding:10px 12px;border:1px solid var(--rp-border);border-radius:8px;background:var(--rp-bg)}.rp-import-preview strong{color:var(--rp-text);font-size:12px}.rp-import-preview span,.rp-import-preview code{color:var(--rp-muted);font-size:11px;line-height:1.5;overflow-wrap:anywhere}.rp-import-preview code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.rp-import-warning{display:grid;gap:5px;margin-top:12px;padding:10px 12px;border:1px solid #fca5a5;border-radius:8px;background:color-mix(in srgb,#fee2e2 30%,var(--rp-card));color:#b91c1c;font-size:12px;line-height:1.5}.rp-import-warning strong{color:inherit;font-size:12px}@media(max-width:760px){.rp-sidebar{z-index:40;transform:translate(-100%);transition:transform .2s ease}.rp-sidebar.rp-sidebar-open{transform:translate(0)}.rp-backdrop{position:fixed;z-index:30;top:0;right:0;bottom:0;left:0;display:block;border:0;background:#0f172a6b}.rp-main{margin-left:0}.rp-menu-button{display:grid;flex:0 0 auto}.rp-header{height:58px;padding:0 10px}.rp-connected{display:none}.rp-content{padding:17px 13px 30px}.rp-page-title{align-items:flex-start;flex-direction:column;gap:10px}.rp-page-title h1{font-size:21px}.rp-page-actions{align-self:stretch;justify-content:flex-end}.rp-metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.rp-metric-card{min-height:78px;gap:9px;padding:10px}.rp-metric-icon{width:34px;height:34px}.rp-metric-card>div span{font-size:12px}.rp-metric-card>div strong{font-size:18px}.rp-quick-actions,.rp-class-grid,.rp-event-grid,.rp-dashboard-filters,.rp-profile-layout,.rp-profile-grid{grid-template-columns:1fr}.rp-calendar-controls{align-items:flex-start;flex-direction:column}.rp-calendar-period{width:100%;justify-content:space-between}.rp-segmented{align-self:stretch;justify-content:space-around}.rp-list-row{align-items:flex-start;padding:10px 0}.rp-list-time{max-width:105px;white-space:normal;text-align:right}.rp-settings-card{align-items:flex-start;flex-wrap:wrap}.rp-parameter-grid{grid-template-columns:1fr}.rp-parameter-footer{align-items:stretch;flex-direction:column}.rp-form-grid,.rp-account-readonly{grid-template-columns:1fr}.rp-benefit-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 36px}.rp-benefit-row>input[aria-label^="Ná»™i dung"]{grid-column:1 / 3}.rp-period-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 36px}.rp-period-row>input:first-child{grid-column:1 / -1}.rp-modal-backdrop{padding:10px}.rp-modal{max-height:92vh;padding:14px}.rp-template-preview{height:34vh}.rp-signature-heading{align-items:flex-start}.rp-signature-current{width:100px;height:46px}.rp-signature-footer .rp-secondary-button{flex:1 1 150px}.rp-event-detail-cover{min-height:120px}.rp-detail-intro{padding:12px}.rp-inline-actions{align-items:stretch}.rp-inline-actions .rp-secondary-button{flex:1 1 120px}.rp-roster-summary{align-items:flex-start;flex-direction:column}.rp-manual-page-heading{grid-template-columns:1fr auto;align-items:start}.rp-manual-page-heading>.rp-secondary-button:first-child{grid-column:1/-1;justify-self:start}.rp-manual-page-heading h1{font-size:21px}.rp-manual-session-state{align-items:flex-start;flex-wrap:wrap}.rp-manual-session-state>div{flex-basis:calc(100% - 32px)}.rp-manual-student-count{margin-left:20px}.rp-manual-student-row{grid-template-columns:40px minmax(0,1fr);gap:9px}.rp-manual-student-time{grid-column:2}.rp-manual-status-actions{grid-column:1/-1}.rp-manual-status-option{flex:1 1 calc(50% - 6px)}.rp-attendance-top-actions{width:100%}.rp-attendance-top-actions>*{flex:1}.notification-item{align-items:flex-start}.notification-item .status-tag{display:none}}:root{font-family:DM Sans,Segoe UI,sans-serif;color:#202b3c;background:#f5f7fb;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--page: #f5f7fb;--surface: #fff;--surface-soft: #f8faff;--text: #202b3c;--muted: #8290a4;--border: #e8edf5;--primary: #2857d9;--primary-dark: #1745c1;--shadow: 0 8px 26px rgb(35 53 89 / 5%)}:root[data-theme=dark]{color-scheme:dark;--page: #111827;--surface: #1b2535;--surface-soft: #222e41;--text: #e9eef8;--muted: #9aa8bb;--border: #303d51;--primary: #7b9cff;--primary-dark: #5e82f1;--shadow: 0 8px 26px rgb(0 0 0 / 14%)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--page);color:var(--text)}button,input,select{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgb(63 116 242 / 22%);outline-offset:2px}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;z-index:20;display:flex;width:254px;flex-direction:column;padding:27px 17px 16px;border-right:1px solid rgb(255 255 255 / 14%);background:linear-gradient(155deg,#3479d1,#2265bd 42%,#14498f);color:#fff;isolation:isolate;overflow:hidden}.sidebar:before{position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 85% 5%,rgb(169 225 255 / 28%),transparent 32%),radial-gradient(ellipse at 4% 72%,rgb(127 180 255 / 18%),transparent 38%),repeating-linear-gradient(135deg,transparent 0 34px,rgb(255 255 255 / 3%) 35px 36px,transparent 37px 72px);content:"";pointer-events:none}.brand-lockup{display:flex;align-items:center;gap:11px;padding:0 9px 31px}.brand-lockup>div:nth-child(2){display:flex;flex-direction:column;gap:1px}.brand-lockup strong{color:#fff;font-family:Manrope,sans-serif;font-size:19px;font-weight:800;letter-spacing:.03em}.brand-lockup span{color:#ffffffb8;font-size:12px;font-weight:700;letter-spacing:.14em}.brand-mark{display:grid;width:41px;height:41px;place-items:center;border-radius:13px;background:linear-gradient(145deg,#3168ee,#1644bc);color:#fff;box-shadow:0 6px 14px #2452ce38}.sidebar .brand-mark.logo-mark{width:52px;height:52px;flex:0 0 auto}.brand-mark.logo-mark{overflow:hidden;padding:2px;border:1px solid rgb(24 71 142 / 12%);border-radius:50%;background:#fff;box-shadow:0 4px 12px #1431681f}.huit-logo{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover}.login-brand .brand-mark.logo-mark{width:44px;height:44px}.login-brand .brand-mark.logo-mark.light{background:#fff}.sidebar-close,.mobile-menu-button{display:none!important}.sidebar-caption{padding:0 12px 11px;color:#ffffff9e;font-size:12px;font-weight:700;letter-spacing:.12em}.main-nav{display:flex;flex-direction:column;gap:5px}.nav-link{position:relative;display:flex;align-items:center;gap:12px;width:100%;padding:11px 12px;border:0;border-radius:9px;background:transparent;color:#ffffffc2;cursor:pointer;font-size:13px;font-weight:600;text-align:left;transition:background .18s,color .18s}.nav-link:hover{background:#ffffff1c;color:#fff}.nav-link.active,:root[data-theme=dark] .nav-link.active{background:#ffffff30;color:#fff}.nav-live-dot{width:7px;height:7px;margin-left:auto;border-radius:100%;background:#ec8e53;box-shadow:0 0 0 3px #ec8e5324}.sidebar-spacer{flex:1;min-height:20px}.attendance-promo{padding:16px 14px 14px;border:1px solid rgb(255 255 255 / 24%);border-radius:12px;background:#ffffff1a;color:#fff}:root[data-theme=dark] .attendance-promo{border-color:var(--border);background:var(--surface-soft)}.promo-icon{display:grid;width:31px;height:31px;place-items:center;margin-bottom:11px;border-radius:9px;background:#e5ecff;color:#3764df}.attendance-promo strong{display:block;font-size:12px}.attendance-promo p{margin:5px 0 11px;color:#ffffffbd;font-size:12px;line-height:1.5}.attendance-promo button{display:inline-flex;align-items:center;gap:5px;padding:0;border:0;background:transparent;color:#fff;cursor:pointer;font-size:12px;font-weight:700}.sidebar-footer{display:flex;align-items:center;gap:9px;margin-top:16px;padding:14px 2px 0;border-top:1px solid rgb(255 255 255 / 18%)}.user-avatar{display:grid;flex:0 0 auto;place-items:center;border-radius:50%;background:linear-gradient(145deg,#e0e9ff,#cad8fa);color:#3158b8;font-weight:800}.user-avatar.small{width:34px;height:34px;font-size:12px}.sidebar-user{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.sidebar-user strong{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.sidebar-user span{color:#ffffffad;font-size:12px}.main-area{min-height:100vh;margin-left:254px}.topbar{position:sticky;top:0;z-index:10;display:flex;height:70px;align-items:center;justify-content:space-between;padding:0 clamp(22px,4vw,55px);border-bottom:1px solid rgb(255 255 255 / 18%);background:#245dbd;color:#fff}.topbar-left,.topbar-actions,.breadcrumb,.header-profile{display:flex;align-items:center}.breadcrumb{gap:10px;color:#ffffffb3;font-size:12px}.breadcrumb strong{color:#fff;font-weight:700}.topbar-actions{gap:16px}.connection-pill{display:flex;align-items:center;gap:7px;color:#ffffffd1;font-size:12px}.connection-pill span{width:7px;height:7px;border-radius:100%;background:#48bd8a;box-shadow:0 0 0 3px #48bd8a1f}.icon-button{display:inline-grid;flex:0 0 auto;width:34px;height:34px;place-items:center;border:0;border-radius:9px;background:transparent;color:#7e8a9e;cursor:pointer;transition:color .16s,background .16s}.topbar .icon-button{color:#fff}.topbar .icon-button:hover{background:#ffffff24;color:#fff}.icon-button:hover{background:var(--surface-soft);color:var(--text)}.header-profile{gap:8px;padding:0;border:0;background:transparent;cursor:pointer}.topbar .header-profile{color:#fff}.page-content{width:min(100%,1450px);margin:0 auto;padding:34px clamp(22px,4vw,55px) 46px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}.page-eyebrow,.form-kicker{color:#8795aa;font-size:12px;font-weight:800;letter-spacing:.14em}.page-heading h1{margin:8px 0 5px;font-family:Manrope,sans-serif;font-size:clamp(24px,2.4vw,31px);font-weight:800;letter-spacing:-.04em}.page-heading p{max-width:700px;margin:0;color:var(--muted);font-size:12px;line-height:1.6}.heading-actions{display:flex;gap:9px}.primary-button,.outline-button,.banner-button{display:inline-flex;min-height:39px;align-items:center;justify-content:center;gap:8px;padding:0 15px;border:1px solid transparent;border-radius:8px;cursor:pointer;font-size:12px;font-weight:700;transition:transform .16s,background .16s,box-shadow .16s}.primary-button{background:#2c5bdc;color:#fff;box-shadow:0 4px 10px #2c5bdc29}.primary-button:hover:not(:disabled){transform:translateY(-1px);background:#214fce;box-shadow:0 7px 14px #2c5bdc3b}.primary-button:disabled,.outline-button:disabled{opacity:.58;cursor:not-allowed}.outline-button{border-color:var(--border);background:var(--surface);color:var(--text)}.outline-button:hover:not(:disabled){background:var(--surface-soft)}.compact{min-height:33px;padding:0 11px;font-size:12px}.full{width:100%}.text-button{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:4px 0;border:0;background:transparent;color:#315ed7;cursor:pointer;font-size:12px;font-weight:700}.text-button:hover{color:var(--primary-dark)}.welcome-banner{position:relative;display:flex;min-height:205px;overflow:hidden;align-items:center;justify-content:space-between;padding:28px 42px;border-radius:16px;background:linear-gradient(112deg,#1946b9,#295fe0 48%,#6584ea);color:#fff;box-shadow:0 12px 26px #2956cd29}.welcome-banner:before{position:absolute;top:-165px;right:24%;width:410px;height:410px;border:1px solid rgb(255 255 255 / 10%);border-radius:50%;content:""}.welcome-banner:after{position:absolute;right:-72px;bottom:-240px;width:470px;height:470px;border:1px solid rgb(255 255 255 / 12%);border-radius:50%;content:""}.welcome-copy{position:relative;z-index:2;max-width:560px}.welcome-tag{display:inline-flex;align-items:center;gap:6px;color:#9db8ff;font-size:12px;font-weight:800;letter-spacing:.11em}.welcome-banner .welcome-tag{color:#d7e3ff}.welcome-copy h2{margin:12px 0 5px;font-family:Manrope,sans-serif;font-size:29px;font-weight:800;letter-spacing:-.04em}.welcome-copy h2 span{color:#ffd879}.welcome-copy p{margin:0 0 17px;color:#ffffffc7;font-size:12px;line-height:1.55}.banner-button{min-height:34px;padding:0 12px;background:#fff;color:#2857d9;font-size:12px}.banner-button:hover{background:#edf2ff}.welcome-illustration{position:relative;z-index:1;display:grid;width:240px;height:170px;flex:0 0 auto;place-items:center;color:#e2eaff}.illustration-ring{position:absolute;border:1px solid rgb(255 255 255 / 22%);border-radius:50%}.ring-a{width:156px;height:156px}.ring-b{width:204px;height:204px;opacity:.6}.illustration-cap{display:grid;width:100px;height:100px;place-items:center;border:1px solid rgb(255 255 255 / 30%);border-radius:27px;background:linear-gradient(140deg,#ffffff38,#ffffff0d);box-shadow:0 15px 40px #081c5d33;transform:rotate(-8deg)}.float-star{position:absolute;color:#ffd879}.star-a{top:21px;right:32px;font-size:19px}.star-b{bottom:25px;left:36px;font-size:21px}.float-dot{position:absolute;width:7px;height:7px;border-radius:100%;background:#bed0ff}.dot-a{top:47px;left:35px}.dot-b{right:40px;bottom:38px;width:5px;height:5px;background:#ffd879}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin:17px 0}.stat-card{display:flex;min-height:82px;align-items:center;gap:12px;padding:14px;border:1px solid var(--border);border-radius:11px;background:var(--surface);box-shadow:var(--shadow)}.stat-icon{display:grid;width:37px;height:37px;flex:0 0 auto;place-items:center;border-radius:11px}.stat-icon.blue{background:#eaf0ff;color:#416ce1}.stat-icon.violet{background:#f0ebff;color:#8261d7}.stat-icon.green{background:#e6f8f0;color:#30a978}.stat-icon.amber{background:#fff5e3;color:#d89429}.stat-card>div:nth-child(2){display:flex;min-width:0;flex-direction:column;gap:5px}.stat-card>div:nth-child(2) span{color:var(--muted);font-size:12px}.stat-card>div:nth-child(2) strong{font-family:Manrope,sans-serif;font-size:20px;font-weight:800}.stat-spark{align-self:flex-start;margin-left:auto;font-size:14px}.stat-spark.blue{color:#5479e3}.stat-spark.violet{color:#9377dc}.stat-spark.green{color:#43b487}.stat-spark.amber{color:#d89c44}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:16px}.panel-card{padding:20px;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:var(--shadow)}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.section-title h2{margin:0;font-family:Manrope,sans-serif;font-size:14px;font-weight:800;letter-spacing:-.02em}.section-title p{margin:4px 0 0;color:var(--muted);font-size:12px}.schedule-list,.event-mini-list{display:flex;flex-direction:column}.schedule-item{display:flex;align-items:center;gap:11px;min-height:61px;border-top:1px solid var(--border)}.schedule-time{display:grid;width:46px;height:37px;flex:0 0 auto;place-items:center;border-radius:8px;background:#eff3ff;color:#4166d3;font-size:12px;font-weight:700}.schedule-time.tone-1{background:#f3edff;color:#8062cc}.schedule-time.tone-2{background:#eaf8f1;color:#319c6e}.schedule-time.tone-3{background:#fff3e6;color:#bd7d2c}.schedule-detail{display:flex;min-width:0;flex:1;flex-direction:column;gap:4px}.schedule-detail strong{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.schedule-detail span{overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.status-tag{display:inline-flex;align-items:center;min-height:21px;padding:0 7px;border-radius:5px;font-size:12px;font-weight:700;white-space:nowrap}.blue-tag{background:#edf2ff;color:#4167d1}.green-tag{background:#e8f7ef;color:#268858}.amber-tag{background:#fff5e2;color:#b98226}.red-tag{background:#fff0ef;color:#c75850}.event-mini{display:flex;align-items:center;gap:10px;min-height:66px;border-top:1px solid var(--border)}.event-date-tile{display:flex;width:42px;height:46px;flex:0 0 auto;flex-direction:column;align-items:center;justify-content:center;border-radius:8px;background:#f0edff;color:#7256c9}.event-date-tile strong{font-family:Manrope,sans-serif;font-size:18px;line-height:1}.event-date-tile span{margin-top:4px;font-size:12px;font-weight:700}.event-mini-info{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.event-mini-info strong{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.event-mini-info span{display:flex;align-items:center;gap:4px;overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.active-session-banner{display:flex;width:100%;align-items:center;gap:11px;margin:16px 0 0;padding:12px 15px;border:1px solid #f1dfb8;border-radius:10px;background:#fffbf1;color:#8d672a;cursor:pointer;text-align:left}.active-session-banner>span:nth-child(2){display:flex;flex:1;flex-direction:column;gap:3px}.active-session-banner strong{font-size:12px}.active-session-banner small{color:#9d865f;font-size:12px}.pulse-dot{width:8px;height:8px;border-radius:50%;background:#e7a639;box-shadow:0 0 0 4px #e7a63929}.bottom-hint{display:flex;align-items:center;gap:7px;margin-top:17px;color:#9aa5b5;font-size:12px}.empty-state{display:flex;min-height:165px;flex-direction:column;align-items:center;justify-content:center;padding:18px;text-align:center}.empty-icon{display:grid;width:43px;height:43px;place-items:center;margin-bottom:9px;border-radius:13px;background:var(--surface-soft);color:#7285aa}.empty-state>strong{font-size:12px}.empty-state p{max-width:320px;margin:6px 0 10px;color:var(--muted);font-size:12px;line-height:1.5}.centered-action{display:flex;margin:0 auto}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:18px 0 15px}.search-box{display:flex;width:min(100%,380px);height:39px;align-items:center;gap:9px;padding:0 11px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:#98a3b3}.search-box input{width:100%;border:0;outline:0;background:transparent;color:var(--text);font-size:12px}.search-box input::placeholder{color:#a5afbe}.result-count{color:var(--muted);font-size:12px}.join-class-form{display:flex;align-items:center;gap:13px;padding:15px;border:1px solid #e3eafe;border-radius:11px;background:linear-gradient(100deg,#f9fbff,#f2f6ff)}:root[data-theme=dark] .join-class-form{border-color:var(--border);background:var(--surface-soft)}.join-icon{display:grid;width:37px;height:37px;flex:0 0 auto;place-items:center;border-radius:10px;background:#e4ecff;color:#3864d9}.join-copy{display:flex;flex:1;flex-direction:column;gap:4px}.join-copy strong{font-size:12px}.join-copy span{color:var(--muted);font-size:12px}.join-class-form input{width:min(220px,25%);height:38px;padding:0 10px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text);font-size:12px}.class-grid,.event-grid,.certificate-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.class-card{overflow:hidden;padding:0;border:1px solid var(--border);border-radius:11px;background:var(--surface);box-shadow:var(--shadow);cursor:pointer;text-align:left;transition:transform .18s,box-shadow .18s}.class-card:hover,.event-card:hover{transform:translateY(-2px);box-shadow:0 12px 26px #23355917}.class-card-art{position:relative;display:flex;height:111px;align-items:center;justify-content:center;overflow:hidden;color:#ffffffd4}.class-card-art:before,.class-card-art:after{position:absolute;border:1px solid rgb(255 255 255 / 20%);border-radius:50%;content:""}.class-card-art:before{top:-76px;right:-26px;width:190px;height:190px}.class-card-art:after{bottom:-100px;left:-44px;width:190px;height:190px}.art-0{background:linear-gradient(120deg,#365fce,#7493ed)}.art-1{background:linear-gradient(120deg,#5464c9,#9b8be3)}.art-2{background:linear-gradient(120deg,#248976,#66bfaa)}.art-3{background:linear-gradient(120deg,#ba7442,#edb469)}.class-code{position:absolute;top:13px;left:14px;padding:5px 7px;border:1px solid rgb(255 255 255 / 30%);border-radius:5px;background:#ffffff1f;color:#fff;font-size:12px;font-weight:700}.art-label{position:absolute;right:13px;bottom:12px;color:#ffffffa8;font-size:12px;font-weight:700;letter-spacing:.13em}.class-card-body{padding:14px}.card-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;color:#7287be}.card-title-row h3{margin:0;color:var(--text);font-size:12px;line-height:1.4}.class-card-body p{display:flex;align-items:center;gap:6px;margin:9px 0 0;color:var(--muted);font-size:12px}.class-card-footer{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:14px;color:#8794a7;font-size:12px}.class-card-footer>span:first-child{display:flex;align-items:center;gap:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-caption{color:#4268d3;font-weight:700;white-space:nowrap}.progress-track{height:4px;margin-top:7px;overflow:hidden;border-radius:5px;background:#edf0f5}.progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#3c6ce5,#8ca9ff)}.filter-tabs{display:flex;align-items:center;gap:3px;padding:3px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.filter-tabs button{min-height:29px;padding:0 10px;border:0;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;font-size:12px;font-weight:600}.filter-tabs button.selected{background:#edf2ff;color:#315bd4}.notification-list{display:grid;gap:9px}.notification-item{display:flex;width:100%;min-height:72px;align-items:center;gap:12px;padding:13px;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--text);cursor:pointer;text-align:left}.notification-item.read{opacity:.68}.notification-icon{display:grid;width:38px;height:38px;flex:0 0 auto;place-items:center;border-radius:8px;background:var(--surface-soft);color:var(--primary)}.notification-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:5px}.notification-copy strong{font-size:12px}.notification-copy small{color:var(--muted);font-size:12px;line-height:1.4}.event-toolbar{margin-bottom:15px}.event-card{overflow:hidden;border:1px solid var(--border);border-radius:11px;background:var(--surface);box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s}.event-cover{position:relative;display:flex;width:100%;height:122px;align-items:center;justify-content:center;overflow:hidden;border:0;color:#ffffffdb;cursor:pointer;isolation:isolate}.event-cover:before,.event-cover:after{position:absolute;border:1px solid rgb(255 255 255 / 22%);border-radius:50%;content:""}.event-cover:before{width:170px;height:170px;top:-85px;right:-28px}.event-cover:after{width:150px;height:150px;bottom:-90px;left:-22px}.event-cover.has-image:before,.event-cover.has-image:after{display:none}.event-cover-image,.event-detail-image{position:absolute;z-index:0;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.event-cover-shade,.event-detail-shade{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgb(0 0 0 / 28%),transparent 75%),linear-gradient(0deg,rgb(0 0 0 / 42%),transparent 62%);pointer-events:none}.event-cover>svg{position:relative;z-index:2}.cover-0{background:linear-gradient(125deg,#4749ad,#8580dc)}.cover-1{background:linear-gradient(125deg,#147a78,#67c3a9)}.cover-2{background:linear-gradient(125deg,#c2694e,#f0a773)}.cover-3{background:linear-gradient(125deg,#2859b9,#6ea2e8)}.event-cover-kicker{position:absolute;z-index:2;top:14px;left:15px;color:#ffffffeb;font-size:12px;font-weight:700;letter-spacing:.12em}.event-date-label{position:absolute;z-index:2;right:13px;bottom:12px;color:#fff;font-size:12px}.event-card-content{padding:13px 14px 14px}.event-title-line{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.event-title-line h3{margin:0;font-size:12px;line-height:1.4}.event-organizer{margin:5px 0 10px;color:var(--muted);font-size:12px}.event-meta{display:flex;flex-direction:column;gap:6px}.event-meta span{display:flex;align-items:center;gap:6px;color:#78869b;font-size:12px}.event-card-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:13px;padding-top:10px;border-top:1px solid var(--border)}.calendar-panel{padding:18px}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px}.calendar-switch{display:flex;align-items:center;gap:5px}.calendar-switch>strong{margin:0 9px;font-size:12px}.today-button{margin-left:4px}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-height:340px;border:1px solid var(--border);border-radius:9px;overflow:hidden}.week-day{min-width:0;border-right:1px solid var(--border)}.week-day:last-child{border-right:0}.week-day-heading{display:flex;height:66px;flex-direction:column;align-items:center;justify-content:center;gap:5px;border-bottom:1px solid var(--border);background:var(--surface-soft);color:var(--muted);font-size:12px}.week-day-heading strong{display:grid;width:25px;height:25px;place-items:center;border-radius:50%;color:var(--text);font-size:12px}.is-today .week-day-heading strong{background:#315ed7;color:#fff}.is-today .week-day-heading{color:#315ed7}.week-day-items{display:flex;flex-direction:column;gap:7px;padding:8px 5px}.calendar-event{display:flex;min-height:54px;flex-direction:column;gap:4px;padding:7px 6px;border-left:2px solid #5078e2;border-radius:3px;background:#f0f4ff;color:#344c86;font-size:12px}.calendar-event.event{border-color:#9a6adb;background:#f5f0ff;color:#6648a3}.calendar-event strong{overflow-wrap:anywhere;font-size:12px;line-height:1.35}.calendar-event span,.calendar-event small{color:#7987a0;font-size:12px}.empty-day{display:block;padding-top:8px;color:#c0c8d3;font-size:12px;text-align:center}.calendar-legend{display:flex;gap:17px;padding:13px 2px 0;color:var(--muted);font-size:12px}.calendar-legend span{display:flex;align-items:center;gap:6px}.legend-dot{width:7px;height:7px;border-radius:2px;background:#5078e2}.legend-dot.event{background:#9a6adb}.calendar-panel .calendar-switch>strong{font-size:13px}.calendar-panel .week-day-heading{font-size:12px}.calendar-panel .week-day-heading strong{width:29px;height:29px;font-size:13px}.calendar-panel .calendar-event{min-height:62px;gap:5px;padding:8px 7px;font-size:12px}.calendar-panel .calendar-event strong{font-size:12px;line-height:1.4}.calendar-panel .calendar-event span,.calendar-panel .calendar-event small{font-size:12px;line-height:1.35}.calendar-panel .empty-day,.calendar-panel .calendar-legend,.calendar-panel .agenda-date span{font-size:12px}.calendar-panel .agenda-info strong{font-size:12px;line-height:1.35}.calendar-panel .agenda-info span,.calendar-panel .agenda-time{font-size:12px}@media(max-width:620px){.calendar-panel{overflow-x:auto}.calendar-panel .week-grid{min-width:700px}.calendar-panel .calendar-switch>strong{font-size:12px}.calendar-panel .calendar-event{min-height:66px}}.certificate-card-open{cursor:pointer;transition:transform .18s,box-shadow .18s}.certificate-card-open:hover{transform:translateY(-2px);box-shadow:0 12px 26px #2335591a}.certificate-preview-frame{display:block;width:100%;height:min(68vh,760px);margin-top:14px;border:1px solid var(--border);border-radius:10px;background:#f8fafc}.feedback-entry-list{display:grid;gap:7px;margin:10px 0}.feedback-entry{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);color:var(--text);cursor:pointer;text-align:left}.feedback-entry:hover{border-color:var(--primary)}.feedback-entry span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feedback-entry small{flex:0 0 auto;color:var(--muted)}.feedback-entry-detail{padding:14px;border-radius:8px;background:var(--surface-soft);line-height:1.65;white-space:pre-wrap}.agenda-list{display:flex;flex-direction:column}.agenda-item{display:flex;align-items:center;gap:12px;min-height:61px;border-top:1px solid var(--border)}.agenda-date{display:flex;width:52px;flex:0 0 52px;flex-direction:column;align-items:center;gap:2px}.agenda-date strong{font-family:Manrope,sans-serif;font-size:16px}.agenda-date span{color:var(--muted);font-size:12px;text-align:center}.agenda-icon{display:grid;width:34px;height:34px;place-items:center;border-radius:9px;background:#eff3ff;color:#5078e2}.agenda-icon.event{background:#f4efff;color:#9063d0}.agenda-info{display:flex;flex:1;flex-direction:column;gap:4px}.agenda-info strong{font-size:12px}.agenda-info span,.agenda-time{color:var(--muted);font-size:12px}.android-hero{display:grid;grid-template-columns:.9fr 1.1fr;min-height:355px;align-items:center;gap:36px;margin-bottom:17px;overflow:hidden;padding:28px 38px;border:1px solid #e2eafd;border-radius:15px;background:linear-gradient(115deg,#f1f5ff,#f9fbff 62%,#f2f0ff)}:root[data-theme=dark] .android-hero{border-color:var(--border);background:linear-gradient(115deg,#202c44,#1b2535 62%,#27243d)}.android-visual{position:relative;display:grid;min-height:300px;place-items:center}.phone-frame{position:relative;z-index:1;width:163px;height:274px;padding:12px 9px 10px;border:4px solid #26334c;border-radius:25px;background:#26334c;box-shadow:0 18px 36px #273e6e33;transform:rotate(-5deg)}.phone-notch{position:absolute;z-index:2;top:5px;left:50%;width:57px;height:11px;border-radius:0 0 9px 9px;background:#26334c;transform:translate(-50%)}.phone-screen{display:flex;height:100%;flex-direction:column;align-items:center;padding:20px 10px 0;border-radius:16px;background:linear-gradient(180deg,#eff4ff,#fff);color:#435c9a}.phone-logo{display:grid;width:36px;height:36px;place-items:center;overflow:hidden;padding:2px;border:1px solid #e4e9f2;border-radius:50%;background:#fff}.phone-screen>span{margin-top:7px;font-size:12px;font-weight:800;letter-spacing:.12em}.phone-scan{position:relative;display:grid;width:100px;height:100px;place-items:center;margin-top:25px}.scan-corner{position:absolute;width:20px;height:20px;border-color:#4a71df;border-style:solid}.top-left{top:0;left:0;border-width:2px 0 0 2px}.top-right{top:0;right:0;border-width:2px 2px 0 0}.bottom-left{bottom:0;left:0;border-width:0 0 2px 2px}.bottom-right{right:0;bottom:0;border-width:0 2px 2px 0}.scan-line{width:78%;height:2px;background:#59a8ff;box-shadow:0 0 10px #59a8ff}.phone-screen small{margin-top:14px;color:#7c89a0;font-size:12px}.phone-orbit{position:absolute;width:250px;height:250px;border:1px solid rgb(69 104 202 / 11%);border-radius:50%}.orbit-left{transform:translate(-25px,20px)}.orbit-right{width:210px;height:210px;transform:translate(22px,-20px)}.android-copy{max-width:550px}.android-copy .welcome-tag{color:#4770d7}.android-copy h2{max-width:470px;margin:13px 0 9px;font-family:Manrope,sans-serif;font-size:22px;font-weight:800;letter-spacing:-.04em;line-height:1.35}.android-copy>p{margin:0;color:var(--muted);font-size:12px;line-height:1.7}.android-steps{display:flex;flex-direction:column;gap:9px;margin-top:17px}.android-steps>div{display:flex;align-items:center;gap:10px}.android-steps>div>span{display:grid;width:25px;height:25px;flex:0 0 auto;place-items:center;border-radius:7px;background:#e4ebff;color:#4268d2;font-size:12px;font-weight:800}.android-steps p{margin:0;color:#78869b;font-size:12px}.android-steps strong{color:var(--text)}.active-attendance-panel .section-title{margin-bottom:7px}.live-label{display:inline-flex;align-items:center;gap:6px;color:#35a578;font-size:12px;font-weight:800;letter-spacing:.08em}.live-label i{width:6px;height:6px;border-radius:100%;background:#46b888;box-shadow:0 0 0 3px #46b88826}.active-session-row{display:flex;align-items:center;gap:11px;padding:12px 0;border-top:1px solid var(--border)}.active-session-icon{display:grid;width:35px;height:35px;place-items:center;border-radius:9px;background:#fff3df;color:#c48a2d}.active-session-row>div{flex:1}.active-session-row strong{font-size:12px}.active-session-row p{margin:4px 0 0;color:var(--muted);font-size:12px}.certificate-card{display:grid;grid-template-columns:1fr 1fr;overflow:hidden;border:1px solid var(--border);border-radius:11px;background:var(--surface);box-shadow:var(--shadow)}.certificate-art{position:relative;display:flex;min-height:210px;flex-direction:column;align-items:center;justify-content:center;gap:10px;overflow:hidden;background:linear-gradient(145deg,#eaf0ff,#f2efff)}.certificate-art:before,.certificate-art:after{position:absolute;width:200px;height:200px;border:1px solid rgb(75 104 176 / 14%);border-radius:50%;content:""}.certificate-art:before{top:-120px;right:-65px}.certificate-art:after{bottom:-132px;left:-70px}.certificate-seal{display:grid;width:67px;height:67px;place-items:center;border:1px solid #afbfeb;border-radius:50%;background:#fff;color:#4d70ce;box-shadow:0 6px 15px #425ca021}.certificate-lines{display:flex;width:65%;flex-direction:column;gap:6px;align-items:center}.certificate-lines span{width:78%;height:4px;border-radius:5px;background:#cdd7ee}.certificate-lines span:first-child{width:55%;height:6px;background:#aab9dd}.certificate-caption{color:#798bad;font-size:12px;font-weight:800;letter-spacing:.15em}.certificate-info{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;padding:17px}.certificate-info h3{margin:0;font-size:12px;line-height:1.45}.certificate-info p{margin:0;color:var(--muted);font-size:12px}.certificate-info .primary-button{margin-top:5px}.profile-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(245px,.8fr);align-items:start;gap:15px}.profile-main,.profile-side{display:flex;flex-direction:column;gap:15px}.profile-card{padding:0;overflow:hidden}.profile-banner{display:flex;align-items:center;gap:16px;padding:24px;background:linear-gradient(110deg,#214fca,#5379e6);color:#fff}.profile-avatar{display:grid;width:64px;height:64px;flex:0 0 auto;place-items:center;border:2px solid rgb(255 255 255 / 42%);border-radius:50%;background:#ffffff2b;font-family:Manrope,sans-serif;font-size:18px;font-weight:800}.profile-banner .welcome-tag{color:#d2e0ff;font-size:12px}.profile-banner h2{margin:6px 0 3px;font-family:Manrope,sans-serif;font-size:19px}.profile-banner p{margin:0;color:#ffffffba;font-size:12px}.profile-form{padding:21px 22px 22px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin:15px 0 17px}.form-grid label,.auth-form label,.password-form label{display:flex;flex-direction:column;gap:6px;color:#58667b;font-size:12px;font-weight:700}.form-grid input,.form-grid select,.auth-form input,.password-form input{width:100%;height:38px;padding:0 10px;border:1px solid var(--border);border-radius:7px;outline:none;background:var(--surface);color:var(--text);font-size:12px}.form-grid input:focus,.form-grid select:focus,.auth-form input:focus,.password-form input:focus{border-color:#7794e8}.form-grid select{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.profile-study{padding-top:4px}.info-cell{display:flex;min-width:0;flex-direction:column;gap:5px;padding:11px;border-radius:8px;background:var(--surface-soft)}.info-cell span{color:var(--muted);font-size:12px}.info-cell strong{overflow-wrap:anywhere;font-size:12px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:15px 0}.account-card>p,.connection-card>p{color:var(--muted);font-size:12px;line-height:1.5}.side-card-icon{display:grid;width:35px;height:35px;place-items:center;margin-bottom:12px;border-radius:10px;background:#edf2ff;color:#456bd4}.account-card h3,.preferences-card h3,.connection-card h3{margin:0;font-family:Manrope,sans-serif;font-size:12px}.account-card>p{margin:6px 0 14px}.password-form{display:flex;flex-direction:column;gap:11px}.password-form label{font-size:12px}.password-form input{height:35px}.password-form .outline-button{margin-top:2px}.preferences-card h3,.connection-card h3{margin-bottom:9px}.preference-row{display:flex;width:100%;align-items:center;gap:9px;padding:10px 0;border:0;border-top:1px solid var(--border);background:transparent;cursor:pointer;text-align:left}.pref-icon{display:grid;width:30px;height:30px;place-items:center;border-radius:8px;background:var(--surface-soft);color:#74839b}.preference-row>span:nth-child(2){display:flex;flex:1;flex-direction:column;gap:3px}.preference-row strong{font-size:12px}.preference-row small{color:var(--muted);font-size:12px}.toggle{width:27px;height:15px;padding:2px;border-radius:10px;background:#c7cfda}.toggle:after{display:block;width:11px;height:11px;border-radius:50%;background:#fff;content:"";transition:transform .15s}.toggle.on{background:#4b70dd}.toggle.on:after{transform:translate(12px)}.connection-card .api-address{overflow-wrap:anywhere;margin:0 0 10px;font-size:12px}.api-status{margin-bottom:0}.logout-button{display:flex;min-height:39px;align-items:center;justify-content:center;gap:8px;border:1px solid #f0d9d7;border-radius:8px;background:var(--surface);color:#c44f48;cursor:pointer;font-size:12px;font-weight:700}.modal-backdrop{position:fixed;z-index:50;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#10192b78;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal-card{display:flex;width:min(100%,650px);max-height:min(88vh,780px);flex-direction:column;overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:0 25px 70px #0a14283b}.modal-header{display:flex;min-height:57px;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid var(--border)}.modal-header h2{margin:0;font-family:Manrope,sans-serif;font-size:13px}.modal-content{overflow-y:auto;padding:19px}.detail-title{display:flex;align-items:center;gap:11px}.class-code-badge{display:grid;width:47px;height:47px;flex:0 0 auto;place-items:center;border-radius:12px;background:#edf2ff;color:#3d63d1;font-size:12px;font-weight:800}.detail-title h3,.event-detail-heading h3{margin:0;font-family:Manrope,sans-serif;font-size:15px}.detail-title p{margin:4px 0 0;color:var(--muted);font-size:12px}.modal-section-title{margin:18px 0 8px;font-size:12px}.modal-list-row{display:flex;align-items:center;gap:8px;min-height:35px;border-top:1px solid var(--border);color:#68768b;font-size:12px}.modal-list-row>span:last-child{margin-left:auto}.attendance-history{display:flex;flex-direction:column}.history-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:34px;border-top:1px solid var(--border);color:#738197;font-size:12px}.roster-list{display:flex;flex-direction:column}.roster-row{display:flex;min-height:48px;align-items:center;gap:9px;border-top:1px solid var(--border)}.roster-avatar{display:grid;width:30px;height:30px;flex:0 0 auto;place-items:center;border-radius:50%;background:#edf2ff;color:#4168d4;font-size:12px;font-weight:800}.roster-name{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.roster-name strong{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.roster-name small{color:var(--muted);font-size:12px}.modal-footnote{display:flex;align-items:flex-start;gap:7px;margin:15px 0 2px;color:#8b752e;font-size:12px;line-height:1.5}.event-detail-cover{position:relative;isolation:isolate;display:flex;height:100px;align-items:center;justify-content:space-between;overflow:hidden;padding:18px;border-radius:9px;background:linear-gradient(120deg,#345ccd,#9c8ce1);color:#fff}.event-detail-cover>svg,.event-detail-cover>span:last-child{position:relative;z-index:2}.event-detail-cover>span:last-child{font-size:12px;font-weight:700}.event-detail-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-top:15px}.event-description{color:#78869a;font-size:12px;line-height:1.65}.rule-number{display:grid;width:19px;height:19px;place-items:center;border-radius:50%;background:var(--surface-soft);color:#526892;font-size:12px}.modal-actions{display:flex;justify-content:flex-end;margin-top:16px}.muted-text{color:var(--muted);font-size:12px}.modal-content>.loading-state{padding:30px 0}.alert{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 0;padding:10px 12px;border:1px solid transparent;border-radius:8px;font-size:12px;line-height:1.5}.alert p{margin:3px 0 0}.alert.error{border-color:#f4d7d4;background:#fff5f4;color:#a9413a}.alert.warning{border-color:#f1e4bf;background:#fffbef;color:#8f6c2d}.alert.warning>div{flex:1}.alert .icon-button{color:inherit}.feedback-panel{margin-top:16px;padding:12px;border:1px solid var(--border);border-radius:9px;background:var(--surface-soft)}.feedback-panel .modal-section-title{margin:0 0 5px}.feedback-summary{margin:0 0 10px;color:var(--muted);font-size:12px}.feedback-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;margin-top:9px}.feedback-form{display:flex;flex-direction:column;gap:8px}.feedback-form label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:12px}.feedback-form textarea{min-height:76px;resize:vertical;padding:9px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text);font:inherit;font-size:12px}.rating-stars{display:flex;gap:4px}.rating-stars button{padding:0 2px;border:0;background:transparent;color:#c6ced9;cursor:pointer;font-size:23px}.rating-stars button.chosen{color:#e2a839}.toast{position:fixed;z-index:100;right:22px;bottom:22px;display:flex;max-width:min(450px,calc(100vw - 32px));align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);box-shadow:0 12px 35px #141e3729;color:var(--text);font-size:12px}.toast>span{display:grid;width:25px;height:25px;flex:0 0 auto;place-items:center;border-radius:7px;background:#e6f7ef;color:#2f9b6b}.toast.error>span{background:#fff0ef;color:#c75850}.toast .icon-button{margin-left:auto}.loading-state{display:flex;min-height:100px;align-items:center;justify-content:center;gap:9px;color:var(--muted);font-size:12px}.spinner{display:inline-block;width:18px;height:18px;border:2px solid #dfe6f3;border-top-color:#3564dd;border-radius:50%;animation:spin .7s linear infinite}.button-spinner{display:inline-block;width:13px;height:13px;border:2px solid rgb(255 255 255 / 50%);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.skeleton-card{height:235px;padding:14px;border:1px solid var(--border);border-radius:11px;background:var(--surface)}.skeleton-card span{display:block;height:20px;margin:6px 0 13px;border-radius:5px;background:linear-gradient(90deg,var(--surface-soft),#edf1f8,var(--surface-soft));background-size:200% 100%;animation:shimmer 1.2s infinite}.skeleton-card span:first-child{height:100px;margin-top:0}@keyframes shimmer{to{background-position:-200% 0}}.boot-screen{display:flex;min-height:100vh;flex-direction:column;align-items:center;justify-content:center;gap:15px;background:var(--page);color:var(--muted);font-size:12px}.boot-screen .brand-mark{margin-bottom:2px}.login-layout{display:grid;min-height:100vh;grid-template-columns:minmax(0,1.03fr) minmax(440px,.97fr);background:var(--surface)}.login-art{position:relative;display:flex;min-height:100vh;flex-direction:column;justify-content:space-between;overflow:hidden;padding:38px clamp(35px,6vw,92px) 26px;background:linear-gradient(145deg,#133993,#1c4cb6 48%,#386adc);color:#fff}.role-art-lecturer{background:linear-gradient(145deg,#174878,#236b9f 48%,#4e9bb8)}.role-art-employee{background:linear-gradient(145deg,#39417f,#5758a7 48%,#8b75c4)}.role-lecturer .login-form-side{background:#f0f7fa}.role-lecturer .login-form-wrap{padding:31px;border:1px solid #dcebf0;border-top:4px solid #3b91ad;border-radius:15px;background:#fff;box-shadow:0 15px 38px #225b7517}.role-lecturer .form-kicker{color:#387c95}.role-lecturer .auth-form .primary-button{background:#287e9d;box-shadow:0 4px 10px #287e9d29}.role-lecturer .auth-form .primary-button:hover:not(:disabled){background:#206b86}.role-lecturer .text-button{color:#287e9d}.role-employee .login-form-side{background:#f5f3fa}.role-employee .login-form-wrap{padding:31px;border:1px solid #e8e1f3;border-radius:22px 8px;background:#fff;box-shadow:0 16px 38px #4e3d771a}.role-employee .form-kicker{color:#7556a5}.role-employee .auth-form .primary-button{background:#7251a3;box-shadow:0 4px 10px #7251a32b}.role-employee .auth-form .primary-button:hover:not(:disabled){background:#62428f}.role-employee .text-button{color:#7251a3}.login-role-badge{display:inline-flex;min-height:29px;align-items:center;gap:7px;margin-bottom:12px;padding:0 9px;border-radius:7px;background:#edf2ff;color:#315ed7;font-size:12px;font-weight:800;letter-spacing:.1em}.badge-lecturer{background:#e8f4f8;color:#287e9d}.badge-employee{background:#f1ecf8;color:#7251a3}.login-art:before{position:absolute;top:20%;right:-25%;width:570px;height:570px;border:1px solid rgb(255 255 255 / 10%);border-radius:50%;content:""}.login-art:after{position:absolute;right:-14%;bottom:-39%;width:580px;height:580px;border:1px solid rgb(255 255 255 / 9%);border-radius:50%;content:""}.login-brand{position:relative;z-index:2;display:flex;align-items:center;gap:10px;font-family:Manrope,sans-serif;font-size:16px;font-weight:800;letter-spacing:.04em}.brand-mark.light{width:40px;height:40px;background:#ffffff2b;box-shadow:none}.login-brand small{display:block;margin-top:2px;color:#c3d4ff;font-family:DM Sans,sans-serif;font-size:12px;font-weight:700;letter-spacing:.15em}.art-copy{position:relative;z-index:2;max-width:530px;margin:auto 0;padding:40px 0}.art-copy .eyebrow{display:flex;align-items:center;gap:8px;color:#c3d4ff;font-size:12px;font-weight:800;letter-spacing:.13em}.art-copy .eyebrow span{width:6px;height:6px;border-radius:100%;background:#ffda7c}.art-copy h1{margin:22px 0 15px;font-family:Manrope,sans-serif;font-size:clamp(35px,4.1vw,54px);font-weight:800;letter-spacing:-.055em;line-height:1.17}.art-copy h1 em{color:#b8cdff;font-style:normal}.art-copy>p{max-width:410px;margin:0;color:#ffffffb8;font-size:12px;line-height:1.75}.art-stats{display:flex;gap:32px;margin-top:42px}.art-stats>div{display:flex;align-items:center;gap:9px}.art-stats strong{font-family:Manrope,sans-serif;font-size:22px}.art-stats strong span{font-size:12px}.art-stats>div>span{color:#ffffffab;font-size:12px;line-height:1.5}.login-art-footer{position:relative;z-index:2;display:flex;justify-content:space-between;gap:10px;color:#ffffff94;font-size:12px}.art-orb{position:absolute;z-index:1;border-radius:50%;background:#ffffff0d}.orb-one{right:17%;bottom:15%;width:33px;height:33px}.orb-two{top:24%;right:20%;width:8px;height:8px;background:#ffdb7c}.login-form-side{display:grid;place-items:center;padding:35px;background:var(--surface)}.login-form-wrap{width:min(100%,385px)}.login-form-wrap>h2,.success-panel h2{margin:9px 0 5px;font-family:Manrope,sans-serif;font-size:27px;font-weight:800;letter-spacing:-.04em}.form-subtitle{margin:0 0 24px;color:var(--muted);font-size:12px;line-height:1.6}.role-picker{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:0 0 19px}.role-picker button{display:flex;min-width:0;min-height:58px;align-items:center;gap:9px;padding:9px 10px;border:1px solid #e3e8f1;border-radius:9px;background:var(--surface);color:#8290a4;cursor:pointer;text-align:left;transition:border-color .16s,background .16s,color .16s}.role-picker button:hover{border-color:#bdcafa;background:#f9faff}.role-picker button.selected{border-color:#8da7ef;background:#f2f5ff;color:#315ed7;box-shadow:0 0 0 2px #4469d10f}.role-picker button>span{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.role-picker strong{color:var(--text);font-size:12px}.role-picker small{overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.auth-form{display:flex;flex-direction:column;gap:15px}.auth-form label{gap:7px;color:#526075;font-size:12px}.auth-form input{height:43px;padding:0 12px;border-color:#e2e8f1;font-size:12px}.forgot-link{align-self:flex-end;margin-top:-6px}.auth-form .primary-button{min-height:43px;margin-top:1px;font-size:12px}.login-footnote{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:25px;color:#98a4b5;font-size:12px}.login-footnote svg{color:#50a681}.form-mobile-brand,.login-mobile-footer{display:none}.back-button{display:flex;align-items:center;gap:6px;margin:0 0 27px;padding:0;border:0;background:transparent;color:#7b889b;cursor:pointer;font-size:12px}.back-button:hover{color:var(--primary)}.otp-input{max-width:100%;font-size:19px!important;font-weight:700;letter-spacing:.4em;text-align:center}.resend-button{align-self:center}.success-panel{text-align:center}.success-icon{display:grid;width:52px;height:52px;place-items:center;margin:0 auto 19px;border-radius:16px;background:#e5f7ef;color:#27986b}.success-panel p{margin:6px 0 21px;color:var(--muted);font-size:12px;line-height:1.6}.success-panel .form-kicker{color:#56a481}.success-panel .primary-button{width:100%}.login-form-wrap>.alert{margin-bottom:18px}.role-selection-layout{display:flex;min-height:100vh;flex-direction:column;padding:25px clamp(22px,6vw,86px) 18px;background:radial-gradient(ellipse at 50% 35%,#fff,#f7f9fd 54%,#f0f4fb);color:#202b3c}.role-selection-header{display:flex;align-items:center;justify-content:space-between}.role-selection-brand{display:flex;align-items:center;gap:10px}.role-selection-brand>span{display:flex;flex-direction:column;gap:2px}.role-selection-brand strong{font-family:Manrope,sans-serif;font-size:17px;font-weight:800}.role-selection-brand small{color:#8995a8;font-size:12px;font-weight:700;letter-spacing:.11em}.role-header-secure{display:flex;align-items:center;gap:7px;color:#8390a3;font-size:12px}.role-header-secure svg{color:#419a78}.role-selection-main{width:min(100%,950px);margin:auto;padding:58px 0 70px}.role-selection-intro{margin-bottom:30px;text-align:center}.role-selection-intro h1{margin:11px 0 8px;font-family:Manrope,sans-serif;font-size:clamp(29px,4vw,42px);font-weight:800;letter-spacing:-.05em;line-height:1.22}.role-selection-intro h1 span{color:#315ed7}.role-selection-intro p{margin:0;color:#7f8ba0;font-size:12px}.role-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.role-choice-card{display:flex;min-height:213px;flex-direction:column;align-items:flex-start;padding:20px;border:1px solid #e5eaf2;border-radius:14px;background:#fff;box-shadow:0 9px 26px #2335590d;cursor:pointer;text-align:left;transition:transform .18s,border-color .18s,box-shadow .18s}.role-choice-card:hover{transform:translateY(-4px);border-color:#b6c7f7;box-shadow:0 16px 35px #2335591a}.role-choice-icon{display:grid;width:48px;height:48px;place-items:center;border-radius:13px;background:#edf2ff;color:#315ed7}.choice-lecturer .role-choice-icon{background:#eaf5fa;color:#26789e}.choice-employee .role-choice-icon{background:#f1edfc;color:#7354b5}.role-choice-copy{display:flex;flex:1;flex-direction:column;gap:7px;padding-top:19px}.role-choice-copy strong{font-family:Manrope,sans-serif;font-size:16px;font-weight:800}.role-choice-copy small{color:#8390a3;font-size:12px;line-height:1.55}.role-choice-footer{display:flex;width:100%;align-items:center;justify-content:space-between;margin-top:15px;padding-top:12px;border-top:1px solid #edf0f5;color:#8290a5}.role-choice-footer span{font-size:12px;font-weight:800;letter-spacing:.12em}.role-choice-footer svg{color:#315ed7}.choice-lecturer .role-choice-footer svg{color:#26789e}.choice-employee .role-choice-footer svg{color:#7354b5}.role-selection-note{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:23px;color:#909bad;font-size:12px}.role-selection-note svg{color:#53a181}.role-selection-footer{display:flex;justify-content:space-between;gap:12px;color:#9aa5b4;font-size:12px}.form-mobile-brand>span{margin-left:auto;color:#7f8ba0;font-size:12px;font-weight:700;letter-spacing:.1em}.role-back{margin-bottom:18px}.role-unavailable-layout{display:grid;min-height:100vh;place-items:center;padding:24px;background:radial-gradient(ellipse at 50% 35%,#fff,#f7f9fd 54%,#f0f4fb)}.role-unavailable-card{display:flex;width:min(100%,440px);flex-direction:column;align-items:flex-start;padding:31px;border:1px solid #e5eaf2;border-radius:15px;background:var(--surface);box-shadow:var(--shadow)}.role-unavailable-card>.brand-mark{margin-bottom:21px}.role-unavailable-card h1{margin:9px 0 6px;font-family:Manrope,sans-serif;font-size:23px}.role-unavailable-card p{color:var(--muted);font-size:12px;line-height:1.7}.role-unavailable-card .primary-button{margin-top:11px}.role-selection-header{margin:-25px calc(-1*clamp(22px,6vw,86px)) 0;padding:14px clamp(22px,6vw,86px);border-bottom:1px solid rgb(255 255 255 / 18%);background:#245dbd;color:#fff}.role-selection-brand strong{color:#fff}.role-selection-brand small,.role-header-secure{color:#ffffffc2}.role-header-secure svg{color:#9ee5c2}@media(max-width:620px){.role-selection-header{margin:-18px -17px 0;padding:12px 17px}}@media(max-width:1140px){.sidebar{width:224px}.main-area{margin-left:224px}.stats-grid,.class-grid,.event-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-content,.topbar{padding-right:28px;padding-left:28px}.event-mini .status-tag{display:none}}@media(max-width:850px){.sidebar{z-index:42;width:275px;transform:translate(-102%);transition:transform .22s ease}.sidebar.sidebar-open{transform:translate(0)}.sidebar-close{display:inline-grid!important;margin-left:auto}.mobile-backdrop{position:fixed;z-index:40;top:0;right:0;bottom:0;left:0;border:0;background:#0e16266e}.main-area{margin-left:0}.mobile-menu-button{display:inline-grid!important;margin-right:9px}.topbar-left{min-width:0}.breadcrumb{gap:6px;font-size:12px}.topbar{height:62px;padding:0 20px}.page-content{padding:26px 20px 38px}.dashboard-grid{grid-template-columns:1fr}.welcome-banner{min-height:190px;padding:24px 28px}.welcome-illustration{width:190px;transform:scale(.85)}.profile-layout{grid-template-columns:1fr}.profile-side{display:grid;grid-template-columns:1fr 1fr}.profile-side .logout-button{grid-column:span 2}.login-layout{grid-template-columns:minmax(0,.9fr) minmax(390px,1.1fr)}.login-art{padding-right:34px;padding-left:34px}.art-stats{gap:17px}.art-copy h1{font-size:37px}.android-hero{gap:17px;padding:22px}}@media(max-width:620px){.connection-pill{display:none}.topbar-actions{gap:5px}.page-content{padding:23px 15px 32px}.topbar{padding:0 13px}.breadcrumb>span{display:none}.breadcrumb svg{display:none}.page-heading{align-items:flex-start;flex-direction:column;gap:12px;margin-bottom:19px}.page-heading h1{margin-top:6px;font-size:25px}.page-heading p{font-size:12px}.heading-actions{align-self:stretch}.heading-actions .outline-button{min-height:35px}.welcome-banner{min-height:189px;padding:20px}.welcome-copy{max-width:100%}.welcome-copy h2{font-size:23px}.welcome-copy p{max-width:290px;font-size:12px}.welcome-illustration{position:absolute;right:-41px;bottom:-28px;width:155px;height:150px;opacity:.52;transform:scale(.76)}.stats-grid{gap:9px;margin:12px 0}.stat-card{min-height:72px;gap:8px;padding:10px}.stat-icon{width:31px;height:31px}.stat-card>div:nth-child(2) span{font-size:12px}.stat-card>div:nth-child(2) strong{font-size:17px}.stat-spark{display:none}.panel-card{padding:15px}.section-title h2{font-size:12px}.dashboard-grid{gap:11px}.event-mini .status-tag{display:inline-flex}.schedule-item{gap:8px}.schedule-time{width:40px}.join-class-form{display:grid;grid-template-columns:37px 1fr;gap:8px 10px;padding:12px}.join-copy{grid-column:2;grid-row:1}.join-class-form input{grid-column:1 / -1;width:100%}.join-class-form .primary-button{grid-column:1 / -1}.toolbar{align-items:stretch;flex-direction:column;gap:9px}.search-box{width:100%}.result-count{align-self:flex-end}.class-grid,.event-grid{grid-template-columns:1fr;gap:11px}.class-card-art{height:100px}.event-cover{height:114px}.event-toolbar{gap:9px}.filter-tabs{align-self:flex-start}.filter-tabs button{padding:0 8px}.calendar-panel{padding:12px 8px}.calendar-toolbar{align-items:flex-start;flex-direction:column;gap:9px;padding:0 6px}.calendar-switch{width:100%}.calendar-switch>strong{margin:0 auto 0 5px;font-size:12px}.week-grid{grid-template-columns:repeat(7,minmax(43px,1fr));overflow-x:auto}.week-day{min-height:270px}.week-day-heading{height:55px}.week-day-items{padding:6px 3px}.calendar-event{padding:5px 4px}.calendar-event strong,.calendar-event span,.calendar-event small{font-size:12px}.android-hero{grid-template-columns:1fr;gap:4px;padding:18px}.android-visual{min-height:226px}.phone-frame{transform:scale(.78) rotate(-5deg)}.phone-orbit{transform:scale(.78)}.orbit-left{transform:scale(.78) translate(-25px,20px)}.orbit-right{transform:scale(.78) translate(22px,-20px)}.android-copy h2{font-size:19px}.android-copy>p{font-size:12px}.active-session-row{align-items:flex-start;flex-wrap:wrap}.active-session-row .status-tag{margin-left:46px}.certificate-grid{grid-template-columns:1fr}.certificate-card{grid-template-columns:.85fr 1.15fr}.certificate-art{min-height:185px}.profile-side{display:flex}.profile-side .logout-button{grid-column:auto}.profile-banner{padding:19px}.profile-avatar{width:53px;height:53px}.profile-banner h2{font-size:16px}.profile-form{padding:17px}.form-grid{grid-template-columns:1fr;gap:11px}.detail-grid{gap:6px}.modal-backdrop{padding:10px}.modal-card{max-height:92vh}.modal-content{padding:15px}.event-detail-heading{align-items:flex-start;flex-direction:column}.page-heading .heading-actions .outline-button{font-size:12px}.login-layout{display:flex;min-height:100vh;flex-direction:column}.login-art{display:none}.login-form-side{display:block;min-height:100vh;padding:20px 23px 28px}.login-form-wrap{display:flex;min-height:calc(100vh - 48px);flex-direction:column;justify-content:center;margin:0 auto}.role-lecturer .login-form-wrap,.role-employee .login-form-wrap{min-height:calc(100vh - 48px)}.form-mobile-brand{display:flex;align-items:center;gap:9px;margin-bottom:31px;font-family:Manrope,sans-serif;font-size:17px;font-weight:800}.form-mobile-brand .brand-mark{width:37px;height:37px}.login-form-wrap>h2{font-size:25px}.login-mobile-footer{display:block;margin-top:35px;color:#a0aaba;font-size:12px;text-align:center}.login-footnote{font-size:12px}.art-stats{gap:10px}.role-selection-layout{padding:18px 17px 14px}.role-header-secure{font-size:0}.role-header-secure svg{width:18px;height:18px}.role-selection-main{padding:38px 0}.role-selection-intro{margin-bottom:22px}.role-selection-intro h1{font-size:28px}.role-selection-intro p{font-size:12px}.role-choice-grid{grid-template-columns:1fr;gap:10px}.role-choice-card{min-height:132px;padding:15px}.role-choice-icon{width:39px;height:39px;border-radius:11px}.role-choice-copy{padding-top:11px;gap:4px}.role-choice-copy strong{font-size:13px}.role-choice-copy small{font-size:12px}.role-choice-footer{margin-top:8px;padding-top:8px}.role-selection-footer{font-size:12px}.role-unavailable-card{padding:23px}}:root[data-theme=dark] .login-layout,:root[data-theme=dark] .login-form-side{background:var(--page)}:root[data-theme=dark] .login-form-wrap{border-color:var(--border);background:var(--surface);color:var(--text);box-shadow:var(--shadow)}:root[data-theme=dark] .role-lecturer .login-form-side,:root[data-theme=dark] .role-employee .login-form-side{background:var(--page)}:root[data-theme=dark] .login-form-wrap>h2,:root[data-theme=dark] .success-panel h2{color:var(--text)}:root[data-theme=dark] .auth-form label,:root[data-theme=dark] .back-button,:root[data-theme=dark] .login-footnote{color:#cbd5e1}:root[data-theme=dark] .auth-form input{border-color:var(--border);background:var(--surface-soft);color:var(--text)}:root[data-theme=dark] .auth-form input::placeholder{color:var(--muted)}:root[data-theme=dark] .role-lecturer .login-role-badge{background:#183846;color:#82cce2}:root[data-theme=dark] .role-lecturer .form-kicker{color:#82cce2}:root[data-theme=dark] .role-employee .login-role-badge{background:#30264a;color:#c4a9f4}:root[data-theme=dark] .role-employee .form-kicker{color:#c4a9f4}:root[data-theme=dark] .role-lecturer .text-button{color:#72c5df}:root[data-theme=dark] .role-employee .text-button{color:#c4a9f4}:root[data-theme=dark] .role-selection-layout,:root[data-theme=dark] .role-unavailable-layout{background:var(--page);color:var(--text)}:root[data-theme=dark] .role-selection-brand small,:root[data-theme=dark] .role-header-secure,:root[data-theme=dark] .role-selection-intro p,:root[data-theme=dark] .role-choice-copy small,:root[data-theme=dark] .role-choice-footer,:root[data-theme=dark] .role-selection-note,:root[data-theme=dark] .form-mobile-brand>span{color:var(--muted)}:root[data-theme=dark] .role-choice-card,:root[data-theme=dark] .role-unavailable-card{border-color:var(--border);background:var(--surface);color:var(--text)}:root[data-theme=dark] .role-choice-footer{border-color:var(--border)}:root[data-theme=dark] .role-choice-icon{background:var(--surface-soft);color:#9bb3ff}:root[data-theme=dark] .role-selection-intro h1 span,:root[data-theme=dark] .role-choice-footer svg{color:#9bb3ff}:root[data-theme=dark] .choice-lecturer .role-choice-icon{background:#183846;color:#82cce2}:root[data-theme=dark] .choice-lecturer .role-choice-footer svg{color:#82cce2}:root[data-theme=dark] .choice-employee .role-choice-icon{background:#30264a;color:#c4a9f4}:root[data-theme=dark] .choice-employee .role-choice-footer svg{color:#c4a9f4}.login-brand{font-size:24px}.login-brand small{font-size:12px}.art-copy .eyebrow{font-size:13.5px}.art-copy>p{font-size:18px}.art-stats strong{font-size:33px}.art-stats strong span{font-size:18px}.art-stats>div>span{font-size:12px}.login-art-footer,.login-role-badge{font-size:12px}.login-form-wrap>h2,.success-panel h2{font-size:40.5px}.form-kicker{font-size:13.5px}.form-subtitle,.success-panel p{font-size:16.5px}.role-picker strong{font-size:15px}.role-picker small{font-size:12px}.auth-form label{font-size:15px}.auth-form input,.auth-form .primary-button{font-size:16.5px}.text-button,.alert{font-size:15px}.login-footnote{font-size:13.5px}.back-button{font-size:15px}.otp-input{font-size:28.5px!important}.form-mobile-brand{font-size:25.5px}.form-mobile-brand>span{font-size:12px}.login-mobile-footer{font-size:12px}.role-selection-brand strong{font-size:25.5px}.role-selection-brand small{font-size:12px}.role-header-secure{font-size:15px}.role-selection-intro h1{font-size:clamp(29px,4vw,42px)}.role-selection-intro p{font-size:18px}.role-choice-copy strong{font-size:24px}.role-choice-copy small{font-size:15px}.role-choice-footer span{font-size:12px}.role-selection-note{font-size:13.5px}.role-selection-footer{font-size:12px}.role-unavailable-card h1{font-size:34.5px}.role-unavailable-card p{font-size:16.5px}@media(max-width:620px){.login-form-wrap>h2,.success-panel h2{font-size:37.5px}.login-footnote{font-size:12px}.role-selection-intro h1{font-size:28px}}
