.student-search-shell { background: #f6f7f9; }
.student-search-shell.has-search-result .student-search-main { padding-top: 28px; }
.student-search-shell.has-search-result .student-search-main > .school-chip,
.student-search-shell.has-search-result .student-search-main > h1,
.student-search-shell.has-search-result .student-search-main > .current-academic-period,
.student-search-shell.has-search-result .student-search-form,
.student-search-shell.has-search-result .search-utility-row { display: none; }
.student-top-links { display: flex; align-items: center; gap: 24px; }
.student-login-link { display: inline-flex; align-items: center; gap: 5px; color: var(--md-sys-color-primary); font-size: 12px; font-weight: 600; text-decoration: none; }
.student-login-link:hover { color: #5d3d12; }
.student-login-link .material-symbols-rounded { font-size: 17px; }
.login-brand > span { font-size: 17px; font-weight: 600; letter-spacing: 0; line-height: 1.25; }
.login-brand .brand-sub { font-size: 11px; letter-spacing: .2px; }
.student-search-main { width: min(1040px, 100%); margin: auto; padding: clamp(50px, 10vh, 110px) 28px 54px; text-align: center; }
.student-search-shell:not(.has-search-result) .student-search-main { transform: translateY(-22px); }
.student-search-shell.has-search-result .student-search-main { width: min(1800px, 100%); }
.student-search-main > .school-chip { margin: 0 auto; }
.student-search-main h1 { margin: 24px 0 6px; color: var(--md-sys-color-on-surface); font-size: clamp(32px, 5vw, 48px); font-weight: 600; letter-spacing: -1px; }
.current-academic-period { display: flex; align-items: center; justify-content: center; gap: 8px; width: fit-content; max-width: 100%; margin: 22px auto -14px; padding: 9px 16px; border: 1px solid #f0d4b1; border-radius: 999px; background: #fff9f1; color: #79512a; font-size: 13px; }
.current-academic-period span { color: #77716b; }
.current-academic-period strong { color: #a45200; font-size: 15px; font-weight: 700; }
.current-academic-period.error strong { color: #77716b; font-size: 13px; font-weight: 500; }
.student-search-form { display: flex; align-items: center; gap: 12px; width: min(760px, 100%); min-height: 62px; margin: 34px auto 0; padding: 7px 8px 7px 20px; border: 1px solid #d9dde4; border-radius: 999px; background: white; box-shadow: 0 4px 18px rgb(32 42 58 / 8%); transition: box-shadow .18s, border-color .18s; }
.student-search-form:focus-within { border-color: #bd7b21; box-shadow: 0 4px 22px rgb(32 42 58 / 14%); }
.student-search-form > .material-symbols-rounded { color: #737b88; font-size: 24px; }
.student-search-form input { min-width: 0; flex: 1; border: 0; outline: 0; background: transparent; color: #202735; font: 400 16px Sarabun, sans-serif; }
.student-search-form input::placeholder { color: #858c97; }
.student-search-form button, .download-actions button { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; padding: 0 23px; border: 0; border-radius: 999px; background: #f0a13b; color: #382300; font: 600 14px Sarabun, sans-serif; cursor: pointer; }
.student-search-form button:hover, .download-actions button:hover { background: #f5b35c; }
.search-utility-row { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 18px; margin-top: 10px; }
.search-hint { margin: 0; color: #858c97; font-size: 12px; }
.teacher-schedule-link { display: inline-flex; align-items: center; gap: 5px; color: #965200; font-size: 12px; font-weight: 600; text-decoration: none; }
.teacher-schedule-link:hover { color: #653900; text-decoration: underline; }
.teacher-schedule-link .material-symbols-rounded { font-size: 15px; }
.search-progress { width: min(760px, 100%); margin: 22px auto 0; padding: 14px 18px; border: 1px solid #e6e9ee; border-radius: 14px; background: #fff; text-align: left; }
.search-progress-label { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; color: #465163; font-size: 12px; }
.search-progress-label strong { color: #a96713; font-variant-numeric: tabular-nums; }
.search-progress progress { display: block; width: 100%; height: 8px; overflow: hidden; border: 0; border-radius: 999px; background: #f1e7db; accent-color: #f0a13b; }
.search-progress progress::-webkit-progress-bar { border-radius: 999px; background: #f1e7db; }
.search-progress progress::-webkit-progress-value { border-radius: 999px; background: linear-gradient(90deg, #ed8c20, #f5b452); transition: width .25s ease; }
.search-progress progress::-moz-progress-bar { border-radius: 999px; background: linear-gradient(90deg, #ed8c20, #f5b452); }
.search-message { width: min(760px, 100%); margin: 28px auto 0; padding: 18px 22px; border: 1px solid #e6e9ee; border-radius: 16px; background: white; color: #394354; line-height: 1.8; text-align: left; }
.search-message.error { border-color: #f1c5c2; background: #fff7f6; color: #8b2921; }
.search-message strong { color: #182233; overflow-wrap: anywhere; }
.schedule-result { margin: 48px auto 0; text-align: left; }
.download-actions { display: flex; gap: 8px; }
.download-actions button { min-height: 40px; padding: 0 14px; font-size: 12px; }
.download-actions .material-symbols-rounded { font-size: 18px; }
.new-search-button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 36px; padding: 0 12px; border: 1px solid #e1e2e3; border-radius: 999px; background: #fff; color: #55595b; font: 500 12px Sarabun,sans-serif; cursor: pointer; }
.new-search-button:hover { border-color: #e3a05e; background: #fffaf4; color: #a94b10; }
.new-search-button .material-symbols-rounded { font-size: 18px; }
@media (max-width: 680px) { .student-top-links { gap: 13px; } .student-login-link { font-size: 11px; } .login-brand > span { font-size: 15px; } .student-search-main { padding: 52px 18px 44px; } .student-search-form { min-height: 56px; gap: 8px; padding-left: 14px; } .student-search-form button { padding: 0 17px; } .search-utility-row { column-gap: 12px; row-gap: 8px; } }
@media print { body * { visibility: hidden !important; } #scheduleResult, #scheduleResult * { visibility: visible !important; } #scheduleResult { position: absolute; inset: 0; width: 100%; margin: 0; } .download-actions { display: none; } }
