:root{font-family:"Microsoft JhengHei",system-ui,sans-serif;color:#294536;background:#f3faf4;font-size:16px;line-height:1.65;--navy:#35664a;--teal:#36774e}*{box-sizing:border-box}body{margin:0}header{height:92px;background:var(--navy);color:white;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1200px)/2));gap:20px}.brand{display:flex;gap:14px;align-items:center;font-size:21px;font-weight:700;white-space:nowrap}.brand small{display:block;font-size:14px;font-weight:400;color:#476451}.mark{background:#fff2;color:#35664a;padding:7px 13px;border-radius:9px}#account{font-size:14px}main{max-width:1200px;margin:32px auto;padding:0 24px 50px}h1{font-size:28px;margin:0 0 6px}h2{font-size:21px;margin:0 0 20px}p{margin:8px 0 22px}.muted{color:#536b5b}.login{max-width:470px;margin:60px auto}.panel{background:white;border:1px solid #d3e6d7;border-radius:12px;padding:28px;box-shadow:0 6px 22px #35664a08}.login .panel{border-top:5px solid var(--teal)}label{display:block;font-weight:600;font-size:14px;margin:0 0 7px}input,select,textarea,button{font:inherit}input,select,textarea{width:100%;background:#fff;border:1px solid #98b69f;border-radius:6px;padding:10px 12px;color:#294536;min-height:46px}textarea{min-height:110px;resize:vertical}input:focus,select:focus,textarea:focus{outline:3px solid #6fa37a45;outline-offset:1px;border-color:var(--teal)}button{border:0;border-radius:6px;padding:10px 18px;background:var(--navy);color:white;cursor:pointer;font-weight:600;min-height:44px}button:hover{filter:brightness(1.1)}button:disabled{opacity:.55;cursor:wait}.secondary{background:#e4f2e7;color:#294536}.danger{background:#fff0ef;color:#a5332c}.agree{background:var(--teal)}.full{width:100%}.field{margin-bottom:20px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.tabs{display:flex;gap:4px;border-bottom:1px solid #c5ddcb;margin:24px 0}.tabs button{background:transparent;color:#536b5b;border-radius:0;padding:12px 20px;border-bottom:3px solid transparent}.tabs button.active{color:var(--navy);border-bottom-color:var(--teal)}.topline{display:flex;justify-content:space-between;align-items:center;gap:18px}.summary{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}.stat{flex:1;min-width:160px;background:#fff;border:1px solid #d3e6d7;padding:16px 22px;border-radius:8px}.stat strong{display:block;font-size:28px;color:var(--navy)}.list{display:grid;gap:16px}.change{border-left:4px solid #98b69f}.change.pending{border-left-color:#c99727}.change.approved{border-left-color:var(--teal)}.badge{font-size:14px;font-weight:600;padding:4px 10px;border-radius:4px;background:#eaf4ec;display:inline-block}.badge.good{background:#d8eddd;color:#306044}.badge.wait{background:#fff2ce;color:#7b5b05}.badge.bad{background:#ffe3df;color:#a33228}.meta{font-size:14px;color:#536b5b}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{padding:12px;text-align:left;border-bottom:1px solid #d5e6d9;vertical-align:top}th{background:#edf7ef;color:#536b5b;white-space:nowrap}.related{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.related label{background:#edf7ef;padding:8px 12px;border-radius:5px;font-weight:400}.related input{width:auto;min-height:0;margin-right:6px}.slot{border:1px solid #d2e5d7;background:#f8fcf8;padding:20px;border-radius:8px;margin:16px 0}.slot .grid{grid-template-columns:repeat(3,minmax(0,1fr))}.note{padding:12px 16px;background:#e6f3e9;border-radius:6px;font-size:14px}.empty{text-align:center;padding:45px;color:#536b5b}.error{color:#a52a22;margin-top:12px}#message{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#35664a;color:white;max-width:90vw;border-radius:8px;padding:12px 22px;display:none;z-index:9}header button{margin-left:10px;background:#ffffff20;color:white}.reports{display:grid;gap:12px}.report{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:16px;background:#edf7ef;border-radius:7px}.filter{max-width:370px;margin:0 0 20px}a{color:#2f6946}fieldset{border:0;padding:0;margin:0}legend{font-size:16px;font-weight:bold;margin-bottom:8px}@media(max-width:700px){header{height:auto;min-height:92px;padding:18px 20px;align-items:flex-start}.brand{font-size:18px}main{padding:0 16px}.panel{padding:20px}.grid,.slot .grid{grid-template-columns:1fr}.topline{align-items:flex-start;flex-direction:column}.tabs{overflow-x:auto}.tabs button{white-space:nowrap;padding:10px 13px}.login{margin:30px auto}.report{flex-direction:column;align-items:flex-start}#account{max-width:160px}.stat{min-width:110px}h1{font-size:24px}}

.slot-heading{display:flex;align-items:center;gap:20px;margin-bottom:18px}.slot-heading strong{white-space:nowrap}.slot-teacher{flex:1;max-width:500px;margin:0}.slot-teacher select{margin-top:4px}@media(max-width:700px){.slot-heading{flex-direction:column;align-items:stretch;gap:12px}.slot-teacher{max-width:none}}

header{background:#d5edd9;color:#294536}.brand small{color:#536b5b}.mark{background:#f8fcf8;color:#35664a}header button{background:#f3faf4;color:#355c42}.brand{white-space:normal}.mark{white-space:nowrap}h1{overflow-wrap:anywhere}

.school-emblem{width:70px;height:70px;object-fit:contain;flex-shrink:0}.edit-dialog{width:min(650px,92vw);border:1px solid #c5ddcb;border-radius:12px;padding:26px;color:#294536;background:#f8fcf8}.edit-dialog::backdrop{background:#203c2b66}.edit-dialog h2{margin:0}.edit-dialog .grid{margin-top:20px}@media(max-width:700px){.school-emblem{width:56px;height:56px}.edit-dialog{padding:20px}}
