@import "https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700;900&display=swap";:root{--primary:#3b82f6;--primary-dark:#60a5fa;--primary-light:#1e3a8a;--green:#10b981;--green-light:#064e3b;--red:#f87171;--red-light:#7f1d1d;--yellow:#fbbf24;--yellow-light:#78350f;--dark:#f1f5f9;--gray-700:#cbd5e1;--gray-500:#94a3b8;--gray-400:#64748b;--gray-300:#475569;--gray-100:#1e293b;--gray-50:#182032;--white:#131825;--bg:#0a0e1a;--border:#1f2937;--shadow:0 1px 3px #0006, 0 1px 2px #0000004d;--shadow-md:0 4px 12px #00000080, 0 2px 6px #00000059}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--dark);font-family:Noto Sans KR,sans-serif;font-size:14px;line-height:1.6}.layout{flex-direction:column;min-height:100vh;display:flex}.navbar{background:var(--white);border-bottom:1px solid var(--border);padding:0 24px;padding-top:env(safe-area-inset-top);height:calc(60px + env(safe-area-inset-top));z-index:100;box-shadow:var(--shadow);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.navbar-brand{color:var(--primary);font-size:18px;font-weight:900;text-decoration:none}.navbar-right{align-items:center;gap:12px;display:flex}.navbar-name{color:var(--gray-500);font-size:13px}.page{flex:1;width:100%;max-width:960px;margin:0 auto;padding:32px 20px}.page.page-wide{max-width:none;padding:24px}.todos-split{grid-template-columns:minmax(360px,460px) 1fr;align-items:start;gap:20px;display:grid}.todos-col{min-width:0}.todos-col-title{color:var(--dark);border-bottom:2px solid var(--border);margin-bottom:12px;padding-bottom:8px;font-size:16px;font-weight:900}@media (width<=1100px){.todos-split{grid-template-columns:1fr}}@media (width<=600px){.page.page-wide{padding:18px 14px}}.center-screen{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.status-card{background:var(--white);text-align:center;box-shadow:var(--shadow-md);border-radius:16px;width:90%;max-width:360px;padding:48px 40px}.status-card .status-icon{margin-bottom:16px;font-size:48px}.status-card h2{margin-bottom:8px;font-size:22px;font-weight:800}.status-card p{color:var(--gray-500);white-space:pre-line;font-size:14px}.auth-page{background:linear-gradient(135deg,#0f172a 0%,#1e293b 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-card{background:var(--white);width:100%;max-width:400px;box-shadow:var(--shadow-md);border-radius:20px;padding:40px}.auth-logo{text-align:center;margin-bottom:28px}.auth-logo h1{color:var(--primary);font-size:24px;font-weight:900}.auth-logo p{color:var(--gray-500);margin-top:4px;font-size:13px}.form-group{margin-bottom:16px}.form-group label{color:var(--gray-700);margin-bottom:6px;font-size:13px;font-weight:700;display:block}.form-group input,.form-group select,.form-group textarea{border:1.5px solid var(--border);width:100%;color:var(--dark);background:var(--white);border-radius:10px;outline:none;padding:10px 14px;font-family:inherit;font-size:14px;transition:border-color .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary)}.form-group textarea{resize:vertical;min-height:100px}.btn-primary{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;padding:11px 20px;font-family:inherit;font-size:14px;font-weight:700;transition:background .2s}.btn-primary:hover{background:var(--primary-dark)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--gray-100);color:var(--gray-700);cursor:pointer;border:none;border-radius:10px;padding:9px 16px;font-family:inherit;font-size:13px;font-weight:700}.btn-secondary:hover{background:var(--border)}.btn-outline{color:var(--primary);border:1.5px solid var(--primary);cursor:pointer;background:0 0;border-radius:10px;padding:9px 16px;font-family:inherit;font-size:13px;font-weight:700}.btn-outline:hover{background:var(--primary-light)}.btn-danger{background:var(--red-light);color:var(--red);cursor:pointer;border:none;border-radius:10px;padding:9px 16px;font-family:inherit;font-size:13px;font-weight:700}.btn-success{background:var(--green-light);color:var(--green);cursor:pointer;border:none;border-radius:10px;padding:9px 16px;font-family:inherit;font-size:13px;font-weight:700}.btn-sm{padding:6px 12px!important;font-size:12px!important}.card{background:var(--white);box-shadow:var(--shadow);border:1px solid var(--border);border-radius:14px;padding:24px}.page-header{justify-content:space-between;align-items:flex-start;margin-bottom:24px;display:flex}.page-header h1{font-size:22px;font-weight:900}.page-header p{color:var(--gray-500);margin-top:2px;font-size:13px}.badge{border-radius:20px;padding:3px 10px;font-size:11px;font-weight:700;display:inline-block}.badge-pending{background:var(--yellow-light);color:var(--yellow)}.badge-approved{background:var(--green-light);color:var(--green)}.badge-rejected{background:var(--red-light);color:var(--red)}.student-list{flex-direction:column;gap:10px;display:flex}.student-item{background:var(--white);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;justify-content:space-between;align-items:center;padding:16px 20px;transition:box-shadow .2s;display:flex}.student-item:hover{box-shadow:var(--shadow-md)}.student-info h3{font-size:15px;font-weight:700}.student-info p{color:var(--gray-500);margin-top:2px;font-size:12px}.student-actions{align-items:center;gap:8px;display:flex}.journal-list{flex-direction:column;gap:12px;display:flex}.journal-item{background:var(--white);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;overflow:hidden}.journal-header{border-bottom:1px solid var(--border);background:var(--gray-50);justify-content:space-between;align-items:center;padding:12px 18px;display:flex}.journal-date{color:var(--gray-700);font-size:13px;font-weight:700}.journal-body{padding:16px 18px}.journal-section{margin-bottom:14px}.journal-section:last-child{margin-bottom:0}.journal-section-label{color:var(--gray-500);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:11px;font-weight:800}.journal-section-content{color:var(--dark);white-space:pre-wrap;font-size:14px;line-height:1.6}.feedback-list{border-top:1px solid var(--border);margin-top:12px;padding-top:12px}.feedback-item{background:var(--primary-light);border-left:3px solid var(--primary);border-radius:0 8px 8px 0;margin-bottom:8px;padding:10px 14px;font-size:13px}.feedback-item .feedback-meta{color:var(--gray-500);margin-bottom:4px;font-size:11px;font-weight:700}.feedback-form{gap:8px;margin-top:10px;display:flex}.feedback-form input{border:1.5px solid var(--border);border-radius:8px;outline:none;flex:1;padding:9px 14px;font-family:inherit;font-size:13px}.feedback-form input:focus{border-color:var(--primary)}.schedule-month{margin-bottom:24px}.schedule-month-title{border-bottom:2px solid var(--primary-light);margin-bottom:10px;padding-bottom:8px;font-size:16px;font-weight:800}.schedule-list{flex-direction:column;gap:8px;display:flex}.schedule-item{background:var(--white);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;grid-template-columns:1fr auto;align-items:start;gap:6px;padding:14px 18px;display:grid}.schedule-item .s-course{font-size:15px;font-weight:700}.schedule-item .s-time{color:var(--gray-500);margin-top:2px;font-size:12px}.schedule-item .s-room{background:var(--primary-light);color:var(--primary);white-space:nowrap;border-radius:20px;padding:3px 10px;font-size:11px;font-weight:700}.schedule-item .s-notes{color:var(--gray-500);grid-column:1/-1;margin-top:4px;font-size:12px}.stats-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:24px;display:grid}.stat-card{background:var(--white);text-align:center;border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;padding:20px}.stat-card .stat-val{color:var(--primary);font-size:28px;font-weight:900}.stat-card .stat-label{color:var(--gray-500);margin-top:4px;font-size:12px;font-weight:600}.tabs{background:var(--gray-100);border-radius:10px;gap:4px;margin-bottom:20px;padding:4px;display:flex}.tab-btn{cursor:pointer;color:var(--gray-500);background:0 0;border:none;border-radius:8px;flex:1;padding:8px;font-family:inherit;font-size:13px;font-weight:700}.tab-btn.active{background:var(--white);color:var(--primary);box-shadow:var(--shadow)}.spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:36px;height:36px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-msg{background:var(--red-light);color:var(--red);border-radius:8px;margin-bottom:14px;padding:10px 14px;font-size:13px;font-weight:600}.success-msg{background:var(--green-light);color:var(--green);border-radius:8px;margin-bottom:14px;padding:10px 14px;font-size:13px;font-weight:600}.empty-state{text-align:center;color:var(--gray-500);padding:48px 20px}.empty-state .empty-icon{margin-bottom:12px;font-size:40px}.back-link{color:var(--gray-500);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;margin-bottom:20px;padding:0;font-family:inherit;font-size:13px;font-weight:600;display:inline-flex}.back-link:hover{color:var(--primary)}.flex-between{justify-content:space-between;align-items:center;display:flex}.gap-8{gap:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-16{margin-bottom:16px}.text-sm{font-size:13px}.text-gray{color:var(--gray-500)}.text-center{text-align:center}.fc{color:var(--dark)!important;font-family:inherit!important}.fc .fc-toolbar-title{color:var(--dark)!important;font-size:1.15em!important;font-weight:900!important}.fc .fc-button{background:var(--gray-100)!important;color:var(--gray-700)!important;box-shadow:none!important;text-transform:none!important;letter-spacing:0!important;border:none!important;border-radius:9px!important;padding:7px 14px!important;font-family:inherit!important;font-size:12.5px!important;font-weight:700!important}.fc .fc-button:hover{background:var(--gray-300)!important;color:var(--dark)!important}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background:var(--primary)!important;color:#fff!important}.fc .fc-button-primary:focus,.fc .fc-button-primary:not(:disabled).fc-button-active:focus{box-shadow:none!important;outline:none!important}.fc .fc-button:disabled{opacity:.5!important}.fc .fc-today-button{background:var(--primary-light)!important;color:var(--primary-dark)!important}.fc-event{cursor:pointer!important;border:none!important;border-radius:6px!important;margin-bottom:2px!important;padding:2px 5px!important;font-size:11.5px!important;font-weight:700!important}.fc-daygrid-event-dot{display:none!important}.fc-daygrid-event{margin-top:2px!important}.fc .fc-daygrid-day.fc-day-today{background:#3b82f61f!important}.fc .fc-daygrid-day-number{color:var(--gray-700)!important;padding:4px 6px!important;font-weight:700!important;text-decoration:none!important}.fc .fc-col-header-cell-cushion{color:var(--gray-500)!important;padding:8px 4px!important;font-size:12px!important;font-weight:800!important;text-decoration:none!important}.fc .fc-daygrid-day-frame{min-height:80px!important}.fc .fc-scrollgrid{background:var(--white);border-radius:10px;overflow:hidden}.fc-theme-standard td,.fc-theme-standard th{border-color:var(--border)!important}.fc .fc-scrollgrid-section>*{background:var(--white)!important}.fc-list-event-graphic{padding-left:10px!important}.fc .fc-list-event-dot{border-width:6px!important;border-radius:50%!important}.fc .fc-list-event-title a{font-weight:600;color:var(--dark)!important}.fc .fc-list-day-cushion{background:var(--gray-50)!important;color:var(--dark)!important}.fc .fc-list-table td{padding:10px 14px!important}.fc .fc-list-empty{background:var(--white)!important;color:var(--gray-500)!important}.fc .fc-list{border-color:var(--border)!important}.fc .fc-list-event:hover td{background:var(--gray-50)!important}.home-greet h1{font-size:24px}@media (width<=600px){.home-greet h1{font-size:20px}}.hero{text-align:center;border:1px solid var(--border);background:radial-gradient(130% 120% at 50% -10%,#1a2544 0%,#101527 55%,#0b0f1c 100%);border-radius:24px;margin-bottom:20px;padding:52px 28px 46px;position:relative;overflow:hidden}.hero-glow{pointer-events:none;filter:blur(18px);background:radial-gradient(circle,#3b82f661,#0000 68%);width:380px;height:380px;position:absolute;top:-110px;left:50%;transform:translate(-50%)}.hero-inner{z-index:1;position:relative}.hero-logo{border-radius:20px;width:74px;height:74px;box-shadow:0 10px 34px #00000073,0 0 0 1px #ffffff0f}.hero-brand{letter-spacing:.04em;color:var(--primary-dark);margin-top:16px;font-size:13px;font-weight:800}.hero-title{color:var(--dark);letter-spacing:-.01em;margin-top:10px;font-size:33px;font-weight:900;line-height:1.24}.hero-title span{color:var(--primary-dark)}.hero-sub{color:var(--gray-500);margin-top:15px;font-size:15px;line-height:1.7}.hero-cta{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:26px;display:flex}.hero-btn-primary{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:999px;padding:14px 30px;font-family:inherit;font-size:15px;font-weight:800;transition:transform .12s,filter .12s;box-shadow:0 10px 26px -8px #3b82f6b3}.hero-btn-primary:hover{filter:brightness(1.07);transform:translateY(-1px)}@media (width<=600px){.hero{border-radius:20px;padding:38px 20px 34px}.hero-logo{border-radius:17px;width:62px;height:62px}.hero-title{font-size:25px}.hero-sub{font-size:13.5px}.hero-btn-primary{width:100%}}.dashboard-grid{flex-direction:column;gap:16px;display:flex}.dash-row{width:100%}.dash-row-split{grid-template-columns:1fr 1fr;align-items:stretch;gap:16px;display:grid}.dash-col-left,.dash-col-right{flex-direction:column;gap:16px;min-width:0;display:flex}.dash-col-right>*{flex:1}.assignments-grid{grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}.mini-cal .fc{font-size:11px!important}.mini-cal .fc-toolbar.fc-header-toolbar{flex-direction:row!important;gap:4px!important;margin-bottom:.6em!important}.mini-cal .fc-toolbar-title{font-size:.95em!important}.mini-cal .fc-button{padding:4px 9px!important;font-size:11px!important}.mini-cal .fc-daygrid-day-frame{min-height:38px!important;padding:2px!important}.mini-cal .fc-col-header-cell-cushion{padding:4px 0!important;font-size:10.5px!important}.mini-cal .fc-daygrid-day-number{padding:2px 4px!important;font-size:11.5px!important;font-weight:600!important}.mini-cal .fc-daygrid-day-events{display:none}.mini-cal .fc-bg-event{opacity:.55!important}.mini-cal .fc-day-other .fc-daygrid-day-frame{opacity:.3}@media (width<=600px){body{font-size:15px}.navbar{padding:0 16px;padding-top:env(safe-area-inset-top);height:calc(54px + env(safe-area-inset-top))}.navbar-brand{font-size:16px}.navbar-name{display:none}.page{padding:20px 14px}.auth-card{border-radius:16px;margin:16px;padding:28px 20px}.auth-logo h1{font-size:20px}.status-card{padding:36px 24px}.page-header{flex-direction:column;align-items:flex-start;gap:12px}.page-header h1{font-size:20px}.page-header .btn-outline{text-align:center;width:100%}.stats-grid{grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{padding:16px 12px}.stat-card .stat-val{font-size:24px}.card{border-radius:12px;padding:16px}.student-item{flex-direction:column;align-items:flex-start;gap:10px;padding:14px 16px}.student-actions{justify-content:flex-end;width:100%}.journal-header{flex-direction:column;align-items:flex-start;gap:8px}.journal-body{padding:14px}.feedback-form{flex-direction:column}.feedback-form input,.feedback-form button{width:100%}.tabs{gap:2px}.tab-btn{padding:8px 4px;font-size:12px}.btn-primary{border-radius:12px;padding:13px 20px;font-size:15px}.btn-secondary,.btn-outline,.btn-danger,.btn-success{font-size:13px}.form-group input,.form-group select,.form-group textarea{padding:12px 14px;font-size:16px}.back-link{margin-bottom:16px;font-size:14px}.dash-row-split,.assignments-grid{grid-template-columns:1fr!important}.dashboard-grid,.dash-col-left,.dash-col-right{gap:12px}.mini-cal .fc-daygrid-day-frame{min-height:44px!important}.mini-cal .fc-toolbar-title{font-size:1em!important}.mini-cal .fc-daygrid-day-number{font-size:13px!important}.fc .fc-toolbar.fc-header-toolbar{flex-direction:column;gap:10px;margin-bottom:.8em!important}.mini-cal .fc-toolbar.fc-header-toolbar{flex-direction:row!important;gap:4px!important}.fc .fc-toolbar-chunk{justify-content:center;gap:6px;display:flex}.fc .fc-toolbar-title{font-size:1em!important}.fc .fc-button{padding:6px 11px!important;font-size:11.5px!important}.fc-event{padding:1px 3px!important;font-size:10px!important;font-weight:800!important}.fc .fc-daygrid-day-number{padding:2px 4px!important;font-size:12px!important}.fc .fc-col-header-cell-cushion{padding:6px 2px!important;font-size:10.5px!important}.fc .fc-daygrid-day-frame{min-height:56px!important}.fc .fc-daygrid-more-link{color:var(--primary)!important;font-size:10px!important;font-weight:800!important}}
