.brand[data-v-7c2491ab]{color:inherit;text-align:left;background:0 0;border:0;align-items:center;padding:0;display:flex}.brand:hover .brand-mark[data-v-7c2491ab]{background:var(--deep)}.topbar nav a[data-v-7c2491ab]{color:#65736d;font:inherit;background:0 0;border:0;align-items:center;height:100%;font-weight:600;text-decoration:none;display:flex;position:relative}.topbar nav a[data-v-7c2491ab]:hover{color:var(--green)}@media (width<=800px){.topbar nav a[data-v-7c2491ab]{text-align:center;justify-content:center;height:auto;padding:10px}}.schedule-preview-bar[data-v-524f841e]{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:14px;display:flex}.schedule-preview-bar>strong[data-v-524f841e]{color:#1d2b26;align-items:center;gap:7px;font-size:14px;display:flex}.schedule-preview-bar>strong svg[data-v-524f841e]{color:var(--green)}.schedule-preview-bar>strong small[data-v-524f841e]{color:var(--muted);font-size:11px;font-weight:500}.schedule-preview-bar .legend[data-v-524f841e]{margin-left:0}.legend i.add[data-v-524f841e]{background:var(--green);border:0}.legend i.conflict[data-v-524f841e]{background:#f3b8ac;border:0}.schedule-preview-empty[data-v-524f841e]{color:var(--muted);align-items:center;gap:7px;margin:6px 0 0;font-size:13px;display:flex}.schedule-preview-empty.error[data-v-524f841e]{color:#a64231}.preview-schedule-layout[data-v-524f841e]{grid-template-columns:250px 1fr;align-items:start;gap:14px;display:grid}.preview-room-col[data-v-524f841e]{flex-direction:column;gap:12px;min-width:0;display:flex;position:sticky;top:88px}.preview-schedule-layout .room-meta[data-v-524f841e]{border:1px solid var(--line);background:#fff;border-radius:16px}.preview-room-col[data-v-524f841e] .tool-submit{align-self:stretch;width:100%}.preview-week-area[data-v-524f841e],.preview-week-list[data-v-524f841e]{min-width:0}.preview-week-list .week-card[data-v-524f841e]{border-radius:12px}.schedule-line .cell[data-v-524f841e]{border:1px solid #0000;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;min-width:0;height:39px;display:flex}.schedule-line .cell span[data-v-524f841e]{white-space:nowrap;text-overflow:ellipsis;max-width:94%;font-size:12px;font-weight:600;overflow:hidden}.schedule-line .cell small[data-v-524f841e]{opacity:.75;white-space:normal;text-align:center;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;max-width:92%;font-size:10px;line-height:1.15;display:-webkit-box;overflow:hidden}.schedule-line .cell.free[data-v-524f841e]{color:#21634e;background:#e3f2ec;border-color:#c4e1d5}.schedule-line .cell.busy[data-v-524f841e]{color:#a66b17;background:#fff0d7;border-color:#f3dcae}.schedule-line .cell.add[data-v-524f841e]{background:var(--green);color:#fff;border-color:var(--green);box-shadow:0 0 0 2px #cce3da}.schedule-line .cell.conflict[data-v-524f841e]{color:#a64231;background:#fff0ed;border-color:#f0c4bb}.schedule-line .cell.clickable[data-v-524f841e]{cursor:pointer;transition:all .15s}.schedule-line .cell.busy.clickable[data-v-524f841e]:hover{color:#8a560f;background:#ffe6bd}.schedule-line .cell.conflict.clickable[data-v-524f841e]:hover{background:#ffe4dd}@media (width<=900px){.preview-schedule-layout[data-v-524f841e]{grid-template-columns:1fr}.preview-room-col[data-v-524f841e]{position:static}}:root{color:#182521;font-synthesis:none;scrollbar-gutter:stable;--green:#0d5b45;--deep:#083d30;--mint:#dcefe8;--line:#dfe5e1;--muted:#6f7d77;--white:#fff;background:#f5f7f5;font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{flex-direction:column;min-height:100vh;display:flex}.topbar{border-bottom:1px solid var(--line);z-index:20;background:#fff;align-items:center;height:72px;padding:0 clamp(20px,4vw,68px);display:flex;position:sticky;top:0}.brand-mark{background:var(--green);color:#fff;border-radius:12px;place-items:center;width:42px;height:42px;display:grid}.brand-copy{flex-direction:column;min-width:230px;margin-left:12px;display:flex}.brand-copy strong{font-size:16px}.brand-copy span{color:var(--muted);letter-spacing:.08em;margin-top:2px;font-size:12px}.topbar nav{gap:34px;height:100%;margin-left:auto;display:flex}.topbar nav button{color:#65736d;background:0 0;border:0;font-weight:600;position:relative}.topbar nav button.active{color:var(--green)}.topbar nav button.active:after{content:"";background:var(--green);border-radius:3px;height:3px;position:absolute;bottom:0;left:5px;right:5px}.top-actions{border-left:1px solid var(--line);align-items:center;gap:9px;margin-left:38px;padding-left:28px;display:flex}.icon-btn{background:0 0;border:0;border-radius:10px;place-items:center;width:38px;height:38px;display:grid;position:relative}.icon-btn:hover{background:#f1f5f3}.icon-btn i{background:#e25b42;border-radius:50%;width:6px;height:6px;position:absolute;top:7px;right:7px}.avatar{width:34px;height:34px;color:var(--green);background:#e7efe9;border-radius:50%;place-items:center;font-weight:700;display:grid}.user-name{font-size:14px;font-weight:600}.login-btn,.session-btn{color:var(--green);background:#f5faf8;border:1px solid #b9d1c7;border-radius:9px;align-items:center;gap:6px;padding:8px 12px;font-size:13px;font-weight:600;display:flex}.session-btn{color:#6e7a75;background:0 0;border:0;padding:7px}.menu-btn{background:0 0;border:0;margin-left:auto;display:none}main{flex:1}.hero{background:linear-gradient(135deg,#edf4ef 0%,#f5f7f5 55%,#e6f1ea 100%);border-bottom:1px solid #dce5df;justify-content:space-between;align-items:center;gap:50px;min-height:318px;padding:54px max(5vw,50vw - 690px);display:flex;position:relative;overflow:hidden}.hero:after{content:"";border:1px solid #0d5b451a;border-radius:50%;width:380px;height:380px;position:absolute;top:-170px;right:-110px;box-shadow:0 0 0 50px #0d5b4506,0 0 0 100px #0d5b4505}.eyebrow,.kicker{color:var(--green);letter-spacing:.12em;align-items:center;gap:7px;font-size:12px;font-weight:700;display:flex}.hero h1{letter-spacing:-.045em;margin:14px 0 18px;font-size:clamp(34px,4vw,54px);line-height:1.13}.hero h1 em{color:var(--green);font-family:Songti SC,STSong,serif}.hero>div>p{color:#66756f;margin:0;font-size:15px}.hero-stats{z-index:1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffd1;border:1px solid #ffffffe6;border-radius:20px;grid-template-columns:repeat(3,1fr);padding:22px;display:grid;position:relative;box-shadow:0 18px 60px #23483b1a}.hero-stats>div{border-right:1px solid var(--line);grid-template-rows:auto auto;grid-template-columns:38px auto;column-gap:12px;min-width:132px;padding:7px 22px;display:grid}.hero-stats>div:last-child{border:0}.stat-icon{border-radius:12px;grid-row:1/3;place-items:center;width:40px;height:40px;display:grid}.stat-icon svg{width:19px}.stat-icon.mint{color:#26775e;background:#dbf1e8}.stat-icon.amber{color:#a66b17;background:#fff0d7}.stat-icon.lilac{color:#7059a1;background:#eee8fb}.hero-stats strong{font-size:25px;line-height:1}.hero-stats small{color:var(--muted);margin-top:5px;font-size:12px}.content-section{width:min(1440px,92vw);margin:0 auto;padding:44px 0 70px}.section-heading{justify-content:space-between;align-items:flex-end;margin-bottom:25px;display:flex}.section-heading h2,.panel h2{margin:6px 0 3px;font-size:24px}.section-heading p,.panel-head p{color:var(--muted);margin:0;font-size:13px}.week-switch{border:1px solid var(--line);background:#fff;border-radius:12px;align-items:center;padding:5px;display:flex;position:relative}.week-switch button{color:#53615b;background:#f3f6f4;border:0;border-radius:8px;place-items:center;width:34px;height:34px;display:grid}.week-switch .week-current{width:auto;height:auto;color:inherit;background:0 0;border-radius:8px;align-items:center;gap:8px;padding:5px 14px;font-size:13px;display:flex}.week-switch .week-current:hover{background:#f3f6f4}.week-switch b{color:var(--green);background:#e7f2ed;border-radius:6px;margin-left:6px;padding:4px 7px}.week-caret{color:#8a968f;transition:transform .15s}.week-caret.open{transform:rotate(180deg)}.week-pop-backdrop{z-index:30;position:fixed;inset:0}.week-pop{z-index:31;border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px;animation:.15s weekpop;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 18px 50px #083d302e}@keyframes weekpop{0%{opacity:0;transform:translate(-50%)translateY(-5px)}}.week-pop-grid{grid-template-columns:repeat(6,1fr);gap:6px;display:grid}.week-pop-grid button{border:1px solid var(--line);color:#46534d;background:#fff;border-radius:8px;place-items:center;width:40px;height:36px;font-size:13px;font-weight:600;transition:all .12s;display:grid;position:relative}.week-pop-grid button:hover{color:var(--green);background:#eef6f2;border-color:#9bc8b6}.week-pop-grid button.current:not(.active){color:var(--green);border-color:#9bc8b6}.week-pop-grid button.current:after{content:"";background:var(--green);border-radius:50%;width:5px;height:5px;position:absolute;top:5px;right:5px}.week-pop-grid button.active{background:var(--green);border-color:var(--green);color:#fff}.week-pop-grid button.active:after{background:#fff}.filters{align-items:center;gap:10px;margin-bottom:16px;display:flex}.filters label{border:1px solid var(--line);color:#829089;background:#fff;border-radius:10px;align-items:center;width:270px;height:42px;padding:0 13px;display:flex}.filters input{border:0;outline:0;width:100%;margin-left:8px;font-size:13px}.filters select,.my-bookings{border:1px solid var(--line);color:#4c5a54;background:#fff;border-radius:10px;height:42px;padding:0 14px;font-size:13px}.my-bookings{color:var(--green);align-items:center;gap:7px;font-weight:600;display:flex}.legend{color:var(--muted);gap:18px;margin-left:auto;font-size:12px;display:flex}.legend span{align-items:center;gap:6px;display:flex}.legend i{border-radius:3px;width:9px;height:9px}.legend i.free{background:#cdeade;border:1px solid #84bba6}.legend i.busy{background:#fff0d7;border:1px solid #e7c684}.legend i.course{background:#e5effb;border:1px solid #b9d0ee}.legend i.conflict{background:#f8e9e6;border:1px solid #e0b6ac}.room-list{flex-direction:column;gap:12px;display:flex}.room-row{border:1px solid var(--line);background:#fff;border-radius:16px;grid-template-columns:275px 1fr;transition:all .2s;display:grid;overflow:hidden}.room-row:hover{border-color:#cbd9d2;box-shadow:0 10px 30px #22413512}.room-meta{border-right:1px solid var(--line);align-items:flex-start;gap:16px;padding:24px;display:flex}.room-number{color:#a8b8b0;font-family:Times New Roman,serif;font-size:23px}.room-meta h3{margin:0 0 6px;font-size:19px}.room-meta p{color:var(--muted);align-items:center;gap:4px;margin:0;font-size:12px;display:flex}.room-tags{gap:6px;margin-top:13px;display:flex}.room-tags span{color:#5f6e67;background:#f0f4f2;border-radius:6px;align-items:center;gap:4px;padding:4px 7px;font-size:12px;display:flex}.schedule{min-width:0;padding:10px 12px}.schedule-head,.schedule-line{grid-template-columns:48px repeat(6,1fr);gap:5px;display:grid}.schedule-head>span{flex-direction:column;align-items:center;padding:4px;display:flex}.schedule-head b{font-size:12px}.schedule-head small{color:#98a49f;font-size:12px}.period-label{color:#7c8983;place-items:center;font-size:12px;display:grid!important}.schedule-line{margin-top:5px}.schedule-line button{border:0;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;min-width:0;height:39px;transition:all .15s;display:flex}.schedule-line button span{white-space:nowrap;text-overflow:ellipsis;max-width:94%;font-size:12px;font-weight:600;overflow:hidden}.schedule-line button.busy span{white-space:normal;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;line-height:1.25;display:-webkit-box}.schedule-line button small{opacity:.75;white-space:nowrap;max-width:90%;font-size:12px;overflow:hidden}.schedule-line button.free{color:#21634e;background:#e3f2ec;border:1px solid #c4e1d5}.schedule-line button.free:hover{background:var(--green);color:#fff;transform:translateY(-1px)}.schedule-line button.busy{color:#a66b17;background:#fff0d7;border:1px solid #f3dcae}.schedule-line button.busy:hover{color:#8a560f;background:#ffe6bd}.schedule-line button.busy.course{color:#3c6fa3;background:#e9f0fa;border-color:#c9daf1}.schedule-line button.busy.course:hover{color:#2f5586;background:#dbe8fa}.schedule-line button.busy.conflict,.schedule-line button.busy.course.conflict{color:#a94c3c;background:#f8e9e6;border-color:#e0b6ac}.schedule-line button.busy.conflict:hover{color:#8f3b2d;background:#f3ddd8}.schedule-line button.free.past,.schedule-line button.free.past:hover{cursor:not-allowed;color:#9aa6a1;background:#f1f3f2;border-color:#e3e8e5;transform:none}.overlay.slot-detail-overlay{justify-content:center;align-items:center}.slot-detail{background:#fff;border-radius:16px;width:min(420px,100vw - 32px);padding:24px;animation:.22s slide;box-shadow:0 24px 70px #083d3040}.slot-detail-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;padding-bottom:16px;display:flex}.slot-detail-head h3{margin:4px 0 0;font-size:19px}.slot-conflict{color:#a94c3c;background:#f8e9e6;border:1px solid #e9cfc9;border-radius:10px;align-items:flex-start;gap:10px;margin-top:16px;padding:12px 14px;display:flex}.slot-conflict>svg{flex:none;margin-top:1px}.slot-conflict div{flex-direction:column;gap:3px;min-width:0;display:flex}.slot-conflict strong{font-size:13px}.slot-conflict span{color:#8f4437;font-size:12px}.slot-conflict em{color:#a0736a;text-overflow:ellipsis;font-size:12px;font-style:normal;overflow:hidden}.slot-detail-list{margin:0;padding:18px 0 0;list-style:none}.slot-detail-list li{grid-template-columns:22px 64px 1fr;align-items:center;gap:10px;padding:9px 0;display:grid}.slot-detail-list li svg{color:var(--green)}.slot-detail-list span{color:var(--muted);font-size:12px}.slot-detail-list strong{color:#1d2b26;font-size:13px}.empty{text-align:center;color:#7c8983;padding:70px}.overlay{z-index:40;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0c1d1773;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:#fff;width:min(480px,100%);padding:32px;animation:.25s slide;overflow:auto;box-shadow:-20px 0 60px #0000001f}@keyframes slide{0%{opacity:.4;transform:translate(50px)}}.drawer-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding-bottom:20px;display:flex}.drawer-head h2{margin:5px 0 0}.chosen-slot{color:var(--green);background:#eaf4ef;border-radius:12px;gap:14px;margin:24px 0;padding:16px;display:flex}.chosen-slot>svg{background:#fff;border-radius:9px;width:38px;height:38px;padding:8px}.chosen-slot div{flex-direction:column;display:flex}.chosen-slot span{color:#5c766c;margin-top:3px;font-size:12px}.drawer form>label,.form-grid label{flex-direction:column;gap:7px;margin-top:18px;font-size:13px;font-weight:600;display:flex}.drawer input,.drawer textarea{border:1px solid var(--line);border-radius:9px;outline:none;padding:11px}.drawer input:focus,.drawer textarea:focus{border-color:#70a58f;box-shadow:0 0 0 3px #e5f2ed}.drawer textarea{resize:vertical;height:88px}.form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.drawer label.checkline{color:#65736d;flex-direction:row;align-items:center;font-size:12px;font-weight:400}.primary{background:var(--green);color:#fff;border:0;border-radius:10px;padding:12px 20px;font-weight:600}.secondary{color:#53615b;border:1px solid var(--line);background:#fff;border-radius:10px;padding:12px 20px;font-weight:600}.secondary:hover{color:var(--green);background:#f3f6f4;border-color:#cbd9d2}.secondary:disabled{opacity:.55;cursor:not-allowed;background:#f7f9f8}.primary.submit{justify-content:center;align-items:center;gap:6px;width:100%;margin-top:24px;display:flex}.success{text-align:center;padding:90px 20px}.success>span{width:64px;height:64px;color:var(--green);background:#dff1e8;border-radius:50%;place-items:center;margin:auto;display:grid}.success p{color:var(--muted);margin-bottom:28px;font-size:13px;line-height:1.8}footer{color:#9bb2a9;background:#0b3027;justify-content:space-between;align-items:center;height:64px;padding:0 max(5vw,50vw - 690px);font-size:12px;display:flex}.admin-layout{flex:1;grid-template-columns:220px 1fr;min-height:calc(100vh - 136px);display:grid}.admin-side{border-right:1px solid var(--line);background:#f9faf9;flex-direction:column;align-self:start;gap:5px;height:calc(100vh - 136px);padding:28px 14px;display:flex;position:sticky;top:72px;overflow-y:auto}.admin-label{letter-spacing:.14em;color:#9aa59f;padding:0 14px 12px;font-size:12px;font-weight:700}.admin-side button{color:#65716c;text-align:left;background:0 0;border:0;border-radius:9px;align-items:center;gap:11px;padding:11px 14px;display:flex}.admin-side button:hover,.admin-side button.active{color:var(--green);background:#e5f0eb;font-weight:600}.admin-side button b{color:#fff;background:#d95c43;border-radius:50%;place-items:center;width:20px;height:20px;margin-left:auto;font-size:12px;display:grid}.side-bottom{border-top:1px solid var(--line);flex-direction:column;margin-top:auto;padding-top:10px;display:flex}.admin-main{min-width:0;padding:38px clamp(24px,3vw,50px)}.admin-title{justify-content:space-between;align-items:flex-end;display:flex}.admin-title h1{margin:5px 0;font-size:30px}.admin-title p{color:var(--muted);margin:0;font-size:13px}.date-card{border:1px solid var(--line);background:#fff;border-radius:11px;grid-template-rows:auto auto;grid-template-columns:32px auto;column-gap:8px;padding:11px 16px;display:grid}.date-card svg{color:var(--green);grid-row:1/3}.date-card b{font-size:12px}.date-card small{color:var(--muted);font-size:12px}.admin-stats{grid-template-columns:repeat(4,1fr);gap:14px;margin:26px 0;display:grid}.admin-stat{border:1px solid var(--line);background:#fff;border-radius:14px;align-items:flex-start;gap:14px;padding:20px;display:flex}.admin-stat .stat-icon.orange{color:#bd652e;background:#fff0e6}.admin-stat .stat-icon.blue{color:#3c6fa3;background:#e5effb}.admin-stat .stat-icon.green{color:#24705a;background:#e1f1e9}.admin-stat .stat-icon.purple{color:#6854a2;background:#eeeafb}.admin-stat div{flex-direction:column;display:flex}.admin-stat small{color:var(--muted);font-size:12px}.admin-stat strong{margin:2px 0;font-size:25px}.admin-stat p{color:#84908b;margin:0;font-size:12px}.admin-grid{grid-template-columns:minmax(600px,1.75fr) minmax(270px,.8fr);gap:16px;display:grid}.panel{border:1px solid var(--line);background:#fff;border-radius:15px}.panel-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:20px 22px;display:flex}.panel h2{margin:0 0 3px;font-size:17px}.text-btn{color:var(--green);background:0 0;border:0;align-items:center;font-size:12px;display:flex}.request{border-bottom:1px solid #edf0ee;gap:12px;padding:18px 22px;display:flex}.request:last-child{border:0}.request-avatar{width:38px;height:38px;color:var(--green);background:#e5f0eb;border-radius:10px;flex:none;place-items:center;font-weight:700;display:grid}.request-main{flex:1;min-width:0}.request-main>div:first-child{align-items:center;gap:9px;display:flex}.request-main strong{font-size:13px}.request-main small{color:#929d98;font-size:12px}.request-main p{color:#48554f;margin:7px 0;font-size:12px}.request-meta{color:#78857f;flex-wrap:wrap;gap:10px;font-size:12px;display:flex}.request-meta span{align-items:center;gap:3px;display:flex}.request-meta svg{width:11px;height:11px}.request-actions{flex-direction:column;justify-content:center;gap:6px;display:flex}.request-actions button{border:0;border-radius:7px;align-items:center;gap:4px;padding:6px 10px;font-size:12px;display:flex}.request-actions svg{width:12px}.approve{color:#186246;background:#dff0e8}.reject{color:#a94c3c;background:#f6e8e5}.status{border-radius:7px;padding:6px 10px;font-size:12px}.status.approved{color:#186246;background:#dff0e8}.status.rejected{color:#a94c3c;background:#f6e8e5}.dashboard-error{color:#a94c3c;background:#f8e9e6;border:1px solid #e9cfc9;border-radius:10px;margin:0 0 18px;padding:12px 16px;font-size:13px}.highlights{grid-template-columns:repeat(4,1fr);gap:14px;margin:0 0 26px;display:grid}.highlight{border:1px solid var(--line);background:#fff;border-radius:14px;align-items:center;gap:12px;padding:15px 18px;display:flex}.hl-icon{border-radius:11px;flex:none;place-items:center;width:40px;height:40px;display:grid}.hl-icon svg{width:19px}.hl-icon.gold{color:#b07d18;background:#fdf1d8}.hl-icon.blue{color:#3c6fa3;background:#e5effb}.hl-icon.green{color:#24705a;background:#e1f1e9}.hl-icon.purple{color:#6854a2;background:#eeeafb}.highlight>div{flex-direction:column;min-width:0;display:flex}.highlight small{color:var(--muted);font-size:12px}.highlight strong{white-space:nowrap;text-overflow:ellipsis;margin:2px 0;font-size:17px;overflow:hidden}.hl-sub{color:#94a09a;font-size:12px}.timeline-legend{color:var(--muted);align-items:center;gap:14px;font-size:12px;display:flex}.timeline-legend span{align-items:center;gap:5px;display:flex}.timeline-legend i.seg{border-radius:3px;width:11px;height:11px}.timeline-legend i.seg.p0{background:#fbe8c8;border:1px solid #efd3a2}.timeline-legend i.seg.p1{background:#dbe8fa;border:1px solid #b9d0ee}.timeline-legend i.seg.p2{background:#e7ddf8;border:1px solid #cbb8ee}.timeline-legend .now-tag{color:#c2382b}.timeline-legend .now-tag i{background:#e1483b;border-radius:2px;width:3px;height:13px}.timeline-scroll{padding:18px 22px 22px;overflow-x:auto}.timeline-body{min-width:720px;position:relative}.tl-head{border-bottom:1px solid var(--line);height:34px;margin-bottom:8px;margin-left:160px;position:relative}.tl-period{border-radius:8px;flex-direction:column;justify-content:center;align-items:center;height:30px;line-height:1.15;display:flex;position:absolute;top:0;overflow:hidden}.tl-period b{font-size:12px;font-weight:700}.tl-period em{opacity:.75;font-size:12px;font-style:normal}.tl-period.p0{color:#9a6a1c;background:#fdf3e2}.tl-period.p1{color:#33608f;background:#eef4fb}.tl-period.p2{color:#5a3f93;background:#f3edfb}.tl-tick{color:#aab4af;font-size:12px;position:absolute;top:32px;transform:translate(-50%)}.tl-row{align-items:stretch;height:52px;display:flex}.tl-row+.tl-row{border-top:1px solid #f0f3f1}.tl-room{flex-direction:column;flex:0 0 160px;justify-content:center;min-width:0;padding-right:14px;display:flex}.tl-room strong{white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.tl-room small{color:#94a09a;white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.tl-track{flex:1;position:relative}.tl-seg{border-radius:7px;flex-direction:column;justify-content:center;padding:0 9px;display:flex;position:absolute;top:8px;bottom:8px;overflow:hidden}.tl-seg.free{background:repeating-linear-gradient(45deg,#fafbfa,#fafbfa 6px,#f2f5f3 6px 12px);border:1px dashed #e0e5e1}.tl-seg.busy{box-shadow:0 1px 3px #28463a14}.tl-seg.busy.p0{color:#8a5e16;background:#fbe8c8;border:1px solid #efd3a2}.tl-seg.busy.p1{color:#2f5586;background:#dbe8fa;border:1px solid #b9d0ee}.tl-seg.busy.p2{color:#553a8e;background:#e7ddf8;border:1px solid #cbb8ee}.tl-seg.busy b{white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;line-height:1.25;overflow:hidden}.tl-seg.busy em{opacity:.82;white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:3px;margin-top:1px;font-size:12px;font-style:normal;line-height:1.25;display:flex;overflow:hidden}.tl-seg.busy em svg{flex:none}.tl-now{z-index:3;pointer-events:none;background:#e1483b;width:2px;position:absolute;top:0;bottom:0}.tl-now:before{content:"";background:#e1483b;border-radius:50%;width:8px;height:8px;position:absolute;top:28px;left:50%;transform:translate(-50%);box-shadow:0 0 0 3px #e1483b2e}.tl-now-label{color:#fff;white-space:nowrap;background:#e1483b;border-radius:4px;padding:1px 5px;font-size:12px;font-weight:600;position:absolute;top:2px;left:50%;transform:translate(-50%)}.live{color:#3b755e;font-size:12px}.live i{background:#33a270;border-radius:50%;width:6px;height:6px;margin-right:4px;display:inline-block;box-shadow:0 0 0 3px #dff2ea}.today-room{border-bottom:1px solid #edf0ee;align-items:center;gap:10px;padding:14px 18px;display:flex}.today-room:last-child{border:0}.room-state{border-radius:9px;place-items:center;width:34px;height:34px;display:grid}.room-state svg{width:16px}.room-state.using{color:#4c6e9f;background:#e9effa}.room-state.idle{color:#31745d;background:#e4f1eb}.today-room div{flex-direction:column;flex:1;display:flex}.today-room strong{font-size:12px}.today-room small{color:#89958f;white-space:nowrap;text-overflow:ellipsis;max-width:150px;margin-top:2px;font-size:12px;overflow:hidden}.today-room>span:last-child{color:#7e8984;font-size:12px}.login-overlay{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#08231b94;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.login-card{background:#fff;border-radius:20px;width:min(420px,100%);padding:34px;animation:.2s login-in;position:relative;box-shadow:0 24px 80px #0003}.login-close{color:#63716b;background:#f1f4f2;border:0;border-radius:9px;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:18px;right:18px}.login-close svg{width:18px}.login-mark{background:var(--green);color:#fff;border-radius:14px;place-items:center;width:48px;height:48px;margin-bottom:20px;display:grid}.login-card h2{margin:7px 0;font-size:27px}.login-card>p{color:var(--muted);margin:0 0 24px;font-size:13px}.login-card form label{flex-direction:column;gap:7px;margin-top:14px;font-size:13px;font-weight:600;display:flex}.login-card form label span{border:1px solid var(--line);color:#849089;border-radius:10px;align-items:center;height:44px;padding:0 12px;display:flex}.login-card form label span:focus-within{border-color:#70a58f;box-shadow:0 0 0 3px #e5f2ed}.login-card form svg{width:17px}.login-card input{border:0;outline:0;flex:1;min-width:0;margin-left:9px}.login-card form>.primary{width:100%;margin-top:20px}.login-card>small{text-align:center;color:#8a9690;margin-top:18px;display:block}.login-error{background:#fbefec;border-radius:8px;padding:9px 11px;color:#b34e3c!important;margin:12px 0 0!important;font-size:12px!important}@keyframes login-in{0%{opacity:.5;transform:translateY(12px)}}.guide-page{background:#f6f8f6}.guide-hero{border-bottom:1px solid var(--line);background:linear-gradient(135deg,#e7f2ed,#f7f9f7);align-items:center;gap:25px;min-height:250px;padding:50px max(5vw,50vw - 590px);display:flex}.guide-icon{background:var(--green);color:#fff;border-radius:22px;place-items:center;width:76px;height:76px;display:grid;box-shadow:0 14px 35px #0d5b452e}.guide-icon svg{width:36px;height:36px}.guide-hero h1{margin:6px 0;font-size:40px}.guide-hero p{color:var(--muted);margin:0}.guide-content{width:min(1180px,90vw);margin:0 auto;padding:52px 0 80px}.guide-steps{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.guide-steps article{border:1px solid var(--line);background:#fff;border-radius:16px;padding:25px;position:relative}.guide-steps article>svg{width:24px;color:var(--green);margin-top:22px}.step-number{color:#d5dfda;font-family:Georgia,serif;font-size:24px;position:absolute;top:16px;right:20px}.guide-steps h2{margin:13px 0 7px;font-size:17px}.guide-steps p,.guide-note p{color:var(--muted);margin:0;font-size:13px;line-height:1.75}.guide-note{color:var(--green);background:#e5f1ec;border:1px solid #cde1d8;border-radius:16px;gap:15px;margin-top:20px;padding:22px 25px;display:flex}.guide-note>svg{flex:none}.guide-note h2{margin:0 0 5px;font-size:16px}.schedule-head,.schedule-line{grid-template-columns:48px repeat(7,1fr)}.schedule-line button.free.selected{background:var(--green);border-color:var(--green);color:#fff;box-shadow:0 0 0 2px #cce3da}.selection-bar{z-index:18;background:#fff;border:1px solid #cbdad3;border-radius:16px;align-items:center;gap:12px;width:min(660px,100vw - 32px);padding:12px 14px;display:flex;position:fixed;bottom:84px;left:50%;transform:translate(-50%);box-shadow:0 16px 45px #083d3033}.selection-bar>div{color:var(--green);flex:1;align-items:center;gap:10px;display:flex}.selection-bar>div>svg{width:23px}.selection-bar span{flex-direction:column;display:flex}.selection-bar strong{font-size:13px}.selection-bar small{color:var(--muted);margin-top:2px;font-size:12px}.clear-selection{color:#6c7973;background:0 0;border:0;padding:9px}.chosen-slots{background:#f1f7f4;border-radius:13px;margin:22px 0;padding:15px}.selection-title{color:var(--green);align-items:center;gap:9px;padding:1px 2px 10px;display:flex}.selection-title svg{width:20px}.chosen-slots .chosen-slot{background:#fff;border:1px solid #dce8e3;border-radius:9px;margin:6px 0;padding:11px 13px}.chosen-slots .chosen-slot span,.chosen-slots .chosen-slot strong{font-size:12px}.approval-panel{margin-top:26px;overflow:hidden}.approval-table-wrap{overflow-x:auto}.approval-table{table-layout:fixed;border-collapse:collapse;width:100%;min-width:1290px;font-size:12px}.approval-table th{color:#617069;letter-spacing:.02em;text-align:left;white-space:nowrap;border-bottom:1px solid var(--line);background:#f4f7f5;height:44px;padding:0 10px;font-size:12px}.approval-table th:first-child{width:150px}.approval-table th:nth-child(2){width:86px}.approval-table th:nth-child(3){width:112px}.approval-table th:nth-child(4){width:72px}.approval-table th:nth-child(5){text-align:center;width:76px}.approval-table th:nth-child(6){width:220px}.approval-table th:nth-child(7){width:150px}.approval-table th:nth-child(8){width:72px}.approval-table th:nth-child(9){width:82px}.approval-table th:nth-child(10){width:284px}.approval-table td{color:#46534d;vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #edf0ee;height:58px;padding:0 10px;overflow:hidden}.approval-table tbody tr:last-child td{border-bottom:0}.approval-table tbody tr:hover{background:#fafcfb}.request-id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:#718078!important}.nowrap{white-space:nowrap}.people-count{text-align:center}.cell-link{width:100%;color:inherit;text-align:left;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:0;padding:0;display:block;overflow:hidden}.cell-link:hover{color:var(--green);text-underline-offset:3px;text-decoration:underline}.cell-link.strong{color:#26342f;font-weight:600}.cell-link.mono{color:#718078;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.request-detail,.request-note{min-width:0;line-height:1}.approval-actions{white-space:nowrap;flex-shrink:0;align-items:center;gap:5px;display:flex}.approval-actions button{border:0;border-radius:7px;flex:none;align-items:center;gap:4px;height:30px;padding:0 9px;font-size:12px;display:flex}.approval-actions svg{width:12px;height:12px}.approval-actions .view-detail{color:#476790;background:#e8eef8}.approval-actions .view-detail:hover{background:#dce7f7}.approval-actions .delete{color:#56625c;background:#eef0ef}.approval-actions .delete:hover{color:#a94c3c;background:#f6e5e2}.approval-empty{text-align:center!important;color:#89958f!important;height:120px!important;padding:48px!important}.user-table{min-width:0}.schedule-common-panel{margin-top:22px}.schedule-common-panel,.schedule-rule-form-panel{margin-bottom:15px}.schedule-tabs{border-bottom:1px solid var(--line);gap:4px;padding:12px 22px 0;display:flex}.schedule-tabs button{color:#65736d;background:0 0;border:0;border-radius:8px 8px 0 0;padding:11px 18px;font-size:15px;font-weight:600;position:relative}.schedule-tabs button:hover{color:var(--green);background:#f3f8f6}.schedule-tabs button.active{color:var(--green)}.schedule-tabs button.active:after{content:"";background:var(--green);border-radius:3px;height:3px;position:absolute;bottom:-1px;left:12px;right:12px}.schedule-tab-desc{color:var(--muted);margin:0;font-size:13px}.schedule-common-form{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding:20px 22px;display:grid}.schedule-common-form .remarks-field{grid-column:span 2}.schedule-tool-form{flex-direction:column;gap:16px;padding:20px 22px;display:flex}.schedule-tool-form .tool-fields,.schedule-tool-form .tool-row{align-items:end;gap:16px;display:grid}.schedule-tool-form .tool-fields{grid-template-columns:1fr}.weekly-main-row,.weekly-repeat-row{grid-template-columns:repeat(3,minmax(0,1fr))}.daily-main-row{grid-template-columns:repeat(2,minmax(0,1fr))}.daily-range-row{grid-template-columns:repeat(4,minmax(0,1fr))}.schedule-tool-form .tool-submit{white-space:nowrap;align-self:flex-start;height:46px;padding:0 28px}.schedule-tool-form .schedule-form-error{margin-top:0}.schedule-common-form label,.schedule-tool-form label,.week-select-field{color:#53615b;flex-direction:column;gap:7px;font-size:12px;font-weight:600;display:flex}.schedule-common-form input,.schedule-common-form select,.schedule-tool-form input,.schedule-tool-form select{border:1px solid var(--line);color:#182521;background:#fbfcfb;border-radius:9px;outline:0;min-width:0;height:42px;padding:0 11px}.schedule-common-form input:focus,.schedule-common-form select:focus,.schedule-tool-form input:focus,.schedule-tool-form select:focus{border-color:var(--green);box-shadow:0 0 0 3px #e5f2ed}.week-select-field{min-width:0;position:relative}.week-select-field .week-current{border:1px solid var(--line);color:#182521;background:#fbfcfb;border-radius:9px;justify-content:flex-start;align-items:center;gap:8px;width:100%;height:42px;padding:0 11px;display:flex}.week-select-field .week-current:hover{background:#f3f6f4}.week-select-field .week-current svg:first-child{color:var(--green)}.week-select-field .week-current b{color:var(--green);background:#e7f2ed;border-radius:6px;margin-left:0;padding:4px 7px}.week-select-field .week-caret{color:#8a968f;margin-left:auto;transition:transform .15s}.week-select-field .week-caret.open{transform:rotate(180deg)}.week-switch .week-select-field{color:inherit;gap:0;font-size:13px;font-weight:400;display:block}.week-switch .week-select-field .week-current{width:auto;height:auto;color:inherit;background:0 0;border:0;border-radius:8px;padding:5px 14px;font-size:13px}.week-switch .week-select-field .week-current:hover{background:#f3f6f4}.week-switch .week-select-field .week-caret{margin-left:0}.schedule-form-error{color:#a64231;background:#fff0ed;border-radius:8px;grid-column:1/-1;margin:0;padding:10px 12px;font-size:13px}.schedule-form-notice{color:var(--green);background:#e7f3ee;border-radius:8px;grid-column:1/-1;margin:0;padding:10px 12px;font-size:13px}.settings-form{width:min(760px,100%);margin-top:26px;padding:26px}.settings-section-head{align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.settings-section-head>svg{width:20px;height:20px;color:var(--green);margin-top:2px}.settings-section-head h2{margin:0 0 4px;font-size:16px}.settings-section-head p{color:var(--muted);margin:0;font-size:12px}.setting-row{grid-template-columns:180px minmax(0,1fr);align-items:center;gap:18px;margin-top:15px;display:grid}.setting-row>label{color:#46534d;font-size:13px;font-weight:600}.setting-row>input,.setting-suffix input{border:1px solid var(--line);background:#fff;border-radius:9px;outline:0;height:42px;padding:0 11px}.setting-row>input:focus,.setting-suffix input:focus{border-color:#70a58f;box-shadow:0 0 0 3px #e5f2ed}.setting-suffix{color:#68756f;align-items:center;gap:7px;font-size:12px;display:flex}.setting-suffix input{width:110px}.settings-footer{border-top:1px solid #edf0ee;justify-content:flex-end;align-items:center;gap:16px;margin-top:28px;padding-top:20px;display:flex}.settings-footer .primary{align-items:center;gap:7px;display:flex}.settings-footer .primary svg{width:16px;height:16px}.settings-saved{color:#24705a;align-items:center;gap:5px;font-size:12px;display:flex}.settings-saved svg{width:15px;height:15px}.setting-check{color:#53615b;align-items:center;gap:8px;font-size:13px;display:flex}.setting-check input{width:17px;height:17px;accent-color:var(--green)}.setting-full-input{border:1px solid var(--line);background:#fff;border-radius:9px;outline:0;width:100%;height:42px;padding:0 11px}.setting-full-input:focus{border-color:#70a58f;box-shadow:0 0 0 3px #e5f2ed}.setting-help{color:var(--muted);margin-top:5px;font-size:12px;display:block}.settings-test{align-items:center;gap:6px;display:flex}.settings-test svg{width:15px;height:15px}.semesters-layout{grid-template-columns:minmax(0,340px) minmax(0,1fr);align-items:start;gap:20px;margin-top:26px;display:grid}.semesters-side{flex-direction:column;gap:20px;display:flex}.semesters-form{padding:22px}.semesters-form .panel-head h2{align-items:center;gap:7px;display:flex}.semesters-form .panel-head h2 svg{width:16px;height:16px;color:var(--green)}.semester-row{border:1px solid var(--line);background:#fbfcfb;border-radius:11px;margin-top:10px;padding:13px 15px}.semester-row.current{background:#f2f9f5;border-color:#8fbfa9}.semester-row-title{align-items:center;gap:9px;display:flex}.semester-fields{flex-wrap:wrap;gap:12px;margin-top:11px;display:flex}.semester-field{flex-direction:column;gap:5px;display:flex}.semester-field>span:first-child{color:#68756f;font-size:12px;font-weight:600}.semester-field input,.semester-field select{border:1px solid var(--line);background:#fff;border-radius:9px;outline:0;height:38px;padding:0 10px}.semester-field input:focus,.semester-field select:focus{border-color:#70a58f;box-shadow:0 0 0 3px #e5f2ed}.semester-field .setting-suffix input{width:76px;height:38px}.semester-current-tag{color:#24705a;background:#dcefe6;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.semester-error{color:#a05252;font-size:12px}.dashboard-content-grid{grid-template-columns:minmax(300px,.86fr) minmax(0,1.54fr);align-items:stretch;gap:16px;display:grid}.dashboard-content-grid .semester-preview{position:static}.dashboard-today-panel{min-width:0}.semester-year-row{align-items:center;gap:14px;margin-top:4px;display:flex}.semester-year-row>span:first-child{color:#46534d;font-size:13px;font-weight:600}.semester-year-row input{border:1px solid var(--line);background:#fff;border-radius:9px;outline:0;width:96px;height:40px;padding:0 11px}.semester-year-row input:focus{border-color:#70a58f;box-shadow:0 0 0 3px #e5f2ed}.semester-year-row .setting-suffix{color:#46534d;font-size:13px;font-weight:600}.semesters-layout{grid-template-columns:minmax(520px,.9fr) minmax(460px,1.3fr);align-items:stretch;gap:20px;width:100%;max-width:none;display:grid}.semesters-form{box-shadow:0 8px 24px #1f43350a}.semesters-form .panel-head{background:linear-gradient(135deg,#fbfdfc,#f4f8f6);border-radius:15px 15px 0 0;margin:-22px -22px 20px;padding:20px 22px}.semesters-form .panel-head p{color:var(--muted);margin:5px 0 0;font-size:12px;line-height:1.6}.semester-row{border-color:#e3e9e5;border-radius:13px;margin-top:12px;padding:16px;transition:border-color .2s,box-shadow .2s,background .2s}.semester-row:hover{border-color:#bfd3ca;box-shadow:0 6px 18px #1f43350d}.semester-row.current{background:linear-gradient(135deg,#f3faf6,#fbfdfc);border-color:#75ad96;box-shadow:inset 3px 0 #3c8a6e}.semester-row-title b{color:#26352f;font-size:14px}.semester-fields{grid-template-columns:minmax(0,1.5fr) minmax(0,.7fr) minmax(0,.7fr);gap:12px;margin-top:13px;display:grid}.semester-field{gap:7px;min-width:0}.semester-field>span:first-child{align-items:center;gap:5px;display:flex}.semester-field>span:first-child svg{color:#739486;width:13px;height:13px}.semester-field input,.semester-field select{color:#293832;border-color:#d9e2dd;border-radius:10px;width:100%;height:42px;transition:all .2s}.semester-field input:hover,.semester-year-row input:hover{border-color:#aac5b9}.semester-field input:focus,.semester-field select:focus{border-color:#4f9277}.semester-field .setting-suffix{gap:8px;width:100%}.semester-field .setting-suffix input{width:100%;min-width:0;height:42px}.semester-year-row{flex-direction:column;align-items:flex-start;gap:8px}.semester-year-label{color:#26352f;cursor:pointer;font-size:14px;font-weight:600}.semester-year-controls{align-items:center;gap:12px;width:100%;display:flex}.semester-year-row input{color:#293832;border-color:#d9e2dd;border-radius:10px;width:112px;height:44px;font-weight:600;transition:all .2s}.semester-year-row input:focus{border-color:#4f9277}.semester-year-row .setting-suffix{background:#f6f9f7;border:1px solid #e5ebe7;border-radius:12px;flex:1;width:auto;padding:10px 12px}.semester-year-save{white-space:nowrap;align-items:center;gap:7px;height:44px;display:flex}.semester-year-save svg{width:16px;height:16px}.semester-preview{padding:22px;box-shadow:0 8px 24px #1f43350a}.semester-preview-head{border-bottom:1px solid #edf0ee;justify-content:space-between;align-items:flex-start;gap:14px;padding-bottom:18px;display:flex}.semester-preview-head h2{margin:6px 0 3px;font-size:20px}.semester-preview-head p{color:var(--muted);margin:0;font-size:12px}.semester-preview-icon{width:28px;height:28px;color:var(--green);background:#e7f3ed;border-radius:9px;flex:none;padding:5px}.semester-preview-year{justify-content:space-between;align-items:flex-end;gap:12px;padding:18px 0 15px;display:flex}.semester-preview-year span{color:var(--muted);font-size:12px}.semester-preview-year strong{color:var(--green);letter-spacing:.02em;font-size:22px}.semester-preview-summary{border-top:1px solid #edf0ee;border-bottom:1px solid #edf0ee;grid-template-columns:repeat(3,1fr);gap:8px;padding:13px 0;display:grid}.semester-preview-summary div{border-left:2px solid #dcefe6;flex-direction:column;gap:3px;padding-left:10px;display:flex}.semester-preview-summary strong{color:#26352f;font-size:19px;line-height:1}.semester-preview-summary span{color:var(--muted);font-size:12px}.semester-preview-timeline{flex-direction:column;gap:14px;padding:20px 0 18px;display:flex}.semester-preview-term{gap:11px;min-width:0;display:flex}.semester-preview-marker{color:#5f766c;background:#edf3f0;border-radius:9px;flex:none;place-items:center;width:27px;height:27px;font-size:12px;font-weight:700;display:grid}.semester-preview-term.current .semester-preview-marker{background:var(--green);color:#fff}.semester-preview-term-content{flex:1;min-width:0;padding-top:1px}.semester-preview-term-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.semester-preview-term-head strong{color:#26352f;font-size:13px}.semester-preview-term-head span{color:var(--muted);white-space:nowrap;font-size:12px}.semester-preview-bar{background:#edf2ef;border-radius:99px;height:8px;margin:9px 0 8px;overflow:hidden}.semester-preview-bar span{border-radius:inherit;background:linear-gradient(90deg,#2f8568,#8bc5a9);height:100%;transition:width .2s;display:block}.semester-preview-meta{color:#718078;flex-wrap:wrap;gap:10px;font-size:12px;display:flex}.semester-preview-meta span{align-items:center;gap:4px;display:flex}.semester-preview-meta svg{color:#71998a;width:13px;height:13px}.semester-preview-note{color:#6f7d77;border-top:1px solid #edf0ee;align-items:center;gap:6px;padding-top:15px;font-size:12px;line-height:1.5;display:flex}.semester-preview-note svg{width:15px;height:15px;color:var(--green);flex:none}.semester-calendar-preview{width:100%;height:100%;padding:22px;position:sticky;top:98px;box-shadow:0 8px 24px #1f43350a}.semester-calendar-head{border-bottom:1px solid #edf0ee;justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:16px;display:flex}.semester-calendar-head h2{margin:6px 0 3px;font-size:20px}.semester-calendar-head p{color:var(--muted);margin:0;font-size:12px}.semester-calendar-icon{width:28px;height:28px;color:var(--green);background:#e7f3ed;border-radius:9px;flex:none;padding:5px}.semester-calendar-year{justify-content:space-between;align-items:flex-end;gap:10px;padding:16px 0 13px;display:flex}.semester-calendar-year span{color:var(--muted);font-size:12px}.semester-calendar-year strong{color:var(--green);letter-spacing:.02em;font-size:20px}.semester-calendar-legend{color:#65736d;border-top:1px solid #edf0ee;border-bottom:1px solid #edf0ee;flex-wrap:wrap;gap:7px 10px;padding:11px 0;font-size:11px;display:flex}.semester-calendar-legend span{align-items:center;gap:4px;display:flex}.calendar-legend-term,.calendar-legend-vacation{border-radius:3px;width:9px;height:9px;display:inline-block}.calendar-legend-term.term-1{background:#d9eee4}.calendar-legend-term.term-2{background:#dce8f7}.calendar-legend-term.term-3{background:#e8def8}.calendar-legend-vacation{background:#fff0d7;border:1px solid #f0d39b}.semester-calendar-months{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 9px;width:100%;padding:17px 0 18px;display:grid}.semester-calendar-month{min-width:0}.semester-calendar-month>strong{color:#33423b;margin-bottom:6px;font-size:12px;display:block}.semester-calendar-weekdays,.semester-calendar-days{grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;display:grid}.semester-calendar-weekdays{color:#a0aba5;text-align:center;margin-bottom:3px;font-size:9px}.semester-calendar-day{color:#718078;border-radius:5px;place-items:center;height:20px;font-size:9px;line-height:1;display:grid;position:relative}.semester-calendar-day.calendar-day-outside{visibility:hidden}.semester-calendar-day.calendar-day-teaching{font-weight:600}.semester-calendar-day.calendar-day-vacation{color:#9b6b1b;background:#fff0d7}.semester-calendar-day.calendar-term-1.calendar-day-teaching{color:#226c54;background:#e2f1e9}.semester-calendar-day.calendar-term-2.calendar-day-teaching{color:#416b9a;background:#e7effa}.semester-calendar-day.calendar-term-3.calendar-day-teaching{color:#7057a1;background:#eee8fb}.semester-calendar-day.calendar-day-start{box-shadow:inset 0 0 0 2px var(--green);z-index:1;font-weight:800}.semester-calendar-summary{border-top:1px solid #edf0ee;flex-direction:column;gap:8px;padding-top:14px;display:flex}.semester-calendar-summary div{justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}.semester-calendar-summary b{color:#33423b}.semester-calendar-summary span{color:var(--muted);text-align:right}@media (width<=520px){.semester-year-controls{gap:8px}.semester-year-row input{width:96px}.semester-year-save{padding:0 13px}}@media (width<=1000px){.dashboard-content-grid{grid-template-columns:1fr}}@media (width<=1100px){.semesters-layout{grid-template-columns:1fr}.semester-calendar-preview{position:static}.hero{flex-direction:column;align-items:flex-start}.hero-stats{width:100%}.room-row{grid-template-columns:220px 1fr}.topbar nav{gap:14px}.user-name{display:none}.brand-copy{min-width:190px}}@media (width<=800px){.topbar{height:62px}.topbar nav{background:#fff;flex-direction:column;height:auto;padding:12px 20px;display:none;position:absolute;top:62px;left:0;right:0;box-shadow:0 15px 30px #0001}.topbar nav.open{display:flex}.topbar nav button{padding:10px}.topbar nav button.active:after{display:none}.top-actions{border:0;margin-left:auto;padding:0}.menu-btn{display:block}.brand-copy span{display:none}.brand-copy{min-width:0}.hero{display:none}.hero-stats>div{min-width:0;padding:5px 10px}.content-section{width:94vw;padding-top:30px}.section-heading{flex-direction:column;align-items:flex-start;gap:20px}.week-switch{justify-content:space-between;width:100%}.filters{flex-wrap:wrap}.filters label{width:100%}.legend{width:100%;margin:5px 0 0}.room-row{grid-template-columns:1fr}.room-meta{border-right:0;border-bottom:1px solid var(--line);padding:17px}.schedule{overflow-x:auto}.schedule-head,.schedule-line{min-width:650px}.hero-stats{display:none}footer{flex-direction:column;align-items:flex-start;gap:8px;height:auto;padding:20px}}@media (width<=520px){.brand-copy strong{font-size:13px}.hero h1{font-size:36px}.hero-stats{grid-template-columns:1fr;padding:12px}.hero-stats>div{border-right:0;border-bottom:1px solid var(--line);padding:10px}.form-grid{grid-template-columns:1fr}}@media (width<=800px){.room-schedule-actions{justify-content:space-between;width:100%;margin-left:0}}@media (width<=900px){.guide-steps{grid-template-columns:1fr 1fr}.session-btn{display:none}}@media (width<=800px){.top-actions{margin-left:auto}.login-btn{padding:7px 9px}.guide-hero{min-height:210px;padding:35px 5vw}.guide-content{padding:32px 0 55px}}@media (width<=520px){.top-actions{margin-left:auto}.login-btn{padding:8px;font-size:0}.login-btn svg{width:19px;height:19px}.icon-btn{display:none}.avatar{width:32px;height:32px}.guide-hero{align-items:flex-start}.guide-icon{border-radius:15px;flex:none;width:54px;height:54px}.guide-icon svg{width:26px}.guide-hero h1{font-size:30px}.guide-steps{grid-template-columns:1fr}.login-card{padding:28px 22px}}@media (width<=800px){.schedule-head,.schedule-line{min-width:0}.selection-bar{bottom:92px}}@media (width<=520px){.selection-bar{flex-wrap:wrap;align-items:stretch}.selection-bar>div{flex-basis:100%;width:100%}.selection-bar .primary{flex:1}.clear-selection{padding-inline:14px}}.mail-approval-page{background:#f4f7f5;place-items:center;min-height:calc(100vh - 150px);padding:40px 16px;display:grid}.mail-approval-card{width:min(650px,100%);padding:28px}.mail-approval-head{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding-bottom:20px;display:flex}.mail-approval-head>svg{width:34px;height:34px;color:var(--green)}.mail-approval-head h1{margin:3px 0 0;font-size:24px}.mail-approval-details{margin:20px 0}.mail-approval-details>div{border-bottom:1px solid #edf0ee;grid-template-columns:110px 1fr;gap:14px;padding:11px 0;display:grid}.mail-approval-details dt{color:var(--muted);font-size:13px}.mail-approval-details dd{margin:0;font-size:14px}.mail-approval-details dd span{margin-bottom:5px;display:block}.mail-approve-button{width:100%;height:46px}.mail-approved{color:var(--green);background:#e2f1ea;border-radius:9px;justify-content:center;align-items:center;gap:8px;padding:13px;font-weight:600;display:flex}.mail-approved svg{width:20px}.mail-approval-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.mail-reject-button{border:0;border-radius:9px;justify-content:center;align-items:center;gap:6px;height:46px;font-weight:600;display:flex}.mail-approval-page{overflow-x:hidden}.primary.submit:disabled{opacity:.65;cursor:wait}.submit-spinner{animation:.8s linear infinite submit-spin}@keyframes submit-spin{to{transform:rotate(360deg)}}.status.pending{color:#9a6a16;background:#fdf0dd}.status.deleted{color:#69736e;background:#eef0ef}.approval-actions .restore{color:#56625c;background:#eef0ef}.approval-actions .restore:hover{color:#37443e;background:#e5e9e7}.admin-title{flex-wrap:wrap;gap:12px}.admin-title-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.range-tabs{background:#f1f4f2;border-radius:10px;padding:4px;display:flex}.range-tabs button{color:#65716c;white-space:nowrap;background:0 0;border:0;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:500;transition:all .15s}.range-tabs button:hover{color:var(--green)}.range-tabs button.active{color:var(--green);background:#fff;font-weight:600;box-shadow:0 1px 3px #00000014}.admin-toolbar{flex-wrap:wrap;align-items:center;gap:14px;margin:22px 0 0;display:flex}.status-tabs{background:#f1f4f2;border-radius:10px;gap:0;padding:4px;display:flex}.status-tabs button{color:#65716c;background:0 0;border:0;border-radius:8px;align-items:center;gap:6px;padding:8px 18px;font-size:13px;font-weight:500;transition:all .15s;display:flex}.status-tabs button:hover{color:var(--green)}.status-tabs button.active{color:var(--green);background:#fff;font-weight:600;box-shadow:0 1px 3px #00000014}.status-tabs button b{color:#fff;background:#d95c43;border-radius:10px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 5px;font-size:12px;display:inline-flex}.approval-filters{flex-wrap:wrap;flex:1;justify-content:flex-end;align-items:flex-end;gap:10px;display:flex}.approval-filters label{color:#53615b;flex-direction:column;gap:6px;min-width:170px;font-size:12px;font-weight:600;display:flex}.approval-filters label:nth-child(2),.approval-filters label:nth-child(3){min-width:210px}.approval-filters input{border:1px solid var(--line);color:#182521;background:#fff;border-radius:8px;outline:none;min-width:0;height:36px;padding:0 10px;font-size:12px}.approval-filters input:focus{border-color:var(--green);box-shadow:0 0 0 3px #e5f2ed}.filter-action{border-radius:8px;align-items:center;gap:5px;height:36px;padding:0 12px;font-size:12px;font-weight:600;display:flex}.approval-filters .filter-action:first-of-type{margin-left:0}.primary-filter{background:var(--green);color:#fff;border:0}.reset-filter{border:1px solid var(--line);color:#53615b;background:#fff}.reset-filter:hover{color:var(--green);border-color:#b9d1c7}.page-size-selector .filter-label{color:var(--muted);font-size:12px}.page-size-selector select{border:1px solid var(--line);color:#46534d;cursor:pointer;background:#fff;border-radius:8px;outline:none;min-width:90px;height:36px;padding:0 10px;font-size:12px}.page-size-selector select:focus{border-color:var(--green);box-shadow:0 0 0 3px #e5f2ed}.page-size-selector{align-items:center;gap:8px;display:flex}.pagination{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:14px 18px;display:flex}.pagination .page-controls{align-items:center;gap:5px;display:flex}.pagination .page-controls button{border:1px solid var(--line);color:#4d5a54;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:3px;min-width:34px;padding:7px 11px;font-size:12px;display:flex}.pagination .page-controls button:hover:not(:disabled){color:var(--green);border-color:#c8d9d1}.pagination .page-controls button:disabled{opacity:.45;cursor:not-allowed}.pagination .page-controls button.active{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}.page-btn-text{display:inline}.page-jump{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.page-jump input{border:1px solid var(--line);text-align:center;-moz-appearance:textfield;border-radius:7px;outline:none;width:52px;height:34px;font-size:12px}.page-jump input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.page-jump input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.page-jump input:focus{border-color:var(--green);box-shadow:0 0 0 3px #e5f2ed}.page-jump button{border:1px solid var(--line);height:34px;color:var(--green);background:#fff;border-radius:7px;padding:0 10px;font-size:12px;font-weight:600}.page-jump button:hover{background:var(--green);color:#fff}.approval-page-summary{color:var(--muted);text-align:center;padding:12px 18px 0;font-size:12px}.approval-detail-overlay{justify-content:center;align-items:center;padding:18px}.approval-detail-dialog{background:#fff;border-radius:16px;width:min(560px,100vw - 32px);max-height:calc(100vh - 56px);padding:24px;animation:.22s slide;overflow:auto;box-shadow:0 24px 70px #083d3040}.approval-detail-list{grid-template-columns:1fr 1fr;gap:2px 18px;margin:0;padding:18px 0 0;list-style:none;display:grid}.approval-detail-list li{border-bottom:1px solid #f0f3f1;grid-template-columns:22px 70px minmax(0,1fr);align-items:center;gap:9px;padding:9px 0;display:grid}.approval-detail-list li svg,.approval-slot-title svg{color:var(--green)}.approval-detail-list span{color:var(--muted);font-size:12px}.approval-detail-list strong{color:#1d2b26;word-break:break-word;min-width:0;font-size:13px}.approval-slot-section{background:#f5faf8;border:1px solid #dce8e3;border-radius:12px;margin-top:16px;padding:14px}.approval-slot-title{color:var(--green);align-items:center;gap:7px;margin-bottom:10px;font-size:12px;font-weight:700;display:flex}.approval-slot-list{flex-wrap:wrap;gap:8px;display:flex}.approval-slot-list span{color:#42524b;background:#fff;border:1px solid #dce8e3;border-radius:8px;padding:7px 9px;font-size:12px;line-height:1.45}.approval-detail-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-top:18px;padding-top:16px;display:flex}.approval-detail-head-actions{align-items:center;gap:5px;display:flex}.detail-edit-btn{height:32px;color:var(--green);background:#f5faf8;border:1px solid #c8d8d0;border-radius:7px;align-items:center;gap:4px;padding:0 10px;font-size:12px;display:flex}.detail-edit-btn:hover{background:#e5f2ed}.detail-edit-btn.save{background:var(--green);border-color:var(--green);color:#fff}.detail-edit-btn.save:hover{background:#0a4c3a}.detail-edit-btn.cancel{color:#68756f;border-color:var(--line);background:#fff}.detail-edit-btn:disabled{opacity:.6;cursor:wait}.approval-detail-list input{border:1px solid var(--line);color:#1d2b26;background:#fff;border-radius:6px;outline:none;width:100%;min-width:0;padding:6px 7px;font-size:12px}.approval-detail-list input:focus{border-color:var(--green);box-shadow:0 0 0 2px #e5f2ed}.approval-slot-list{flex-direction:column;gap:8px;display:flex}.approval-slot-list>span{color:#42524b;background:#fff;border:1px solid #dce8e3;border-radius:8px;padding:7px 9px;font-size:12px;line-height:1.45}.approval-slot-row{background:#fff;border:1px solid #dce8e3;border-radius:8px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:7px 9px;display:grid}.approval-slot-label{color:#42524b;min-width:0;font-size:12px;line-height:1.45}.approval-slot-row .status{white-space:nowrap}.approval-slot-row .approval-actions{gap:4px}.approval-slot-row .approval-actions button{height:27px;padding:0 7px}.management-panel{margin-top:22px}.management-head{align-items:center}.management-head .primary.compact{align-items:center;gap:7px;width:auto;height:40px;padding:0 16px;display:flex}.management-head .primary svg{width:16px}.form-message{border-radius:8px;margin:0 22px 14px;padding:10px 12px;font-size:13px}.form-message.error{color:#a64231;background:#fff0ed}.room-management-table{min-width:980px}.room-management-table td>small{color:var(--muted);margin-top:3px;display:block}.room-management-table .room-description{white-space:normal;color:#65716c;max-width:240px}.crud-overlay{z-index:100;background:#05181275;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.crud-dialog{background:#fff;border-radius:16px;flex-direction:column;gap:18px;width:min(440px,100%);padding:24px;display:flex;box-shadow:0 22px 70px #041e163d}.room-crud-dialog{width:min(680px,100%)}.crud-dialog-head{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.crud-dialog-head h2{margin:0;font-size:20px}.crud-dialog-head p{color:var(--muted);margin:6px 0 0;font-size:13px}.crud-dialog label{color:#53615b;flex-direction:column;gap:7px;font-size:12px;font-weight:600;display:flex}.crud-dialog input,.crud-dialog textarea{border:1px solid var(--line);color:#182521;background:#fbfcfb;border-radius:9px;outline:none;width:100%;padding:10px 11px}.crud-dialog input:focus,.crud-dialog textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #e5f2ed}.crud-form-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.crud-form-grid .full{grid-column:1/-1}.crud-dialog-actions{justify-content:flex-end;gap:10px;padding-top:4px;display:flex}.crud-dialog-actions button{border-radius:9px;width:auto;min-width:88px;padding:10px 18px}.crud-dialog-actions .secondary{border:1px solid var(--line);color:#53615b;background:#fff}.approval-actions button svg{width:14px;height:14px}.room-time-note{text-align:right;color:#6f7d77;margin:16px 0 0;font-size:12px;line-height:1.7}@media (width<=800px){.room-time-note{text-align:left;font-size:12px}.room-time-note span{display:block}}.slot-detail-loading,.slot-detail-error{color:var(--muted);padding:26px 0 8px;font-size:13px}.slot-detail-error{color:#a64231}.guest-slot-row{grid-template-columns:minmax(0,1fr) auto}.mobile-login,.mobile-session{display:none}@media (width<=800px){.topbar .top-actions{display:none}.topbar .brand-copy span{letter-spacing:.03em;margin-top:1px;font-size:10px;display:block}.topbar .menu-btn{width:38px;height:38px;color:var(--green);background:#eef6f2;border-radius:9px;justify-content:center;align-items:center;padding:0;display:flex}.topbar .menu-btn:hover{background:#e1f0e9}.topbar nav .mobile-login{color:#65736d;background:0 0;border:0;border-radius:0;justify-content:center;align-items:center;gap:7px;display:flex}.topbar nav .mobile-session{color:#6e7a75;justify-content:center;align-items:center;gap:7px;display:flex}.room-row .room-meta{white-space:nowrap;justify-content:flex-end;align-items:center;gap:8px;padding:10px 12px;overflow-x:auto}.room-row .room-number{display:none}.room-row .room-meta>div:last-child{justify-content:flex-end;align-items:center;gap:8px;width:100%;min-width:max-content;margin-left:auto;display:flex}.room-row .room-meta h3{margin:0 auto 0 0;font-size:14px}.room-row .room-meta p{font-size:11px}.room-row .room-tags{gap:4px;margin:0}.room-row .room-tags span{padding:3px 5px;font-size:10px}.room-row .schedule{-webkit-overflow-scrolling:touch;padding:7px 8px;overflow-x:auto}.room-row .schedule-head>span{padding:2px}.room-row .schedule-head,.room-row .schedule-line{grid-template-columns:48px repeat(7,70px);gap:3px;min-width:559px}.room-row .schedule-head b,.room-row .schedule-head small{white-space:nowrap}.room-row .schedule-line{margin-top:3px}.room-row .schedule-line button{height:32px}.room-row .schedule-line button.busy span{white-space:nowrap;text-overflow:ellipsis;max-width:6em;font-size:11px;line-height:1.25;display:block;overflow:hidden}.room-row .schedule-line button.free>span{font-size:11px;line-height:1.25}.room-row .schedule-line button small{display:none}}a.room-meta{color:inherit;cursor:pointer;text-decoration:none;transition:background .15s}a.room-meta:hover{background:#f6faf8}a.room-meta:hover h3{color:var(--green)}.back-link{border:1px solid var(--line);color:#4c5a54;background:#fff;border-radius:10px;align-items:center;gap:6px;margin-bottom:22px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.back-link:hover{color:var(--green);border-color:#b9d1c7}.section-heading p{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.section-heading .dot{color:#c2ccc7;margin:0 1px}.room-schedule-actions{align-items:center;gap:18px;margin-left:24px;display:flex}.week-schedule-list{flex-direction:column;gap:14px;display:flex}.week-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden}.week-card-head{border-bottom:1px solid var(--line);background:#fafcfb;align-items:center;gap:9px;padding:14px 20px;display:flex}.week-card-head svg{color:var(--green)}.week-card-head strong{font-size:14px}.week-card-head small{color:var(--muted);margin-left:auto;font-size:12px}.week-card .schedule{padding:14px 20px}.load-more{color:#7c8983;justify-content:center;align-items:center;gap:7px;padding:22px;font-size:12px;display:flex}.load-more svg{color:var(--green)}.load-end{text-align:center;color:#9aa59f;padding:22px;font-size:12px}.schedule-switches{align-items:center;gap:8px;display:flex}.semester-switch{border:1px solid var(--line);color:#53615b;background:#fff;border-radius:12px;align-items:center;gap:7px;height:46px;padding:5px 10px 5px 13px;font-size:13px;font-weight:600;display:flex}.semester-switch select{appearance:none;color:var(--green);cursor:pointer;background:0 0;border:0;outline:0;padding:0 2px;font-weight:600}.semester-switch svg{color:#8a968f;pointer-events:none}.week-range-short{display:none}@media (width<=800px){.schedule-switches{width:100%}.semester-switch{flex:0 auto;justify-content:space-between}.week-switch{flex:1;width:auto;min-width:0}.week-switch .week-current{white-space:nowrap;flex:1;justify-content:center;min-width:0}.week-switch .week-current .week-range{display:none}.week-switch .week-current .week-range-short{display:inline}.filters{gap:8px}.filters label{flex:auto;width:auto;min-width:0}.filters select{flex:none;max-width:42%}}@media (width<=560px){.schedule-switches,.filters{gap:6px}.filters select{padding:0 8px;font-size:12px}.filters label{padding:0 10px}.semester-switch{gap:4px;height:44px;padding:5px 8px 5px 10px;font-size:12px}.week-switch{padding:4px}.week-switch>button{flex:0 0 30px;width:30px;height:30px}.week-switch .week-current{gap:5px;padding:5px 4px;font-size:12px}.week-switch .week-current>svg:first-child{display:none}.week-switch b{margin-left:0;padding:3px 5px}}@media (width<=370px){.week-switch .week-current .week-range-short{display:none}.week-switch .week-current>svg:first-child{display:block}}.week-pop-grid button{white-space:nowrap;width:auto;min-width:40px;padding:0 8px}.week-switch>button:disabled{opacity:.4;cursor:not-allowed}.room-row .schedule-head>span.current-day{color:var(--green)}.room-row .schedule-head .day-name{display:inline-block;position:relative}.room-row .schedule-head .current-day-dot{background:var(--green);border-radius:50%;width:5px;height:5px;position:absolute;top:-3px;right:-7px;box-shadow:0 0 0 3px #0d5b451f}.contact-cell{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.reveal-btn{color:#8a968f;background:0 0;border:0;border-radius:6px;place-items:center;width:24px;height:24px;padding:0;display:grid}.reveal-btn:hover{color:var(--green);background:#e5f2ed}.reveal-btn:disabled{opacity:.5;cursor:wait}.reveal-error{color:#c0503a;flex-basis:100%;font-size:12px;font-style:normal;font-weight:400}
