:root{--brand:#4f46e5;--brand-light:#6366f1;--brand-dark:#3730a3;--brand-soft:#eef2ff;--brand-glow:#4f46e540;--brand-gradient:linear-gradient(135deg, #4f46e5 0%, #6366f1 100%);--bg:#f8fafc;--card:#fff;--text:#0f172a;--text-muted:#64748b;--border:#e2e8f0;--border-light:#f1f5f9;--sidebar:#0f172a;--sidebar-hover:#ffffff12;--danger:#e11d48;--danger-soft:#fff1f2;--danger-border:#fecdd3;--success:#059669;--success-soft:#ecfdf5;--success-border:#a7f3d0;--warn:#d97706;--warn-soft:#fffbeb;--warn-border:#fde68a;--radius-sm:8px;--radius:12px;--radius-lg:16px;--shadow-xs:0 1px 2px #0f172a0a;--shadow-sm:0 1px 3px #0f172a14, 0 1px 2px #0f172a0a;--shadow:0 4px 6px -1px #0f172a12, 0 2px 4px -2px #0f172a0d;--shadow-md:0 10px 15px -3px #0f172a14, 0 4px 6px -4px #0f172a0a;--shadow-lg:0 20px 25px -5px #0f172a1a, 0 8px 10px -6px #0f172a0a;--shadow-brand:0 4px 14px #4f46e559;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-smooth:.25s cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}html,body,#root{height:100%}body{color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;margin:0;font-family:Plus Jakarta Sans,Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}a{color:var(--brand);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--brand-dark);text-decoration:underline}h1{letter-spacing:-.025em;color:var(--text);margin:0 0 6px;font-size:24px;font-weight:700}h2{letter-spacing:-.02em;color:var(--text);margin:0 0 8px;font-size:19px;font-weight:700}h3{color:var(--text);margin:0 0 10px;font-size:15px;font-weight:600}hr{border:0;border-top:1px solid var(--border);margin:18px 0}code{background:var(--brand-soft);color:var(--brand-dark);border-radius:6px;padding:2px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;font-weight:500}.muted{color:var(--text-muted)}.small{font-size:12.5px}.center{text-align:center}.mt{margin-top:16px}.mb{margin-bottom:12px;display:inline-flex}.danger-text{color:var(--danger)}input,select,textarea{font:inherit;color:var(--text);border:1.5px solid var(--border);width:100%;transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);background:#fff;border-radius:10px;padding:10px 14px;font-size:13.5px;line-height:1.5}input::placeholder,textarea::placeholder{color:#94a3b8;font-weight:400}input:hover:not(:focus):not(:disabled),select:hover:not(:focus):not(:disabled),textarea:hover:not(:focus):not(:disabled){background:#fafbfc;border-color:#cbd5e1}input:focus,select:focus,textarea:focus{background:#fff;border-color:#6366f1;outline:none;box-shadow:0 0 0 3.5px #6366f124,0 1px 2px #0f172a0d}select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2.2' stroke='%234f46e5'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 8.25l-7.5 7.5-7.5-7.5'%3E%3C/path%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;background-size:15px 15px;padding-right:40px;font-weight:500}select:disabled{color:#94a3b8;cursor:not-allowed;background-color:#f1f5f9;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2' stroke='%2394a3b8'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 8.25l-7.5 7.5-7.5-7.5'%3E%3C/path%3E%3C/svg%3E");border-color:#e2e8f0}select option{color:#0f172a;background:#fff;padding:8px 12px;font-size:13.5px}select:has(>option[value=""]:checked){color:#94a3b8;font-weight:400}@supports (appearance:base-select){select{appearance:base-select}select::picker(select){appearance:base-select}select{background-image:none;align-items:center;gap:8px;min-height:42px;padding-right:12px;display:flex}select:disabled{background-image:none}select::picker-icon{content:"";width:15px;height:15px;transition:rotate var(--transition-fast);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2.2' stroke='%234f46e5'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 8.25l-7.5 7.5-7.5-7.5'/%3E%3C/svg%3E") 50%/contain no-repeat;flex-shrink:0;margin-left:auto}select:disabled::picker-icon{opacity:.4;filter:grayscale()}select:open::picker-icon{rotate:180deg}select:open{border-color:#6366f1;box-shadow:0 0 0 3.5px #6366f124}select::picker(select){border:1.5px solid var(--border);box-shadow:var(--shadow-lg);overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent;opacity:0;max-height:min(320px,55vh);transition:opacity var(--transition-fast), translate var(--transition-fast), overlay var(--transition-fast) allow-discrete, display var(--transition-fast) allow-discrete;background:#fff;border-radius:12px;margin-block:6px;padding:6px;overflow-y:auto;translate:0 -4px}select:open::picker(select){opacity:1;translate:0}@starting-style{select:open::picker(select){opacity:0;translate:0 -4px}}select option{color:var(--text);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border-radius:8px;align-items:center;gap:10px;padding:9px 12px;font-weight:500;display:flex}select option:hover,select option:focus-visible{background:var(--brand-soft);color:var(--brand-dark);outline:none}select option:checked{color:var(--brand);font-weight:600}select option::checkmark{content:"✓";color:var(--brand);order:1;margin-left:auto;font-weight:700}select option:disabled{color:#94a3b8;cursor:not-allowed;background:0 0}select option[value=""]{color:var(--text-muted);font-weight:400}select optgroup{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);padding:8px 12px 4px;font-size:11.5px;font-weight:700}}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--brand);cursor:pointer}input[type=file]{cursor:pointer;background:#f8fafc;padding:8px 10px}input[type=file]::file-selector-button{border:1px solid var(--border);cursor:pointer;transition:background var(--transition-fast);background:#fff;border-radius:6px;margin-right:12px;padding:5px 12px;font-size:12.5px;font-weight:500}input[type=file]::file-selector-button:hover{background:#f1f5f9}textarea{resize:vertical}.w-num{width:90px}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:#1e293b;letter-spacing:-.01em;font-size:13px;font-weight:600}.field-hint{color:var(--text-muted);font-size:12px;line-height:1.4}.req{color:var(--danger);margin-left:2px;font-weight:700}.form-grid{flex-direction:column;gap:15px;display:flex}.form-grid.narrow{width:100%;max-width:100%}.row-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.row-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}input[type=checkbox]:not(.switch){appearance:none;cursor:pointer;vertical-align:middle;background-color:#fff;border:1.5px solid #cbd5e1;border-radius:5px;flex-shrink:0;place-content:center;width:18px;height:18px;margin:0;transition:all .18s cubic-bezier(.4,0,.2,1);display:inline-grid;position:relative;box-shadow:0 1px 2px #0f172a0d}input[type=checkbox]:not(.switch):not(:checked):hover:not(:disabled),.check:hover input[type=checkbox]:not(.switch):not(:checked):not(:disabled){border-color:var(--tone,var(--brand,#4f46e5));background-color:#f8fafc;box-shadow:0 0 0 3px #6366f124}input[type=checkbox]:not(.switch):not(:checked):focus-visible{border-color:var(--tone,var(--brand,#4f46e5));outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px #6366f147}input[type=checkbox]:not(.switch):checked{box-shadow:0 1px 3px #4f46e547;background-color:var(--tone,var(--brand,#4f46e5))!important;border-color:var(--tone,var(--brand,#4f46e5))!important;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.5 8.2L6.3 11.2L12.5 4.8'/%3E%3C/svg%3E")!important;background-position:50%!important;background-repeat:no-repeat!important;background-size:11px 11px!important}input[type=checkbox]:not(.switch):checked:hover:not(:disabled),.check:hover input[type=checkbox]:not(.switch):checked:not(:disabled){box-shadow:0 0 0 3px #6366f140,0 2px 5px #4f46e559;background-color:var(--tone-dark,var(--brand-dark,#3730a3))!important;border-color:var(--tone-dark,var(--brand-dark,#3730a3))!important}input[type=checkbox]:not(.switch):checked:focus-visible{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px #6366f161;border-color:var(--tone-dark,var(--brand-dark,#3730a3))!important}input[type=checkbox]:not(.switch):active:not(:disabled){transform:scale(.92)}input[type=checkbox]:not(.switch):disabled{opacity:.45;cursor:not-allowed;background-color:#f1f5f9;border-color:#e2e8f0}input[type=checkbox].switch,input.switch{appearance:none;cursor:pointer;vertical-align:middle;background-color:#cbd5e1;border:2px solid #0000;border-radius:999px;outline:none;flex-shrink:0;width:44px;height:24px;margin:0;transition:background-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1);display:inline-block;position:relative}input[type=checkbox].switch:after,input.switch:after{content:"";background-color:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s cubic-bezier(.4,0,.2,1);position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000040}input[type=checkbox].switch:checked,input.switch:checked{background-color:var(--brand,#4f46e5)}input[type=checkbox].switch:checked:after,input.switch:checked:after{transform:translate(20px)}input[type=checkbox].switch:focus-visible,input.switch:focus-visible{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--brand-glow,#4f46e54d);outline:none}input[type=checkbox].switch:hover:not(:disabled),input.switch:hover:not(:disabled){opacity:.95}input[type=checkbox].switch:disabled,input.switch:disabled{opacity:.5;cursor:not-allowed}.check{cursor:pointer;-webkit-user-select:none;user-select:none;color:#334155;transition:color var(--transition-fast);align-items:center;gap:10px;font-size:13.5px;display:inline-flex}.check:hover{color:#0f172a}.check.small{font-size:13px}.perm-grid .check{border:1.5px solid var(--border);transition:all var(--transition-fast);background:#fff;border-radius:9px;padding:8px 12px}.perm-grid .check:hover:not(.muted){background:#f8fafc;border-color:#cbd5e1}.perm-grid .check:has(input:checked){color:#3730a3;background:#eef2ff;border-color:#a5b4fc;font-weight:500}.perm-grid .check:has(input:checked):hover:not(.muted){background:#e0e7ff;border-color:#818cf8}.perm-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.pw-row{align-items:center;gap:8px;display:flex}.pw-row input{flex:1}.form-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:6px;display:flex}.settings-section{grid-template-columns:280px minmax(0,1fr);align-items:start;gap:36px;max-width:1240px;display:grid}.settings-info{flex-direction:column;gap:8px;display:flex}.settings-info h3{color:var(--text);letter-spacing:-.01em;margin:0;font-size:17px;font-weight:700}.settings-info p{color:var(--text-muted);margin:0;font-size:13.5px;line-height:1.55}.settings-divider{border:0;border-top:1px solid var(--border);max-width:1240px;margin:36px 0}@media (width<=960px){.settings-section{grid-template-columns:minmax(0,1fr);gap:16px}}.btn{--btn-ring:#6366f159;color:#1e293b;min-height:40px;font:inherit;letter-spacing:.005em;cursor:pointer;white-space:nowrap;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast), filter var(--transition-fast);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#fff;border:1px solid #d9dfe8;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:13.5px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex;position:relative;box-shadow:0 1px 2px #0f172a0f}.btn svg{flex-shrink:0;margin-left:-2px}.btn:hover{color:#0f172a;background:#f8fafc;border-color:#c5cdd9;text-decoration:none;box-shadow:0 2px 6px #0f172a14}.btn:active:not(:disabled){transform:translateY(1px)scale(.985);box-shadow:0 1px 1px #0f172a0f}.btn:focus-visible{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--btn-ring);outline:none}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;box-shadow:none;pointer-events:none;transform:none}.btn-primary{--btn-ring:#4f46e573;color:#fff;background:linear-gradient(#5b54ec 0%,#4f46e5 100%);border-color:#4338ca;box-shadow:inset 0 1px #ffffff2e,0 1px 2px #312e814d,0 4px 12px -2px #4f46e559}.btn-primary:hover{color:#fff;background:linear-gradient(#4f46e5 0%,#4338ca 100%);border-color:#3730a3;box-shadow:inset 0 1px #ffffff2e,0 1px 2px #312e8159,0 8px 18px -4px #4f46e580}.btn-primary:active:not(:disabled){background:#4338ca;box-shadow:inset 0 2px 4px #1e1b4b40}.btn-primary:focus-visible{box-shadow:inset 0 1px 0 #ffffff2e, 0 0 0 2px #fff, 0 0 0 4px var(--btn-ring)}.btn-danger{--btn-ring:#e11d4859;color:var(--danger);border-color:var(--danger-border);background:#fff}.btn-danger:hover{background:var(--danger-soft);color:#be123c;border-color:#fda4af}.btn-ghost{box-shadow:none;color:var(--text-muted);background:0 0;border-color:#0000}.btn-ghost:hover{color:var(--text);box-shadow:none;background:#eef2f7;border-color:#0000}.btn-secondary{color:#334155;box-shadow:none;background:#f1f5f9;border-color:#e2e8f0}.btn-secondary:hover{color:#0f172a;background:#e2e8f0;border-color:#cbd5e1}.form-actions-split{align-items:center;gap:12px;display:flex}.btn-sm{border-radius:8px;gap:6px;min-height:32px;padding:0 12px;font-size:12.5px}.btn-sm svg{width:14px;height:14px}.btn-block{width:100%}.icon-btn{cursor:pointer;color:var(--text-muted);transition:all var(--transition-fast);background:0 0;border:0;border-radius:6px;padding:6px 8px;font-size:16px}.icon-btn:hover:not(:disabled){color:var(--text);background:#f1f5f9}.icon-btn:disabled{opacity:.3;cursor:default}.icon-btn.danger:hover{color:var(--danger);background:var(--danger-soft)}.link-btn{color:var(--brand);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;font-weight:500}.link-btn.danger{color:var(--danger)}.link-btn:hover{text-decoration:underline}.link-btn:has(svg){align-items:center;gap:4px;display:inline-flex}.link-btn svg{width:14px;height:14px}.icon-btn:focus-visible,.link-btn:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.card{background:var(--card);border:1px solid #e2e8f0;border-radius:16px;padding:24px;transition:box-shadow .2s cubic-bezier(.16,1,.3,1),border-color .2s cubic-bezier(.16,1,.3,1),transform .2s cubic-bezier(.16,1,.3,1);box-shadow:0 4px 12px -2px #0f172a0d,0 1px 3px #0f172a08}.card:hover{border-color:#cbd5e1;box-shadow:0 8px 24px -4px #0f172a14}.card.no-pad{padding:0;overflow:hidden}.card-head{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px;display:flex}.card-head h3{color:#0f172a;letter-spacing:-.015em;margin:0;font-size:17px;font-weight:700}.card-toolbar{border-bottom:1px solid var(--border);background:#fafbfc;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 18px;display:flex}.card-toolbar input[type=date]{width:auto}.card-toolbar label{align-items:center;gap:6px;display:inline-flex}.alert{border-radius:var(--radius-sm);border:1px solid;margin-bottom:16px;padding:12px 16px;font-size:13.5px;line-height:1.5}.alert ul{margin:6px 0 0;padding-left:18px}.alert-error{background:var(--danger-soft);border-color:var(--danger-border);color:#9f1239}.alert-success{background:var(--success-soft);border-color:var(--success-border);color:#065f46}.alert-warn{background:var(--warn-soft);border-color:var(--warn-border);color:#92400e}.alert-info{background:var(--brand-soft);color:#3730a3;border-color:#c7d2fe}.badge{color:#475569;text-transform:capitalize;white-space:nowrap;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;align-items:center;padding:3px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.badge-done{background:var(--success-soft);color:#047857;border-color:var(--success-border)}.badge-in_progress{background:var(--brand-soft);color:#4338ca;border-color:#c7d2fe}.badge-pending{background:var(--warn-soft);color:#b45309;border-color:var(--warn-border)}.att-P{background:var(--success-soft);color:#047857;border:1px solid var(--success-border)}.att-A{background:var(--danger-soft);color:#be123c;border:1px solid var(--danger-border)}.att-L{background:var(--warn-soft);color:#b45309;border:1px solid var(--warn-border)}.tag{color:#1e40af;letter-spacing:-.01em;background:#eff6ff;border:1px solid #dbeafe;border-radius:8px;align-items:center;margin:2px 4px 2px 0;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex;box-shadow:0 1px 2px #1e40af0d}.pill{background:var(--brand-soft);color:var(--brand);border:1px solid #e0e7ff;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-flex}.pct{color:var(--success);font-weight:700}.pct.low{color:var(--danger)}.empty{text-align:center;color:var(--text-muted);padding:42px 16px}.empty strong{color:var(--text);margin-bottom:6px;font-size:15px;display:block}.empty p{margin:0;font-size:13.5px}.spinner{border:3px solid var(--brand-soft);border-top-color:var(--brand);border-radius:50%;width:32px;height:32px;margin:40px auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.center-screen{place-items:center;height:100%;display:grid}.table-wrap{overscroll-behavior-x:contain;position:relative;overflow-x:auto}.table{border-collapse:collapse;width:100%}.table-wrap .table{min-width:560px}.table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1.5px solid var(--border);white-space:nowrap;background:#f8fafc;padding:12px 16px;font-size:11.5px;font-weight:600}.table td{border-bottom:1px solid var(--border-light);vertical-align:middle;transition:background var(--transition-fast);padding:12px 16px;font-size:13.5px}.table tbody tr:hover td{background:#f8fafc}.table tr:last-child td{border-bottom:0}.table td input{min-width:80px}.row-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.toasts{z-index:100;flex-direction:column;gap:10px;max-width:calc(100vw - 40px);display:flex;position:fixed;bottom:20px;right:20px}.toast{color:#fff;border-radius:var(--radius);box-shadow:var(--shadow-lg);background:#0f172a;border:1px solid #ffffff1a;max-width:440px;padding:12px 18px;font-size:13.5px;font-weight:500;animation:.25s cubic-bezier(.16,1,.3,1) toastPop}.toast-error{background:var(--danger);border-color:#f43f5e}@keyframes toastPop{0%{opacity:0;transform:translateY(12px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-backdrop{-webkit-backdrop-filter:blur(6px);z-index:50;background:#0f172aa6;place-items:center;padding:20px;animation:.2s ease-out fadeIn;display:grid;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:#fff;border:none;border-radius:20px;flex-direction:column;width:100%;max-width:580px;max-height:calc(100dvh - 48px);animation:.25s cubic-bezier(.16,1,.3,1) modalScale;display:flex;overflow:hidden;box-shadow:0 25px 50px -12px #0f172a40,0 0 0 1px #0f172a0f}.modal-wide{max-width:860px}@keyframes modalScale{0%{opacity:0;transform:scale(.95)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal-head{background:#fff;border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.modal-head h3{color:#0f172a;letter-spacing:-.015em;margin:0;font-size:17.5px;font-weight:700}.modal-body{padding:24px;overflow-y:auto}.modal-actions{border-top:1px solid #f1f5f9;justify-content:flex-end;align-items:center;gap:12px;margin-top:18px;padding-top:16px;display:flex}.confirm-backdrop{z-index:60;-webkit-backdrop-filter:blur(4px);background:#0f172a8c;place-items:center;padding:20px;animation:.15s ease-out fadeIn;display:grid;position:fixed;inset:0}.confirm{--tone:var(--brand);--tone-soft:var(--brand-soft);border-radius:var(--radius-lg);border:1px solid var(--border);background:#fff;grid-template-columns:auto 1fr;gap:4px 16px;width:100%;max-width:440px;max-height:calc(100dvh - 40px);padding:24px 24px 20px;animation:.22s cubic-bezier(.16,1,.3,1) modalScale;display:grid;overflow-y:auto;box-shadow:0 24px 48px -12px #0f172a4d}.confirm-danger{--tone:var(--danger);--tone-soft:var(--danger-soft)}.confirm-warning{--tone:var(--warn);--tone-soft:var(--warn-soft)}.confirm-icon{width:44px;height:44px;color:var(--tone);background:var(--tone-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--tone) 18%, transparent);border-radius:12px;place-items:center;display:grid}.confirm-text h3{letter-spacing:-.01em;margin:2px 0 6px;font-size:16.5px;font-weight:700}.confirm-msg{color:#475569;overflow-wrap:anywhere;font-size:13.5px;line-height:1.6}.confirm-msg b{color:var(--text)}.confirm-list{gap:4px;margin:8px 0;padding:0;list-style:none;display:grid}.confirm-list li{border:1px solid var(--border-light);background:#f8fafc;border-radius:8px;padding:6px 10px}.confirm-note{background:var(--warn-soft);border:1px solid var(--warn-border);color:#92400e;border-radius:10px;margin-top:12px;padding:10px 12px;font-size:12.5px;line-height:1.5}.confirm-actions{grid-column:1/-1;justify-content:flex-end;gap:10px;margin-top:18px;display:flex}@media (width<=640px){.confirm{text-align:center;grid-template-columns:minmax(0,1fr)}.confirm-icon{margin:0 auto 8px}.confirm-actions{flex-direction:column-reverse}.confirm-actions .btn{width:100%}}.btn-danger-solid{--btn-ring:#e11d4873;background:linear-gradient(180deg, #f43f5e 0%, var(--danger) 100%);color:#fff;border-color:#be123c;box-shadow:inset 0 1px #ffffff2e,0 1px 2px #8813374d,0 4px 12px -2px #e11d4859}.btn-danger-solid:hover{background:linear-gradient(180deg, var(--danger) 0%, #be123c 100%);color:#fff;border-color:#9f1239}.btn-danger-solid:focus-visible{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--btn-ring)}.shell{min-height:100%;display:flex}.sidebar{background:var(--sidebar);color:#cbd5e1;overscroll-behavior:contain;border-right:1px solid #ffffff0d;flex-direction:column;flex-shrink:0;width:256px;height:100dvh;padding:18px 14px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-top{padding:4px 8px 16px}.inst-chip{border-radius:var(--radius);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff0d;border:1px solid #ffffff14;flex-direction:column;gap:3px;margin:0 2px 18px;padding:12px 14px;display:flex}.inst-name{color:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600;overflow:hidden}.inst-code{color:#94a3b8;letter-spacing:.06em;font-family:ui-monospace,SFMono-Regular,monospace;font-size:11.5px}.nav-link{color:#94a3b8;transition:all var(--transition-fast);border-radius:9px;align-items:center;gap:11px;margin-bottom:3px;padding:10px 14px;font-size:13.5px;font-weight:500;display:flex}.nav-link:hover{background:var(--sidebar-hover);color:#fff;text-decoration:none}.nav-link.active{background:var(--brand-gradient);color:#fff;font-weight:600;box-shadow:0 4px 14px #4f46e566}.nav-icon{flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;display:inline-flex}.nav-icon svg{stroke:currentColor;stroke-width:2px;width:18px;height:18px;transition:transform var(--transition-fast)}.nav-link:hover .nav-icon svg{transform:scale(1.1)}.nav-link.active .nav-icon svg{stroke-width:2.25px}.main{background:var(--bg);flex-direction:column;flex:1;min-width:0;display:flex}.topbar{-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:20;background:#ffffffd9;align-items:center;gap:12px;height:64px;padding:0 32px;display:flex;position:sticky;top:0}.topbar-spacer{flex:1}.menu-btn{width:42px;height:42px;color:var(--text);border-radius:10px;place-items:center;margin-left:-8px;padding:0;display:none}.topbar-brand{color:inherit;display:none}.topbar-brand:hover{text-decoration:none}.topbar-brand .logo{font-size:17px}.topbar-brand .logo-img{width:28px;height:28px}.profile-menu-wrap{align-items:center;display:inline-flex;position:relative}.avatar-btn{cursor:pointer;transition:transform var(--transition-fast), box-shadow var(--transition-fast);background:0 0;border:none;border-radius:50%;outline:none;justify-content:center;align-items:center;padding:0;display:flex}.avatar-btn:hover{transform:scale(1.06)}.avatar-btn:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.avatar{background:var(--brand-gradient);color:#fff;-webkit-user-select:none;user-select:none;border-radius:50%;flex-shrink:0;place-items:center;width:36px;height:36px;font-size:14px;font-weight:700;display:grid;box-shadow:0 2px 8px #4f46e54d}.profile-popover{border:1px solid var(--border);width:140px;box-shadow:var(--shadow-lg);z-index:1000;background:#fff;border-radius:10px;flex-direction:column;padding:5px;animation:.15s cubic-bezier(.16,1,.3,1) popoverFadeIn;display:flex;position:absolute;top:calc(100% + 10px);right:0}@keyframes popoverFadeIn{0%{opacity:0;transform:translateY(-4px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.popover-item{width:100%;color:var(--text);cursor:pointer;text-align:left;transition:all var(--transition-fast);background:0 0;border:none;border-radius:6px;align-items:center;gap:9px;padding:8px 12px;font-family:inherit;font-size:13.5px;font-weight:500;display:flex}.popover-item svg{color:var(--text-muted);transition:color var(--transition-fast);flex-shrink:0}.popover-item:hover{color:var(--brand);background:#f1f5f9}.popover-item:hover svg{color:var(--brand)}.popover-item.danger,.popover-item.danger svg{color:var(--danger,#ef4444)}.popover-item.danger:hover{color:#dc2626;background:#fef2f2}.popover-item.danger:hover svg{color:#dc2626}.popover-divider{background:var(--border-light,#f1f5f9);height:1px;margin:3px 0}.content{width:100%;max-width:1480px;margin-inline:auto;padding:28px 32px}.scrim{display:none}.logo{color:var(--text);letter-spacing:-.02em;align-items:center;gap:9px;font-size:19px;font-weight:600;display:inline-flex}.logo b{color:var(--brand);font-weight:800}.logo-light{color:#fff}.logo-light b{color:#818cf8}.logo-img{object-fit:contain;width:32px;height:32px;transition:transform var(--transition-fast);border-radius:8px;flex-shrink:0;display:block}.logo:hover .logo-img{transform:scale(1.05)}.logo-light .logo-img{background:#fff;border:1px solid #fff3;padding:2px;box-shadow:0 2px 8px #00000059}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;display:flex}.page-head p{color:var(--text-muted);margin:0}.page-actions{flex-wrap:wrap;gap:10px;display:flex}.filters{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;display:flex}.filters input[type=search]{max-width:320px}.filters select{width:auto;min-width:200px}.tabs{border:1px solid var(--border);background:#f1f5f9;border-radius:11px;align-items:center;margin-bottom:16px;padding:3px;display:inline-flex}.tabs.inline{margin-bottom:0}.tabs button{font:inherit;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;background:0 0;border:0;border-radius:8px;align-items:center;gap:7px;padding:7px 15px;font-size:13px;font-weight:600;display:inline-flex}.tabs button:hover:not(.on){color:#1e293b}.tabs button.on{color:var(--brand);background:#fff;box-shadow:0 1px 3px #0f172a14}.tab-badge{color:#64748b;transition:all var(--transition-fast);background:#e2e8f0;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:700}.tabs button.on .tab-badge{background:var(--brand-soft);color:var(--brand)}.stats{grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:18px;margin-bottom:24px;display:grid}.stat{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:transform var(--transition-fast), box-shadow var(--transition-fast);background:#fff;flex-direction:column;gap:4px;padding:20px 22px;display:flex}.stat:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.stat span{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.stat b{color:#0f172a;letter-spacing:-.02em;font-size:28px;font-weight:800}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.app-grid-card{display:block}.app-grid-card h3{margin:0 0 16px}.app-grid{grid-template-columns:repeat(auto-fill,minmax(min(68px,100%),1fr));gap:28px 8px;padding-top:8px;display:grid}.app-tile{color:var(--text);-webkit-tap-highlight-color:transparent;transition:transform var(--transition-fast);cursor:pointer;flex-direction:column;align-items:center;gap:8px;text-decoration:none;display:flex}.app-tile:hover{text-decoration:none}.app-tile:hover .app-icon{background:#e0e7ff;border-color:#a5b4fc;transform:translateY(-3px)scale(1.06);box-shadow:0 8px 18px #4f46e538}.app-tile:hover .app-label{color:var(--brand);font-weight:600}.app-icon{background:var(--brand-soft);width:56px;height:56px;color:var(--brand);transition:transform var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);border:1px solid #e0e7ff;border-radius:50%;place-items:center;display:grid;position:relative}.app-tile:active .app-icon{background:#e0e7ff;transform:scale(.94)}.app-tile:focus-visible .app-icon{outline:2px solid var(--brand);outline-offset:2px}.app-label{text-align:center;color:#334155;transition:color var(--transition-fast);font-size:12px;font-weight:500;line-height:1.25}.app-badge{white-space:nowrap;color:var(--brand);background:#fff;border:1.5px solid #c7d2fe;border-radius:999px;padding:1px 7px;font-size:10px;font-weight:700;line-height:16px;position:absolute;top:-9px;left:50%;transform:translate(-50%);box-shadow:0 1px 3px #00000014}.app-badge.hot{color:#fff;background:#ea580c;border-color:#ea580c}.quick{flex-wrap:wrap;gap:10px;display:flex}.simple-list{margin:0 0 10px;padding:0;list-style:none}.simple-list li{border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.simple-list li:last-child{border-bottom:0}.dl{grid-template-columns:120px minmax(0,1fr);gap:10px;margin:0;display:grid}.dl dt{color:var(--text-muted)}.dl dd{overflow-wrap:anywhere;margin:0}@media (width<=380px){.dl{grid-template-columns:minmax(0,1fr);gap:2px}.dl dd{margin-bottom:8px}}.class-grid{grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:18px;display:grid}.tasks-page{flex-direction:column;gap:16px;width:100%;display:flex}.tasks-header-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.task-list{flex-direction:column;gap:12px;width:100%;display:flex}.task,.task-card{border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-xs);transition:transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);background:#fff;justify-content:space-between;align-items:center;gap:20px;padding:16px 20px;display:flex;position:relative;overflow:hidden}.task:hover,.task-card:hover{border-color:#cbd5e1;transform:translateY(-2px);box-shadow:0 8px 20px -4px #0f172a14}.task-card.status-pending{border-left:4.5px solid #f59e0b}.task-card.status-in_progress{border-left:4.5px solid #4f46e5}.task-card.status-done{background:#fbfdfc;border-left:4.5px solid #10b981}.task-main{flex:1;align-items:flex-start;gap:14px;min-width:0;display:flex}.task-check-btn{color:#0000;cursor:pointer;width:24px;height:24px;transition:all var(--transition-fast);background:#fff;border:2px solid #cbd5e1;border-radius:50%;flex-shrink:0;place-items:center;margin-top:1px;padding:0;display:grid}.task-check-btn:hover{color:#10b981;background:#ecfdf5;border-color:#10b981;transform:scale(1.08)}.task-check-btn.is-done{color:#fff;background:#10b981;border-color:#10b981}.task-check-btn.is-done:hover{background:#059669;border-color:#059669}.task-content{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.task-title-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.task-title{color:#0f172a;letter-spacing:-.01em;transition:color var(--transition-fast);margin:0;font-size:15.5px;font-weight:700;line-height:1.35}.task-title.is-done{color:#94a3b8;text-decoration:line-through}.task-badge-overdue{color:#be123c;letter-spacing:.03em;text-transform:uppercase;background:#ffe4e6;border:1px solid #fecdd3;border-radius:999px;padding:1.5px 8px;font-size:11px;font-weight:800}.task-desc{color:#475569;margin:0;font-size:13.5px;line-height:1.45}.task-meta-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:2px;display:flex}.task-meta-chip{color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:7px;align-items:center;gap:5px;padding:3px 9px;font-size:12px;font-weight:500;display:inline-flex}.task-chip-icon{font-size:12px;line-height:1}.task-chip-assignee b{color:#0f172a}.task-chip-due.is-overdue{color:#be123c;background:#fff1f2;border-color:#fecdd3;font-weight:700}.task-actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.task-status-wrap{position:relative}.status-select{appearance:none;cursor:pointer;transition:all var(--transition-fast);border-radius:999px;width:auto;min-width:135px;padding:7px 32px 7px 14px;font-size:12.5px;font-weight:700;line-height:1.3;box-shadow:0 1px 2px #0f172a0d}.status-select:focus-visible{outline:none;box-shadow:0 0 0 3px #4f46e533}select.status-select.status-pending,select.status-select.status-pending:hover:not(:focus){color:#92400e;background-color:#fef3c7;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2.5' stroke='%23b45309'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 8.25l-7.5 7.5-7.5-7.5'%3E%3C/path%3E%3C/svg%3E");background-position:right 11px center;background-repeat:no-repeat;background-size:13px 13px;border:1.5px solid #fde68a}select.status-select.status-in_progress,select.status-select.status-in_progress:hover:not(:focus){color:#3730a3;background-color:#e0e7ff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2.5' stroke='%234338ca'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 8.25l-7.5 7.5-7.5-7.5'%3E%3C/path%3E%3C/svg%3E");background-position:right 11px center;background-repeat:no-repeat;background-size:13px 13px;border:1.5px solid #c7d2fe}select.status-select.status-done,select.status-select.status-done:hover:not(:focus){color:#166534;background-color:#dcfce7;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2.5' stroke='%2315803d'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 8.25l-7.5 7.5-7.5-7.5'%3E%3C/path%3E%3C/svg%3E");background-position:right 11px center;background-repeat:no-repeat;background-size:13px 13px;border:1.5px solid #bbf7d0}.btn-task-delete{color:#e11d48;cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;background:#fff1f2;border:1.5px solid #fecdd3;border-radius:999px;align-items:center;gap:5px;padding:6.5px 12px;font-size:12.5px;font-weight:600;display:inline-flex;box-shadow:0 1px 2px #e11d480d}.btn-task-delete:hover{color:#fff;background:#e11d48;border-color:#e11d48;transform:translateY(-1px);box-shadow:0 2px 8px #e11d4840}.btn-task-delete:active{transform:translateY(0)}.btn-task-delete svg{flex-shrink:0}@media (width<=640px){.task,.task-card{flex-direction:column;align-items:stretch;gap:14px;padding:14px 16px}.task-actions{border-top:1px solid var(--border-light);justify-content:space-between;width:100%;padding-top:12px}.task-status-wrap{flex:1}.status-select{width:100%}}.seg{border:1.5px solid var(--border);border-radius:var(--radius-sm);background:#fff;display:inline-flex;overflow:hidden}.seg button{font:inherit;cursor:pointer;color:var(--text-muted);border:0;border-right:1px solid var(--border);transition:all var(--transition-fast);background:#fff;padding:7px 14px;font-size:12.5px;font-weight:600}.seg button:last-child{border-right:0}.seg button:hover:not(.on){background:#f8fafc}.seg .seg-P.on{background:var(--success);color:#fff}.seg .seg-A.on{background:var(--danger);color:#fff}.seg .seg-L.on{color:#fff;background:#f59e0b}.att-step{margin-bottom:14px}.att-step-title{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:18px 0 12px;font-size:13px;font-weight:700}.att-select-bar{flex-wrap:wrap;align-items:flex-end;gap:14px;display:flex}.att-select-bar .field{width:auto;min-width:180px}.att-select-bar .tabs{margin-bottom:0}.lecture-grid{grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));gap:12px;display:grid}.lecture-card{border:1px solid var(--border);border-radius:var(--radius);font:inherit;color:var(--text);text-align:left;cursor:pointer;box-shadow:var(--shadow-xs);transition:border-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);background:#fff;flex-direction:column;gap:6px;padding:14px 16px;display:flex}.lecture-card:hover:not(:disabled){box-shadow:var(--shadow);border-color:#a5b4fc;transform:translateY(-1px)}.lecture-card:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.lecture-card:disabled{opacity:.6;cursor:progress}.lecture-card.is-marked{background:#fbfefc}.lecture-card-time{color:var(--brand);justify-content:space-between;gap:8px;font-size:12px;font-weight:700;display:flex}.lecture-card-subject{white-space:nowrap;text-overflow:ellipsis;font-size:15.5px;font-weight:700;overflow:hidden}.lecture-card-meta{color:var(--text-muted);font-size:12.5px}.lecture-card-status{border-radius:999px;width:fit-content;margin-top:2px;padding:2px 9px;font-size:11.5px;font-weight:600}.lecture-card-status.marked{background:var(--success-soft);color:#166534}.lecture-card-status.pending{background:var(--warn-soft);color:#92400e}.lecture-card-go{border-top:1px solid var(--border-light);color:var(--brand);margin-top:6px;padding-top:10px;font-size:12.5px;font-weight:600}.att-session-card{border:1px solid var(--border);background:#fff;border-radius:18px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;padding:16px 22px;display:flex;position:relative;overflow:hidden;box-shadow:0 4px 16px -2px #0f172a0d}.att-session-card:before{content:"";background:linear-gradient(180deg, var(--brand), #7c3aed);width:4px;position:absolute;top:0;bottom:0;left:0}.att-session-left{flex-direction:column;gap:8px;min-width:0;display:flex}.att-session-header-line{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.att-session-title{color:var(--text);letter-spacing:-.01em;margin:0;font-size:18px;font-weight:700}.att-class-badge{color:var(--brand-dark);background:#e0e7ff;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.att-session-chips{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.att-chip-meta{color:#475569;align-items:center;gap:6px;font-size:13px;display:inline-flex}.att-chip-meta svg{color:var(--brand);flex-shrink:0}.att-change-btn{color:var(--text-muted);border:1px solid var(--border);transition:all var(--transition-fast);background:#fff;border-radius:10px;align-items:center;gap:6px;padding:6px 12px;font-weight:600;display:inline-flex}.att-change-btn:hover{color:var(--brand);background:var(--brand-soft);border-color:#c7d2fe}.att-roster-card{border:1px solid var(--border);background:#fff;border-radius:20px;margin-bottom:16px;overflow:hidden;box-shadow:0 4px 16px -2px #0f172a0d}.att-roster-header{border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;gap:16px;padding:16px 22px;display:flex}.att-roster-title-wrap{align-items:center;gap:10px;display:flex}.att-roster-title-wrap h3{margin:0;font-size:16px;font-weight:700}.att-count-pill{color:#475569;background:#f1f5f9;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.att-bulk-actions{align-items:center;gap:8px;display:flex}.att-btn-bulk-p{color:#065f46;cursor:pointer;transition:all var(--transition-fast);background:#ecfdf5;border:1px solid #a7f3d0;border-radius:999px;align-items:center;gap:6px;padding:5px 13px;font-size:12.5px;font-weight:600;display:inline-flex}.att-btn-bulk-p:hover{background:#d1fae5;border-color:#6ee7b7;transform:translateY(-1px)}.att-btn-bulk-a{color:#9f1239;cursor:pointer;transition:all var(--transition-fast);background:#fff1f2;border:1px solid #fecdd3;border-radius:999px;align-items:center;gap:6px;padding:5px 13px;font-size:12.5px;font-weight:600;display:inline-flex}.att-btn-bulk-a:hover{background:#ffe4e6;border-color:#fda4af;transform:translateY(-1px)}.att-roster-subbar{border-bottom:1px solid var(--border-light);background:#f8fafc;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:10px 22px;display:flex}.att-filter-tabs{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.att-filter-tab{color:#64748b;cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:12.5px;font-weight:600;display:inline-flex}.att-filter-tab:hover:not(.on){color:var(--text);background:#e2e8f0}.att-filter-tab.on{border-color:var(--border);color:var(--text);background:#fff;box-shadow:0 1px 3px #0000000d}.att-tab-count{color:#475569;background:#e2e8f0;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex}.att-filter-tab.on .att-tab-count{background:var(--brand-soft);color:var(--brand-dark)}.att-tab-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.dot-P{background:#10b981}.dot-A{background:#ef4444}.dot-L{background:#f59e0b}.att-search-box{align-items:center;width:250px;max-width:100%;display:flex;position:relative}.att-search-icon{color:#94a3b8;pointer-events:none;position:absolute;left:10px}.att-search-input{border:1px solid var(--border);width:100%;min-height:34px;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);background:#fff;border-radius:999px;padding:6px 28px 6px 32px;font-size:12.5px}.att-search-input:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #4f46e51f}.att-search-clear{color:#94a3b8;cursor:pointer;background:0 0;border:0;border-radius:50%;padding:2px 6px;font-size:12px;position:absolute;right:8px}.att-search-clear:hover{color:var(--text)}.att-inline-alert{margin:12px 22px 0}.att-list{margin:0;padding:0;list-style:none}.att-row{border-top:1px solid var(--border-light);border-left:3px solid #0000;grid-template-columns:48px 1fr auto;align-items:center;gap:16px;padding:12px 22px;transition:background .15s,border-left-color .15s;display:grid}.att-row:first-child{border-top:0}.att-row:hover{background:#fafbfc}.att-row.st-A{background:#fffcfc;border-left-color:#ef4444}.att-row.st-L{background:#fffdf9;border-left-color:#f59e0b}.att-row.st-P{border-left-color:#10b981}.att-roll-col{align-items:center;display:flex}.att-roll-pill{color:#475569;font-variant-numeric:tabular-nums;background:#f1f5f9;border-radius:7px;justify-content:center;align-items:center;min-width:32px;height:26px;padding:0 6px;font-size:12px;font-weight:700;display:inline-flex}.att-student-col{align-items:center;gap:12px;min-width:0;display:flex}.att-avatar-wrap{border-radius:50%;flex-shrink:0;place-items:center;width:38px;height:38px;display:grid;overflow:hidden;box-shadow:0 1px 3px #00000014}.att-avatar-img{object-fit:cover;width:100%;height:100%}.att-avatar-initials{color:#fff;letter-spacing:.02em;place-items:center;width:100%;height:100%;font-size:14px;font-weight:700;display:grid}.att-student-info{flex-direction:column;gap:1px;min-width:0;display:flex}.att-student-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;font-weight:600;overflow:hidden}.att-student-meta{color:var(--text-muted);font-size:12px}.att-student-email{color:var(--text-muted)}.att-no-contact{color:#94a3b8;font-style:italic}.att-seg{background:#f1f5f9;border-radius:999px;align-items:center;gap:3px;padding:3px;display:inline-flex}.att-seg-btn{font:inherit;cursor:pointer;color:#64748b;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:12.5px;font-weight:600;transition:all .15s cubic-bezier(.16,1,.3,1);display:inline-flex}.att-seg-btn:hover:not(.on){color:var(--text);background:#ffffffb3}.att-seg-dot{border-radius:50%;width:6px;height:6px;display:inline-block}.att-seg-btn.on .att-seg-dot{background:#fff!important}.att-seg-btn.seg-P.on{color:#fff;background:#10b981;box-shadow:0 2px 8px #10b98159}.att-seg-btn.seg-A.on{color:#fff;background:#ef4444;box-shadow:0 2px 8px #ef444459}.att-seg-btn.seg-L.on{color:#fff;background:#f59e0b;box-shadow:0 2px 8px #f59e0b59}.att-foot{z-index:10;-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);background:#fffffff0;border-radius:20px;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;padding:12px 20px;display:flex;position:sticky;bottom:16px;box-shadow:0 8px 30px -4px #0f172a1f,0 2px 6px -1px #0f172a0f}.att-foot-telemetry{color:#475569;align-items:center;gap:8px;font-size:13px;display:flex}.att-tele-item{font-variant-numeric:tabular-nums;align-items:center;gap:5px;display:inline-flex}.att-tele-sep{color:#cbd5e1}.att-tele-changed{color:#7c3aed;font-weight:600}.att-review-btn{border-radius:12px;align-items:center;gap:6px;padding:8px 18px;font-weight:600;display:inline-flex}.att-summary-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px;display:grid}.att-stat-card{border:1px solid var(--border);background:#fff;border-radius:18px;flex-direction:column;gap:8px;padding:18px 20px;display:flex;position:relative;overflow:hidden;box-shadow:0 4px 14px -2px #0f172a0a}.att-stat-card:before{content:"";height:3px;position:absolute;top:0;left:0;right:0}.att-stat-card.st-P:before{background:#10b981}.att-stat-card.st-A:before{background:#ef4444}.att-stat-card.st-L:before{background:#f59e0b}.att-stat-head{justify-content:space-between;align-items:center;display:flex}.att-stat-label{color:var(--text-muted);font-size:13px;font-weight:600}.att-stat-dot{border-radius:50%;width:8px;height:8px}.att-stat-body{align-items:baseline;gap:10px;display:flex}.att-stat-num{font-variant-numeric:tabular-nums;font-size:30px;font-weight:800;line-height:1}.att-stat-card.st-P .att-stat-num{color:#10b981}.att-stat-card.st-A .att-stat-num{color:#ef4444}.att-stat-card.st-L .att-stat-num{color:#f59e0b}.att-stat-pct{color:var(--text-muted);font-size:13px;font-weight:600}.att-review-card{padding:24px}.att-all-present-banner{color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:14px;align-items:center;gap:14px;padding:16px;display:flex}.att-check-circle{color:#fff;background:#10b981;border-radius:50%;flex-shrink:0;place-items:center;width:32px;height:32px;font-size:16px;font-weight:700;display:grid}.att-review-group+.att-review-group{margin-top:18px}.att-review-group-title{align-items:center;gap:8px;margin:0 0 10px;font-size:14px;font-weight:700;display:flex}.att-name-chips{flex-wrap:wrap;gap:8px;display:flex}.att-name-chip{border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:500;display:inline-flex}.att-chip-roll{opacity:.8;font-size:11.5px}.att-name-chip.st-A{background:var(--danger-soft);color:#9f1239;border:1px solid var(--danger-border)}.att-name-chip.st-L{background:var(--warn-soft);color:#92400e;border:1px solid var(--warn-border)}.att-saved-diff{margin:16px 0 0}.att-done-banner{background:#ecfdf5;border:1px solid #a7f3d0;border-radius:16px;align-items:center;gap:14px;margin-bottom:16px;padding:16px 20px;display:flex}.att-done-banner h3{color:#065f46;margin:0 0 2px;font-size:16px}.att-done-icon{color:#fff;background:#10b981;border-radius:50%;flex-shrink:0;place-items:center;width:38px;height:38px;font-size:18px;font-weight:700;display:grid}.share-options{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:12px;margin-bottom:16px;display:grid}.share-opt{border:1px solid var(--border);cursor:pointer;transition:border-color var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast);border-radius:16px;align-items:flex-start;gap:12px;padding:16px;display:flex}.share-opt:hover{border-color:#c7d2fe}.share-opt.on{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand);background:#fafaff}.share-opt input{margin-top:3px}.share-opt b{margin-bottom:2px;font-size:14px;display:block}.share-opt span{color:var(--text-muted);font-size:12.5px}.att-rep-card{border:1px solid var(--border);background:#fff;border-radius:20px;margin-bottom:24px;overflow:hidden;box-shadow:0 4px 16px -2px #0f172a0d}.att-rep-controls{border-bottom:1px solid var(--border-light);background:#f8fafc;flex-direction:column;gap:12px;padding:16px 20px;display:flex}.att-rep-top-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.att-rep-class-wrap{align-items:center;gap:10px;display:flex}.att-rep-class-select{border:1px solid var(--border);color:var(--text);cursor:pointer;min-width:160px;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);background:#fff;border-radius:12px;padding:7px 32px 7px 12px;font-size:14px;font-weight:700}.att-rep-class-select:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #4f46e51f}.att-rep-presets{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.att-rep-preset-btn{border:1px solid var(--border);color:#475569;cursor:pointer;transition:all var(--transition-fast);background:#fff;border-radius:999px;padding:5px 12px;font-size:12px;font-weight:600}.att-rep-preset-btn:hover:not(.on){color:var(--text);background:#f1f5f9;border-color:#cbd5e1}.att-rep-preset-btn.on{background:var(--brand);color:#fff;border-color:var(--brand);box-shadow:0 2px 6px #4f46e540}.att-rep-bottom-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.att-rep-dates{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.att-rep-date-field{border:1px solid var(--border);background:#fff;border-radius:10px;align-items:center;gap:8px;padding:4px 12px;display:inline-flex}.att-rep-date-label{color:#64748b;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:700}.att-rep-date-input{color:var(--text);cursor:pointer;background:0 0;border:0;outline:none;padding:2px 0;font-size:13px;font-weight:600}.att-rep-period-pill{color:#6d28d9;background:#f5f3ff;border:1px solid #ddd6fe;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-flex}.att-rep-stats-grid{border-bottom:1px solid var(--border-light);background:#fff;grid-template-columns:repeat(4,1fr);gap:12px;padding:16px 20px;display:grid}.att-rep-stat-card{border:1px solid var(--border-light);background:#f8fafc;border-radius:14px;flex-direction:column;gap:3px;padding:12px 14px;display:flex;position:relative;overflow:hidden}.att-rep-stat-card:before{content:"";width:3.5px;position:absolute;top:0;bottom:0;left:0}.att-rep-stat-card.stat-avg:before{background:#6366f1}.att-rep-stat-card.stat-present:before{background:#10b981}.att-rep-stat-card.stat-absent:before{background:#ef4444}.att-rep-stat-card.stat-risk:before{background:#f59e0b}.att-rep-stat-label{color:var(--text-muted);font-size:11.5px;font-weight:600}.att-rep-stat-num{font-variant-numeric:tabular-nums;font-size:22px;font-weight:800;line-height:1.1}.att-rep-stat-card.stat-avg .att-rep-stat-num{color:#4338ca}.att-rep-stat-card.stat-present .att-rep-stat-num{color:#059669}.att-rep-stat-card.stat-absent .att-rep-stat-num{color:#dc2626}.att-rep-stat-card.stat-risk .att-rep-stat-num{color:#d97706}.att-rep-stat-sub{color:var(--text-muted);font-size:11px}.att-rep-filter-bar{border-bottom:1px solid var(--border-light);background:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;display:flex}.att-rep-filter-tabs{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.att-rep-filter-tab{color:#64748b;cursor:pointer;transition:all var(--transition-fast);background:#f1f5f9;border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:12px;font-weight:600;display:inline-flex}.att-rep-filter-tab:hover:not(.on){color:var(--text);background:#e2e8f0}.att-rep-filter-tab.on{color:var(--brand-dark);border-color:var(--border);background:#fff;box-shadow:0 1px 3px #0000000d}.att-rep-filter-tab-count{color:#475569;background:#e2e8f0;border-radius:999px;justify-content:center;align-items:center;min-width:17px;height:17px;padding:0 5px;font-size:10.5px;font-weight:700;display:inline-flex}.att-rep-filter-tab.on .att-rep-filter-tab-count{background:var(--brand-soft);color:var(--brand-dark)}.att-rep-search-wrap{align-items:center;width:240px;max-width:100%;display:flex;position:relative}.att-rep-search-icon{color:#94a3b8;pointer-events:none;position:absolute;left:10px}.att-rep-search-input{border:1px solid var(--border);width:100%;min-height:32px;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);background:#fff;border-radius:999px;padding:5px 28px 5px 32px;font-size:12.5px}.att-rep-search-input:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #4f46e51f}.att-rep-search-clear{color:#94a3b8;cursor:pointer;background:0 0;border:0;border-radius:50%;padding:2px 6px;font-size:12px;position:absolute;right:8px}.att-rep-table-wrap{background:#fff;overflow-x:auto}.att-rep-table{border-collapse:separate;border-spacing:0;width:100%}.att-rep-table th{color:#64748b;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-light);white-space:nowrap;background:#f8fafc;padding:10px 16px;font-size:11.5px;font-weight:700}.att-rep-table td{vertical-align:middle;border-bottom:1px solid var(--border-light);padding:12px 16px;font-size:13.5px}.att-rep-table tr:hover td{background:#f8fafc}.att-rep-student-cell{align-items:center;gap:12px;display:flex}.att-rep-student-name{color:var(--text);font-weight:600}.att-rep-count-pill{border-radius:999px;justify-content:center;align-items:center;min-width:32px;padding:2px 8px;font-size:12.5px;font-weight:700;display:inline-flex}.att-rep-count-pill.pill-P{color:#065f46;background:#ecfdf5}.att-rep-count-pill.pill-A{color:#9f1239;background:#fff1f2}.att-rep-count-pill.pill-L{color:#92400e;background:#fffbeb}.att-pct-bar-wrap{align-items:center;gap:10px;width:150px;display:flex}.att-pct-bar-track{background:#e2e8f0;border-radius:999px;flex:1;height:6px;overflow:hidden}.att-pct-bar-fill{border-radius:999px;height:100%;transition:width .3s}.att-pct-bar-fill.good{background:#10b981}.att-pct-bar-fill.medium{background:#f59e0b}.att-pct-bar-fill.low{background:#ef4444}.att-pct-badge{border-radius:999px;justify-content:center;align-items:center;min-width:44px;padding:2px 8px;font-size:12px;font-weight:700;display:inline-flex}.att-pct-badge.good{color:#065f46;background:#ecfdf5}.att-pct-badge.medium{color:#92400e;background:#fffbeb}.att-pct-badge.low{color:#9f1239;background:#fff1f2}.att-rep-mobile-cards{display:none}@media (width<=680px){.att-rep-table-wrap{display:none}.att-rep-mobile-cards{background:#f8fafc;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.att-rep-student-card{border:1px solid var(--border);background:#fff;border-radius:16px;flex-direction:column;gap:10px;padding:14px 16px;display:flex;box-shadow:0 1px 4px #0f172a0a}.att-rep-card-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.att-rep-card-identity{align-items:center;gap:10px;min-width:0;display:flex}.att-rep-card-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700;overflow:hidden}.att-rep-card-bar{background:#f1f5f9;border-radius:999px;width:100%;height:5px;overflow:hidden}.att-rep-card-bottom{justify-content:space-between;align-items:center;gap:6px;display:flex}.att-rep-mini-chip{text-align:center;border-radius:8px;flex-direction:column;flex:1;align-items:center;padding:4px 6px;font-size:11px;font-weight:600;display:flex}.att-rep-mini-chip b{font-size:13px;font-weight:800}.att-rep-mini-chip.chip-P{color:#065f46;background:#ecfdf5}.att-rep-mini-chip.chip-A{color:#9f1239;background:#fff1f2}.att-rep-mini-chip.chip-L{color:#92400e;background:#fffbeb}.att-rep-stats-grid{grid-template-columns:repeat(2,1fr);gap:8px;padding:12px 14px}.att-rep-top-row,.att-rep-bottom-row{flex-direction:column;align-items:stretch;gap:10px}.att-rep-class-select{width:100%}.att-rep-presets{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.att-rep-preset-btn{text-align:center;padding:6px 4px}.att-rep-dates{grid-template-columns:1fr 1fr;gap:8px;display:grid}.att-rep-date-field{justify-content:space-between;width:100%}.att-rep-period-pill{justify-content:center}.att-rep-filter-bar{flex-direction:column;align-items:stretch;gap:10px;padding:12px 14px}.att-rep-search-wrap{width:100%}}@media (width<=768px){.att-row{grid-template-columns:36px 1fr;row-gap:10px}.att-row .att-seg{grid-column:1/-1;width:100%;display:flex}.att-row .att-seg-btn{flex:1;justify-content:center}.att-summary-cards{gap:8px}.att-foot-telemetry{display:none}.att-foot{justify-content:space-between}.att-roster-header{flex-direction:column;align-items:flex-start;gap:12px}.att-roster-subbar{flex-direction:column;align-items:stretch;gap:12px}.att-search-box{width:100%}}@media (width<=640px){.att-select-bar{gap:12px}.att-select-bar .field{flex:160px;min-width:0}.att-select-bar .field input,.att-select-bar .field select{width:100%}.att-foot{flex-direction:column;gap:10px}.att-foot>*{text-align:center;justify-content:center;width:100%}}.score{color:var(--brand);white-space:nowrap;font-size:26px;font-weight:800}.score small{color:var(--text-muted);font-size:14px;font-weight:500}.q-card{flex-direction:column;gap:12px;margin-bottom:14px;display:flex}.q-head{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.q-head select{width:auto}.q-head label{align-items:center;gap:6px;display:inline-flex}.opts{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.opt-row{align-items:center;gap:10px;width:100%;display:flex}.add-q{flex-wrap:wrap;gap:10px;margin-top:6px;display:flex}.sheet-q{border-bottom:1px solid var(--border);padding:12px 0}.sheet-q p{margin:6px 0}.sheet-a{border-radius:var(--radius-sm);padding:8px 12px;font-size:13.5px}.sheet-a.ok{background:var(--success-soft);color:#065f46;border:1px solid var(--success-border)}.sheet-a.bad{background:var(--danger-soft);color:#9f1239;border:1px solid var(--danger-border)}.exam{background:#f8fafc;flex-direction:column;min-height:100%;display:flex}.exam-bar{border-bottom:1.5px solid var(--border);z-index:10;box-shadow:var(--shadow-xs);background:#fff;align-items:center;gap:20px;padding:14px 28px;display:flex;position:sticky;top:0}.exam-title{flex-direction:column;flex:1;min-width:0;display:flex}.exam-title small{color:var(--text-muted)}.timer{font-variant-numeric:tabular-nums;background:var(--brand-soft);color:var(--brand-dark);border:1px solid #c7d2fe;border-radius:10px;padding:6px 16px;font-size:20px;font-weight:700}.timer.urgent{background:var(--danger-soft);color:var(--danger);border-color:var(--danger-border);animation:1s infinite pulse}@keyframes pulse{50%{opacity:.6}}.exam-body{grid-template-columns:280px 1fr;align-items:start;gap:24px;width:100%;max-width:1140px;margin:0 auto;padding:24px 28px;display:grid}.exam-nav{position:sticky;top:86px}.q-dots{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:12px 0 16px;display:grid;position:relative}.q-dots button{aspect-ratio:1;border:1.5px solid var(--border);cursor:pointer;font:inherit;transition:all var(--transition-fast);background:#fff;border-radius:8px;font-size:13px;font-weight:600}.q-dots button:hover{border-color:var(--brand-light)}.q-dots button.ans{background:var(--success-soft);border-color:var(--success-border);color:var(--success)}.q-dots button.cur{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 2px var(--brand)}.exam-q{padding:28px}.q-text{white-space:pre-wrap;margin:8px 0 20px;font-size:18px;font-weight:600;line-height:1.5}.choices{flex-direction:column;align-items:flex-start;gap:12px;width:100%;display:flex}.choice{border:1.5px solid var(--border);border-radius:var(--radius);cursor:pointer;width:100%;transition:all var(--transition-fast);background:#fff;align-items:center;gap:14px;padding:14px 16px;display:flex}.choice:hover{background:#f8fafc;border-color:#cbd5e1}.choice.on{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand);background:#f4f6ff}.choice input{display:none}.choice-key{border:1.5px solid var(--border);width:30px;height:30px;transition:all var(--transition-fast);background:#fff;border-radius:50%;flex-shrink:0;place-items:center;font-size:13px;font-weight:700;display:grid}.choice.on .choice-key{background:var(--brand);color:#fff;border-color:var(--brand)}.exam-foot{justify-content:space-between;margin-top:28px;display:flex}.exam-alert{width:calc(100% - 56px);max-width:1140px;margin:16px auto 0}.q-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.btn-flag{background:var(--warning-soft,#fffbeb);color:#b45309;border-color:#f59e0b}.q-dots button.flag{border-color:#f59e0b;box-shadow:inset 0 -3px #f59e0b}.q-legend{gap:14px;margin:-6px 0 14px;display:flex}.q-legend .dot{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:4px;display:inline-block}.q-legend .dot.ans{background:var(--success-soft);border:1px solid var(--success-border)}.q-legend .dot.flag{background:#fffbeb;border:1px solid #f59e0b}.save-state{min-height:1.4em;color:var(--text-muted);margin:0}.save-state.saved{color:var(--success)}.save-state.error{color:var(--danger);font-weight:600}.block-gap{margin-bottom:20px}.card-head-pad{padding:18px 22px 0}.exam-options{flex-direction:column;gap:8px;display:flex}.q-stats td .bar{background:var(--border);border-radius:3px;min-width:80px;height:6px;overflow:hidden}.q-stats td .bar>i{background:var(--brand);height:100%;display:block}.sheet-a.pending{color:#92400e;background:#fffbeb;border:1px solid #fcd34d}.sheet-grade{align-items:center;gap:8px;display:flex}.big-check{background:var(--success-soft);width:72px;height:72px;color:var(--success);border-radius:50%;place-items:center;margin:0 auto 16px;font-size:34px;display:grid}@media (width<=960px){.exam-body{grid-template-columns:minmax(0,1fr);gap:16px;padding:16px 20px}.exam-nav{padding:14px 16px;position:static}.q-dots{overscroll-behavior-x:contain;scrollbar-width:thin;grid-template-columns:none;grid-auto-columns:42px;grid-auto-flow:column;margin:8px -3px 10px;padding:4px 3px 8px;overflow-x:auto}.exam-q{padding:20px}.q-text{font-size:16.5px}}@media (width<=640px){.exam-bar{gap:10px;padding:10px 14px}.exam-bar .logo{display:none}.exam-alert{width:calc(100% - 28px)}}.auth-page{background:radial-gradient(at 15% 15%,#4f46e51f 0%,#0000 45%),radial-gradient(at 85% 85%,#6366f114 0%,#0000 45%),radial-gradient(#f8fafccc 0%,#f1f5f9 100%);justify-content:center;align-items:center;min-height:100dvh;padding:48px 20px;display:flex;position:relative;overflow:hidden}.auth-page:before{content:"";pointer-events:none;background-image:radial-gradient(#64748b1a 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0}.auth-card{-webkit-backdrop-filter:blur(20px);background:#fffffffa;border:1.5px solid #e2e8f0e6;border-radius:22px;width:100%;max-width:540px;padding:40px;animation:.35s cubic-bezier(.16,1,.3,1) authCardEnter;position:relative;box-shadow:0 25px 50px -12px #0f172a1a,0 4px 12px #0f172a08}@keyframes authCardEnter{0%{opacity:0;transform:translateY(20px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.auth-card h1{letter-spacing:-.025em;color:#0f172a;margin-top:18px;font-size:25px;font-weight:700}.auth-card p.small{color:#64748b;margin-bottom:22px;font-size:13.5px}.registration-stepper{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 24px;padding:12px 18px;display:flex}.stepper-step{opacity:.55;transition:all var(--transition-smooth);flex-shrink:0;align-items:center;gap:10px;display:flex}.stepper-step.active{opacity:1}.stepper-step.completed{opacity:.9}.stepper-circle{color:#64748b;width:32px;height:32px;transition:all var(--transition-smooth);background:#e2e8f0;border-radius:50%;flex-shrink:0;place-items:center;font-size:13px;font-weight:700;display:grid}.stepper-step.active .stepper-circle{color:#fff;background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%);box-shadow:0 3px 10px #4f46e559}.stepper-step.completed .stepper-circle{background:var(--success);color:#fff}.stepper-label{flex-direction:column;line-height:1.25;display:flex}.stepper-sub{text-transform:uppercase;letter-spacing:.05em;color:#64748b;font-size:10px;font-weight:700}.stepper-main{color:#0f172a;white-space:nowrap;font-size:13px;font-weight:600}.stepper-line{background:#e2e8f0;border-radius:2px;flex:1;height:2px;margin:0 4px;transition:background .3s}.stepper-line.completed{background:var(--success)}.landing{background:radial-gradient(at 20% 0,#eef2ff 0%,#0000 60%),radial-gradient(at 80% 20%,#f5f3ff 0%,#0000 50%),#f8fafc;width:100%;min-height:100%;overflow-x:hidden}.landing-nav{z-index:40;-webkit-backdrop-filter:blur(14px);transition:all var(--transition-fast);background:#ffffffe0;border-bottom:1px solid #e2e8f0cc;justify-content:space-between;align-items:center;padding:16px max(36px,50% - 604px);display:flex;position:sticky;top:0}.landing-nav-links{align-items:center;gap:24px;display:flex}.nav-text-link{color:#475569;transition:color var(--transition-fast);font-size:13.5px;font-weight:600;text-decoration:none}.nav-text-link:hover{color:var(--brand);text-decoration:none}.landing-nav-actions{align-items:center;gap:10px;display:flex}.reg-text-short{display:none}.reg-text-full{display:inline}.hero{grid-template-columns:1.15fr 1fr;align-items:start;gap:48px;max-width:1280px;margin:0 auto;padding:36px 36px 64px;display:grid}.hero-copy{flex-direction:column;display:flex}.hero-badge{color:var(--brand);background:#fff;border:1px solid #e0e7ff;border-radius:999px;align-items:center;gap:8px;width:fit-content;margin-bottom:18px;padding:6px 14px;font-size:12.5px;font-weight:700;display:inline-flex;box-shadow:0 1px 3px #4f46e514}.pulse-dot{background:#10b981;border-radius:50%;width:8px;height:8px;animation:2s infinite pulseGlow;display:inline-block;box-shadow:0 0 0 3px #10b98133}@keyframes pulseGlow{0%,to{box-shadow:0 0 0 3px #10b98133}50%{box-shadow:0 0 0 6px #10b98166}}.hero h1{letter-spacing:-.03em;color:#0f172a;margin:0 0 16px;font-size:42px;font-weight:800;line-height:1.16}.hero-highlight{background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;display:inline}.lead{color:#475569;margin:0 0 20px;font-size:16px;line-height:1.6}.hero-features-list{flex-direction:column;gap:12px;margin:8px 0 24px;display:flex}.hero-feature-item{color:#334155;align-items:center;gap:12px;font-size:14px;line-height:1.45;display:flex}.hero-feature-item strong{color:#0f172a}.feature-check{color:#059669;background:#ecfdf5;border:1.5px solid #a7f3d0;border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:12px;font-weight:800;display:grid}.hero-actions-row{align-items:center;gap:12px;margin-bottom:24px;display:flex}.hero-trust-bar{border-top:1px solid #e2e8f0;align-items:center;gap:10px;padding-top:14px;display:flex}.trust-stars{color:#f59e0b;letter-spacing:2px;font-size:14px}.trust-text{color:#64748b;font-size:12.5px;font-weight:500}.metrics-strip{max-width:1280px;margin:0 auto 56px;padding:0 36px}.metrics-grid{background:#fff;border:1.5px solid #e2e8f0;border-radius:20px;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding:24px 32px;display:grid;box-shadow:0 4px 20px #0f172a0a}.metric-box{flex-direction:column;gap:3px;display:flex}.metric-val{color:var(--brand);letter-spacing:-.02em;font-size:28px;font-weight:800;line-height:1.1}.metric-label{color:#0f172a;margin-top:4px;font-size:14px;font-weight:700}.metric-sub{color:#64748b;font-size:12px;line-height:1.4}.portals-section{max-width:1100px;margin:0 auto 64px;padding:0 24px;scroll-margin-top:70px}.roles-showcase{flex-direction:column;gap:24px;margin-top:32px;display:flex}.role-tabs{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.role-tab-btn{color:#475569;cursor:pointer;transition:all var(--transition-fast);background:#fff;border:1.5px solid #e2e8f0;border-radius:12px;align-items:center;gap:8px;padding:9px 18px;font-size:13.5px;font-weight:600;display:inline-flex}.role-tab-btn:hover{color:#0f172a;background:#f8fafc;border-color:#cbd5e1}.role-tab-btn.active{background:var(--brand-gradient);color:#fff;border-color:#0000;box-shadow:0 4px 14px #4f46e559}.role-tab-icon{font-size:15px}.role-preview-card{background:#fff;border:1.5px solid #e2e8f0;border-radius:20px;padding:28px 32px;box-shadow:0 10px 30px #0f172a0d}.role-preview-top{border-bottom:1px solid #f1f5f9;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding-bottom:18px;display:flex}.role-preview-title{align-items:center;gap:16px;display:flex}.role-icon-large{background:var(--brand-soft);border-radius:14px;flex-shrink:0;place-items:center;width:54px;height:54px;font-size:32px;display:grid}.role-preview-title h4{color:#0f172a;margin:0;font-size:18px;font-weight:700}.role-preview-title p{color:#64748b;margin:3px 0 0;font-size:13.5px}.role-preview-tag{text-transform:uppercase;letter-spacing:.04em;color:var(--brand);background:#eef2ff;border:1px solid #c7d2fe;border-radius:8px;padding:4px 12px;font-size:12px;font-weight:700}.role-perks-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 20px;display:grid}.role-perk-item{color:#334155;background:#f8fafc;border:1px solid #f1f5f9;border-radius:12px;align-items:center;gap:10px;padding:12px 16px;font-size:13.5px;line-height:1.45;display:flex}.perk-bullet{color:#059669;background:#ecfdf5;border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:13px;font-weight:800;display:grid}.landing-cta-banner{max-width:1100px;margin:0 auto 64px;padding:0 24px}.cta-banner-card{text-align:center;background:linear-gradient(135deg,#f8fafc 0%,#eef2ff 100%);border:1.5px solid #e0e7ff;border-radius:24px;padding:48px 32px;box-shadow:0 10px 30px #4f46e50f}.cta-banner-card h2{color:#0f172a;letter-spacing:-.02em;margin:0 0 10px;font-size:28px;font-weight:800}.cta-banner-card p{color:#64748b;max-width:560px;margin:0 auto 24px;font-size:15px;line-height:1.6}.cta-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.hero-card{background:#fff;border:1.5px solid #e2e8f0e6;border-radius:20px;padding:32px 36px;scroll-margin-top:70px;box-shadow:0 20px 45px -12px #0f172a1a,0 2px 6px #0f172a0a}.hero-card-header{margin-bottom:20px}.hero-card-header h2{letter-spacing:-.02em;color:#0f172a;margin:0 0 6px;font-size:22px;font-weight:800}.hero-card-header p{margin:0}.features-section{max-width:1280px;margin:0 auto;padding:20px 36px 72px;scroll-margin-top:70px}.section-head{text-align:center;max-width:640px;margin:0 auto 40px}.section-head h2{letter-spacing:-.025em;color:#0f172a;margin:14px 0 8px;font-size:30px;font-weight:800}.section-head p{margin:0;font-size:15px;line-height:1.55}.features{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;display:grid}.feature{transition:transform var(--transition-smooth), box-shadow var(--transition-smooth), border-color var(--transition-smooth);background:#fff;border:1.5px solid #e2e8f0;border-radius:16px;flex-direction:column;padding:26px;display:flex}.feature:hover{border-color:#cbd5e1;transform:translateY(-4px);box-shadow:0 16px 32px -8px #0f172a14}.feature-top{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.feature-icon{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;place-items:center;width:44px;height:44px;display:grid}.feature-category{text-transform:uppercase;letter-spacing:.05em;color:#64748b;background:#f1f5f9;border-radius:6px;padding:3px 9px;font-size:11px;font-weight:700}.feature h3{color:#0f172a;margin:0 0 8px;font-size:16px;font-weight:700}.feature p{color:#64748b;margin:0;font-size:13.5px;line-height:1.55}.landing-foot{border-top:1px solid var(--border);background:#fff;padding:32px}.foot-content{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;max-width:1280px;margin:0 auto;display:flex}@media (width<=960px){.hero{grid-template-columns:minmax(0,1fr);gap:32px;padding:24px 20px 40px}.hero h1{font-size:34px}.features-section{padding:20px 20px 48px}.features{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.landing-nav{padding:14px 24px}}@media (width<=768px){.landing-nav{padding:12px 20px}.landing-nav-links{display:none}.landing-nav-actions{gap:8px}.metrics-strip{margin-bottom:36px;padding:0 16px}.metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:18px 20px}.portals-section{margin-bottom:40px;padding:0 16px}.role-tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none;justify-content:flex-start;padding-bottom:6px;overflow-x:auto}.role-tabs::-webkit-scrollbar{display:none}.role-perks-grid{grid-template-columns:minmax(0,1fr);gap:10px}.role-preview-card{padding:20px 16px}.hero-card{padding:24px 20px}.landing-cta-banner{margin-bottom:36px;padding:0 16px}.cta-banner-card{padding:32px 18px}}@media (width<=640px){.auth-card{padding:22px}.landing-nav{padding:10px 16px}.landing-nav .logo{gap:7px;font-size:17px}.landing-nav .logo-img{width:28px;height:28px}.landing-nav-actions{gap:6px}.landing-nav .btn-ghost{min-height:34px;padding:0 10px;font-size:12.5px}.landing-nav .btn-primary{border-radius:8px;min-height:34px;padding:0 12px;font-size:12.5px;display:inline-flex}.reg-text-full{display:none}.reg-text-short{display:inline}.hero{gap:22px;padding:18px 16px 32px}.hero-badge{max-width:100%;margin-bottom:12px;padding:4px 11px;font-size:11.5px}.hero h1{letter-spacing:-.02em;margin-bottom:12px;font-size:26px;line-height:1.25}.hero h1 br{display:none}.lead{margin-bottom:16px;font-size:14px;line-height:1.5}.role-tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:6px;margin-bottom:10px;padding-bottom:6px}.role-tabs::-webkit-scrollbar{display:none}.role-tab-btn{border-radius:8px;gap:5px;padding:5px 9px;font-size:11.5px}.role-preview-card{border-radius:10px;padding:12px}.role-preview-top{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:10px}.role-preview-title{gap:10px}.role-icon-large{border-radius:8px;width:38px;height:38px;font-size:20px}.role-preview-title h4{font-size:14px}.role-preview-title p{font-size:11.5px;line-height:1.35}.role-preview-tag{align-self:flex-start;padding:2px 7px;font-size:10px}.role-perks-grid{grid-template-columns:minmax(0,1fr);gap:6px}.role-perk-item{font-size:12px;line-height:1.35}.hero-card{border-radius:16px;padding:18px 14px;scroll-margin-top:64px}.hero-card-header{margin-bottom:14px}.hero-card-header h2{margin-bottom:4px;font-size:19px}.hero-card-header p{font-size:12.5px}.registration-stepper{border-radius:12px;gap:8px;margin-bottom:16px;padding:10px 12px}.stepper-step{gap:7px}.stepper-circle{width:26px;height:26px;font-size:11px}.stepper-sub{font-size:9px}.stepper-main{font-size:11.5px}.stepper-line{margin:0 2px}.hero-features-list{gap:10px;margin-bottom:18px}.hero-feature-item{gap:9px;font-size:13px}.feature-check{width:18px;height:18px;font-size:10px}.hero-actions-row{flex-direction:column;gap:8px;width:100%}.hero-actions-row .btn{justify-content:center;width:100%}.features-section{padding:16px 14px 40px;scroll-margin-top:64px}.section-head{margin-bottom:22px}.section-head h2{margin:10px 0 6px;font-size:22px}.section-head p{font-size:13.5px;line-height:1.5}.features{grid-template-columns:minmax(0,1fr);gap:12px;padding:0}.feature{border-radius:14px;padding:16px 14px}.feature-top{margin-bottom:10px}.feature-icon{border-radius:10px;width:38px;height:38px}.feature-category{padding:2px 7px;font-size:10.5px}.feature h3{margin-bottom:5px;font-size:15px}.feature p{font-size:13px;line-height:1.5}.landing-foot{padding:24px 16px}.foot-content{text-align:center;flex-direction:column;align-items:center;gap:10px}.foot-content p{text-align:center;font-size:12px;line-height:1.5}}@media (width<=380px){.landing-nav{padding:10px 12px}.landing-nav .logo{gap:6px;font-size:15.5px}.landing-nav .logo-img{width:24px;height:24px}.landing-nav-actions .btn{min-height:32px;padding:0 8px;font-size:12px}.hero{padding:14px 10px 28px}.hero h1{font-size:22px}.hero-card{padding:14px 10px}}.dob-missing{color:var(--warn);font-weight:500}.dob-form{border-top:1px solid var(--border-light);margin-top:14px;padding-top:14px}.bday-top{box-sizing:border-box;grid-template-columns:minmax(0,1.4fr) minmax(320px,1fr);align-items:stretch;gap:18px;width:100%;min-width:0;max-width:100%;margin-bottom:20px;display:grid}.bday-top>:only-child{grid-column:1/-1}.bday-today-card{box-sizing:border-box;background:linear-gradient(135deg,#fff7ed 0%,#fdf2f8 50%,#faf5ff 100%);border:1px solid #fbcfe8;border-radius:20px;flex-direction:column;justify-content:space-between;width:100%;min-width:0;max-width:100%;padding:22px;display:flex;overflow:hidden;box-shadow:0 4px 16px -2px #f472b61f}.bday-today-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.bday-today-badge{color:#9d174d;align-items:center;gap:8px;font-size:16px;font-weight:700;display:inline-flex}.bday-today-badge svg{color:#db2777}.bday-count-bubble{color:#fff;background:#db2777;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:700}.bday-today-date{color:#9d174d;background:#ffffffb3;border:1px solid #f472b64d;border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:600}.bday-today-empty{background:#ffffffbf;border:1px dashed #f472b666;border-radius:16px;align-items:center;gap:14px;padding:18px;display:flex}.bday-empty-icon{flex-shrink:0;font-size:28px}.bday-today-list{flex-direction:column;gap:12px;display:flex}.bday-spotlight-item{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-sizing:border-box;background:#ffffffe6;border:1px solid #f472b659;border-radius:16px;width:100%;min-width:0;max-width:100%;padding:14px 18px;box-shadow:0 2px 10px #f472b614}.bday-person-card{box-sizing:border-box;align-items:center;gap:14px;width:100%;min-width:0;display:flex}.bday-person-avatar-wrap{border-radius:50%;flex-shrink:0;width:44px;height:44px;position:relative}.bday-avatar-img{object-fit:cover;border-radius:50%;width:100%;height:100%;box-shadow:0 2px 6px #00000014}.bday-avatar-initials{color:#fff;border-radius:50%;place-items:center;width:100%;height:100%;font-size:15px;font-weight:700;display:grid;box-shadow:0 2px 6px #00000014}.bday-celebrant-crown{filter:drop-shadow(0 2px 4px #00000026);font-size:15px;position:absolute;top:-6px;right:-6px}.bday-person-details{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.bday-person-name-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.bday-person-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;overflow:hidden}.bday-role-tag{border-radius:999px;padding:1px 7px;font-size:11px;font-weight:600}.bday-role-tag.role-student{color:#4338ca;background:#e0e7ff}.bday-role-tag.role-teacher{color:#0f766e;background:#ccfbf1}.bday-role-tag.role-coadmin{color:#92400e;background:#fef3c7}.bday-role-tag.role-admin{color:#9d174d;background:#fce7f3}.bday-person-meta{color:var(--text-muted);align-items:center;gap:8px;font-size:12.5px;display:flex}.bday-detail-text{font-weight:500}.bday-spotlight-side{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:6px;display:flex}.bday-turning-pill{color:#be185d;background:#fdf2f8;border:1px solid #fbcfe8;border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.bday-turning-pill b{font-weight:800}.bday-badge-sent{color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.bday-badge-pending{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.bday-badge-failed{color:#9f1239;background:#fff1f2;border:1px solid #fecdd3;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.bday-badge-sending{color:#6d28d9;background:#ede9fe;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.bday-badge-off{color:#94a3b8;background:#f1f5f9;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.bday-badge-no-email{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.bday-status-row{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.bday-resend-btn{white-space:nowrap;border-radius:6px;height:24px;padding:2px 8px;font-size:11px;font-weight:700;line-height:20px}.bday-settings-card{border:1px solid var(--border);background:#fff;border-radius:20px;flex-direction:column;justify-content:space-between;padding:22px;display:flex;box-shadow:0 4px 16px -2px #0f172a0d}.bday-settings-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.bday-settings-title-wrap{align-items:center;gap:10px;display:flex}.bday-settings-icon{color:#6d28d9;background:#ede9fe;border-radius:10px;flex-shrink:0;place-items:center;width:36px;height:36px;display:grid}.bday-settings-title-wrap h3{margin:0;font-size:15px;font-weight:700}.bday-switch-list{flex-direction:column;gap:10px;margin:12px 0;display:flex}.bday-switch-item{border:1px solid var(--border-light);cursor:pointer;transition:all var(--transition-fast);background:#f8fafc;border-radius:12px;justify-content:space-between;align-items:center;gap:14px;padding:10px 14px;display:flex}.bday-switch-item:hover{background:#f1f5f9;border-color:#cbd5e1}.bday-switch-content{flex-direction:column;gap:2px;display:flex}.bday-switch-content b{color:var(--text);font-size:13px}.bday-switch-content small{color:var(--text-muted);font-size:12px;line-height:1.35}.bday-settings-footer{color:var(--text-muted);border-top:1px solid var(--border-light);flex-wrap:wrap;align-items:center;gap:6px;padding-top:10px;font-size:12px;display:flex}.bday-reminder-status .text-success{color:#10b981}.bday-reminder-status .text-warn{color:#f59e0b}.bday-filters-card{border:1px solid var(--border);background:#fff;border-radius:18px;margin-bottom:20px;overflow:hidden}.bday-filters-inner{background:#f8fafc;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:12px 20px;display:flex}.bday-tabs{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.bday-tab{color:#64748b;cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:12.5px;font-weight:600;display:inline-flex}.bday-tab:hover:not(.on){color:var(--text);background:#e2e8f0}.bday-tab.on{border-color:var(--border);color:var(--brand-dark);background:#fff;box-shadow:0 1px 3px #0000000d}.bday-tab-count{color:#475569;background:#e2e8f0;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex}.bday-tab.on .bday-tab-count{background:var(--brand-soft);color:var(--brand-dark)}.bday-search-wrap{align-items:center;width:250px;max-width:100%;display:flex;position:relative}.bday-search-icon{color:#94a3b8;pointer-events:none;position:absolute;left:10px}.bday-search-input{border:1px solid var(--border);width:100%;min-height:34px;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);background:#fff;border-radius:999px;padding:6px 28px 6px 32px;font-size:12.5px}.bday-search-input:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #4f46e51f}.bday-search-clear{color:#94a3b8;cursor:pointer;background:0 0;border:0;border-radius:50%;padding:2px 6px;font-size:12px;position:absolute;right:8px}.bday-section-card{border:1px solid var(--border);background:#fff;border-radius:20px;margin-bottom:20px;padding:22px;box-shadow:0 4px 16px -2px #0f172a0d}.bday-section-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.bday-section-title-wrap{align-items:center;gap:10px;display:flex}.bday-section-title-wrap svg{color:var(--brand)}.bday-section-title-wrap h3{margin:0;font-size:16px;font-weight:700}.bday-section-count{color:#475569;background:#f1f5f9;border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:700}.bday-upcoming-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.bday-upcoming-card{border:1px solid var(--border-light);background:#fff;border-radius:16px;align-items:center;gap:12px;padding:12px 14px;transition:all .2s cubic-bezier(.16,1,.3,1);display:flex}.bday-upcoming-card:hover{border-color:#cbd5e1;transform:translateY(-1px);box-shadow:0 4px 12px -2px #0f172a0f}.bday-date-badge{color:#6d28d9;text-align:center;background:#f5f3ff;border:1px solid #ddd6fe;border-radius:12px;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;min-width:48px;height:52px;display:flex}.bday-date-day{font-size:16px;font-weight:800;line-height:1}.bday-date-month{text-transform:uppercase;letter-spacing:.05em;font-size:9.5px;font-weight:700}.bday-date-rel{opacity:.85;white-space:nowrap;font-size:9px;font-weight:600}.bday-upcoming-info{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.bday-upcoming-info .bday-person-avatar-wrap{width:36px;height:36px}.bday-upcoming-info .bday-avatar-initials{font-size:13px}.bday-upcoming-text{flex-direction:column;gap:1px;min-width:0;display:flex}.bday-upcoming-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600;overflow:hidden}.bday-upcoming-sub{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.bday-age-badge{border:1px solid var(--border-light);color:var(--text-muted);white-space:nowrap;background:#f8fafc;border-radius:8px;align-items:center;padding:3px 8px;font-size:11px;display:inline-flex}.bday-age-badge b{color:var(--brand);margin-left:2px}.bday-months-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;display:grid}.bday-month-box{border:1px solid var(--border);background:#fff;border-radius:16px;padding:14px;transition:all .2s}.bday-month-box.is-current{background:linear-gradient(#fafafe 0%,#fff 100%);border-color:#818cf8;box-shadow:0 0 0 1px #818cf8,0 4px 12px -2px #6366f114}.bday-month-header{border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:8px;display:flex}.bday-month-header h4{margin:0;font-size:13.5px;font-weight:700}.bday-cur-month-pill{color:#4338ca;background:#e0e7ff;border-radius:999px;padding:1px 7px;font-size:9.5px;font-weight:700}.bday-month-count{color:var(--text-muted);background:#f1f5f9;border-radius:999px;padding:1px 6px;font-size:11px;font-weight:700}.bday-month-people-list{gap:5px;margin:0;padding:0;list-style:none;display:grid}.bday-month-person-row{border-radius:6px;grid-template-columns:24px 1fr auto;align-items:center;gap:8px;padding:4px 6px;font-size:12.5px;display:grid}.bday-month-person-row.is-today-celebrant{color:#9d174d;background:#fdf2f8;font-weight:700}.bday-day-circle{color:var(--brand);font-variant-numeric:tabular-nums;text-align:center;font-size:12px;font-weight:700}.bday-month-person-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bday-month-role-pill{color:var(--text-muted);font-size:10.5px}.bday-missing-card{background:#fffdfa;border:1px solid #fde68a;border-radius:20px;margin-bottom:20px;padding:22px}.bday-missing-header{margin-bottom:12px}.bday-missing-title-wrap{align-items:center;gap:10px;display:flex}.bday-missing-icon{font-size:20px}.bday-missing-title-wrap h3{color:#92400e;margin:0 0 2px;font-size:15px}.bday-missing-list{margin:0;padding:0;list-style:none}.bday-missing-item{border-top:1px solid #f59e0b26;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.bday-missing-item:first-child{border-top:0}.bday-add-dob-btn{color:#92400e;font-weight:600}@media (width<=900px){.bday-top{grid-template-columns:minmax(0,1fr);gap:14px;width:100%;max-width:100%}}@media (width<=640px){.bday-today-card,.bday-settings-card,.bday-section-card,.bday-missing-card{box-sizing:border-box;border-radius:16px;max-width:100%;padding:16px 14px}.bday-today-header{gap:8px;margin-bottom:12px}.bday-today-badge{font-size:15px}.bday-today-date{padding:2px 8px;font-size:11px}.bday-spotlight-item{box-sizing:border-box;border-radius:14px;max-width:100%;padding:12px 14px}.bday-switch-item{border-radius:12px;gap:10px;padding:10px 12px}.bday-switch-content b{font-size:13px}.bday-switch-content small{font-size:11.5px}.bday-filters-card{border-radius:16px;margin-bottom:16px}.bday-filters-inner{flex-direction:column;align-items:stretch;gap:10px;padding:12px 14px}.bday-tabs{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;width:100%;padding-bottom:4px;overflow-x:auto}.bday-tab{flex-shrink:0}.bday-search-wrap{width:100%}.bday-upcoming-grid{grid-template-columns:1fr;gap:10px}.bday-upcoming-card{box-sizing:border-box;gap:10px;max-width:100%;padding:10px 12px}.bday-date-badge{min-width:42px;height:48px}.bday-months-grid{grid-template-columns:1fr;gap:10px}.bday-missing-item{flex-direction:column;align-items:flex-start;gap:6px}}@media (width<=480px){.bday-person-card{box-sizing:border-box;grid-template-columns:44px 1fr;align-items:center;gap:8px 12px;width:100%;display:grid}.bday-person-avatar-wrap{grid-area:1/1}.bday-person-details{grid-area:1/2;min-width:0}.bday-spotlight-side{border-top:1px dashed #f472b659;flex-direction:row;grid-area:2/1/auto/-1;justify-content:space-between;align-items:center;width:100%;margin-top:2px;padding-top:8px}.bday-turning-pill{padding:3px 8px;font-size:11.5px}.bday-badge-sent,.bday-badge-pending,.bday-badge-failed,.bday-badge-sending,.bday-badge-off{padding:3px 8px;font-size:11px}.bday-today-empty{gap:10px;padding:14px 12px}.bday-empty-icon{font-size:22px}}.person-form{flex-direction:column;display:flex}.form-section{border-top:1px solid var(--border-light);flex-direction:column;gap:14px;padding:16px 0;display:flex}.form-section:first-child{border-top:0;padding-top:0}.form-section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0;font-size:11.5px;font-weight:700}.form-section-sub{margin:-8px 0 0}.form-note-warn{background:var(--warn-soft);border:1px solid var(--warn-border);color:#92400e;border-radius:8px;margin:0;padding:8px 12px;font-size:12.5px}.form-footnote{margin:0}.person-form .modal-actions{border-top:1px solid var(--border-light);margin-top:4px;padding-top:16px}.person-form .switch-row{padding:0}.person-form .perm-grid{margin:0}.dash-bday{background:linear-gradient(135deg,#fff7ed 0%,#fdf2f8 100%);border-color:#fbcfe8;margin-bottom:18px}.dash-bday-list{grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:4px 20px;margin:0;padding:0;list-style:none;display:grid}.dash-bday-list li{align-items:center;gap:12px;min-width:0;padding:8px 0;display:flex}.dash-bday-name{flex-direction:column;flex:1;min-width:0;display:flex}.dash-bday-name b,.dash-bday-name small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dash-bday-list .badge{text-transform:none;flex-shrink:0}.student-quick-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;width:100%;display:grid}.student-portal-card{border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-xs);transition:transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);cursor:pointer;background:#fff;flex-direction:column;justify-content:space-between;gap:14px;padding:20px 22px;display:flex;color:inherit!important;text-decoration:none!important}.student-portal-card:hover{border-color:#cbd5e1;transform:translateY(-3px);box-shadow:0 12px 24px -6px #0f172a14}.card-timetable:hover{border-color:#a5b4fc}.card-attendance:hover{border-color:#6ee7b7}.card-tests:hover{border-color:#c4b5fd}.spc-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.spc-icon-wrap{width:48px;height:48px;transition:transform var(--transition-fast);border-radius:12px;flex-shrink:0;place-items:center;display:grid}.student-portal-card:hover .spc-icon-wrap{transform:scale(1.06)}.icon-timetable{color:#4f46e5;background:#eef2ff;border:1.5px solid #c7d2fe}.icon-attendance{color:#059669;background:#ecfdf5;border:1.5px solid #a7f3d0}.icon-tests{color:#7c3aed;background:#fbf7ff;border:1.5px solid #ddd6fe}.spc-badge{color:#475569;white-space:nowrap;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:700}.spc-badge.badge-active{color:#3730a3;background:#e0e7ff;border-color:#c7d2fe}.spc-badge.badge-success{color:#166534;background:#dcfce7;border-color:#bbf7d0}.spc-badge.badge-warn{color:#92400e;background:#fef3c7;border-color:#fde68a}.spc-badge.badge-hot{color:#be123c;background:#ffe4e6;border-color:#fecdd3}.spc-content{flex-direction:column;gap:4px;display:flex}.spc-title{color:#0f172a;letter-spacing:-.01em;margin:0;font-size:16.5px;font-weight:700}.spc-desc{color:#64748b;margin:0;font-size:13px;line-height:1.45}.spc-foot{border-top:1px solid var(--border-light);justify-content:flex-end;align-items:center;margin-top:2px;padding-top:10px;display:flex}.spc-link{color:var(--brand);transition:transform var(--transition-fast);font-size:12.5px;font-weight:600}.student-portal-card:hover .spc-link{transform:translate(2px)}@media (width<=768px){.student-quick-grid{grid-template-columns:minmax(0,1fr);gap:12px}}@media (width<=640px){.student-quick-grid{gap:10px}.student-portal-card{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"icon content chev""icon badge chev";align-items:center;gap:6px 14px;padding:14px 16px;display:grid}.student-portal-card:hover{transform:none}.student-portal-card:after{content:"›";color:#94a3b8;grid-area:chev;font-size:24px;line-height:1}.spc-top{display:contents}.spc-icon-wrap{grid-area:icon;width:44px;height:44px}.spc-content{grid-area:content;gap:2px}.spc-badge{grid-area:badge;justify-self:start}.spc-title{font-size:15px}.spc-desc{font-size:12.5px}.spc-foot{display:none}}.dsh{flex-direction:column;gap:18px;display:flex}.dsh>.card,.dsh .dsh-main>.card,.dsh .dsh-side>.card{margin:0}.dsh-hero{border-radius:var(--radius-lg);color:#fff;background:radial-gradient(circle at 90% -20%,#ffffff2e 0,#0000 45%),linear-gradient(135deg,#4338ca 0%,#6366f1 60%,#818cf8 100%);padding:22px 26px;position:relative;overflow:hidden;box-shadow:0 10px 30px -12px #4338ca8c}.dsh-hero h1{color:#fff;margin:2px 0;font-size:26px}.dsh-date{letter-spacing:.04em;text-transform:uppercase;opacity:.8;margin:0;font-size:12.5px;font-weight:600}.dsh-sub{opacity:.9;margin:0}.dsh-summary{flex-wrap:wrap;gap:8px;margin:14px 0 0;padding:0;list-style:none;display:flex}.dsh-summary li{background:#ffffff29;border:1px solid #ffffff38;border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:600}.dsh-attention h3{margin-bottom:8px}.dsh-attention ul{margin:0;padding:0;list-style:none}.dsh-att-item{border-top:1px solid var(--border-light);align-items:center;gap:12px;padding:10px 0;display:flex}.dsh-att-item:first-child{border-top:0}.dsh-att-text{flex:1;font-size:13.5px}.dsh-att-dot{background:var(--warn);width:9px;height:9px;box-shadow:0 0 0 4px var(--warn-soft);border-radius:50%;flex-shrink:0}.dsh-att-item.tone-danger .dsh-att-dot{background:var(--danger);box-shadow:0 0 0 4px var(--danger-soft)}.dsh-att-item.tone-info .dsh-att-dot{background:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}.dsh-caught-up{border-radius:var(--radius);background:var(--success-soft);border:1px solid var(--success-border);color:#065f46;align-items:center;gap:10px;padding:12px 16px;font-size:13.5px;font-weight:500;display:flex}.dsh-caught-up span{font-weight:700}.dsh-layout{grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);align-items:start;gap:18px;display:grid}.dsh-main,.dsh-side{flex-direction:column;gap:18px;min-width:0;display:flex}.dsh-card-head{flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:12px;display:flex}.dsh-card-head h3{margin:0}.dsh-card-meta{color:var(--text-muted);font-size:12.5px;font-weight:500}.dsh-card-link{white-space:nowrap;margin-left:auto}.dsh-subhead{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:16px 0 6px;font-size:12px;font-weight:700}.dsh-empty-line{margin:4px 0 0}.dsh-more{margin-top:10px;display:inline-block}.dsh-timeline{margin:0;padding:0;list-style:none}.dsh-tl-item{border-top:1px solid var(--border-light);grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:14px;padding:10px 12px 10px 0;display:grid}.dsh-tl-item:first-child{border-top:0}.dsh-tl-time{text-align:right;font-variant-numeric:tabular-nums;flex-direction:column;display:flex}.dsh-tl-time b{font-size:14px}.dsh-tl-time small{color:var(--text-muted);font-size:12px}.dsh-tl-body{border-left:3px solid var(--accent,var(--brand));min-width:0;padding-left:14px}.dsh-tl-title{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.dsh-tl-title b{font-size:14.5px}.dsh-tl-meta{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;display:block;overflow:hidden}.dsh-tl-item.is-done .dsh-tl-time,.dsh-tl-item.is-done .dsh-tl-title b{opacity:.6}.dsh-tl-item.is-live{background:linear-gradient(90deg,#f5f3ff 0%,#0000 70%);border-radius:10px}.dsh-tl-att{color:var(--text-muted);white-space:nowrap;font-size:12px;font-weight:600}.dsh-tl-att.ok{color:var(--success)}.dsh-pill{border-radius:999px;align-items:center;gap:5px;padding:1px 8px;font-size:11px;font-weight:700;display:inline-flex}.pill-live{color:#6d28d9;background:#ede9fe}.pill-live i{background:#7c3aed;border-radius:50%;width:6px;height:6px;animation:1.2s infinite pulse}.pill-done{color:#64748b;background:#f1f5f9}.pill-next{background:var(--brand-soft);color:var(--brand-dark)}.dsh-list{margin:0;padding:0;list-style:none}.dsh-list li{border-top:1px solid var(--border-light);align-items:center;gap:12px;padding:10px 0;display:flex}.dsh-list li:first-child{border-top:0;padding-top:2px}.dsh-list-main{flex-direction:column;flex:1;min-width:0;display:flex}.dsh-list-main b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dsh-list-main small{font-size:12.5px}.dsh-score{white-space:nowrap;color:var(--text-muted)}.dsh-score b{color:var(--text);font-size:15px}.dsh-quick-add{flex-wrap:wrap;gap:8px;display:flex}.dash-bday-calm{border-color:var(--border);background:#fff}.dsh-bday-upcoming{margin:8px 0 0;padding:0;list-style:none}.dsh-bday-upcoming li{border-top:1px solid #94a3b82e;justify-content:space-between;gap:12px;padding:6px 0;font-size:13px;display:flex}.dsh-bday-upcoming li:first-child{border-top:0}.dsh .dash-bday{margin-bottom:0}.dsh .dash-bday .dsh-card-head{margin-bottom:6px}.dsh .dash-bday-list{grid-template-columns:minmax(0,1fr)}.dsh-mobile-only{display:none}@media (width<=1200px){.dsh-layout{grid-template-columns:minmax(0,1fr)}}@media (width<=960px){.dsh-mobile-only{display:block}}@media (width<=640px){.dsh-hero{padding:18px}.dsh-hero h1{font-size:22px}.dsh-tl-item{grid-template-columns:48px minmax(0,1fr)}.dsh-tl-att,.dsh-tl-att-btn{grid-column:2;justify-self:start}.dsh-att-item{flex-wrap:wrap;row-gap:8px}.dsh-att-text{flex:calc(100% - 21px)}.dsh-att-item .btn{margin-left:21px}.dsh-card-head h3{flex:auto}.dsh-card-meta{flex-basis:100%;order:3}}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tb-page{flex-direction:column;gap:14px;display:flex}.tb-page>.page-head{margin-bottom:0}.tb-toolbar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.tb-select{width:auto;min-width:220px}.tb-sunday{align-items:center;padding:0}.tb-mode{margin-bottom:0}.tb-hint{margin:0}.tb-empty-cta{justify-content:center;padding-bottom:8px;display:flex}.tb-pill{white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:1px 8px;font-size:11px;font-weight:700;display:inline-flex}.tb-pill.pill-live{color:#6d28d9;background:#ede9fe}.tb-pill.pill-live i{background:#7c3aed;border-radius:50%;width:6px;height:6px;animation:1.2s infinite pulse}.tb-pill.pill-next{background:var(--brand-soft);color:var(--brand-dark)}.tb-pill.pill-done{color:#64748b;background:#f1f5f9}.tb-now{border:1px solid var(--border-light);border-left:4px solid var(--brand);background:#fff;border-radius:14px;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:12px 18px;display:flex;box-shadow:0 1px 3px #0f172a0a}.tb-now.is-live{background:linear-gradient(90deg,#f5f3ff 0%,#fff 65%);border-left-color:#7c3aed;box-shadow:0 2px 8px #7c3aed14}.tb-now.is-calm{background:#fafbfc;border-left-color:#94a3b8}.tb-now-main{flex-wrap:wrap;flex:1;align-items:baseline;gap:4px 10px;min-width:0;display:flex}.tb-now-main b{font-size:14.5px;font-weight:700}.tb-now-meta{color:var(--text-muted);font-size:13px}.tb-now-side{color:var(--brand-dark);font-size:13px;font-weight:600}.tb-grid-wrap{-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent;overflow-x:auto}.tb-grid-wrap::-webkit-scrollbar{height:6px}.tb-grid-wrap::-webkit-scrollbar-track{background:0 0}.tb-grid-wrap::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}.tb-grid-wrap::-webkit-scrollbar-thumb:hover{background:#94a3b8}.tb-grid{width:100%;min-width:calc(64px + var(--days) * 90px)}.tb-row{grid-template-columns:64px repeat(var(--days), minmax(0, 1fr));display:grid}.tb-row+.tb-row{border-top:1px solid var(--border-light)}.tb-head{z-index:2;border-bottom:1px solid var(--border);background:#f8fafc;position:sticky;top:0}.tb-corner,.tb-time{z-index:1;border-right:1px solid var(--border-light);box-sizing:border-box;background:#fff;position:sticky;left:0}.tb-head .tb-corner{background:#f8fafc}.tb-day{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-width:0;padding:10px 4px;display:flex}.tb-day b{white-space:nowrap;font-size:13px}.tb-day small{color:var(--text-muted);white-space:nowrap;font-size:11px}.tb-day.is-today{background:var(--brand-soft);box-shadow:inset 0 -2px 0 var(--brand)}.tb-day.is-today b,.tb-day.is-today small{color:var(--brand-dark);font-weight:700}.tb-time{font-variant-numeric:tabular-nums;flex-direction:column;justify-content:center;align-items:center;padding:8px 4px;display:flex}.tb-time b{font-size:12.5px}.tb-time small{color:var(--text-muted);font-size:11px}.tb-cell{box-sizing:border-box;flex-direction:column;gap:5px;min-width:0;min-height:64px;padding:5px;display:flex}.tb-cell.is-today{background:#eef2ff73}.tb-cell+.tb-cell{border-left:1px solid var(--border-light)}.tb-lecture{text-align:left;width:100%;font:inherit;color:var(--text);background:var(--c-bg);border:1px solid #0000;border-left:3px solid var(--c);transition:box-shadow var(--transition-fast), transform var(--transition-fast), border-color var(--transition-fast);box-sizing:border-box;border-radius:8px;flex-direction:column;gap:2px;min-width:0;padding:6px 8px;display:flex;overflow:hidden}.tb-lecture.is-editable{cursor:pointer}.tb-lecture.is-editable:hover{box-shadow:var(--shadow);border-color:color-mix(in srgb, var(--c) 30%, transparent);transform:translateY(-1px)}.tb-lecture:focus-visible,.tb-daylist-card:focus-visible,.tb-add:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.tb-lecture.is-live{box-shadow:0 0 0 2px #7c3aed}.tb-lecture.is-next{box-shadow:0 0 0 1px var(--brand)}.tb-lecture.is-done{opacity:.55}.tb-lecture-title{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}.tb-lecture-title b{color:var(--c-text,var(--text));text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:12.5px;font-weight:600;overflow:hidden}.tb-lecture-meta{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:11px;overflow:hidden}.tb-add{color:#0000;cursor:pointer;min-height:44px;transition:all var(--transition-fast);background:0 0;border:1px dashed #0000;border-radius:8px;flex:1;place-items:center;display:grid}.tb-cell:hover .tb-add,.tb-add:focus-visible{color:var(--brand);background:#fafaff;border-color:#c7d2fe}@media (hover:none){.tb-add{border-color:var(--border);color:#94a3b8}}.tb-dayview{flex-direction:column;gap:12px;display:flex}.tb-daytabs{scrollbar-width:none;gap:6px;margin:0;padding:2px 0 6px;display:flex;overflow-x:auto}.tb-daytabs::-webkit-scrollbar{display:none}.tb-daytab{min-width:44px;font:inherit;background:var(--card,#fff);border:1px solid var(--border-light,#e2e8f0);cursor:pointer;color:var(--text-muted);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;border-radius:12px;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:3px;padding:9px 4px;transition:all .15s;display:flex;position:relative;box-shadow:0 1px 2px #0f172a08}.tb-daytab-name{letter-spacing:-.01em;color:inherit;font-size:13px;font-weight:600;line-height:1.2}.tb-daytab:hover{color:var(--text);background:#f8faff;border-color:#c7d2fe}.tb-daytab.is-today{color:var(--brand);border-color:#c7d2fe}.tb-daytab.on{background:var(--brand,#4f46e5);border-color:var(--brand,#4f46e5);color:#fff;box-shadow:0 4px 12px #4f46e540}.tb-daytab.on .tb-daytab-name{color:#fff;font-weight:700}.tb-daytab-dot{opacity:.8;background:currentColor;border-radius:50%;width:4px;height:4px}.tb-today-tag{color:var(--brand);background:var(--brand-soft);border-radius:999px;margin-left:6px;padding:2px 7px;font-size:11px;font-weight:600}.tb-dayview-head{border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:10px;display:flex}.tb-dayview-head h3{align-items:center;margin:0;font-size:15px;font-weight:700;display:flex}.tb-daylist{margin:0;padding:0;list-style:none}.tb-daylist li{grid-template-columns:56px minmax(0,1fr);align-items:center;gap:12px;padding:6px 0;display:grid}.tb-daylist li+li{border-top:1px solid var(--border-light)}.tb-daylist li.is-done{opacity:.6}.tb-daylist-time{font-variant-numeric:tabular-nums;flex-direction:column;align-items:flex-start;line-height:1.25;display:flex}.tb-daylist-time b{color:var(--text);font-size:13px;font-weight:700}.tb-daylist-time small{color:var(--text-muted);font-size:11px}.tb-daylist-card{text-align:left;width:100%;font:inherit;color:var(--text);background:var(--c-bg);border:1px solid color-mix(in srgb, var(--c) 20%, transparent);border-left:4px solid var(--c);transition:all var(--transition-fast);border-radius:10px;flex-direction:column;gap:2px;padding:9px 12px;display:flex;box-shadow:0 1px 2px #0f172a05}.tb-daylist-card.is-editable{cursor:pointer}.tb-daylist-card.is-editable:hover{transform:translateY(-1px);box-shadow:0 3px 8px #0f172a0f}.tb-daylist li.is-live .tb-daylist-card{box-shadow:0 0 0 2px #7c3aed,0 3px 10px #7c3aed26}.tb-duration{color:var(--text-muted);margin-left:auto;font-size:11px;font-weight:500}.tb-dayview-add{justify-content:center;width:100%;margin-top:12px}.tb-toolbar{align-items:center;gap:10px;margin-bottom:12px;display:flex}.tb-toolbar-right{align-items:center;gap:8px;margin-left:auto;display:flex}.tb-select{border:1px solid var(--border);background:var(--card,#fff);color:var(--text);border-radius:9px;padding:7px 12px;font-size:13.5px;font-weight:600}.tb-download-btn{padding:6px 10px;font-size:12px}.tb-form-class{margin:0 0 12px}@media (width<=640px){.tb-toolbar{flex-wrap:nowrap;gap:8px}.tb-select{flex:1;min-width:0}.tb-toolbar .topbar-spacer{display:none}.tb-daytabs{gap:5px}.tb-daytab{min-width:0;padding:8px 2px}.tb-daytab-name{font-size:12px}}.student-tests-page{flex-direction:column;gap:20px;display:flex}.tests-loading-state{flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:60px 20px;display:flex}.tests-error-state{text-align:center;flex-direction:column;align-items:center;gap:12px;max-width:480px;margin:20px auto;padding:40px 24px;display:flex}.tests-error-icon{font-size:38px}.tests-empty-card{text-align:center;border-radius:var(--radius-lg);border:1px dashed var(--border);background:var(--card);max-width:520px;margin:30px auto;padding:50px 24px}.tests-empty-icon{margin-bottom:12px;font-size:44px}.test-cards-grid{grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:20px;display:grid}.modern-test-card{border:1px solid var(--border);transition:transform var(--transition-smooth), box-shadow var(--transition-smooth), border-color var(--transition-smooth);background:#fff;border-radius:14px;flex-direction:column;padding:20px;display:flex;box-shadow:0 2px 8px #0f172a0a}.modern-test-card:hover{border-color:#cbd5e1;transform:translateY(-2px);box-shadow:0 10px 22px #0f172a14}.modern-test-card.card-has-score{border-left:4px solid var(--brand)}.mtc-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.mtc-subject-chip{background:var(--brand-soft);color:var(--brand);letter-spacing:.02em;border-radius:6px;align-items:center;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.mtc-type-tag{border-radius:5px;padding:3px 8px;font-size:11.5px;font-weight:600}.mtc-type-tag.tag-online{color:#065f46;background:#ecfdf5}.mtc-type-tag.tag-offline{color:#475569;background:#f1f5f9}.mtc-body{flex-direction:column;flex:1;gap:10px;display:flex}.mtc-title{color:var(--text);margin:0;font-size:17px;font-weight:700;line-height:1.35}.mtc-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.mtc-meta b{color:var(--text)}.mtc-instructions{color:var(--text-muted);background:#f8fafc;border-radius:8px;margin:0;padding:8px 12px;font-size:12.5px;line-height:1.45}.mtc-dates{background:#f8fafc;border:1px solid #f1f5f9;border-radius:8px;flex-direction:column;gap:3px;padding:8px 12px;font-size:12px;display:flex}.mtc-date-item{color:var(--text)}.mtc-score-banner{background:linear-gradient(135deg,#f0fdf4 0%,#e0f2fe 100%);border:1px solid #bbf7d0;border-radius:10px;justify-content:space-between;align-items:center;margin-top:4px;padding:12px 14px;display:flex}.mtc-score-left{flex-direction:column;gap:2px;display:flex}.mtc-score-label{color:#166534;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.mtc-score-val{color:#15803d;font-size:24px;font-weight:800;line-height:1}.mtc-score-val small{color:#64748b;margin-left:2px;font-size:14px;font-weight:600}.mtc-pct-badge{border-radius:20px;padding:5px 10px;font-size:13px;font-weight:700}.mtc-pct-badge.pct-good{color:#15803d;background:#dcfce7}.mtc-pct-badge.pct-avg{color:#b45309;background:#fef3c7}.mtc-pct-badge.pct-low{color:#b91c1c;background:#fee2e2}.mtc-remarks{color:#334155;background:#fffbeb;border-left:3px solid #f59e0b;border-radius:4px;padding:8px 12px;font-size:12.5px}.mtc-footer{border-top:1px solid #f1f5f9;justify-content:space-between;align-items:center;gap:10px;margin-top:16px;padding-top:14px;display:flex}.mtc-status-col{align-items:center;display:flex}.status-pill{border-radius:12px;padding:4px 9px;font-size:11.5px;font-weight:600}.status-pill.status-open{color:var(--brand);background:#eef2ff}.status-pill.status-resume{color:#b45309;background:#fef3c7}.status-pill.status-upcoming{color:#64748b;background:#f1f5f9}.status-pill.status-submitted{color:#0369a1;background:#e0f2fe}.status-pill.status-closed{color:#94a3b8;background:#f8fafc}.status-pill.status-offline{color:#475569;background:#f1f5f9}.status-pill.status-result{color:#15803d;background:#dcfce7}.mtc-actions{align-items:center;gap:8px;display:flex}@media (width<=640px){.test-cards-grid{grid-template-columns:minmax(0,1fr)}.table-wrap .tests-table{min-width:0}.tests-table,.tests-table tbody{display:block}.tests-table thead{display:none}.tests-table tr{border-bottom:1px solid var(--border-light);grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:14px 16px;display:grid}.tests-table tr:last-child{border-bottom:0}.tests-table td{border:0;padding:0;display:block}.tests-table tbody tr:hover td{background:0 0}.tests-table .tt-title{grid-area:1/1;margin-bottom:4px}.tests-table .tt-actions{grid-area:1/2;align-self:start}.tests-table td[data-label],.tests-table .tt-status{grid-column:1/-1}.tests-table td[data-label]{padding-left:112px;font-size:13px;position:relative}.tests-table td[data-label]:before{content:attr(data-label);width:104px;color:var(--text-muted);font-size:12px;font-weight:600;position:absolute;top:1px;left:0}.tests-table .tt-status>div{flex-wrap:wrap;margin-top:4px;flex-direction:row!important}}.avatar-initials{color:#fff;background:var(--brand);-webkit-user-select:none;user-select:none;border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:inline-grid;box-shadow:inset 0 0 0 2px #ffffff40}.avatar-initials.role-student{background:linear-gradient(135deg,#6366f1,#818cf8)}.avatar-initials.role-teacher{background:linear-gradient(135deg,#0d9488,#2dd4bf)}.avatar-initials.role-coadmin{background:linear-gradient(135deg,#d97706,#fbbf24)}.avatar-initials.role-admin{background:linear-gradient(135deg,#db2777,#f472b6)}.avatar-initials.is-muted{background:#cbd5e1}.people-table td{vertical-align:middle}.people-table .col-avatar{width:56px;padding-right:0}.people-table .col-actions{white-space:nowrap;text-align:right;width:1%}.people-table tr.is-inactive .people-name b,.people-table tr.is-inactive .people-email{color:var(--text-muted)}.people-name{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.people-name .badge{text-transform:none;font-size:11px}.people-sub{color:var(--text-muted);font-size:12.5px;display:block}.people-email{word-break:break-all}.people-phone{white-space:nowrap;font-variant-numeric:tabular-nums}.row-icons{gap:6px;display:inline-flex}.icon-action{border:1px solid var(--border);color:#475569;cursor:pointer;width:34px;height:34px;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);background:#fff;border-radius:9px;place-items:center;display:inline-grid}.icon-action:hover{background:var(--brand-soft);color:var(--brand-dark);border-color:#c7d2fe}.icon-action[aria-expanded=true]{background:var(--brand-soft);color:var(--brand-dark);border-color:var(--brand)}.icon-action:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.icon-action.is-placeholder{opacity:.35;cursor:not-allowed}.icon-action.is-placeholder:hover{color:#475569;border-color:var(--border);background:#fff}.action-menu{z-index:70;border:1px solid var(--border);min-width:190px;box-shadow:var(--shadow-lg);background:#fff;border-radius:12px;padding:6px;animation:.12s ease-out fadeIn;position:fixed}.action-menu button{width:100%;font:inherit;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;padding:9px 12px;font-size:13.5px;font-weight:500;display:flex}.action-menu button svg{color:var(--text-muted)}.action-menu button:hover,.action-menu button:focus-visible{background:var(--brand-soft);color:var(--brand-dark);outline:none}.action-menu button:hover svg,.action-menu button:focus-visible svg{color:var(--brand-dark)}.action-menu button.danger,.action-menu button.danger svg{color:var(--danger)}.action-menu button.danger:hover,.action-menu button.danger:focus-visible{background:var(--danger-soft);color:#be123c}.person-details{flex-direction:column;gap:16px;display:flex}.person-details-head{background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border:1px solid #e2e8f0;border-radius:16px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;display:flex;box-shadow:0 2px 8px -2px #0f172a0d}.person-details-user{flex:1;align-items:center;gap:16px;min-width:0;display:flex}.person-details-meta{min-width:0}.person-details-meta h3{color:#0f172a;letter-spacing:-.015em;text-overflow:ellipsis;white-space:nowrap;margin:0 0 3px;font-size:18px;font-weight:700;overflow:hidden}.person-details-meta p{color:#64748b;margin:0;font-size:13px;font-weight:500}.person-details-action{flex-shrink:0}.person-details-list{background:#fff;border:1px solid #e2e8f0;border-radius:16px;margin:0;overflow:hidden;box-shadow:0 2px 8px -2px #0f172a0a}.person-details-list>div{border-bottom:1px solid #f1f5f9;grid-template-columns:140px minmax(0,1fr);align-items:center;gap:16px;padding:13px 20px;transition:background .15s;display:grid}.person-details-list>div:last-child{border-bottom:none}.person-details-list>div:hover{background:#f8fafc}.person-details-list dt{color:#64748b;letter-spacing:-.01em;font-size:13px;font-weight:600}.person-details-list dd{color:#0f172a;overflow-wrap:anywhere;margin:0;font-size:13.5px;font-weight:500}.person-details-list a{color:#4f46e5;font-weight:600;text-decoration:none;transition:color .15s}.person-details-list a:hover{color:#3730a3;text-decoration:underline}.dob-missing{color:#b45309;background:#fffbeb;border:1px solid #fde68a;border-radius:999px;align-items:center;padding:2px 10px;font-size:12px;font-weight:600;display:inline-flex}.tag-list{flex-wrap:wrap;gap:6px;display:flex}@media (width<=640px){.people-table .people-email,.people-table th:nth-child(3){display:none}.person-details-list>div{grid-template-columns:minmax(0,1fr);gap:4px;padding:10px 16px}.person-details-head{flex-direction:column;align-items:flex-start}}.confirm-check{border:1.5px solid var(--border);color:#334155;cursor:pointer;-webkit-user-select:none;user-select:none;background:#f8fafc;border-radius:12px;align-items:center;gap:12px;margin-top:16px;padding:12px 14px;font-size:13.5px;font-weight:500;transition:all .18s cubic-bezier(.4,0,.2,1);display:flex;box-shadow:0 1px 2px #0f172a0a}.confirm-check:hover{background:#f1f5f9;border-color:#c7d2fe}.confirm-check.on{border-color:var(--tone,var(--brand));background:var(--tone-soft,#eef2ff);color:#1e1b4b;box-shadow:0 2px 8px -2px #4f46e526}.confirm-check.on:hover{border-color:var(--tone,var(--brand));background:#e0e7ff}.confirm-check:hover input[type=checkbox]:not(:checked):not(:disabled){border-color:var(--tone,var(--brand,#4f46e5));background-color:#f8fafc}.confirm-check:hover input[type=checkbox]:checked:not(:disabled){background-color:var(--tone-dark,var(--brand-dark,#3730a3))!important;border-color:var(--tone-dark,var(--brand-dark,#3730a3))!important}.confirm-check input[type=checkbox]{border-width:1.8px;border-radius:6px;flex-shrink:0;width:20px;height:20px;margin:0}.confirm-check span{flex:1;line-height:1.35}.people-count-bar{border-bottom:1px solid var(--border-light);color:var(--text-muted);border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);background:#f8fafc;justify-content:space-between;align-items:center;padding:9px 16px;font-size:12px;font-weight:600;display:flex}.people-filter-tag{background:var(--brand-soft);color:var(--brand-dark);border-radius:999px;padding:1px 7px;font-size:11px;font-weight:700}.people-mobile-list{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);background:#f8fafc;flex-direction:column;gap:10px;padding:12px;display:flex}.person-card-mobile{border:1px solid var(--border);background:#fff;border-radius:14px;flex-direction:column;gap:10px;padding:13px 14px;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex;box-shadow:0 1px 3px #0f172a0a}.person-card-mobile:active{background:#fafafa}.person-card-mobile.is-inactive{opacity:.8;background:#f8fafc;border-style:dashed}.pcm-top{align-items:center;gap:11px;display:flex}.pcm-avatar-wrap{flex-shrink:0}.pcm-identity{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.pcm-name-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.pcm-name{color:#0f172a;word-break:break-word;font-size:15px;font-weight:700;line-height:1.25}.pcm-badges{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.pcm-pill{border-radius:6px;align-items:center;padding:2px 7px;font-size:11.5px;font-weight:600;line-height:1.3;display:inline-flex}.pcm-pill-roll{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0}.pcm-pill-class{color:#4338ca;background:#eef2ff;border:1px solid #c7d2fe}.pcm-pill-desig{color:#0f766e;background:#f0fdfa;border:1px solid #99f6e4}.pcm-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.icon-action-sm{border-radius:9px;width:34px;height:34px}.icon-action-sm svg{width:16px;height:16px}.pcm-contact{border-top:1px solid var(--border-light);flex-wrap:wrap;align-items:center;gap:8px;padding-top:8px;display:flex}.pcm-contact-chip{border:1px solid var(--border);color:#334155;background:#f8fafc;border-radius:8px;align-items:center;gap:6px;max-width:100%;padding:6px 10px;font-size:12.5px;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.pcm-contact-chip:hover,.pcm-contact-chip:active{background:#f1f5f9;border-color:#cbd5e1}.pcm-chip-phone{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.pcm-chip-phone:hover,.pcm-chip-phone:active{background:#d1fae5}.pcm-chip-phone svg{color:#059669}.pcm-chip-email{color:#3730a3;background:#eef2ff;border-color:#c7d2fe;flex:auto;min-width:0}.pcm-chip-email:hover,.pcm-chip-email:active{background:#e0e7ff}.pcm-chip-email svg{color:#4f46e5;flex-shrink:0}.pcm-contact-chip svg{flex-shrink:0;width:13px;height:13px}.pcm-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pcm-chip-empty{color:#94a3b8;font-size:12px;font-style:italic}.pcm-parent-row{color:#92400e;background:#fffbeb;border:1px solid #fef3c7;border-radius:7px;align-items:center;gap:6px;padding:5px 9px;font-size:12px;display:flex}.pcm-parent-label{text-transform:uppercase;letter-spacing:.05em;color:#b45309;font-size:10px;font-weight:700}.pcm-parent-link{color:#92400e;text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;text-decoration:none;display:inline-flex;overflow:hidden}.pcm-parent-link svg{flex-shrink:0;width:12px;height:12px}.pcm-parent-link:hover{text-decoration:underline}.my-att-mobile-list{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);background:#f8fafc;flex-direction:column;gap:10px;padding:12px;display:flex}.my-att-card{border:1px solid var(--border);border-left:4.5px solid var(--border);background:#fff;border-radius:12px;flex-direction:column;gap:8px;padding:12px 14px;display:flex;box-shadow:0 1px 2px #0f172a0a}.my-att-card.status-p{border-left-color:#10b981}.my-att-card.status-a{border-left-color:#ef4444}.my-att-card.status-l{border-left-color:#f59e0b}.my-att-card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.my-att-date-col{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.my-att-date{color:#0f172a;font-size:13.5px;font-weight:700}.my-att-time{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:11.5px}.my-att-badge{font-size:11px}.my-att-card-body{flex-direction:column;gap:4px;display:flex}.my-att-subject{color:#1e293b;font-size:14px;font-weight:600}.my-att-meta-row{color:var(--text-muted);align-items:center;gap:12px;font-size:12px;display:flex}.my-att-room{color:#475569;background:#f1f5f9;border-radius:4px;padding:1px 6px;font-weight:500}.btn-icon{justify-content:center;align-items:center;min-width:32px;line-height:1;padding:6px 9px!important;display:inline-flex!important}.btn-icon svg{margin:0!important}.btn-trash-action{width:28px;height:28px;color:var(--danger);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.btn-trash-action:hover{background:var(--danger-soft);color:#be123c;border-color:#fda4af}.btn-trash-action:focus-visible{outline:2px solid var(--danger);outline-offset:1px}.btn-trash-action svg{flex-shrink:0}.tb-agenda{flex-direction:column;gap:10px;display:flex}.tb-agenda-day{margin:0;padding:14px 14px 10px}.tb-agenda-day.is-today{box-shadow:0 0 0 1px #a5b4fc, var(--shadow-sm);border-color:#a5b4fc}.tb-agenda-day.is-empty{box-shadow:none;background:#fbfcfe;padding:10px 14px}.tb-agenda-head{align-items:center;gap:8px;min-height:34px;display:flex}.tb-agenda-date{align-items:baseline;gap:8px;display:flex}.tb-agenda-date b{font-size:15px}.tb-agenda-date small{color:var(--text-muted);font-size:12.5px}.tb-agenda-day.is-empty .tb-agenda-date b{color:var(--text-muted);font-size:14px;font-weight:600}.tb-agenda-count{color:var(--text-muted);margin-left:auto;font-size:12px;font-weight:600}.tb-agenda-day.is-empty .tb-agenda-count{color:#94a3b8;font-weight:500}.tb-agenda-add{border-radius:8px;width:30px;height:30px}.tb-agenda-day .tb-daylist{border-top:1px solid var(--border-light);margin-top:8px;padding-top:4px}@media (width<=640px){.tb-page{gap:12px}.tb-page .page-head h1{font-size:22px}.tb-daylist li{grid-template-columns:46px minmax(0,1fr);gap:10px}.tb-daylist-time b{font-size:13px}.tb-daylist-card{padding:9px 12px}.tb-now{padding:10px 12px}.tb-now-main b{font-size:14px}}.avatar-initials.has-photo{background:#e2e8f0;overflow:hidden}.avatar-initials img{object-fit:cover;border-radius:50%;width:100%;height:100%;display:block}.account-photo-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;align-items:center;gap:18px;margin-bottom:20px;padding:16px 20px;display:flex}.account-photo-meta{min-width:0}@media (width<=380px){.account-photo-card{gap:12px;padding:14px}}.account-photo-meta h4{color:#0f172a;margin:0 0 3px;font-size:16px;font-weight:700}.account-photo-meta p{margin:0}.photo-picker{flex-wrap:wrap;gap:8px;display:flex}.cropper{flex-direction:column;align-items:center;gap:14px;display:flex}.cropper-view{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:#0f172a;border-radius:16px;max-width:100%;position:relative;overflow:hidden}.cropper-view:active{cursor:grabbing}.cropper-view:focus-visible{outline:3px solid var(--brand);outline-offset:3px}.cropper-view img{pointer-events:none;max-width:none;position:absolute;top:50%;left:50%}.cropper-ring{pointer-events:none;border:2px solid #ffffffe6;border-radius:20%;position:absolute;inset:0;box-shadow:0 0 0 999px #0f172a8c}.cropper-zoom{width:min(280px,100%);color:var(--text-muted);align-items:center;gap:12px;font-size:13px;font-weight:600;display:flex}.cropper-zoom input{accent-color:var(--brand);background:0 0;border:0;flex:1;padding:0}.cropper-tip{text-align:center;max-width:300px;margin:0}.idc-page{flex-direction:column;gap:18px;display:flex}.idc-layout{justify-content:center;align-items:center;padding:8px 0 24px;display:flex}.idc-stage{z-index:0;isolation:isolate;background:radial-gradient(circle at 20% 10%,#6366f124,#0000 55%),radial-gradient(circle at 90% 90%,#ec48991a,#0000 50%),linear-gradient(#f8fafc,#eef2ff);border:1px solid #e0e7ff;border-radius:24px;flex-direction:column;align-items:center;gap:12px;padding:28px 32px 16px;display:flex;position:relative}.idc-tip{margin:0}.idc-flip{aspect-ratio:54/85.6;perspective:1600px;cursor:pointer;border-radius:4.5%/2.8%;width:min(330px,78vw)}.idc-flip:focus-visible{outline:3px solid var(--brand);outline-offset:6px}.idc-flip-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.2,.8,.2,1);display:block;position:relative}.idc-flip.is-flipped .idc-flip-inner{transform:rotateY(180deg)}@media (hover:hover) and (pointer:fine){.idc-flip:hover .idc-flip-inner{transform:rotateY(-4deg)rotateX(2deg)}.idc-flip.is-flipped:hover .idc-flip-inner{transform:rotateY(184deg)rotateX(2deg)}}.idc-flip .idc-face{backface-visibility:hidden;position:absolute;inset:0}.idc-flip .idc-back{transform:rotateY(180deg)}@media (prefers-reduced-motion:reduce){.idc-flip-inner,.idc-flip:hover .idc-flip-inner{transition:none}}.idc-face{--c1:#3730a3;--c2:#6366f1;--c3:#a5b4fc;--c-soft:#eef2ff;--c-ink:#312e81;aspect-ratio:54/85.6;color:#0f172a;text-align:center;background:#fff;border:1px solid #0f172a14;border-radius:4.5%/2.8%;flex-direction:column;align-items:center;width:100%;font-size:4cqw;line-height:1.25;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 1px #0f172a0a,0 10px 20px -8px #0f172a2e,0 30px 60px -24px #312e8159;container-type:inline-size}.idc-face.role-teacher{--c1:#115e59;--c2:#14b8a6;--c3:#99f6e4;--c-soft:#f0fdfa;--c-ink:#134e4a}.idc-face.role-coadmin{--c1:#9a3412;--c2:#f59e0b;--c3:#fde68a;--c-soft:#fffbeb;--c-ink:#7c2d12}.idc-face.role-admin{--c1:#9d174d;--c2:#ec4899;--c3:#fbcfe8;--c-soft:#fdf2f8;--c-ink:#831843}.idc-pattern{pointer-events:none;opacity:.55;background:repeating-radial-gradient(circle at 110% 115%, transparent 0 2.2cqw, color-mix(in srgb, var(--c2) 9%, transparent) 2.2cqw 2.45cqw), repeating-radial-gradient(circle at -10% 60%, transparent 0 3cqw, color-mix(in srgb, var(--c2) 6%, transparent) 3cqw 3.2cqw);position:absolute;inset:0}.idc-watermark{color:var(--c2);opacity:.045;pointer-events:none;font-size:78cqw;font-weight:900;line-height:1;position:absolute;bottom:14cqw;left:50%;transform:translate(-50%)}.idc-face>:not(.idc-pattern):not(.idc-watermark){position:relative}.idc-head{color:#fff;text-align:left;background:radial-gradient(circle at 85% -20%, #ffffff47, transparent 45%), radial-gradient(circle at 0% 120%, #ffffff1f, transparent 50%), linear-gradient(135deg, var(--c1) 0%, var(--c2) 100%);border-radius:0 0 50% 50%/0 0 18cqw 18cqw;align-items:center;gap:3cqw;width:100%;padding:5cqw 5cqw 21cqw;display:flex}.idc-logo{width:11cqw;height:11cqw;color:var(--c1);background:#fff;border-radius:3cqw;flex-shrink:0;place-items:center;font-size:6cqw;font-weight:900;display:grid;overflow:hidden;box-shadow:0 0 0 .8cqw #ffffff47}.idc-logo img{object-fit:contain;box-sizing:border-box;border-radius:2.5cqw;width:100%;height:100%;padding:1cqw}.idc-inst{flex-direction:column;flex:1;min-width:0;display:flex}.idc-inst b{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:4.5cqw;font-weight:800;line-height:1.15;display:-webkit-box;overflow:hidden}.idc-inst small{opacity:.85;letter-spacing:.03em;margin-top:.6cqw;font-size:2.8cqw}.idc-type{letter-spacing:.14em;text-transform:uppercase;background:#ffffff2e;border:1px solid #ffffff59;border-radius:999px;flex-shrink:0;align-self:flex-start;padding:1cqw 2.6cqw;font-size:2.5cqw;font-weight:800}.idc-photo{background:#fff;border-radius:7cqw;flex-shrink:0;width:32cqw;height:32cqw;margin-top:-17cqw;padding:1.2cqw;box-shadow:0 2cqw 5cqw -1cqw #0f172a47}.idc-photo img,.idc-photo span{object-fit:cover;border-radius:6cqw;place-items:center;width:100%;height:100%;display:grid}.idc-photo span{background:linear-gradient(135deg, var(--c-soft), #fff);color:var(--c-ink);border:1px solid color-mix(in srgb, var(--c2) 25%, transparent);font-size:11cqw;font-weight:800}.idc-name{letter-spacing:-.01em;margin-top:3.2cqw;padding:0 6cqw;font-size:6.6cqw;font-weight:800;line-height:1.12}.idc-role{background:var(--c-soft);color:var(--c-ink);letter-spacing:.1em;text-transform:uppercase;border-radius:999px;margin-top:1.6cqw;padding:.9cqw 3.2cqw;font-size:2.8cqw;font-weight:800}.idc-id{align-items:baseline;gap:2cqw;margin-top:3cqw;display:flex}.idc-id small{color:#64748b;text-transform:uppercase;letter-spacing:.08em;font-size:2.7cqw;font-weight:700}.idc-id b{letter-spacing:.06em;color:var(--c-ink);font-family:SFMono-Regular,Consolas,monospace;font-size:3.9cqw}.idc-rows{text-align:left;width:84%;margin:2.6cqw 0 0}.idc-rows>div{justify-content:space-between;align-items:baseline;gap:3cqw;padding:1.4cqw 0;display:flex}.idc-rows>div+div{border-top:1px dashed #e2e8f0}.idc-rows dt{color:#64748b;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;font-size:2.8cqw;font-weight:700}.idc-rows dd{text-align:right;overflow-wrap:anywhere;margin:0;font-size:3.5cqw;font-weight:700}.idc-bottom{align-items:center;gap:3cqw;width:88%;margin-top:auto;padding:2.4cqw 0 3cqw;display:flex}.idc-code{background:#fff;border:1px solid #eef2f7;border-radius:2cqw;flex:1;min-width:0;padding:1.6cqw 2cqw}.idc-barcode{fill:#0f172a;width:100%;height:8cqw;display:block}.idc-valid{background:linear-gradient(135deg, var(--c1), var(--c2));color:#fff;border-radius:2cqw;flex-direction:column;flex-shrink:0;align-items:center;padding:1.4cqw 2.4cqw;display:flex}.idc-valid small{text-transform:uppercase;letter-spacing:.12em;opacity:.85;font-size:2.2cqw;font-weight:700}.idc-valid b{font-size:3.3cqw;font-weight:800}.idc-foot{background:linear-gradient(90deg, var(--c1), var(--c2), var(--c3), #a5f3fc, var(--c2), var(--c1));flex-shrink:0;width:100%;height:2.6cqw}.idc-back{justify-content:flex-start}.idc-stripe{background:linear-gradient(#334155,#0f172a 60%,#1e293b);flex-shrink:0;width:100%;height:12cqw;margin-top:8cqw}.idc-back-body{flex-direction:column;flex:1;align-items:center;width:100%;padding:4.5cqw 6.5cqw 2.5cqw;display:flex}.idc-back-body h4{color:var(--c-ink);margin:0;font-size:4.8cqw;font-weight:800}.idc-address{color:#475569;margin:1.2cqw 0 0;font-size:2.9cqw;line-height:1.4}.idc-contacts{text-align:left;width:100%;margin:3cqw 0 0}.idc-contacts>div{grid-template-columns:16cqw 1fr;gap:2cqw;padding:.9cqw 0;display:grid}.idc-contacts>div+div{border-top:1px dashed #e2e8f0}.idc-contacts dt{color:#64748b;text-transform:uppercase;letter-spacing:.06em;font-size:2.6cqw;font-weight:700}.idc-contacts dd{overflow-wrap:anywhere;margin:0;font-size:3.1cqw;font-weight:600}.idc-holder{background:var(--c-soft);text-align:left;border-radius:2.4cqw;flex-direction:column;gap:.4cqw;width:100%;margin-top:3cqw;padding:2.4cqw 3cqw;display:flex}.idc-holder small{color:var(--c-ink);text-transform:uppercase;letter-spacing:.1em;font-size:2.4cqw;font-weight:800}.idc-holder b{font-size:3.5cqw}.idc-holder span{color:#475569;overflow-wrap:anywhere;font-size:2.8cqw}.idc-note{color:#64748b;border:1px dashed #cbd5e1;border-radius:2.4cqw;margin:3cqw 0 0;padding:2cqw 2.6cqw;font-size:2.7cqw;line-height:1.45}.idc-sign-row{justify-content:center;width:100%;margin-top:auto;padding-top:3cqw;display:flex}.idc-qr-box{flex-direction:column;align-items:center;gap:1cqw;display:flex}.idc-qr-code{box-sizing:border-box;background:#fff;border:1px solid #0f172a1f;border-radius:2.8cqw;justify-content:center;align-items:center;width:32cqw;height:32cqw;padding:1.4cqw;display:flex;overflow:hidden;box-shadow:0 2px 8px #0f172a14}.idc-qr-code svg{width:100%;height:100%;display:block}.idc-qr-label{letter-spacing:.08em;color:#475569;text-transform:uppercase;font-size:2.4cqw;font-weight:800}.idc-issued{color:#94a3b8;margin-top:2.4cqw;font-size:2.4cqw}.idc-info{margin:0}.idc-info h3{margin-bottom:10px}.idc-info ul{margin:0 0 12px;padding:0;list-style:none}.idc-info li{border-top:1px solid var(--border-light);justify-content:space-between;gap:12px;padding:8px 0;font-size:13.5px;display:flex}.idc-info li:first-child{border-top:0}.idc-info li span{font-family:SFMono-Regular,Consolas,monospace;font-size:13px}.idc-info p{margin:0 0 8px}.idc-info-sub{border-top:1px solid var(--border-light);margin-top:4px;padding-top:16px}.idc-photo-row{align-items:center;gap:14px;margin-bottom:18px;display:flex}.idc-photo-row p{margin:8px 0 0}.idc-photo-thumb{background:var(--brand-soft);width:64px;height:64px;color:var(--brand-dark);border:2px solid #fff;border-radius:16px;flex-shrink:0;place-items:center;font-size:20px;font-weight:800;display:grid;overflow:hidden;box-shadow:0 0 0 2px #c7d2fe}.idc-photo-thumb img{object-fit:cover;width:100%;height:100%}.idc-print{display:none}@media print{@page{size:A4;margin:12mm}body *{visibility:hidden!important}.idc-print,.idc-print *{visibility:visible!important}.idc-print{gap:8mm;position:fixed;top:0;left:0;display:flex!important}.idc-print .idc-face{width:54mm;box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact;border:.3mm solid #cbd5e1}}@media (width<=960px){.idc-layout{grid-template-columns:minmax(0,1fr);justify-items:center;gap:18px}.idc-stage{width:100%;padding:22px 12px 12px}.idc-info{width:min(360px,100%)}}@media (width<=640px){.idc-layout{padding:0 0 16px}.idc-stage{border-radius:18px;padding:16px 12px 12px;overflow:hidden}.idc-flip{width:min(340px,100%)}.idc-tip{text-align:center}.idc-page .page-actions{grid-template-columns:1fr 1fr;display:grid}.idc-page .page-actions>:first-child{grid-column:1/-1}.idc-page .page-actions .btn{white-space:normal;line-height:1.2}}.avatar.has-photo{background:#e2e8f0;overflow:hidden}.avatar img{object-fit:cover;border-radius:50%;width:100%;height:100%;display:block}@media (width<=960px){.sidebar{z-index:40;transition:transform var(--transition-smooth);box-shadow:var(--shadow-lg);position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.open{transform:none}.scrim{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:30;background:#0f172a80;display:block;position:fixed;inset:0}.menu-btn{display:inline-grid}.topbar-brand{display:inline-flex}.topbar{gap:8px;height:58px;padding:0 16px}.content{padding:18px 16px calc(24px + env(safe-area-inset-bottom))}.grid-2{grid-template-columns:minmax(0,1fr)}}@media (width<=768px){.desktop-only{display:none!important}.page-head{flex-direction:column;align-items:stretch;gap:12px}.page-actions{flex-direction:row;gap:8px;width:100%}.page-actions .btn{flex:1 1 0;width:auto;min-width:0;padding:9px 12px;font-size:13px}}@media (width>=769px){.mobile-only{display:none!important}}@media (width<=640px){.row-2,.row-3,.perm-grid{grid-template-columns:minmax(0,1fr)}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}.stat{padding:12px 14px}.stat b{font-size:20px}.stat span{font-size:11.5px}.filters{flex-direction:column;align-items:stretch;gap:8px;margin-bottom:14px}.filters input[type=search],.filters select{width:100%;min-width:0;max-width:none;min-height:44px}.tabs{width:100%;display:flex}.tabs button{text-align:center;flex:1 1 0;justify-content:center;min-height:38px;padding:7px 10px}.modal-backdrop,.confirm-backdrop{padding:12px}.modal{border-radius:14px;max-height:calc(100dvh - 24px)}.modal-head{padding:14px 16px}.modal-body{padding:16px}.modal-actions{flex-direction:column-reverse;align-items:stretch;gap:8px}.modal-actions .btn{width:100%;min-height:44px;font-size:14px}}@media (pointer:coarse){input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select,select.status-select,textarea{font-size:16px}.btn-sm{min-height:38px}.icon-action,.icon-action-sm{width:40px;height:40px}.btn-trash-action{width:38px;height:38px}.tabs button{min-height:38px}.seg button{min-height:40px}.popover-item{padding:11px 12px}.action-menu button{padding:12px}}@media (hover:none){.stat:hover,.task:hover,.task-card:hover,.modern-test-card:hover,.student-portal-card:hover,.feature:hover,.lecture-card:hover:not(:disabled),.app-tile:hover .app-icon{transform:none}}.settings-v2-container{flex-direction:column;gap:28px;max-width:1040px;margin:0 auto;display:flex}.settings-nav-pill-group{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:14px;align-items:center;gap:6px;width:fit-content;padding:5px;display:inline-flex;box-shadow:inset 0 1px 2px #0f172a0a}.settings-nav-btn{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:9px 18px;font-size:13.5px;font-weight:600;text-decoration:none;transition:all .2s cubic-bezier(.16,1,.3,1);display:inline-flex}.settings-nav-btn:hover:not(.active){color:#0f172a;background:#fff9}.settings-nav-btn.active{color:#4f46e5;background:#fff;box-shadow:0 2px 6px -1px #0f172a14,0 1px 3px #0f172a0a}.settings-v2-card{background:#fff;border:1px solid #e2e8f0;border-radius:18px;transition:box-shadow .2s,border-color .2s;overflow:hidden;box-shadow:0 4px 12px -2px #0f172a0d,0 1px 3px #0f172a08}.settings-v2-card:hover{border-color:#cbd5e1;box-shadow:0 8px 20px -4px #0f172a12}.settings-v2-head{background:#fff;border-bottom:1px solid #f1f5f9;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:22px 28px;display:flex}.settings-v2-title-box{align-items:center;gap:16px;display:flex}.settings-v2-icon{color:#fff;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex;box-shadow:0 4px 10px #0000001f}.settings-v2-icon.brand{background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%)}.settings-v2-icon.emerald{background:linear-gradient(135deg,#059669 0%,#10b981 100%)}.settings-v2-title{color:#0f172a;letter-spacing:-.015em;margin:0;font-size:17px;font-weight:700}.settings-v2-sub{color:#64748b;margin:3px 0 0;font-size:13px;line-height:1.4}.settings-v2-body{flex-direction:column;gap:20px;padding:28px;display:flex}.settings-v2-footer{background:#f8fafc;border-top:1px solid #f1f5f9;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:18px 28px;display:flex}.settings-code-chip{color:#334155;-webkit-user-select:all;user-select:all;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12.5px;font-weight:600;transition:all .15s;display:inline-flex}.settings-code-chip:hover{background:#e2e8f0;border-color:#cbd5e1}.smtp-overview-card{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:14px;flex-direction:column;gap:18px;padding:20px;display:flex}.smtp-status-banner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;display:flex}.smtp-status-title{color:#166534;align-items:center;gap:10px;font-size:14.5px;font-weight:700;display:flex}.smtp-pulse-dot{background:#16a34a;border-radius:50%;width:9px;height:9px;display:inline-block;box-shadow:0 0 0 3px #16a34a40}.smtp-grid-stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.smtp-stat-chip{background:#fff;border:1px solid #dcfce7;border-radius:11px;flex-direction:column;gap:3px;padding:12px 14px;display:flex;box-shadow:0 1px 2px #00000005}.smtp-stat-chip .stat-label{text-transform:uppercase;letter-spacing:.04em;color:#64748b;font-size:11px;font-weight:700}.smtp-stat-chip .stat-val{color:#0f172a;white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:600;overflow:hidden}.smtp-stat-chip .stat-sub{color:#64748b;font-size:11.5px}.smtp-security-callout{color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;align-items:flex-start;gap:12px;padding:14px 16px;font-size:13px;line-height:1.5;display:flex}.smtp-security-callout svg{color:#6366f1;flex-shrink:0;margin-top:2px}@media (width<=640px){.settings-v2-head{padding:18px 20px}.settings-v2-body{padding:20px}.settings-v2-footer{padding:16px 20px}.smtp-grid-stats{grid-template-columns:1fr}}.bill-page{flex-direction:column;gap:20px;display:flex}.bill-status{border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--card);align-items:center;gap:14px;padding:14px 18px;display:flex}.bill-status>div{flex-direction:column;gap:2px;display:flex}.bill-status b{font-size:15px}.bill-status span:not(.bill-status-dot){color:var(--text-muted);font-size:13.5px}.bill-status-dot{background:#94a3b8;border-radius:50%;flex-shrink:0;width:10px;height:10px}.bill-status.is-active{background:var(--success-soft);border-color:var(--success-border)}.bill-status.is-active .bill-status-dot{background:var(--success);box-shadow:0 0 0 4px #0596692e}.bill-status.is-trial{background:var(--brand-soft);border-color:#c7d2fe}.bill-status.is-trial .bill-status-dot{background:var(--brand);box-shadow:0 0 0 4px var(--brand-glow)}.bill-status.is-expired{background:var(--danger-soft);border-color:var(--danger-border)}.bill-status.is-expired .bill-status-dot{background:var(--danger)}.plan-banner{border-radius:var(--radius);background:var(--brand-soft);color:var(--brand-dark);border:1px solid #c7d2fe;justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px;padding:11px 16px;font-size:13.5px;display:flex}.plan-banner.is-urgent{border-color:var(--warn-border);background:var(--warn-soft);color:#92400e}.plan-banner .btn{flex-shrink:0;text-decoration:none}.plan-lock{background:radial-gradient(circle at 15% 10%, #6366f124, transparent 50%), radial-gradient(circle at 90% 90%, #ec48991a, transparent 45%), var(--bg);place-items:center;min-height:100%;padding:24px 16px;display:grid}.plan-lock-card{background:var(--card);border:1px solid var(--border);width:min(440px,100%);box-shadow:var(--shadow-lg);text-align:center;border-radius:22px;flex-direction:column;align-items:center;gap:14px;padding:32px 28px;display:flex}.plan-lock-icon{background:var(--danger-soft);width:64px;height:64px;color:var(--danger);border:1px solid var(--danger-border);border-radius:20px;place-items:center;margin-top:8px;display:grid}.plan-lock-card h1{letter-spacing:-.02em;margin:0;font-size:22px}.plan-lock-card p{color:var(--text-muted);margin:0;font-size:14.5px;line-height:1.55}.plan-lock-actions{flex-direction:column;gap:10px;width:100%;margin-top:6px;display:flex}.plan-lock-actions .btn{justify-content:center;text-decoration:none}@media (width<=640px){.plan-banner{flex-direction:column;align-items:stretch}}.bill-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:stretch;gap:20px;display:grid}.bill-plan{isolation:isolate;color:#e0e7ff;background:radial-gradient(circle at 100% 0,#818cf859,#0000 45%),radial-gradient(circle at 0 100%,#ec489938,#0000 50%),linear-gradient(160deg,#1e1b4b 0%,#312e81 55%,#3730a3 100%);border-radius:22px;flex-direction:column;gap:22px;padding:30px;display:flex;position:relative;overflow:hidden;box-shadow:0 24px 50px -20px #312e8199}.bill-glow{z-index:-1;background:radial-gradient(circle,#a5b4fc66,#ec48991f 45%,#0000 70%);border-radius:50%;width:320px;height:320px;position:absolute;top:-40%;right:-20%}.bill-chip{color:#fff;letter-spacing:.08em;text-transform:uppercase;background:linear-gradient(135deg,#f59e0b,#ec4899);border-radius:999px;padding:5px 12px;font-size:11.5px;font-weight:800;display:inline-block;box-shadow:0 6px 16px -6px #ec4899b3}.bill-plan-top h2{color:#fff;letter-spacing:-.02em;margin:14px 0 6px;font-size:26px;font-weight:800}.bill-plan-top p{color:#c7d2fe;margin:0;font-size:14.5px}.bill-price{flex-direction:column;gap:2px;display:flex}.bill-price-old{color:#a5b4fc;font-size:22px;font-weight:700;text-decoration-color:#f472b6;text-decoration-thickness:2.5px}.bill-price-now{align-items:flex-end;gap:12px;display:flex}.bill-price-now b{letter-spacing:-.04em;background:linear-gradient(135deg,#fff 30%,#c7d2fe);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:58px;font-weight:900;line-height:1}.bill-price-now span{color:#c7d2fe;padding-bottom:6px;font-size:13px;font-weight:600;line-height:1.3}.bill-features{border-top:1px solid #c7d2fe2e;gap:11px;margin:0;padding:20px 0 0;list-style:none;display:grid}.bill-features li{color:#eef2ff;align-items:center;gap:10px;font-size:14.5px;display:flex}.bill-tick{color:#6ee7b7;background:#34d3992e;border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;display:inline-grid}.bill-checkout{border-radius:22px;flex-direction:column;display:flex}.bill-checkout h3{margin:0 0 4px;font-size:19px;font-weight:800}.bill-checkout>p.small{margin:0 0 18px}.bill-seats-label{margin-bottom:8px;font-size:13px;font-weight:700}.bill-stepper{border:1px solid var(--border);border-radius:var(--radius);background:#fff;grid-template-columns:48px minmax(0,1fr) 48px;display:grid;overflow:hidden}.bill-stepper:focus-within{border-color:var(--brand-light);box-shadow:0 0 0 3px var(--brand-glow)}.bill-stepper button{background:var(--brand-soft);color:var(--brand-dark);cursor:pointer;border:0;font-size:22px;font-weight:700}.bill-stepper button:hover:not(:disabled){background:#e0e7ff}.bill-stepper button:disabled{opacity:.4;cursor:not-allowed}.bill-stepper input{text-align:center;appearance:textfield;border:0;border-radius:0;width:100%;min-width:0;padding:10px 6px;font-size:20px;font-weight:800;box-shadow:none!important}.bill-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.bill-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.bill-error{color:var(--danger);margin:8px 0 0;font-size:13px}.bill-summary{border-radius:var(--radius);background:var(--bg);border:1px dashed var(--border);margin:20px 0 18px;padding:16px}.bill-summary>div{justify-content:space-between;gap:12px;padding:5px 0;font-size:14px;display:flex}.bill-summary dt{color:var(--text-muted)}.bill-summary dd{font-variant-numeric:tabular-nums;margin:0;font-weight:700}.bill-save dt,.bill-save dd{color:var(--success)}.bill-summary .bill-total{border-top:1px solid var(--border);margin-top:6px;padding-top:11px}.bill-total dt{color:var(--text);font-weight:700}.bill-total dd{color:var(--brand-dark);font-size:20px;font-weight:900}.bill-pay{border-radius:var(--radius);margin-top:auto;padding:14px 18px;font-size:15.5px}.bill-secure{color:var(--text-muted);text-align:center;justify-content:center;align-items:center;gap:6px;margin:12px 0 0;font-size:12.5px;display:flex}.bill-history-empty{margin:0;padding:8px 22px 22px}.bill-history code{color:var(--text-muted);font-size:12.5px}@media (width<=960px){.bill-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=640px){.bill-plan{border-radius:18px;padding:24px 20px}.bill-price-now b{font-size:48px}.bill-checkout{border-radius:18px}.bill-history .table,.bill-history .table tbody{width:100%;min-width:0;display:block}.bill-history .table thead{display:none}.bill-history .table tr{border-top:1px solid var(--border-light);padding:10px 16px;display:block}.bill-history .table td{text-align:right;border:0;justify-content:space-between;gap:12px;padding:4px 0;display:flex}.bill-history .table td:before{content:attr(data-label);color:var(--text-muted);text-align:left;font-weight:600}}
