@import"https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700;800;900&display=swap";body{font-family:Noto Sans KR,sans-serif;background-color:#f9fafb;margin:0;padding:0;display:flex;flex-direction:column;min-height:100vh;color:#1f2937}header{background-color:#fff;border-bottom:1px solid #e5e7eb;position:sticky;top:0;z-index:50;min-height:64px}.header-container{max-width:80rem;margin:0 auto;padding:0 1rem;min-height:64px;display:flex;align-items:center;justify-content:space-between}@media(min-width:1024px){.header-container{padding:0 1.5rem}}.logo-text{font-size:1.62rem;font-weight:800;letter-spacing:-.025em;cursor:pointer;display:flex;align-items:center;height:100%;line-height:1;text-decoration:none}.logo-we{color:#2563eb}.logo-story{color:#f59e0b}.desktop-nav{display:none;height:100%}@media(min-width:1024px){.desktop-nav{display:flex!important}}.nav-link{font-weight:700;color:#6b7280;margin:0 .625rem;text-decoration:none;font-size:.95rem;height:100%;display:inline-flex;align-items:center;border-bottom:3px solid transparent;transition:all .2s;white-space:nowrap}@media(min-width:1024px){.nav-link{margin:0 .85rem}}.nav-link:hover{color:#111827}.nav-link.active{color:#2563eb;border-bottom-color:#2563eb;font-weight:700}@media(min-width:1024px){.student-desktop-nav .student-nav-link{margin:0 1.15rem;padding:0 .25rem}}.header-right{display:flex;align-items:center;gap:1rem;min-width:0}@media(max-width:1023px){.header-container{padding:0 .5rem}.logo-text{font-size:1.3rem}.header-right{gap:.2rem}}.user-greeting{font-size:.78rem;font-weight:600;color:#4b5563;display:inline-flex!important;align-items:center;min-width:0;max-width:none;gap:.375rem}.header-user-link{display:inline-flex!important;align-items:center;min-width:0}.header-user-name{display:inline-block;min-width:0;max-width:min(18vw,220px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.3}@media(min-width:1024px){.user-greeting{font-size:.875rem;max-width:none}.header-user-name{max-width:180px}}@media(max-width:1023px){.user-greeting{font-size:.73rem;gap:.25rem}.header-user-name{max-width:min(24vw,92px)}}.btn-logout{color:#78716c;font-size:.875rem;font-weight:700;padding:.5rem .75rem;border-radius:.25rem;background:transparent;border:none;cursor:pointer;transition:all .2s;white-space:nowrap;flex-shrink:0;line-height:1}.btn-logout-icon{display:none}.btn-logout:hover{color:#292524;background-color:#f5f5f4}@media(max-width:1023px){.btn-logout{width:2.1rem;height:2.1rem;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:9999px;font-size:0}.btn-logout-icon{display:inline-block;font-size:.8rem}.btn-logout-label{display:none}}.mobile-menu-btn{display:block;font-size:1.5rem;color:#374151;cursor:pointer;padding:.5rem;background:none;border:none}@media(min-width:1024px){.mobile-menu-btn{display:none}}#mobile-menu{display:none;background-color:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 4px 6px -1px #0000001a;position:fixed;top:64px;left:0;width:100%;height:calc(100dvh - 64px);max-height:calc(100dvh - 64px);overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;z-index:49;flex-direction:column}#mobile-menu.open{display:flex;animation:slideDown .2s ease-out}.mobile-link{display:flex;align-items:center;padding:1rem 1.5rem;color:#374151;font-weight:700;border-bottom:1px solid #f3f4f6;text-decoration:none;transition:background .2s}.mobile-link:hover{background-color:#f9fafb}.mobile-link.active{color:#2563eb;background-color:#eff6ff;font-weight:700}.mobile-icon{width:20px;height:20px;margin-right:12px;fill:currentColor}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.hidden{display:none}#global-loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#ffffffe6;z-index:9999;display:flex;justify-content:center;align-items:center;flex-direction:column;color:#4b5563}.loader-spinner{border:4px solid #f3f3f3;border-top:4px solid #2563eb;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sidebar-right-enter{transform:translate(100%);transition:transform .3s ease-in-out}.sidebar-right-enter-active{transform:translate(0)}.sidebar-right-exit{transform:translate(0);transition:transform .3s ease-in-out}.sidebar-right-exit-active{transform:translate(100%)}.minimal-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-bottom:2px solid #e5e7eb;background:transparent;padding:.25rem 1.5rem .25rem .25rem;font-size:.875rem;font-weight:700;color:#4b5563;outline:none;cursor:pointer;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right 0 center;background-repeat:no-repeat;background-size:1.5em 1.5em;transition:border-color .2s}.minimal-select:focus{border-color:#2563eb;color:#2563eb}.fc-view-harness{min-height:400px}@tailwind base;@tailwind components;@tailwind utilities;.dashboard-container{max-width:1280px;margin:0 auto;padding:24px 16px;width:100%}.fc .fc-toolbar-title{font-weight:800!important}.student-calendar-section .fc-daygrid-event.holiday-text-event{background-color:#ef4444!important;border-color:#ef4444!important}.student-calendar-section .fc-daygrid-event.holiday-text-event .fc-event-title{color:#fff!important;font-size:.75rem;font-weight:800}.student-calendar-section .fc-day-selected{background-color:#eff6ff!important;outline:2px solid #3b82f6!important;outline-offset:-2px!important}.student-calendar-section .fc-day-sun a,.student-calendar-section .fc-day-holiday a,.student-calendar-section .fc-day-holiday .fc-daygrid-day-number{color:#ef4444!important;text-decoration:none;font-weight:700!important}.student-calendar-section .fc-day-sat a{color:#3b82f6!important;text-decoration:none;font-weight:700}.student-calendar-section .student-calendar-segment-title{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;font-weight:700;padding:0 2px}.student-calendar-section{height:100%;min-height:500px}.student-calendar-shell{display:flex;flex-direction:column;gap:1rem;height:100%;min-height:0}.student-calendar-shell__header{flex:0 0 auto}.student-calendar-shell__header-main{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem 1.25rem;flex-wrap:wrap}.student-calendar-shell__heading-group{display:flex;flex-direction:column;gap:.65rem;min-width:0;flex:1 1 18rem}.student-calendar-shell__month-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;min-width:0}.student-calendar-shell__eyebrow{display:inline-flex;align-self:flex-start;align-items:center;gap:.45rem;border-radius:9999px;background:linear-gradient(180deg,#eff6ff,#dbeafe);color:#1e40af;font-size:.8rem;font-weight:800;line-height:1;letter-spacing:.02em;padding:.5rem .9rem;box-shadow:inset 0 0 0 1px #93c5fdb3;width:fit-content;max-width:100%}.student-calendar-shell__eyebrow-icon{display:inline-flex;align-items:center;justify-content:center;width:1.3rem;height:1.3rem;border-radius:9999px;background:#ffffffb8}.student-calendar-shell__month-label{min-width:0;text-align:left;flex:1 1 auto}.student-calendar-shell__month-title{margin:0;color:#0f172a;font-size:clamp(1.8rem,2.5vw,2.35rem);font-weight:900;line-height:1.04;letter-spacing:-.035em}.student-calendar-shell__nav-button,.student-calendar-shell__search-button,.student-calendar-shell__control-button,.student-calendar-shell__attendance-action{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #dbeafe;background:#fff;color:#1e3a8a;border-radius:9999px;font-weight:800;transition:background-color .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,transform .16s ease}.student-calendar-shell__nav-button,.student-calendar-shell__search-button{display:inline-flex;align-items:center;justify-content:center;gap:.42rem}.student-calendar-shell__nav-button{width:2.75rem;height:2.75rem;padding:0;box-shadow:0 10px 18px #94a3b824}.student-calendar-shell__control-button,.student-calendar-shell__search-button,.student-calendar-shell__attendance-action,.student-calendar-shell__attendance-indicator{display:inline-flex;align-items:center;justify-content:center;min-height:2.75rem;padding:0 .95rem;white-space:nowrap;font-size:.88rem;font-weight:800}.student-calendar-shell__nav-button:hover,.student-calendar-shell__search-button:hover,.student-calendar-shell__control-button:hover,.student-calendar-shell__attendance-action:hover{border-color:#93c5fd;background:#eff6ff;box-shadow:0 12px 22px #3b82f624;transform:translateY(-1px)}.student-calendar-shell__nav-button:focus-visible,.student-calendar-shell__search-button:focus-visible,.student-calendar-shell__control-button:focus-visible,.student-calendar-shell__view-button:focus-visible,.student-calendar-shell__attendance-action:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.student-calendar-shell__nav-button:disabled,.student-calendar-shell__search-button:disabled,.student-calendar-shell__control-button:disabled,.student-calendar-shell__attendance-action:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.student-calendar-shell__toolbar{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;flex-wrap:wrap;min-width:0;flex:1 1 28rem}.student-calendar-shell__calendar-tools{display:flex;align-items:center;justify-content:flex-end;gap:.6rem;flex-wrap:wrap;min-width:0}.student-calendar-shell__control-cluster,.student-calendar-shell__attendance-tools{display:inline-flex;align-items:center;gap:.38rem;min-width:0;flex:0 0 auto;border:1px solid #dbeafe;border-radius:9999px;background:#f8fbff;padding:.24rem}.student-calendar-shell__control-cluster--nav{background:#fff;flex-shrink:0}.student-calendar-shell__control-cluster--view{gap:.45rem;padding-right:.32rem}.student-calendar-shell__attendance-tools{gap:.55rem;padding-inline:.3rem .36rem}.student-calendar-shell__view-toggle{display:inline-flex;align-items:center;gap:.2rem;border-radius:9999px;background:#eaf3ff;padding:.2rem}.student-calendar-shell__view-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:#475569;border-radius:9999px;padding:.62rem .92rem;font-size:.84rem;font-weight:800;line-height:1;transition:background-color .16s ease,color .16s ease,box-shadow .16s ease}.student-calendar-shell__view-button.is-active{background:#fff;color:#1d4ed8;box-shadow:0 8px 18px #3b82f62e}.student-calendar-shell__attendance-action{border-color:#bfdbfe;background:#eff6ff;color:#1d4ed8}.student-calendar-shell__attendance-label{color:#475569;font-size:.74rem;font-weight:800;letter-spacing:.01em;line-height:1;white-space:nowrap;padding-left:.45rem}.student-calendar-shell__attendance-action[data-tone=error]{border-color:#fecaca;background:#fef2f2;color:#b91c1c}.student-calendar-shell__attendance-action[data-tone=loading]{border-color:#e2e8f0;background:#f8fafc;color:#475569}.student-calendar-shell__search-button{padding:0 .92rem}.student-calendar-shell__search-button span{line-height:1}.student-calendar-shell__attendance-indicator{border:1px solid #a7f3d0;border-radius:9999px;background:#ecfdf5;color:#047857}.student-calendar-shell__error-message{margin:.55rem 0 0;color:#b91c1c;font-size:.82rem;font-weight:700;text-align:left}.calendar-wrapper{min-height:0}.student-calendar-shell__body{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;border:1px solid #e2e8f0;border-radius:1.5rem;background:#fff;box-shadow:0 24px 54px #0f172a14}.student-calendar-shell__body[data-calendar-view=dayGridMonth],.student-calendar-shell__body[data-calendar-view=listMonth]{min-height:31rem}.student-calendar-shell__body[data-calendar-view=dayGridMonth]{display:flex;flex-direction:column}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-view-harness{flex:1 1 auto;min-height:0}.student-calendar-shell__body[data-calendar-view=listMonth] .fc-view-harness{display:none!important}.student-calendar-shell .custom-schedule-list{height:100%}.student-calendar-shell__body .fc-list table,.student-calendar-shell__body .fc-list-table{table-layout:fixed!important;width:100%!important}.student-calendar-shell__body .fc-list-event-graphic,.student-calendar-shell__body .fc-list-event-time,.student-calendar-shell__body .fc-list-event-dot{display:none!important;width:0!important;padding:0!important}.student-calendar-shell__body .fc-list-day-cushion{display:flex!important;justify-content:flex-start!important;align-items:center;gap:12px}.student-calendar-shell__body .fc-list-day-text,.student-calendar-shell__body .fc-list-day-side-text{float:none!important}.student-calendar-shell__body .fc-list-event td,.student-calendar-shell__body .fc-list-event-title,.student-calendar-shell__body .fc-list-event-title>a,.student-calendar-shell__body .fc-list-event-title .fc-event-main{width:100%!important;padding:0!important;text-align:left!important}.student-calendar-shell__body .fc-list-row-grid{display:grid!important;grid-template-columns:140px minmax(0,1fr) 92px;align-items:center;gap:12px;width:100%;min-width:0}.student-calendar-shell__body .fc-list-category-cell,.student-calendar-shell__body .fc-list-title-cell,.student-calendar-shell__body .fc-list-target-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-calendar-shell__body .fc-list-category-cell{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:#374151}.student-calendar-shell__body .fc-list-category-dot{display:inline-block;width:14px;height:14px;border-radius:9999px;flex:0 0 auto}.student-calendar-shell__body .fc-list-category-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-calendar-shell__body .fc-list-title-cell{font-weight:700;color:#111827}.student-calendar-shell__body .fc-list-target-cell{font-size:.86rem;font-weight:600;color:#4b5563}.student-calendar-shell__body .fc-daygrid-event .holiday-segment-title{color:#fff!important;font-weight:800!important}.student-calendar-shell__body .fc-list-event .holiday-segment-title{color:#ef4444!important;font-weight:800!important}.student-calendar-section .fc-day-holiday .student-calendar-day-label,.student-calendar-section .fc-day-sun .student-calendar-day-label{color:#ef4444!important}.student-calendar-section .fc-day-sat .student-calendar-day-label{color:#3b82f6!important}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-view-harness,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-view,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-daygrid,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-scrollgrid,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-scrollgrid-section,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-scrollgrid-section>td,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-scrollgrid-section>td>div,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-scroller-harness,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-scroller,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-daygrid-body,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-scrollgrid-sync-table,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-scrollgrid-sync-table>tbody{height:100%;min-height:0}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-body,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-scrollgrid-sync-table{width:100%!important}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-scroller,.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc-scroller-harness{overflow:hidden!important}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-body tbody{display:grid;grid-template-rows:repeat(6,minmax(0,1fr));height:100%}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-body tr{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-height:0;height:100%}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-body td{display:flex;min-width:0;min-height:0;height:100%}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-day-frame{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:0;height:100%;overflow:visible}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-day-top{display:flex;align-items:flex-start;justify-content:flex-start;padding:0!important;min-height:0}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-day-number{padding:0!important;display:block;width:100%;text-align:left;text-decoration:none!important;white-space:nowrap}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .student-calendar-day-head{display:flex;align-items:flex-start;gap:.35rem;width:100%;min-height:2.1rem;padding:.42rem .46rem 0}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .student-calendar-day-label{flex:0 0 auto;font-size:.95rem;font-weight:800;line-height:1.05}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .student-calendar-day-badge{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;min-height:1.35rem;border:1px solid #fecaca;border-radius:9999px;background:#fef2f2;color:#dc2626;font-size:.64rem;font-weight:800;line-height:1;letter-spacing:-.01em;padding:.2rem .42rem}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-day-events{display:block;min-height:0;flex:1 1 auto;margin-top:.25rem;padding:0 .32rem;overflow:visible}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-event-harness{margin-top:0!important;width:auto;min-width:0;overflow:visible}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-event-harness+.fc-daygrid-event-harness{margin-top:.18rem!important}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-event-harness-abs{z-index:6}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-event{display:block;width:100%;min-width:0;margin:0!important;border-radius:.45rem;font-size:.74rem;line-height:1.15}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-event.student-calendar-range-event{width:auto;margin-left:-.22rem!important;margin-right:-.22rem!important;border-radius:0!important;position:relative;z-index:2}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-event.student-calendar-range-event.fc-event-start{margin-left:0!important;border-top-left-radius:.45rem!important;border-bottom-left-radius:.45rem!important}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-event.student-calendar-range-event.fc-event-end{margin-right:0!important;border-top-right-radius:.45rem!important;border-bottom-right-radius:.45rem!important}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-event.student-calendar-range-event.fc-event-start.fc-event-end{border-radius:.45rem!important}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-day-bottom{margin-top:auto;min-height:1rem;padding:0 .32rem .32rem}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-more-link{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0;font-size:.68rem;font-weight:700;line-height:1.2}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-day.fc-day-today{background:#dbeafe3d!important}@media(min-width:768px){.dashboard-container{padding:24px 40px}}@media(max-width:1023px){.dashboard-container{height:auto!important;overflow:visible!important}.md\:h-\[calc\(100vh-140px\)\]{height:auto!important}.student-calendar-section{min-height:0}.student-calendar-shell{gap:.85rem}.student-calendar-shell__header-main{flex-direction:column;align-items:stretch;gap:.85rem}.student-calendar-shell__heading-group{gap:.55rem;flex:none}.student-calendar-shell__month-row{width:100%;align-items:flex-start;flex-direction:column;gap:.6rem}.student-calendar-shell__month-title{font-size:1.62rem}.student-calendar-shell__toolbar{width:100%;align-items:stretch;justify-content:flex-start;gap:.6rem;flex:none}.student-calendar-shell__calendar-tools{width:100%;justify-content:flex-start;gap:.5rem}.student-calendar-shell__control-cluster,.student-calendar-shell__attendance-tools{flex-wrap:wrap;max-width:100%}.student-calendar-shell__attendance-tools{justify-content:space-between;align-self:flex-start}.student-calendar-shell__control-button,.student-calendar-shell__search-button,.student-calendar-shell__attendance-action,.student-calendar-shell__attendance-indicator{min-height:2.55rem;padding:0 .82rem;font-size:.8rem}.student-calendar-shell__nav-button{width:2.55rem;height:2.55rem}.student-calendar-shell__search-button{flex:1 1 auto}.calendar-wrapper,.student-calendar-shell__body[data-calendar-view=listMonth]{min-height:420px}.student-calendar-shell__body[data-calendar-view=dayGridMonth]{min-height:420px;height:420px}.student-calendar-shell__body .fc-list-row-grid{grid-template-columns:112px minmax(0,1fr)}.student-calendar-shell__body .fc-list-target-cell{display:none}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .student-calendar-day-head{gap:.25rem;min-height:1.9rem;padding:.32rem .32rem 0}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .student-calendar-day-label{font-size:.88rem}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .student-calendar-day-badge{min-height:1.22rem;font-size:.56rem;padding:.17rem .34rem}.student-calendar-shell__body[data-calendar-view=dayGridMonth] .fc .fc-daygrid-event{font-size:.7rem}}
