:root{--bg:#faf7f2;--bg-elevated:#fff;--bg-card:#fff;--bg-tinted:#f2ede5;--text:#0f0f0f;--text-strong:#000;--text-muted:#5b5b5b;--text-dim:#8a8a8a;--accent:#ff4500;--accent-hover:#e63900;--accent-2:#c6f24c;--accent-3:#2e5bff;--success:#22c55e;--warn:#f59e0b;--danger:#ef4444;--border:#0f0f0f;--border-light:#d9d4cb;--border-thin:2px;--border-thick:clamp(2px,0.22vw,4px);--shadow-brutal:6px 6px 0 0 #0f0f0f;--shadow-brutal-sm:3px 3px 0 0 #0f0f0f;--shadow-accent:6px 6px 0 0 var(--accent);--fs-hero:clamp(72px,7.37vw,180px);--fs-title:clamp(28px,2.65vw,96px);--fs-class-num:clamp(36px,3.54vw,120px);--fs-name:clamp(20px,1.77vw,60px);--fs-student:clamp(15px,1.18vw,38px);--fs-body:clamp(13px,1.03vw,30px);--fs-meta:clamp(11px,0.81vw,24px);--space-xs:8px;--space-sm:clamp(8px,0.60vw,16px);--space-md:clamp(14px,1.03vw,28px);--space-lg:clamp(20px,1.77vw,48px);--space-xl:clamp(32px,2.65vw,72px);--space-2xl:clamp(48px,4.13vw,112px);--radius:0px;--radius-sm:4px;--radius-lg:0px}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;color:var(--text);font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,SF Pro Display,Noto Sans KR,system-ui,sans-serif;font-weight:500;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;letter-spacing:-.01em}.did-root,body,html{background:var(--bg);overflow:hidden}.did-root{min-height:100vh;max-height:100vh;display:flex;flex-direction:column;padding:var(--space-lg);gap:var(--space-lg);position:relative}.did-root:before{content:"";background-image:radial-gradient(circle at 20% 30%,rgba(0,0,0,.015) 1px,transparent 0);background-size:3px 3px;z-index:0}.did-root:before,.watermark-overlay{position:fixed;inset:0;pointer-events:none}.watermark-overlay{background-image:url(/logo.png);background-repeat:no-repeat;background-position:center 60%;background-size:min(75vw,2400px) auto;opacity:.08;z-index:2147483647}.did-root>*,.topbar{position:relative;z-index:1}.topbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);background:var(--bg-elevated);border:var(--border-thick) solid var(--border);box-shadow:var(--shadow-brutal);gap:var(--space-xl);flex-wrap:wrap}.branding{font-size:var(--fs-name);font-weight:900;letter-spacing:-.03em;color:var(--text)}.brand-sub{display:inline-block;font-size:var(--fs-meta);font-weight:800;color:var(--bg);background:var(--accent);padding:4px 14px;margin-left:var(--space-md);letter-spacing:.15em;text-transform:uppercase;transform:translateY(-4px) rotate(-2deg)}.clock{font-size:calc(var(--fs-name) * 1.5);font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:-.05em;color:var(--text-strong);padding:0 var(--space-md);background:var(--accent-2);border:var(--border-thick) solid var(--border)}.date{font-size:var(--fs-body);color:var(--text);font-weight:700;letter-spacing:-.01em}.stale-flag{font-size:var(--fs-meta);color:var(--text);background:var(--warn);border:2px solid var(--border);padding:var(--space-xs) var(--space-sm);font-weight:800}.view-area{position:relative;z-index:1}.board,.view-anim,.view-area{flex:1;display:flex}.board{flex-direction:column;gap:var(--space-lg)}.view-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-xl)}.view-title{font-size:var(--fs-title);font-weight:900;letter-spacing:-.05em;color:var(--text-strong);line-height:.9}.view-title:after{content:"";display:block;width:120px;height:12px;background:var(--accent);margin-top:var(--space-sm)}.greeting,.subtitle{font-size:var(--fs-body);color:var(--text);font-weight:700;text-align:right;max-width:50%;padding:var(--space-sm) var(--space-md);background:var(--accent-2);border:3px solid var(--border);align-self:center}.empty,.plan-pending{flex:1;display:flex;align-items:center;justify-content:center;font-size:var(--fs-title);color:var(--text-dim);font-weight:900;text-align:center;letter-spacing:-.03em}.plan-pending{font-size:var(--fs-body);color:var(--text-muted);padding:var(--space-lg);font-style:italic}.grid-classes{display:grid;grid-template-columns:repeat(var(--cols-h,4),minmax(0,1fr));grid-auto-rows:1fr;gap:var(--space-md);flex:1;min-height:0;min-width:0}.class-card{background:var(--bg-card);border:var(--border-thick) solid var(--border);padding:clamp(10px,3cqmin,48px);display:flex;flex-direction:column;gap:clamp(6px,2cqmin,28px);box-shadow:var(--shadow-brutal);position:relative;transition:transform .2s,box-shadow .2s;container-type:size;min-width:0;min-height:0;overflow:hidden}.class-card:before{content:"";position:absolute;top:-4px;left:-4px;right:-4px;height:16px;background:var(--accent);border-bottom:var(--border-thick) solid var(--border)}.class-card--exercise:before{background:var(--accent-2)}.class-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);padding-top:var(--space-md);padding-bottom:var(--space-md);border-bottom:3px solid var(--border)}.class-num{font-size:clamp(24px,16cqmin,120px);font-weight:900;letter-spacing:-.08em;color:var(--text-strong);line-height:.85;font-feature-settings:"tnum"}.instructor-name{font-size:clamp(16px,9cqmin,60px);font-weight:900;letter-spacing:-.03em;color:var(--text);text-align:right;line-height:1;overflow:hidden;text-overflow:ellipsis;min-width:0}.class-num,.instructor-name{white-space:nowrap}.student-list{list-style:none;flex-direction:column;gap:clamp(2px,.8cqmin,10px);overflow:hidden;flex:1}.student,.student-list{display:flex;min-height:0}.student{align-items:center;gap:clamp(4px,1.5cqmin,20px);font-size:clamp(11px,4.5cqmin,34px);font-weight:700;padding:clamp(2px,.8cqmin,8px) clamp(4px,1.5cqmin,16px);border-bottom:1px dashed var(--border-light);line-height:1.1}.student:last-child{border-bottom:0}.student-name{font-weight:900;color:var(--text-strong);letter-spacing:-.02em;flex-shrink:0}.student-meta{display:flex;gap:clamp(4px,1cqmin,14px);flex:1;font-size:clamp(9px,3.2cqmin,24px);font-weight:600}.student-meta,.student-school{color:var(--text-muted)}.student-grade{color:var(--text);font-weight:800}.student--injury,.student--rest{opacity:.55}.student--injury .student-name,.student--rest .student-name{text-decoration:line-through;text-decoration-thickness:3px}.student-empty{color:var(--text-dim);font-style:italic}.badge{font-size:calc(var(--fs-student) * .55);font-weight:900;padding:4px 12px;border:2px solid var(--border);letter-spacing:.12em;text-transform:uppercase;background:var(--bg-elevated);color:var(--text-strong);flex-shrink:0}.badge--trial{background:var(--accent);color:#fff}.badge--rest{background:var(--bg-tinted);color:var(--text)}.badge--injury{background:var(--danger);color:#fff}.exercise-list{list-style:none;display:flex;flex-direction:column;gap:clamp(2px,.8cqmin,10px);overflow:hidden;flex:1;min-height:0}.exercise-item{display:flex;align-items:center;justify-content:space-between;gap:clamp(4px,1.5cqmin,20px);font-size:clamp(11px,4.5cqmin,34px);padding:clamp(3px,1cqmin,10px) clamp(6px,1.5cqmin,16px);background:var(--bg-tinted);border:2px solid var(--border);font-weight:700;line-height:1.1;min-height:0}.ex-name{font-weight:900;color:var(--text-strong);letter-spacing:-.02em}.ex-spec{font-size:clamp(9px,3.5cqmin,26px);color:var(--text);font-weight:800;font-variant-numeric:tabular-nums;background:var(--accent-2);padding:clamp(1px,.5cqmin,4px) clamp(4px,1.2cqmin,12px);border:2px solid var(--border);line-height:1}.ex-meta{display:inline-flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.exercise-item--done .ex-name,.exercise-item--done .ex-spec{text-decoration:line-through;text-decoration-thickness:2px;opacity:.45}.exercise-item--done{background:var(--bg)}.ex-stamp{height:clamp(14px,5.5cqmin,42px);width:auto;align-self:center;flex-shrink:0;transform:rotate(-8deg);mix-blend-mode:multiply;opacity:.92;pointer-events:none;user-select:none}.core-view{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-xl);padding:var(--space-2xl);text-align:center;background:transparent}.core-label{font-size:var(--fs-body);letter-spacing:.3em;color:var(--bg);background:var(--text-strong);padding:var(--space-xs) var(--space-md);text-transform:uppercase;font-weight:900}.core-title{font-size:var(--fs-hero);font-weight:900;letter-spacing:-.06em;line-height:.9;color:var(--text-strong);position:relative;display:inline-block}.core-title:after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:16px;background:var(--accent);z-index:-1}.core-items{list-style:none;display:flex;flex-direction:column;gap:var(--space-md);max-width:1600px;width:100%}.core-item{font-size:calc(var(--fs-title) * .85);font-weight:900;padding:var(--space-md) var(--space-xl);background:var(--bg-tinted);border:3px solid var(--border);color:var(--text-strong);letter-spacing:-.03em}.core-item,.outro-view{display:flex;align-items:center;justify-content:center;text-align:center}.outro-view{flex:1;flex-direction:column;gap:var(--space-xl);padding:var(--space-2xl)}.outro-label{font-size:var(--fs-body);letter-spacing:.3em;color:var(--text-muted);text-transform:uppercase;font-weight:900}.outro-title{font-size:calc(var(--fs-hero) * .9);font-weight:900;letter-spacing:-.05em;color:var(--text-strong)}.outro-quote{font-size:var(--fs-title);color:var(--text);font-weight:800;max-width:1600px;padding:var(--space-md) var(--space-lg);background:var(--accent-2);border:var(--border-thick) solid var(--border);box-shadow:var(--shadow-brutal);letter-spacing:-.03em}.outro-footer{font-size:var(--fs-body);margin-top:var(--space-xl);font-weight:700}.loading,.outro-footer{color:var(--text-muted)}.loading{min-height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--space-md);font-size:var(--fs-title);font-weight:900}.err{font-size:var(--fs-meta);color:var(--danger);font-family:monospace}@media (orientation:portrait){.grid-classes{grid-template-columns:repeat(var(--cols-v,2),minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));grid-auto-flow:column}.topbar{padding:var(--space-sm) var(--space-md)}.view-header{margin-bottom:var(--space-sm)}}.motto-card{display:none;background:var(--bg-card);border:var(--border-thick) solid var(--border);padding:clamp(10px,3cqmin,40px);box-shadow:var(--shadow-brutal);container-type:size;align-items:center;justify-content:center;overflow:hidden;min-width:0;min-height:0;position:relative}.motto-card:before{content:"";position:absolute;top:-4px;left:-4px;right:-4px;height:16px;background:var(--accent);border-bottom:var(--border-thick) solid var(--border)}.motto-image{width:100%;height:100%;object-fit:contain;object-position:center;padding-top:clamp(6px,2cqmin,24px);user-select:none;pointer-events:none}@media (orientation:portrait){.grid-classes[data-odd=true] .motto-card{display:flex}}.preview-root{min-height:100vh;background:#1a1a1a;padding:16px;display:flex;flex-direction:column;gap:16px;position:relative;z-index:1}.preview-controls{display:flex;align-items:center;gap:6px;padding:12px 16px;background:#262626;border:2px solid #444;flex-wrap:wrap}.preview-label{color:#aaa;font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;margin-right:4px}.preview-sep{width:1px;height:24px;background:#444;margin:0 8px}.preview-btn{padding:6px 14px;background:#1a1a1a;color:#ddd;border:1px solid #555;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit}.preview-btn:hover{background:#333;border-color:#888}.preview-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.preview-stage{flex:1;background:#0a0a0a;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:20px}.preview-stage>.did-root{max-height:100%;min-height:0;overflow:hidden;border:2px solid #333;box-shadow:0 0 0 4px #0a0a0a,0 20px 60px rgba(0,0,0,.6)}.preview-stage--landscape>.did-root{width:100%;max-width:calc((100vh - 160px) * 16 / 9);aspect-ratio:16/9}.preview-stage--portrait>.did-root{height:100%;max-height:calc(100vh - 160px);aspect-ratio:9/16}.preview-stage--portrait .grid-classes{grid-template-columns:repeat(var(--cols-v,2),minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));grid-auto-flow:column}.preview-stage--portrait .grid-classes[data-odd=true] .motto-card{display:flex}.preview-stage--portrait .topbar{padding:var(--space-sm) var(--space-md)}.preview-stage--portrait .view-header{margin-bottom:var(--space-sm)}.preview-stage--landscape .grid-classes{grid-template-columns:repeat(var(--cols-h,4),minmax(0,1fr));grid-template-rows:1fr;grid-auto-flow:row}.preview-stage--landscape .motto-card{display:none!important}