/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.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,)}}:root{--bg-1:#f8fafc;--bg-2:#eef4ff;--ink-1:#0f172a;--ink-2:#334155;--ink-3:#64748b;--line:#d9e2ef;--line-soft:#e8edf5;--brand:#2563eb;--brand-2:#0ea5e9;--brand-deep:#1e40af;--ghost:#f1f5f9;--success:#16a34a;--warn:#f59e0b;--danger:#dc2626}*{box-sizing:border-box}body{color:var(--ink-1);background:radial-gradient(1200px 500px at 15% -10%, #dbeafe 0%, transparent 55%), radial-gradient(900px 500px at 95% 0%, #e0f2fe 0%, transparent 50%), linear-gradient(180deg, var(--bg-2) 0%, var(--bg-1) 45%, #fff 100%);margin:0;font-family:Pretendard,Noto Sans KR,Segoe UI,sans-serif}.page{max-width:1100px;margin:0 auto;padding:22px 18px 48px}.schedule-page{max-width:min(1940px,100vw - 14px);padding:14px 10px 30px}.auth-page{justify-content:center;align-items:center;min-height:100vh;display:flex}.panel{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffe6;border:1px solid #e2eaf4;border-radius:18px;padding:20px;box-shadow:0 1px #0f172a08,0 16px 40px #0f172a14}.schedule-panel{padding:16px}.class-detail-panel{min-height:calc(100vh - 140px)}.app-top-header{color:var(--ink-2);justify-content:flex-end;align-items:center;gap:10px;margin-bottom:10px;padding:0 4px;font-weight:600;display:flex}.list-top-header{justify-content:space-between}.page-header{border:1px solid var(--line-soft);background:linear-gradient(#fffffff2 0%,#f8fbffed 100%);border-radius:16px;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px;padding:14px 16px;display:flex}.page-title-with-back{align-items:center;gap:12px;display:flex}.page h1{letter-spacing:-.02em;margin:0;font-size:1.6rem}.subtitle{color:var(--ink-3);margin:4px 0 0;font-size:.95rem}.header-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.section-action-gap{margin-top:10px}.uniform-actions>button,.uniform-actions>.button-link{min-width:96px;height:40px}.form{gap:12px;display:grid}input,select,textarea,button{font:inherit}input,select,textarea{background:#fff;border:1px solid #d2dbe8;border-radius:12px;width:100%;padding:10px 12px;transition:border-color .18s,box-shadow .18s}input:focus,select:focus,textarea:focus{border-color:#7aa2ff;outline:none;box-shadow:0 0 0 4px #2563eb24}button,.button-link{color:#fff;background:linear-gradient(135deg, var(--brand) 0%, var(--brand-2) 100%);cursor:pointer;border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;padding:9px 14px;font-weight:600;text-decoration:none;transition:transform .12s,box-shadow .2s,opacity .2s;display:inline-flex;box-shadow:0 8px 18px #2563eb40}button:hover,.button-link:hover{transform:translateY(-1px)}button:active,.button-link:active{transform:translateY(0)}button:disabled{opacity:.5;cursor:not-allowed;transform:none}.ghost,.button-link.ghost{background:linear-gradient(180deg, #fff 0%, var(--ghost) 100%);color:var(--ink-1);box-shadow:none;border-color:#d5ddeb}.button-link.nav-highlight{color:#fff;background:linear-gradient(135deg,#f97316 0%,#ef4444 100%);border-color:#ea580c;box-shadow:0 10px 18px #ef44444d}.calendar-highlight,.button-link.calendar-highlight{color:#fff;background:linear-gradient(135deg,#0f766e 0%,#0891b2 100%);border-color:#0f766e;box-shadow:0 10px 20px #0891b257}.error{color:var(--danger);font-weight:600}.table{border-collapse:separate;border-spacing:0 8px;width:100%}.table thead th{color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;padding:6px 10px;font-size:.82rem;font-weight:700}.table tbody td{background:#fff;border-top:1px solid #e6edf7;border-bottom:1px solid #e6edf7;padding:11px 10px}.table tbody td:first-child{border-left:1px solid #e6edf7;border-top-left-radius:10px;border-bottom-left-radius:10px}.table tbody td:last-child{border-right:1px solid #e6edf7;border-top-right-radius:10px;border-bottom-right-radius:10px}.table tbody tr{cursor:pointer}.table tbody tr:hover td{background:#f8fbff}.table tbody tr.today-class td{background:linear-gradient(#fffdf1 0%,#fff7d9 100%);border-top-color:#f4df9d;border-bottom-color:#f4df9d}.table tbody tr.today-class td:first-child{border-left-color:#f4df9d}.table tbody tr.today-class td:last-child{border-right-color:#f4df9d}.table tbody tr.today-class:hover td{background:linear-gradient(#fff8df 0%,#ffefbc 100%)}.class-list-table th,.class-list-table td{text-align:center;vertical-align:middle}.class-list-table td .day-lines{justify-items:center}.class-list-table input[type=checkbox]{width:20px;height:20px;accent-color:var(--brand);cursor:pointer;margin:0}.day-lines{gap:6px;display:grid}.class-schedule-inline{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.day-line{border-radius:999px;align-items:center;width:fit-content;padding:3px 9px;font-size:12px;font-weight:700;line-height:1.2;display:inline-flex}.day-mon{color:#1d4ed8;background:#dbeafe}.day-tue{color:#166534;background:#dcfce7}.day-wed{color:#92400e;background:#fef3c7}.day-thu{color:#991b1b;background:#fee2e2}.day-fri{color:#4338ca;background:#e0e7ff}.day-sat{color:#86198f;background:#fae8ff}.day-sun{color:#be123c;background:#ffe4e6}.sort-controls{align-items:center;gap:4px;display:inline-flex}.sort-grip{min-width:36px;font-weight:700}.badge{border-radius:999px;align-items:center;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.badge.gray{color:#374151;background:#e5e7eb}.badge.blue{color:#1d4ed8;background:#dbeafe}.badge.green{color:#166534;background:#dcfce7}.badge.orange{color:#c2410c;background:#ffedd5}.badge.red{color:#b91c1c;background:#fee2e2}.empty-box{place-items:center;gap:10px;padding:34px 10px;display:grid}.day-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.day-option{background:#fff;border:1px solid #e2e8f0;border-radius:10px;align-items:center;gap:6px;padding:8px;display:flex}.schedule-time-row{grid-template-columns:64px minmax(0,1fr) 24px minmax(0,1fr);align-items:center;gap:8px;display:grid}.detail-head{margin-bottom:14px}.detail-head-card{background:linear-gradient(#f9fcff 0%,#f4f8ff 100%);border:1px solid #dce7f5;border-radius:14px;padding:12px 14px}.detail-head-main h2{margin:0}.detail-meta-row{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.detail-meta-pill{background:#fff;border:1px solid #d5e2f2;border-radius:999px;align-items:center;gap:8px;padding:6px 10px;display:inline-flex}.detail-meta-pill span{color:var(--ink-3);font-size:12px;font-weight:600}.detail-meta-pill strong{color:var(--ink-1);font-size:13px}.tab-bar{gap:8px;margin-bottom:14px;display:flex}.tab-bar button{color:#111827;box-shadow:none;background:#e5e7eb}.tab-bar .active{color:#fff;background:linear-gradient(135deg,#0f766e 0%,#0ea5e9 100%)}.pretty-tabs{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.pretty-tab{color:#111827;cursor:pointer;background:#f8fafc;border:1px solid #d1d5db;border-radius:999px;padding:8px 14px;font-weight:600}.pretty-tab[data-state=active]{color:#fff;background:linear-gradient(135deg,#0f766e 0%,#0ea5e9 100%);border-color:#0000}.student-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.student-list li{background:#fff;border:1px solid #e3eaf4;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:11px 12px;display:flex}.student-list li>div:first-child{flex:1;min-width:0}.stack-box{gap:14px;display:grid}.stack-box h3{margin:8px 0 0}.inline-create-box{background:linear-gradient(#f9fcff 0%,#f4f8ff 100%);border:1px solid #dee8f5;border-radius:14px;padding:14px}.inline-create-box h3{margin:0 0 8px;font-size:16px;line-height:1.3}.calendar-intro-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.calendar-intro-row .header-actions{flex-wrap:nowrap;justify-content:flex-end;margin-left:auto}.schedule-toolbar{grid-template-columns:minmax(180px,260px) minmax(0,1fr);align-items:end;gap:10px;display:grid}.schedule-toolbar>label{gap:6px;font-size:14px;font-weight:600;display:grid}.schedule-class-select{max-width:260px}.schedule-topbar{background:linear-gradient(#f8fbff 0%,#f2f7ff 100%);border:1px solid #dee8f5;border-radius:14px;grid-template-columns:1fr auto;align-items:end;gap:12px;padding:12px;display:grid}.student-search-form{grid-template-columns:180px 220px minmax(220px,1fr) auto;align-items:end;gap:10px;display:grid}.student-search-form>label{gap:6px;font-size:14px;font-weight:600;display:grid}.pagination-row{justify-content:flex-end;align-items:center;gap:10px;display:flex}.student-list-table th,.student-list-table td{text-align:center;vertical-align:middle}.student-list-actions{flex-wrap:wrap;justify-content:center}.class-move-trigger{white-space:normal;max-width:100%;line-height:1.4}.schedule-layout{grid-template-columns:minmax(0,1fr) 380px;align-items:start;gap:14px;display:grid}.schedule-main{min-height:calc(100vh - 255px)}.schedule-side{gap:12px;display:grid}.toggle-group{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toggle-group label{white-space:nowrap;background:#fff;border:1px solid #dbe3ef;border-radius:12px;align-items:center;gap:10px;width:fit-content;min-height:40px;padding:8px 12px;font-weight:600;display:flex}.toggle-group input[type=checkbox]{width:20px;height:20px;accent-color:var(--brand);cursor:pointer;flex:0 0 20px;margin:0}.attendance-save-row{justify-content:flex-end}.calendar-wrap{background:#fff;border:1px solid #dee8f5;border-radius:14px;padding:10px;overflow:hidden}.calendar-search-row{justify-content:space-between;align-items:end;gap:10px;margin-bottom:10px;display:flex}.calendar-search-filters{align-items:end;gap:10px;display:flex}.calendar-search-row label{min-width:108px;color:var(--ink-2);gap:4px;font-size:13px;font-weight:700;display:grid}.calendar-search-nav{gap:8px;display:flex}.calendar-wrap .fc .fc-toolbar-chunk .fc-dayGridMonth-button,.calendar-wrap .fc .fc-toolbar-chunk .fc-timeGridWeek-button{color:#1e293b;box-shadow:none;border:1px solid #cfd9e8;font-weight:700}.calendar-wrap .fc .fc-toolbar-chunk .fc-dayGridMonth-button{background:linear-gradient(#e0f2fe 0%,#bfdbfe 100%)}.calendar-wrap .fc .fc-toolbar-chunk .fc-timeGridWeek-button{background:linear-gradient(#dcfce7 0%,#bbf7d0 100%)}.calendar-wrap .fc .fc-toolbar-chunk .fc-dayGridMonth-button.fc-button-active{color:#fff;background:linear-gradient(135deg,#2563eb 0%,#1d4ed8 100%);border-color:#1d4ed8;box-shadow:0 6px 14px #2563eb52}.calendar-wrap .fc .fc-toolbar-chunk .fc-timeGridWeek-button.fc-button-active{color:#fff;background:linear-gradient(135deg,#16a34a 0%,#15803d 100%);border-color:#15803d;box-shadow:0 6px 14px #16a34a47}.drawer-backdrop{z-index:30;background:#0f172a59;justify-content:flex-end;display:flex;position:fixed;inset:0}.student-drawer{background:#fff;width:min(520px,100%);height:100%;padding:18px;overflow:auto;box-shadow:-10px 0 28px #0f172a33}.modal-backdrop{z-index:40;background:#0f172a59;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal-panel{background:#fff;border:1px solid #e5e7eb;border-radius:16px;width:min(560px,100%);max-height:calc(100vh - 32px);padding:18px;overflow:auto;box-shadow:0 24px 40px #0f172a38}.modal-panel-wide{width:min(920px,100%)}.student-manage-modal{max-height:min(82vh,900px)}.modal-actions{justify-content:flex-end;align-items:center;gap:8px;margin-top:8px;display:flex}.makeup-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;display:grid}.makeup-full-row,.makeup-time-field{grid-column:1/-1}.time-range-row{grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);align-items:center;gap:8px;display:grid}.time-range-row span{text-align:center;color:var(--ink-3);font-weight:700}.modal-panel .stack-box>.inline-create-box{background:linear-gradient(#f8fbff 0%,#f4f8ff 100%);border:1px solid #d8e4f5}.my-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.my-summary-card{background:#fff;border:1px solid #dbe7f7;border-radius:12px;gap:6px;padding:12px;display:grid}.my-summary-card span{color:var(--ink-3);font-size:12px;font-weight:700}.my-summary-card strong{color:var(--ink-1);font-size:18px}.my-calendar-weekdays{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin:8px 0;display:grid}.my-calendar-weekdays span{text-align:center;color:var(--ink-3);font-size:12px;font-weight:700}.my-calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.my-calendar-cell{min-height:82px;color:var(--ink-1);box-shadow:none;background:#fff;border:1px solid #d8e4f5;border-radius:10px;align-content:start;justify-items:start;gap:4px;padding:8px;display:grid}.my-calendar-cell.blank{background:#f8fbff;border-style:dashed;border-color:#e5edf8}.my-calendar-cell.workday{background:#eff6ff;border-color:#bcd4ff}.my-calendar-cell.selected{background:#dbeafe;border-color:#2563eb}@media (width<=1024px){.schedule-layout{grid-template-columns:1fr}.schedule-main{order:1}.schedule-side{order:2}}@media (width<=768px){.page,.schedule-page{max-width:100%;padding:14px 10px 28px}.day-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.toggle-group{grid-template-columns:1fr;display:grid}.toggle-group label{width:100%}.schedule-toolbar{grid-template-columns:1fr;align-items:stretch}.schedule-class-select{max-width:none}.student-search-form{grid-template-columns:1fr}.page-header,.schedule-topbar{grid-template-columns:1fr;align-items:stretch}.page-header{display:grid}.schedule-page .page-header .schedule-header-actions{justify-self:end;margin-left:auto;justify-content:flex-end!important}.schedule-layout{grid-template-columns:1fr}.schedule-main{min-height:auto}.calendar-search-row{flex-wrap:wrap;justify-content:flex-start}.calendar-search-nav{justify-content:flex-end;width:100%}.schedule-time-row{grid-template-columns:1fr;gap:6px}.makeup-form-grid{grid-template-columns:1fr}.class-detail-panel{min-height:auto}.my-summary-grid{grid-template-columns:1fr}.my-calendar-grid,.my-calendar-weekdays{gap:6px}}@media print{body.print-calendar-only *{visibility:hidden!important}body.print-calendar-only .print-calendar-target,body.print-calendar-only .print-calendar-target *{visibility:visible!important}body.print-calendar-only .print-calendar-target{width:100%;box-shadow:none;border:none;margin:0;padding:0;position:absolute;top:0;left:0;overflow:visible}body.print-calendar-only.print-calendar-landscape .print-calendar-target{max-width:277mm}body.print-calendar-only.print-calendar-portrait .print-calendar-target{max-width:190mm}body.print-calendar-only .print-calendar-target .fc,body.print-calendar-only .print-calendar-target .fc-view-harness{height:auto!important}body.print-calendar-only .fc{font-size:11px}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
