:root{--color-primary:#132a52;--color-primary-deep:#0f2140;--color-secondary:#3e8fe8;--color-secondary-deep:#2874c9;--color-accent:#fac634;--color-accent-deep:#e3ac14;--color-success:#2a8757;--color-danger:#cf4438;--navy-950:#060d1c;--navy-900:#0b1930;--navy-800:var(--color-primary-deep);--ink:var(--color-primary);--navy-600:#2c4a7c;--ink-soft:#5b6b8c;--ink-faint:#95a1bc;--hairline:#132a521f;--hairline-soft:#132a5212;--ink-tint:#132a520f;--blue:var(--color-secondary);--blue-deep:var(--color-secondary-deep);--blue-ink:#1b4e8c;--blue-pale:#e7f1fc;--blue-bright:#bfdcfa;--blue-glow:#3e8fe842;--yellow:var(--color-accent);--yellow-deep:var(--color-accent-deep);--yellow-dark:#6e5300;--yellow-pale:#fff3c9;--yellow-glow:#fac6344d;--neutral-200:#e5e7eb;--neutral-700:#4b5563;--green:var(--color-success);--green-pale:#e2f2e8;--red:var(--color-danger);--red-pale:#fbe7e5;--white:#fff;--canvas:#f3f7fc;--surface:var(--white);--surface-alt:#f2f6fb;--table-head:#122952;--table-head-fg:var(--white);--r-xs:8px;--r-sm:11px;--r-md:16px;--r-lg:22px;--r-xl:28px;--r-pill:999px;--e1:0 1px 2px #132a520f, 0 2px 6px #132a520d;--e2:0 2px 4px #132a520f, 0 6px 16px #132a5214;--e3:0 8px 20px #132a521a, 0 18px 42px #132a521f;--dur-fast:.14s;--dur:.22s;--dur-slow:.34s;--ease:cubic-bezier(.22, .8, .28, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--font-display:"IBM Plex Sans Thai", system-ui, sans-serif;--font-body:"IBM Plex Sans Thai", system-ui, sans-serif;--font-mono:"IBM Plex Sans Thai", ui-monospace, monospace;--fs-min:16px;--fs-body:var(--fs-min);--fs-ui:var(--fs-min);--fs-label:var(--fs-min);--fs-helper:var(--fs-min);--fs-page-title:28px;--fs-compact:14px;--fs-nav:13px;--fs-body-lg:18px;--fs-title-sm:20px;--fs-title-md:24px;--fs-title-lg:28px;--fs-display:32px;--fs-display-xl:48px;--fs-subtext:var(--fs-body-lg);--fs-avatar:var(--fs-ui);--app-max-width:480px;--screen-pad-x:20px;--bottom-nav-height:76px;--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--canvas)}body{font-family:var(--font-body);font-size:var(--fs-body);color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overscroll-behavior-y:none;line-height:1.55}img,svg{display:block}button{font:inherit;cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:0 0;border:none;padding:0}input:not(.ant-select-input),textarea{font:inherit}ul{margin:0;padding:0;list-style:none}a{color:inherit;text-decoration:none}:focus-visible{outline:2.5px solid var(--blue);outline-offset:2px;border-radius:4px}.icon{stroke:currentColor;fill:none;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:20px;height:20px}.h-app{font-family:var(--font-display);font-weight:600;font-size:var(--fs-page-title);letter-spacing:-.022em;text-wrap:balance;margin:10px 0 3px}@media (width>=1024px){.h-app{font-size:var(--fs-display)}}.sub-app{color:var(--ink-soft);font-size:var(--fs-subtext);margin:0 0 20px;line-height:1.65}.section-title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-label);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);align-items:center;gap:9px;margin:26px 0 13px;display:flex}.section-title:before{content:"";background:linear-gradient(90deg, var(--ink), var(--blue) 72%, var(--yellow));border-radius:99px;flex-shrink:0;width:16px;height:3px}.section-title:first-of-type{margin-top:4px}.helper{font-size:var(--fs-helper);color:var(--ink-soft);line-height:1.7}.divider{background:var(--hairline-soft);height:1px;margin:15px 0}.foot-note{text-align:center;font-size:var(--fs-helper);color:var(--ink-soft);margin-top:22px;line-height:1.7}.belt-divider{background:repeating-linear-gradient(45deg, var(--ink) 0 8px, var(--blue) 8px 16px, var(--yellow) 16px 22px);border-radius:99px;width:78px;height:7px;margin:0 0 18px}@keyframes screenIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e1);transition:box-shadow var(--dur) var(--ease);padding:16px}.card+.card{margin-top:11px}.card-hero{background:linear-gradient(152deg, var(--ink) 0%, var(--navy-900) 62%, var(--navy-950) 100%);border-radius:var(--r-xl);box-shadow:var(--e3);color:var(--white);padding:21px;position:relative;overflow:hidden}.card-hero:before{content:"";pointer-events:none;background:repeating-linear-gradient(45deg,#ffffff09 0 9px,#0000 9px 18px);position:absolute;inset:0}.card-hero:after{content:"";background:radial-gradient(circle, var(--blue-glow) 0%, transparent 68%);border-radius:50%;width:186px;height:186px;position:absolute;top:-64px;right:-56px}.card-hero h3{font-family:var(--font-display);font-weight:600;font-size:var(--fs-title-md);letter-spacing:-.02em;color:var(--white);margin:14px 0 12px;position:relative}.card-label{font-size:var(--fs-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--blue-bright);border-radius:var(--r-pill);background:#3e8fe833;border:1px solid #3e8fe859;align-items:center;gap:6px;padding:5px 12px;font-weight:700;display:inline-flex;position:relative}.card-label-yellow{color:var(--yellow-dark);background:#f6b922;border:1px solid #6e53002e}.hero-meta{font-size:var(--fs-ui);color:#ffffffb8;flex-wrap:wrap;gap:8px 16px;margin-bottom:16px;font-weight:500;display:flex;position:relative}.hero-meta span{align-items:center;gap:6px;display:flex}.hero-meta .icon{width:14px;height:14px;color:var(--white)}.countdown-chip{background:var(--yellow);color:var(--ink);font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;border-radius:var(--r-pill);box-shadow:0 4px 14px var(--yellow-glow);transition:background var(--dur) var(--ease);align-items:center;gap:8px;padding:8px 15px;font-weight:700;display:inline-flex;position:relative}.countdown-chip.is-urgent{background:var(--red);color:var(--white)}.btn{font-family:var(--font-body);font-weight:600;font-size:var(--fs-ui);letter-spacing:.005em;border-radius:var(--r-sm);cursor:pointer;min-height:46px;transition:transform var(--dur-fast) var(--ease), box-shadow var(--dur) var(--ease), background var(--dur) var(--ease), color var(--dur) var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:13px 18px;display:inline-flex}.btn .icon{width:17px;height:17px}.btn:active{transform:translateY(1px)scale(.985)}.btn-primary{background:var(--ink);color:var(--white);box-shadow:var(--e2)}.btn-primary:hover{background:var(--navy-800);box-shadow:var(--e3)}.btn-secondary{background:var(--blue);color:var(--white);box-shadow:0 4px 14px var(--blue-glow)}.btn-secondary:hover{background:var(--blue-deep);box-shadow:0 6px 20px var(--blue-glow)}.btn-gold{background:var(--yellow);color:var(--ink);box-shadow:0 4px 14px var(--yellow-glow)}.btn-gold:hover{background:var(--yellow-deep);box-shadow:0 6px 20px var(--yellow-glow)}.btn-outline{color:var(--ink);border-color:var(--hairline);background:0 0}.btn-outline:hover{background:var(--ink-tint);border-color:var(--ink-soft)}.btn-block{width:100%}.btn-sm{min-height:40px;font-size:var(--fs-ui);padding:10px 14px}.btn.is-disabled,.btn:disabled{opacity:.42;pointer-events:none;box-shadow:none!important}.btn-ghost{color:var(--blue-ink);transition:color var(--dur) var(--ease);border:none;padding:6px 2px;font-weight:600}.btn-ghost:hover{color:var(--ink)}.sticky-cta{z-index:30;background:linear-gradient(to top, var(--canvas) 62%, transparent);pointer-events:none;margin-top:18px;padding:16px 0 4px;position:sticky;bottom:0}.sticky-cta>*{pointer-events:auto}.screen.has-bottom-nav .sticky-cta{bottom:calc(var(--bottom-nav-height) + var(--safe-bottom))}.sticky-bar{background:var(--surface);border-top:1px solid var(--hairline);margin:18px calc(var(--screen-pad-x) * -1) 0;padding:13px var(--screen-pad-x);justify-content:space-between;align-items:center;gap:10px;display:flex;position:sticky;bottom:0;box-shadow:0 -6px 18px #132a520f}.badge{font-size:var(--fs-ui);letter-spacing:.02em;border-radius:var(--r-pill);white-space:nowrap;align-items:center;gap:5px;padding:5px 10px;font-weight:700;display:inline-flex}.badge .icon{width:12px;height:12px}.badge-yellow{background:var(--yellow-pale);color:var(--yellow-dark)}.badge-blue{background:var(--blue-pale);color:var(--blue-ink)}.badge-green{background:var(--green-pale);color:var(--green)}.badge-red{background:var(--red-pale);color:var(--red)}.badge-navy{background:var(--ink);color:var(--white)}.belt-bar{background:var(--ink-tint);border-radius:99px;height:7px;position:relative;overflow:hidden}.belt-bar-fill{background:linear-gradient(90deg, var(--blue-deep) 0%, var(--blue) 100%);height:100%;transition:width var(--dur-slow) var(--ease-out);border-radius:99px;position:relative;overflow:hidden}.belt-bar-fill:after{content:"";background:repeating-linear-gradient(45deg,#ffffff38 0 4px,#0000 4px 8px);position:absolute;inset:0}.belt-bar-fill.blue{background:linear-gradient(90deg, var(--ink), var(--navy-600))}.belt-bar-fill.red{background:linear-gradient(90deg, #a8352b, var(--red))}.belt-bar-fill.gold{background:linear-gradient(90deg, var(--yellow-deep), var(--yellow))}.belt-bar-fill.green{background:linear-gradient(90deg, #1f6b44, var(--green))}.belt-row{font-size:var(--fs-ui);color:var(--ink-soft);justify-content:space-between;align-items:center;margin-bottom:7px;font-weight:500;display:flex}.belt-row span:last-child{font-family:var(--font-mono);color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600}.stats-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);min-width:0;box-shadow:var(--e1);transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease);flex-direction:column;padding:15px;display:flex;position:relative;overflow:hidden}.stat-card:before{content:"";background:var(--blue);height:3px;position:absolute;inset:0 0 auto}.stat-card.tone-gold:before{background:var(--yellow)}.stat-card.tone-green:before{background:var(--green)}.stat-card.tone-navy:before{background:var(--ink)}.stat-card:hover{box-shadow:var(--e2);transform:translateY(-2px)}.stat-card .lbl{font-size:var(--fs-ui);letter-spacing:.01em;color:var(--ink-soft);font-weight:600}.stat-card .num{font-family:var(--font-display);font-weight:600;font-size:var(--fs-title-md);letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin:7px 0 0;line-height:1}.stat-card .num small{font-family:var(--font-body);font-size:var(--fs-ui);color:var(--ink-faint);letter-spacing:0;margin-left:4px;font-weight:500}.stat-card .num.is-text{font-size:var(--fs-body-lg);letter-spacing:-.01em}.stat-card .belt-bar{margin-top:9px}.stat-card .sub{font-size:var(--fs-ui);color:var(--ink-faint);margin-top:8px;display:block}.home-head{flex-direction:column;gap:14px;display:flex}.home-head .h-app{margin:0 0 2px}.home-head-meta{flex-wrap:wrap;gap:4px 10px;margin:0;display:flex}.home-head-meta span{align-items:center;display:inline-flex}.home-head-meta span:not(:first-child):before{content:"";background:var(--ink-faint);border-radius:50%;flex-shrink:0;width:4px;height:4px;margin-right:10px}.home-head-cta{align-self:flex-start}.home-hero{flex-direction:column;gap:16px;display:flex}.home-hero-body{min-width:0;position:relative}.home-hero h3{margin:14px 0 10px}.home-hero .hero-body{color:#ffffffb8}.home-hero-cta{align-self:stretch}.home-upcoming{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.home-upcoming-row{align-items:center;gap:14px;padding:11px 0;display:flex}.home-upcoming-row:first-child{padding-top:2px}.home-upcoming-row:last-child{padding-bottom:2px}.home-upcoming-row+.home-upcoming-row{border-top:1px solid var(--hairline-soft)}.home-date-tile{border-radius:var(--r-sm);background:var(--surface-alt);width:48px;height:48px;color:var(--ink);flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:flex}.home-date-tile .d{font-family:var(--font-display);font-weight:700;font-size:var(--fs-body-lg)}.home-date-tile .m{font-size:var(--fs-helper);color:var(--ink-faint);margin-top:3px}.home-upcoming-copy{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.home-upcoming-copy .t{color:var(--ink);font-weight:600}.home-upcoming-copy .s{font-size:var(--fs-helper);color:var(--ink-faint)}.home-upcoming-row .badge{flex-shrink:0}.home-announce-body{font-size:var(--fs-helper);color:var(--ink-soft);white-space:pre-line;margin:0;line-height:1.7}.home-hero .hero-body-quiet{color:#fff9;margin-top:4px}.home-links{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e1);flex-direction:column;display:flex;overflow:hidden}.home-link{text-align:left;cursor:pointer;min-height:52px;color:var(--ink);font-family:var(--font-body);font-size:var(--fs-ui);transition:background var(--dur) var(--ease);background:0 0;border:none;align-items:center;gap:12px;padding:12px 14px;font-weight:600;display:flex}.home-link+.home-link{border-top:1px solid var(--hairline-soft)}.home-link:hover{background:var(--surface-alt)}.home-link:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.home-link-icon{background:var(--blue-pale);width:34px;height:34px;color:var(--blue-ink);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.home-link-label{flex:1;min-width:0}.home-link-note{font-size:var(--fs-helper);color:var(--yellow-dark);background:var(--yellow-pale);border-radius:var(--r-pill);flex-shrink:0;padding:3px 9px;font-weight:600}.home-link-chev{color:var(--ink-faint);flex-shrink:0}@media (width>=720px){.home-hero{flex-direction:row;justify-content:space-between;align-items:center;gap:24px}.home-hero-cta{flex-shrink:0;align-self:center}}.week-row{justify-content:space-between;display:flex}.week-chip{font-size:var(--fs-ui);color:var(--ink-faint);flex-direction:column;align-items:center;gap:7px;font-weight:600;display:flex}.week-chip .d{width:36px;height:36px;font-family:var(--font-display);font-size:var(--fs-ui);transition:all var(--dur) var(--ease);border-radius:12px;justify-content:center;align-items:center;display:flex}.week-chip.today .d{background:var(--ink);color:var(--yellow);box-shadow:var(--e2);font-weight:600}.week-chip.classday:not(.today) .d{box-shadow:inset 0 0 0 1.5px var(--hairline);color:var(--ink-soft)}.day-row{justify-content:space-between;gap:4px;display:flex}.day-chip{aspect-ratio:1;max-width:40px;min-height:40px;font-size:var(--fs-ui);color:var(--ink-soft);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hairline);cursor:pointer;transition:all var(--dur) var(--ease);border-radius:13px;flex:1;justify-content:center;align-items:center;margin:0 auto;font-weight:600;display:flex}.day-chip:hover{box-shadow:inset 0 0 0 1.5px var(--ink-soft)}.day-chip.active{background:var(--ink);color:var(--white);box-shadow:var(--e2)}.day-chip.is-danger{color:var(--red);background:var(--red-pale);box-shadow:inset 0 0 0 1.5px var(--red)}.day-chip.is-danger:hover{box-shadow:inset 0 0 0 2px var(--red)}.day-chip.is-danger:disabled{opacity:1;cursor:not-allowed}.day-chip.is-danger.active{color:var(--red);background:var(--red-pale);box-shadow:inset 0 0 0 2px var(--red), 0 2px 8px #cf443829}.pkg-row{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.pkg-card{border-radius:var(--r-sm);text-align:center;background:var(--surface);box-shadow:inset 0 0 0 1px var(--hairline);cursor:pointer;transition:all var(--dur) var(--ease);padding:12px 4px}.pkg-card:hover{box-shadow:inset 0 0 0 1.5px var(--ink-soft)}.pkg-card.active{background:var(--ink);box-shadow:var(--e2)}.pkg-num{font-family:var(--font-display);font-weight:600;font-size:var(--fs-title-sm);letter-spacing:-.02em;display:block}.pkg-card.active .pkg-num{color:var(--white)}.pkg-lbl{font-size:var(--fs-ui);color:var(--ink-faint);font-weight:500}.pkg-card.active .pkg-lbl{color:#fff9}.pkg-stripes{justify-content:center;gap:2px;margin-top:7px;display:flex}.pkg-stripes i{background:var(--hairline);border-radius:1px;width:3px;height:9px;display:block}.pkg-card.active .pkg-stripes i{background:var(--yellow)}.list-row{border-bottom:1px solid var(--hairline-soft);align-items:center;gap:12px;padding:13px 0;display:flex}.list-row:last-child{border-bottom:none}.list-row.is-top{align-items:flex-start}.list-row.is-wrap{flex-wrap:wrap}.list-row.is-tappable{border-radius:12px;padding-inline:10px;transition:background .15s}.list-row.is-tappable:disabled{opacity:.45;cursor:not-allowed}.list-row.is-muted{opacity:.55;cursor:not-allowed}.list-row.is-tappable.is-selected{background:var(--blue-pale);border-bottom-color:#0000}.list-row.is-tappable.is-selected .row-title{font-weight:600}.avatar{background:var(--ink);width:40px;height:40px;color:var(--white);font-family:var(--font-display);font-weight:600;font-size:var(--fs-ui);border-radius:13px;flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.avatar-photo{object-fit:cover;width:100%;height:100%}.avatar.alt{background:var(--blue-pale);color:var(--blue-ink)}.avatar.danger{background:var(--red);color:var(--white)}.profile-identity{align-items:center;gap:14px;display:flex}.row-title{font-size:var(--fs-ui);letter-spacing:-.005em;font-weight:600}.row-sub{font-size:var(--fs-ui);color:var(--ink-soft);margin-top:2px}.row-end{align-items:center;gap:8px;margin-left:auto;display:flex}.row-grow{flex:1;min-width:0}@media (width<=639px){.list-row.is-choice{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:6px 12px;display:grid}.list-row.is-choice>.icon,.list-row.is-choice>.avatar{grid-area:1/1/span 2}.list-row.is-choice>.row-grow{grid-area:1/2}.list-row.is-choice>.badge{grid-area:2/2;justify-self:start}}.chev{width:16px;height:16px;color:var(--ink-faint);flex-shrink:0}.history-item{border-bottom:1px solid var(--hairline-soft);align-items:center;gap:12px;padding:12px 0;display:flex}.history-item:last-child{border-bottom:none}.history-bar{border-radius:3px;flex-shrink:0;align-self:stretch;width:3px}.history-bar.green{background:var(--green)}.history-bar.amber{background:var(--yellow)}.history-bar.navy{background:var(--blue)}.history-bar.red{background:var(--red)}.arrow-between{color:var(--ink-faint);justify-content:center;align-items:center;margin:6px 0;display:flex}.field{margin-bottom:15px}.field label{font-size:var(--fs-ui);color:var(--ink-soft);letter-spacing:.01em;margin-bottom:7px;font-weight:600;display:block}.field.is-last{margin-bottom:0}.field-row{gap:10px;display:flex}.field-row .field{flex:1}.input-wrap{position:relative}input[type=text]:not(.ant-select-input),input[type=password],input[type=number],input[type=tel],input[type=email],input[type=date],textarea{width:100%;font-family:var(--font-body);font-size:var(--fs-ui);border-radius:var(--r-sm);border:1px solid var(--hairline);background:var(--surface);min-height:46px;color:var(--ink);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);padding:10px 14px}input::placeholder,textarea::placeholder{color:var(--ink-faint)}input:focus:not(.ant-select-input),textarea:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3.5px #3e8fe824}.input-wrap:has(.pw-toggle) input{padding-right:46px}textarea{resize:none;min-height:70px;font-size:var(--fs-ui);line-height:1.6}.pw-toggle{color:var(--ink-faint);width:34px;height:34px;transition:color var(--dur) var(--ease), background var(--dur) var(--ease);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.pw-toggle:hover{color:var(--ink);background:var(--ink-tint)}.pw-toggle .icon{width:18px;height:18px}.check-row{cursor:pointer;align-items:flex-start;gap:11px;margin:16px 0 20px;display:flex}.check-row input{opacity:0;width:0;height:0;position:absolute}.check-box{width:22px;height:22px;box-shadow:inset 0 0 0 1.5px var(--hairline);color:#0000;transition:all var(--dur) var(--ease);border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;margin-top:1px;display:flex}.check-row input:checked+.check-box{background:var(--ink);color:var(--white);box-shadow:var(--e1)}.check-row input:focus-visible+.check-box{outline:2.5px solid var(--blue);outline-offset:2px}.check-text{font-size:var(--fs-ui);color:var(--ink-soft);line-height:1.65}.check-text a{color:var(--ink);text-underline-offset:2px;font-weight:600;text-decoration:underline}.match-icon{border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:flex;position:absolute;top:50%;right:46px;transform:translateY(-50%)}.match-icon.solo{right:13px}.match-icon.ok{background:var(--green-pale);color:var(--green)}.match-icon.bad{background:var(--red-pale);color:var(--red)}.input-wrap:has(.match-icon:not(.solo)) input{padding-right:76px}.strength-row{align-items:center;gap:9px;margin-top:9px;display:flex}.strength-row .belt-bar{flex:1;height:5px}.strength-label{font-size:var(--fs-ui);text-align:right;min-width:52px;color:var(--ink-faint);letter-spacing:.02em;font-weight:700}.strength-label.weak{color:var(--red)}.strength-label.medium{color:var(--yellow-dark)}.strength-label.strong{color:var(--green)}.pw-rules{border-radius:var(--r-md);border:1px solid var(--hairline);background:var(--surface-alt);transition:border-color var(--dur) var(--ease);margin-top:10px;padding:13px 14px}.pw-rules.is-complete{border-color:#2a875752}.pw-rules-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.pw-rules-title{font-family:var(--font-display);font-size:var(--fs-ui);letter-spacing:.01em;color:var(--ink);font-weight:600}.pw-rules-count{font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;letter-spacing:.04em;color:var(--ink-faint);border-radius:var(--r-pill);background:var(--white);border:1px solid var(--hairline);transition:color var(--dur) var(--ease), background var(--dur) var(--ease), border-color var(--dur) var(--ease);padding:2px 9px;font-weight:600}.pw-rules-count.is-complete{color:var(--green);background:var(--green-pale);border-color:#2a87574d}.pw-rules-list{gap:7px;margin:0;padding:0;list-style:none;display:grid}.pw-rule{font-size:var(--fs-ui);color:var(--ink-soft);transition:color var(--dur) var(--ease);align-items:center;gap:9px;line-height:1.4;display:flex}.pw-rule-mark{border:1.5px solid var(--hairline);background:var(--white);color:#0000;width:17px;height:17px;transition:color var(--dur) var(--ease), background var(--dur) var(--ease), border-color var(--dur) var(--ease), transform var(--dur) var(--ease-out);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.pw-rule.is-met{color:var(--ink)}.pw-rule.is-met .pw-rule-label{font-weight:600}.pw-rule.is-met .pw-rule-mark{color:var(--white);background:var(--green);border-color:var(--green);animation:pwRulePop .26s var(--ease-out)}@keyframes pwRulePop{0%{transform:scale(.78)}60%{transform:scale(1.12)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.pw-rule.is-met .pw-rule-mark{animation:none}}.rule-banner{border-radius:var(--r-sm);font-size:var(--fs-ui);border-left:3px solid #0000;gap:11px;margin-bottom:13px;padding:13px 14px;line-height:1.68;display:flex}.rule-banner .icon{flex-shrink:0;width:16px;height:16px;margin-top:1.5px}.rule-banner.info{background:var(--blue-pale);color:var(--blue-ink);border-left-color:var(--blue)}.rule-banner.warn{background:var(--red-pale);color:var(--red);border-left-color:var(--red)}.rule-banner.caution{background:var(--yellow-pale);color:var(--yellow-dark);border-left-color:var(--yellow-deep)}.search-box{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-pill);min-height:42px;transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);align-items:center;gap:10px;margin-bottom:10px;padding:7px 13px;display:flex}.search-box:focus-within{border-color:var(--blue);box-shadow:0 0 0 3.5px #3e8fe824}.search-box .icon{width:17px;height:17px;color:var(--ink-faint)}.search-box input{font-size:var(--fs-ui);background:0 0;border:none;flex:1;min-height:0;padding:0}.search-box input[type=text]:not(.ant-select-input),.search-box input[type=search]{border:0;min-height:0;padding:0}.search-box input:focus{box-shadow:none;border:none;outline:none}.filter-row,.class-chip-row,.coach-row{scrollbar-width:none;display:flex;overflow-x:auto}.filter-row::-webkit-scrollbar{display:none}.class-chip-row::-webkit-scrollbar{display:none}.coach-row::-webkit-scrollbar{display:none}.filter-row{gap:7px;margin-bottom:6px;padding-bottom:4px}.filter-chip{border-radius:var(--r-pill);min-height:38px;box-shadow:inset 0 0 0 1px var(--hairline);font-size:var(--fs-ui);color:var(--ink-soft);white-space:nowrap;background:var(--surface);transition:all var(--dur) var(--ease);flex-shrink:0;align-items:center;gap:6px;padding:5px 12px;font-weight:600;display:inline-flex}.filter-chip.active{background:var(--ink);color:var(--white);box-shadow:var(--e1)}.filter-chip-count{border-radius:var(--r-pill);background:var(--yellow);min-width:18px;height:18px;color:var(--ink);font-family:var(--font-display);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;place-items:center;padding:0 5px;font-weight:700;line-height:1;display:inline-grid}.filter-chip:not(.active) .filter-chip-count{background:var(--yellow-pale);color:var(--yellow-dark)}.ant-select-arrow,.ant-select-selection-placeholder{color:var(--ink-soft)}.ant-select-dropdown.ant-select-dropdown{background:var(--surface);border:1px solid var(--ink-soft);border-radius:var(--r-sm);box-shadow:var(--e2)}.ant-select-dropdown .ant-select-item.ant-select-item-option-active:not(.ant-select-item-option-disabled){background:var(--blue-bright);color:var(--ink)}.ant-select-dropdown .ant-select-item.ant-select-item-option-selected:not(.ant-select-item-option-disabled),.ant-select-dropdown .ant-select-item.ant-select-item-option-selected.ant-select-item-option-active:not(.ant-select-item-option-disabled){background:var(--blue-deep);color:var(--white)}.ant-select-dropdown .ant-select-item.ant-select-item-option-selected .ant-select-item-option-state{color:var(--white)}.roster-toolbar{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.roster-toolbar .search-box{flex:100%;margin-bottom:0}.roster-filter-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;display:grid}.roster-toolbar .ant-select{width:100%}.roster-status-tabs.segmented{flex:100%;margin-bottom:0}.roster-status-tabs.segmented button{font-size:var(--fs-compact);padding-block:9px}@media (width>=560px){.roster-toolbar .search-box{flex:260px;min-width:220px}.roster-filter-row{display:contents}.roster-toolbar .ant-select{flex:0 0 190px;width:190px}.roster-status-tabs.segmented{flex:0 0 300px;height:44px;padding-block:3px}.roster-status-tabs.segmented button{padding-inline:2px}}.hist-filter-row{align-items:center;gap:8px;margin-bottom:6px;display:flex}.hist-filter-row .filter-row{flex:1;min-width:0;margin-bottom:0;padding-bottom:0}.hist-sort-btn{border-radius:var(--r-pill);box-shadow:inset 0 0 0 1px var(--hairline);background:var(--surface);color:var(--ink-soft);font-size:var(--fs-ui);white-space:nowrap;transition:all var(--dur) var(--ease);flex-shrink:0;align-items:center;gap:4px;padding:8px 12px;font-weight:600;display:flex}.hist-sort-btn:hover{color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink-soft)}.hist-row-date{border-radius:var(--r-sm);background:var(--surface-alt);flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;line-height:1.15;display:flex}.hist-row-day{font-family:var(--font-display);font-size:var(--fs-ui);color:var(--ink);font-weight:600}.hist-row-dow{font-size:var(--fs-ui);color:var(--ink-faint)}.list-toolbar{margin-bottom:12px}.list-toolbar-row{align-items:stretch;gap:9px;display:flex}.list-toolbar-search{background:var(--surface);border-radius:var(--r-xs);flex:1;min-width:0;margin-bottom:0}.list-toolbar-search-clear{width:30px;height:30px;color:var(--ink-faint);transition:background var(--dur) var(--ease), color var(--dur) var(--ease);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.list-toolbar-search-clear:hover{background:var(--ink-tint);color:var(--ink)}.list-toolbar-search-clear:focus-visible,.list-toolbar-clear:focus-visible,.list-toolbar-filter-toggle:focus-visible,.list-toolbar .filter-chip:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.list-toolbar-sort{border-radius:var(--r-xs);background:var(--surface);border:1px solid var(--hairline);min-height:42px;color:var(--ink-soft);font-size:var(--fs-ui);white-space:nowrap;align-items:center;gap:7px;padding:0 12px;font-weight:700;display:flex}.list-toolbar-sort .icon{width:16px;height:16px;color:var(--blue)}.list-toolbar-sort .ant-select{flex:1;min-width:0}.list-toolbar-sort .ant-select-selector{padding-inline:0!important}.list-toolbar-sort:focus-within{border-color:var(--blue);box-shadow:0 0 0 3.5px #3e8fe81f}.list-toolbar-filter-toggle{border:1px solid var(--blue-ink);border-radius:var(--r-xs);background:var(--surface);min-height:42px;color:var(--blue-ink);font-size:var(--fs-ui);white-space:nowrap;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease), transform var(--dur-fast) var(--ease);flex-shrink:0;justify-content:center;align-items:center;gap:7px;padding:0 15px;font-weight:700;display:inline-flex}.list-toolbar-filter-toggle:hover,.list-toolbar-filter-toggle.is-open{background:var(--blue-pale);border-color:var(--blue);color:var(--ink)}.list-toolbar-filter-toggle:active{transform:translateY(1px)}.list-toolbar-filter-count{border-radius:var(--r-pill);background:var(--blue);min-width:21px;height:21px;color:var(--white);font-family:var(--font-display);font-size:var(--fs-ui);place-items:center;padding:0 5px;line-height:1;display:inline-grid}.list-toolbar-filter-panel{border-top:1px solid var(--hairline-soft);margin-top:10px;padding:12px 0 2px}.list-toolbar-filter-groups{flex-direction:column;gap:7px;display:flex}.list-toolbar-filter-group{align-items:center;gap:8px;min-width:0;display:flex}.list-toolbar-filter-label{width:34px;color:var(--ink-faint);font-size:var(--fs-ui);flex-shrink:0;font-weight:700}.list-toolbar-filter-group .filter-row{min-width:0;margin-bottom:0}.list-toolbar-summary{border-top:1px solid var(--hairline-soft);color:var(--ink-soft);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;padding-top:10px;display:flex}.list-toolbar-clear{border-radius:var(--r-xs);min-height:30px;color:var(--blue-ink);font-size:var(--fs-ui);transition:background var(--dur) var(--ease), color var(--dur) var(--ease);flex-shrink:0;align-items:center;gap:4px;padding:4px 7px;font-weight:700;display:inline-flex}.list-toolbar-clear:hover{background:var(--blue-pale);color:var(--ink)}.list-toolbar-empty{text-align:center;flex-direction:column;align-items:center;gap:7px;padding:28px 18px;display:flex}.list-toolbar-empty-icon{background:var(--blue-pale);width:42px;height:42px;color:var(--blue-ink);border-radius:50%;justify-content:center;align-items:center;margin-bottom:2px;display:flex}.list-toolbar-empty strong{color:var(--ink);font-size:var(--fs-ui)}.list-toolbar-empty .helper{margin:0 0 5px}@media (width>=640px){.list-toolbar-row{align-items:center}.list-toolbar-sort{flex-shrink:0;width:230px}.list-toolbar-filter-groups{flex-flow:wrap;column-gap:18px}}@media (width<=380px){.list-toolbar-row{gap:7px}.list-toolbar-sort,.list-toolbar-filter-toggle{flex:1;padding-inline:10px}}.registration-date-picker{width:100%;min-width:0}.registration-date-picker-controls{align-items:stretch;gap:8px;min-width:0;display:flex}.registration-date-picker-trigger{border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface);min-width:0;min-height:58px;color:var(--ink);text-align:left;transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);flex:1;align-items:center;gap:12px;padding:9px 13px;display:flex}.registration-date-picker-trigger>.icon{color:var(--blue-ink);flex:none}.registration-date-picker-trigger:hover,.registration-date-picker-trigger[aria-expanded=true]{border-color:var(--blue)}.registration-date-picker-trigger:focus-visible,.registration-date-picker-clear:focus-visible,.registration-date-calendar-nav:focus-visible,.registration-date-calendar .react-datepicker__day:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.registration-date-picker-values{flex:1;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:9px;min-width:0;display:grid}.registration-date-picker-endpoint{gap:2px;min-width:0;display:grid}.registration-date-picker-endpoint>span{color:var(--ink-faint);font-size:var(--fs-compact);font-weight:600}.registration-date-picker-endpoint strong{overflow-wrap:anywhere;color:var(--ink);font-size:var(--fs-ui);font-weight:600;line-height:1.35}.registration-date-picker-separator{color:var(--ink-faint);font-size:var(--fs-compact)}.registration-date-picker-caret{color:var(--ink-faint);flex:none;align-items:center;display:inline-flex}.registration-date-picker-clear,.registration-date-calendar-nav{border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface);min-width:48px;min-height:48px;color:var(--ink-soft);transition:background var(--dur) var(--ease), color var(--dur) var(--ease);flex:0 0 48px;justify-content:center;align-items:center;display:inline-flex}.registration-date-picker-clear:hover,.registration-date-calendar-nav:hover{background:var(--blue-pale);color:var(--ink)}.registration-date-picker-calendar{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);max-width:100%;box-shadow:var(--e1);margin-top:12px;padding:8px;overflow:hidden}.registration-date-picker-calendar .react-datepicker{width:100%;max-width:100%;color:var(--ink);font-family:var(--font-body);background:0 0;border:0;border-radius:0;display:flex}.registration-date-calendar .react-datepicker__month-container{float:none;flex:1 1 0;width:50%;min-width:0}.registration-date-calendar .react-datepicker__month-container+.react-datepicker__month-container{border-left:1px solid var(--hairline-soft)}.registration-date-calendar .react-datepicker__header{border-bottom:1px solid var(--hairline-soft);background:0 0;border-radius:0;padding:8px 6px 6px}.registration-date-calendar .react-datepicker__day-names{white-space:normal;margin:5px 0 0;display:flex}.registration-date-calendar-header{justify-content:space-between;align-items:center;gap:5px;min-height:44px;display:flex}.registration-date-calendar-header strong{color:var(--ink);font-size:var(--fs-ui);text-align:center;font-weight:700}.registration-date-calendar-nav{min-width:44px;min-height:44px;color:var(--blue-ink);background:0 0;border-color:#0000;flex-basis:44px}.registration-date-calendar-nav-spacer{flex:0 0 44px}.registration-date-calendar-nav-mobile{display:none}.registration-date-calendar .react-datepicker__day-name{width:auto;height:38px;color:var(--ink-soft);font-size:var(--fs-compact);flex:1 1 0;margin:1px;line-height:38px}.registration-date-calendar .react-datepicker__month{margin:6px}.registration-date-calendar .react-datepicker__week{white-space:normal;display:flex}.registration-date-calendar .react-datepicker__day{border-radius:var(--r-xs);width:auto;height:44px;color:var(--ink);font-size:var(--fs-ui);flex:1 1 0;margin:1px;line-height:44px}.registration-date-calendar .react-datepicker__day:not([aria-disabled=true]):hover{border-radius:var(--r-xs);background:var(--blue-pale);color:var(--ink)}.registration-date-calendar .react-datepicker__day--in-range,.registration-date-calendar .react-datepicker__day--in-selecting-range{background:var(--blue-pale);color:var(--ink);border-radius:0}.registration-date-calendar .react-datepicker__day--range-start,.registration-date-calendar .react-datepicker__day--range-end,.registration-date-calendar .react-datepicker__day--selected{border-radius:var(--r-xs);background:var(--ink);color:var(--white);font-weight:700}.registration-date-calendar .react-datepicker__day--today:not(.react-datepicker__day--selected){box-shadow:inset 0 0 0 2px var(--yellow-deep);font-weight:700}.registration-date-calendar .react-datepicker__day--outside-month{color:var(--ink-faint)}.registration-date-calendar .react-datepicker__day--disabled{color:var(--ink-faint);cursor:not-allowed}.registration-date-calendar .react-datepicker__day--keyboard-selected:not(.react-datepicker__day--selected){background:var(--blue-pale);color:var(--ink)}@media (width<=899px){.registration-date-calendar .react-datepicker__month-container{width:100%}.registration-date-calendar .react-datepicker__month-container+.react-datepicker__month-container{display:none}.registration-date-calendar .react-datepicker__month-container:first-of-type{border-left:0}.registration-date-calendar-nav-mobile{display:inline-flex}}@media (width<=380px){.registration-date-picker-trigger{gap:7px;padding-inline:9px}.registration-date-picker-values{gap:5px}.registration-date-picker-endpoint strong{font-size:var(--fs-compact)}.registration-date-picker-separator{font-size:12px}.registration-date-picker-clear{flex-basis:44px;min-width:44px}}@media (prefers-reduced-motion:reduce){.registration-date-picker-trigger,.registration-date-picker-clear,.registration-date-calendar-nav{transition:none}}@media (width<=639px){.list-toolbar-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.list-toolbar-search{grid-column:1/-1}.list-toolbar-sort,.list-toolbar-filter-toggle{width:100%}.list-toolbar-sort,.list-toolbar-filter-toggle,.list-toolbar-summary,.list-toolbar-clear,.list-toolbar-filter-label{font-size:var(--fs-compact);line-height:1.35}.list-toolbar-sort .ant-select-selection-item,.list-toolbar-filter-count{font-size:var(--fs-compact)}}.class-chip-row{gap:8px;margin-bottom:10px;padding-bottom:6px}.class-chip{border-radius:var(--r-sm);min-height:40px;box-shadow:inset 0 0 0 1px var(--hairline);background:var(--surface);font-size:var(--fs-ui);color:var(--ink-soft);white-space:nowrap;transition:all var(--dur) var(--ease);flex-shrink:0;padding:10px 15px;font-weight:600;position:relative}.class-chip.active{background:var(--ink);color:var(--white);box-shadow:var(--e1)}.class-chip .warn-dot{background:var(--yellow-deep);width:7px;height:7px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;position:absolute;top:5px;right:7px}.class-chip.active .warn-dot{box-shadow:0 0 0 2px var(--ink)}.class-calendar-filter{border-radius:var(--r-md);background:var(--surface-alt);box-shadow:inset 0 0 0 1px var(--hairline);margin-bottom:12px;padding:11px 12px 6px}.class-calendar-filter-head,.class-calendar-card-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.class-calendar-filter-head{padding:0 2px 8px}.class-calendar-filter-head>div,.class-calendar-card-head>div{flex-direction:column;gap:2px;min-width:0;display:flex}.class-calendar-filter-eyebrow,.class-calendar-card-eyebrow{color:var(--ink-faint);font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.08em;font-weight:700;line-height:1}.class-calendar-filter-head strong,.class-calendar-card-head strong{color:var(--ink);font-size:var(--fs-ui);font-weight:700}.class-calendar-filter-current{border-radius:var(--r-pill);background:var(--blue-pale);color:var(--blue-ink);font-size:var(--fs-ui);flex-shrink:0;padding:5px 9px;font-weight:700}.class-calendar-filter .class-chip-row{margin-bottom:0;padding-bottom:4px}.class-calendar-card-head{border-bottom:1px solid var(--hairline-soft);margin:-2px 0 9px;padding-bottom:9px}.class-calendar-card-head>span{color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--fs-ui);white-space:nowrap;flex-shrink:0;font-weight:600}.class-calendar-day-kicker{color:var(--blue-ink);font-size:var(--fs-ui);align-items:center;gap:6px;margin-bottom:6px;font-weight:700;display:flex}.class-calendar-day-kicker .icon{color:var(--blue)}.class-calendar-day-card .rule-banner{margin-top:2px}.class-calendar-day-sessions{flex-direction:column;gap:6px;display:flex}.class-calendar-selected-date{justify-content:space-between;align-items:center;gap:10px;margin-bottom:4px;display:flex}.class-calendar-selected-date strong{color:var(--ink);font-family:var(--font-display);font-size:var(--fs-title-sm);font-weight:600}.class-calendar-selected-date>span{border-radius:var(--r-pill);background:var(--blue-pale);color:var(--blue-ink);font-size:var(--fs-ui);flex-shrink:0;padding:4px 8px;font-weight:700}.class-calendar-session{border-top:1px solid var(--hairline-soft);padding:13px 0 4px}.class-calendar-session:first-child{border-top:0;padding-top:10px}.class-calendar-session-head,.class-calendar-session-head>div{align-items:baseline;gap:8px;display:flex}.class-calendar-session-head{justify-content:space-between;gap:10px}.class-calendar-session-head>div{flex-wrap:wrap;min-width:0}.class-calendar-session-head strong{color:var(--ink);font-size:var(--fs-ui);font-weight:700}.class-calendar-session-head>div>span{color:var(--blue-ink);font-family:var(--font-mono);font-size:var(--fs-ui);white-space:nowrap;font-weight:600}.class-calendar-session-level{border-radius:var(--r-pill);background:var(--surface-alt);color:var(--ink-soft);font-size:var(--fs-ui);flex-shrink:0;padding:3px 7px;font-weight:700}.class-calendar-session-status{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:5px;display:flex}.class-calendar-session-status .badge{padding:4px 8px}.class-calendar-session-meta{grid-template-columns:minmax(0,1.3fr) minmax(88px,.7fr) minmax(88px,.7fr);gap:7px;margin-top:10px;display:grid}.class-calendar-session-meta>div{border-radius:var(--r-xs);background:var(--surface-alt);min-width:0;padding:8px 9px}.class-calendar-session-meta>div.is-makeup{background:var(--yellow-pale)}.class-calendar-session-meta>div.is-makeup span,.class-calendar-session-meta>div.is-makeup strong,.class-calendar-session-meta>div.is-makeup em{color:var(--yellow-dark)}.class-calendar-session-meta span,.class-calendar-roster-label{color:var(--ink-soft);font-size:var(--fs-ui);display:block}.class-calendar-session-meta strong{color:var(--ink);font-size:var(--fs-ui);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-weight:700;display:block;overflow:hidden}.class-calendar-session-meta em{color:var(--ink-soft);font-style:normal;font-weight:500}.class-calendar-roster{margin-top:10px}.class-calendar-roster ul{flex-wrap:wrap;gap:5px;margin-top:5px;display:flex}.class-calendar-roster li{border-radius:var(--r-pill);background:var(--blue-pale);color:var(--blue-ink);font-size:var(--fs-ui);padding:4px 8px;font-weight:600}.class-calendar-roster-empty{color:var(--ink-faint);font-size:var(--fs-ui);margin-top:5px;display:block}.class-calendar-makeup{margin-top:10px}.class-calendar-makeup ul{flex-wrap:wrap;gap:5px;margin-top:5px;list-style:none;display:flex}.class-calendar-makeup li{border-radius:var(--r-pill);background:var(--surface-alt);color:var(--ink);font-size:var(--fs-ui);padding:4px 8px;font-weight:600}.class-cal-card .cal-cell.has-class-names{flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:6px;padding:9px 8px}.class-cal-card .admin-cal-day-number{font-size:var(--fs-compact);align-self:flex-end;line-height:1}.class-cal-card .admin-cal-class-list{letter-spacing:0;gap:4px;font-size:13px;line-height:1.1}.class-cal-card .admin-cal-class-list span,.class-cal-card .admin-cal-class-list small{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}@media (width<=639px){.dsk-class-cal-split{gap:10px}.class-calendar-filter{margin-bottom:10px;padding:10px 10px 5px}.class-calendar-filter .class-chip{border-radius:10px;min-height:38px;padding:8px 12px}.class-cal-card.card{padding:12px}.class-cal-card .cal-dow-row{gap:3px;margin-top:4px}.class-cal-card .cal-grid{gap:5px;margin-top:6px;margin-bottom:12px}.class-cal-card .cal-cell{aspect-ratio:auto;min-height:44px;font-size:var(--fs-ui);border-radius:10px}.class-cal-card .cal-cell.has-class-names{aspect-ratio:auto;gap:4px;min-height:68px;padding:7px 3px}.class-cal-card .admin-cal-class-list{gap:2px;font-size:10px;line-height:1.1}.class-cal-card .admin-cal-class-list span{white-space:normal;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box}.class-cal-card .admin-cal-class-list small{font-size:9px}.class-cal-card .cal-legend{gap:7px 12px;margin-bottom:2px}.class-calendar-day-card.card{padding:14px}}.segmented{background:var(--ink-tint);border:1px solid var(--hairline);border-radius:var(--r-pill);gap:3px;margin-bottom:18px;padding:4px;display:flex}.segmented button{border-radius:var(--r-pill);font-size:var(--fs-ui);color:var(--ink-soft);text-align:center;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);flex:1;padding:10px 4px;font-weight:600}.segmented button.active{background:var(--ink);color:var(--white);box-shadow:var(--e1)}.segmented-count{border-radius:var(--r-pill);background:var(--yellow-pale);min-width:19px;height:19px;color:var(--yellow-dark);font-family:var(--font-display);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;vertical-align:middle;place-items:center;margin-left:6px;padding:0 6px;font-weight:700;line-height:1;display:inline-grid}.segmented button.active .segmented-count{background:var(--yellow);color:var(--ink)}.screen-tabs{align-items:center;gap:10px;margin-bottom:18px;display:flex}.screen-tabs>.segmented{flex:1;min-width:0;max-width:420px;margin-bottom:0}.screen-tabs>.segmented+*{margin-left:auto}.role-toggle{background:var(--ink-tint);border:1px solid var(--hairline);border-radius:var(--r-pill);gap:3px;width:fit-content;margin:0 auto 28px;padding:4px;display:flex}.role-toggle button{border-radius:var(--r-pill);font-size:var(--fs-ui);color:var(--ink-soft);transition:all var(--dur) var(--ease);padding:9px 20px;font-weight:600}.role-toggle button.active{background:var(--ink);color:var(--white);box-shadow:var(--e1)}.status-picker{font-size:var(--fs-ui);flex:1 0 100%;gap:8px;display:flex}.status-pick{border-radius:var(--r-sm);background:var(--surface-alt);min-width:62px;min-height:48px;box-shadow:inset 0 0 0 1px var(--hairline);color:var(--ink-soft);transition:background var(--dur) var(--ease), color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), transform var(--dur-fast) var(--ease);flex:1;justify-content:center;align-items:center;padding:12px 10px;font-weight:600;display:flex}button.status-pick:active:not(:disabled){transform:scale(.96)}button.status-pick:disabled{opacity:.55}.status-pick.is-static{box-shadow:inset 0 0 0 1px var(--hairline-soft);color:var(--ink-faint);cursor:default;background:0 0}.status-pick.active.present{background:var(--green);box-shadow:inset 0 0 0 1px var(--green), var(--e1);color:var(--white)}.status-pick.active.leave{background:var(--blue);box-shadow:inset 0 0 0 1px var(--blue), var(--e1);color:var(--white)}.status-pick.active.absent{background:var(--red);box-shadow:inset 0 0 0 1px var(--red), var(--e1);color:var(--white)}.attendance-page-heading{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px;display:flex}.attendance-page-heading .h-app,.attendance-page-heading .sub-app{margin-bottom:0}.attendance-date-field{color:var(--ink-soft);font-size:var(--fs-ui);flex:0 0 220px;gap:6px;font-weight:700;display:grid}.attendance-date-field .ant-picker{width:100%}.attendance-filter-bar{align-items:flex-end;margin-bottom:14px;display:flex}.attendance-session-field{width:min(100%,360px);color:var(--ink-soft);font-size:var(--fs-ui);gap:6px;font-weight:700;display:grid}.attendance-session-field .ant-select{width:100%}.attendance-table-grid{min-width:1120px}.attendance-table-grid td{padding-block:10px}.attendance-table-date,.attendance-table-time{font-variant-numeric:tabular-nums;white-space:nowrap}.attendance-table-time{color:var(--ink-soft);font-weight:700}.attendance-student{align-items:center;gap:9px;min-width:170px;display:flex}.attendance-student>div{gap:3px;display:grid}.attendance-student strong{line-height:1.25}.attendance-student .badge{width:fit-content}.attendance-table-grid .status-picker{min-width:212px}.attendance-table-grid .status-pick{min-width:0;min-height:40px;padding:8px}.attendance-reason{resize:vertical;border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface);width:100%;min-width:230px;min-height:48px;color:var(--ink);font:inherit;padding:8px 10px;line-height:1.45;display:block}.attendance-reason::placeholder{color:var(--ink-faint)}.attendance-reason:focus{border-color:var(--blue);outline:2px solid var(--blue-pale);outline-offset:1px}.attendance-reason:disabled{cursor:not-allowed;background:var(--surface-alt);color:var(--ink-faint)}.attendance-mobile-row{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--e1);gap:10px;padding:14px;display:grid}.attendance-mobile-head{gap:8px;display:grid}.attendance-mobile-head>span{color:var(--ink-soft);font-size:var(--fs-ui);font-variant-numeric:tabular-nums}.attendance-mobile-priority{border-block:1px solid var(--hairline-soft);min-height:32px;color:var(--ink-soft);font-size:var(--fs-ui);justify-content:space-between;align-items:center;padding-block:4px;display:flex}.attendance-mobile-priority>span:first-child{font-weight:600}.attendance-mobile-row .status-picker{width:100%}.attendance-mobile-row .attendance-reason{min-width:0}@media (width<=767px){.attendance-page-heading{flex-direction:column;align-items:stretch;gap:14px;margin-bottom:18px}.attendance-date-field{flex-basis:auto}.attendance-filter-bar{margin-bottom:12px}.attendance-session-field{width:100%}}@media (width>=1024px){.status-picker{flex:none}.status-pick{min-height:40px;padding:10px 14px}}.panel{animation:screenIn var(--dur) var(--ease-out)}.student-transfer-summary{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);width:100%;box-shadow:var(--e1);padding:14px}.student-transfer-summary-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.student-transfer-summary-head>div{min-width:0}.student-transfer-summary-title{color:var(--ink);align-items:center;gap:7px;line-height:1.4;display:flex}.student-transfer-summary-title .icon{color:var(--blue-ink)}.student-transfer-summary-meta{color:var(--ink-soft);font-size:var(--fs-compact);margin:3px 0 0;line-height:1.45}.student-transfer-summary-head .badge{flex-shrink:0}.student-transfer-pairs{flex-direction:column;gap:8px;margin-top:12px;display:flex}.student-transfer-pair{min-width:0}.student-transfer-pair-content{grid-template-columns:1fr;align-items:stretch;gap:0;display:grid}.student-transfer-slot{border:1px solid var(--hairline-soft);border-radius:var(--r-sm);background:var(--surface-alt);min-width:0;color:var(--ink);flex-direction:column;align-items:flex-start;gap:2px;padding:10px 11px;display:flex}.student-transfer-slot.is-to{background:var(--blue-pale);border-color:#3e8fe857}.student-transfer-slot-label{color:var(--ink-soft);font-size:var(--fs-compact);font-weight:700;line-height:1.35}.student-transfer-slot.is-to .student-transfer-slot-label{color:var(--blue-ink)}.student-transfer-slot strong,.student-transfer-slot>span:last-child{overflow-wrap:anywhere;max-width:100%}.student-transfer-slot strong{color:var(--ink);font-size:var(--fs-ui);line-height:1.45}.student-transfer-slot>span:last-child{color:var(--ink-soft);font-size:var(--fs-ui);line-height:1.5}.student-transfer-arrow{min-height:28px;color:var(--blue-ink);place-items:center;display:grid}.student-transfer-arrow .icon{transform:rotate(90deg)}.student-transfer-empty{color:var(--ink-soft);margin:12px 0 0;line-height:1.6}.student-transfer-kept{border-top:1px solid var(--hairline-soft);color:var(--ink-soft);font-size:var(--fs-compact);align-items:flex-start;gap:7px;margin:12px 0 0;padding-top:10px;line-height:1.5;display:flex}.student-transfer-kept .icon{color:var(--green);flex-shrink:0;margin-top:2px}@media (width>=640px){.student-transfer-summary{padding:16px}.student-transfer-pair-content{grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);gap:8px}.student-transfer-arrow{min-height:0}.student-transfer-arrow .icon{transform:none}}.panel-head{justify-content:space-between;align-items:center;gap:10px;margin:2px 0 10px;display:flex}.stepper{align-items:center;gap:13px;display:flex}.stepper button{width:36px;height:36px;box-shadow:inset 0 0 0 1px var(--hairline);background:var(--surface);transition:all var(--dur) var(--ease);border-radius:12px;justify-content:center;align-items:center;display:flex}.stepper button:hover{background:var(--ink);color:var(--white)}.stepper .icon{width:15px;height:15px}.stepper .val{font-family:var(--font-display);font-weight:600;font-size:var(--fs-title-sm);text-align:center;font-variant-numeric:tabular-nums;min-width:26px}.toggle{background:var(--ink-tint);cursor:pointer;width:44px;height:26px;transition:background var(--dur) var(--ease);border-radius:99px;flex-shrink:0;position:relative}.toggle:after{content:"";background:var(--surface);width:20px;height:20px;transition:all var(--dur) var(--ease);border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #132a5247}.toggle.on{background:var(--blue)}.toggle.on:after{background:var(--white);left:21px}.icon-action{background:var(--surface);width:36px;height:36px;box-shadow:inset 0 0 0 1px var(--hairline);color:var(--ink-soft);transition:all var(--dur) var(--ease);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.icon-action:hover{background:var(--ink);color:var(--white);box-shadow:var(--e1)}.icon-action.danger{color:var(--red)}.icon-action.danger:hover{background:var(--red);color:var(--white)}.icon-action.is-on{color:var(--green);background:var(--green-pale)}.icon-action.is-on:hover{background:var(--green);color:var(--white)}.icon-action:disabled{opacity:.38;cursor:not-allowed}.icon-action:disabled:hover{background:var(--surface);color:var(--ink-soft);box-shadow:inset 0 0 0 1px var(--hairline)}.class-toggle{background:var(--hairline);width:40px;height:22px;transition:background var(--dur) var(--ease);border-radius:999px;flex-shrink:0;position:relative}.class-toggle:after{content:"";background:var(--white);width:18px;height:18px;box-shadow:var(--e1);transition:transform var(--dur) var(--ease);border-radius:50%;position:absolute;top:2px;left:2px}.class-toggle.is-on{background:var(--green)}.class-toggle.is-on:after{transform:translate(18px)}.icon-action.confirming{background:var(--red);color:var(--white);width:auto;font-size:var(--fs-ui);white-space:nowrap;box-shadow:var(--e1);padding:0 13px;font-weight:700}.back-circle{background:var(--surface);width:38px;height:38px;box-shadow:inset 0 0 0 1px var(--hairline);transition:all var(--dur) var(--ease);border-radius:13px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.back-circle:hover{background:var(--ink);color:var(--white)}.export-btn{background:var(--ink);width:40px;height:40px;color:var(--white);box-shadow:var(--e2);transition:all var(--dur) var(--ease);border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.export-btn:hover{background:var(--navy-800);box-shadow:var(--e3);transform:translateY(-1px)}.export-btn .icon{width:17px;height:17px}.export-btn.sm{width:32px;height:32px}.export-btn.sm .icon{width:15px;height:15px}.expand-actions{flex-direction:column;gap:8px;margin-top:4px;display:flex}.modal-overlay{z-index:50;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:modalFade var(--dur) var(--ease-out);background:#060d1c8c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--r-lg);width:100%;max-width:420px;max-height:calc(100vh - 40px);box-shadow:var(--e3);animation:modalRise var(--dur-slow) var(--ease-out);padding:20px;overflow-y:auto}@keyframes modalFade{0%{opacity:0}to{opacity:1}}@keyframes modalRise{0%{opacity:0;transform:translateY(18px)scale(.98)}to{opacity:1;transform:none}}.modal-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.modal-kicker{font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.18em;text-transform:uppercase;color:var(--blue-ink);align-items:center;gap:9px;font-weight:600;display:flex}.modal-kicker:before{content:"";background:linear-gradient(90deg, var(--blue), var(--yellow));border-radius:99px;width:22px;height:2.5px}.modal-student{background:var(--surface-alt);border-radius:var(--r-sm);box-shadow:inset 0 0 0 1px var(--hairline);align-items:center;gap:12px;margin-bottom:14px;padding:12px;display:flex}.avatar-photo-btn{border-radius:999px;width:24px;height:24px;position:absolute;bottom:-4px;right:-4px}.avatar-photo-btn .icon{width:12px;height:12px}.modal-text{font-size:var(--fs-ui);color:var(--ink-soft);margin:0 0 18px;line-height:1.7}.makeup-adjust-balance{background:var(--surface-alt);border-radius:var(--r-sm);box-shadow:inset 0 0 0 1px var(--hairline);justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:12px 14px;display:flex}.makeup-adjust-balance .card-stat-value{font-size:var(--fs-h3)}.modal .segmented{margin-bottom:14px}.modal-actions{gap:10px;display:flex}.modal-actions .btn{flex:1}.modal--edit-user{max-width:640px}.modal--registration-missing{max-width:680px;max-height:calc(100dvh - 40px)}@media (width>=640px){.modal--edit-user .modal-form{grid-template-columns:1fr 1fr;column-gap:16px;display:grid}.modal--edit-user .modal-field--wide{grid-column:1/-1}}.reset-code-card{background:linear-gradient(152deg, var(--ink) 0%, var(--navy-900) 62%, var(--navy-950) 100%);border-radius:var(--r-md);text-align:center;margin-bottom:14px;padding:16px;position:relative;overflow:hidden}.reset-code-card:before{content:"";pointer-events:none;background:repeating-linear-gradient(45deg,#ffffff0a 0 9px,#0000 9px 18px);position:absolute;inset:0}.reset-code-label{font-size:var(--fs-ui);color:#ffffffb8;font-weight:600;position:relative}.reset-code-value{font-family:var(--font-mono);font-weight:700;font-size:var(--fs-display);letter-spacing:.42em;text-indent:.42em;font-variant-numeric:tabular-nums;color:var(--yellow);margin:8px 0 12px;position:relative}.reset-code-meta{justify-content:center;align-items:center;display:flex;position:relative}.reset-code-meta .invite-meta{color:#fff}.reset-expiry{font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;color:#ffffffb3;align-items:center;gap:6px;font-weight:600;display:inline-flex}.reset-expiry .icon{width:13px;height:13px;color:var(--yellow)}@media (width>=1024px){.expand-actions{flex-flow:wrap}.expand-actions .btn{flex:160px}}.month-switch{justify-content:space-between;align-items:center;margin:8px 0 18px;display:flex}.dsk-month-controls{align-items:center;gap:8px;display:flex}.dsk-month-controls .month-switch{flex:1;min-width:0}.month-today-btn{border:1px solid var(--hairline);background:var(--surface-alt);min-height:36px;color:var(--blue-ink);font-size:var(--fs-ui);white-space:nowrap;transition:background var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease);border-radius:12px;padding:0 12px;font-weight:700}.month-today-btn:hover:not(:disabled){border-color:var(--blue);background:var(--blue-pale);color:var(--ink)}.month-today-btn:disabled{cursor:default;opacity:.55}.class-add-button{border-radius:var(--r-sm);width:auto;height:40px;font-size:var(--fs-ui);white-space:nowrap;gap:7px;padding:0 13px;font-weight:700}.month-switch.is-flush{margin-top:0}.month-switch .lbl{font-family:var(--font-display);font-weight:600;font-size:var(--fs-ui);letter-spacing:-.015em;position:relative}.month-switch-current{cursor:pointer;border-radius:12px;justify-content:center;align-items:center;min-width:0;min-height:36px;padding:0 8px;display:inline-flex;position:relative}.month-switch-picker.ant-picker{min-width:150px;height:36px;box-shadow:none;background:0 0;border:0;flex:0 auto;padding:0 8px}.month-switch-picker.ant-picker:hover,.month-switch-picker.ant-picker-focused{background:var(--ink-tint);box-shadow:none;border:0}.month-switch-picker .ant-picker-input>input{color:var(--ink);font-family:var(--font-display);font-size:var(--fs-ui);text-align:center;font-weight:600}.month-switch-current:has(input):hover{background:var(--ink-tint)}.month-switch-current input[type=month]{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.month-switch button{background:var(--surface);width:36px;height:36px;box-shadow:inset 0 0 0 1px var(--hairline);transition:all var(--dur) var(--ease);border-radius:12px;justify-content:center;align-items:center;display:flex}.month-switch button:hover{background:var(--ink);color:var(--white)}.month-switch .icon{width:15px;height:15px}.expand-panel,.crud-panel{background:var(--surface-alt);border-radius:var(--r-sm);box-shadow:inset 0 0 0 1px var(--hairline);margin-top:12px;padding:14px}.crud-panel{animation:screenIn var(--dur) var(--ease-out)}.expand-panel .erow,.crud-panel .erow{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.expand-panel .erow:last-child,.crud-panel .erow:last-child{margin-bottom:0}.erow-label{font-size:var(--fs-ui);color:var(--ink);font-weight:600}.card-stat{text-align:center}.card-stat-label{font-size:var(--fs-ui);color:var(--ink-soft);font-weight:600;display:block}.card-stat-value{font-family:var(--font-display);font-size:var(--fs-display);font-variant-numeric:tabular-nums;margin:4px 0;font-weight:700}.card-stat-note{font-size:var(--fs-ui);color:var(--ink-faint)}.card-stat-note.urgent{color:var(--red);font-weight:600}.card-stat .countdown-chip{font-size:var(--fs-title-sm);margin:8px auto 4px;padding:9px 18px;display:inline-flex}.teacher-select{flex-wrap:wrap;gap:6px;display:flex}.teacher-chip{border-radius:var(--r-pill);min-height:38px;box-shadow:inset 0 0 0 1px var(--hairline);background:var(--surface);font-size:var(--fs-ui);color:var(--ink-soft);transition:all var(--dur) var(--ease);padding:9px 14px;font-weight:600}.teacher-chip.active{background:var(--ink);color:var(--white);box-shadow:var(--e1)}.session-row{border-radius:var(--r-sm);background:var(--surface-alt);box-shadow:inset 0 0 0 1px var(--hairline);margin-bottom:10px;padding:12px}.session-row-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.session-row-head span{font-size:var(--fs-ui);color:var(--ink-faint);font-weight:600}.session-row-head .session-row-warning{border-radius:var(--r-pill);background:var(--yellow-pale);color:var(--yellow-dark);font-size:var(--fs-ui);white-space:nowrap;margin-left:8px;margin-right:auto;padding:2px 8px;font-weight:700}.class-capacity-fields{gap:16px;display:flex}.class-capacity-field{flex:1;min-width:0}.class-impact{font-size:var(--fs-ui);color:var(--ink);line-height:1.5}.class-impact-headline{color:var(--ink-soft);margin:0 0 8px}.class-impact-rounds{flex-direction:column;gap:10px;max-height:260px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.class-impact-rounds>li{border-radius:var(--r-sm);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hairline);padding:8px 10px}.class-impact-round{font-weight:700;display:block}.class-impact-count{color:var(--ink-faint);font-size:var(--fs-ui);margin-bottom:6px;display:block}.class-impact-students{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.class-impact-students>li{border-radius:var(--r-pill);background:var(--surface-alt);font-size:var(--fs-ui);align-items:center;gap:5px;padding:3px 8px;display:inline-flex}.class-impact-kind{font-size:var(--fs-ui);color:var(--ink-faint);font-weight:700}.class-impact-kind.kind-booked{color:var(--red)}.class-impact-kind.kind-makeup{color:var(--yellow-dark)}.session-row-fields{flex-direction:column;gap:12px;display:flex}.session-row-fields .day-row{flex-wrap:nowrap}.session-row-fields .day-chip{flex:1 1 0;min-width:0;max-width:40px;min-height:0}.time-range-field{align-items:center;gap:4px;display:flex}.session-chip-row{flex-wrap:wrap;gap:6px;margin:10px 0 2px;display:flex}.session-chip{border-radius:var(--r-pill);background:var(--surface-alt);box-shadow:inset 0 0 0 1px var(--hairline);font-size:var(--fs-ui);color:var(--ink-soft);white-space:nowrap;align-items:center;gap:5px;padding:6px 10px;font-weight:600;display:inline-flex}.session-chip .icon{width:12px;height:12px;color:var(--ink-faint);flex-shrink:0}.session-chip-text{min-width:0}.data-table,.data-table-frame{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);width:100%;min-width:0;box-shadow:var(--e1);overflow:hidden}.data-table-scroll,.data-table-frame-scroll{overscroll-behavior-x:contain;width:100%;max-width:100%;overflow-x:auto}.data-table-table{border-collapse:separate;border-spacing:0;width:100%;min-width:700px;font-size:var(--fs-ui)}.data-table-table th{background:var(--table-head);color:var(--table-head-fg);text-align:left;font-size:var(--fs-ui);letter-spacing:.04em;white-space:nowrap;padding:12px 14px;font-weight:700}.data-table-table th.num,.data-table-table td.num{text-align:right;font-variant-numeric:tabular-nums}.data-table-sort{min-height:28px;color:inherit;font:inherit;letter-spacing:inherit;text-align:left;align-items:center;gap:5px;padding:0;display:inline-flex}.data-table-sort:hover{color:var(--table-head-fg)}.data-table-sort .icon{color:var(--table-head-fg);opacity:.6}.data-table-sort .icon.active{opacity:1}.data-table-table td{border-top:1px solid var(--hairline-soft);color:var(--ink);vertical-align:middle;padding:14px}.data-table-table tbody tr:nth-child(2n) td{background:var(--surface-alt)}.data-table-table tbody tr:hover td{background:var(--ink-tint)}.data-table-sticky-col{position:sticky;left:0}.data-table-table thead .data-table-sticky-col{z-index:3}.data-table-table tbody td.data-table-sticky-col{z-index:1;background:var(--surface)}.data-table-table tbody tr:nth-child(2n) td.data-table-sticky-col{background:var(--surface-alt)}.data-table-table tbody tr:hover td.data-table-sticky-col{background:var(--ink-tint)}.data-table-expanded-row td{padding:0;background:var(--surface-alt)!important}.data-table-shim{background:linear-gradient(90deg, var(--ink-tint), #e6edf7, var(--ink-tint));height:12px;animation:data-table-shimmer 1.2s var(--ease) infinite;background-size:200% 100%;border-radius:6px;display:block}@keyframes data-table-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.data-table-mobile{display:none}.data-table-mobile-loading,.data-table-empty{min-height:110px;color:var(--ink-soft);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:9px;padding:26px 16px;display:flex}.data-table-mobile-loading{text-align:left;align-items:stretch;min-height:0;padding:0}.data-table-mobile-shim{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);min-height:82px;box-shadow:var(--e1);grid-template-columns:42px minmax(0,1fr) 42px;align-items:center;gap:12px;padding:14px 16px;display:grid}.data-table-mobile-shim span{border-radius:var(--r-pill);background:linear-gradient(90deg, var(--ink-tint), #e6edf7, var(--ink-tint));height:11px;animation:data-table-shimmer 1.2s var(--ease) infinite;background-size:200% 100%;display:block}.data-table-mobile-shim span:first-child{border-radius:var(--r-sm);height:42px}.data-table-mobile-shim span:last-child{justify-self:end}.data-table-empty p{font-size:var(--fs-ui);margin:0}.data-table-empty .icon{color:var(--ink-faint)}.today-students-heading{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.today-students-heading .sub-app{margin-bottom:0}.today-students-count{border-radius:var(--r-pill);background:var(--ink-tint);color:var(--ink);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;flex:none;padding:7px 11px;font-weight:700}.today-students-time{color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.today-students-name{align-items:center;gap:9px;min-width:0;font-weight:700;display:inline-flex}.today-students-name img{border-radius:var(--r-sm);object-fit:cover;flex:none;width:30px;height:30px}.today-students-error{justify-content:space-between;align-items:center;gap:16px;display:flex}.today-students-error p{color:var(--red);margin:0}.today-students-mobile-sort{display:none}.today-students-mobile-row{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--e1);grid-template-columns:auto minmax(0,1fr);gap:5px 12px;padding:14px 16px;display:grid}.today-students-mobile-main{min-width:0}.today-students-mobile-main>span{color:var(--ink-soft);font-size:var(--fs-ui);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;display:block;overflow:hidden}.today-students-mobile-meta{grid-column:1/-1;align-items:center;gap:6px;padding-left:0;display:flex}@media (width<=767px){.today-students-heading{align-items:flex-start}.today-students-error{flex-direction:column;align-items:flex-start}.today-students-mobile-sort{color:var(--ink-soft);font-size:var(--fs-ui);justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;font-weight:700;display:flex}.today-students-mobile-sort .ant-select{width:190px;min-width:190px}}.data-table-pagination{color:var(--ink-soft);font-size:var(--fs-ui);flex-wrap:wrap;justify-content:center;align-items:center;padding:12px 8px 2px;display:flex}.data-table-pagination .ant-pagination{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 12px;margin:0;display:flex}.data-table-pagination .ant-pagination-total-text{color:var(--ink-soft);font-size:var(--fs-ui);margin-inline-end:0}.data-table-pagination .ant-pagination-item,.data-table-pagination .ant-pagination-prev,.data-table-pagination .ant-pagination-next{min-width:40px;height:40px;margin-inline-end:0}.data-table-pagination .ant-pagination-item,.data-table-pagination .ant-pagination-item-link{border-radius:var(--r-xs);height:40px;line-height:38px}.data-table-pagination .ant-pagination-options{margin-inline-start:0}.data-table-footer{border-top:1px solid var(--hairline-soft);min-height:52px;color:var(--ink-soft);font-size:var(--fs-ui);justify-content:space-between;align-items:center;gap:12px;padding:0 14px;display:flex}.data-table-footer .data-table-pagination{justify-content:flex-start;padding:0}.data-table-footer .data-table-pagination .ant-pagination{justify-content:flex-start}.data-table-count{text-align:right;white-space:nowrap;margin-left:auto}.data-table-count strong{color:var(--ink);font-variant-numeric:tabular-nums}@media (width<=767px){.data-table-footer{flex-direction:column;justify-content:center;align-items:flex-start;gap:0;padding-block:10px}.data-table-count{text-align:left;margin-left:0}}@media (prefers-reduced-motion:reduce){.data-table-shim,.data-table-mobile-shim span{animation:none}}@media (width<=767px){.data-table--responsive{box-shadow:none;background:0 0;border:0;overflow:visible}.data-table--responsive>.data-table-scroll{display:none}.data-table--responsive>.data-table-mobile{flex-direction:column;gap:10px;display:flex}.data-table--responsive .data-table-empty{min-height:84px;padding-inline:0}.data-table-table .hide-mobile,.data-table-table .hide-mobile+td{display:none}}@media (width>=768px){.data-table-table .data-table-sticky-col{position:static}}.admin-roster-table{animation:screenIn var(--dur) var(--ease-out)}.admin-table{min-width:1180px}.admin-table--wide{min-width:1660px}.admin-table td{white-space:nowrap}.admin-table-person{align-items:center;gap:10px;min-width:0;display:flex}.admin-table-person-copy{flex-direction:column;align-items:flex-start;gap:3px;min-width:0;display:flex}.admin-table-person-copy strong,.admin-table-person-copy span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.admin-table-person-copy strong{color:var(--ink);font-weight:700}.admin-table-person-copy>span{color:var(--ink-soft);font-size:var(--fs-ui)}.admin-table-badges{flex-wrap:wrap;gap:4px;max-width:330px;margin-top:2px;display:flex}.admin-table-badges .badge{font-size:var(--fs-ui);padding:3px 7px}.admin-table-actions-head,.admin-table-actions-cell{text-align:left}.admin-table-actions-cell{white-space:normal!important}.admin-table-number{color:var(--blue-ink);font-family:var(--font-display);font-variant-numeric:tabular-nums;font-weight:700}.admin-table-number.is-empty{color:var(--red)}.admin-table-muted{color:var(--ink-faint)}.admin-table-meta{color:var(--ink-soft);font-size:var(--fs-ui)}.admin-table tbody tr.is-selected td{background:var(--blue-pale)}.invite-table-check-cell{text-align:center;vertical-align:middle!important}.invite-bulk-bar{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e1);justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;display:flex}.invite-bulk-count{color:var(--ink-soft);font-size:var(--fs-ui)}.invite-bulk-count strong{color:var(--ink);font-variant-numeric:tabular-nums}.invite-bulk-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.invite-bulk-list{flex-wrap:wrap;gap:6px;max-height:170px;margin-top:10px;display:flex;overflow-y:auto}.invite-bulk-chip{border:1px solid var(--hairline);background:var(--surface-alt);color:var(--ink);font-size:var(--fs-ui);border-radius:999px;padding:4px 10px;font-weight:700}.invite-bulk-warning{color:var(--ink-soft)}.invite-mobile-select{align-items:center;gap:6px;min-width:0;display:flex}.admin-mobile-row.is-selected{background:var(--blue-pale)}@media (width<=767px){.invite-bulk-bar{flex-direction:column;align-items:stretch}.invite-bulk-actions{width:100%}.invite-bulk-actions>*{flex:1}}.student-actions{flex-direction:column;gap:9px;min-width:0;display:flex}.student-action-buttons{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.student-action-button{white-space:nowrap;width:100%;min-width:0;min-height:44px;padding-inline:10px}.student-action-button .icon{flex-shrink:0}.student-action-button--danger{color:var(--red)}.student-action-button--danger:hover{border-color:var(--red);background:var(--red-pale);color:var(--red)}.admin-table-note{white-space:normal;margin:10px 0 0}.admin-mobile-row{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);min-width:0;box-shadow:var(--e1);padding:13px}.admin-mobile-row-head{width:100%;color:inherit;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:flex-start;gap:10px;padding:0;display:flex}.admin-mobile-row-side{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:7px;min-width:0;padding-top:1px;display:flex}.admin-mobile-row .student-actions{border-top:1px solid var(--hairline-soft);margin-top:12px;padding-top:12px}.admin-mobile-row--single{justify-content:space-between;align-items:center;gap:12px;display:flex}.admin-mobile-row--single .admin-mobile-row-meta{flex-shrink:0}.admin-mobile-row .admin-table-badges{max-width:230px}.admin-mobile-row .invite-meta,.admin-mobile-row .invite-expired{color:var(--ink-soft);font-size:var(--fs-ui);white-space:nowrap}.hol-table-frame{box-shadow:none;background:0 0;border:0;border-radius:0;overflow:visible}@media (width<=479px){.admin-mobile-row--single{flex-direction:column;align-items:flex-start}.admin-mobile-row--single .admin-mobile-row-meta{justify-content:flex-start;width:100%}}.student-card{border-radius:var(--r-md);padding:14px}.student-card-head{align-items:flex-start;gap:11px;min-width:0;display:flex}.student-card-copy{flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:0;display:flex}.student-card-name{max-width:100%;color:var(--ink);font-family:var(--font-display);letter-spacing:-.012em;text-overflow:ellipsis;white-space:nowrap;font-size:17px;font-weight:700;overflow:hidden}.student-card-meta{max-width:100%;color:var(--ink-soft);font-size:var(--fs-compact);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.student-card .admin-table-badges{max-width:100%;margin-top:5px}.student-card .admin-table-badges .badge{font-size:var(--fs-compact);padding:3px 9px}.student-card-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.student-card-metric{border-radius:var(--r-sm);background:var(--surface-alt);box-shadow:inset 0 0 0 1px var(--hairline-soft);flex-direction:column;align-items:flex-start;gap:1px;padding:8px 12px 9px;display:flex}.student-card-metric-label{color:var(--ink-soft);font-size:var(--fs-compact);white-space:nowrap;font-weight:600}.student-card-metric-value{color:var(--blue-ink);font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:20px;font-weight:700;line-height:1.15}.student-card-metric-value span{color:var(--ink-soft);font-family:var(--font-body);font-size:var(--fs-compact);margin-left:3px;font-weight:600}.student-card-metric.is-empty .student-card-metric-value,.student-card-metric.is-empty .student-card-metric-value span{color:var(--red)}.student-card .student-actions{border-top:1px solid var(--hairline-soft);margin-top:13px;padding-top:13px}.student-card .student-action-buttons{gap:7px}.student-card .student-action-button{background:var(--surface-alt);min-height:44px;font-size:var(--fs-compact);border-color:#0000;border-radius:13px;padding-inline:8px;font-weight:600}.student-card .student-action-button:hover{background:var(--ink-tint)}.student-card .student-action-button .icon{width:15px;height:15px}.student-card .student-action-button--primary{border-color:var(--ink);background:var(--ink);color:var(--white);box-shadow:var(--e1)}.student-card .student-action-button--primary:hover{background:var(--navy-800);color:var(--white)}.student-card .student-action-button--credit{background:var(--surface-alt);color:var(--ink)}.student-card .student-action-button--credit .icon{color:var(--yellow-deep)}.student-card .student-action-button--credit:hover{background:var(--yellow-pale);box-shadow:inset 0 0 0 1px var(--yellow)}.student-card .student-action-button--danger{border-color:var(--hairline);color:var(--red);background:0 0}.student-card .student-action-button--danger:hover{border-color:var(--red-pale);background:var(--red-pale);color:var(--red)}.admin-roster-table .data-table-mobile{gap:12px}.admin-roster-table .data-table-mobile>div{animation:screenIn var(--dur-slow) var(--ease-out) both}.admin-roster-table .data-table-mobile>div:nth-child(2){animation-delay:45ms}.admin-roster-table .data-table-mobile>div:nth-child(3){animation-delay:90ms}.admin-roster-table .data-table-mobile>div:nth-child(4){animation-delay:.135s}.admin-roster-table .data-table-mobile>div:nth-child(n+5){animation-delay:.18s}.class-table-shell{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);width:100%;min-width:0;box-shadow:var(--e1);animation:screenIn var(--dur) var(--ease-out);overflow:hidden}.class-table-scroll{overscroll-behavior-x:contain;width:100%;max-width:100%;overflow-x:auto}.class-table{border-collapse:separate;border-spacing:0;width:100%;min-width:1020px;font-size:var(--fs-ui)}.class-table th{background:var(--table-head);color:var(--table-head-fg);text-align:left;font-size:var(--fs-ui);letter-spacing:.08em;white-space:nowrap;padding:11px 14px;font-weight:700}.class-table td{border-top:1px solid var(--hairline-soft);color:var(--ink);vertical-align:top;padding:14px}.class-table-row{transition:background var(--dur) var(--ease)}.class-table-row:hover td{background:var(--ink-tint)}.class-table-class-cell{width:210px}.class-table-title-line{align-items:flex-start;gap:8px;margin-bottom:9px;display:flex}.class-table-name{min-width:0;font-size:var(--fs-ui);flex:1;font-weight:700;line-height:1.3}.class-table-stack{flex-direction:column;gap:8px;display:flex}.class-table-stack-row{white-space:nowrap;align-items:center;min-height:25px;line-height:1.35;display:flex}.weekday-indicator{gap:4px;display:inline-flex}.weekday-indicator-day{background:var(--ink-tint);width:22px;height:22px;color:var(--ink-faint);font-size:var(--fs-ui);border-radius:50%;justify-content:center;align-items:center;font-weight:600;line-height:1;display:inline-flex}.weekday-indicator-day.is-active{background:var(--blue-ink);color:var(--white);font-family:var(--font-display);font-weight:700}.weekday-indicator-day.is-holiday{background:var(--red-pale);color:var(--red);box-shadow:inset 0 0 0 1px #cf44383d}.weekday-indicator-day.is-active.is-holiday{background:var(--red);color:var(--white);box-shadow:0 2px 6px #cf44383d}.class-table-muted{color:var(--ink-faint);font-size:var(--fs-ui)}.class-table-seat-cell{font-variant-numeric:tabular-nums;width:148px;min-width:148px}.class-table-seat-row{align-items:baseline;gap:5px;display:flex}.class-table-seat-row strong{font-family:var(--font-display);font-size:var(--fs-ui);letter-spacing:-.02em;font-weight:600}.class-table-makeup-cell{width:130px;min-width:130px}.class-table-makeup-row>strong{color:var(--ink-soft)}.class-table-day-cell{min-width:190px}.class-table-day-detail-trigger{border:1px solid var(--hairline);background:var(--surface);max-width:100%;min-height:44px;color:var(--blue-ink);font-size:var(--fs-ui);cursor:pointer;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease), transform var(--dur-fast) var(--ease);border-radius:10px;align-items:center;gap:6px;margin-top:8px;padding:7px 9px;font-weight:700;display:inline-flex}.class-table-day-detail-trigger:hover,.class-table-day-detail-trigger.is-open{border-color:var(--blue);background:var(--blue-pale);color:var(--ink)}.class-table-day-detail-trigger:active{transform:scale(.98)}.class-table-day-detail-trigger small{color:var(--ink-soft);font-size:var(--fs-ui);white-space:nowrap;margin-left:2px;font-weight:600}.class-card-seat-detail-trigger{justify-content:flex-start;width:100%;display:flex}.class-card-seat-detail-trigger small{margin-left:auto}.class-seat-detail-modal-body{flex-direction:column;gap:12px;display:flex}.class-seat-detail-meta{border:1px solid var(--hairline-soft);border-radius:var(--r-sm);background:var(--surface-alt);color:var(--ink-soft);font-size:var(--fs-ui);flex-wrap:wrap;gap:6px 14px;padding:10px 12px;display:flex}.class-seat-detail-meta span{align-items:center;gap:5px;display:inline-flex}.seat-detail-list{flex-direction:column;gap:10px;max-height:min(62vh,600px);padding:1px 2px 2px;display:flex;overflow-y:auto}.seat-detail-card{border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface-alt);padding:13px}.seat-detail-card-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:11px;display:flex}.seat-detail-date{flex-direction:column;min-width:0;display:flex}.seat-detail-date strong{color:var(--ink);font-size:var(--fs-ui);font-weight:700}.seat-detail-date span{color:var(--ink-soft);font-size:var(--fs-ui)}.seat-detail-remaining{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:5px;display:flex}.seat-detail-remaining span{border-radius:var(--r-pill);background:var(--green-pale);color:var(--green);font-size:var(--fs-ui);white-space:nowrap;align-items:center;gap:4px;padding:4px 7px;font-weight:700;display:inline-flex}.seat-detail-remaining span.is-full{background:var(--red-pale);color:var(--red)}.seat-detail-remaining span.is-makeup-full{background:var(--yellow-pale);color:var(--yellow-dark)}.seat-detail-remaining>.badge{padding:4px 8px}.seat-detail-rosters{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.seat-detail-roster{border:1px solid var(--hairline-soft);border-radius:var(--r-xs);background:var(--surface);min-width:0;padding:10px}.seat-detail-roster.is-makeup{background:color-mix(in srgb, var(--yellow-pale) 42%, var(--surface))}.seat-detail-roster-heading{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.seat-detail-roster-heading strong{color:var(--ink);font-size:var(--fs-ui);font-weight:700}.seat-detail-roster-heading span{color:var(--ink-soft);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;white-space:nowrap}.seat-detail-student-list{flex-direction:column;gap:6px;max-height:162px;margin:8px 0 0;padding:0;list-style:none;display:flex;overflow-y:auto}.seat-detail-student{align-items:center;gap:8px;min-width:0;display:flex}.seat-detail-student-meta{flex-direction:column;min-width:0;display:flex}.seat-detail-student-meta strong,.seat-detail-student-meta small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.seat-detail-student-meta strong{color:var(--ink);font-size:var(--fs-ui);font-weight:700}.seat-detail-student-meta small{color:var(--ink-soft);font-size:var(--fs-ui)}.seat-detail-empty{color:var(--ink-faint);font-size:var(--fs-ui);margin:8px 0 0}.class-table-roster-trigger{border-radius:var(--r-xs);min-height:32px;color:var(--blue-ink);font-size:var(--fs-ui);text-align:left;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);align-items:center;gap:8px;padding:5px 8px;font-weight:600;display:inline-flex}.class-table-roster-trigger:hover{background:var(--blue-pale);color:var(--ink)}.class-table-roster-trigger small{color:var(--yellow-dark);font-size:var(--fs-ui);font-weight:700}.class-table-actions-cell{z-index:3;background:var(--surface);width:190px;min-width:190px;position:sticky;right:0}.class-table thead .class-table-actions-cell{background:var(--table-head)}.class-table-row:hover .class-table-actions-cell{background:var(--surface-alt)}.class-table-actions{justify-content:flex-end;align-items:center;gap:5px;min-height:36px;display:flex}.class-table-actions .icon-action{border-radius:10px;width:34px;height:34px}.class-table-detail-row td{background:var(--surface-alt);border-top:0;padding:0}.class-table-detail{border-top:1px dashed var(--hairline);border-bottom:1px solid var(--hairline-soft);padding:14px 16px 16px}.class-table-detail-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.class-table-detail-heading>div{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.class-table-detail-heading strong{font-size:var(--fs-ui)}.class-table-detail-heading span{color:var(--ink-soft);font-size:var(--fs-ui)}.class-table-student-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.class-table-student{border:1px solid var(--hairline-soft);border-radius:var(--r-sm);background:var(--surface);align-items:center;gap:9px;min-width:0;padding:8px 10px;display:flex}.class-table-student-meta{flex-direction:column;flex:1;min-width:0;display:flex}.class-table-student-meta .row-title,.class-table-student-meta .row-sub{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.class-table-student .badge{font-size:var(--fs-ui);flex-shrink:0;padding-inline:7px}.class-roster-modal .ant-modal-content{border-top:3px solid var(--yellow);padding:0;overflow:hidden}.class-roster-modal .ant-modal-header{background:var(--surface);margin-bottom:0;padding:20px 24px 16px}.class-roster-modal .ant-modal-title{min-width:0}.class-roster-modal .ant-modal-close{top:17px;color:var(--ink-faint);inset-inline-end:18px}.class-roster-modal .ant-modal-close:hover{color:var(--ink);background:var(--blue-pale)}.class-roster-modal-title{flex-direction:column;gap:2px;padding-right:32px;display:flex}.class-roster-modal-title span{color:var(--ink-soft);font-size:var(--fs-ui);font-weight:500}.class-roster-modal-title strong{color:var(--ink);font-family:var(--font-display);font-size:var(--fs-title-sm);letter-spacing:-.015em;text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.class-roster-modal .ant-modal-body{padding:0 24px 24px}.class-roster-modal-body{flex-direction:column;gap:20px;display:flex}.class-roster-summary{border:1px solid var(--hairline-soft);border-radius:var(--r-sm);background:var(--surface-alt);align-items:center;gap:22px;padding:14px 16px;display:flex}.class-roster-summary-stat{align-items:baseline;gap:7px;min-width:0;display:inline-flex}.class-roster-summary-stat+.class-roster-summary-stat{border-left:1px solid var(--hairline);padding-left:22px}.class-roster-summary-stat strong{color:var(--ink);font-family:var(--font-display);font-size:var(--fs-title-md);font-weight:600;line-height:1}.class-roster-summary-stat span{color:var(--ink-soft);font-size:var(--fs-ui);white-space:nowrap}.class-roster-summary-stat.is-makeup strong{color:var(--yellow-dark)}.class-roster-summary>.badge{margin-left:auto}.class-roster-section+.class-roster-section{border-top:1px solid var(--hairline);padding-top:18px}.class-roster-section-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.class-roster-section-heading>div{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.class-roster-section-heading h3{color:var(--ink);font-size:var(--fs-ui);margin:0;font-weight:700}.class-roster-section-heading span{color:var(--ink-soft);font-size:var(--fs-ui)}.class-roster-modal .class-table-student-list{grid-template-columns:1fr;gap:7px;max-height:min(42vh,360px);padding:1px 2px 2px;overflow-y:auto}.class-roster-modal .class-table-student{border-color:var(--hairline);border-radius:var(--r-sm);background:var(--surface);min-height:56px;transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);padding:9px 11px}.class-roster-modal .class-table-student:hover{background:var(--blue-pale);border-color:#3e8fe847}.class-roster-modal .class-table-student .avatar{flex:0 0 36px}.class-roster-modal .class-table-student-meta .row-title{font-weight:700}.class-roster-modal .class-table-student-meta .row-sub{color:var(--ink-soft)}.class-table-footnote{border-top:1px solid var(--hairline-soft);color:var(--ink-soft);font-size:var(--fs-ui);flex-wrap:wrap;align-items:center;gap:8px 16px;padding:10px 14px;display:flex}.class-table-footnote span{align-items:center;gap:5px;display:inline-flex}.class-table-dot{background:var(--ink-faint);border-radius:50%;width:7px;height:7px}.class-table-dot.is-open{background:var(--green)}.class-table-dot.is-closed{background:var(--red)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=639px){.class-table-student-list{grid-template-columns:1fr}.class-roster-modal .ant-modal-body,.class-roster-modal .ant-modal-header{padding-inline:16px}.class-roster-summary{gap:14px;padding-inline:12px}.class-roster-summary-stat+.class-roster-summary-stat{padding-left:14px}.class-roster-summary>.badge{display:none}.class-seat-detail-modal .ant-modal-body,.class-seat-detail-modal .ant-modal-header{padding-inline:16px}.seat-detail-card-head{flex-direction:column}.seat-detail-remaining{justify-content:flex-start}.seat-detail-rosters{grid-template-columns:1fr}.class-table-footnote{padding-inline:12px}}.class-schedule-list-mobile{flex-direction:column;gap:12px;width:100%;min-width:0;display:flex}.class-schedule-list-desktop{display:none}@media (width>=1280px){.class-schedule-list-mobile{display:none}.class-schedule-list-desktop{display:block}}@media (width<=1279px){.class-schedule-list-mobile .card{min-width:0;max-width:100%}.class-schedule-list-mobile .session-chip{white-space:normal;flex-wrap:wrap;width:100%;min-width:0;max-width:100%;line-height:1.45}.class-schedule-list-mobile .session-chip .weekday-indicator{flex:auto;justify-content:space-between}.class-schedule-list-mobile .session-chip-text{overflow-wrap:anywhere;flex:0 auto;min-width:0}}.scan-circle{cursor:pointer;background:radial-gradient(circle at 50% 42%, var(--white) 0%, var(--surface-alt) 100%);width:190px;height:190px;box-shadow:inset 0 0 0 2px var(--hairline), var(--e2);transition:all var(--dur-slow) var(--ease-out);border-radius:50%;justify-content:center;align-items:center;margin:22px auto 18px;display:flex;position:relative}.scan-circle:hover{box-shadow:inset 0 0 0 2px var(--ink-soft), var(--e3);transform:scale(1.02)}.scan-circle .icon{width:54px;height:54px;color:var(--ink);transition:color var(--dur) var(--ease)}.scan-circle .ring{border:2px solid var(--blue);opacity:.55;animation:pulseRing 2.6s var(--ease-out) infinite;border-radius:50%;position:absolute;inset:-10px}@keyframes pulseRing{0%{opacity:.55;transform:scale(1)}70%{opacity:0;transform:scale(1.09)}to{opacity:0}}.scan-circle.has-countdown{background:var(--blue-pale);box-shadow:inset 0 0 0 2px var(--blue), var(--e2)}.scan-countdown{color:var(--ink);font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.04em;font-size:46px;font-weight:700;line-height:1}.scan-wrap.counting .scan-idle-text{color:var(--blue-ink)}.scan-wrap.done .scan-circle{background:var(--green-pale);box-shadow:inset 0 0 0 2px var(--green), var(--e2)}.scan-wrap.done .scan-circle .icon{color:var(--green)}.scan-wrap.done .scan-circle .ring{display:none}.scan-wrap.done.tone-red .scan-circle{background:var(--red-pale);box-shadow:inset 0 0 0 2px var(--red), var(--e2)}.scan-wrap.done.tone-red .scan-circle .icon{color:var(--red)}.scan-wrap.done.tone-yellow .scan-circle{background:var(--yellow-pale);box-shadow:inset 0 0 0 2px var(--yellow-deep), var(--e2)}.scan-wrap.done.tone-yellow .scan-circle .icon{color:var(--yellow-dark)}.scan-idle-text{text-align:center;font-weight:600;font-size:var(--fs-ui)}.scan-done-text{text-align:center;animation:screenIn var(--dur) var(--ease-out)}.checkin-grid,.checkin-action,.checkin-rail{display:contents}.checkin-eyebrow{font-family:var(--font-mono);font-size:var(--fs-compact);letter-spacing:.18em;text-transform:uppercase;color:var(--blue-ink);margin:0 0 2px;font-weight:600}.checkin-date{align-items:center;gap:7px;margin-bottom:12px;display:flex}.checkin-date .icon{width:15px;height:15px;color:var(--ink-faint)}.checkin-primary-head{text-align:center;flex-direction:column;align-items:center;gap:9px;margin:4px 0 2px;display:flex}.checkin-class-name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-title-sm);letter-spacing:-.01em;color:var(--ink)}.checkin-time-chip{border-radius:var(--r-pill);background:var(--blue-pale);color:var(--blue-ink);font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;align-items:center;gap:6px;padding:5px 13px;font-weight:600;display:inline-flex}.checkin-time-chip .icon{width:14px;height:14px}.checkin-primary .checkin-meta{margin-top:18px}.checkin-secondary{margin-top:11px}.checkin-emergency{justify-content:center;margin-top:4px;display:flex}.rule-banner.checkin-rule-warning{border:1px solid var(--yellow-deep);background:var(--yellow-pale);color:var(--yellow-dark);margin:16px 0 0}.checkin-primary .checkin-rule-warning+.checkin-meta{margin-top:10px}.checkin-history-page{max-width:1180px}.checkin-history-head{margin-bottom:18px}.checkin-history-head .sub-app{margin-bottom:0}.checkin-history-table-frame{overflow:hidden}.checkin-history-table{min-width:820px}.checkin-history-table td{white-space:nowrap}.checkin-history-class{color:var(--ink);font-weight:700}.checkin-history-time,.checkin-history-marked{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.checkin-history-unmarked{color:var(--ink-faint)}.checkin-history-error{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.checkin-history-error .rule-banner{flex:280px;margin:0}.checkin-history-error .btn{flex-shrink:0}.checkin-history-empty{min-height:150px;margin-top:4px}.checkin-history-mobile{gap:10px}.checkin-history-mobile-row{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);min-width:0;box-shadow:var(--e1);transition:background var(--dur) var(--ease), transform var(--dur-fast) var(--ease);align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.checkin-history-mobile-row:active{transform:translateY(1px)}.checkin-history-mobile-date{border-radius:var(--r-sm);background:var(--surface-alt);width:58px;min-height:58px;color:var(--ink);text-align:center;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;padding:5px 3px;line-height:1.15;display:flex}.checkin-history-mobile-date strong{font-family:var(--font-display);font-size:var(--fs-title-sm);font-weight:700}.checkin-history-mobile-date span{color:var(--ink-soft);font-size:var(--fs-compact);white-space:nowrap;margin-top:3px}.checkin-history-mobile-main{flex-direction:column;flex:1;gap:3px;min-width:0;padding-top:1px;display:flex}.checkin-history-mobile-main strong{color:var(--ink);font-size:var(--fs-ui);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.checkin-history-mobile-main>span{color:var(--ink-soft);font-size:var(--fs-ui);line-height:1.45}.checkin-history-mobile-main .checkin-history-mobile-marked{color:var(--ink-faint);font-family:var(--font-body);font-size:var(--fs-compact)}.checkin-history-mobile-row>.badge{flex-shrink:0;margin-top:1px}@media (width>=1024px){.checkin-history-page{margin-inline:auto}}@media (prefers-reduced-motion:reduce){.checkin-history-mobile-row{transition:none}}.ci-count{border-radius:var(--r-pill);background:var(--blue-pale);color:var(--blue-ink);font-family:var(--font-mono);font-size:var(--fs-compact);letter-spacing:0;text-transform:none;margin-left:auto;padding:2px 10px;font-weight:600}.ci-next{margin-top:2px}.ci-next-head{justify-content:space-between;align-items:center;gap:10px;display:flex;position:relative}.ci-next-when{border-radius:var(--r-pill);color:var(--white);font-family:var(--font-mono);font-size:var(--fs-ui);white-space:nowrap;background:#ffffff1f;border:1px solid #ffffff3d;padding:4px 12px;font-weight:600}.ci-next-body{align-items:center;gap:14px;margin-top:15px;display:flex;position:relative}.ci-next-date{border-radius:var(--r-md);background:#ffffff1a;border:1px solid #ffffff2e;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;width:64px;height:64px;line-height:1;display:flex}.ci-next-date strong{font-family:var(--font-display);font-weight:700;font-size:var(--fs-title-md);color:var(--white)}.ci-next-date span{font-family:var(--font-mono);font-size:var(--fs-compact);color:var(--blue-bright);margin-top:5px}.ci-next-main{min-width:0}.ci-next-main h3{font-size:var(--fs-title-sm);margin:0 0 5px}.ci-next-time,.ci-next-kind,.ci-next-note{font-size:var(--fs-ui);align-items:center;gap:6px;margin:0;display:flex}.ci-next-time{color:#ffffffdb;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.ci-next-kind{color:var(--blue-bright);margin-top:3px}.ci-next-time .icon,.ci-next-kind .icon,.ci-next-note .icon{width:14px;height:14px}.ci-next-note{color:var(--yellow-pale);border-top:1px solid #ffffff24;margin-top:15px;padding-top:12px;position:relative}.ci-list-card{margin-top:11px}.ci-list{margin:0;padding:0;list-style:none}.ci-row{border-bottom:1px solid var(--hairline-soft);align-items:center;gap:12px;padding:12px 0;display:flex}.ci-row:last-child{border-bottom:none}.ci-date{border-radius:var(--r-sm);background:var(--surface-alt);width:42px;height:42px;color:var(--ink);flex-shrink:0;place-items:center;line-height:1;display:grid}.ci-date.is-today{background:var(--yellow-pale)}.ci-date .d{font-family:var(--font-display);font-weight:700;font-size:var(--fs-body-lg)}.ci-date .m{font-size:var(--fs-compact);color:var(--ink-faint);margin-top:3px}.ci-row-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.ci-row-title{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.ci-row-sub{font-size:var(--fs-helper);color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ci-more{border-top:1px solid var(--hairline-soft);text-align:center;font-size:var(--fs-helper);color:var(--ink-faint);margin:0;padding:10px 0 2px}.ci-state{text-align:center;flex-direction:column;align-items:center;gap:10px;display:flex}.ci-state>.icon{color:var(--blue-ink)}.ci-state p{margin:0}.ci-center{text-align:center;margin:0}.ci-all-link{text-align:center;justify-content:center;align-items:center;gap:6px;margin-top:6px;display:flex}@media (width>=1024px){.checkin-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start;gap:26px;display:grid}.checkin-action{min-width:0;display:block}.checkin-rail{min-width:0;display:block;position:sticky;top:32px}.checkin-rail .section-title:first-of-type{margin-top:0}}.step-track{gap:5px;margin:18px 0 0;display:flex}.step-seg{background:var(--ink-tint);height:5px;transition:background var(--dur) var(--ease);border-radius:99px;flex:1}.step-seg.done{background:var(--ink)}.step-seg.active{background:linear-gradient(90deg, var(--ink), var(--blue) 70%, var(--yellow))}.step-labels{margin:9px 0 22px;display:flex}.step-label{font-size:var(--fs-ui);color:var(--ink-faint);text-align:center;letter-spacing:.02em;transition:color var(--dur) var(--ease);flex:1;font-weight:600}.step-label:first-child{text-align:left}.step-label:last-child{text-align:right}.step-label.active{color:var(--ink)}.reg-step{animation:screenIn var(--dur) var(--ease-out)}.calendar-grid-scroll{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--blue) var(--blue-pale);width:100%;min-width:0;max-width:100%;overflow-x:auto}.calendar-grid-scroll:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.calendar-grid-scroll-hint{color:var(--ink-soft);font-size:var(--fs-compact);margin:-2px 0 8px;display:none}.cal-dow-row{grid-template-columns:repeat(7,1fr);gap:4px;margin-top:12px;display:grid}.cal-dow-row span{text-align:center;font-size:var(--fs-ui);color:var(--ink-faint);letter-spacing:.04em;font-weight:700}.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;margin-top:7px;margin-bottom:16px;display:grid}.cal-cell{aspect-ratio:1;background:var(--surface);box-shadow:inset 0 0 0 1px var(--hairline-soft);font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;color:var(--ink);cursor:pointer;transition:all var(--dur) var(--ease);border-radius:11px;justify-content:center;align-items:center;font-weight:600;display:flex;position:relative}.cal-cell:not(.pad):hover{box-shadow:inset 0 0 0 1.5px var(--ink-soft)}.cal-cell.pad{box-shadow:none;pointer-events:none;background:0 0}.cal-cell .dot{background:var(--blue);border-radius:50%;width:4px;height:4px;position:absolute;bottom:5px;left:50%;transform:translate(-50%)}.cal-cell.holiday{background:var(--red-pale);color:var(--red);box-shadow:inset 0 0 0 1px #cf443838}.cal-cell.holiday .dot{background:var(--red)}.cal-cell.has-class{background:var(--blue-pale);color:var(--blue-ink);box-shadow:inset 0 0 0 1px #3e8fe82e}.cal-cell.today{background:var(--ink);color:var(--white);box-shadow:var(--e2)}.cal-cell.today.holiday{background:var(--red-pale);color:var(--red);box-shadow:inset 0 0 0 2px var(--yellow), var(--e2)}.cal-cell.today .dot{background:var(--yellow)}@media (width<=767px){.calendar-grid-scroll-hint{display:block}.calendar-grid-scroll .schedule-day-class{-webkit-line-clamp:2;overflow-wrap:anywhere;text-overflow:ellipsis;white-space:normal;-webkit-box-orient:vertical;display:-webkit-box}.calendar-grid-scroll .cal-dow-row,.calendar-grid-scroll .cal-grid,.calendar-grid-scroll .schedule-weekdays,.calendar-grid-scroll .schedule-calendar-grid,.calendar-grid-scroll.yc-month-scroll .yc-dow,.calendar-grid-scroll.yc-month-scroll .yc-grid{min-width:735px}}.cal-cell.today.holiday .dot{background:var(--red)}.cal-cell.selected:not(.today){background:var(--surface);box-shadow:inset 0 0 0 2px var(--blue)}.admin-overview-calendar .cal-cell{aspect-ratio:auto;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:5px;min-height:78px;padding:9px 8px 8px;overflow:hidden}.admin-overview-calendar .cal-cell.pad{min-height:78px;padding:0}.admin-cal-day-number{font-family:var(--font-mono);font-size:var(--fs-compact);align-self:flex-end;font-weight:700;line-height:1}.admin-cal-class-list{width:100%;min-width:0;font-family:var(--font-display);letter-spacing:.01em;text-transform:uppercase;flex-direction:column;align-items:flex-start;gap:3px;font-size:15px;font-weight:700;line-height:1.05;display:flex}.admin-cal-class-list span,.admin-cal-class-list small{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:block;overflow:hidden}.admin-cal-class-list small{color:currentColor;font-family:var(--font-body);opacity:.78;text-transform:none;font-size:12px;font-weight:700}.admin-overview-calendar .cal-cell.has-class:not(.today){background:var(--blue-pale);color:var(--blue-ink)}.admin-overview-calendar .cal-cell.selected:not(.today){box-shadow:inset 0 0 0 2px var(--blue)}.admin-overview-calendar .cal-cell.today{gap:6px}.admin-overview-calendar .cal-cell.today .admin-cal-class-list{color:var(--white)}.admin-calendar-guide{min-height:32px;color:var(--ink-soft);font-size:var(--fs-compact);align-items:center;gap:9px;margin:-5px 0 2px;font-weight:600;display:flex}.admin-calendar-guide-mark{background:var(--blue-pale);width:28px;height:24px;color:var(--blue-ink);font-family:var(--font-display);border-radius:7px;place-items:center;font-size:14px;font-weight:700;display:inline-grid}.admin-overview-calendar{min-width:0}@media (width<=639px){.dsk-month-controls{flex-wrap:wrap}.dsk-month-controls .month-switch{flex-basis:100%}.dsk-month-controls .month-today-btn{margin-left:auto}.admin-overview-calendar .cal-cell{gap:4px;min-height:70px;padding:8px 2px 7px}.admin-overview-calendar .cal-cell.pad{min-height:70px}.admin-cal-class-list{letter-spacing:-.01em;font-size:11px}.admin-cal-class-list span{white-space:normal;overflow-wrap:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box}.admin-cal-class-list small{font-size:11px}}.cal-legend{font-size:var(--fs-ui);color:var(--ink-soft);flex-wrap:wrap;gap:14px;margin:2px 0 16px;display:flex}.cal-legend span{align-items:center;gap:6px;display:flex}.cal-legend i{border-radius:50%;width:8px;height:8px;display:block}.class-cal-card .cal-cell.holiday:not(.selected){background:var(--red-pale);color:var(--red);box-shadow:inset 0 0 0 1px #cf443838}.class-cal-card .cal-cell.today.holiday:not(.selected){background:var(--red-pale);color:var(--red);box-shadow:inset 0 0 0 2px var(--yellow), var(--e2)}.class-cal-card .cal-cell.today.holiday:not(.selected) .dot{background:var(--red)}.class-cal-card .cal-cell.today:not(.holiday){background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--hairline-soft)}.class-cal-card .cal-cell.today.selected{box-shadow:inset 0 0 0 2px var(--blue)}.class-cal-card .cal-cell.has-class:not(.holiday){background:var(--blue-pale);color:var(--blue-ink);box-shadow:inset 0 0 0 1px #2e6cd12e}.class-cal-card .cal-cell.selected:not(.holiday).has-class{background:var(--blue-pale);color:var(--blue-ink);box-shadow:inset 0 0 0 2px var(--blue)}.logo-badge{background-color:var(--white);box-shadow:var(--e2), inset 0 0 0 1px var(--hairline);background-image:url(/icons/logo.png);background-position:50%;background-size:cover;border-radius:50%;flex-shrink:0;width:96px;height:96px;display:block}.emblem{text-align:center;margin-bottom:26px}.emblem .logo-badge{margin:0 auto 14px}.emblem .word{font-family:var(--font-display);font-weight:700;font-size:var(--fs-title-sm);letter-spacing:.01em;color:var(--ink)}.emblem .sub{font-family:var(--font-mono);font-weight:600;font-size:var(--fs-ui);letter-spacing:.3em;color:var(--blue-ink);margin-top:3px}.emblem .branch{font-size:var(--fs-ui);color:var(--ink-soft);margin-top:9px}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.14em;color:var(--blue-ink);background:var(--blue-pale);border-radius:var(--r-pill);border:1px solid #3e8fe847;align-items:center;gap:9px;padding:7px 15px;font-weight:600;display:inline-flex}.invite-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;display:grid}.invite-settings{margin-bottom:14px}.invite-settings-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.invite-count-control{align-items:center;gap:8px;display:flex}.invite-count-control input{border:1px solid var(--hairline);border-radius:var(--r-sm);width:92px;height:36px;font:inherit;color:var(--ink);text-align:center;padding:0 10px}.invite-card{flex-direction:column;gap:8px;display:flex}.invite-card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.invite-code{font-family:var(--font-mono);font-weight:700;font-size:var(--fs-ui);letter-spacing:.02em;color:var(--blue-ink)}.invite-user{font-size:var(--fs-ui);color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;min-height:1.2em;overflow:hidden}.invite-user.is-empty{color:var(--ink-faint)}.invite-pending{flex-direction:column;gap:8px;margin-top:2px;display:flex}.invite-meta{font-size:var(--fs-ui);color:var(--blue-ink);align-items:center;gap:5px;display:inline-flex}.invite-expired{font-size:var(--fs-ui);color:var(--red)}.level-badge.is-unknown{opacity:.72;font-style:italic}.pkg-editor{flex-direction:column;gap:4px;display:flex}.pkg-editor-row{align-items:flex-end;gap:10px;display:flex}.pkg-editor-row .field{flex:1;margin-bottom:10px}.pkg-editor-row .icon-action{flex-shrink:0;margin-bottom:16px}.reg-summary-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.reg-summary-grid .card-stat{background:var(--surface-alt);border-radius:var(--r-sm);text-align:center;flex-direction:column;padding:10px 12px;display:flex}.reg-summary-grid .card-stat-value{margin-top:auto}.reg-holiday-table-frame{box-shadow:none;margin-top:12px}.reg-holiday-table{min-width:0}.reg-holiday-table tbody th[scope=row]{border-top:1px solid var(--hairline-soft);background:var(--surface);color:var(--ink);letter-spacing:normal;text-transform:none;white-space:nowrap;padding:14px;font-weight:600}.reg-holiday-table tbody tr:nth-child(2n) th[scope=row]{background:var(--surface-alt)}.reg-holiday-table tbody tr:hover th[scope=row]{background:var(--ink-tint)}.reg-holiday-dates{flex-wrap:wrap;gap:4px 14px;display:flex}.reg-holiday-date-chip{border:1px solid var(--hairline);border-radius:var(--r-pill);background:var(--surface-alt);min-height:30px;color:var(--blue-ink);white-space:nowrap;align-items:center;padding:4px 10px;font-weight:600;display:inline-flex}@media (width<=639px){.reg-holiday-table th,.reg-holiday-table td{padding:12px 10px}.reg-holiday-table tbody th[scope=row],.reg-holiday-date-chip{white-space:normal}}.segmented.is-page-tabs{margin-bottom:14px}.registration-controls{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e1);margin-bottom:12px;padding:10px}.registration-toolbar{align-items:center;gap:10px;display:flex}.registration-search{background:var(--surface-alt);flex:1;min-width:0;margin-bottom:0}.registration-batch-button{white-space:nowrap;flex-shrink:0}.registration-filter-bar{border-top:1px solid var(--hairline-soft);justify-content:space-between;align-items:center;gap:9px;margin-top:8px;padding-top:8px;display:flex}.registration-filter-groups{align-items:center;gap:9px;min-width:0;display:flex;overflow-x:auto}.registration-filter-label{color:var(--ink-soft);font-size:var(--fs-ui);flex-shrink:0;align-items:center;gap:6px;font-weight:700;display:inline-flex}.registration-filter-label .icon{color:var(--blue)}.registration-status-filters,.registration-priority-filters{margin-bottom:0;padding-bottom:0}.registration-status-filters{min-width:0}.registration-missing{border-top:1px solid var(--hairline-soft);margin-top:9px;padding-top:9px}.registration-missing-summary,.registration-missing-heading,.registration-missing-message{align-items:center;gap:8px;display:flex}.registration-missing-summary,.registration-missing-message{justify-content:space-between}.registration-missing-heading{flex-wrap:wrap;min-width:0}.registration-missing-heading h2{color:var(--ink);font-size:var(--fs-ui);margin:0;font-weight:700}.registration-missing-heading>span,.registration-missing-message{color:var(--ink-soft);font-size:var(--fs-ui)}.registration-missing-toggle{flex-shrink:0}.registration-missing-message{flex-wrap:wrap;margin:8px 0 0}.registration-missing-message.is-error{color:var(--red)}.registration-missing-table-wrap{overscroll-behavior:contain;border:1px solid var(--hairline);border-radius:var(--r-md);max-height:min(60dvh,520px);overflow-y:auto}.registration-missing-modal-title{margin:0}.registration-missing-modal-meta{margin-bottom:12px}.registration-missing-table{table-layout:fixed;min-width:0}.registration-missing-table th{z-index:1;position:sticky;top:0}.registration-missing-table th:last-child,.registration-missing-table td:last-child{width:120px}.registration-missing-table td:first-child{overflow-wrap:anywhere}.registration-missing-table td:last-child{color:var(--ink-soft);white-space:nowrap}.registration-month-switch{border-left:1px solid var(--hairline-soft);flex-shrink:0;gap:4px;margin:0;padding-left:8px}.registration-month-switch .lbl{text-align:center;min-width:124px}.registration-desktop-table{display:none}.registration-mobile-list{flex-direction:column;gap:12px;display:flex}.registration-mobile-list .card+.card{margin-top:0}.registration-table-shell{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);width:100%;min-width:0;box-shadow:var(--e1);overflow:hidden}.registration-table-scroll{overscroll-behavior-x:contain;width:100%;max-width:100%;overflow-x:auto}.registration-table{table-layout:fixed;border-collapse:separate;border-spacing:0;width:100%;min-width:1560px;font-size:var(--fs-ui)}.registration-col-check{width:50px}.registration-col-student{width:200px}.registration-col-classes{width:150px}.registration-col-priority{width:120px}.registration-col-package{width:125px}.registration-col-sessions{width:340px}.registration-col-amount{width:125px}.registration-col-slip{width:90px}.registration-col-status{width:130px}.registration-col-actions{width:230px}.registration-table th{background:var(--table-head);color:var(--table-head-fg);font-size:var(--fs-ui);text-align:left;white-space:nowrap;border-bottom:0;padding:12px 10px;font-weight:700}.registration-table td{border-top:1px solid var(--hairline-soft);color:var(--ink);vertical-align:top;padding:13px 10px}.registration-table tbody tr:first-child td{border-top:0}.registration-table-row{transition:background var(--dur-fast) var(--ease)}.registration-table-row:hover td{background:var(--ink-tint)}.registration-table-row.is-selected td{background:var(--blue-pale)}.registration-table-check-cell{text-align:center;vertical-align:middle!important}.registration-table-number-cell{font-variant-numeric:tabular-nums;text-align:right!important}.registration-checkbox,.invite-checkbox{cursor:pointer;place-items:center;width:44px;height:44px;display:inline-grid;position:relative}.registration-checkbox input,.invite-checkbox input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.registration-checkbox>span,.invite-checkbox>span{border:2px solid var(--navy-600);width:19px;height:19px;color:var(--white);background:var(--surface);transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);border-radius:5px;place-items:center;display:grid}.registration-checkbox input:checked+span,.invite-checkbox input:checked+span{border-color:var(--ink);background:var(--ink)}.registration-checkbox input:hover+span,.invite-checkbox input:hover+span{border-color:var(--blue)}.registration-checkbox input:focus-visible+span,.invite-checkbox input:focus-visible+span{outline:2.5px solid var(--blue);outline-offset:3px}.registration-checkbox.is-disabled,.registration-checkbox.is-disabled input,.invite-checkbox.is-disabled,.invite-checkbox.is-disabled input{cursor:not-allowed}.registration-checkbox.is-disabled>span,.invite-checkbox.is-disabled>span{opacity:.45}.registration-table-student{align-items:flex-start;gap:9px;min-width:0;display:flex}.registration-table-student-copy{flex:1;min-width:0}.registration-table-student-toggle{text-align:left;flex-direction:column;align-items:flex-start;min-width:0;max-width:100%;min-height:44px;padding:2px 0;display:flex}.registration-table-student-toggle strong,.registration-table-student-toggle span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.registration-table-student-toggle strong{color:var(--ink);font-weight:700}.registration-table-student-toggle span{color:var(--ink-soft);margin-top:2px}.registration-table-student-toggle:hover strong{color:var(--blue-ink)}.registration-registered-classes{flex-wrap:wrap;gap:5px;display:flex}.registration-registered-class{border:1px solid var(--hairline);border-radius:var(--r-pill);max-width:100%;min-height:30px;color:var(--blue-ink);background:var(--blue-pale);text-overflow:ellipsis;white-space:nowrap;align-items:center;padding:4px 8px;font-weight:700;display:inline-flex;overflow:hidden}.registration-table-muted{color:var(--ink-soft)}.registration-table-empty{color:var(--ink-soft);text-align:center;padding:28px 14px}.registration-table-tag-row{flex-wrap:wrap;gap:4px;display:flex}.registration-table-tag-row .badge,.registration-status-badge{padding:3px 7px}.registration-table-package,.registration-table-amount{flex-direction:column;gap:3px;display:flex}.registration-table-package strong{color:var(--ink);font-family:var(--font-display);font-size:var(--fs-title-sm);font-variant-numeric:tabular-nums;font-weight:700}.registration-table-package span,.registration-table-amount span{color:var(--ink-soft);line-height:1.45}.registration-table-warning{font-weight:700;color:var(--yellow-dark)!important}.registration-table-amount strong{color:var(--blue-ink);font-family:var(--font-display);font-size:var(--fs-title-sm);white-space:nowrap;font-weight:700}.registration-table-amount span{white-space:nowrap}.registration-slip-link{border:1px solid var(--hairline);border-radius:var(--r-xs);min-height:40px;color:var(--blue-ink);white-space:nowrap;transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);align-items:center;gap:5px;padding:4px 8px;font-weight:700;text-decoration:none;display:inline-flex}.registration-slip-link:hover{border-color:var(--blue);background:var(--blue-pale)}.registration-slot-list{flex-direction:column;gap:5px;width:100%;min-width:0;display:flex}.registration-slot-expand{border-radius:var(--r-xs);min-height:40px;color:var(--blue-ink);text-align:left;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);align-self:flex-start;align-items:center;gap:5px;padding:5px 8px;font-weight:700;display:inline-flex}.registration-slot-expand:hover{background:var(--blue-pale);color:var(--ink)}.registration-slot-expand .icon{transition:transform var(--dur-fast) var(--ease)}.registration-slot-expand[aria-expanded=true] .icon{transform:rotate(90deg)}.registration-slot-pill{border:1px solid var(--hairline);border-radius:var(--r-xs);background:var(--surface-alt);width:100%;min-width:0;color:var(--ink);grid-template-columns:minmax(0,.85fr) minmax(0,1.65fr) auto;align-items:center;gap:7px;padding:5px 7px;display:grid}.registration-slot-class{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--blue-ink);font-family:var(--font-display);font-weight:700;overflow:hidden}.registration-slot-copy{align-items:baseline;gap:5px;min-width:0;display:flex;overflow:hidden}.registration-slot-copy strong,.registration-slot-copy span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.registration-slot-copy strong{flex-shrink:0;font-weight:700}.registration-slot-copy span{color:var(--ink-soft)}.registration-slot-availability{border-radius:var(--r-pill);color:var(--green);background:var(--green-pale);white-space:nowrap;padding:2px 6px;font-weight:700}.registration-slot-pill.is-tight .registration-slot-availability{color:var(--yellow-dark);background:var(--yellow-pale)}.registration-slot-pill.is-full .registration-slot-availability{color:var(--red);background:var(--red-pale)}.registration-slot-pill.is-unknown .registration-slot-availability{color:var(--ink-soft);background:var(--ink-tint)}.registration-move-note{color:var(--yellow-dark);align-items:center;gap:5px;font-weight:700;display:inline-flex}.registration-transfer-summary{border-radius:var(--r-sm);background:var(--blue-pale);border:1px solid #3e8fe847;width:100%;min-width:0;padding:9px}.registration-transfer-summary.is-compact{margin-top:10px}.registration-transfer-summary-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.registration-transfer-summary-head>div{min-width:0}.registration-transfer-summary-title{color:var(--ink);align-items:center;gap:6px;line-height:1.35;display:flex}.registration-transfer-summary-title .icon{color:var(--blue-ink)}.registration-transfer-summary-meta{color:var(--ink-soft);font-size:var(--fs-compact);margin-top:2px;line-height:1.4;display:block}.registration-transfer-pending{border-radius:var(--r-pill);background:var(--yellow-pale);color:var(--yellow-dark);font-size:var(--fs-compact);white-space:nowrap;flex-shrink:0;padding:3px 7px;font-weight:700;line-height:1.35}.registration-transfer-pairs{flex-direction:column;gap:6px;margin-top:8px;display:flex}.registration-transfer-pair{grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr);align-items:center;gap:5px;min-width:0;display:grid}.registration-transfer-slot{border-radius:var(--r-xs);background:var(--surface);min-width:0;box-shadow:inset 0 0 0 1px var(--hairline-soft);flex-direction:column;align-items:flex-start;gap:1px;padding:6px 7px;display:flex}.registration-transfer-slot.is-to{background:var(--white);box-shadow:inset 0 0 0 1px #3e8fe857}.registration-transfer-slot-label{color:var(--ink-soft);font-size:var(--fs-compact);font-weight:700;line-height:1.25}.registration-transfer-slot.is-to .registration-transfer-slot-label{color:var(--blue-ink)}.registration-transfer-slot-name{overflow-wrap:anywhere;max-width:100%;color:var(--ink);font-size:var(--fs-compact);line-height:1.35}.registration-transfer-slot-meta{overflow-wrap:anywhere;max-width:100%;color:var(--ink-soft);font-size:var(--fs-compact);line-height:1.35}.registration-transfer-availability{border-radius:var(--r-pill);max-width:100%;color:var(--green);background:var(--green-pale);font-size:var(--fs-compact);white-space:nowrap;margin-top:2px;padding:1px 5px;font-weight:700;line-height:1.35}.registration-transfer-availability.is-tight{color:var(--yellow-dark);background:var(--yellow-pale)}.registration-transfer-availability.is-full{color:var(--red);background:var(--red-pale)}.registration-transfer-availability.is-unknown{color:var(--ink-soft);background:var(--ink-tint)}.registration-transfer-arrow{color:var(--blue-ink);place-items:center;display:grid}.registration-transfer-slot-empty,.registration-transfer-empty,.registration-transfer-more{color:var(--ink-soft);font-size:var(--fs-compact);line-height:1.45}.registration-transfer-slot-empty{overflow-wrap:anywhere}.registration-transfer-empty{margin:8px 0 0}.registration-transfer-more{color:var(--blue-ink);margin:7px 0 0;font-weight:700;display:block}.registration-table .registration-transfer-summary{background:var(--surface-alt);padding:8px}.registration-table .registration-transfer-summary.is-compact{margin-top:0}.registration-readiness{min-height:31px;color:var(--green);white-space:nowrap;align-items:center;gap:6px;font-weight:700;display:inline-flex}.registration-readiness-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:8px;height:8px}.registration-readiness.is-move{color:var(--yellow-dark)}.registration-readiness.is-done{color:var(--blue-ink)}.registration-readiness.is-attention{color:var(--red)}.registration-status-badge{margin-top:4px}.registration-table-actions-head,.registration-table-actions-cell{text-align:right}.registration-table-actions{justify-content:flex-end;align-items:center;gap:5px;display:flex}.registration-table-actions .expand-actions{flex-flow:column;gap:6px;width:100%;margin-top:0}.registration-table-actions .expand-actions .btn{flex:none;width:100%;min-width:0}.registration-details-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.registration-details-label{margin:12px 0 4px}.registration-details-note{margin:10px 0 0}@media (width>=1024px){.registration-desktop-table{display:block}.registration-mobile-list{display:none}}@media (width<=767px){.registration-toolbar{flex-direction:column;align-items:stretch}.registration-batch-button{width:100%}.registration-filter-bar{flex-wrap:wrap;align-items:flex-start}.registration-filter-groups{flex-wrap:wrap;align-items:flex-start;width:100%}.registration-month-switch{border-top:1px solid var(--hairline-soft);border-left:0;justify-content:space-between;width:100%;padding:8px 0 0}.registration-month-switch .lbl{min-width:0}.registration-missing-summary{align-items:flex-start}.registration-missing-toggle{min-height:44px}.registration-missing-message{flex-wrap:wrap;align-items:flex-start}.registration-details-grid{grid-template-columns:1fr;gap:0}}.leave-queue-header{margin-bottom:14px}.leave-queue-header>.badge{margin-top:8px}.leave-queue-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:15px;display:grid}.leave-queue-tab{text-align:left;min-height:70px;color:var(--ink-soft);background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e1);transition:background var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease), transform var(--dur-fast) var(--ease);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"icon label count""hint hint hint";align-items:center;gap:4px 8px;padding:12px 13px;display:grid}.leave-queue-tab:hover{border-color:var(--blue);transform:translateY(-1px)}.leave-queue-tab.active{color:var(--white);background:var(--ink);border-color:var(--ink);box-shadow:var(--e2)}.leave-queue-tab-icon{color:currentColor;grid-area:icon;display:inline-flex}.leave-queue-tab-label{min-width:0;font-size:var(--fs-ui);grid-area:label;font-weight:700;line-height:1.4}.leave-queue-tab-count{background:var(--yellow);min-width:27px;height:27px;color:var(--ink);font-family:var(--font-display);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;border-radius:9px;grid-area:count;place-items:center;font-weight:700;display:inline-grid}.leave-queue-tab:not(.active) .leave-queue-tab-count{background:var(--neutral-200);color:var(--neutral-700)}.leave-queue-tab-hint{font-size:var(--fs-ui);color:var(--ink-faint);grid-area:hint}.leave-queue-tab.active .leave-queue-tab-hint{color:#ffffff9e}.leave-queue-search{margin-bottom:8px}.leave-queue-clear{width:28px;height:28px;color:var(--ink-faint);border-radius:50%;place-items:center;display:grid}.leave-queue-clear:hover{background:var(--ink-tint);color:var(--ink)}.leave-queue-filter-row{flex-direction:column;gap:9px;margin-bottom:7px;display:flex}.leave-queue-filters{margin-bottom:0;padding-bottom:2px}.leave-queue-filters .filter-chip{min-height:40px}.leave-queue-sort{border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface);min-height:42px;color:var(--ink-soft);font-size:var(--fs-ui);align-items:center;gap:7px;padding:0 12px;font-weight:700;display:flex}.leave-queue-sort>label{white-space:nowrap;color:var(--ink-faint)}.leave-queue-sort .ant-select{flex:1;min-width:0}.leave-queue-sort .ant-select-selector{padding-inline:0!important}.leave-queue-sort:focus-within{border-color:var(--blue);box-shadow:0 0 0 3.5px #3e8fe81f}.leave-queue-summary{min-height:42px;color:var(--ink-soft);font-size:var(--fs-ui);justify-content:space-between;align-items:center;gap:10px;padding:0 2px;font-weight:700;display:flex}.leave-queue-summary-main{flex-wrap:wrap;align-items:baseline;gap:4px 8px;min-width:0;display:flex}.leave-queue-count{font-variant-numeric:tabular-nums;white-space:nowrap}.leave-queue-summary .leave-queue-sort{flex-shrink:0}.leave-queue-summary-note{color:var(--ink-faint);font-size:var(--fs-compact);text-align:right;font-weight:500}.leave-queue-empty-title{color:var(--ink);font-weight:700;line-height:1.4;display:block}.leave-queue-empty-hint{color:var(--ink-faint);font-size:var(--fs-compact);margin-top:4px;font-weight:500;line-height:1.5;display:block}.leave-queue-empty{justify-content:center;align-items:center;gap:9px;min-height:84px;display:flex}.leave-request-table-shell{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e1);overflow:hidden}.leave-request-table-scroll{overflow-x:auto}.leave-request-table{table-layout:fixed;width:100%;min-width:1060px}.leave-request-table th:first-child{width:13%}.leave-request-table th:nth-child(2){width:9%}.leave-request-table th:nth-child(3),.leave-request-table th:nth-child(4){width:11%}.leave-request-table th:nth-child(5),.leave-request-table th:nth-child(6){width:12%}.leave-request-table th:nth-child(7){width:16%}.leave-request-table th:nth-child(8){width:9%}.leave-request-table th:nth-child(9){width:14%}.leave-request-table-action-head,.leave-request-table-action-cell{text-align:right}.leave-request-table-action-cell{min-width:165px}.leave-student-cell{align-items:center;gap:9px;min-width:0;display:flex}.leave-student-copy{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;display:flex}.leave-student-copy strong,.leave-class-cell strong,.leave-reason-cell strong{color:var(--ink);font-weight:700}.leave-student-copy strong,.leave-student-copy>span:not(.badge),.leave-class-cell strong,.leave-class-cell span,.leave-reason-cell strong,.leave-reason-cell span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.leave-student-copy>span:not(.badge),.leave-class-cell span,.leave-reason-cell span{color:var(--ink-soft);font-size:var(--fs-ui)}.leave-student-copy .badge{font-size:var(--fs-ui);margin-top:2px;padding:3px 7px}.leave-class-cell,.leave-reason-cell{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;display:flex}.leave-code-cell{color:var(--ink-soft);font-family:var(--font-display);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.leave-submitted-cell{color:var(--ink-soft);font-size:var(--fs-ui);white-space:nowrap}.leave-reason-cell .leave-reason-text{max-width:100%;color:var(--ink);font-size:var(--fs-ui);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.leave-reason-cell a{color:var(--blue-ink);font-size:var(--fs-ui);align-items:center;gap:4px;margin-top:2px;font-weight:700;display:inline-flex}.leave-reason-cell a:hover{color:var(--ink)}.leave-request-actions{justify-content:flex-end;gap:6px;display:flex}.leave-request-actions .btn{min-height:38px;font-size:var(--fs-ui);white-space:nowrap;padding:8px 10px}.leave-readonly,.leave-muted,.leave-capacity-loading{color:var(--ink-faint);font-size:var(--fs-ui)}.leave-capacity-cell{color:var(--ink-soft);font-size:var(--fs-ui);white-space:nowrap;flex-direction:column;align-items:flex-start;gap:4px;display:flex}.leave-capacity-cell strong{color:var(--ink);font-family:var(--font-display);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;font-weight:700}.leave-capacity-pill{border-radius:var(--r-pill);background:var(--green-pale);color:var(--green);font-size:var(--fs-ui);align-items:center;gap:4px;padding:3px 7px;font-weight:700;display:inline-flex}.leave-capacity-pill.is-full{background:var(--red-pale);color:var(--red)}.leave-capacity-pill.is-full strong{color:var(--red)}.leave-capacity-cell .is-makeup{color:var(--yellow-dark)}.leave-request-mobile-list,.leave-transfer-mobile-list{display:none}.leave-transfer-selection-list{flex-direction:column;gap:5px;min-width:0;display:flex}.leave-transfer-selection{border-radius:var(--r-xs);background:var(--surface-alt);min-width:0;box-shadow:inset 0 0 0 1px var(--hairline-soft);flex-direction:column;gap:1px;padding:6px 8px;display:flex}.leave-transfer-selection-list.is-requested .leave-transfer-selection{background:var(--blue-pale);box-shadow:inset 0 0 0 1px #3e8fe847}.leave-transfer-selection strong,.leave-transfer-selection span{overflow-wrap:anywhere;line-height:1.35}.leave-transfer-selection strong{color:var(--ink);font-size:var(--fs-compact)}.leave-transfer-selection span,.leave-transfer-month,.leave-transfer-submitted{color:var(--ink-soft);font-size:var(--fs-compact)}.leave-transfer-table .leave-request-actions{flex-wrap:nowrap}@media (width<=767px){.screen-header.leave-queue-header{flex-direction:column;align-items:stretch;gap:0;margin-bottom:16px;display:flex}.leave-queue-header>.badge{font-size:var(--fs-nav);letter-spacing:.05em;order:-1;align-self:flex-start;gap:6px;margin:0 0 9px;padding:4px 11px;display:inline-flex}.leave-queue-header>.badge:before{content:"";background:var(--yellow);border-radius:50%;width:6px;height:6px;box-shadow:0 0 0 3px #f6c13f29}.leave-queue-title{letter-spacing:-.015em;margin:0;font-size:22px;line-height:1.35}.leave-queue-header .sub-app{font-size:var(--fs-ui);color:var(--ink-soft);margin:5px 0 0;line-height:1.55}.leave-queue-tab{grid-template:"icon count""label label"1fr"hint hint"/minmax(0,1fr) auto;gap:5px 8px;min-height:0;padding:11px}.leave-queue-tab-icon{color:var(--ink-faint)}.leave-queue-tab.active .leave-queue-tab-icon{color:var(--yellow)}.leave-queue-tab-label{font-size:var(--fs-compact);overflow-wrap:anywhere;text-wrap:balance;line-height:1.35}.leave-queue-tab-hint{font-size:var(--fs-nav);line-height:1.3}.leave-queue-tab-count{min-width:24px;height:24px;font-size:var(--fs-compact);border-radius:8px}.leave-queue-filter-row{gap:7px;margin-bottom:0}.leave-queue-filters .filter-chip{font-size:var(--fs-compact);padding-inline:12px}.leave-queue-filters .filter-chip-count{min-width:18px;height:18px;font-size:12px}.leave-queue-summary{gap:8px;min-height:46px;padding:2px 2px 0}.leave-queue-summary .leave-queue-sort{border-radius:var(--r-pill);gap:5px;width:auto;min-height:40px;padding:0 10px}.leave-queue-sort>label{letter-spacing:.02em;font-size:12px}.leave-queue-sort .ant-select-selection-item,.leave-queue-sort .ant-select-selection-placeholder,.leave-queue-sort .ant-select-input{font-size:var(--fs-compact);font-weight:700}.leave-queue .data-table--responsive .data-table-empty{border:1px dashed var(--hairline);border-radius:var(--r-lg);background:radial-gradient(120% 100% at 50% 0%, #3e8fe817, transparent 72%), var(--surface);gap:12px;min-height:196px;margin-top:10px;padding:30px 22px}.leave-queue .data-table-empty>.icon{box-sizing:content-box;color:var(--ink-soft);background:var(--ink-tint);box-shadow:inset 0 0 0 1px var(--hairline-soft);border-radius:50%;padding:13px}.leave-queue-empty-hint{max-width:240px}.leave-request-table-scroll{display:none}.leave-request-table-shell{box-shadow:none;background:0 0;border:0;overflow:visible}.leave-request-mobile-list{flex-direction:column;gap:10px;display:flex}.leave-transfer-table-scroll{display:none}.leave-transfer-table-shell{box-shadow:none;background:0 0;border:0;overflow:visible}.leave-transfer-mobile-list{flex-direction:column;gap:10px;display:flex}.leave-request-mobile-card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e1);padding:14px}.leave-mobile-head{border-bottom:1px solid var(--hairline-soft);justify-content:space-between;align-items:flex-start;gap:10px;padding-bottom:12px;display:flex}.leave-mobile-head>.badge{text-overflow:ellipsis;flex-shrink:0;max-width:48%;margin-top:1px;overflow:hidden}.leave-mobile-fields{flex-direction:column;gap:11px;padding:12px 0;display:flex}.leave-mobile-field{grid-template-columns:104px minmax(0,1fr);align-items:start;gap:10px;display:grid}.leave-mobile-field>span:first-child{color:var(--ink-faint);font-size:var(--fs-ui);font-weight:700;line-height:1.5}.leave-mobile-field .leave-class-cell,.leave-mobile-field .leave-reason-cell,.leave-mobile-field .leave-capacity-cell,.leave-mobile-field>.leave-muted{min-width:0}.leave-request-mobile-card>.leave-request-actions{border-top:1px solid var(--hairline-soft);justify-content:stretch;padding-top:11px}.leave-request-mobile-card>.leave-request-actions .btn{flex:1;min-height:42px}}@media (width>=768px){.leave-queue-filter-row{flex-direction:row;align-items:center}.leave-queue-filters{flex:1;min-width:0}.leave-queue-sort{flex-shrink:0;width:270px}}@media (width>=1024px){.leave-queue-header{margin-bottom:18px}.leave-queue-tabs{max-width:760px}.leave-queue-search{max-width:520px}}.reg-selection-list{flex-direction:column;gap:6px;margin-top:10px;display:flex}.reg-selection-list .session-chip{justify-content:flex-start}.slip-link{border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface-alt);color:var(--ink);transition:border-color var(--dur) var(--ease);align-items:center;gap:12px;margin-top:12px;padding:10px;text-decoration:none;display:flex}.slip-link:hover{border-color:var(--blue)}.slip-link img{object-fit:cover;border-radius:var(--r-xs);background:var(--ink-tint);flex-shrink:0;width:54px;height:54px}.slip-link span{font-size:var(--fs-ui);align-items:center;gap:6px;font-weight:600;display:inline-flex}.leave-evidence-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.leave-evidence-actions .slip-link,.leave-evidence-upload{margin-top:12px}.leave-evidence-upload{border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface-alt);min-height:44px;color:var(--ink);cursor:pointer;font-size:var(--fs-ui);transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);justify-content:center;align-items:center;gap:6px;padding:10px 12px;font-weight:600;display:inline-flex}.leave-evidence-upload:hover{border-color:var(--blue);background:var(--blue-pale)}.leave-evidence-upload:focus-within{outline:2px solid var(--blue);outline-offset:2px}.leave-evidence-upload .icon{color:var(--blue-ink)}.seat-row+.seat-row{border-top:1px solid var(--hairline-soft);margin-top:14px;padding-top:14px}.slip-fallback{border-radius:var(--r-xs);background:var(--ink-tint);width:54px;height:54px;color:var(--ink-soft);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.seat-roster{align-items:flex-start;gap:5px;line-height:1.5;display:flex}.seat-roster .icon{flex-shrink:0;margin-top:2px}.seat-roster.is-makeup{color:var(--yellow-dark)}.seat-row-head{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px;display:flex}.card-hero .hero-body{font-size:var(--fs-ui);color:#ffffffdb;white-space:pre-line;margin:8px 0 0;line-height:1.65}.pkg-price-row{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.pkg-price-card{border:1.5px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);cursor:pointer;min-height:108px;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease), transform var(--dur-fast) var(--ease);flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:16px 10px 14px;display:flex}.pkg-price-card:hover:not(:disabled){border-color:var(--blue)}.pkg-price-card:active:not(:disabled){transform:scale(.98)}.pkg-price-card.active{border-color:var(--ink);background:var(--blue-pale)}.pkg-price-card:disabled{background:var(--surface-alt);opacity:.45;cursor:not-allowed;border-style:dashed}.pkg-price-card:disabled .pkg-num,.pkg-price-card:disabled .pkg-lbl,.pkg-price-card:disabled .pkg-price{color:var(--ink-faint)}.pkg-price-card .pkg-num{font-family:var(--font-display);font-size:var(--fs-display);color:var(--ink);font-weight:700;line-height:1}.pkg-price-card .pkg-lbl{font-size:var(--fs-ui);color:var(--ink-soft);font-weight:600}.pkg-price{font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;color:var(--blue-ink);margin-top:6px;font-weight:600}.pkg-price-card.active .pkg-price{color:var(--ink)}.quota-bar{z-index:5;border-radius:var(--r-md);background:var(--ink);color:var(--white);box-shadow:var(--e2);justify-content:space-between;align-items:center;gap:12px;margin:0 0 12px;padding:12px 16px;display:flex;position:sticky;top:0}.quota-bar>div{flex-direction:column;gap:1px;display:flex}.quota-count{font-family:var(--font-display);font-size:var(--fs-title-md);font-variant-numeric:tabular-nums;font-weight:700;line-height:1}.quota-count small{font-size:var(--fs-ui);opacity:.7;font-weight:600}.quota-label{font-size:var(--fs-ui);letter-spacing:.03em;color:#ffffffb8;font-weight:500}.day-card.is-chosen{border-color:var(--ink);box-shadow:var(--e2)}.day-card-head{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px;display:flex}.round-list{flex-direction:column;gap:8px;display:flex}.round-choice-row{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:6px;display:grid}.round-choice{gap:4px;display:grid}.round-chip{border:1.5px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface);text-align:left;cursor:pointer;width:100%;min-height:56px;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease), opacity var(--dur) var(--ease);align-items:center;gap:10px;padding:10px 12px 10px 14px;display:flex;position:relative}.round-chip:hover:not(:disabled){border-color:var(--blue)}.round-chip.is-chosen{border-color:var(--ink);background:var(--blue-pale)}.round-chip.is-chosen:before{content:"";background:linear-gradient(180deg, var(--yellow), var(--yellow-deep));border-radius:0 3px 3px 0;width:3px;position:absolute;top:10px;bottom:10px;left:0}.round-chip.is-muted:not(.is-chosen){opacity:.55}.round-chip.is-full{opacity:.5;cursor:not-allowed;border-style:dashed}.round-chip:disabled{cursor:not-allowed}.round-time{font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;color:var(--ink);flex-shrink:0;align-items:center;gap:5px;font-weight:600;display:inline-flex}.round-name{min-width:0;font-size:var(--fs-ui);color:var(--ink);flex-direction:column;flex:1;font-weight:600;display:flex}.round-name small{font-size:var(--fs-ui);color:var(--ink-soft);font-weight:500}.round-seats{flex-shrink:0}@media (width<=639px){.round-chip{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"time seats""name name";align-items:center;gap:6px 10px;display:grid}.round-chip .round-time{grid-area:time}.round-chip .round-name{grid-area:name}.round-chip .round-seats{grid-area:seats}}.round-daily-roster{border:1px solid var(--hairline-soft);border-radius:var(--r-sm);background:var(--surface-alt);padding:8px 10px 6px}.round-daily-roster-title{color:var(--blue-ink);font-size:var(--fs-ui);align-items:center;gap:5px;margin-bottom:2px;font-weight:700;display:flex}.round-daily-roster-list{display:grid}.round-daily-roster-row{border-top:1px solid var(--hairline-soft);grid-template-columns:max-content minmax(0,1fr);gap:10px;padding:8px 0;display:grid}.round-daily-roster-row:first-child{border-top:0}.round-daily-date{color:var(--ink);font-size:var(--fs-ui);white-space:nowrap;padding-top:1px}.round-daily-lines{gap:2px;min-width:0;display:grid}.round-daily-line{color:var(--ink-soft);font-size:var(--fs-ui);overflow-wrap:anywhere;line-height:1.5}.round-daily-line strong{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:700}.round-daily-line.is-makeup,.round-daily-line.is-makeup strong{color:var(--yellow-dark)}.round-daily-line.is-pending,.round-daily-line.is-pending strong{color:var(--blue-ink)}.registration-roster-group{margin-top:14px}.registration-roster-heading{color:var(--ink);font-size:var(--fs-ui);justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;font-weight:700;display:flex}.registration-roster-list{gap:4px;max-height:180px;display:grid;overflow-y:auto}.registration-roster-person{border-radius:var(--r-xs);background:var(--surface-alt);color:var(--ink-soft);font-size:var(--fs-ui);padding:8px 10px}.date-roster-round{margin-top:4px}.date-roster-round+.date-roster-round{border-top:1px dashed var(--hairline);margin-top:16px;padding-top:14px}.date-roster-round-head{font-size:var(--fs-ui);flex-wrap:wrap;align-items:center;gap:8px;font-weight:700;display:flex}.date-roster-time{color:var(--blue-ink);font-family:var(--font-mono);align-items:center;gap:5px;display:inline-flex}.date-roster-class{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.date-roster-teacher{color:var(--ink-soft);font-size:var(--fs-ui);align-items:center;gap:5px;margin-top:5px;display:flex}.date-roster-teacher svg{color:var(--blue-ink);flex:none}.price-row{font-size:var(--fs-ui);color:var(--ink-soft);justify-content:space-between;align-items:baseline;gap:12px;padding:7px 0;display:flex}.price-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap;font-weight:600}.price-row.is-total{border-top:1px solid var(--hairline);font-size:var(--fs-ui);color:var(--ink);margin-top:4px;padding-top:12px;font-weight:700}.price-row.is-total .price-value{font-size:var(--fs-body-lg)}.payment-info{font-size:var(--fs-ui);color:var(--ink);white-space:pre-line;margin:0;line-height:1.7}.payment-bank-details{flex-direction:column;gap:12px;display:flex}.payment-field{flex-direction:column;gap:2px;display:flex}.payment-field-label{color:var(--ink-soft);font-size:var(--fs-ui);font-weight:600}.payment-account-number{font-size:var(--fs-body-lg);letter-spacing:.5px;color:var(--ink);margin:2px 0;font-weight:700}.payment-qr-image{border-radius:var(--r-sm);border:1px solid var(--hairline);width:180px;max-width:100%;display:block}.slip-dropzone{border:1.5px dashed var(--hairline);border-radius:var(--r-md);background:var(--surface-alt);width:100%;min-height:148px;color:var(--ink-soft);cursor:pointer;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:20px;display:flex}.slip-dropzone:hover:not(:disabled){border-color:var(--blue);background:var(--blue-pale)}.slip-dropzone:disabled{cursor:progress}.slip-dropzone .icon{color:var(--blue-deep)}.slip-dropzone-title{font-size:var(--fs-ui);color:var(--ink);font-weight:600}.slip-preview{align-items:center;gap:14px;display:flex}.slip-preview img{object-fit:cover;border-radius:var(--r-sm);border:1px solid var(--hairline);flex-shrink:0;width:92px;height:92px}.status-card{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:26px 20px;display:flex}.status-card .icon{box-sizing:content-box;border-radius:var(--r-pill);background:var(--ink-tint);width:30px;height:30px;color:var(--ink);padding:12px}.status-card.is-approved .icon{background:var(--green-pale);color:var(--green)}.status-card.is-pending .icon{background:var(--yellow-pale);color:var(--yellow-dark)}.status-card.is-needs_reselect .icon,.status-card.is-error .icon{background:var(--red-pale);color:var(--red)}.status-detail{font-size:var(--fs-ui);color:var(--ink-soft);max-width:34ch;margin:0;line-height:1.7}@media (width>=640px){.pkg-price-row{grid-template-columns:repeat(4,1fr)}.round-chip{gap:14px}}@media (width>=1024px){.quota-bar{top:12px}.screen.has-bottom-nav .sticky-cta{bottom:0}}.level-picker{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.level-option{border:1.5px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);min-height:52px;font-family:var(--font-display);font-size:var(--fs-ui);color:var(--ink);cursor:pointer;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease), transform var(--dur-fast) var(--ease);padding:12px 10px;font-weight:600}.level-option:hover:not(:disabled){border-color:var(--blue)}.level-option:active:not(:disabled){transform:scale(.98)}.level-option.active{border-color:var(--ink);background:var(--blue-pale)}.level-option:disabled{background:var(--surface-alt);color:var(--ink-faint);opacity:.45;cursor:not-allowed;border-style:dashed}.extra-choice{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:14px;display:grid}.extra-choice-option{border:1.5px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);min-height:50px;font-family:var(--font-display);font-size:var(--fs-ui);color:var(--ink);text-align:left;cursor:pointer;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease), transform var(--dur-fast) var(--ease);align-items:flex-start;gap:9px;padding:11px 12px;font-weight:600;display:flex}.extra-choice-purchase{cursor:pointer;align-items:flex-start}.extra-choice-purchase.active{min-height:154px}.extra-choice-content{flex-direction:column;flex:1;gap:12px;min-width:0;display:flex}.extra-choice-stepper{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:3px 10px;display:grid}.extra-choice-stepper .erow-label,.extra-choice-stepper .extra-stepper-hint{grid-column:1}.extra-choice-stepper .extra-stepper-hint{margin-top:0}.extra-choice-stepper .stepper{grid-area:1/2/span 2}.extra-stepper-large{gap:10px}.extra-stepper-large button{border-radius:var(--r-sm);width:46px;height:46px}.extra-stepper-large .val{font-size:var(--fs-title-md);min-width:30px}@media (width<=639px){.extra-choice{grid-template-columns:minmax(0,1fr)}.extra-choice-option{align-items:center}.extra-choice-purchase,.extra-choice-purchase.active{align-items:flex-start;min-height:50px}.extra-choice-purchase.active .extra-choice-mark{margin-top:2px}.extra-choice-stepper{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:3px 12px}.extra-choice-stepper .erow-label{font-weight:700}}.extra-choice-option:hover:not(:disabled):not([aria-disabled=true]){border-color:var(--blue)}.extra-choice-option:active:not(:disabled):not([aria-disabled=true]){transform:scale(.98)}.extra-choice-option.active{border-color:var(--ink);background:var(--blue-pale)}.extra-choice-option:disabled,.extra-choice-option[aria-disabled=true]{background:var(--surface-alt);color:var(--ink-faint);opacity:.5;cursor:not-allowed;border-style:dashed}.extra-choice-mark{border:1.5px solid var(--ink-faint);background:var(--white);width:18px;height:18px;transition:border-color var(--dur) var(--ease);border-radius:50%;flex:0 0 18px;position:relative}.extra-choice-option.active .extra-choice-mark{border-color:var(--ink)}.extra-choice-option.active .extra-choice-mark:after{content:"";background:var(--ink);border-radius:50%;position:absolute;inset:3px}.extra-lead{border-radius:var(--r-sm);border:1px solid var(--yellow-deep);background:var(--yellow-pale);color:var(--yellow-dark);font-size:var(--fs-ui);margin:0 0 13px;padding:11px 12px;font-weight:600;line-height:1.6;display:flex}.extra-stepper-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.extra-stepper-hint{color:var(--ink-soft);font-size:var(--fs-ui);margin-top:3px;display:block}.extra-drop-note{color:var(--ink-soft);font-size:var(--fs-ui);margin:0;line-height:1.65}.extra-cap-note{border-top:1px dashed var(--hairline);color:var(--ink-soft);font-size:var(--fs-ui);margin:12px 0 0;padding-top:11px;line-height:1.6}.reg-calendar{--cal-rule:#e3ac146b;--cal-rule-strong:#b4850899;border:2.5px solid var(--cal-rule-strong);border-radius:var(--r-md);background:linear-gradient(180deg, #fffdf4 0%, var(--yellow-pale) 100%);box-shadow:var(--e1);margin-bottom:4px;padding:14px 14px 8px}.reg-calendar .cal-dow-row{border-bottom:2px solid var(--cal-rule-strong);gap:0;margin-top:0;padding-bottom:7px}.reg-calendar .cal-dow-row span{color:var(--yellow-dark);font-size:var(--fs-ui)}.reg-calendar .cal-grid{gap:0;margin-top:0;margin-bottom:12px}.reg-calendar .cal-cell{border:1px solid var(--cal-rule);box-shadow:none;font-size:var(--fs-ui);color:var(--ink);background:#ffffff9e;border-radius:0;flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:5px 0 0 6px;overflow:hidden}.reg-calendar .cal-cell:not(.pad):hover{box-shadow:none;background:var(--white)}.reg-calendar .cal-cell.pad{background:0 0;border-color:#0000}.reg-calendar .cal-cell .dot{bottom:6px}.reg-calendar .cal-cell .cal-roster{max-width:100%;font-family:var(--font-body);font-size:var(--fs-ui);color:inherit;opacity:.9;flex-direction:column;align-items:flex-start;gap:1px;margin-top:2px;font-weight:600;line-height:1.15;display:flex}.reg-calendar .cal-cell .cal-roster-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:block;overflow:hidden}.reg-calendar .cal-cell .cal-roster-name.is-makeup{opacity:.6}.reg-calendar .cal-cell .cal-roster-more{font-weight:700}.reg-calendar .cal-cell.is-open{background:var(--white);border-color:var(--blue);color:var(--blue-ink);border-width:2px;font-weight:700}.reg-calendar .cal-cell.is-picked{background:var(--ink);border-color:var(--navy-950);color:var(--white);border-width:2px;font-weight:700}.reg-calendar .cal-cell.is-picked .dot{background:var(--yellow)}.reg-calendar .cal-cell.is-full{color:var(--ink-faint);background:#fff6}.reg-calendar .cal-cell.is-full .cal-day{text-decoration:line-through}.reg-calendar .cal-cell.is-full .dot{background:var(--ink-faint)}.reg-calendar .cal-cell.is-locked{color:var(--navy-600);background:#dfe4ec;border-color:#132a523d;font-weight:600}.reg-calendar .cal-cell.is-locked:hover{background:#dfe4ec}.reg-calendar .cal-cell.is-locked .cal-day{text-decoration:line-through}.reg-calendar .cal-cell.is-locked .cal-roster{opacity:.75}.reg-calendar .cal-cell.is-locked .dot{box-shadow:none;background:#132a5266}.reg-calendar .cal-cell.holiday{background:var(--red-pale);color:var(--red);border-width:2px;border-color:#cf443880;font-weight:700}.reg-calendar .cal-cell.holiday .dot{background:var(--red)}.reg-calendar .cal-cell.is-quiet{color:var(--ink-faint);cursor:default}.reg-calendar .cal-cell:disabled{cursor:default}.reg-calendar .cal-legend{color:var(--yellow-dark);margin:0 0 10px}.transfer-month-picker{scrollbar-width:none;gap:8px;margin:0 0 12px;padding-bottom:2px;display:flex;overflow-x:auto}.transfer-month-picker::-webkit-scrollbar{display:none}.request-transfer-detail{margin-top:3px;font-weight:600;display:block}.reg-holiday-list{border-top:2px solid var(--cal-rule);font-size:var(--fs-ui);color:var(--ink-soft);flex-flow:wrap;align-items:baseline;gap:4px 16px;margin:0 0 10px;padding:10px 0 0;list-style:none;display:flex}.reg-holiday-list li{align-items:baseline;gap:8px;display:flex}.reg-holiday-list strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--red);min-width:18px}.reg-holiday-list span{color:var(--ink-faint)}.booking-holiday-calendar{margin-bottom:4px}.booking-holiday-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;padding:0 2px;display:flex}.booking-holiday-kicker{color:var(--red);font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.14em;margin:0;font-weight:700}.booking-holiday-head h3{font-family:var(--font-display);font-size:var(--fs-title-sm);margin:3px 0 0}.booking-holiday-count{border-radius:var(--r-pill);background:var(--red-pale);color:var(--red);font-size:var(--fs-ui);flex-shrink:0;padding:6px 10px;font-weight:700}.booking-holiday-calendar .reg-calendar{margin-bottom:0}.booking-holiday-calendar .cal-cell{cursor:default}.booking-holiday-calendar .cal-cell:not(.pad):hover{background:#ffffff9e}.booking-holiday-calendar .cal-cell.holiday:hover{background:var(--red-pale)}.booking-holiday-name{width:100%;font-family:var(--font-body);font-size:var(--fs-ui);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-weight:600;line-height:1.15;overflow:hidden}.booking-holiday-empty{color:var(--ink-soft);font-size:var(--fs-ui);margin:12px 0 0}.profile-age-notice{border-radius:var(--r-sm);background:var(--yellow-pale);color:var(--yellow-dark);font-size:var(--fs-ui);border:1px solid #e3ac1459;align-items:flex-start;gap:8px;margin-bottom:14px;padding:11px 12px;line-height:1.55;display:flex}.profile-age-notice .icon{flex-shrink:0;margin-top:1px}@media (width>=640px){.booking-holiday-name{font-size:var(--fs-ui)}.level-picker{grid-template-columns:repeat(4,1fr)}}.app-topbar{top:calc(10px + env(safe-area-inset-top,0px));right:var(--screen-pad-x);z-index:30;pointer-events:none;justify-content:flex-end;align-items:center;padding:0;display:flex;position:absolute}.notif{pointer-events:auto;position:relative}@media (width<=1023px){.screen-header{position:relative}.screen-header>.h-app,.screen-header>:first-child>.h-app,.dsk-topbar h1{padding-right:56px}.screen-header:has(>button:last-child)>.h-app{padding-right:110px}.screen-header:has(>div:last-child:not(:first-child):has(button))>:first-child>.h-app{padding-right:110px}.screen-header>button:last-child{position:absolute;top:4px;right:56px}.screen-header>div:last-child:not(:first-child):has(button){position:absolute;top:4px;right:56px}.screen-header .export-btn.dsk-header-action,.screen-header .export-btn.class-add-button{border-radius:14px;width:44px;height:44px;padding:0}.screen-header:has(>.badge:last-child):not(.leave-queue-header){flex-wrap:wrap}.screen-header:has(>.badge:last-child):not(.leave-queue-header)>:first-child{flex-basis:100%}.screen-header:not(.leave-queue-header)>.badge:last-child{order:3;align-self:flex-start;margin-top:6px}.leave-queue-header>.badge{align-self:flex-start}.dsk-main .today-students-count,.dsk-main .design-admin-actions,.student-dsk-main .registration-history-control{margin-right:56px}.student-dsk-main .home-head .h-app{padding-right:56px}.student-dsk-main .schedule-page-head:has(>.badge){flex-wrap:wrap}.student-dsk-main .schedule-page-head:has(>.badge)>:first-child{flex-basis:100%}.student-dsk-main .schedule-page-head>.badge{order:3;align-self:flex-start;margin-top:6px}}.notif-trigger{background:var(--surface);width:44px;height:44px;box-shadow:inset 0 0 0 1px var(--hairline), var(--e1);color:var(--ink-soft);transition:background var(--dur) var(--ease), color var(--dur) var(--ease), transform var(--dur-fast) var(--ease);border-radius:14px;justify-content:center;align-items:center;display:flex;position:relative}.notif-trigger:hover{color:var(--ink)}.notif-trigger:active{transform:scale(.94)}.notif-trigger[aria-expanded=true]{background:var(--ink);color:var(--white)}.notif-trigger.has-unread{color:var(--ink)}.notif-trigger .icon{transform-origin:50% 8%}.notif-trigger.has-unread .icon{animation:notifRing .62s var(--ease-out)}@keyframes notifRing{0%{transform:rotate(0)}18%{transform:rotate(-20deg)}42%{transform:rotate(14deg)}62%{transform:rotate(-7deg)}80%{transform:rotate(3deg)}to{transform:rotate(0)}}.notif-trigger.has-unread:after{content:"";box-shadow:0 0 0 2px var(--yellow-glow);animation:notifPulse 2.4s var(--ease) infinite;border-radius:17px;position:absolute;inset:-3px}@keyframes notifPulse{0%,to{opacity:.9}50%{opacity:.25}}.notif-badge{border-radius:var(--r-pill);background:var(--yellow);min-width:19px;height:19px;color:var(--navy-950);font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;text-align:center;box-shadow:0 0 0 2px var(--canvas);animation:notifBadgePop .24s var(--ease-out);padding:0 5px;font-weight:700;line-height:19px;position:absolute;top:-5px;right:-5px}@keyframes notifBadgePop{0%{opacity:0;transform:scale(.5)}60%{opacity:1;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}.notif-panel{z-index:40;width:min(340px, calc(100vw - 2 * var(--screen-pad-x)));background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--e3), inset 0 0 0 1px var(--hairline-soft);transform-origin:100% 0;animation:notifPanelIn var(--dur) var(--ease-out);position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}@keyframes notifPanelIn{0%{opacity:0;transform:translateY(-6px)scale(.96)}to{opacity:1;transform:none}}.notif-panel.is-closing{animation:notifPanelOut .18s var(--ease-out) forwards}@keyframes notifPanelOut{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(-6px)scale(.96)}}.notif-panel-head{background:linear-gradient(180deg, var(--ink) 0%, var(--navy-900) 100%);border-bottom:2px solid var(--yellow);justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.notif-panel-head h2{font-family:var(--font-display);font-size:var(--fs-ui);letter-spacing:.01em;color:var(--white);margin:0;font-weight:600}.notif-close{color:#fff9;width:28px;height:28px;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);border-radius:9px;justify-content:center;align-items:center;display:flex}.notif-close:hover{color:var(--white);background:#ffffff1f}.notif-list-wrap{overscroll-behavior:contain;max-height:min(62vh,430px);overflow-y:auto}.notif-list{margin:0;padding:0;list-style:none}.notif-row{border-bottom:1px solid var(--hairline-soft);animation:notifRowIn var(--dur) var(--ease-out) backwards;align-items:stretch;gap:10px;padding:11px 13px;display:flex}.notif-row:last-child{border-bottom:none}@keyframes notifRowIn{0%{opacity:0;transform:translate(6px)}to{opacity:1;transform:none}}.notif-row.is-unread{background:var(--surface-alt)}.notif-row-rail{border-radius:var(--r-pill);opacity:.32;flex-shrink:0;width:3px}.notif-row.is-unread .notif-row-rail{opacity:1}.notif-row.tone-info .notif-row-rail{background:var(--blue)}.notif-row.tone-success .notif-row-rail{background:var(--green)}.notif-row.tone-warning .notif-row-rail{background:var(--yellow-deep)}.notif-row-body{flex:1;min-width:0}.notif-row-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.notif-row-title{font-size:var(--fs-ui);color:var(--ink);margin:0;font-weight:600;line-height:1.4}.notif-row-time{font-family:var(--font-mono);font-size:var(--fs-ui);color:var(--ink-faint);white-space:nowrap;flex-shrink:0}.notif-row-text{font-size:var(--fs-ui);color:var(--ink-soft);overflow-wrap:anywhere;margin:3px 0 0;line-height:1.55}.notif-row-dot{background:var(--yellow-deep);border-radius:50%;flex-shrink:0;width:7px;height:7px;margin-top:5px}.notif-row-remove{width:28px;height:28px;color:var(--ink-faint);opacity:.65;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), opacity var(--dur-fast) var(--ease);border-radius:9px;flex-shrink:0;justify-content:center;align-self:center;align-items:center;display:flex}.notif-row-remove:hover,.notif-row-remove:focus-visible{background:var(--red-pale);color:var(--red);opacity:1}.notif-row-remove:active{transform:scale(.92)}.notif-empty{text-align:center;font-size:var(--fs-ui);color:var(--ink-faint);margin:0;padding:26px 14px}.notif-empty-state{text-align:center;color:var(--ink-faint);padding:30px 22px 34px}.notif-empty-state .icon{color:var(--ink-faint);opacity:.5}.notif-empty-state p{font-size:var(--fs-ui);color:var(--ink-soft);margin:10px 0 3px;font-weight:600}.notif-empty-state span{font-size:var(--fs-ui);line-height:1.5}@media (width>=1024px){.student-dsk-main>.app-topbar,.dsk-main>.app-topbar{--screen-pad-x:0px;-webkit-backdrop-filter:none;background:0 0;max-width:none;margin-inline:0;padding-top:0;padding-bottom:12px;position:static}.notif-panel{width:360px}}.yc-rail{z-index:20;border-radius:var(--r-md);-webkit-backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px var(--hairline), var(--e1);background:#ffffffdb;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;padding:10px 12px;display:flex;position:sticky;top:0}.yc-year-switch{border-radius:var(--r-pill);background:var(--ink-tint);align-items:center;gap:4px;padding:4px;display:flex}.yc-year-switch button{border-radius:var(--r-pill);background:var(--surface);width:44px;height:44px;color:var(--ink);cursor:pointer;touch-action:manipulation;box-shadow:inset 0 0 0 1px var(--hairline);transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);border:none;place-items:center;display:grid}.yc-year-switch button:hover:not(:disabled){background:var(--ink);color:var(--white)}.yc-year-switch button:active:not(:disabled){transform:scale(.94)}.yc-year-switch button:disabled{opacity:.4;cursor:not-allowed}.yc-year{font-family:var(--font-display);font-size:var(--fs-title-md);color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em;text-align:center;min-width:4ch;padding:0 6px;font-weight:700;line-height:1.1}.yc-year small{font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.14em;color:var(--ink-faint);font-weight:600;display:block}.yc-total{border-radius:var(--r-pill);background:var(--red-pale);color:var(--red);font-size:var(--fs-ui);align-items:center;gap:6px;padding:9px 14px;font-weight:600;display:inline-flex}.yc-total b{font-family:var(--font-mono);font-size:var(--fs-title-sm);font-variant-numeric:tabular-nums;line-height:1}.yc-total.is-zero{background:var(--ink-tint);color:var(--ink-soft)}.yc-rail-spacer{flex:1}.yc-today-btn{border-radius:var(--r-pill);background:var(--ink);color:var(--white);font-family:var(--font-body);font-size:var(--fs-ui);cursor:pointer;touch-action:manipulation;min-height:44px;transition:transform var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);border:none;padding:0 18px;font-weight:600}.yc-today-btn:hover{background:var(--navy-800)}.yc-today-btn:active{transform:scale(.96)}.yc-board{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.yc-month{border-radius:var(--r-md);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hairline-soft), var(--e1);animation:ycMonthIn var(--dur-slow) var(--ease-out) backwards;animation-delay:calc(var(--yc-stagger,0) * 26ms);padding:13px 13px 11px}.yc-month.is-current{box-shadow:inset 0 0 0 1.5px var(--blue), var(--e2)}@keyframes ycMonthIn{0%{opacity:0;transform:translateY(8px)}}.yc-month-head{align-items:center;gap:8px;margin-bottom:9px;display:flex}.yc-month-name{font-family:var(--font-display);font-size:var(--fs-ui);color:var(--ink);margin:0;font-weight:600;line-height:1.2}.yc-now-tag{font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.1em;border-radius:var(--r-pill);background:var(--blue-pale);color:var(--blue-ink);padding:2px 6px;font-weight:700}.yc-count{border-radius:var(--r-pill);background:var(--red-pale);min-width:22px;height:20px;color:var(--red);font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;place-items:center;margin-left:auto;padding:0 6px;font-weight:700;display:grid}.yc-count.is-zero{background:var(--ink-tint);color:var(--ink-faint)}.yc-dow{grid-template-columns:repeat(7,minmax(0,1fr));margin-bottom:3px;display:grid}.yc-dow span{text-align:center;font-size:var(--fs-ui);letter-spacing:.03em;color:var(--ink-faint);font-weight:700}.yc-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;display:grid}.yc-day{cursor:pointer;min-width:0;height:44px;font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;color:var(--ink-soft);transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);background:0 0;border:none;border-radius:9px;place-items:center;padding:0;font-weight:500;display:grid;position:relative}.yc-day.is-pad{pointer-events:none}.yc-day:hover:not(.is-pad){background:var(--ink-tint);color:var(--ink)}.yc-day:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.yc-num{line-height:1;transform:translateY(-2px)}.yc-dot{background:var(--red);border-radius:50%;width:4px;height:4px;margin-left:-2px;position:absolute;bottom:4px;left:50%}.yc-day.is-holiday{color:var(--red);font-weight:700}.yc-day.is-holiday:hover{background:var(--red-pale);color:var(--red)}.yc-day.is-today{background:var(--ink);color:var(--white);box-shadow:var(--e1);font-weight:700}.yc-day.is-today.is-holiday{background:var(--red-pale);color:var(--red);box-shadow:inset 0 0 0 2px var(--yellow), var(--e1)}.yc-day.is-today:hover{background:var(--navy-800);color:var(--white)}.yc-day.is-today.is-holiday:hover{background:var(--red-pale);color:var(--red)}.yc-day.is-today .yc-dot{background:var(--yellow)}.yc-day.is-selected:not(.is-today){box-shadow:inset 0 0 0 1.5px var(--blue)}.yc-legend{font-size:var(--fs-ui);color:var(--ink-soft);flex-wrap:wrap;gap:6px 16px;margin:0 2px 12px;display:flex}.yc-legend span{align-items:center;gap:6px;display:inline-flex}.yc-legend-mark{border-radius:6px;flex:none;place-items:center;width:16px;height:16px;display:grid}.yc-legend-mark.is-holiday{background:var(--red-pale);position:relative;box-shadow:inset 0 0 0 1px #cf443840}.yc-legend-mark.is-holiday:after{content:"";background:var(--red);border-radius:2px;width:12px;height:5px}.yc-legend-mark.is-today{background:var(--ink)}.yc-legend-mark.is-open{background:var(--surface);box-shadow:inset 0 0 0 1px var(--hairline)}.yc-month.is-skeleton{animation:none}.yc-skeleton-bar,.yc-skeleton-cell{background:var(--ink-tint);animation:ycPulse 1.4s var(--ease) infinite;border-radius:6px}.yc-skeleton-bar{height:12px;display:block}.yc-skeleton-bar:last-child{margin-left:auto}.yc-skeleton-cell{border-radius:9px}@keyframes ycPulse{50%{opacity:.45}}@media (width>=520px){.yc-board{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=860px){.yc-board{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.yc-day{height:38px}.yc-rail{top:0}.yc-year{font-size:var(--fs-title-md)}}@media (width>=1180px){.yc-board{grid-template-columns:repeat(4,minmax(0,1fr))}.yc-day{height:34px;font-size:var(--fs-ui)}}@media (prefers-reduced-motion:reduce){.yc-month,.yc-skeleton-bar,.yc-skeleton-cell{animation:none}.yc-today-btn:active,.yc-year-switch button:active{transform:none}}.hol-stack{gap:14px;display:grid}.hol-cat{border-radius:var(--r-md);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hairline-soft), var(--e1);animation:ycMonthIn var(--dur-slow) var(--ease-out) backwards;overflow:hidden}.hol-stack>.hol-cat:nth-child(2){animation-delay:60ms}.hol-stack>.hol-cat:nth-child(3){animation-delay:.12s}.hol-cat.is-monthly{--hol-tone:var(--blue);--hol-tone-ink:var(--blue-ink);--hol-tone-pale:var(--blue-pale)}.hol-cat.is-special{--hol-tone:var(--red);--hol-tone-ink:var(--red);--hol-tone-pale:var(--red-pale)}.hol-cat.is-annual{--hol-tone:var(--yellow);--hol-tone-ink:var(--yellow-dark);--hol-tone-pale:var(--yellow-pale)}.hol-cat-head{background:var(--ink);align-items:center;gap:11px;padding:11px 13px;display:flex}.hol-cat-dot{background:var(--hol-tone,var(--white));border-radius:999px;flex:0 0 4px;height:30px}.hol-cat-titles{flex:1;min-width:0}.hol-cat-name{font-family:var(--font-display);font-size:var(--fs-ui);color:var(--white);margin:0;font-weight:600;line-height:1.25}.hol-cat-hint{font-size:var(--fs-ui);color:var(--blue-bright);margin:2px 0 0;line-height:1.35}.hol-cat-count{border-radius:var(--r-pill);color:var(--white);font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;background:#ffffff24;flex:none;align-items:baseline;gap:3px;padding:4px 10px;font-weight:700;display:inline-flex}.hol-cat-count small{font-family:var(--font-body);font-size:var(--fs-ui);opacity:.75;font-weight:600}.hol-cat-count.is-zero{opacity:.5}.hol-table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%}.hol-col-when{width:74px}.hol-col-act{width:50px;position:relative}.hol-table .hol-col-act{padding-left:0;padding-right:8px}.hol-table thead th{background:var(--table-head);text-align:left;font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.02em;color:var(--table-head-fg);white-space:nowrap;border-bottom:0;padding:7px 12px;font-weight:700}.hol-table td{border-top:1px solid var(--hairline-soft);vertical-align:middle;padding:10px 12px}.hol-table tbody tr:first-child td{border-top:none}.hol-table tbody tr:hover td{background:var(--ink-tint)}.hol-daynum{font-family:var(--font-mono);font-size:var(--fs-title-sm);letter-spacing:-.01em;color:var(--ink);font-variant-numeric:tabular-nums;font-weight:700;line-height:1;display:block}.hol-month{font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.03em;color:var(--ink-faint);white-space:nowrap;margin-top:3px;font-weight:600;display:block}.hol-chips{flex-wrap:wrap;gap:3px;display:flex}.hol-chips i{background:var(--hol-tone-pale);min-width:19px;height:19px;color:var(--hol-tone-ink);font-size:var(--fs-ui);border-radius:6px;place-items:center;padding:0 3px;font-style:normal;font-weight:700;line-height:1;display:inline-grid}.hol-name{font-size:var(--fs-ui);color:var(--ink);overflow-wrap:anywhere;font-weight:600;line-height:1.3;display:block}.hol-sub{font-size:var(--fs-ui);color:var(--ink-soft);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:5px;margin-top:3px;line-height:1.4;display:flex}.hol-flag{border-radius:var(--r-pill);font-size:var(--fs-ui);letter-spacing:.02em;padding:2px 6px;font-weight:700}.hol-flag.is-today{background:var(--red-pale);color:var(--red)}.hol-flag.is-past{background:var(--ink-tint);color:var(--ink-soft)}.hol-table tr.is-past .hol-daynum{color:var(--ink-faint)}.hol-table tr.is-past .hol-name{color:var(--ink-soft);font-weight:500}.hol-table tr.is-past .hol-chips i{opacity:.55}.hol-table tr.is-today td{background:var(--red-pale)}.hol-table tr.is-today .hol-daynum{color:var(--red)}.hol-col-act .icon-action{margin-left:auto;position:relative}.hol-col-act .icon-action:after{content:"";position:absolute;inset:-4px}.hol-col-act .icon-action.confirming{z-index:1;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.hol-cat-empty{text-align:center;font-size:var(--fs-ui);color:var(--ink-faint);margin:0;padding:18px 14px}.hol-total{border-radius:var(--r-pill);background:var(--red-pale);color:var(--red);font-size:var(--fs-ui);white-space:nowrap;align-items:baseline;gap:4px;padding:4px 10px;font-weight:600;display:inline-flex}.hol-total b{font-family:var(--font-mono);font-size:var(--fs-ui);color:var(--red);font-variant-numeric:tabular-nums}.hol-add-label{display:none}.hol-toolbar{gap:8px;margin:12px 0;display:grid}.hol-search{min-width:0}.hol-filter{border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface);min-height:42px;color:var(--blue-ink);align-items:center;gap:8px;padding:0 11px;display:flex}.hol-filter .ant-select{flex:1;min-width:0}.hol-filter .ant-select-selector{padding-inline:0!important}.hol-filter:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-pale)}.required-mark{color:var(--red);font-weight:700}.field.has-error textarea,.field.has-error input{border-color:var(--red);box-shadow:0 0 0 3px var(--red-pale)}.field-error{color:var(--red);font-size:var(--fs-ui);margin:6px 0 0;font-weight:600}.makeup-months{margin-bottom:10px}.makeup-calendar-card{margin-bottom:10px;padding:14px}.makeup-calendar-heading,.request-history-item-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.makeup-calendar-heading{align-items:center;margin-bottom:12px}.makeup-round-hint{margin:10px 0 6px}.leave-selected-summary{border:1px solid var(--blue);border-radius:var(--r-sm);background:var(--blue-pale);color:var(--blue-ink);align-items:center;gap:10px;margin:0 0 12px;padding:10px 12px;display:flex}.leave-selected-summary>.icon{flex:none}.leave-selected-copy{min-width:0;font-size:var(--fs-ui);flex:auto;gap:2px;line-height:1.4;display:grid}.leave-selected-copy span{overflow-wrap:anywhere}.leave-clear-selection{border-radius:var(--r-xs);min-height:44px;color:var(--blue-ink);font:inherit;cursor:pointer;background:0 0;border:0;flex:none;padding:6px 8px;font-weight:700}.leave-cancel-button{border-color:var(--red);background:var(--white);color:var(--red);margin-top:6px}.leave-cancel-button:hover:not(:disabled){border-color:var(--red);background:var(--red);color:var(--white)}.leave-cancel-button:focus-visible{outline:3px solid var(--red);outline-offset:2px}.leave-main .schedule-month-caption{color:var(--blue-ink);font-weight:700}.leave-schedule-calendar{margin-bottom:12px}.leave-month-empty{margin:0 0 14px;padding:14px 16px}.request-history-card{overflow:hidden}.request-history-desktop{display:none}.request-history-mobile{display:grid}.request-history-item{border-top:1px solid var(--hairline-soft);gap:6px;padding:15px 16px;display:grid}.request-history-item:first-child{border-top:0}.request-history-item>strong{font-size:var(--fs-ui)}.request-history-item>span,.request-history-item>small,.request-history-item>time{color:var(--ink-soft);font-size:var(--fs-ui);line-height:1.5}.request-history-item>small{color:var(--ink-faint)}.request-history-empty{text-align:center;margin:0}@media (width>=768px){.request-history-desktop{display:block;overflow-x:auto}.request-history-mobile{display:none}.request-history-table{border-collapse:collapse;width:100%;min-width:760px;font-size:var(--fs-ui)}.request-history-table th{background:var(--table-head);color:var(--table-head-fg);font-size:var(--fs-ui);text-align:left;white-space:nowrap;padding:11px 13px;font-weight:600}.request-history-table td{border-top:1px solid var(--hairline-soft);color:var(--ink);vertical-align:top;padding:12px 13px}.request-history-table tbody tr:nth-child(2n) td{background:var(--surface-alt)}.request-history-table td small{max-width:280px;color:var(--ink-soft);white-space:normal;margin-top:4px;line-height:1.45;display:block}}.hol-cat.is-skeleton .hol-cat-head{background:var(--ink-tint)}.hol-skeleton-row{border-top:1px solid var(--hairline-soft);align-items:center;gap:12px;padding:12px 13px;display:flex}.hol-skeleton-row:first-child{border-top:none}.hol-shim{background:linear-gradient(90deg, var(--ink-tint), #e6edf7, var(--ink-tint));height:12px;animation:holShimmer 1.2s var(--ease) infinite;background-size:200% 100%;border-radius:6px;display:block}@keyframes holShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (width>=560px){.hol-toolbar{grid-template-columns:minmax(0,1fr) 178px;align-items:stretch}.hol-add-label{display:inline}.hol-cat-head{padding:13px 16px}.hol-col-when{width:100px}.hol-col-act{width:62px}.hol-table .hol-col-act{padding-right:12px}.hol-table thead th{padding:8px 16px}.hol-table td{padding:12px 16px}.hol-name,.hol-sub,.hol-cat-hint{font-size:var(--fs-ui)}}@media (width>=1024px){.hol-stack{gap:18px}.hol-daynum{font-size:var(--fs-title-sm)}.hol-cat-name{font-size:var(--fs-ui)}}@media (width>=1280px){.hol-stack{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}@media (prefers-reduced-motion:reduce){.hol-cat,.hol-shim{animation:none}}.hol-search{margin-bottom:0}.hol-directory{border:1px solid var(--hairline-soft);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--e1);overflow:hidden}.hol-desktop-table{display:none}.hol-mobile-list{display:block}.hol-mobile-row{border-top:1px solid var(--hairline-soft);grid-template-columns:60px minmax(0,1fr) 38px;align-items:center;gap:11px;min-height:92px;padding:12px 10px 12px 12px;display:grid}.hol-mobile-row:first-child{border-top:0}.hol-mobile-row.is-today{background:var(--red-pale)}.hol-mobile-row.is-past{background:var(--surface-alt)}.hol-mobile-date{background:var(--ink-tint);color:var(--ink);text-align:center;border-radius:10px;flex-direction:column;justify-content:center;align-self:stretch;align-items:center;gap:5px;padding:7px 4px;display:flex}.hol-mobile-row.is-today .hol-mobile-date{background:var(--surface);color:var(--red)}.hol-mobile-date strong{font-family:var(--font-mono);font-size:var(--fs-title-md);font-variant-numeric:tabular-nums;line-height:1}.hol-mobile-date small{font-family:var(--font-mono);font-size:var(--fs-ui);color:var(--ink-faint);font-weight:700;line-height:1.25}.hol-mobile-date .hol-chips{justify-content:center}.hol-mobile-copy{min-width:0}.hol-mobile-copy h4{font-size:var(--fs-ui);color:var(--ink);overflow-wrap:anywhere;margin:6px 0 2px;font-weight:700;line-height:1.3}.hol-mobile-copy p{font-size:var(--fs-ui);color:var(--ink-soft);margin:0}.hol-mobile-meta{flex-wrap:wrap;gap:5px;display:flex}.hol-kind-badge,.hol-status{border-radius:var(--r-pill);width:fit-content;min-height:21px;font-size:var(--fs-ui);white-space:nowrap;align-items:center;padding:3px 8px;font-weight:700;line-height:1.2;display:inline-flex}.hol-kind-badge.is-monthly{background:var(--blue-pale);color:var(--blue-ink)}.hol-kind-badge.is-special{background:var(--red-pale);color:var(--red)}.hol-kind-badge.is-annual{background:var(--yellow-pale);color:var(--yellow-dark)}.hol-status.is-upcoming{color:#267342;background:#e8f5ec}.hol-status.is-today{background:var(--red-pale);color:var(--red)}.hol-status.is-past{background:var(--ink-tint);color:var(--ink-soft)}.hol-mobile-row>.icon-action{justify-self:end}.hol-mobile-row>.icon-action.confirming{width:auto;font-size:var(--fs-ui);padding-inline:8px}@media (width>=560px){.screen-tabs .hol-add-button{border-radius:var(--r-sm);width:auto;font-size:var(--fs-ui);white-space:nowrap;gap:7px;padding:0 14px;font-weight:700}}@media (width>=768px){.hol-desktop-table{display:block;overflow-x:auto}.hol-mobile-list{display:none}.hol-table{table-layout:auto;min-width:850px}.hol-table thead th{color:var(--ink-soft);font-family:var(--font-body);font-size:var(--fs-ui);letter-spacing:0;background:#f1f6fb;padding:11px 14px}.hol-table td{font-size:var(--fs-ui);padding:14px}.hol-table tbody tr:hover td{background:#f8fbfe}.hol-table tr.is-today td{background:var(--red-pale)}.hol-col-year{width:76px;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.hol-col-date{width:230px}.hol-col-kind{width:158px}.hol-col-status{width:124px}.hol-col-act{width:58px}.hol-table .hol-col-act{padding-right:14px}.hol-date-main,.hol-date-sub{display:block}.hol-date-main{color:var(--ink);font-weight:600}.hol-date-sub{color:var(--ink-faint);font-size:var(--fs-ui);margin-top:2px}.hol-name{font-size:var(--fs-ui)}.hol-table tr.is-past .hol-name,.hol-table tr.is-past .hol-date-main{color:var(--ink-soft);font-weight:500}}.student-schedule-page{--schedule-paper:#fbfdff}.schedule-page-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.schedule-page-head .badge{flex-shrink:0;margin-top:18px}.registration-page-head{flex-wrap:wrap;align-items:center}.registration-history-control{align-items:center;gap:8px;max-width:100%;margin-left:auto;display:flex}.registration-history-control .schedule-month-caption{white-space:nowrap}.registration-history-select{flex:190px;width:190px;min-width:0;max-width:100%}.schedule-eyebrow,.schedule-card-kicker,.schedule-modal-eyebrow{color:var(--blue-ink);font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.16em;margin:0;font-weight:700}.schedule-page-head .sub-app{margin-bottom:14px}.schedule-month-bar{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--e1);justify-content:space-between;align-items:center;gap:12px;margin:2px 0 15px;padding:10px 12px;display:flex}.schedule-month-bar>div{text-align:center;gap:1px;display:grid}.schedule-month-label{font-family:var(--font-display);font-size:var(--fs-body-lg);font-weight:600}.schedule-month-caption{color:var(--ink-soft);font-size:var(--fs-ui)}.schedule-month-arrow{border:1px solid var(--hairline);border-radius:var(--r-sm);width:38px;height:38px;color:var(--ink);transition:background var(--dur) var(--ease), color var(--dur) var(--ease);place-items:center;display:grid}.schedule-month-arrow:hover{background:var(--blue-pale);color:var(--blue-ink)}.schedule-month-arrow:disabled{opacity:.35;cursor:not-allowed;color:var(--ink);background:0 0}.schedule-layout{grid-template-columns:minmax(0,1fr);gap:18px;display:grid}.schedule-calendar-card{background:var(--schedule-paper,var(--surface));min-width:0;padding:16px 13px 13px}.schedule-card-head,.schedule-agenda-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:15px;display:flex}.schedule-card-head h2,.schedule-agenda-head h2{font-family:var(--font-display);font-size:var(--fs-title-sm);margin:3px 0 0;line-height:1.2}.schedule-calendar-hint{max-width:120px;color:var(--ink-soft);font-size:var(--fs-ui);text-align:right;line-height:1.45}.schedule-weekdays,.schedule-calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;display:grid}.schedule-weekdays{color:var(--ink-faint);font-family:var(--font-mono);font-size:var(--fs-ui);text-align:center;margin-bottom:7px}.schedule-calendar-grid{grid-auto-rows:minmax(62px,auto)}.schedule-day-cell{border:1px solid var(--hairline-soft);background:var(--white);min-width:0;min-height:62px;color:var(--ink);text-align:left;border-radius:12px;flex-direction:column;align-items:flex-start;padding:7px 6px;display:flex;position:relative;overflow:hidden}.schedule-day-cell.has-class{background:var(--blue-pale);cursor:pointer;transition:transform var(--dur-fast) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);border-color:#3e8fe861}.schedule-day-cell.has-class:hover{border-color:var(--blue);box-shadow:var(--e1);transform:translateY(-1px)}.schedule-day-cell.is-excused{background:var(--yellow-pale);border-color:#6e53004d}.schedule-day-cell.is-excused:hover{border-color:var(--yellow-dark)}.schedule-day-cell.is-absent{border-color:var(--red);background:var(--red-pale)}.schedule-day-cell.is-absent:hover{border-color:var(--red)}.schedule-day-cell.is-today{box-shadow:inset 0 0 0 2px var(--yellow)}.schedule-day-cell.holiday{background:var(--red-pale);color:var(--red);border-color:#cf44384d}.schedule-day-cell.is-past{opacity:.6}.schedule-day-cell.is-absent.is-past{opacity:1}.schedule-day-cell.is-active{border-color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}.schedule-day-empty{background:0 0;border-color:#0000}.schedule-day-number{font-family:var(--font-mono);font-size:var(--fs-ui);font-variant-numeric:tabular-nums;font-weight:700}.schedule-day-class{width:100%;color:var(--blue-ink);font-size:var(--fs-ui);text-overflow:ellipsis;white-space:nowrap;margin-top:8px;font-weight:700;overflow:hidden}.schedule-day-time{max-width:100%;color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--fs-ui);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;overflow:hidden}.schedule-day-status{color:var(--yellow-dark);font-size:var(--fs-ui);margin-top:4px;font-weight:700;line-height:1.2}.schedule-day-status.is-past{color:var(--yellow-dark)}.schedule-day-status.is-absent{color:var(--red)}.schedule-day-note{color:var(--red);font-size:var(--fs-ui);margin-top:10px;font-weight:700}.schedule-day-more{color:var(--blue-ink);font-size:var(--fs-ui);font-weight:700;position:absolute;bottom:5px;right:5px}.schedule-calendar-legend{color:var(--ink-soft);font-size:var(--fs-ui);flex-wrap:wrap;gap:8px 13px;margin-top:13px;display:flex}.schedule-calendar-legend span{align-items:center;gap:5px;display:inline-flex}.legend-dot{background:var(--hairline);border-radius:50%;width:7px;height:7px}.legend-dot.is-class{background:var(--blue)}.legend-dot.is-today{background:var(--yellow)}.legend-dot.is-holiday{background:var(--red)}.legend-dot.is-leave{background:var(--yellow-dark)}.legend-dot.is-past{background:var(--yellow-deep)}.legend-dot.is-absent{background:var(--red)}.schedule-data-note{color:var(--ink-soft);font-size:var(--fs-ui);margin:11px 0 0;line-height:1.55}.schedule-agenda-column{min-width:0}.schedule-agenda-head{align-items:center;margin-bottom:10px}.schedule-agenda-head>.icon{color:var(--blue-ink)}.schedule-agenda-list{gap:9px;display:grid}.schedule-agenda-item{border:1px solid var(--hairline-soft);border-radius:var(--r-md);background:var(--surface);width:100%;min-height:75px;box-shadow:var(--e1);text-align:left;transition:transform var(--dur-fast) var(--ease), border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);align-items:center;gap:10px;padding:11px 10px;display:flex}.schedule-agenda-item:hover,.schedule-agenda-item.is-next{box-shadow:var(--e2);border-color:#3e8fe861;transform:translateY(-1px)}.schedule-agenda-date{color:var(--blue-ink);flex:0 0 38px;place-items:center;line-height:1;display:grid}.schedule-agenda-date strong{font-family:var(--font-mono);font-size:var(--fs-title-sm)}.schedule-agenda-date span{color:var(--ink-soft);font-size:var(--fs-ui);margin-top:4px}.schedule-agenda-main{flex:1;gap:2px;min-width:0;display:grid}.schedule-agenda-main strong,.schedule-agenda-main span,.schedule-agenda-main small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.schedule-agenda-main strong{font-size:var(--fs-ui)}.schedule-agenda-main span{color:var(--blue-ink);font-family:var(--font-mono);font-size:var(--fs-ui)}.schedule-agenda-main small{color:var(--ink-soft);font-size:var(--fs-ui)}.schedule-agenda-item>.icon{color:var(--ink-faint)}.schedule-inline-empty,.schedule-note-card{color:var(--ink-soft);align-items:center;gap:10px;display:flex}.schedule-inline-empty{text-align:center;justify-content:center;min-height:86px}.schedule-inline-empty p,.schedule-note-card p{font-size:var(--fs-ui);margin:0;line-height:1.55}.schedule-inline-empty>.icon,.schedule-note-card>.icon{color:var(--blue-ink)}.schedule-note-card{background:var(--surface-alt);box-shadow:none;margin-top:14px}.schedule-state-card{text-align:center;justify-items:center;gap:8px;padding:30px 20px;display:grid}.schedule-state-mark{background:var(--blue-pale);width:52px;height:52px;color:var(--blue-ink);border-radius:17px;place-items:center;display:grid}.schedule-state-card h2{font-family:var(--font-display);font-size:var(--fs-title-sm);margin:4px 0 0}.schedule-state-card p{max-width:340px;color:var(--ink-soft);font-size:var(--fs-ui);margin:0 0 7px;line-height:1.7}.schedule-state-error{color:var(--red)}.schedule-state-error h2{color:var(--ink)}.schedule-state-error .btn{margin-top:5px}.schedule-loading{gap:14px;display:grid}.schedule-skeleton{border-radius:var(--r-md);background:linear-gradient(90deg, var(--surface-alt), #f9fbfe, var(--surface-alt));background-size:200% 100%;animation:1.35s ease-in-out infinite scheduleShimmer}.schedule-skeleton-heading{height:66px}.schedule-skeleton-calendar{height:340px}.schedule-skeleton-list{height:92px}@keyframes scheduleShimmer{to{background-position:-200% 0}}.schedule-modal-overlay{z-index:50;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:modalFade var(--dur) var(--ease-out);background:#060d1c94;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.schedule-modal{width:100%;max-height:min(88dvh,760px);padding:20px 18px calc(18px + var(--safe-bottom));background:var(--surface);box-shadow:var(--e3);animation:modalRise var(--dur-slow) var(--ease-out);border-radius:24px 24px 0 0;overflow:auto}.schedule-modal-head{justify-content:space-between;gap:12px;display:flex}.schedule-modal-head h2{font-family:var(--font-display);font-size:var(--fs-title-md);margin:5px 0 3px}.schedule-modal-date{color:var(--ink-soft);font-size:var(--fs-ui);margin:0}.schedule-detail-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:17px 0 20px;display:grid}.schedule-detail-stats>div{border-radius:var(--r-sm);background:var(--surface-alt);align-content:start;gap:5px;min-width:0;padding:10px;display:grid}.schedule-detail-stats span{color:var(--ink-soft);font-size:var(--fs-ui)}.schedule-detail-stats strong{font-size:var(--fs-ui)}.schedule-detail-stats .badge{text-overflow:ellipsis;white-space:nowrap;justify-self:start;max-width:100%;overflow:hidden}.schedule-detail-section+.schedule-detail-section{margin-top:19px}.schedule-detail-section-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:9px;display:flex}.schedule-detail-section-head h3{font-size:var(--fs-ui);margin:0}.schedule-detail-section-head>.icon{color:var(--blue-ink)}.schedule-detail-count{color:var(--ink-soft);font-size:var(--fs-ui)}.schedule-teacher-list{flex-wrap:wrap;gap:8px;display:flex}.schedule-teacher,.schedule-roster-row{align-items:center;gap:9px;display:flex}.schedule-teacher{border:1px solid var(--hairline-soft);border-radius:var(--r-pill);background:var(--surface-alt);font-size:var(--fs-ui);padding:7px 10px 7px 7px;font-weight:600}.schedule-roster-list{gap:7px;display:grid}.schedule-roster-row{border-radius:var(--r-sm);background:var(--surface-alt);padding:8px}.schedule-roster-row>span{min-width:0;font-size:var(--fs-ui);text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:600;overflow:hidden}.schedule-roster-row .badge{flex-shrink:0}.schedule-detail-muted{color:var(--ink-soft);font-size:var(--fs-ui);margin:0;line-height:1.6}.schedule-detail-note{color:var(--yellow-dark);font-size:var(--fs-ui);align-items:center;gap:6px;margin:10px 0 0;display:flex}.schedule-modal-close{margin-top:22px}.admin-day-modal{max-width:820px}.admin-day-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:18px 0 20px;display:grid}.admin-day-summary>div{border:1px solid var(--hairline-soft);border-radius:var(--r-sm);background:var(--surface-alt);grid-template-columns:auto auto;align-items:baseline;column-gap:7px;padding:11px 12px;display:grid}.admin-day-summary span,.admin-day-summary small{color:var(--ink-soft);font-size:var(--fs-compact);grid-column:1/-1}.admin-day-summary strong{color:var(--ink);font-size:var(--fs-title-sm);font-variant-numeric:tabular-nums}.admin-day-summary small{color:var(--ink-faint);grid-column:auto;display:inline}.admin-day-session-list{gap:14px;display:grid}.admin-day-session{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);padding:15px}.admin-day-session-head{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.admin-day-session-time{color:var(--blue-ink);font-family:var(--font-mono);font-size:var(--fs-compact);font-variant-numeric:tabular-nums;font-weight:700;display:inline-block}.admin-day-session h3{color:var(--ink);font-family:var(--font-display);font-size:var(--fs-title-sm);margin:4px 0 2px;line-height:1.25}.admin-day-session-head p{color:var(--ink-soft);font-size:var(--fs-compact);margin:0}.admin-day-capacity{color:var(--ink-soft);font-size:var(--fs-compact);text-align:right;flex:none;justify-items:end;gap:1px;display:grid}.admin-day-capacity strong{color:var(--ink);font-size:var(--fs-title-md);font-variant-numeric:tabular-nums;line-height:1}.admin-day-capacity strong small{color:var(--ink-faint);font-size:var(--fs-ui);font-weight:600}.admin-day-capacity span{white-space:nowrap}.admin-day-teachers{border-top:1px solid var(--hairline-soft);flex-wrap:wrap;align-items:center;gap:7px;margin-top:13px;padding-top:11px;display:flex}.admin-day-label{color:var(--ink-soft);font-size:var(--fs-compact);align-items:center;gap:5px;margin-right:2px;font-weight:700;display:inline-flex}.admin-day-label .icon{color:var(--blue-ink)}.admin-day-teacher{border:1px solid var(--hairline-soft);border-radius:var(--r-pill);min-height:30px;color:var(--ink);background:var(--surface-alt);font-size:var(--fs-compact);align-items:center;gap:6px;padding:3px 9px 3px 4px;font-weight:600;display:inline-flex}.admin-day-roster-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:12px;margin-top:14px;display:grid}.admin-day-roster-grid>section{border-radius:var(--r-sm);background:var(--surface-alt);min-width:0;padding:11px}.admin-day-roster-grid>section.is-makeup{background:var(--yellow-pale)}.admin-day-roster-heading{color:var(--ink-soft);font-size:var(--fs-compact);justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.admin-day-roster-heading strong{color:var(--ink)}.admin-day-roster-heading span{font-variant-numeric:tabular-nums}.admin-day-student-list{gap:6px;display:grid}.admin-day-student{border-radius:var(--r-xs);background:var(--surface);align-items:center;gap:8px;min-width:0;padding:6px 7px;display:flex}.admin-day-student-meta{flex:1;gap:1px;min-width:0;display:grid}.admin-day-student-meta strong,.admin-day-student-meta small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.admin-day-student-meta strong{color:var(--ink);font-size:var(--fs-compact)}.admin-day-student-meta small{color:var(--ink-soft);font-size:12px}.admin-day-student .badge{flex-shrink:0;padding:4px 7px;font-size:12px}.admin-day-empty{color:var(--ink-soft);font-size:var(--fs-compact);margin:0}.admin-day-inline-error{color:var(--red);font-size:var(--fs-compact);align-items:center;gap:5px;margin:12px 0 0;display:flex}.admin-day-loading{gap:7px;margin-top:14px;display:grid}.admin-day-loading span{border-radius:var(--r-xs);background:linear-gradient(90deg, var(--surface-alt), #f9fbfe, var(--surface-alt));background-size:200% 100%;height:34px;animation:1.35s ease-in-out infinite scheduleShimmer;display:block}@media (width>=1024px){.schedule-layout{grid-template-columns:minmax(0,1.48fr) minmax(330px,.86fr);align-items:start;gap:22px}.schedule-calendar-card{padding:21px}.schedule-calendar-grid{grid-auto-rows:minmax(92px,auto);gap:8px}.schedule-day-cell{border-radius:13px;min-height:92px;padding:10px 9px}.schedule-day-class{font-size:var(--fs-ui);margin-top:14px}.schedule-day-time{font-size:var(--fs-ui)}.schedule-agenda-column{position:sticky;top:32px}.schedule-modal-overlay{align-items:center;padding:20px}.schedule-modal{border-radius:var(--r-lg);max-width:560px;max-height:calc(100dvh - 40px);padding:24px}.admin-day-modal{max-width:820px}}@media (width<=639px){.admin-day-modal{overscroll-behavior:contain;width:100%;max-width:none;height:100dvh;min-height:100dvh;max-height:100dvh;padding:calc(16px + env(safe-area-inset-top,0px)) 16px calc(20px + var(--safe-bottom));border-radius:0;overflow-y:auto}.admin-day-summary{gap:6px}.admin-day-summary>div{padding:9px 8px}.admin-day-summary strong{font-size:var(--fs-title-sm)}.admin-day-roster-grid{grid-template-columns:1fr}.admin-day-session{padding:13px}}.ssa-header{align-items:flex-start}.ssa-month-bar{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--e1);justify-content:center;margin:2px 0 14px;padding:8px 10px;display:flex}.ssa-month-bar .month-switch{justify-content:space-between;width:100%}.ssa-student-card{margin-bottom:14px}.ssa-student-search{margin-top:11px;margin-bottom:11px}.ssa-search-clear{border-radius:var(--r-pill);width:28px;height:28px;color:var(--ink-soft);place-items:center;display:grid}.ssa-search-clear:hover{background:var(--surface-alt);color:var(--ink)}.ssa-student-list{gap:4px;max-height:320px;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.ssa-student-option{border-radius:var(--r-sm);width:100%;color:var(--ink);text-align:left;transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);background:0 0;border:1px solid #0000;align-items:center;gap:11px;padding:9px 10px;display:flex}.ssa-student-option:hover,.ssa-student-option:focus-visible{background:var(--blue-pale);border-color:#3e8fe847}.ssa-student-option-copy{flex:1;gap:2px;min-width:0;display:grid}.ssa-student-option-copy strong,.ssa-student-option-copy span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ssa-student-option-copy strong{font-size:var(--fs-ui)}.ssa-student-option-copy span{color:var(--ink-soft);font-size:var(--fs-compact)}.ssa-student-option>.icon{color:var(--ink-faint);flex-shrink:0}.ssa-selected{align-items:center;gap:12px;display:flex}.ssa-selected-copy{flex:1;gap:2px;min-width:0;display:grid}.ssa-selected-copy strong,.ssa-selected-copy span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ssa-selected-copy strong{font-family:var(--font-display);font-size:var(--fs-title-sm);line-height:1.25}.ssa-selected-copy span{color:var(--ink-soft);font-size:var(--fs-compact)}.ssa-selected-foot{border-top:1px solid var(--hairline);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px 10px;margin-top:12px;padding-top:12px;display:flex}.ssa-selected-foot>.badge{margin-right:auto}.ssa-body{gap:18px;display:grid}.ssa-calendar{min-width:0}.ssa-calendar .section-title{margin-bottom:12px}.ssa-agenda{min-width:0}.ssa-agenda-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.ssa-agenda-head .section-title{margin-bottom:2px}.ssa-agenda-count{color:var(--ink-soft);font-size:var(--fs-compact);margin:0}.ssa-agenda-head .btn{flex-shrink:0}.ssa-pending-banner{align-items:flex-start}.ssa-pending-copy{gap:4px;min-width:0;display:grid}.ssa-pending-copy>strong{color:var(--ink)}.ssa-pending-copy>span{line-height:1.45}.ssa-pending-counts{color:var(--ink-soft);font-size:var(--fs-compact);flex-wrap:wrap;gap:4px 12px;display:flex}.ssa-pending-actions{flex-wrap:wrap;gap:7px;margin-top:4px;display:flex}.ssa-class-list{gap:9px;margin:0;padding:0;list-style:none;display:grid}.ssa-class-row{border-radius:var(--r-md);background:var(--surface);box-shadow:var(--e1);transition:box-shadow var(--dur) var(--ease), transform var(--dur-fast) var(--ease);border:1px solid #3e8fe861;grid-template-columns:46px minmax(0,1fr);grid-template-areas:"date copy""actions actions";gap:10px 12px;padding:12px;display:grid}.ssa-class-row:hover{box-shadow:var(--e2);transform:translateY(-1px)}.ssa-class-row.is-locked{border-color:var(--hairline);background:var(--surface-alt);box-shadow:none}.ssa-class-row.is-locked:hover{box-shadow:none;transform:none}.ssa-class-date{border-radius:var(--r-sm);background:var(--blue-pale);color:var(--blue-ink);grid-area:date;align-content:center;justify-items:center;gap:1px;padding:6px 0;line-height:1;display:grid}.ssa-class-row.is-locked .ssa-class-date{background:var(--ink-tint);color:var(--ink-soft)}.ssa-class-day{font-family:var(--font-mono);font-size:var(--fs-title-sm);font-variant-numeric:tabular-nums;font-weight:700}.ssa-class-month{font-size:var(--fs-compact)}.ssa-class-copy{grid-area:copy;gap:3px;min-width:0;display:grid}.ssa-class-copy>strong{font-size:var(--fs-ui);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ssa-class-time{color:var(--blue-ink);font-family:var(--font-mono);font-size:var(--fs-compact)}.ssa-class-row.is-locked .ssa-class-time{color:var(--ink-soft)}.ssa-class-badges{flex-wrap:wrap;gap:5px;margin-top:3px;display:flex}.ssa-class-actions{border-top:1px dashed var(--hairline-soft);flex-wrap:wrap;grid-area:actions;align-items:center;gap:7px;padding-top:9px;display:flex}.ssa-action{flex:120px;justify-content:center}.ssa-action--danger{color:var(--red);border-color:#cf443859}.ssa-action--danger:hover{background:var(--red-pale);color:var(--red)}.ssa-locked-note{color:var(--ink-soft);font-size:var(--fs-compact);line-height:1.5}.modal-schedule-picker{max-width:520px}.ssa-picker-month{border:1px solid var(--hairline-soft);border-radius:var(--r-sm);background:var(--surface-alt);margin:4px 0 16px;padding:10px 12px}.ssa-picker-month .ssa-step-label{margin-bottom:5px}.ssa-picker-month .month-switch{justify-content:space-between;width:100%}.modal-schedule-picker .modal-text strong{color:var(--ink)}.ssa-step+.ssa-step{margin-top:18px}.ssa-step-label{color:var(--blue-ink);font-family:var(--font-mono);font-size:var(--fs-compact);letter-spacing:.08em;margin-bottom:9px;font-weight:700;display:block}.ssa-step-note{color:var(--ink-soft);margin:8px 0 0}.ssa-round-list{gap:8px;display:grid}.ssa-round-card{border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);text-align:left;transition:border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main tags""count count";gap:6px 10px;padding:11px 12px;display:grid}.ssa-round-card:hover{background:var(--surface-alt)}.ssa-round-card.active{border-color:var(--ink);background:var(--blue-pale)}.ssa-round-main{grid-area:main;gap:2px;min-width:0;display:grid}.ssa-round-main strong{font-size:var(--fs-ui)}.ssa-round-main span{color:var(--blue-ink);font-family:var(--font-mono);font-size:var(--fs-compact)}.ssa-round-tags{flex-wrap:wrap;grid-area:tags;justify-content:flex-end;align-items:center;gap:5px;display:flex}.ssa-round-count{color:var(--ink-soft);font-size:var(--fs-compact);grid-area:count}.ssa-date-grid{grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:7px;max-height:240px;display:grid;overflow-y:auto}.ssa-date-chip{border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);transition:border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);justify-items:center;gap:1px;padding:9px 4px;line-height:1.15;display:grid}.ssa-date-chip:hover{border-color:var(--blue);background:var(--blue-pale)}.ssa-date-chip.active{border-color:var(--ink);background:var(--ink);color:var(--white)}.ssa-date-chip.active .ssa-date-month,.ssa-date-chip.active .ssa-date-seats{color:var(--blue-bright)}.ssa-date-chip.is-full{border-style:dashed}.ssa-date-chip.is-full:not(.active) .ssa-date-seats{color:var(--red);font-weight:700}.ssa-date-day{font-family:var(--font-mono);font-size:var(--fs-body-lg);font-variant-numeric:tabular-nums;font-weight:700}.ssa-date-month{color:var(--ink-soft);font-size:var(--fs-compact)}.ssa-date-seats{color:var(--green);font-size:var(--fs-compact);font-weight:600}.ssa-date-chip.is-full .ssa-date-seats{color:var(--red)}.ssa-picker-warning{margin:16px 0 0}.ssa-warning-list{gap:5px;display:grid}@media (width>=1024px){.ssa-body{grid-template-columns:minmax(0,1.4fr) minmax(340px,.9fr);align-items:start;gap:20px}.ssa-calendar{position:sticky;top:32px}.ssa-student-list{max-height:380px}.ssa-class-row{grid-template-columns:46px minmax(0,1fr) auto;grid-template-areas:"date copy actions";align-items:center}.ssa-class-actions{border-top:none;flex-wrap:nowrap;padding-top:0}.ssa-action{flex:none}.ssa-locked-note{text-align:right;max-width:150px}}@media (width<=640px){.modal-overlay-sheet{align-items:flex-end;padding:0}.modal-overlay-sheet .modal-schedule-picker{max-width:none;max-height:92dvh;padding:20px 18px calc(18px + var(--safe-bottom));border-radius:24px 24px 0 0}}@media (width>=1024px){.roster-toolbar .ant-select-selector{height:42px!important;min-height:42px!important}.roster-toolbar .ant-select-selection-item{line-height:40px!important}.ssa-student-search{margin-top:8px;margin-bottom:8px}}@media (width<=767px){input[type=text]:not(.ant-select-input),input[type=password],input[type=number],input[type=tel],input[type=email],input[type=date],textarea{min-height:46px}.search-box{min-height:46px;padding:9px 13px}.filter-chip,.list-toolbar-sort,.list-toolbar-filter-toggle,.leave-queue-sort,.hol-filter{min-height:44px}.filter-chip{padding-block:8px}}@media (width<=640px){.class-capacity-fields .ant-form-item-label>label{min-height:48px}.holiday-date-picker-popup.ant-picker-dropdown{max-width:calc(100vw - 24px);position:fixed!important;inset:50dvh auto auto 50vw!important;transform:translate(-50%,-50%)!important}}@media (width<=767px){.modal-overlay,.schedule-modal-overlay{justify-content:stretch;align-items:stretch;padding:0}.modal-overlay .modal,.schedule-modal-overlay .schedule-modal{overscroll-behavior:contain;width:100%;max-width:none;height:100dvh;min-height:100dvh;max-height:100dvh;box-shadow:none;border-radius:0;animation:none;overflow-y:auto}.modal-overlay .modal{padding:calc(20px + env(safe-area-inset-top,0px)) max(20px, env(safe-area-inset-right,0px)) calc(20px + var(--safe-bottom)) max(20px, env(safe-area-inset-left,0px))}.schedule-modal-overlay .schedule-modal{padding:calc(20px + env(safe-area-inset-top,0px)) max(18px, env(safe-area-inset-right,0px)) calc(18px + var(--safe-bottom)) max(18px, env(safe-area-inset-left,0px))}.ant-modal-root .ant-modal-wrap{padding:0!important;inset:0!important;overflow:hidden!important}.ant-modal-root .ant-modal{flex:auto!important;width:100%!important;max-width:none!important;height:100dvh!important;min-height:100dvh!important;max-height:100dvh!important;margin:0!important;padding:0!important;top:0!important;transform:none!important}.ant-modal-root .ant-modal-content{width:100%;height:100%;max-height:100%;box-shadow:none;overflow:hidden;padding:env(safe-area-inset-top,0px) 0 var(--safe-bottom)!important;border-radius:0!important;flex-direction:column!important;display:flex!important}.ant-modal-root .ant-modal-header{flex:none;padding:20px max(24px, env(safe-area-inset-right,0px)) 16px max(24px, env(safe-area-inset-left,0px))!important;margin:0!important}.ant-modal-root .ant-modal-body{overscroll-behavior:contain;flex:auto;min-height:0;overflow-y:auto;padding:16px max(24px, env(safe-area-inset-right,0px)) 16px max(24px, env(safe-area-inset-left,0px))!important}.ant-modal-root .ant-modal-footer{flex:none;padding:12px max(24px, env(safe-area-inset-right,0px)) 16px max(24px, env(safe-area-inset-left,0px))!important;margin:0!important}.ant-modal-root .ant-modal-close{top:calc(16px + env(safe-area-inset-top,0px))!important;inset-inline-end:max(16px, env(safe-area-inset-right,0px))!important}}.app-shell{width:100%;max-width:var(--app-max-width);background:var(--canvas);flex-direction:column;min-height:100dvh;margin:0 auto;display:flex;position:relative}@media (width>=520px){body{background:linear-gradient(#f8fbfe 0%,#edf2f9 100%)}.app-shell{border-left:1px solid var(--hairline-soft);border-right:1px solid var(--hairline-soft);box-shadow:var(--e1)}}@media (width>=1024px){:is(.app-shell:has(.landing-root),.app-shell:has(.login-root),.app-shell:has(.forgot-root),.app-shell:has(.signup-root),.app-shell:has(.student-dsk-shell)){max-width:none;box-shadow:none;border:none}}.app-loading{min-height:100dvh;font-size:var(--fs-ui);color:var(--ink-soft);animation:loadingPulse 1.4s var(--ease) infinite;flex-direction:column;justify-content:center;align-items:center;gap:16px;font-weight:600;display:flex}@keyframes loadingPulse{0%,to{opacity:1}50%{opacity:.55}}.screen{padding:6px var(--screen-pad-x) 32px;animation:screenIn var(--dur-slow) var(--ease-out);flex:1}.screen.has-bottom-nav{padding-bottom:calc(var(--bottom-nav-height) + var(--safe-bottom) + 28px)}.screen-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.bottom-nav{width:100%;max-width:var(--app-max-width);z-index:20;background:linear-gradient(180deg, var(--ink) 0%, var(--navy-900) 100%);padding:8px 6px calc(8px + var(--safe-bottom));justify-content:space-around;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -10px 26px #132a5238}.nav-item{color:#ffffff80;min-width:0;min-height:44px;font-size:var(--fs-nav);letter-spacing:.01em;text-align:center;transition:color var(--dur) var(--ease);border-radius:14px;flex-direction:column;flex:1 1 0;align-items:center;gap:4px;padding:8px 4px;font-weight:600;line-height:1.2;display:flex;position:relative}.nav-item-label{text-align:center;width:100%}.nav-item .icon{width:21px;height:21px;transition:transform var(--dur) var(--ease)}.nav-item:hover{color:#ffffffc7}.nav-item.active{color:var(--white)}.nav-item.active .icon{color:var(--white);transform:translateY(-1px)}.nav-item.active:after{content:"";background:var(--yellow);width:20px;height:3px;box-shadow:0 0 10px var(--yellow-glow);border-radius:99px;position:absolute;bottom:-1px;left:50%;transform:translate(-50%)}button.nav-item{appearance:none;cursor:pointer;background:0 0;border:none;font-family:inherit}.nav-more-overlay{z-index:40;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:modalFade var(--dur) var(--ease-out);background:#060d1c8c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.nav-more-sheet{width:100%;max-width:var(--app-max-width);max-height:calc(100dvh - env(safe-area-inset-top,0px) - 24px);background:var(--surface);box-shadow:var(--e3);padding:16px 14px calc(16px + var(--safe-bottom) + var(--bottom-nav-height));animation:navMoreRise var(--dur-slow) var(--ease-out);border-radius:20px 20px 0 0;flex-direction:column;display:flex}@keyframes navMoreRise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.nav-more-head{font-size:var(--fs-ui);color:var(--ink-soft);justify-content:space-between;align-items:center;padding:0 6px 10px;font-weight:700;display:flex}.nav-more-list{overscroll-behavior:contain;flex-direction:column;gap:2px;min-height:0;display:flex;overflow-y:auto}.nav-more-item{font-size:var(--fs-ui);color:var(--ink);transition:background var(--dur) var(--ease), color var(--dur) var(--ease);border-radius:12px;align-items:center;gap:12px;padding:12px;font-weight:600;display:flex}.nav-more-item .icon{width:19px;height:19px;color:var(--ink-soft)}.nav-more-item:hover{background:var(--surface-alt)}.nav-more-item.active{background:var(--blue-pale);color:var(--blue-ink)}.nav-more-item.active .icon{color:var(--blue-ink)}.nav-more-footer{border-top:1px solid var(--hairline);flex:none;margin-top:8px;padding-top:8px}.nav-more-item-danger,.nav-more-item-danger .icon{color:var(--red)}.nav-more-item-danger:hover{background:var(--red-pale)}@media (width>=1024px){.nav-more-overlay{display:none}}.student-dsk-shell,.student-dsk-main{display:contents}@media (width>=1024px){.bottom-nav{display:none}.student-dsk-shell{flex:1;min-height:100dvh;display:flex}.student-dsk-main{flex:1;min-width:0;padding:34px 40px 48px;display:block}.student-dsk-main .screen.has-bottom-nav{padding-bottom:32px}.student-dsk-main .screen{--screen-pad-x:0px;max-width:none;margin-inline:0;padding-top:0}.student-dsk-main .screen.screen--narrow{max-width:none;margin-inline:0}.student-dsk-main .reg-calendar{max-width:720px;margin-inline:auto}.student-dsk-main .booking-schedule-card .schedule-weekdays,.student-dsk-main .booking-schedule-card .schedule-calendar-grid{max-width:1120px;margin-inline:auto}}.dsk-shell{background:var(--canvas);flex-direction:column;min-height:100dvh;display:flex;position:relative}.dsk-sidebar{display:none}.dsk-main{flex:1;min-width:0}.dsk-main .screen{padding-bottom:calc(var(--bottom-nav-height) + var(--safe-bottom) + 28px)}.dsk-main .screen:has(>.sticky-cta){padding-bottom:0}.dsk-main .sticky-cta{z-index:15;margin:18px calc(var(--screen-pad-x) * -1) 0;padding:14px var(--screen-pad-x) calc(var(--bottom-nav-height) + var(--safe-bottom) + 14px);background:var(--canvas);border-top:1px solid var(--hairline);bottom:0;box-shadow:0 -8px 20px #132a520f}@media (width>=1024px){.dsk-shell{flex-direction:row}.dsk-sidebar{background:var(--navy-900);flex-direction:column;flex-shrink:0;width:280px;height:100dvh;padding:24px 16px 18px;display:flex;position:sticky;top:0;overflow:hidden;box-shadow:inset -1px 0 #ffffff0f}.dsk-sidebar-brand{color:var(--white);font-family:var(--font-display);flex-shrink:0;align-items:center;gap:11px;padding:0 8px 18px;display:flex}.dsk-sidebar-brand .logo-badge{flex-shrink:0;width:38px;height:38px}.dsk-sidebar-brand-copy{min-width:0}.dsk-sidebar-brand-name{letter-spacing:.035em;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;display:block;overflow:hidden}.dsk-sidebar-brand-sub{color:#ffffff75;margin-top:2px;font-size:12px;font-weight:500;display:block}.dsk-sidebar-branch{color:#ffffffad;background:#ffffff0e;border-radius:12px;align-items:center;gap:8px;min-height:42px;margin:0 2px 14px;padding:9px 11px;font-size:13px;line-height:1.35;display:flex}.dsk-sidebar-branch .icon{color:var(--yellow)}.dsk-sidebar-nav-label{color:#ffffff5c;letter-spacing:.08em;margin:0 12px 6px;font-size:11px;font-weight:700}.dsk-sidebar-nav{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#fff3 transparent;flex-direction:column;flex:1;gap:3px;min-height:0;display:flex;overflow-y:auto}.dsk-sidebar-nav::-webkit-scrollbar{width:8px}.dsk-sidebar-nav::-webkit-scrollbar-thumb{background:#ffffff2e;border-radius:99px}.dsk-sidebar-nav::-webkit-scrollbar-track{background:0 0}.dsk-sidebar-nav a{min-height:44px;font-size:var(--fs-ui);color:var(--white);transition:background var(--dur) var(--ease), color var(--dur) var(--ease);border-radius:12px;align-items:center;gap:12px;padding:10px 12px;font-weight:600;display:flex;position:relative}.dsk-sidebar-nav a .icon{flex-shrink:0;width:17px;height:17px}.dsk-sidebar-nav a:hover{color:var(--white);background:#ffffff12}.dsk-sidebar-nav a.active{color:var(--white);background:#3e8fe82e;box-shadow:inset 0 0 0 1px #3e8fe842}.dsk-sidebar-nav a.active:after{content:"";background:var(--yellow);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-left:auto}.dsk-nav-solo{flex-direction:column;display:flex}.dsk-nav-group,.dsk-nav-solo:not(:first-child){border-top:1px solid #ffffff14;margin-top:12px;padding-top:12px}.dsk-nav-group-head{cursor:pointer;width:100%;min-height:36px;font-family:var(--font-body);font-size:var(--fs-ui);color:var(--white);text-align:left;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:0;border-radius:9px;justify-content:space-between;align-items:center;gap:8px;padding:6px 12px;font-weight:700;display:flex}.dsk-nav-group-head:hover{color:var(--white);background:#ffffff0d}.dsk-nav-group-head.active{color:var(--white);background:#3e8fe81a}.dsk-nav-group-title{min-height:36px;font-family:var(--font-body);font-size:var(--fs-ui);color:var(--white);align-items:center;padding:6px 12px;font-weight:700;display:flex}.dsk-nav-group-label{min-width:0}.dsk-nav-group-meta{color:var(--white);align-items:center;display:inline-flex}.dsk-nav-group-head.active .dsk-nav-group-meta{color:var(--white)}.dsk-nav-caret{stroke-width:2.25px;width:13px;height:13px;transition:transform var(--dur) var(--ease);flex-shrink:0;transform:rotate(-90deg)}.dsk-nav-caret.open{transform:rotate(0)}.dsk-nav-group-items{flex-direction:column;gap:4px;margin:4px 0 2px 10px;padding-left:10px;display:flex}.dsk-nav-group-items a{padding-left:10px}.dsk-sidebar-user{border-top:1px solid #ffffff1a;flex-shrink:0;align-items:center;gap:6px;margin-top:14px;padding-top:16px;display:flex}.dsk-sidebar-user-link{min-width:0;transition:background var(--dur) var(--ease);border-radius:12px;flex:1;align-items:center;gap:10px;padding:7px 6px;display:flex}.dsk-sidebar-user-link:hover{background:#ffffff12}.dsk-sidebar-user .avatar{width:38px;height:38px;color:var(--white);background:#ffffff1f;border-radius:11px;flex-shrink:0}.dsk-sidebar-user .meta{flex:1;min-width:0}.dsk-sidebar-user .name{color:var(--white);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.dsk-sidebar-user .role{color:#ffffff6b;font-size:13px}.dsk-sidebar-user .profile{color:#ffffff80;transition:color var(--dur) var(--ease);margin-top:2px;font-size:12px;font-weight:600}.dsk-sidebar-user-link:hover .profile{color:var(--yellow)}.dsk-sidebar-user .icon-action{width:40px;height:40px;box-shadow:none;color:#ffffff80;background:0 0;border-radius:11px;flex-shrink:0;place-items:center;display:grid}.dsk-sidebar-user .icon-action:hover{color:var(--white);background:#ffffff14}.dsk-main{padding:34px 40px 48px}.dsk-main>*{max-width:none}.dsk-main .screen{padding-bottom:32px}.dsk-main .screen:has(>.sticky-cta){padding-bottom:32px}.dsk-main .sticky-cta{z-index:30;background:linear-gradient(to top, var(--canvas) 62%, transparent);box-shadow:none;border-top:none;margin:18px 0 0;padding:16px 0 4px}.dsk-main>.screen{--screen-pad-x:0px;margin-inline:0}}.dsk-action-label{display:none}.dsk-topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px;display:flex}.dsk-topbar h1{font-family:var(--font-display);font-weight:600;font-size:var(--fs-title-md);letter-spacing:-.02em;color:var(--ink);margin:0}.dsk-topbar .sub{font-size:var(--fs-ui);color:var(--ink-soft);margin-top:3px}.dsk-stats-admin{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:18px;display:grid}.dsk-stat{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e1);transition:transform var(--dur) var(--ease);padding:18px 16px}.dsk-stat:hover{box-shadow:var(--e2);transform:translateY(-3px)}.dsk-stat.warn{background:var(--red-pale);border-color:#cf44384d}.dsk-stat .num{font-family:var(--font-display);font-weight:600;font-size:var(--fs-title-md);letter-spacing:-.03em;color:var(--ink)}.dsk-stat.warn .num{color:var(--red)}.dsk-stat .lbl{font-size:var(--fs-ui);color:var(--ink-soft);margin-top:4px;font-weight:500}.dsk-split{grid-template-columns:minmax(0,1fr);align-items:start;gap:18px;display:grid}.dsk-side-card{position:static}@media (width>=1024px){.dsk-topbar{margin-bottom:26px}.dsk-topbar h1{font-size:var(--fs-title-md)}.dsk-stats-admin{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:26px}.dsk-stats-admin.is-teacher{grid-template-columns:repeat(3,1fr)}.dsk-stat{padding:22px}.dsk-stat .num{font-size:var(--fs-display)}.dsk-split{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:24px}.dsk-cal-card .cal-grid{gap:8px;margin-bottom:20px}.dsk-cal-card .cal-cell{font-size:var(--fs-ui);border-radius:13px}.dsk-cal-card .cal-dow-row{gap:8px}.dsk-side-card{position:sticky;top:32px}}.dsk-card-grid{grid-template-columns:1fr;gap:12px;display:grid}.dsk-card-grid .card+.card{margin-top:0}.dsk-register .reg-step>.field-row{grid-template-columns:1fr;display:grid}@media (width>=1024px){.dsk-main .dsk-action-label{display:inline}.dsk-main .export-btn.dsk-header-action{border-radius:var(--r-sm);width:auto;height:auto;font-size:var(--fs-ui);gap:8px;padding:10px 16px;font-weight:600}.dsk-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px}.dsk-main>.screen>.segmented,.dsk-main>.screen>.screen-tabs>.segmented{max-width:420px}.dsk-schedule-split .dsk-cal-card .cal-grid{gap:8px;margin-bottom:20px}.dsk-schedule-split .dsk-cal-card .cal-cell{font-size:var(--fs-ui);border-radius:13px}.dsk-schedule-split .dsk-cal-card .cal-dow-row{gap:8px}.dsk-schedule-split .dsk-side-card{position:sticky;top:32px}.dsk-class-cal-split .dsk-cal-card .cal-grid{gap:8px;margin-bottom:20px}.dsk-class-cal-split .dsk-cal-card .cal-cell{font-size:var(--fs-ui);border-radius:13px}.dsk-class-cal-split .dsk-cal-card .cal-dow-row{gap:8px}.dsk-class-cal-split .dsk-side-card{position:sticky;top:32px}.dsk-attendance{display:block}.dsk-attendance .dsk-attendance-roster .sticky-bar{margin-left:0;margin-right:0}.dsk-register .reg-step>.field-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.dsk-register .reg-step>.field-row .field{margin-bottom:0}}.requests-leave .leave-reason{margin-top:12px}.requests-makeup .makeup-remain{margin-bottom:12px}.requests-makeup .makeup-submit{margin-top:14px}.requests-leave .leave-main,.requests-leave .leave-rail,.requests-makeup .makeup-main,.requests-makeup .makeup-rail{display:contents}.requests-leave .leave-rail .rule-banner,.requests-makeup .makeup-rail .rule-banner{margin-top:12px}.student-home-grid,.student-home-rail,.student-profile-grid,.student-profile-primary,.student-profile-side{display:contents}@media (width>=1024px){.student-home-grid{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);grid-template-areas:"hero rail""stats rail""upcoming rail";align-items:start;gap:24px;display:grid}.student-home-hero{grid-area:hero}.student-home-stats{grid-area:stats}.student-home-upcoming{grid-area:upcoming}.student-home-rail{grid-area:rail;display:block}.home-head{flex-direction:row;justify-content:space-between;align-items:flex-end;gap:24px}.home-head-cta{flex-shrink:0;align-self:auto}.student-profile-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;gap:24px;display:grid}.student-profile-primary,.student-profile-side{display:block}.student-profile-side{position:sticky;top:32px}.student-dsk-main .stats-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}.student-dsk-main .screen.screen--requests .segmented{max-width:520px}.student-dsk-main .screen.screen--requests .panel.requests-leave,.student-dsk-main .screen.screen--requests .panel.requests-makeup{grid-template-columns:minmax(0,1fr) minmax(0,300px);align-items:start;gap:18px 26px;display:grid}.requests-leave .leave-main,.requests-leave .leave-rail,.requests-makeup .makeup-main,.requests-makeup .makeup-rail{min-width:0;display:block}.requests-leave .leave-rail .rule-banner,.requests-makeup .makeup-rail .rule-banner{margin-top:0}.requests-leave .leave-rail .rule-banner+.rule-banner,.requests-makeup .makeup-rail .rule-banner+.rule-banner{margin-top:12px}}.dlogin{background:var(--surface);flex-direction:column;flex:1;min-height:100dvh;display:flex}.dlogin-brand{text-align:center;background:linear-gradient(160deg, var(--ink) 0%, var(--navy-900) 52%, var(--navy-950) 100%);flex-direction:column;align-items:center;gap:18px;padding:26px 20px 30px;display:flex;position:relative;overflow:hidden}.dlogin-brand:before{content:"";pointer-events:none;background:repeating-linear-gradient(45deg,#ffffff09 0 10px,#0000 10px 20px);position:absolute;inset:0}.dlogin-brand:after{content:"";pointer-events:none;background:radial-gradient(circle, var(--blue-glow) 0%, transparent 68%);border-radius:50%;width:380px;height:380px;position:absolute;top:-90px;right:-110px}.dlogin-orb{display:none}.dlogin-brand-top{z-index:2;justify-content:center;align-items:center;gap:12px;width:100%;display:flex;position:relative}.dlogin-brand-top .logo-badge{width:38px;height:38px}.dlogin-word{font-family:var(--font-display);font-weight:700;font-size:var(--fs-ui);letter-spacing:.02em;color:var(--white)}.dlogin-back{display:none}.dlogin-brand-mid{z-index:1;flex-direction:column;align-items:center;gap:12px;display:flex;position:relative}.dlogin-eyebrow{font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.16em;color:var(--blue-bright);border-radius:var(--r-pill);background:#3e8fe838;border:1px solid #3e8fe866;align-items:center;gap:8px;padding:6px 14px;font-weight:600;display:inline-flex}.dlogin-headline,.dlogin-lead,.dlogin-float,.dlogin-brand-bottom{display:none}.dlogin-panel{background:var(--canvas);flex-direction:column;flex:1;padding:26px 20px 44px;display:flex}.dlogin-form{width:100%;max-width:none;margin:auto}.dlogin-kicker{display:none}.dlogin-form h1{font-family:var(--font-display);font-weight:600;font-size:var(--fs-title-md);letter-spacing:-.025em;color:var(--ink);margin:0 0 6px}.dlogin-form .dlogin-sub{font-size:var(--fs-ui);color:var(--ink-soft);margin:0 0 24px;line-height:1.65}.dlogin .role-toggle{width:100%;margin:0 0 24px}.dlogin .role-toggle button{font-size:var(--fs-ui);flex:1;padding:10px 18px}.dlogin-meta{justify-content:space-between;align-items:center;gap:10px;margin:2px 0 24px;display:flex}.dlogin-meta .check-row{margin:0}.dlogin-meta .check-row .check-text{font-size:var(--fs-ui)}.legal-consent-meta{margin-bottom:18px;display:block}.legal-consent-row{min-height:44px;margin:0}.legal-document-link{color:var(--ink);text-underline-offset:3px;font-weight:600;text-decoration:underline;text-decoration-thickness:1px;display:inline}.legal-document-link:hover{color:var(--blue-ink)}.legal-consent-note{color:var(--red);font-size:var(--fs-compact);margin:4px 0 0 33px;line-height:1.45}.dlogin-meta .btn-ghost{font-size:var(--fs-ui)}.dlogin-submit{min-height:52px;font-family:var(--font-display);font-weight:600;font-size:var(--fs-ui);letter-spacing:.01em;border-radius:var(--r-sm)}.dlogin-submit .icon{width:18px;height:18px;transition:transform var(--dur) var(--ease)}.dlogin-submit:hover .icon{transform:translate(3px)}.dlogin-submit:disabled{cursor:not-allowed;opacity:.58}.legal-document{max-height:min(64dvh,560px);color:var(--ink-soft);font-size:var(--fs-ui);padding:2px 8px 4px 0;line-height:1.7;overflow-y:auto}.legal-document-meta{color:var(--ink-faint);font-family:var(--font-mono);font-size:var(--fs-compact);margin:0 0 14px;line-height:1.5}.legal-document-lead{color:var(--ink);margin:0 0 18px;font-weight:600}.legal-document section+section{margin-top:18px}.legal-document h2{color:var(--ink);font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 5px;font-size:16px;font-weight:600;line-height:1.45}.legal-document p{margin:0}.legal-document ul{margin:0;padding-left:20px;list-style:outside}.legal-document li+li{margin-top:6px}.dlogin-or{color:var(--ink-faint);font-size:var(--fs-ui);align-items:center;gap:14px;margin:24px 0;display:flex}.dlogin-or:before,.dlogin-or:after{content:"";background:var(--hairline);flex:1;height:1px}.dlogin-switch{text-align:center;font-size:var(--fs-ui);color:var(--ink-soft)}.dlogin-switch .btn-ghost{font-size:var(--fs-ui)}.dlogin-support{border-top:1px dashed var(--hairline);color:var(--ink-faint);font-size:var(--fs-ui);text-align:center;justify-content:center;align-items:center;gap:8px;margin-top:26px;padding-top:18px;line-height:1.6;display:flex}.dlogin-support .icon{width:15px;height:15px;color:var(--blue);flex-shrink:0}.dlogin-field-stagger{animation:dloginRise .46s var(--ease-out) both;animation-delay:60ms}.dlogin-field-stagger:nth-of-type(2){animation-delay:.11s}.dlogin-field-stagger:nth-of-type(3){animation-delay:.16s}.dlogin-field-stagger:nth-of-type(4){animation-delay:.21s}.dlogin-field-stagger:nth-of-type(5){animation-delay:.26s}.dlogin-field-stagger:nth-of-type(6){animation-delay:.31s}@keyframes dloginRise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media (width>=1024px){.dlogin{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);min-height:100dvh;display:grid}.dlogin-brand{text-align:left;align-items:stretch;gap:0;padding:40px 56px}.dlogin-orb{pointer-events:none;background:radial-gradient(circle,#fac6341f 0%,#0000 66%);border-radius:50%;width:380px;height:380px;display:block;position:absolute;bottom:-140px;left:-120px}.dlogin-brand-top{justify-content:flex-start}.dlogin-word{font-size:var(--fs-ui)}.dlogin-back{font-size:var(--fs-ui);color:#ffffff8c;transition:color var(--dur) var(--ease);align-items:center;gap:7px;margin-left:auto;font-weight:600;display:inline-flex}.dlogin-back:hover{color:var(--white)}.dlogin-back .icon{width:15px;height:15px}.dlogin-brand-mid{flex:1;justify-content:center;align-items:flex-start;gap:20px;max-width:44ch;padding:40px 0}.dlogin-eyebrow{font-size:var(--fs-ui);padding:7px 15px}.dlogin-headline{font-family:var(--font-display);font-weight:600;font-size:var(--fs-display-xl);letter-spacing:-.03em;color:var(--white);margin:0;line-height:1.16;display:block}.dlogin-headline em{color:var(--yellow);font-style:normal}.dlogin-lead{font-size:var(--fs-ui);color:#ffffff9e;margin:0;line-height:1.75;display:block}.dlogin-float{z-index:2;background:var(--white);border-radius:var(--r-md);box-shadow:var(--e3);animation:floatY 6s var(--ease-out) infinite;padding:15px 17px;display:block;position:absolute}.dlogin-float-1{width:200px;animation-delay:.3s;top:22%;right:5%}.dlogin-float-2{width:auto;padding:12px 16px;animation-delay:1.2s;bottom:21%;left:5%}@keyframes floatY{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}.dlogin-brand-bottom{z-index:2;display:block;position:relative}.dlogin-belt-rule{background:repeating-linear-gradient(45deg, #ffffffe6 0 9px, var(--blue) 9px 18px, var(--yellow) 18px 25px);border-radius:99px;width:120px;height:6px;margin-bottom:18px}.dlogin-brand-bottom p{font-size:var(--fs-ui);color:#fff6;margin:0;line-height:1.8}.dlogin-brand-bottom .mono{font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.24em;color:#ffffff52;font-weight:600}.dlogin-panel{background:radial-gradient(560px 320px at 115% -6%, var(--blue-pale), transparent 68%), var(--surface);justify-content:center;align-items:center;padding:48px 64px;overflow-y:auto}.dlogin-form{max-width:424px;animation:dloginSlide .52s var(--ease-out);margin:auto}@keyframes dloginSlide{0%{opacity:0;transform:translate(26px)}to{opacity:1;transform:none}}.dlogin-kicker{font-family:var(--font-mono);font-size:var(--fs-ui);letter-spacing:.22em;text-transform:uppercase;color:var(--blue-ink);align-items:center;gap:10px;margin-bottom:16px;font-weight:600;display:flex}.dlogin-kicker:before{content:"";background:linear-gradient(90deg, var(--blue), var(--yellow));border-radius:99px;width:26px;height:2.5px}.dlogin-form h1{font-size:var(--fs-display);margin:0 0 8px}.dlogin-form .dlogin-sub{font-size:var(--fs-ui);margin:0 0 28px}.dlogin .role-toggle{margin:0 0 26px}.dlogin .role-toggle button{font-size:var(--fs-ui);padding:11px 18px}.dlogin-meta .check-text,.dlogin-meta .btn-ghost{font-size:var(--fs-ui)}.dlogin-submit{min-height:54px;font-size:var(--fs-ui)}.dlogin-switch .btn-ghost{font-size:var(--fs-ui)}}@media (width>=1024px) and (width<=1320px){.dlogin-brand{padding:32px 40px}.dlogin-panel{padding:40px 46px}.dlogin-headline{font-size:var(--fs-display)}.dlogin-float-1{right:3%}.dlogin-float-2{left:3%}}.dforgot-code-input{font-family:var(--font-mono);letter-spacing:.32em;font-variant-numeric:tabular-nums;font-weight:600}.dforgot-float{display:none}.dforgot-float-icon{background:var(--blue-pale);width:34px;height:34px;color:var(--blue-ink);border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.dforgot-done{text-align:center}.dforgot-done-icon{background:var(--green-pale);width:68px;height:68px;color:var(--green);animation:dforgotPop .52s var(--ease-out);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 20px;display:flex;box-shadow:inset 0 0 0 2px #2a87572e}.dforgot-done h1{margin:0 0 8px}.dforgot-done .dlogin-sub{margin:0 0 26px}@keyframes dforgotPop{0%{opacity:0;transform:scale(.8)}60%{transform:scale(1.06)}to{opacity:1;transform:scale(1)}}@media (width>=1024px){.dforgot-float{z-index:2;background:var(--white);border-radius:var(--r-md);width:220px;box-shadow:var(--e3);animation:floatY 6s var(--ease-out) infinite;align-items:center;gap:12px;padding:14px 16px;animation-delay:.3s;display:flex;position:absolute;top:24%;right:5%}}.auth-notebook{--auth-paper:#f7f2e8;--auth-paper-line:#132a520f;--auth-cover:linear-gradient(158deg, var(--navy-950) 0%, var(--navy-900) 54%, var(--ink) 132%)}.auth-notebook.dlogin{background:var(--auth-paper)}.auth-notebook .dlogin-brand{text-align:left;background:var(--auth-cover);align-items:stretch;gap:16px;padding:22px 20px 0;position:relative;overflow:hidden}.auth-notebook .dlogin-brand:before{content:"";pointer-events:none;opacity:.5;background-image:radial-gradient(#ffffff1f 1.2px,#0000 1.3px);background-size:22px 22px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(165deg,#000 0%,#0000 82%);mask-image:linear-gradient(165deg,#000 0%,#0000 82%)}.auth-notebook .dlogin-brand:after{content:"";pointer-events:none;background:radial-gradient(circle, var(--yellow-glow) 0%, transparent 66%);opacity:.55;border-radius:50%;width:440px;height:440px;position:absolute;bottom:-180px;left:-150px}.auth-notebook .dlogin-brand-top{z-index:3;justify-content:flex-start;align-items:center;gap:11px;width:100%;display:flex;position:relative}.auth-notebook .dlogin-word{font-size:var(--fs-ui);color:var(--white)}.auth-notebook .dlogin-back{font-size:var(--fs-compact);color:#fff9;transition:color var(--dur) var(--ease);align-items:center;gap:6px;margin-left:auto;font-weight:600;display:inline-flex}.auth-notebook .dlogin-back:hover{color:var(--white)}.auth-notebook .dlogin-back .icon{width:15px;height:15px}.auth-notebook .dlogin-brand-mid{z-index:2;flex-direction:column;align-items:flex-start;gap:12px;margin-top:10px;display:flex;position:relative}.auth-notebook .dlogin-eyebrow{font-family:var(--font-mono);font-size:var(--fs-compact);letter-spacing:.16em;color:var(--blue-bright);border-radius:var(--r-pill);background:#3e8fe82e;border:1px solid #3e8fe85c;align-items:center;gap:8px;padding:5px 12px;font-weight:600;display:inline-flex}.auth-notebook .dlogin-headline{font-family:var(--font-display);letter-spacing:-.022em;color:var(--white);text-wrap:balance;margin:0;font-size:27px;font-weight:600;line-height:1.2;display:block}.auth-notebook .dlogin-headline em{color:var(--yellow);font-style:normal}.auth-notebook .dlogin-lead{font-size:var(--fs-ui);color:#ffffffa8;max-width:46ch;margin:0;line-height:1.65;display:block}.auth-notebook .auth-art-frame{z-index:1;width:100%;height:148px;margin-top:4px;position:relative;overflow:hidden}.auth-notebook .auth-art{pointer-events:none;width:100%;height:100%;display:block}.auth-notebook .dlogin-panel{background:var(--auth-paper);flex-direction:column;flex:1;padding:26px 20px 46px;display:flex;position:relative}.auth-notebook .dlogin-panel:before{content:"";pointer-events:none;background-image:linear-gradient(var(--auth-paper-line) 1px, transparent 1px);opacity:.55;background-size:100% 30px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000,#000 10% 82%,#0000);mask-image:linear-gradient(#0000,#000 10% 82%,#0000)}.auth-notebook .dlogin-panel:after{content:"";background:linear-gradient(90deg, var(--blue), var(--yellow) 64%, transparent);height:4px;position:absolute;top:0;left:0;right:0}.auth-notebook .dlogin-form{z-index:1;width:100%;max-width:none;margin:auto;position:relative}.auth-notebook .dlogin-kicker{font-family:var(--font-mono);font-size:var(--fs-compact);letter-spacing:.2em;text-transform:uppercase;color:var(--blue-ink);align-items:center;gap:10px;margin-bottom:14px;font-weight:600;display:flex}.auth-notebook .dlogin-kicker:before{content:"";background:linear-gradient(90deg, var(--blue), var(--yellow));border-radius:99px;width:24px;height:2.5px}.auth-notebook .dlogin-form h1{font-size:var(--fs-title-md);margin:0 0 6px}.auth-notebook .dlogin-form .dlogin-sub{font-size:var(--fs-ui);margin:0 0 22px}.auth-notebook .dlogin-float{display:none}@media (width>=1024px){.auth-notebook.dlogin{grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr)}.auth-notebook .dlogin-brand{gap:0;padding:42px 54px 40px}.auth-notebook .dlogin-brand-mid{flex:none;justify-content:flex-start;gap:18px;max-width:42ch;padding:44px 0 10px}.auth-notebook .dlogin-headline{font-size:var(--fs-display);letter-spacing:-.03em;line-height:1.16}.auth-notebook .dlogin-lead{color:#ffffff9e;line-height:1.7}.auth-notebook .auth-art-frame{flex:auto;height:auto;min-height:190px;margin-top:12px}.auth-notebook .dlogin-brand-bottom{z-index:2;margin-top:14px;display:block;position:relative}.auth-notebook .dlogin-float{z-index:4;background:var(--auth-paper);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e3);--auth-note-rot:-2deg;transform:rotate(var(--auth-note-rot));animation:authNoteFloat 6.5s var(--ease-out) infinite;padding:15px 17px;display:block;position:absolute}.auth-notebook .auth-note-inline{align-items:center;gap:12px;display:flex}.auth-notebook .dlogin-float-1{width:208px;top:23%;right:6%}.auth-notebook .dlogin-float-2{--auth-note-rot:2deg;width:auto;padding:11px 15px;animation-delay:1.3s;bottom:22%;left:6%}@keyframes authNoteFloat{0%,to{transform:translateY(0) rotate(var(--auth-note-rot,0deg))}50%{transform:translateY(-9px) rotate(var(--auth-note-rot,0deg))}}.auth-notebook .dlogin-panel{background:radial-gradient(560px 320px at 112% -4%, var(--blue-pale), transparent 68%), var(--auth-paper);padding:48px 64px}.auth-notebook .dlogin-form{max-width:424px;margin:auto}.auth-notebook .dlogin-form h1{font-size:var(--fs-display)}}@media (prefers-reduced-motion:reduce){.auth-notebook .dlogin-form,.auth-notebook .dlogin-field-stagger,.auth-notebook .dlogin-float,.auth-notebook .dlogin-back{transition:none!important;animation:none!important}}.report-tabs{scrollbar-width:none;gap:8px;margin:0 0 16px;padding:2px 2px 10px;display:flex;overflow-x:auto}.report-tabs::-webkit-scrollbar{display:none}.report-tab{border-radius:var(--r-pill);border:1px solid var(--hairline);background:var(--surface);min-height:40px;color:var(--ink-soft);font-family:var(--font-body);font-size:var(--fs-ui);cursor:pointer;box-shadow:var(--e1);transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);flex:none;align-items:center;gap:7px;padding:9px 14px;font-weight:600;display:inline-flex}.report-tab:active{transform:scale(.97)}.report-tab .icon{color:var(--ink-faint)}.report-tab.active{background:var(--ink);border-color:var(--ink);color:var(--white)}.report-tab.active .icon{color:var(--yellow)}.rt-month-row{justify-content:space-between;align-items:center;gap:12px;margin:2px 0 14px;display:flex}.rt-month-hint{font-size:var(--fs-ui);color:var(--ink-soft)}.rt-toolbar{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e1);margin-bottom:14px;padding:10px}.rt-toolbar-row{align-items:stretch;gap:10px;display:flex}.rt-search{background:var(--surface-alt);flex:1;min-width:0;margin-bottom:0}.rt-search-clear{width:32px;height:32px;color:var(--ink-soft);cursor:pointer;border-radius:50%;flex:0 0 32px;place-items:center;display:grid}.rt-search-clear:hover{background:var(--ink-tint);color:var(--ink)}.rt-export{border-radius:var(--r-pill);white-space:nowrap;flex:none;min-height:42px;padding:0 14px}.rt-toolbar-controls{border-top:1px solid var(--hairline-soft);justify-content:space-between;align-items:flex-end;gap:12px;margin-top:8px;padding-top:8px;display:flex}.rt-filter-groups{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.rt-filter-groups>.registration-filter-label{flex:none}.rt-filter-group{flex:0 auto;align-items:center;gap:8px;min-width:0;display:flex}.rt-filter-label{color:var(--ink-soft);font-size:var(--fs-ui);white-space:nowrap;font-weight:700}.rt-filter-options{flex:1;gap:6px;min-width:0;max-width:100%;margin:0;padding-bottom:0}.rt-filter-options .filter-chip{min-height:36px;padding:4px 10px}.rt-select-field{min-width:0;color:var(--ink-soft);font-size:var(--fs-ui);gap:6px;font-weight:700;display:grid}.rt-select-field .ant-select{width:100%}.rt-select-field .ant-select-selector{min-height:42px;border-color:var(--hairline)!important;border-radius:var(--r-sm)!important;box-shadow:none!important}.rt-select-field .ant-select-selection-item{line-height:40px!important}.rt-sort-field{flex:0 0 320px;align-items:center;gap:8px;display:flex}.rt-sort-field .ant-select{flex:1;width:auto;min-width:0}@media (width<=767px){.rt-toolbar-controls{flex-direction:column;align-items:stretch}.rt-filter-groups{flex-direction:column;align-items:stretch;gap:8px;width:100%}.rt-filter-groups>.registration-filter-label{flex-basis:auto}.rt-filter-group{width:100%}.rt-filter-options .filter-chip{min-height:44px;padding-block:8px}.rt-sort-field{flex:initial;width:100%}.rt-export{min-height:44px}}.rt-stats{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px;display:grid}.rt-stat{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-sm);box-shadow:var(--e1);padding:11px 14px}.rt-stat-label{font-size:var(--fs-ui);color:var(--ink-soft);letter-spacing:.02em;margin-bottom:3px}.rt-stat-value{font-family:var(--font-display);font-size:var(--fs-body-lg);color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600}.rt-stat-value.tone-gold{color:var(--yellow-dark)}.rt-stat-value.tone-red{color:var(--red)}.rt-stat-value.tone-green{color:var(--green)}@media (width>=640px){.rt-stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}}.rt{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--e1);overflow:hidden}.rt-scroll{overflow-x:auto}.rt-table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-ui)}.rt-table th{z-index:2;background:var(--table-head);color:var(--table-head-fg);text-align:left;font-weight:600;font-size:var(--fs-ui);letter-spacing:.05em;white-space:nowrap;padding:11px 13px;position:sticky;top:0}.rt-table th.num,.rt-table td.num{text-align:right;font-variant-numeric:tabular-nums}.rt-table td{border-top:1px solid var(--hairline-soft);color:var(--ink);vertical-align:middle;white-space:nowrap;padding:11px 13px}.rt-table tbody tr:nth-child(2n) td{background:var(--surface-alt)}.rt-table tbody tr:hover td{background:var(--ink-tint)}.rt-table .data-table-sticky-col{position:sticky;left:0}.rt-table thead .data-table-sticky-col{z-index:3}.rt-table tbody td.data-table-sticky-col{z-index:1;background:var(--surface)}.rt-table tbody tr:nth-child(2n) td.data-table-sticky-col{background:var(--surface-alt)}.rt-table tbody tr:hover td.data-table-sticky-col{background:var(--ink-tint)}@media (width>=1024px){.rt-table th{top:8px}}@media (width<=1023.98px){.rt-table .hide-mobile{display:none}.rt-table .data-table-sticky-col{box-shadow:10px 0 16px -14px #132a5266}}.rt-name{align-items:center;gap:9px;min-width:140px;display:flex}.rt-name-meta{flex-direction:column;min-width:0;display:flex}.rt-name-main{color:var(--ink);font-weight:600}.rt-name-sub{font-size:var(--fs-ui);color:var(--ink-soft)}.rt-money{font-variant-numeric:tabular-nums;font-weight:600}.rt-money-danger{color:var(--red);font-variant-numeric:tabular-nums;font-weight:600}.rt-remain{font-size:var(--fs-ui);font-variant-numeric:tabular-nums;color:var(--ink)}.rt-remain-empty{font-size:var(--fs-ui);font-variant-numeric:tabular-nums;color:var(--red)}.rt-link{color:var(--blue-deep);align-items:center;gap:5px;font-weight:600;text-decoration:none;display:inline-flex}.rt-link:hover{text-decoration:underline}.rt-cell-clip{text-overflow:ellipsis;max-width:240px;display:block;overflow:hidden}.rt-cell-lines{flex-direction:column;gap:2px;display:flex}.rt-cell-sub{font-size:var(--fs-ui);color:var(--ink-soft)}.rt-shim{background:linear-gradient(90deg, var(--ink-tint), #e6edf7, var(--ink-tint));height:12px;animation:rt-shimmer 1.2s var(--ease) infinite;background-size:200% 100%;border-radius:6px;display:block}@keyframes rt-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.rt-shim{animation:none}}.rt-empty{flex-direction:column;align-items:center;gap:10px;padding:44px 16px;display:flex}.rt-empty .icon{color:var(--ink-faint)}.rt-empty p{font-size:var(--fs-ui);color:var(--ink-soft);margin:0}.rt-error{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);text-align:center;box-shadow:var(--e1);flex-direction:column;align-items:center;gap:10px;padding:30px 16px;display:flex}.rt-error .icon{color:var(--red)}.rt-error p{color:var(--ink-soft);font-size:var(--fs-ui);max-width:340px;margin:0}.rt-progress{font-size:var(--fs-ui);color:var(--ink-soft);white-space:nowrap;align-items:center;gap:10px;margin:0 0 13px;display:flex}.rt-progress-track{background:var(--ink-tint);border-radius:999px;flex:1;height:6px;overflow:hidden}.rt-progress-fill{background:linear-gradient(90deg, var(--blue), var(--yellow-deep));height:100%;transition:width var(--dur) var(--ease);border-radius:999px}.rt-note{font-size:var(--fs-ui);color:var(--ink-soft);margin:10px 2px 0;line-height:1.6}.rt-note-top{margin:0 2px 14px}
