@font-face{font-family:Pretendard;font-weight:45 920;font-style:normal;font-display:swap;src:url(/fonts/PretendardVariable.woff2)format("woff2-variations"),url(/fonts/PretendardVariable.woff2)format("woff2")}:root{--color-primary:#1d1d1f;--color-primary-dark:#000;--color-primary-soft:#f5f5f7;--color-primary-on:#fff;--apple-blue:#06c;--apple-blue-hover:#0077ed;--apple-blue-active:#049;--bg-1:#f5f5f7;--bg-2:#fff;--bg-3:#efeff4;--bg-muted:#f5f5f7;--bg-app-tint:#fff;--surface-elevated:#fff;--surface-input:#fff;--color-bg:#fff;--color-bg-secondary:#f5f5f7;--color-bg-tertiary:#efeff4;--fg-1:#1d1d1f;--fg-2:#3c3c43c7;--fg-3:#3c3c4394;--fg-4:#3c3c4352;--fg-disabled:#3c3c4338;--separator:#3c3c434a;--separator-opaque:#c6c6c8;--fill-1:#78788033;--fill-2:#78788029;--fill-3:#7676801f;--fill-4:#74748014;--color-text:#1d1d1f;--color-text-secondary:#3c3c43c7;--color-text-tertiary:#3c3c4394;--border-1:#0000000f;--border-2:#0000001a;--border-3:#0000002e;--border-strong:#00000047;--border-strong-legacy:#c6c6c8;--border-light:#f5f5f7;--color-border:#0000000f;--color-border-light:#f5f5f7;--color-border-strong:#c6c6c8;--border-color:#0000000f;--border-hover:#0000001f;--card-bg:var(--bg-1);--card-bg-tint:#f8f9fa;--card-bg-tint-2:#fbfbfd;--card-radius:12px;--divider-row:1px solid #0000000f;--divider-section:1px solid #00000014;--color-success:#10b981;--color-success-bg:#ecfdf5;--color-success-fg:#059669;--color-warning:#f59e0b;--color-warning-bg:#fffbeb;--color-warning-fg:#d97706;--color-danger:#ef4444;--color-danger-bg:#fef2f2;--color-danger-bg-hover:#fee2e2;--color-danger-border:#ef444433;--color-danger-fg:#dc2626;--destructive:var(--color-danger);--destructive-fg:var(--color-danger-fg);--destructive-bg:var(--color-danger-bg);--color-info:#4b7bec;--color-info-bg:#eef2ff;--color-info-fg:#4338ca;--color-success-soft:#ecfdf5;--color-warning-soft:#fffbeb;--color-danger-soft:#fef2f2;--color-info-soft:var(--color-info-bg);--color-brand-soft:#f3f4f6;--color-brand-muted:#e5e7eb;--color-brand-border:#d1d5db;--color-brand-text:#374151;--font-sans:"Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;--font-family-base:"Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;--fs-xs:12px;--fs-sm:14px;--fs-base:17px;--fs-md:19px;--fs-lg:24px;--fs-xl:32px;--fs-2xl:40px;--fs-3xl:48px;--fs-4xl:64px;--font-size-xs:.75rem;--font-size-sm:.8125rem;--font-size-base:.875rem;--font-size-lg:1.125rem;--font-size-xl:1.375rem;--font-size-2xl:1.625rem;--font-size-3xl:2rem;--tracking-tight:-.025em;--tracking-snug:-.022em;--tracking-base:-.016em;--tracking-wide:.007em;--tracking-caps:.12em;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-black:800;--lh-tight:1.2;--lh-snug:1.35;--lh-normal:1.5;--lh-relaxed:1.7;--line-height-tight:1.2;--line-height-normal:1.5;--line-height-relaxed:1.75;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--spacing-1:.25rem;--spacing-2:.5rem;--spacing-3:.75rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-8:2rem;--spacing-12:3rem;--spacing-16:4rem;--radius-xs:8px;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:22px;--radius-2xl:28px;--radius-pill:980px;--shadow-xs:0 1px 2px #0000000d;--shadow-sm:0 1px 4px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #00000012, 0 1px 3px #0000000d;--shadow-lg:0 16px 32px #1018281f;--shadow-xl:0 24px 40px #10182824;--shadow-pop:0 4px 16px #00000012;--shadow-card:0 0 10px #0000001a;--elev-1:0 1px 2px #00000008, 0 4px 12px #0000000a;--elev-2:0 2px 4px #0000000a, 0 8px 24px #0000000f;--elev-3:0 4px 8px #0000000d, 0 16px 40px #0000001a;--elev-4:0 8px 16px #0000000f, 0 32px 80px #00000029;--card-bg-gradient:linear-gradient(180deg, #fff 0%, #fbfbfd 100%);--card-bg-gradient-hover:linear-gradient(180deg, #fff 0%, #f7f7fa 100%);--elev-dark:inset 0 1px 0 0 #ffffff1a, 0 0 0 1px #ffffff0f, 0 4px 12px #0003, 0 24px 48px -8px #0000004d;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.42, 0, .58, 1);--ease-spring:cubic-bezier(.32, .72, 0, 1);--ease-snap:cubic-bezier(.2, .8, .2, 1);--ease-emphasized:cubic-bezier(.05, .7, .1, 1);--duration-fast:.15s;--duration-base:.3s;--duration-slow:.5s;--t-snap:var(--duration-fast) var(--ease-snap);--t-base:var(--duration-base) var(--ease-out);--t-spring:var(--duration-base) var(--ease-spring);--material-ultra-thin:blur(72px) saturate(180%);--material-thin:blur(60px) saturate(180%);--material-regular:blur(50px) saturate(180%);--material-thick:blur(40px) saturate(180%);--material-chrome:blur(30px) saturate(180%);--hairline:.5px solid var(--separator,#3c3c434a);--transition-fast:.15s ease-in-out;--transition-base:.2s ease-in-out;--transition-slow:.3s ease-in-out;--sidebar-bg:#000;--sidebar-bg-gradient:#000;--sidebar-bg-hover:#ffffff0d;--sidebar-bg-active:#ffffff40;--sidebar-fg:#ffffffb3;--sidebar-fg-hover:#fffffff2;--sidebar-fg-active:#fff;--sidebar-fg-muted:#fff6;--sidebar-border:#ffffff12;--sidebar-divider:#ffffff0f;--sidebar-card-bg:#ffffff14;--sidebar-card-border:#ffffff1a;--sidebar-active-inset:#ffffff2e;--sidebar-active-glow:none;--sidebar-width:256px;--sidebar-width-collapsed:72px;--sidebar-section-label:#ffffff9e;--teacher-max-width:1280px;--teacher-content-padding-y:var(--s-8);--teacher-content-padding-x:var(--s-8);--teacher-shell-gap:var(--s-6);--accent-student:var(--fg-2);--accent-student-bg:var(--bg-3);--accent-content:var(--fg-2);--accent-content-bg:var(--bg-3);--accent-communication:var(--fg-2);--accent-communication-bg:var(--bg-3);--accent-billing:var(--fg-2);--accent-billing-bg:var(--bg-3);--accent-ai:var(--fg-2);--accent-ai-bg:var(--bg-3);--row-h-sm:32px;--row-h-md:40px;--row-h-lg:48px;--ring-focus:0 0 0 2px var(--bg-1), 0 0 0 4px #11182780;--ring-focus-dark:0 0 0 2px var(--sidebar-bg,#000), 0 0 0 4px #fff6;--focus-ring:0 0 0 3px #1118272e;--focus-ring-on-dark:0 0 0 3px #ffffff38;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--tap-target-min:44px;--vh-mobile:100vh}@supports (height:100dvh){:root{--vh-mobile:100dvh}}.cardSurface{background:var(--card-bg);box-shadow:var(--elev-1);border-radius:var(--card-radius);transition:box-shadow var(--duration-fast) var(--ease-snap), transform var(--duration-fast) var(--ease-snap);border:none}.cardSurface:hover{box-shadow:var(--elev-2)}.cardSurfaceInteractive{cursor:pointer}.cardSurfaceInteractive:hover{transform:translateY(-1px)}.cardSurfaceInteractive:active{box-shadow:var(--elev-1);transform:translateY(0)}.cardTinted{background:var(--card-bg-tint);border-radius:var(--card-radius);border:none}.cardTintedSoft{background:var(--card-bg-tint-2);border-radius:var(--card-radius);border:none}.listRow{border-bottom:var(--divider-row);transition:background var(--duration-fast) var(--ease-snap);align-items:center;padding:12px 16px;display:flex}.listRow:last-child{border-bottom:none}.listRow:hover{background:var(--card-bg-tint-2)}.sectionDivider{border:none;border-top:var(--divider-section);margin:16px 0}.accentDark{background:var(--fg-1);color:var(--bg-1);border:1px solid var(--fg-1);border-radius:var(--card-radius);box-shadow:var(--elev-1);transition:box-shadow var(--duration-fast) var(--ease-snap), transform var(--duration-fast) var(--ease-snap);padding:20px 24px}.accentDark:hover{box-shadow:var(--elev-2);transform:translateY(-1px)}.accentDark .accentLabel{text-transform:uppercase;letter-spacing:.1em;color:#ffffffa6;margin-bottom:8px;font-size:12px;font-weight:600}.accentDark .accentValue{letter-spacing:-.03em;font-size:32px;font-weight:800;line-height:1.1}.accentDark .accentSub{color:#ffffff8c;margin-top:6px;font-size:13px}.statGrid{gap:12px;display:grid}.statGrid.cols3{grid-template-columns:repeat(3,1fr)}.statGrid.cols4{grid-template-columns:repeat(4,1fr)}.statGrid.cols5{grid-template-columns:repeat(5,1fr)}@media (max-width:960px){.statGrid.cols4,.statGrid.cols5{grid-template-columns:repeat(2,1fr)}}@media (max-width:560px){.statGrid.cols3,.statGrid.cols4,.statGrid.cols5{grid-template-columns:1fr}}.statCell{background:var(--card-bg);border:1px solid var(--border-1);border-radius:var(--card-radius);transition:border-color var(--duration-fast) var(--ease-snap), box-shadow var(--duration-fast) var(--ease-snap), transform var(--duration-fast) var(--ease-snap);padding:16px 18px}.statCell:hover{border-color:var(--border-2);box-shadow:var(--elev-1);transform:translateY(-1px)}.statCell .statLabel{color:var(--fg-3);letter-spacing:-.005em;margin-bottom:6px;font-size:12px;font-weight:600}.statCell .statValue{color:var(--fg-1);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:22px;font-weight:800;line-height:1.15}.statCell .statHint{color:var(--fg-3);margin-top:4px;font-size:12px}.progressTrack{background:var(--fill-3);border-radius:999px;width:100%;height:6px;position:relative;overflow:hidden}.progressFill{background:linear-gradient(90deg, var(--fg-2), var(--fg-1));height:100%;transition:width var(--duration-base) var(--ease-snap);border-radius:999px}.progressFill.warn{background:linear-gradient(90deg, var(--color-warning), var(--color-warning-fg))}.progressFill.danger{background:linear-gradient(90deg, var(--color-danger), var(--color-danger-fg))}.statusDot{background:var(--fg-3);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.statusDot.success{background:var(--color-success)}.statusDot.warning{background:var(--color-warning)}.statusDot.danger{background:var(--color-danger)}.statusDot.info{background:var(--apple-blue)}.segmented{background:var(--fill-3);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.segmented .segOption{appearance:none;color:var(--fg-2);cursor:pointer;transition:background var(--duration-fast) var(--ease-snap), color var(--duration-fast) var(--ease-snap), box-shadow var(--duration-fast) var(--ease-snap);letter-spacing:-.005em;background:0 0;border:none;border-radius:7px;padding:6px 14px;font-size:13px;font-weight:600}.segmented .segOption:hover{color:var(--fg-1)}.segmented .segOption.active{background:var(--card-bg);color:var(--fg-1);box-shadow:0 1px 2px #0000000f,0 0 0 .5px #0000000a}.chipSelect{appearance:none;background:var(--card-bg);border:1px solid var(--border-2);height:30px;color:var(--fg-1);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-snap), background var(--duration-fast) var(--ease-snap);border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:500;display:inline-flex}.chipSelect:hover{border-color:var(--border-3);background:var(--fill-3)}.chipSelect.active{background:var(--fg-1);color:var(--bg-1);border-color:var(--fg-1)}.emptyDashed{border:1.5px dashed var(--border-2);border-radius:var(--card-radius);background:var(--card-bg-tint-2);color:var(--fg-3);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;display:flex}.emptyDashed .emptyTitle{color:var(--fg-2);letter-spacing:-.01em;font-size:15px;font-weight:600}.emptyDashed .emptyHint{color:var(--fg-3);font-size:13px;line-height:1.5}.statusPill{letter-spacing:-.005em;background:var(--fill-3);height:22px;color:var(--fg-2);border-radius:999px;align-items:center;gap:4px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.statusPill.success{background:var(--color-success-bg);color:var(--color-success-fg)}.statusPill.warning{background:var(--color-warning-bg);color:var(--color-warning-fg)}.statusPill.danger{background:var(--color-danger-bg);color:var(--color-danger-fg)}.statusPill.info{background:var(--color-info-bg);color:var(--color-info-fg)}.sparkline{background:linear-gradient(90deg, var(--fill-3) 0%, var(--fill-2) 25%, var(--fill-3) 50%, var(--fill-2) 75%, var(--fill-3) 100%);opacity:.5;border-radius:6px;width:100%;height:32px;display:block}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0s;--duration-base:0s;--duration-slow:0s}}*{box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;touch-action:manipulation;scrollbar-width:thin;scrollbar-color:#00000026 transparent;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;font-display:optional}body{font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-bg-secondary);transition:background-color var(--transition-base), color var(--transition-base)}.typeLargeTitle{letter-spacing:-.022em;color:var(--fg-1);font-size:34px;font-weight:700;line-height:1.21}.typeTitle1{letter-spacing:-.022em;color:var(--fg-1);font-size:28px;font-weight:700;line-height:1.21}.typeTitle2{letter-spacing:-.018em;color:var(--fg-1);font-size:22px;font-weight:700;line-height:1.27}.typeTitle3{letter-spacing:-.015em;color:var(--fg-1);font-size:20px;font-weight:600;line-height:1.25}.typeHeadline{letter-spacing:-.022em;color:var(--fg-1);font-size:17px;font-weight:600;line-height:1.29}.typeBody{letter-spacing:-.022em;color:var(--fg-1);font-size:17px;font-weight:400;line-height:1.47}.typeCallout{letter-spacing:-.02em;color:var(--fg-1);font-size:16px;font-weight:400;line-height:1.31}.typeSubheadline{letter-spacing:-.02em;color:var(--fg-2);font-size:15px;font-weight:400;line-height:1.33}.typeFootnote{letter-spacing:-.018em;color:var(--fg-3);font-size:13px;font-weight:400;line-height:1.38}.typeCaption1{color:var(--fg-3);font-size:12px;font-weight:400;line-height:1.33}.typeCaption2{color:var(--fg-3);font-size:11px;font-weight:400;line-height:1.18}.typeEyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3);font-size:12px;font-weight:600}.typeNumeric{font-variant-numeric:tabular-nums;letter-spacing:-.025em;color:var(--fg-1);font-weight:700}.typeH1{letter-spacing:-.022em;color:var(--fg-1);font-size:28px;font-weight:700;line-height:1.21}.typeH2{letter-spacing:-.018em;color:var(--fg-1);font-size:22px;font-weight:700;line-height:1.27}.typeH3{letter-spacing:-.022em;color:var(--fg-1);font-size:17px;font-weight:600;line-height:1.29}.typeSmall{letter-spacing:-.018em;color:var(--fg-3);font-size:13px;font-weight:400;line-height:1.38}.typeCaps{letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3);font-size:12px;font-weight:600}@keyframes pageEnter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}main[class*=dshContent],main[class*=dshDetailContent],[class*=categoryContent]{animation:.32s cubic-bezier(.32,.72,0,1) pageEnter}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{animation:.3s cubic-bezier(.32,.72,0,1) fadeIn}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fadeSlideUp{animation:.4s cubic-bezier(.32,.72,0,1) fadeSlideUp}@keyframes springScale{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.springScale{animation:.35s cubic-bezier(.32,.72,0,1.05) springScale}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes slideInTop{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.slideInRight{animation:.35s cubic-bezier(.32,.72,0,1) slideInRight}.slideInLeft{animation:.35s cubic-bezier(.32,.72,0,1) slideInLeft}.slideInTop{animation:.35s cubic-bezier(.32,.72,0,1) slideInTop}.stagger>*{opacity:0;animation:.42s cubic-bezier(.32,.72,0,1) forwards staggerEnter}@keyframes staggerEnter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.stagger>:first-child{animation-delay:0s}.stagger>:nth-child(2){animation-delay:35ms}.stagger>:nth-child(3){animation-delay:70ms}.stagger>:nth-child(4){animation-delay:.105s}.stagger>:nth-child(5){animation-delay:.14s}.stagger>:nth-child(6){animation-delay:.175s}.stagger>:nth-child(7){animation-delay:.21s}.stagger>:nth-child(8){animation-delay:.245s}.stagger>:nth-child(9){animation-delay:.28s}.stagger>:nth-child(10){animation-delay:.315s}.stagger>:nth-child(11){animation-delay:.35s}.stagger>:nth-child(12){animation-delay:.385s}.stagger>:nth-child(13){animation-delay:.42s}.stagger>:nth-child(14){animation-delay:.455s}.stagger>:nth-child(15){animation-delay:.49s}.stagger>:nth-child(16){animation-delay:.525s}.stagger>:nth-child(n+17){animation-delay:.56s}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.shimmer{background:linear-gradient(90deg,#0000000a 0%,#00000014 50%,#0000000a 100%) 0 0/200% 100%;animation:1.4s ease-in-out infinite shimmer}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}@keyframes pulseRing{0%{opacity:1;box-shadow:0 0}to{opacity:0;box-shadow:0 0 0 12px}}.pulse{animation:1.6s cubic-bezier(.4,0,.6,1) 5 pulse}.pulseRing{position:relative}.pulseRing:after{content:"";border-radius:inherit;color:inherit;pointer-events:none;opacity:.4;animation:1.6s cubic-bezier(.4,0,.6,1) 5 pulseRing;position:absolute;inset:0}.pulseInfinite{animation:1.6s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:1s linear infinite spin}.spinSlow{animation:2s linear infinite spin}.spinPaused{animation:.6s cubic-bezier(.32,.72,0,1) spin}.hoverLift{transition:transform .28s cubic-bezier(.32,.72,0,1),box-shadow .28s cubic-bezier(.32,.72,0,1)}@media (hover:hover) and (pointer:fine){.hoverLift:hover{transform:translateY(-2px)}}.linkSlide{text-decoration:none;position:relative}.linkSlide:after{content:"";transform-origin:0;background:currentColor;height:1px;transition:transform .3s cubic-bezier(.32,.72,0,1);position:absolute;bottom:-2px;left:0;right:0;transform:scaleX(0)}.linkSlide:hover:after{transform:scaleX(1)}[data-reveal]{opacity:0;will-change:opacity, transform;transition:opacity .6s cubic-bezier(.32,.72,0,1),transform .6s cubic-bezier(.32,.72,0,1);transform:translateY(16px)}[data-reveal][data-revealed=true]{opacity:1;transform:translateY(0)}@keyframes barFill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.barFill{transform-origin:0;animation:.8s cubic-bezier(.32,.72,0,1) barFill}.numberPop{transition:color .3s cubic-bezier(.32,.72,0,1)}@keyframes switchOn{0%{transform:translate(0)}to{transform:translate(18px)}}@keyframes switchOff{0%{transform:translate(18px)}to{transform:translate(0)}}@media (hover:none),(pointer:coarse){[class*=Card]:hover,[class*=card]:hover{transform:none!important}}@media (prefers-reduced-motion:reduce){.stagger>*,.fadeIn,.fadeSlideUp,.springScale,.slideInRight,.slideInLeft,.slideInTop,.hoverLift,.linkSlide:after,.barFill{transition-duration:.01ms!important;animation-duration:.01ms!important}.pulse,.pulseRing:after,.pulseInfinite,.shimmer,.spin,.spinSlow{animation:none!important}[data-reveal]{opacity:1!important;transform:none!important}main[class*=dshContent],main[class*=dshDetailContent],[class*=categoryContent],[class*=page]{animation:none!important}}button:active:not(:disabled),[role=button]:active{transform:translateY(.5px)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[role=button]:focus-visible,[tabindex]:focus-visible{box-shadow:var(--ring-focus,0 0 0 2px var(--bg-1), 0 0 0 4px #11182780);outline:none}[class*=sidebar] button:focus-visible,[class*=sidebar] a:focus-visible{box-shadow:var(--ring-focus-dark,0 0 0 2px #0a0a0b, 0 0 0 4px #fff6)}.routeProgress{transform-origin:0;opacity:0;z-index:9999;pointer-events:none;background:linear-gradient(90deg,#ef4444 0%,#f97316 100%);width:100%;height:2px;transition:transform .3s,opacity .22s;position:fixed;top:0;left:0;transform:scaleX(0)}.routeProgress.isActive{opacity:1;transform:scaleX(1)}::view-transition-old(root){animation:.22s forwards vt-fade-out}::view-transition-new(root){animation:.22s forwards vt-fade-in}@keyframes vt-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes vt-fade-in{0%{opacity:0}to{opacity:1}}a{color:var(--color-primary);transition:color var(--transition-fast);outline:none;text-decoration:none}a:hover{color:var(--color-primary-dark)}a:focus{outline:none}button{font-family:inherit;font-size:inherit;cursor:pointer;color:inherit;transition:background-color var(--transition-base), color var(--transition-base), border-color var(--transition-base);background:0 0;border:none}button:disabled{cursor:not-allowed;opacity:.65}input,textarea,select{color:inherit;caret-color:var(--color-primary);font-family:inherit;font-size:max(16px,1em)}.tapTarget{min-height:var(--tap-target-min);min-width:var(--tap-target-min);justify-content:center;align-items:center;display:inline-flex}input[type=text],input[type=email],input[type=password],input[type=tel],input[type=number],input[type=search],input[type=url],input[type=date],input[type=time],input[type=datetime-local],textarea,select{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);width:100%;transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background-color var(--transition-fast);background:#fff;padding:.6rem .75rem;line-height:1.4}textarea{min-height:2.9rem}input[type=checkbox],input[type=radio]{accent-color:var(--color-primary)}input:focus,textarea:focus,select:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #1118271a}input:disabled,textarea:disabled,select:disabled{background:var(--color-bg-tertiary);color:var(--color-text-tertiary);cursor:not-allowed}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#00000026;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#00000040}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;word-break:keep-all}p,span,li{overflow-wrap:break-word}img,video,iframe{max-width:100%;height:auto}.container,[class*=container]{box-sizing:border-box;max-width:100%}@media (max-width:768px){button:not([style*=height]):not([style*=min-height]):not([class*=icon]):not([class*=close]):not([style*=unset]),[role=button]:not([style*=height]):not([class*=icon]){min-height:44px}::-webkit-scrollbar{width:4px;height:4px}}html,body{max-width:100vw;overflow-x:hidden}select option{color:#000}.btn-primary{color:#fff;border-radius:var(--radius-sm);cursor:pointer;letter-spacing:-.01em;background:#111827;border:1px solid #0000;padding:9px 18px;font-size:13.5px;font-weight:600;transition:all .15s}.btn-primary:hover:not(:disabled){background:#000;transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.btn-primary:active{box-shadow:none;transform:translateY(0)}.btn-secondary{color:#374151;border-radius:var(--radius-sm);cursor:pointer;background:#fff;border:1px solid #0000001a;padding:8px 16px;font-size:13px;font-weight:500;transition:all .15s}.btn-secondary:hover{background:#f9fafb;border-color:#0000002e}.btn-ghost{color:#111827;cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:4px;padding:6px 0;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.btn-ghost:hover{opacity:.75}.stat-card{border-radius:var(--radius-md);background:#fff;border:1px solid #0000000f;padding:16px 18px;transition:box-shadow .2s,border-color .2s}.stat-card:hover{box-shadow:var(--shadow-sm);border-color:#0000001a}.stat-card .icon-wrap{border-radius:var(--radius-sm);justify-content:center;align-items:center;width:36px;height:36px;margin-bottom:12px;display:flex}.stat-card .stat-value{letter-spacing:-.03em;color:#111;font-size:26px;font-weight:700;line-height:1}.stat-card .stat-label{color:#9ca3af;margin-top:4px;font-size:12px;font-weight:500}.widget-card{border-radius:var(--radius-md);cursor:pointer;background:#fff;padding:18px 20px;transition:all .2s}.widget-card:hover{border-color:#0000001a;transform:translateY(-2px);box-shadow:0 4px 16px #00000012}.widget-card .widget-title{color:#6b7280;margin-bottom:6px;font-size:13px;font-weight:500}.widget-card .widget-value{letter-spacing:-.025em;color:#111;margin-bottom:4px;font-size:22px;font-weight:700}.widget-card .widget-desc{color:#9ca3af;margin-bottom:12px;font-size:12px}.badge{border-radius:var(--radius-pill);letter-spacing:-.005em;white-space:nowrap;align-items:center;padding:4px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.badge-success{color:#059669;background:#ecfdf5}.badge-warning{color:#d97706;background:#fffbeb}.badge-danger{color:#dc2626;background:#fef2f2}.badge-neutral{color:#6b7280;background:#f3f4f6}.badge-today{color:#111827;background:#f3f4f6}.data-table{border-collapse:collapse;width:100%;font-size:13.5px}.data-table thead th{text-align:center;color:#9ca3af;letter-spacing:.03em;text-transform:uppercase;background:#fafafa;border-bottom:1px solid #00000012;padding:10px 16px;font-size:12px;font-weight:600}.data-table tbody td{color:#374151;vertical-align:middle;text-align:center;border-bottom:1px solid #0000000d;padding:13px 16px;font-weight:500}.data-table tbody tr:hover td{background:#fafbff}.data-table tbody tr:last-child td{border-bottom:none}.table-card{border-radius:var(--radius-md);background:#fff;border:1px solid #00000012;overflow:hidden}table th,table td{text-align:center}.table-card .table-header{border-bottom:1px solid #0000000f;padding:16px 20px}.table-card .table-header h2{letter-spacing:-.02em;color:#111;font-size:15px;font-weight:700}.table-card .table-header p{color:#9ca3af;margin-top:2px;font-size:12.5px}.input-base{border-radius:var(--radius-sm);color:#111;background:#f9fafb;border:1px solid #0000001a;outline:none;width:100%;padding:9px 14px;font-family:inherit;font-size:13.5px;transition:all .15s}.input-base::placeholder{color:#c4c4c4}.input-base:hover{background:#fff;border-color:#0000002e}.input-base:focus{background:#fff;border-color:#000;box-shadow:0 0 0 3px #0000001a}.search-wrap{align-items:center;display:flex;position:relative}.search-wrap .search-icon{color:#c4c4c4;pointer-events:none;width:15px;height:15px;position:absolute;left:12px}.search-wrap input{padding-left:36px}.select-base{appearance:none;border-radius:var(--radius-sm);color:#374151;cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") right 12px center no-repeat;border:1px solid #0000001a;outline:none;padding:8px 32px 8px 12px;font-family:inherit;font-size:13px}.select-base:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #1118271a}.page-header{margin-bottom:24px}.page-header .page-eyebrow{letter-spacing:.1em;text-transform:uppercase;color:var(--fg-3);margin-bottom:6px;font-size:11px;font-weight:700}.page-header h1{letter-spacing:-.03em;color:#111;font-size:22px;font-weight:800;line-height:1.2}.page-header .page-desc{color:#9ca3af;margin-top:5px;font-size:13.5px;font-weight:400}.btn-back{color:#6b7280;cursor:pointer;background:0 0;border:none;align-items:center;gap:5px;margin-bottom:8px;padding:6px 0;font-size:13px;font-weight:600;transition:color .15s;display:inline-flex}.btn-back:hover{color:#111}.section-title{letter-spacing:-.015em;color:#111;margin-bottom:12px;font-size:14px;font-weight:700}.no-select{-webkit-user-select:none;user-select:none}img,video{object-fit:cover;max-width:100%;height:auto;display:block}@media (max-width:768px){.page-header h1{font-size:18px}.page-header .page-desc{font-size:12px}.stat-card .stat-value{font-size:22px}.widget-card .widget-value{font-size:18px}.section-title{margin-bottom:10px;font-size:13px}.table-card .table-header h2{font-size:14px}.data-table thead th{padding:8px 10px;font-size:11px}.data-table tbody td{padding:10px;font-size:12.5px}.toast-wrap{bottom:16px;left:12px;right:12px}.toast{width:100%;min-width:0;padding:10px 14px;font-size:13px}}@media (max-width:480px){.page-header h1{font-size:16px}.stat-card .stat-value{font-size:20px}.widget-card .widget-value{font-size:16px}.data-table thead th{padding:6px 8px;font-size:10.5px}.data-table tbody td{padding:8px;font-size:12px}}button,a,[role=button]{transition:all var(--duration-fast) var(--ease-out)}.card-hover{transition:transform var(--duration-base) var(--ease-out), box-shadow var(--duration-base) var(--ease-out)}.card-hover:hover{border-color:#0000001a;transform:translateY(-5px)scale(1.02);box-shadow:0 15px 35px #00000014,0 5px 15px #0000000a}.card-hover:active{transition:transform .1s,box-shadow .1s!important;transform:translateY(-2px)scale(.97)!important;box-shadow:0 4px 10px #0000000d!important}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.fade-up{animation:fadeUp .7s var(--ease-spring) both}.fade-up:first-child{animation-delay:40ms}.fade-up:nth-child(2){animation-delay:80ms}.fade-up:nth-child(3){animation-delay:.12s}.fade-up:nth-child(4){animation-delay:.16s}.fade-up:nth-child(5){animation-delay:.2s}.fade-up:nth-child(6){animation-delay:.24s}.fade-up:nth-child(7){animation-delay:.28s}.fade-up:nth-child(8){animation-delay:.32s}.fade-up:nth-child(9){animation-delay:.36s}.fade-up:nth-child(10){animation-delay:.4s}.fade-up:nth-child(n+11){animation-delay:.44s}:focus{outline:none}:focus-visible{outline-offset:2px;border-radius:6px;outline:2px solid #111827}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;box-shadow:0 0 0 3px #1118271a;border-color:#111827!important}.skeleton{color:#0000;pointer-events:none;background:linear-gradient(90deg,#f0f0f0 25%,#e8e8e8 50%,#f0f0f0 75%) 0 0/200% 100%;border-radius:6px;animation:1.5s infinite shimmer}button:active,[role=button]:active,.btn-press:active,a:not(.text-link):not(.no-shrink):active{transition:transform .1s!important;transform:scale(.96)!important}.btn-press{position:relative;overflow:hidden}.btn-press .ripple{pointer-events:none;background:#ffffff59;border-radius:50%;animation:.5s linear ripple-out;position:absolute;transform:scale(0)}@keyframes ripple-out{to{opacity:0;transform:scale(4)}}.toast-wrap{z-index:9999;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{color:#fff;background:#111;border-radius:12px;align-items:center;gap:10px;min-width:220px;padding:12px 16px;font-size:13.5px;font-weight:500;animation:.35s cubic-bezier(.16,1,.3,1) both toastIn;display:flex;box-shadow:0 8px 24px #0000002e}.toast.hide{animation:.25s forwards toastOut}.toast.success{border-left:3px solid #10b981}.toast.error{border-left:3px solid #ef4444}@keyframes toastIn{0%{opacity:0;transform:translate(20px)scale(.95)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes toastOut{to{opacity:0;transform:translate(20px)}}.progress-bar{background:#f3f4f6;border-radius:999px;width:100%;height:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#111827,#4b5563);border-radius:999px;width:0%;height:100%;transition:width 1s cubic-bezier(.16,1,.3,1)}.progress-fill.high{background:#10b981}.progress-fill.mid{background:#f59e0b}.progress-fill.low{background:#ef4444}.nav-item{transition:color .15s,background .15s;position:relative}.nav-item:before{content:"";opacity:0;background:#111827;border-radius:0 3px 3px 0;width:3px;height:60%;transition:transform .2s cubic-bezier(.16,1,.3,1),opacity .2s;position:absolute;top:50%;left:0;transform:translateY(-50%)scaleY(0)}.nav-item.active:before{opacity:1;transform:translateY(-50%)scaleY(1)}.nav-item .nav-label{transition:transform .2s cubic-bezier(.16,1,.3,1)}.nav-item.active .nav-label{transform:translate(3px)}.stagger-1{animation-delay:80ms!important}.stagger-2{animation-delay:.16s!important}.stagger-3{animation-delay:.24s!important}.stagger-4{animation-delay:.32s!important}.stagger-5{animation-delay:.4s!important}.stagger-6{animation-delay:.48s!important}.card-shine{position:relative;overflow:hidden}.card-shine:after{content:"";z-index:10;pointer-events:none;background:linear-gradient(90deg,#fff0 0%,#ffffffe6 50%,#fff0 100%);width:100%;height:100%;transition:left .45s ease-out;position:absolute;top:0;left:-150%;transform:skew(-45deg)}.progress-fill{position:relative;overflow:visible!important}.progress-fill:before{content:"";border-radius:inherit;z-index:2;background:linear-gradient(45deg,#ffffff26 25%,#0000 25% 50%,#ffffff26 50% 75%,#0000 75%,#0000) 0 0/1rem 1rem;animation:1s linear infinite progress-stripes;position:absolute;inset:0}@keyframes progress-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress-fill:after{content:"";z-index:5;background:#fff;border-radius:50%;width:16px;height:16px;animation:1.2s infinite pulse-glow;position:absolute;top:50%;right:0;transform:translateY(-50%)translate(50%);box-shadow:0 0 15px 4px #ffffffe6}@keyframes pulse-glow{0%{opacity:.5;transform:translateY(-50%)translate(50%)scale(.8);box-shadow:0 0 8px #ffffff80}50%{opacity:1;transform:translateY(-50%)translate(50%)scale(1.4);box-shadow:0 0 24px #fff}to{opacity:.5;transform:translateY(-50%)translate(50%)scale(.8);box-shadow:0 0 8px #ffffff80}}main:first-child{margin-top:1rem}[data-reveal]{opacity:0;transition:opacity .9s cubic-bezier(.16,1,.3,1),transform 1s cubic-bezier(.16,1,.3,1);transform:translateY(60px)scale(.96)}[data-reveal=visible]{opacity:1;transform:translateY(0)scale(1)}[data-reveal-child]{opacity:0;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transform:translateY(40px)scale(.97)}[data-reveal-child=visible]{opacity:1;transform:translateY(0)scale(1)}@media print{html,body{color:#000!important;background:#fff!important;margin:0!important;padding:0!important}aside[aria-label=교사용\ 사이드바],aside[aria-label=학생용\ 사이드바],[data-no-print=true]{display:none!important}body:has([data-print-area=true]) *{visibility:hidden}:is(body:has([data-print-area=true]) [data-print-area=true],body:has([data-print-area=true]) [data-print-area=true] *){visibility:visible}[data-print-area=true]{background:#fff!important;max-height:none!important;margin:0!important;padding:0!important;position:absolute!important;inset:0!important;overflow:visible!important}@page{margin:16mm 14mm}}.page-eyebrow{color:var(--fg-2);text-transform:uppercase;letter-spacing:.1em;align-items:center;gap:8px;margin-bottom:10px;font-size:22px;font-weight:700;line-height:1;display:inline-flex}.page-eyebrow-dot{background:#10b981;border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:2.4s ease-out infinite pageEyebrowPulse;box-shadow:0 0 #10b98173}@keyframes pageEyebrowPulse{0%{box-shadow:0 0 #10b98173}65%{box-shadow:0 0 0 6px #10b98100}to{box-shadow:0 0 #10b98100}}
