:root{--ink:#172336;--muted:#5d6b7d;--forest:#254f87;--forest-2:#1f467a;--mint:#e7eef8;--mint-2:#f1f5fa;--cream:#f4f6f9;--paper:#fff;--line:#d9e0e9;--shadow:0 8px 24px rgba(24,45,78,.07)}
html,body{background:var(--cream);color:var(--ink)}body{font-size:17px}.sidebar{background:#183a69}.brand{gap:13px}.brand-mark{width:48px;height:48px;padding:2px;background:#fff;border-radius:50%}.brand-mark img{width:100%;height:100%;object-fit:contain}.brand strong{font-family:"Noto Sans TC",sans-serif;font-size:20px;letter-spacing:.05em}.brand small{font-size:14px;color:#dfe9f7;opacity:1}.nav-item{color:#dbe5f3;font-size:16px}.nav-item:hover,.nav-item.active{background:#fff;color:#183a69}.nav-item.active{box-shadow:none}.nav-label{color:#9db3d0;font-size:13px}.profile{border-top:1px solid rgba(255,255,255,.2);padding-top:20px}.profile small{color:#d2deee;opacity:1}.profile .chevron{font-size:12px;color:#c5d3e5;opacity:1}.topbar{background:#fff;margin-left:-38px;margin-right:-38px;padding:0 38px;border-bottom-color:#dde3ec}.eyebrow{color:#62738a;font-size:14px;letter-spacing:.04em}.topbar h1{font-family:"Noto Sans TC",sans-serif;font-weight:700;color:#14243a}.year-indicator{background:#e7eef8;color:#234f87}.card{border-color:#dce3ec;box-shadow:var(--shadow)}.primary{background:#24548f;box-shadow:none;font-weight:600}.primary:hover{background:#183f75}.soft-btn{background:#edf2f8;color:#244f84}.week-picker{background:#e7eef8!important;border-color:#bfd0e5!important}.week-picker span,.week-picker small{color:#183f75!important}.summary-card:after{display:none}.summary-top{color:#526277}.summary-card strong{font-family:"Noto Sans TC",sans-serif;color:#183f75}.progress i,.stat-row i{background:#35699f}.schedule-head h2,.section-bar h2{font-family:"Noto Sans TC",sans-serif;font-size:23px}.schedule-head p,.section-bar p{font-size:14px;color:#5b6879}.schedule-controls{background:#f8fafc}.schedule-controls label,.stats-filters label,.audit-filter{font-size:13px;color:#4d5b6d}.schedule-controls select,.stats-filters select,.audit-filter select{font-size:14px;color:#172336}.schedule th{background:#f3f6fa;color:#4f5e72;font-size:14px}.schedule th strong{font-size:16px;color:#172336}.schedule td:first-child{background:#f7f9fc;color:#566579}.schedule td:first-child strong{font-size:15px;color:#172336}.slot.multi-card{background:#fff!important;color:#172336!important;border:1px solid #d5dde8!important;border-left:5px solid var(--slot-bg,#315d94)!important;border-radius:8px;box-shadow:0 2px 6px rgba(26,52,85,.05);min-height:88px}.slot.multi-card:hover{background:#f8fafc!important;border-color:#b9c7d9!important}.slot.booking b{font-size:15px;color:#17385f}.slot.booking span{font-size:14px;color:#1c2939;margin-top:6px}.slot.booking small{font-size:13px;color:#526277;opacity:1;margin-top:7px}.slot.empty:hover{border-color:#7190b6;background:#f0f5fb}.available-list button{background:#fff;border-color:#aebfd3;color:#234f83;font-size:13px}.legend{font-size:13px}.dot.booked{background:#315d94}.segmented button{font-size:13px}.booking-row{font-size:15px}.date-block small,.student-cell small,.meta-cell small{font-size:13px}.student-cell strong{font-size:16px}.status-pill{font-size:12px}.status-pill.green{background:#e4f0ec;color:#236151}.form-grid label,.full-label,#simpleFields label{font-size:14px;color:#4f5f72}.form-grid input,.form-grid select,.full-label textarea,#simpleFields input,#simpleFields select{font-size:16px;min-height:46px;border-color:#cdd6e2}.modal-head h2{font-family:"Noto Sans TC",sans-serif}.detail-item small{font-size:12px}.detail-item strong{font-size:16px}.readonly-notice{background:#eef2f7;color:#40516a}.source-logo{background:#254f87}.integration-head h3,.stat-panel h3,.space-card h3,.semester-card h2{font-family:"Noto Sans TC",sans-serif}.row-action{width:auto;min-width:56px;padding:8px 10px;color:#234f83}.account-actions{display:flex;gap:7px;flex-wrap:wrap}.reset-password{border:1px solid #aebed2;background:#fff;color:#234f83;border-radius:8px;padding:8px 10px;font-size:13px}.my-week-toolbar{display:flex;align-items:center;justify-content:center;gap:20px;padding:11px 16px;margin-bottom:14px}.my-week-toolbar button{width:38px;height:38px;border:0;border-radius:9px;background:#edf2f8;color:#234f83;font-size:24px}.my-week-toolbar div{text-align:center;min-width:150px}.my-week-toolbar strong,.my-week-toolbar span{display:block}.my-week-toolbar strong{font-size:16px}.my-week-toolbar span{font-size:13px;color:#607087;margin-top:2px}.my-schedule-card{margin-bottom:22px}.mine-list-heading h3{font-size:18px;margin:0 0 10px}.my-schedule-card .schedule-wrap{max-height:58vh}
.login-screen{position:fixed;inset:0;z-index:100;display:grid;grid-template-columns:minmax(420px,44%) 1fr;background:#fff}.login-screen.hidden{display:none}.login-panel{padding:44px clamp(35px,6vw,90px);display:flex;flex-direction:column;justify-content:center}.login-brand{position:absolute;top:34px;left:clamp(35px,6vw,90px);display:flex;align-items:center;gap:13px}.login-brand img{width:58px;height:58px}.login-brand span,.login-brand strong{display:block}.login-brand span{font-size:13px;color:#5d6c80}.login-brand strong{font-size:18px;color:#173c70}.login-copy p{font-size:13px;color:#315e99;font-weight:700;letter-spacing:.12em}.login-copy h1{font-size:36px;margin:7px 0;color:#14243a}.login-copy>span{font-size:15px;color:#637084}.login-panel form{margin-top:32px}.login-panel form label{display:block;font-size:14px;color:#435166;margin-bottom:17px}.login-panel form input{display:block;width:100%;height:50px;margin-top:7px;border:1px solid #c9d3e0;border-radius:9px;padding:0 14px;font-size:16px;outline:0}.login-panel form input:focus{border-color:#35679f;box-shadow:0 0 0 3px #e7eef8}.login-submit{width:100%;height:50px;font-size:16px}.login-error{min-height:20px;margin:-4px 0 10px;color:#a23f47;font-size:13px}.login-demo{margin-top:22px;padding:14px 16px;border-radius:10px;background:#f2f5f9;display:grid;grid-template-columns:1fr 1fr;gap:5px 14px;color:#536176;font-size:12px}.login-demo strong{grid-column:1/-1;color:#293a51;margin-bottom:2px}.login-visual{background:linear-gradient(150deg,#173d72 0%,#2e5e98 58%,#4d78aa 100%);display:flex;align-items:flex-end;padding:clamp(42px,7vw,100px);color:#fff;position:relative;overflow:hidden}.login-visual:before,.login-visual:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.14);border-radius:50%}.login-visual:before{width:520px;height:520px;right:-120px;top:-140px}.login-visual:after{width:300px;height:300px;right:60px;top:-20px}.login-visual span{font-size:14px;border:1px solid rgba(255,255,255,.4);border-radius:999px;padding:7px 12px}.login-visual h2{font-size:clamp(32px,4vw,52px);line-height:1.35;margin:20px 0}.login-visual p{font-size:16px;color:#dce7f5}
@media(max-width:900px){.login-screen{grid-template-columns:1fr}.login-visual{display:none}.login-panel{padding:110px 28px 35px;max-width:560px;width:100%;margin:auto}.login-brand{top:28px;left:28px}.topbar{margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px}}
@media(max-width:560px){body{font-size:16px}.login-demo{grid-template-columns:1fr}.login-brand img{width:50px;height:50px}.login-copy h1{font-size:31px}.schedule-head h2,.section-bar h2{font-size:21px}.slot.booking b{font-size:14px}.slot.booking span{font-size:13px}.slot.booking small{font-size:12px}}

/* 校徽必須完整等比例顯示，不沿用舊圖示框的裁切與縮放設定。 */
.brand-mark{display:flex;align-items:center;justify-content:center;flex:0 0 54px;width:54px;height:54px;padding:4px;overflow:visible;border-radius:50%;background:#fff}
.brand-mark img,.login-brand img{display:block;max-width:none;object-fit:contain;object-position:center;clip-path:none;transform:none}
.brand-mark img{width:46px!important;height:46px!important;flex:0 0 46px}
.login-brand img{width:64px!important;height:64px!important;flex:0 0 64px}

/* 所有主要輔助資訊維持至少 14px，提升長時間排課時的可讀性。 */
body{line-height:1.55}.nav-label,.profile .chevron,.schedule-controls label,.stats-filters label,.audit-filter,.slot.booking small,.available-list button,.legend,.segmented button,.date-block small,.student-cell small,.meta-cell small,.status-pill,.detail-item small,.reset-password,.my-week-toolbar span,.login-brand span,.login-copy p,.login-error,.login-demo{font-size:14px}.detail-student small,.summary-card small,.integration-head p,.integration-card dt,.integration-note,.csv-hint,.import-status span,.upload-zone span,.stat-row,.admin-mark,.modal-kicker,.conflict-alert p,.check-row,.series-preview>strong,.series-week,.auto-course,.toast p{font-size:14px}
@media(max-width:560px){.login-brand img{width:56px!important;height:56px!important;flex-basis:56px}.slot.booking span,.slot.booking small{font-size:14px}}

/* 週課表直接完整展開；整個頁面自然捲動，不在表格內建立上下捲軸。 */
.schedule-card{overflow:visible}.schedule-wrap,.my-schedule-card .schedule-wrap{max-height:none!important;overflow:visible;border-radius:0 0 var(--radius) var(--radius)}
.schedule td{min-height:82px}.slot-stack{min-height:70px}.slot.multi-card{min-height:72px}.slot.empty{min-height:70px}

/* 晤談清單的日期資訊固定在同一行，欄位比例更容易快速掃讀。 */
.booking-list{padding:8px 24px}.booking-row{grid-template-columns:minmax(145px,auto) minmax(220px,1.55fr) minmax(145px,1fr) minmax(145px,1fr) auto;gap:24px;padding:20px 8px}.date-block{min-width:145px;padding-right:20px}.date-block strong{margin-bottom:3px}.date-block small{white-space:nowrap;word-break:keep-all}.student-cell,.meta-cell{min-width:0}.student-cell strong,.student-cell small,.meta-cell,.meta-cell small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.detail-actions button{min-height:42px}.danger-link{padding:9px 4px}.modal-actions{align-items:center}

@media(max-width:900px){.schedule-card{overflow:hidden}.schedule-wrap,.my-schedule-card .schedule-wrap{overflow-x:auto;overflow-y:hidden}.booking-row{grid-template-columns:135px minmax(190px,1.4fr) minmax(125px,1fr) auto;gap:16px}.booking-row .meta-cell:last-of-type{display:none}.date-block{min-width:135px;padding-right:14px}}
@media(max-width:760px){.booking-list{padding:6px 16px}.booking-row{grid-template-columns:minmax(0,1fr) auto;gap:12px 10px;padding:17px 2px}.date-block{grid-column:1/-1;min-width:0;border-right:0;border-bottom:1px solid #e3e8ef;padding:0 0 10px}.date-block strong,.date-block small{display:inline}.date-block strong{margin:0 10px 0 0}.booking-row .meta-cell{display:none}.student-cell strong,.student-cell small{white-space:normal}.detail-actions{align-items:stretch;gap:14px}.detail-actions,.detail-actions>div{flex-direction:column}.detail-actions>div button,.detail-actions>.danger-link{width:100%}}

/* 管理、資源、週次與表單頁也採用一致的可讀字級與留白。 */
.data-table th,.data-table td{font-size:14px;line-height:1.5}.data-table th{color:#506078;font-weight:600}.teacher-name small,.space-card p,.semester-card p,.week-card small,.week-card .week-state,.util-row,.available-list span,.integration-card dd,.import-status small,.resource-note{font-size:14px}.space-tags{flex-wrap:wrap}.space-tags span{font-size:14px;padding:5px 9px}.form-section h3{font-size:16px}.form-section h3 span{font-size:14px}.suggestion-chip,.reason-tag,.no-suggestion{font-size:14px}.filters label,.week-nav>button,.schedule-controls select,.stats-filters select,.audit-filter select{min-height:42px}.row-action,.reset-password,.ghost,.soft-btn{min-height:40px}.week-card{min-height:118px}.section-bar{gap:18px}
@media(max-width:560px){.section-bar{align-items:stretch;flex-direction:column}.section-bar .primary{align-self:flex-start}.data-table th,.data-table td{padding:14px 16px}}

/* 週次與空間停止預約管理 */
.blocked-slot{min-height:70px;border:1px solid #e1c9a9;border-left:5px solid #b87632;border-radius:8px;background:#fff9f1;padding:10px;color:#754a1f;display:flex;flex-direction:column;justify-content:center}.blocked-slot strong,.blocked-slot small{display:block}.blocked-slot strong{font-size:14px}.blocked-slot small{font-size:13px;margin-top:4px;line-height:1.4}.week-card{display:flex;flex-direction:column}.week-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.week-card-top button,.space-block-head button{border:1px solid #b8c7d9;background:#fff;color:#24548f;border-radius:8px;padding:6px 9px;font-size:14px}.week-stop{margin-top:12px;padding:10px;border:1px solid #e4c9a6;border-radius:9px;background:#fff8ef}.week-stop strong,.week-stop span,.week-stop small{display:block}.week-stop strong{font-size:14px;color:#8b5622}.week-stop span{font-size:14px;font-weight:600;margin:3px 0}.week-stop small{font-size:13px;color:#715b43;line-height:1.45}.week-open{margin-top:auto;padding-top:12px;color:#697789;font-size:13px}.day-checks{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:8px}.day-checks label{display:flex!important;align-items:flex-start;gap:7px;border:1px solid #cfd8e4;border-radius:9px;padding:10px;background:#fff;color:#24364e!important}.day-checks input{width:18px!important;height:18px!important;min-height:0!important;margin:2px 0 0!important;accent-color:#24548f}.day-checks span,.day-checks small{display:block}.day-checks small{font-size:12px;color:#68778a;margin-top:2px}.field-label{font-size:14px;color:#4f5f72}.stop-form-footer{display:flex;justify-content:flex-start;border-top:1px solid #e3e8ef;padding-top:12px}.block-help{margin:0;padding:11px 13px;border-radius:9px;background:#f1f5fa;color:#4e6077;font-size:14px}.space-blocks{margin-top:18px;padding-top:15px;border-top:1px solid #e0e6ee}.space-block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.space-block-head>strong{font-size:14px}.block-rule{display:block;width:100%;text-align:left;border:1px solid #d8e0ea;border-radius:9px;background:#f9fbfd;color:#23354d;padding:10px;margin-top:7px}.block-rule:hover{border-color:#97abc3;background:#f3f7fb}.block-rule strong,.block-rule span,.block-rule small{display:block}.block-rule strong{font-size:14px}.block-rule span{font-size:13px;color:#5c6b7e;margin-top:3px}.block-rule small{font-size:12px;color:#9a5c27;margin-top:4px}.no-block-rule{font-size:13px!important;color:#758297!important;margin:8px 0 0!important}.simple-grid textarea{display:block;width:100%;margin-top:6px;border:1px solid #cdd6e2;border-radius:9px;padding:11px 12px;color:#172336;background:#fff;font-size:16px;resize:vertical;outline:0}.simple-grid textarea:focus{border-color:#35679f;box-shadow:0 0 0 3px #e7eef8}
@media(max-width:760px){.day-checks{grid-template-columns:1fr 1fr}.blocked-slot{min-height:68px}.week-card{min-height:0}}
#spaceCards{grid-template-columns:repeat(2,minmax(0,1fr))}.blocked-slot small,.week-stop small,.day-checks small,.block-rule span,.block-rule small,.no-block-rule{font-size:14px}
@media(max-width:900px){#spaceCards{grid-template-columns:1fr}}

/* 停止預約使用淡紅底；狀態標籤、空間名稱與原因採不同層級，避免混讀。 */
.blocked-slot{border-color:#efc9c7!important;border-left-color:#c75a58!important;background:#fff3f2!important;color:#7d2928!important}.blocked-label{align-self:flex-start;border-radius:999px;background:#b84645;color:#fff;font-size:13px;font-weight:700;line-height:1;padding:5px 8px;margin-bottom:7px}.blocked-slot strong{color:#7d2928;font-size:15px}.blocked-slot small{color:#515d6d!important;font-size:14px!important;font-weight:500;line-height:1.5}.week-stop{border-color:#efc9c7;background:#fff3f2}.week-stop>strong{color:#a03938}.week-stop>span{color:#752d2c}.week-stop>small{color:#515d6d}.dot.maintenance{background:#c75a58}

/* 選填資源預設收合，降低每次新增晤談時的表單負擔。 */
.form-grid .wide{grid-column:1/-1}.optional-resource{border-top:1px solid #e2e7ef;padding-top:14px}.resource-toggle{width:100%;min-height:44px;border:1px solid #afc0d5;border-radius:9px;background:#f7f9fc;color:#244f83;text-align:left;padding:10px 13px;font-weight:600}.resource-toggle:hover{background:#eef3f9}.optional-resource>div{margin-top:12px;padding:14px;border-radius:10px;background:#f7f9fc}.optional-resource>div>small{display:block;color:#5f6e81;font-size:14px;margin-top:7px}.optional-resource select{min-height:112px}

/* 單獨資源預約 */
.resource-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.section-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}.resource-reservation-heading{margin-top:28px;margin-bottom:12px}.readonly-field{padding:10px 12px;border:1px solid #d6dee8;border-radius:9px;background:#f6f8fb}.readonly-field small,.readonly-field strong{display:block}.readonly-field small{font-size:14px;color:#5c6b7d}.readonly-field strong{font-size:16px;margin-top:3px}.block-help.warning{background:#fff0ef;color:#9b3433}.compact-danger{min-height:40px;padding:7px 9px;border:1px solid #e3b8b5;border-radius:8px;background:#fff7f6}.data-table td small{font-size:14px;color:#5d6b7d}
@media(max-width:1100px){.resource-summary{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.resource-summary{grid-template-columns:1fr}.section-actions{justify-content:flex-start}.section-actions button{flex:1}.resource-reservation-heading{margin-top:22px}.optional-resource>div{padding:12px}}

/* 登入頁校園照片：照片維持清晰，漸層與半透明文字襯底只負責提升對比。 */
.login-visual{background-color:#234d82;background-image:linear-gradient(180deg,rgba(18,48,84,.10) 0%,rgba(18,48,84,.28) 48%,rgba(15,43,79,.86) 100%),var(--login-image,url("school-campus.jpg"));background-size:cover;background-position:center;background-repeat:no-repeat}
.login-visual:before,.login-visual:after{display:none}.login-visual>div{position:relative;z-index:1;max-width:720px;padding:24px 28px;border-left:3px solid rgba(255,255,255,.72);border-radius:0 14px 14px 0;background:rgba(15,43,79,.42);backdrop-filter:blur(2px);box-shadow:0 12px 30px rgba(8,27,51,.18)}.login-visual h2,.login-visual p,.login-visual span{text-shadow:0 2px 8px rgba(6,23,45,.42)}
