@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2c55a0e60120577a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5476f68d60460930-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.inter_5901b7c6-module__ec5Qua__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_5901b7c6-module__ec5Qua__variable{--font-inter:"Inter", "Inter Fallback"}
@font-face{font-family:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(../media/3dbe685087e51055-s.3go3gb1_xu4rn.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.1hey5yyym6mz_.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(../media/3dbe685087e51055-s.3go3gb1_xu4rn.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.1hey5yyym6mz_.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-weight:800;font-display:swap;src:url(../media/3dbe685087e51055-s.3go3gb1_xu4rn.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:800;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.1hey5yyym6mz_.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora Fallback;src:local(Arial);ascent-override:85.29%;descent-override:25.5%;line-gap-override:0.0%;size-adjust:113.73%}.sora_88e86867-module__C_9Hoa__className{font-family:Sora,Sora Fallback;font-style:normal}.sora_88e86867-module__C_9Hoa__variable{--font-sora:"Sora", "Sora Fallback"}
:root{--primary:#c99a18;--primary-soft:#fbf1d6;--primary-dark:#96730f;--primary-ring:#c99a1840;--btn-text:#201a08;--ink:#18181b;--muted:#71717a;--bg:#f7f7f8;--card:#fff;--line:#e7e7ea;--line-soft:#f0f0f2;--sidebar-bg:#fff;--sidebar-line:#ececef;--sidebar-ink:#3f3f46;--sidebar-muted:#9a9aa2;--sidebar-hover:#f4f4f5;--sidebar-active-bg:var(--primary-soft);--sidebar-active:var(--primary-dark);--ok:#15803d;--ok-bg:#e9f6ee;--warn:#b45309;--warn-bg:#fdf1e2;--bad:#b91c1c;--bad-bg:#fceaea;--info:#1d4ed8;--info-bg:#eaf0fc;--radius-sm:8px;--radius:12px;--radius-lg:16px;--shadow-sm:0 1px 2px #1010140a;--shadow:0 1px 2px #10101408, 0 4px 12px -4px #10101412;--shadow-lg:0 8px 24px -8px #1010142e;--ease:cubic-bezier(.2, .8, .2, 1);--transition:.14s var(--ease);--font-display:var(--font-sora), var(--font-inter), ui-sans-serif, system-ui, sans-serif;--text-xs:.72rem;--text-sm:.8125rem;--text-base:.875rem;--text-md:.9375rem;--text-lg:1.0625rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.85rem}*{box-sizing:border-box}html,body{min-height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-inter), ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;-webkit-font-smoothing:antialiased;margin:0;font-size:14px}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}@media (prefers-reduced-motion:no-preference){button,a,input,select,.nav-item,.card,tr{transition:background var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition), transform var(--transition)}}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}.login-page{--l-bg-1:#201a12;--l-bg-2:#0a0908;--l-gold:#c9a227;--l-gold-bright:#e9c965;--l-gold-dim:#8a6d1e;--l-ink:#1e1a13;--l-muted:#756b5b;--l-line:#e8e1cf;background:linear-gradient(160deg, var(--l-bg-1), var(--l-bg-2));grid-template-columns:minmax(0,1.05fr) 440px;min-height:100vh;display:grid;position:relative;overflow:hidden}.login-page:before,.login-page:after{content:"";background:#ffffff0d;border-radius:999px;position:absolute}.login-page:before{width:320px;height:320px;top:-150px;right:40px}.login-page:after{width:420px;height:420px;bottom:-170px;right:-150px}.login-panel{color:#fff;z-index:1;flex-direction:column;justify-content:center;padding:72px;display:flex;position:relative}.login-logo-mark{background-color:var(--l-gold-bright);width:200px;height:129px;margin-bottom:26px;display:block;-webkit-mask-image:url(/brand/raices-logo.png);mask-image:url(/brand/raices-logo.png);-webkit-mask-position:0;mask-position:0;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.login-panel h1{max-width:480px;color:var(--l-gold-bright);font-family:var(--font-sora), sans-serif;letter-spacing:-.01em;margin:0 0 14px;font-size:clamp(1.7rem,3.2vw,2.4rem);font-weight:700;line-height:1.18}.login-panel p{color:#ffffffbf;max-width:420px;line-height:1.65}.login-form-wrap{z-index:1;align-items:center;padding:40px;display:grid;position:relative}.login-card{border:1px solid var(--l-line);background:#fff;border-radius:18px;width:100%;max-width:400px;padding:36px 32px;box-shadow:0 1px 2px #1c19130a,0 16px 36px #1c191314}.login-card h2{color:var(--l-ink);font-family:var(--font-sora), sans-serif;margin:0 0 6px;font-size:1.5rem;font-weight:700}.login-card .sub{color:var(--l-muted)}.login-card [data-slot=card]{width:100%;max-width:360px;box-shadow:none;background:0 0;border:0;border-radius:0;padding:0}.login-card [data-slot=card-header],.login-card [data-slot=card-content],.login-card [data-slot=card-footer]{padding:0}.login-card h1,.login-card [data-slot=title],.login-card [data-slot=card-title]{color:var(--l-ink);font-family:var(--font-sora), sans-serif;letter-spacing:0;margin:0 0 10px;font-size:1.5rem;font-weight:700;line-height:1.2}.login-card p,.login-card [data-slot=description],.login-card [data-slot=card-description]{color:var(--l-muted);margin:0 0 18px;line-height:1.45}.login-card form{gap:14px;margin-top:16px;display:grid}.login-card [data-slot=form-item]{gap:7px;display:grid}.login-card label{color:var(--l-ink);gap:7px;font-size:.88rem;font-weight:700;display:grid}.login-card input{border:1px solid var(--l-line);width:100%;min-height:44px;color:var(--l-ink);background:#fff;border-radius:10px;padding:10px 13px;transition:border-color .15s,box-shadow .15s}.login-card input::placeholder{color:#a89e8b}.login-card input:focus{border-color:var(--l-gold);outline:none;box-shadow:0 0 0 3px #c9a22733}.login-card button[type=submit],.login-card .btn-primary{background:linear-gradient(180deg, var(--l-gold-bright), var(--l-gold));color:#23190a;border:1px solid #0000;border-radius:10px;min-height:44px;padding:10px 14px;font-weight:800;transition:filter .15s,transform .15s}.login-card button[type=submit]:hover,.login-card .btn-primary:hover{filter:brightness(.95);background:linear-gradient(180deg, var(--l-gold-bright), var(--l-gold))}.login-card button[type=submit]:active,.login-card .btn-primary:active{transform:translateY(1px)}.login-card input[data-slot=input]:has(+button){padding-right:40px}.login-card input[data-slot=input]+button{width:32px;height:32px;min-height:auto;color:var(--l-muted);background:0 0;border:0;border-radius:8px;padding:0}.login-card input[data-slot=input]+button:hover{background:#1c19130f}.login-card a{color:var(--l-gold-dim);font-weight:700}.login-card form+*,.login-card [role=alert],.login-card [data-slot=footer],.login-card [data-slot=card-footer]{margin-top:14px}.login-card [data-slot=card-footer]{color:var(--l-muted);justify-content:center;align-items:center;gap:6px;font-size:.9rem;display:flex}.login-card [data-slot=card-footer] button{min-height:auto;color:var(--l-gold-dim);text-underline-offset:3px;background:0 0;border:0;padding:0;text-decoration:underline}.login-card [data-slot=card-footer] button:hover{filter:none;background:0 0}.login-card [role=alert]{border:1px solid var(--bad-bg);background:var(--bad-bg);color:var(--bad);border-radius:10px;padding:10px 12px;font-weight:700}.login-foot{text-align:center;margin-top:22px}.login-divider{color:var(--l-muted);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:12px;margin:26px 0 18px;font-size:.78rem;font-weight:700;display:flex}.login-divider:before,.login-divider:after{content:"";background:var(--l-line);flex:1;height:1px}.muted{color:var(--muted)}.small{font-size:.86rem}.field{gap:6px;margin-bottom:14px;display:grid}.field label{font-size:.85rem;font-weight:700}.input,input:not([type=hidden]):not([type=checkbox]):not([type=radio]),select,textarea{border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;min-height:40px;color:var(--ink);appearance:none;background:#fff;padding:9px 12px}select{background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 20px),calc(100% - 15px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:32px}textarea{resize:vertical;min-height:88px}.input:focus,input:not([type=hidden]):not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{border-color:var(--primary);outline:3px solid var(--primary-ring)}.btn{border-radius:var(--radius-sm);min-height:40px;font-weight:700;font-size:var(--text-base);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:9px 16px;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--primary);color:var(--btn-text);box-shadow:0 1px 2px #17140f0f}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:var(--primary-soft);color:var(--primary-dark);border-color:#0000}.btn-secondary:hover{background:#f2e6bf}.btn-ghost{border-color:var(--line);color:var(--ink);background:#fff}.btn-ghost:hover{background:var(--bg);border-color:#d4d4d8}.btn-link{min-height:auto;color:var(--primary-dark);background:0 0;border:0;padding:0;font-weight:700}.btn-link:hover{text-underline-offset:3px;text-decoration:underline}.btn-block{width:100%}.quick-links{gap:8px;display:grid}.login-chip{border:1px solid var(--l-line);min-height:42px;color:var(--l-ink);background:#fff;border-radius:10px;align-items:center;gap:10px;padding:9px 13px;font-size:.88rem;font-weight:700;transition:border-color .15s,background .15s,color .15s;display:flex}.login-chip svg{color:var(--l-gold-dim)}.login-chip:hover{border-color:var(--l-gold);color:var(--l-gold-dim);background:#c9a22714}.app-shell{grid-template-columns:248px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--sidebar-bg);border-right:1px solid var(--sidebar-line);flex-direction:column;gap:2px;min-height:100vh;padding:18px 12px;display:flex;position:sticky;top:0}.brand{border-bottom:1px solid var(--sidebar-line);color:var(--ink);font-family:var(--font-display);font-weight:700;font-size:var(--text-md);letter-spacing:-.01em;align-items:center;gap:10px;margin-bottom:8px;padding:4px 10px 18px;display:flex}.brand-dot{border-radius:var(--radius-sm);background:var(--primary);width:32px;height:32px;color:var(--btn-text);flex:none;place-items:center;display:grid}.nav-label{color:var(--sidebar-muted);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;padding:15px 12px 6px;font-weight:700}.nav-item{border-radius:var(--radius-sm);min-height:36px;color:var(--sidebar-ink);font-weight:550;font-size:var(--text-base);align-items:center;gap:10px;padding:8px 12px;display:flex}.nav-item svg{color:var(--sidebar-muted);flex:none}.nav-item:hover{background:var(--sidebar-hover);color:var(--ink)}.nav-item:hover svg{color:var(--ink)}.nav-item.active{background:var(--sidebar-active-bg);color:var(--sidebar-active);font-weight:650}.nav-item.active svg{color:var(--sidebar-active)}.nav-button{text-align:left;background:0 0;border:0;width:100%}.topbar{z-index:5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#ffffffdb;align-items:center;gap:14px;height:64px;padding:12px 28px;display:flex;position:sticky;top:0}.search-box{width:min(420px,100%);position:relative}.search-box svg{color:var(--muted);position:absolute;top:10px;left:12px}.app-shell .topbar .search-box input{background:var(--bg);border-radius:var(--radius-sm);border:1px solid #0000;width:100%;min-height:38px;padding:9px 12px 9px 38px}.app-shell .topbar .search-box input:focus{border-color:var(--line);background:#fff}.search-results{z-index:20;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);max-height:340px;box-shadow:var(--shadow-lg);padding:6px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.search-result{border-radius:var(--radius-sm);padding:8px 10px;display:block}.search-result strong{display:block}.search-result:hover{background:var(--bg)}.search-empty{color:var(--muted);font-size:var(--text-sm);padding:10px}.topbar-spacer{flex:1}.avatar{background:var(--primary);width:38px;height:38px;color:var(--btn-text);border-radius:999px;flex:none;place-items:center;font-weight:900;display:grid}.userbox{align-items:center;gap:10px;display:flex}.userbox strong,.userbox span{display:block}.main{width:min(1240px,100%);padding:26px 28px 64px}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.page-head h1{font-size:var(--text-2xl);letter-spacing:-.02em;margin:0;font-weight:650}.page-head p{color:var(--muted);font-size:var(--text-md);margin:4px 0 0}.grid{gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.span-2{grid-column:span 2}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card h2,.card h3{letter-spacing:-.01em;margin:0 0 12px;font-weight:650}.stat-card{flex-direction:column;gap:2px;display:flex}.stat-label{color:var(--muted);font-size:var(--text-sm);font-weight:550}.stat-value{font-size:var(--text-3xl);letter-spacing:-.02em;margin:6px 0 2px;font-weight:650;line-height:1}.stat-trend{color:var(--muted);font-size:var(--text-sm);font-weight:550}.stat-trend.up{color:var(--ok)}.stat-trend.down{color:var(--bad)}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:760px}th{background:var(--bg);border-bottom:1px solid var(--line);color:var(--muted);letter-spacing:.05em;text-align:left;text-transform:uppercase;white-space:nowrap;padding:11px 16px;font-size:.7rem;font-weight:650}th:first-child{padding-left:20px}th:last-child{padding-right:20px}td{border-bottom:1px solid var(--line);vertical-align:middle;padding:14px 16px}td:first-child{padding-left:20px}td:last-child{padding-right:20px}tr:last-child td{border-bottom:0}tr:hover td{background:var(--bg)}.attendance-status-badge{margin-top:6px}.attendance-progress{min-width:120px}.attendance-submit{margin-top:16px}.attendance-mark-all{gap:8px;margin-left:auto;display:flex}.charge-amount-edit{align-items:center;gap:6px;display:flex}.charge-amount-edit input[type=number]{width:92px}.btn-sm{min-height:32px;font-size:var(--text-sm);padding:5px 12px}.attendance-daywarning{border-radius:var(--radius-sm);background:var(--warn-bg);color:var(--warn);font-size:var(--text-sm);margin:0 0 12px;padding:10px 14px;font-weight:600}.enroll-toolbar{justify-content:flex-end;margin-bottom:16px;display:flex}.impersonation-picker{max-width:520px}.impersonation-bar{border-radius:var(--radius-sm);background:var(--primary-soft);color:var(--primary-dark);font-size:var(--text-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:12px 16px;font-weight:600;display:flex}.impersonation-bar-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.impersonation-switch{align-items:center;gap:6px;display:flex}.modal-overlay{z-index:40;animation:modal-fade .14s var(--ease);background:#18181b80;justify-content:center;align-items:flex-start;padding:40px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);width:min(520px,100%);box-shadow:var(--shadow-lg);animation:modal-pop .16s var(--ease);padding:22px 24px 24px}.modal-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.modal-head h2{margin:0}.modal-close{min-height:34px;padding:6px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}@keyframes modal-pop{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.attendance-history-toggle{gap:6px}.attendance-history-chevron{transition:transform var(--transition)}.attendance-history-chevron.is-open{transform:rotate(180deg)}tr.attendance-history-row:hover td{background:0 0}.attendance-history-row td.attendance-history-cell{border-bottom:1px solid var(--line);background:var(--bg);padding:0}.attendance-history{animation:attendance-history-in var(--transition);padding:16px 20px}@keyframes attendance-history-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.attendance-history-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.attendance-history-course{margin-top:2px;display:block}.attendance-history-close{min-height:30px;padding:6px}.attendance-history-empty{padding:2px 0 4px}.attendance-history-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.attendance-history-item{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);grid-template-columns:110px auto 1fr;align-items:center;gap:8px 14px;padding:10px 14px;display:grid}.attendance-history-date{font-weight:650}.person{align-items:center;gap:10px;display:flex}.person>div strong,.person>div span{display:block}.initials{background:var(--primary);width:34px;height:34px;color:var(--btn-text);border-radius:999px;flex:none;place-items:center;font-size:.78rem;font-weight:900;display:grid}.badge{min-height:24px;font-size:var(--text-xs);border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-weight:650;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:999px;flex:none;width:6px;height:6px}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.muted{background:var(--bg);color:var(--muted)}.list{display:grid}.list-row{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:12px 0;display:flex}.list-row:last-child{border-bottom:0}.chip{background:var(--primary-soft);color:var(--primary-dark);white-space:nowrap;border-radius:8px;padding:6px 9px;font-size:.8rem;font-weight:650}.progress{background:var(--line-soft);border-radius:999px;height:6px;overflow:hidden}.progress span{border-radius:inherit;background:var(--primary);height:100%;display:block}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.section-tabs{border-bottom:1px solid var(--line);gap:4px;margin-bottom:18px;display:flex;overflow-x:auto}.section-tab{color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;padding:10px 14px;font-weight:650}.section-tab.active{border-color:var(--primary);color:var(--primary-dark)}.schedule-scroll{width:100%;overflow-x:auto}.schedule-grid{border:1px solid var(--line);border-radius:var(--radius);background:#fff;grid-template-columns:68px repeat(5,minmax(130px,1fr));min-width:720px;display:grid;overflow:hidden}.schedule-grid>div{border-left:1px solid var(--line);border-top:1px solid var(--line);min-height:58px;padding:6px}.schedule-grid .schedule-head{background:var(--bg);min-height:auto;color:var(--muted);text-align:center;text-transform:uppercase;font-size:.7rem;font-weight:650}.schedule-grid .time-cell{color:var(--muted);text-align:right;border-left:0;font-size:.75rem}.schedule-block{border-left:3px solid var(--primary);background:var(--primary-soft);height:100%;color:var(--primary-dark);border-radius:8px;padding:7px 8px;font-size:.78rem;font-weight:650}.schedule-block span{opacity:.75;margin-top:3px;font-weight:600;display:block}.hamburger-btn{border:1px solid var(--line);border-radius:var(--radius-sm);width:38px;height:38px;color:var(--ink);background:#fff;flex:none;justify-content:center;align-items:center;display:none}.mobile-nav-overlay{display:none}.mobile-nav-drawer{z-index:21;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-line);width:min(280px,84vw);box-shadow:var(--shadow-lg);transition:transform var(--transition);flex-direction:column;gap:2px;padding:18px 12px;display:none;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%)}.mobile-nav-drawer-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.mobile-nav-drawer-head .brand{border-bottom:0;margin-bottom:0;padding:4px 0}.mobile-nav-close{border-radius:var(--radius-sm);width:34px;height:34px;color:var(--sidebar-muted);background:0 0;border:0;flex:none;justify-content:center;align-items:center;display:flex}.mobile-nav-close:hover{background:var(--sidebar-hover);color:var(--ink)}.empty-state{border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);background:#fff;padding:22px}.toast-stack{z-index:50;gap:8px;max-width:min(360px,100vw - 40px);display:grid;position:fixed;bottom:20px;right:20px}.toast{border-radius:var(--radius-sm);font-size:var(--text-sm);box-shadow:var(--shadow-lg);color:#fff;animation:toast-in .16s var(--ease);padding:12px 16px;font-weight:650}.toast-ok{background:var(--ok)}.toast-bad{background:var(--bad)}.toast-info{background:var(--info)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:1100px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1180px) and (min-width:821px){.app-shell{grid-template-columns:76px minmax(0,1fr)}.sidebar{align-items:center;padding:18px 10px}.brand{justify-content:center;padding:4px 0 18px}.brand span:not(.brand-dot),.nav-label{display:none}.nav-item{justify-content:center;width:52px;padding:10px 0}.nav-item span{display:none}.main{width:100%;padding:22px 20px 56px}}@media (max-width:820px){.login-page{grid-template-columns:minmax(0,1fr)}.login-panel{padding:40px 24px}.login-logo-mark{width:150px;height:97px}.login-form-wrap{padding:28px 20px 44px}.app-shell{grid-template-columns:minmax(0,1fr)}.sidebar{display:none}.topbar{padding:10px 16px}.userbox div:not(.avatar){display:none}.main{padding:18px 16px 28px}.page-head{display:grid}.page-head .btn,.card>form .btn,.card>.btn{width:100%}.card .table-wrap .btn{width:auto}.grid-2,.grid-3,.grid-4,.form-grid{grid-template-columns:minmax(0,1fr)}.span-2{grid-column:auto}.hamburger-btn{display:inline-flex}.mobile-nav-overlay{z-index:20;opacity:0;pointer-events:none;transition:opacity var(--transition);background:#18181b73;display:block;position:fixed;inset:0}.mobile-nav-overlay.is-open{opacity:1;pointer-events:auto}.mobile-nav-drawer{display:flex}.mobile-nav-drawer.is-open{transform:translate(0)}.table-wrap{border:0;border-radius:0;overflow:visible}.table-wrap table{min-width:0}.table-wrap thead{display:none}.table-wrap tbody{gap:10px;display:grid}.table-wrap tr{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);padding:4px 0;display:block}.table-wrap td{border-bottom:1px solid var(--line-soft);grid-template-columns:96px minmax(0,1fr);place-items:center start;gap:2px 12px;padding:8px 14px;display:grid}.table-wrap td:last-child{border-bottom:0}.table-wrap td:before{content:attr(data-label);color:var(--muted);font-size:var(--text-xs);letter-spacing:.03em;text-transform:uppercase;font-weight:650}.table-wrap td:first-child{padding:12px 14px 8px;font-weight:650;display:block}.table-wrap td:first-child:before{content:none}.table-wrap tr.is-expanded{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.table-wrap tr.attendance-history-row{border-top:0;border-top-left-radius:0;border-top-right-radius:0;margin-top:-10px}.table-wrap td.attendance-history-cell{padding:0;font-weight:400}.attendance-history{padding:14px}.attendance-history-item{grid-template-columns:1fr;gap:4px 10px;padding:10px 12px}}
