:root{--navy:#102f5c;--blue:#1769d2;--blue2:#2684ff;--ink:#17243a;--muted:#6f7e93;--line:#e4eaf2;--bg:#f5f7fb;--green:#10a66a;--amber:#e89316;--red:#dc3b4b;--shadow:0 10px 30px rgba(23,42,79,.07);font-family:"Segoe UI","Microsoft YaHei",Arial,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:14px}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.sidebar{position:fixed;z-index:30;left:0;top:0;bottom:0;width:242px;background:#102f5c;color:white;padding:0 15px;display:flex;flex-direction:column}.brand{height:78px;display:flex;align-items:center;gap:11px;padding:0 9px;border-bottom:1px solid rgba(255,255,255,.12)}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#3188ff,#0f5bc2);font-weight:800;font-size:21px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}.brand-mark.large{width:48px;height:48px;font-size:28px}.brand b{display:block;font-size:19px;letter-spacing:1px}.brand small{display:block;color:#b9c9de;font-size:11px;margin-top:3px}.sidebar nav{padding-top:22px;flex:1}.nav-label{font-size:11px;color:#7f9abb;letter-spacing:1.5px;padding:14px 14px 7px}.sidebar nav a{display:flex;align-items:center;gap:12px;height:45px;padding:0 14px;margin:3px 0;border-radius:8px;color:#d6e1f0;transition:.2s}.sidebar nav a:hover{background:rgba(255,255,255,.06);color:white}.sidebar nav a.active{background:linear-gradient(90deg,#1f70d9,#247ce8);color:white;box-shadow:0 5px 14px rgba(0,0,0,.15)}.sidebar nav i{font-style:normal;width:18px;text-align:center;font-size:18px}.sidebar-foot{height:58px;border-top:1px solid rgba(255,255,255,.12);display:flex;align-items:center;gap:9px;padding:0 14px;color:#bfcde0;font-size:12px}.qual-dot{width:8px;height:8px;border-radius:50%;background:#43d692;box-shadow:0 0 0 4px rgba(67,214,146,.12)}.qual-dot.warn{background:#ff6d79}.topbar{position:fixed;z-index:20;left:242px;right:0;top:0;height:68px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 32px;backdrop-filter:blur(10px)}.menu-btn{display:none;border:0;background:none;font-size:20px}.crumb{display:flex;align-items:center;gap:10px;color:#9aa6b5;font-size:13px}.crumb b{font-weight:400;color:#d0d6df}.crumb strong{color:#35445c}.top-actions{display:flex;align-items:center;gap:10px}.phase-pill{background:#edf5ff;color:#1762b9;border:1px solid #d9eaff;padding:6px 11px;border-radius:20px;font-size:12px;margin-right:7px}.avatar{width:34px;height:34px;background:linear-gradient(135deg,#ddecff,#bddeff);color:#175da9;display:grid;place-items:center;border-radius:50%;font-weight:700}.user-meta b,.user-meta small{display:block}.user-meta small{color:#8793a4;font-size:11px;margin-top:2px}.logout{font-size:18px;color:#8390a2;padding:8px}.content{margin-left:242px;padding:98px 32px 44px;max-width:1700px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:25px}.page-head h1{font-size:28px;margin:5px 0 6px;letter-spacing:-.5px}.page-head p,.detail-head p{color:var(--muted);margin:0}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:700;color:#c6d6ec}.eyebrow.blue{color:#2875cd}.btn{height:40px;padding:0 18px;border-radius:7px;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;background:white}.btn.primary{background:linear-gradient(135deg,#176bd7,#125cb9);color:#fff;box-shadow:0 6px 14px rgba(23,105,210,.19)}.btn.secondary{border-color:#ccd6e3;background:#fff}.btn.ghost{background:#f4f6f9;color:#536278}.btn.danger-light{border-color:#f2bdc2;background:#fff4f5;color:#c72c3a}.btn.wide{width:100%;height:46px}.panel{background:white;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;padding:22px 24px;border-bottom:1px solid #edf0f5}.panel-head h2{font-size:17px;margin:0 0 5px}.panel-head p{font-size:12px;color:var(--muted);margin:0}.panel-head>a{color:var(--blue);font-size:12px;padding-top:5px}.phase-banner{height:68px;background:linear-gradient(105deg,#0f315e,#164c8a);border-radius:11px;color:white;display:flex;align-items:center;justify-content:space-between;padding:0 25px;margin-bottom:18px;box-shadow:0 10px 22px rgba(14,48,92,.14)}.phase-banner>div:first-child{display:flex;align-items:center;gap:14px}.phase-banner b,.phase-banner small{display:block}.phase-banner small{color:#a9c2df;font-size:11px;margin-top:3px}.pulse{width:9px;height:9px;border-radius:50%;background:#49df9a;box-shadow:0 0 0 6px rgba(73,223,154,.13)}.phase-switches{display:flex;gap:10px}.phase-switches span{font-size:12px;padding:6px 11px;border-radius:20px;background:rgba(255,255,255,.08);color:#a9bad0}.phase-switches span.on{background:rgba(54,218,144,.13);color:#81e5b8}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:18px}.metric{min-height:106px;background:white;border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow);padding:18px;display:flex;align-items:center;gap:14px;position:relative}.metric.blue-card{background:linear-gradient(135deg,#1d70d7,#1357ad);border:0;color:white}.metric-icon{width:43px;height:43px;background:rgba(255,255,255,.16);display:grid;place-items:center;border-radius:10px;font-size:20px}.metric:not(.blue-card) .metric-icon{background:#eaf3ff;color:#1e6bc5}.metric:not(.blue-card) .metric-icon.amber{background:#fff4dc;color:#c88012}.metric:not(.blue-card) .metric-icon.green{background:#e7f8f1;color:#0d9b64}.metric:not(.blue-card) .metric-icon.red{background:#fff0f2;color:#d23a49}.metric b,.metric small{display:block}.metric b{font-size:25px}.metric small{font-size:12px;margin-top:4px;color:#7b899c}.metric.blue-card small{color:#c7daf3}.metric em{position:absolute;right:17px;font-style:normal;color:#a8b3c2}.metric.blue-card em{color:white}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,.8fr);gap:18px}.schedule-list>a{display:flex;align-items:center;padding:14px 24px;border-bottom:1px solid #edf0f4;gap:15px}.schedule-list>a:last-child{border-bottom:0}.date-block{width:45px;height:49px;border-radius:8px;background:#edf5ff;color:#1c65b9;display:grid;place-items:center;align-content:center}.date-block b{font-size:17px;line-height:17px}.date-block small{font-size:10px}.schedule-info{flex:1}.schedule-info b,.schedule-info span{display:block}.schedule-info span{color:var(--muted);font-size:12px;margin-top:6px}.status{display:inline-block;padding:5px 9px;border-radius:15px;background:#edf1f6;color:#667489;font-size:11px;white-space:nowrap}.status.approved,.status.completed{background:#e6f8f0;color:#078756}.status.pending{background:#fff4df;color:#ad6900}.status.rejected,.status.cancelled,.status.cleanup_rework{background:#fff0f1;color:#bd3542}.status.in_progress,.status.cleanup_pending{background:#e9f3ff;color:#1766bd}.quick-grid{display:grid;grid-template-columns:1fr 1fr;padding:10px}.quick-grid>a{padding:15px;border-radius:8px}.quick-grid>a:hover{background:#f5f8fc}.quick-grid i{font-style:normal;font-size:21px;color:#1d6ac5;display:block;margin-bottom:9px}.quick-grid b,.quick-grid span{display:block}.quick-grid b{font-size:13px}.quick-grid span{font-size:10px;color:var(--muted);margin-top:4px}.empty{text-align:center;padding:45px;color:var(--muted)}.empty>span{font-size:36px;color:#bac6d5;display:block}.empty b{display:block;color:#536074;margin:8px}.empty p{font-size:12px}.empty.wide{grid-column:1/-1;background:white;border-radius:12px;border:1px solid var(--line)}.filter-bar{display:flex;gap:10px;background:white;border:1px solid var(--line);padding:12px;border-radius:10px;margin-bottom:17px}.search-box{height:40px;display:flex;align-items:center;gap:8px;border:1px solid #cad4e1;border-radius:7px;padding:0 12px;flex:1;color:#708097}.search-box input{border:0;outline:0;width:100%}.filter-bar select{min-width:160px;border:1px solid #cad4e1;border-radius:7px;padding:0 11px;background:white}.resource-summary{display:flex;justify-content:space-between;margin:0 2px 12px;color:var(--muted);font-size:12px}.legend{display:flex;align-items:center;gap:5px}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-left:10px}.dot.green{background:var(--green)}.dot.amber{background:var(--amber)}.dot.red{background:var(--red)}.resource-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.resource-card{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:var(--shadow);transition:.2s}.resource-card:hover{transform:translateY(-2px);box-shadow:0 15px 30px rgba(23,42,79,.1)}.resource-visual{height:115px;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;background:linear-gradient(135deg,#e9f3ff,#f7faff);color:#3576c2}.resource-visual.type-fixed{background:linear-gradient(135deg,#e8f7f2,#f6fbf9);color:#1c9b72}.resource-visual.type-consumable{background:linear-gradient(135deg,#fff3de,#fffbf3);color:#d08716}.resource-visual span{font-size:39px}.resource-visual small{position:absolute;top:12px;right:13px;background:rgba(255,255,255,.75);padding:4px 7px;border-radius:11px}.resource-body{padding:16px}.card-top{display:flex;justify-content:space-between}.code{font-family:Consolas,monospace;font-size:11px;color:#59708e;letter-spacing:.4px}.availability{font-size:10px;padding:4px 7px;background:#e7f8f1;color:#078657;border-radius:11px}.availability.paused,.availability.fixed,.availability.scrapped{background:#fff0f1;color:#bd3542}.resource-body h3{font-size:17px;margin:10px 0 6px}.resource-body>p{color:var(--muted);font-size:12px;line-height:1.6;height:38px;overflow:hidden}.tags{display:flex;gap:6px;margin:13px 0}.tags>span,.safety{font-size:10px;background:#f1f4f8;color:#5d6c80;padding:5px 7px;border-radius:4px;font-style:normal}.safety-A{background:#fff0f1!important;color:#bd3542!important}.safety-B{background:#fff5df!important;color:#a96a06!important}.safety-C{background:#eaf7f2!important;color:#09845a!important}.location{border-top:1px solid #edf0f4;padding-top:12px;color:#53647c;font-size:12px}.location small{color:#9aa5b3;margin-left:5px}.form-panel{padding:24px}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;padding-bottom:11px;border-bottom:1px solid var(--line)}.section-title b{font-size:16px}.section-title span{font-size:11px;color:var(--muted)}.form-grid{display:grid;gap:17px}.form-grid.two{grid-template-columns:repeat(2,1fr)}.form-grid.three{grid-template-columns:repeat(3,1fr)}.form-grid .span-2{grid-column:span 2}.form-panel label,.auth-card label,.decision-card label,.settings-grid label{display:block;font-weight:600;font-size:12px}.form-panel input,.form-panel select,.form-panel textarea,.auth-card input,.decision-card textarea,.settings-grid input,.settings-grid select{width:100%;border:1px solid #ccd6e2;border-radius:7px;background:#fff;padding:10px 11px;margin-top:7px;outline:0}.form-panel input,.form-panel select,.auth-card input,.settings-grid input,.settings-grid select{height:42px}.form-panel input:focus,.form-panel select:focus,.form-panel textarea:focus,.auth-card input:focus{border-color:#3680d8;box-shadow:0 0 0 3px rgba(54,128,216,.1)}.form-panel>label{margin-top:18px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.table-panel{overflow:hidden}.tabs{display:flex;height:57px;align-items:flex-end;padding:0 20px;border-bottom:1px solid var(--line);gap:8px}.tabs button{height:57px;border:0;background:none;padding:0 15px;color:#6d7b8f;border-bottom:2px solid transparent}.tabs button.active{color:var(--blue);border-color:var(--blue);font-weight:600}.tabs span{font-size:10px;background:#e9f3ff;padding:2px 5px;border-radius:8px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left}th{height:46px;background:#f8fafc;color:#8390a2;font-size:11px;font-weight:600;padding:0 18px;white-space:nowrap}td{padding:14px 18px;border-top:1px solid #edf0f4;font-size:12px}td>b,td>small{display:block}td>small{color:var(--muted);margin-top:5px}.table-title{font-family:Consolas,monospace;font-weight:700;color:#1767c2}.risk{color:#c83343;background:#fff0f1;padding:5px 8px;border-radius:5px;font-size:11px;white-space:nowrap}.safe{color:#078657;font-size:11px}.row-arrow{font-size:23px;color:#8694a7}.application-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:18px}.step-head{display:flex;gap:12px;align-items:center;margin:4px 0 18px;padding-top:4px}.step-head:not(:first-child){border-top:1px solid var(--line);padding-top:22px;margin-top:24px}.step-head>span{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:#e9f3ff;color:#1768c4;font-weight:700;font-size:11px}.step-head b,.step-head small{display:block}.step-head small{color:var(--muted);font-size:10px;margin-top:4px}.checkbox-row{display:flex;gap:24px;margin-top:18px}.checkbox-row label{display:flex;align-items:center;gap:7px}.checkbox-row input{width:auto;height:auto;margin:0}.exception-reason{display:none!important}.exception-reason.show{display:block!important}.asset-picker{display:grid;grid-template-columns:1fr 1fr;gap:8px}.asset-picker label{display:flex;align-items:center;gap:10px;border:1px solid var(--line);padding:11px;border-radius:8px;cursor:pointer}.asset-picker input{display:none}.pick-check{width:20px;height:20px;display:grid;place-items:center;border:1px solid #bfccda;border-radius:4px;color:transparent}.asset-picker input:checked+.pick-check{background:var(--blue);border-color:var(--blue);color:white}.asset-picker div{flex:1}.asset-picker b,.asset-picker small{display:block}.asset-picker small{font-weight:400;color:var(--muted);font-size:10px;margin-top:3px}.rules-card{padding:21px;height:max-content;position:sticky;top:88px}.rules-card h3{margin-top:0}.rules-card ul{padding:0;list-style:none}.rules-card li{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:12px 0}.rules-card li b{color:#1768c3}.rules-card li span{font-size:11px;color:var(--muted)}.rule-note{background:#fff8e9;border-left:3px solid var(--amber);padding:12px;margin-top:16px}.rule-note b{font-size:12px}.rule-note p{color:#7d6b4a;font-size:11px;line-height:1.6;margin-bottom:0}.detail-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:20px}.back-link{display:inline-block;color:#55708f;font-size:12px;margin-bottom:11px}.title-line{display:flex;align-items:center;gap:10px}.title-line h1{font-size:26px;margin:0}.head-actions{display:flex;gap:8px}.head-actions form{margin:0}.conflict-box{border:1px solid #f1aab1;background:#fff7f8;border-radius:10px;margin-bottom:18px;overflow:hidden}.conflict-title{display:flex;gap:12px;padding:15px 18px}.conflict-title>span{width:30px;height:30px;border-radius:50%;background:#dc3b4b;color:white;display:grid;place-items:center;font-weight:700}.conflict-title b,.conflict-title p{display:block;margin:0}.conflict-title p{font-size:11px;color:#8b5960;margin-top:4px}.conflict-list{background:#fff;border-top:1px solid #f3ced2}.conflict-list>div{display:grid;grid-template-columns:1fr 1.4fr 1.4fr 1fr;padding:10px 18px;border-bottom:1px solid #f7e1e3;font-size:11px}.conflict-list b{color:#bf2f3e}.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px}.detail-grid>div{display:flex;flex-direction:column;gap:18px}.detail-panel{overflow:hidden}.info-grid{display:grid;grid-template-columns:repeat(3,1fr);padding:22px 24px;gap:25px}.info-grid small,.info-grid b,.info-grid span{display:block}.info-grid small,.description-block small,.asset-list>small{color:#8b97a7;font-size:10px}.info-grid b{margin:7px 0 4px}.info-grid span{color:var(--muted);font-size:11px}.description-block{margin:0 24px;padding:18px 0;border-top:1px solid var(--line)}.description-block p{line-height:1.7;color:#57677c}.notice{margin:0 24px 15px;padding:11px 13px;border-radius:6px;display:flex;flex-direction:column;gap:4px;font-size:11px}.notice.warning{background:#fff7e8;color:#7a5a25}.notice.danger{background:#fff0f1;color:#a82d39}.asset-list{padding:0 24px 22px}.asset-list>div{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:7px;padding:10px;margin-top:8px}.asset-mini{width:34px;height:34px;border-radius:6px;background:#edf4fd;display:grid;place-items:center;color:#2670c5}.asset-list>div>div{flex:1}.asset-list b,.asset-list div small{display:block}.asset-list div small{color:var(--muted);font-size:10px;margin-top:3px}.timeline-panel,.decision-card{padding:21px;margin-bottom:18px}.timeline-panel h3,.decision-card h3{margin:0 0 18px}.timeline-panel ol{list-style:none;padding:0;margin:0}.timeline-panel li{display:flex;gap:11px;min-height:67px;position:relative}.timeline-panel li:after{content:"";position:absolute;left:13px;top:29px;bottom:0;border-left:1px solid #dbe2eb}.timeline-panel li:last-child:after{display:none}.timeline-panel i{font-style:normal;width:27px;height:27px;border-radius:50%;border:1px solid #cbd4df;color:#98a4b4;display:grid;place-items:center;font-size:10px;z-index:1;background:white}.timeline-panel li.done i{background:var(--green);border-color:var(--green);color:white}.timeline-panel li.current i{border:2px solid var(--blue);color:var(--blue)}.timeline-panel b,.timeline-panel span{display:block}.timeline-panel b{font-size:12px}.timeline-panel span{color:var(--muted);font-size:10px;margin-top:5px}.decision-card>p{font-size:11px;color:var(--muted)}.decision-card form>div{display:flex;justify-content:flex-end;gap:8px;margin-top:13px}.decision-card .stack-buttons{flex-direction:column}.decision-card .stack-buttons .btn{width:100%}.cleanup-form .panel-head{margin:-24px -24px 20px}.access-wrap{max-width:580px;margin:20px auto}.access-card{text-align:center;background:white;border-radius:16px;border:1px solid var(--line);padding:38px 50px;box-shadow:var(--shadow)}.lock-icon{width:60px;height:60px;border-radius:18px;background:#eaf3ff;color:#1768c5;display:grid;place-items:center;font-size:30px;margin:0 auto 18px}.access-card h1{font-size:24px;margin:8px 0}.access-card>p{color:var(--muted)}.totp-code{font-family:Consolas,monospace;font-weight:800;font-size:48px;letter-spacing:7px;color:#133d70;margin:28px 0 15px}.totp-code span{color:#1d71d5}.countdown{height:4px;border-radius:3px;background:#e6ebf1;overflow:hidden}.countdown i{display:block;height:100%;background:var(--blue);transition:width 1s linear}.access-card>#remaining{font-size:11px;color:#7a8799;display:block;margin-top:9px}.access-time{display:flex;justify-content:space-between;padding:16px 0;margin:20px 0 5px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px}.access-card .notice{text-align:left;margin:18px 0 0}.calendar-panel{overflow:hidden}.calendar-head{height:66px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 22px}.calendar-head>div{display:flex;align-items:center;gap:15px}.calendar-head button{border:1px solid var(--line);background:white;border-radius:5px;width:30px;height:30px}.calendar-head>span{color:var(--muted);font-size:11px}.bench-timeline{min-width:900px;padding:17px 20px}.time-row,.bench-row{display:grid;grid-template-columns:120px 1fr}.time-row>span{font-size:11px;color:var(--muted)}.time-row{margin-bottom:10px}.time-row i{font-style:normal;display:inline-block;width:12.5%;font-size:10px;color:#9aa6b5}.bench-row>span{padding-top:11px}.bench-row>span b,.bench-row>span small{display:block}.bench-row>span small{font-size:9px;color:var(--muted);margin-top:3px}.timeline-track{height:58px;position:relative;background:repeating-linear-gradient(90deg,#f4f6f9 0,#f4f6f9 calc(12.5% - 1px),#e4e9f0 calc(12.5% - 1px),#e4e9f0 12.5%);border-bottom:5px solid white}.booking{position:absolute;left:calc(var(--offset)*100%);width:max(calc(var(--length)*100%),7%);top:7px;height:43px;border-radius:6px;background:#dcecff;color:#175da9;border-left:3px solid #2473cf;padding:7px 9px;overflow:hidden}.booking.conflicted{background:#ffe4e7;color:#b53240;border-color:#dc3b4b}.booking b,.booking small{display:block;white-space:nowrap;font-size:10px}.booking small{font-size:9px;margin-top:3px}.location-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.location-card{padding:19px;display:grid;grid-template-columns:54px 1fr;gap:14px;position:relative}.loc-icon{width:54px;height:54px;border-radius:10px;background:#eaf3ff;color:#1768c3;display:grid;place-items:center;font-size:23px}.loc-icon.hazard{background:#fff0f1;color:#c22e3d}.location-card h3{margin:7px 0 5px}.location-card p{margin:0;color:var(--muted);font-size:11px}.loc-bottom{grid-column:1/-1;border-top:1px solid var(--line);padding-top:12px;display:flex;justify-content:space-between;font-size:11px}.lock-tag{position:absolute;top:15px;right:15px;font-size:9px;background:#fff1f2;color:#bd3441;padding:4px 6px;border-radius:5px}.person{display:flex;align-items:center;gap:9px}.person>span{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#e7f2ff;color:#1767c2}.person b,.person small{display:block}.person small{font-size:9px;color:var(--muted);margin-top:3px}.role-tag,.action-tag{padding:5px 7px;background:#eef3f9;color:#52657d;border-radius:5px;font-size:10px}.inline-actions{display:flex;gap:4px}.inline-actions button{border:1px solid #c7d4e2;background:white;border-radius:5px;color:#1764ba;font-size:10px;padding:5px 7px}.inline-actions button.red{color:#bd3441;border-color:#efc6ca}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.settings-grid .span-all{grid-column:1/-1}.switch-list{margin-top:20px}.switch-list>label{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-top:1px solid var(--line);position:relative}.switch-list b,.switch-list span{display:block}.switch-list span{font-size:10px;color:var(--muted);margin-top:4px}.switch-list input{display:none}.switch-list i{width:40px;height:22px;background:#cbd4df;border-radius:15px;position:relative}.switch-list i:after{content:"";position:absolute;width:18px;height:18px;background:white;border-radius:50%;top:2px;left:2px;transition:.2s}.switch-list input:checked+i{background:var(--blue)}.switch-list input:checked+i:after{left:20px}.security-box{display:flex;gap:12px;background:#edf8f3;color:#316c55;border-radius:8px;padding:14px;margin-top:20px}.security-box>span{width:26px;height:26px;background:#13a66c;color:white;border-radius:50%;display:grid;place-items:center}.security-box b,.security-box p{margin:0}.security-box p{font-size:10px;line-height:1.6;margin-top:5px}.mono{font-family:Consolas,monospace}.flash-stack{position:fixed;right:24px;top:81px;z-index:100;width:min(390px,calc(100vw - 30px))}.flash{padding:13px 38px 13px 15px;border-radius:8px;background:white;border-left:4px solid #438be0;box-shadow:0 9px 30px rgba(20,38,71,.18);margin-bottom:8px;position:relative}.flash.success{border-color:var(--green)}.flash.warning{border-color:var(--amber)}.flash.danger{border-color:var(--red)}.flash button{position:absolute;right:9px;top:8px;border:0;background:none;font-size:20px;color:#8793a4}.auth-body{background:white}.auth-shell{min-height:100vh;display:grid;grid-template-columns:58% 42%}.auth-hero{background:linear-gradient(135deg,#0c2b54,#114b87);color:white;position:relative;overflow:hidden;padding:50px 8%;display:flex;flex-direction:column}.campus-grid{position:absolute;inset:0;opacity:.1;background-image:linear-gradient(rgba(255,255,255,.3) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.3) 1px,transparent 1px);background-size:58px 58px;transform:perspective(500px) rotateX(25deg) scale(1.5)}.auth-hero:after{content:"CUPT";position:absolute;right:-30px;bottom:-60px;font-weight:900;font-size:220px;color:rgba(255,255,255,.035);letter-spacing:-20px}.auth-brand{position:relative;display:flex;gap:13px;align-items:center}.auth-brand b,.auth-brand small{display:block}.auth-brand b{font-size:21px;letter-spacing:1px}.auth-brand small{color:#b5c9e2;font-size:11px;margin-top:3px}.hero-copy{position:relative;margin:auto 0}.hero-copy h1{font-size:52px;line-height:1.2;margin:18px 0 22px;letter-spacing:1px}.hero-copy p{max-width:510px;color:#b9cae0;line-height:1.8;font-size:15px}.hero-stats{position:relative;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid rgba(255,255,255,.15);padding-top:24px}.hero-stats b,.hero-stats span{display:block}.hero-stats b{font-size:23px}.hero-stats span{font-size:10px;color:#94acce;margin-top:6px}.auth-panel{display:grid;place-items:center;padding:35px;background:#fbfcfe}.auth-card{width:min(390px,100%)}.auth-card h2{font-size:27px;margin:9px 0}.auth-card>p{margin:0 0 27px}.muted{color:var(--muted)}.auth-card label{margin-top:16px}.auth-card .btn{margin-top:24px}.auth-links{display:flex;justify-content:center;gap:7px;margin-top:20px;color:var(--muted);font-size:12px}.auth-links a{color:var(--blue);font-weight:600}.demo-hint{background:#eef5fd;border:1px solid #dbe9f9;border-radius:8px;padding:12px 15px;margin-top:25px;color:#55708e;font-size:10px}.demo-hint b,.demo-hint span{display:block}.demo-hint span{font-family:Consolas,monospace;margin-top:5px}.mobile-brand{display:none}.register-wrap{min-height:100vh;background:linear-gradient(135deg,#eff6ff,#f9fbfe);display:grid;place-items:center;padding:55px 20px;position:relative}.register-wrap>.back-link{position:absolute;top:28px;left:35px}.register-card{width:min(760px,100%);background:white;padding:35px;border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow)}.error-page{text-align:center;padding:80px 20px}.error-page>b{font-size:90px;color:#d9e5f3}.error-page h1{margin:0}.error-page p{color:var(--muted);margin-bottom:25px}
@media(max-width:1100px){.resource-grid,.location-grid{grid-template-columns:repeat(2,1fr)}.metric-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.info-grid{grid-template-columns:repeat(2,1fr)}.settings-grid{grid-template-columns:1fr}.application-layout{grid-template-columns:1fr}.rules-card{position:static}.auth-shell{grid-template-columns:52% 48%}.hero-copy h1{font-size:42px}}
@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:.25s}.nav-open .sidebar{transform:none}.topbar{left:0;padding:0 15px}.menu-btn{display:block}.crumb{display:none}.content{margin-left:0;padding:88px 15px 30px}.user-meta,.phase-pill{display:none}.page-head,.detail-head{align-items:flex-start;gap:15px}.page-head h1{font-size:23px}.metric-grid{grid-template-columns:1fr 1fr}.metric{min-height:92px}.phase-banner{height:auto;padding:15px;align-items:flex-start;gap:10px}.phase-switches{flex-direction:column}.resource-grid,.location-grid{grid-template-columns:1fr}.filter-bar{flex-wrap:wrap}.filter-bar select{min-width:calc(50% - 5px);height:40px}.search-box{flex-basis:100%}.form-grid.two,.form-grid.three,.asset-picker{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}.detail-grid{grid-template-columns:1fr}.conflict-list>div{grid-template-columns:1fr 1fr;gap:5px}.auth-shell{grid-template-columns:1fr}.auth-hero{display:none}.auth-panel{min-height:100vh;padding:25px}.mobile-brand{display:block;color:var(--navy);font-weight:800;letter-spacing:1px;margin-bottom:32px}.register-card{padding:24px}.info-grid{grid-template-columns:1fr 1fr;padding:18px}.access-card{padding:30px 20px}.totp-code{font-size:39px}.table-wrap{min-width:700px}.calendar-panel{overflow-x:auto}}
@media(max-width:460px){.metric-grid{grid-template-columns:1fr}.page-head{flex-direction:column}.page-head>.btn{width:100%}.quick-grid{grid-template-columns:1fr 1fr}.title-line{flex-wrap:wrap}.info-grid{grid-template-columns:1fr}.head-actions{width:100%}.head-actions .btn{flex:1}.detail-head{flex-direction:column}.resource-summary .legend{display:none}.hero-stats{grid-template-columns:1fr 1fr}.checkbox-row{flex-direction:column;gap:10px}}
.notification-link{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#f1f5fa;color:#45617f;position:relative;font-size:18px}.notification-link b{position:absolute;right:-4px;top:-4px;min-width:17px;height:17px;border-radius:9px;background:var(--red);color:#fff;font-size:9px;display:grid;place-items:center;padding:0 4px}.resource-visual.has-image{background:#e9eef5;overflow:hidden}.resource-visual.has-image img{width:100%;height:100%;object-fit:cover}.field-help{display:block;color:var(--muted);font-weight:400;margin-top:6px}.image-gallery{display:flex;gap:10px;padding:12px;overflow-x:auto}.image-gallery img{width:min(100%,420px);height:260px;object-fit:cover;border-radius:9px}.resource-detail-grid>div{display:flex;flex-direction:column;gap:18px}.info-grid.compact{padding:0 0 20px;grid-template-columns:repeat(2,1fr)}.estimate-input{height:30px!important;margin-top:7px!important;padding:5px 8px!important;font-size:10px}.asset-picker.extended label{align-items:flex-start}.decision-card select{width:100%;border:1px solid #ccd6e2;border-radius:7px;background:white;height:40px;padding:0 10px;margin-top:7px}.cleanup-gallery{display:grid;grid-template-columns:1fr 1fr;gap:12px}.cleanup-gallery a{position:relative}.cleanup-gallery img{width:100%;height:210px;object-fit:cover;border-radius:8px}.cleanup-gallery span{position:absolute;left:8px;bottom:8px;background:rgba(10,25,44,.75);color:white;padding:5px 8px;border-radius:4px;font-size:10px}.problem-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.problem-picker label{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:7px;padding:10px;cursor:pointer}.problem-picker input{width:auto;height:auto;margin:0}.problem-picker span,.problem-admin-grid label>span{width:25px;height:25px;border-radius:50%;background:#eaf3ff;color:#1767c2;display:grid;place-items:center;font-size:10px;flex:none}.problem-picker b{font-size:11px}.simple-list>div{display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:11px 0;border-bottom:1px solid var(--line);align-items:center}.simple-list b,.simple-list span{font-size:11px}.simple-list span{color:var(--muted)}.simple-list em{font-style:normal;font-size:10px}.notification-list{overflow:hidden}.notification-list>a{display:flex;align-items:center;gap:14px;padding:16px 20px;border-bottom:1px solid var(--line)}.notification-list>a.unread{background:#f3f8ff}.notification-list i{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#eaf3ff;color:#1767c2;font-style:normal}.notification-list i.success{background:#e7f8f1;color:#078657}.notification-list i.warning{background:#fff1e0;color:#b16b08}.notification-list div{flex:1}.notification-list b,.notification-list p,.notification-list span{display:block;margin:0}.notification-list p{color:#56667b;margin:5px 0;font-size:12px}.notification-list span{color:#929dac;font-size:10px}.notification-list em{font-style:normal;font-size:22px;color:#9ba7b6}.inline-actions input{height:29px;border:1px solid #ccd6e2;border-radius:5px;padding:0 7px;max-width:150px}.collapsible{display:none;margin-bottom:18px}.collapsible.show{display:block}.problem-admin-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.problem-admin-grid label{display:flex;align-items:center;gap:9px}.problem-admin-grid input{margin:0}.settings-grid .span-all{grid-column:1/-1}
@media(max-width:760px){.problem-picker,.problem-admin-grid{grid-template-columns:1fr}.cleanup-gallery{grid-template-columns:1fr}.image-gallery img{height:210px}}

/* Resource basket, per-resource cleanup, retained assemblies and approval workflows. */
.head-actions{flex-wrap:wrap;align-items:center;justify-content:flex-end}.head-actions form{display:flex}
.basket-list{overflow:hidden}.basket-list>div{display:grid;grid-template-columns:42px minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:15px 20px;border-bottom:1px solid var(--line)}.basket-list>div:last-child{border-bottom:0}.basket-list b,.basket-list small{display:block}.basket-list small{margin-top:4px;color:var(--muted)}
.resource-card-actions{display:flex;gap:8px;margin-top:13px}.resource-card-actions .btn{height:34px;flex:1;padding:0 10px;font-size:11px}.basket-mark{font-size:10px;color:var(--green);font-weight:700}.stock-line{font-size:11px;color:#64748a;margin-top:7px}
.same-problem-box{margin:16px 0 5px;border:1px solid #d9e8fa;background:#f5f9ff;border-radius:9px;padding:13px 15px}.same-problem-box>b{display:block;font-size:12px;margin-bottom:8px}.same-problem-items{display:none;gap:7px;flex-wrap:wrap}.same-problem-items.active{display:flex}.same-problem-items>span{font-size:11px;padding:6px 9px;border-radius:6px;background:#e7f1ff;color:#245d9e}
.application-resource-table{border:1px solid var(--line);border-radius:10px;overflow:hidden}.resource-table-head,.application-resource-row{display:grid;grid-template-columns:52px minmax(150px,1.4fr) minmax(120px,.8fr) minmax(110px,.7fr) 110px;align-items:center;gap:10px}.resource-table-head{padding:10px 12px;background:#f6f8fb;color:var(--muted);font-size:10px}.application-resource-row{padding:11px 12px;border-top:1px solid var(--line)}.application-resource-row.from-basket{background:#f8fbff}.application-resource-row b,.application-resource-row small{display:block}.application-resource-row small{font-size:10px;color:var(--muted);margin-top:4px}.application-resource-row input[type=number]{height:34px;margin:0}.resource-check,.retain-check{display:flex!important;align-items:center;gap:6px}.resource-check input{display:none}.resource-check span{width:24px;height:24px;display:grid;place-items:center;border:1px solid #bdc9d8;border-radius:5px;color:transparent}.resource-check input:checked+span{background:var(--blue);border-color:var(--blue);color:#fff}.retain-check input{width:auto;height:auto;margin:0}.retain-check input:disabled+span{opacity:.45}.assembly-fields{display:none;margin-top:14px;padding:16px;border:1px solid #dbe7f5;background:#f8fbff;border-radius:9px}.assembly-fields.show{display:block}
.approval-result{display:grid;grid-template-columns:minmax(220px,1fr) minmax(140px,.6fr) minmax(260px,1.4fr);align-items:center;gap:18px;margin-bottom:18px;padding:16px 20px;border-radius:11px;border:1px solid #bce7d4;background:#f1fbf7}.approval-result.rejected{border-color:#efc5ca;background:#fff5f6}.approval-result>div:first-child{display:flex;align-items:center;gap:12px}.approval-result>div:first-child>span{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:var(--green);color:#fff;font-weight:800}.approval-result.rejected>div:first-child>span{background:var(--red)}.approval-result small,.approval-result b{display:block}.approval-result small{font-size:10px;color:var(--muted);margin-bottom:4px}.approval-comment{padding-left:18px;border-left:1px solid #cfe5da}.approval-result.rejected .approval-comment{border-color:#ecd2d5}
.assembly-request{margin:0 24px 20px;padding:16px;border:1px solid #d7e5f5;background:#f7fbff;border-radius:9px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px}.assembly-request h3{margin:5px 0}.assembly-request p{margin:0;color:var(--muted);line-height:1.6}.assembly-request>div:nth-child(2){text-align:right}.assembly-request>div:nth-child(2) span{display:block;margin-top:5px;color:var(--muted);font-size:10px}.retained-components{grid-column:1/-1;border-top:1px solid #dbe6f2;padding-top:11px}.retained-components small{display:block;color:var(--muted);margin-bottom:7px}.retained-components span{display:inline-block;margin:3px 5px 0 0;padding:5px 8px;border-radius:5px;background:#e8f2ff;font-size:10px;color:#245f9e}
.per-resource-cleanup{display:grid;gap:14px;margin-bottom:18px}.per-resource-cleanup fieldset{border:1px solid var(--line);border-radius:10px;padding:15px;margin:0}.per-resource-cleanup legend{display:flex;align-items:center;gap:9px;padding:0 7px}.per-resource-cleanup legend b,.per-resource-cleanup legend small{display:block}.per-resource-cleanup legend small{color:var(--muted);font-size:10px;margin-top:3px}.cleanup-result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.cleanup-result-grid article{border:1px solid var(--line);border-radius:9px;overflow:hidden}.cleanup-result-grid img{display:block;width:100%;height:180px;object-fit:cover}.cleanup-result-grid article>div{padding:12px}.cleanup-result-grid b,.cleanup-result-grid span{display:block}.cleanup-result-grid span{font-size:10px;color:var(--muted);margin-top:5px}.cleanup-result-grid p{font-size:11px;margin:8px 0 0}
.location-card.with-photo{grid-template-columns:88px minmax(0,1fr)}.location-photo{width:88px;height:76px;border-radius:8px;object-fit:cover;background:#edf4fc}.location-photo.placeholder{display:grid;place-items:center;color:var(--blue);font-size:25px}.location-actions{grid-column:1/-1;display:flex;gap:8px}.location-actions form{margin:0}.location-actions .btn{height:32px;padding:0 10px;font-size:10px}.location-actions label input{display:none}
.assembly-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.assembly-card{padding:18px}.assembly-card h3{margin:10px 0 6px}.assembly-card p{color:var(--muted);font-size:11px;line-height:1.5}.assembly-card .assembly-meta{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:13px;padding-top:11px;font-size:10px}.user-actions{display:flex;flex-direction:column;gap:6px;min-width:220px}.user-actions form{margin:0}.penalty-form{display:flex;gap:5px}.penalty-form input{min-width:115px;height:32px;border:1px solid #ccd6e2;border-radius:5px;padding:0 7px}.penalty-form .btn,.user-actions>.btn{height:32px;font-size:10px}.change-summary{min-width:260px;max-width:430px;white-space:normal;line-height:1.6}.change-decision{display:grid;grid-template-columns:minmax(150px,1fr) auto auto;gap:5px}.change-decision input{border:1px solid #ccd6e2;border-radius:5px;padding:0 7px}.change-decision .btn{height:32px;padding:0 10px;font-size:10px}
.status.awaiting_cleanup{background:#fff4df;color:#ad6900}
@media(max-width:1100px){.assembly-grid{grid-template-columns:repeat(2,1fr)}.resource-table-head,.application-resource-row{grid-template-columns:45px minmax(140px,1.2fr) minmax(100px,.7fr) minmax(100px,.7fr) 90px}}
@media(max-width:760px){.approval-result{grid-template-columns:1fr}.approval-comment{padding:10px 0 0;border-left:0;border-top:1px solid #cfe5da}.resource-table-head{display:none}.application-resource-row{grid-template-columns:38px 1fr;gap:9px}.application-resource-row>div:nth-of-type(2),.application-resource-row>div:nth-of-type(3),.application-resource-row>.retain-check{grid-column:2}.application-resource-row input[type=number]{max-width:160px}.cleanup-result-grid,.assembly-grid{grid-template-columns:1fr}.basket-list>div{grid-template-columns:36px 1fr}.basket-list>div>span,.basket-list>div>form{grid-column:2}.assembly-request{grid-template-columns:1fr}.assembly-request>div:nth-child(2){text-align:left}.location-card.with-photo{grid-template-columns:78px 1fr}.location-photo{width:78px;height:68px}}
.proposal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.proposal-card{display:grid;grid-template-columns:180px minmax(0,1fr);overflow:hidden}.proposal-card>a>img{display:block;width:180px;height:100%;min-height:245px;object-fit:cover}.proposal-body{padding:17px}.proposal-body h3{margin:12px 0 7px}.proposal-body>p{color:var(--muted);line-height:1.6}.proposal-body>small{display:block;color:var(--muted);margin-top:6px}.proposal-body>.notice{margin:12px 0}.proposal-body>.change-decision{margin-top:15px}.proposal-body>.btn{margin-top:14px}
@media(max-width:1100px){.proposal-grid{grid-template-columns:1fr}}
@media(max-width:620px){.proposal-card{grid-template-columns:1fr}.proposal-card>a>img{width:100%;height:190px;min-height:0}.change-decision{grid-template-columns:1fr 1fr}.change-decision input{grid-column:1/-1;height:36px}}
.registration-decision{display:grid;grid-template-columns:1fr 1fr;gap:5px}.registration-decision input{grid-column:1/-1;height:31px;border:1px solid #ccd6e2;border-radius:5px;padding:0 7px}.registration-decision .btn{height:31px;padding:0 8px;font-size:10px}

/* Global one-step type increase and bilingual problems embedded in profile. */
body{font-size:15px}.sidebar nav a{font-size:15px}.crumb{font-size:14px}.phase-pill{font-size:13px}.page-head h1{font-size:29px}.page-head p,.detail-head p{font-size:15px}.panel-head h2{font-size:18px}.panel-head p,.panel-head>a{font-size:13px}.form-panel label,.auth-card label,.decision-card label,.settings-grid label{font-size:13px}th{font-size:12px}td{font-size:13px}.btn{font-size:15px}.status{font-size:12px}.resource-body>p,.location,.schedule-info span{font-size:13px}.section-title b{font-size:17px}.section-title span{font-size:12px}
.profile-problem-list{display:grid;gap:11px}.profile-problem-list article{border:1px solid var(--line);border-radius:9px;background:#fbfdff}.profile-problem-list article.selected{border-color:#80b4eb;background:#f2f8ff;box-shadow:inset 4px 0 var(--blue)}.profile-problem-list label{display:grid;grid-template-columns:auto 38px minmax(0,1fr) auto;gap:12px;align-items:start;padding:15px;cursor:pointer;font-size:14px}.profile-problem-list input{width:18px!important;height:18px!important;margin:10px 0 0!important}.profile-problem-list label>span{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#eaf3ff;color:var(--blue);font-weight:800}.profile-problem-list label b{display:block;font-size:15px}.profile-problem-list label small{font-size:13px;color:var(--blue);margin-top:4px}.profile-problem-list p{margin:8px 0 0;color:#52647b;font-weight:400;line-height:1.65}.profile-problem-list .problem-en{color:var(--muted);font-size:13px}.profile-problem-list em{font-style:normal;background:#e7f8f1;color:#078657;border-radius:14px;padding:5px 9px;font-size:12px}
@media(max-width:760px){.profile-problem-list label{grid-template-columns:auto 34px 1fr}.profile-problem-list em{grid-column:3}}
.export-fields{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}.export-fields label{border:1px solid var(--line);border-radius:7px;padding:11px}.export-fields input{width:auto;height:auto;margin:0 6px 0 0}.export-fields span{float:right;font-size:9px;color:var(--red);background:#fff0f1;padding:2px 4px;border-radius:4px}.export-card{padding:19px;display:flex;align-items:center;gap:14px}.export-card>span{width:42px;height:42px;display:grid;place-items:center;border-radius:9px;background:#eaf3ff;color:var(--blue);font-size:20px}.export-card>div{flex:1}.export-card b,.export-card p{display:block;margin:0}.export-card p{font-size:11px;color:var(--muted);margin-top:5px}.export-card em{font-style:normal;color:var(--blue);font-size:11px}
@media(max-width:760px){.export-fields{grid-template-columns:repeat(2,1fr)}.export-card{align-items:flex-start}.export-card em{display:none}}
.profile-change-history{margin-top:18px}.sidebar nav{overflow-y:auto;padding-bottom:12px}
.btn.disabled,.btn:disabled{opacity:.55;cursor:not-allowed;background:#eef1f5;color:#748195;box-shadow:none}.fixed-occupied{background:#f0f2f5;border-color:#d8dde5}.fixed-occupied .resource-card-link{filter:saturate(.65)}.fixed-summary{margin-top:12px;padding:10px;background:#e5e9ee;border-radius:7px;display:grid;gap:5px}.fixed-summary b,.fixed-summary span,.fixed-summary small{display:block;height:auto!important}.fixed-summary span,.fixed-summary small{font-size:10px;color:#596576;line-height:1.45}.fixed-action{display:block;padding:14px;background:#dfe4ea;color:#647183;text-align:center;font-size:11px;font-weight:700;border-top:1px solid #d2d8e0}.card-basket-action{padding:0 12px 12px}.fixed-assembly-detail{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(420px,1fr);gap:25px;padding:22px;margin-bottom:18px}.fixed-assembly-detail h2{margin:7px 0}.fixed-assembly-detail p{color:var(--muted);line-height:1.65}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.contact-grid>div{display:flex;flex-direction:column;gap:5px;background:#f6f8fb;border:1px solid var(--line);padding:13px;border-radius:8px}.contact-grid small{color:var(--muted)}.contact-grid span{font-size:11px;color:#59687b}.confirm-check{display:flex!important;gap:8px;line-height:1.6;margin:12px 0}.confirm-check input{width:auto!important;height:auto!important;margin:2px 0!important}
.reservation-calendar,.history-panel{margin-top:18px;overflow:hidden}.week-calendar{height:680px;display:grid;grid-template-columns:65px repeat(7,1fr);padding:15px 15px 25px}.week-hours{position:relative;margin-top:38px}.week-hours span{position:absolute;right:10px;color:var(--muted);font-size:9px;transform:translateY(-50%)}.week-day{min-width:90px;border-left:1px solid var(--line)}.week-day>b{display:flex;justify-content:center;gap:5px;height:38px;font-size:11px}.week-day>b small{color:var(--muted)}.day-slots{height:calc(100% - 38px);position:relative;background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(7.142% - 1px),#e7ebf1 calc(7.142% - 1px),#e7ebf1 7.142%)}.calendar-event{position:absolute;left:4px;right:4px;min-height:22px;border-radius:5px;background:#dcecff;border-left:3px solid var(--blue);padding:4px;overflow:hidden;font-size:9px;z-index:2}.calendar-event.status-pending{background:#fff0ce;border-color:var(--amber)}.calendar-event strong,.calendar-event span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event span{margin-top:2px;color:#50627a}.assembly-loan-picker{display:grid;grid-template-columns:1fr 1fr;gap:9px}.assembly-loan-picker label{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:12px;cursor:pointer}.assembly-loan-picker label.from-basket{background:#f1f7ff;border-color:#bad6f6}.assembly-loan-picker input{width:auto;height:auto;margin:0}.assembly-loan-picker label>span{width:30px;height:30px;border-radius:7px;background:#e7f8f1;color:#16865f;display:grid;place-items:center}.assembly-loan-picker b,.assembly-loan-picker small{display:block}.assembly-loan-picker small{font-size:10px;color:var(--muted);margin-top:4px}.compact-step>span{font-size:9px}.assembly-return{border-color:#b9ddcf!important;background:#f6fcf9}.bench-proof img{width:100%;max-height:300px;object-fit:cover;border-radius:8px;margin-top:8px}
.chat-layout{display:grid;grid-template-columns:310px minmax(0,1fr);gap:16px;height:calc(100vh - 175px);min-height:600px}.chat-contacts,.chat-window{overflow:hidden}.chat-search{display:flex;padding:13px;border-bottom:1px solid var(--line)}.chat-search input{flex:1;min-width:0;height:38px;border:1px solid #cbd5e1;border-radius:7px 0 0 7px;padding:0 10px}.chat-search button{border:0;background:var(--blue);color:white;padding:0 12px;border-radius:0 7px 7px 0}.contact-hint{display:block;padding:10px 14px;color:var(--muted);background:#f8fafc}.contact-list{height:calc(100% - 102px);overflow-y:auto}.contact-list>a{display:flex;align-items:center;gap:10px;padding:13px;border-top:1px solid var(--line)}.contact-list>a:hover,.contact-list>a.active{background:#edf5ff}.contact-list>a>span{width:34px;height:34px;border-radius:50%;background:#dcecff;color:#1765be;display:grid;place-items:center;font-weight:700}.contact-list b,.contact-list small{display:block}.contact-list small{font-size:10px;color:var(--muted);margin-top:4px}.chat-window{display:grid;grid-template-rows:60px minmax(0,1fr) auto}.chat-window>header{display:flex;justify-content:space-between;align-items:center;padding:0 18px;border-bottom:1px solid var(--line)}.chat-window>header b,.chat-window>header small{display:block}.chat-window>header small,.chat-window>header span{font-size:10px;color:var(--muted)}.message-stream{overflow-y:auto;padding:18px;background:#f8fafc}.message{max-width:72%;margin-bottom:14px}.message.mine{margin-left:auto}.message>small{display:block;color:var(--muted);font-size:9px;margin:0 5px 4px}.message.mine>small{text-align:right}.message>div{background:white;border:1px solid var(--line);border-radius:4px 12px 12px 12px;padding:10px;box-shadow:0 3px 10px rgba(20,40,70,.04)}.message.mine>div{background:#e4f0ff;border-color:#c6dcf7;border-radius:12px 4px 12px 12px}.message p{margin:0;line-height:1.65;white-space:pre-wrap;word-break:break-word}.message img,.message video{display:block;max-width:100%;max-height:320px;border-radius:7px;margin-bottom:7px}.message-composer{padding:12px;border-top:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.composer-tools{grid-column:1/-1;display:flex;align-items:center;gap:12px;font-size:10px}.composer-tools input[type=radio]{width:auto}.composer-tools input[type=file]{font-size:10px}.composer-tools span{margin-left:auto;color:var(--muted)}.message-composer textarea{resize:none;border:1px solid #cbd5e1;border-radius:7px;padding:10px}.message-composer>.btn{height:auto}.nav-count{margin-left:auto;background:#e13e4d;color:white!important;min-width:18px;height:18px;border-radius:9px;display:grid;place-items:center;font-size:9px}.chat-window .empty{align-self:center}
@media(max-width:1100px){.fixed-assembly-detail{grid-template-columns:1fr}.week-calendar{overflow-x:auto}.chat-layout{grid-template-columns:250px 1fr}}
@media(max-width:760px){.contact-grid,.assembly-loan-picker{grid-template-columns:1fr}.reservation-calendar{overflow-x:auto}.week-calendar{min-width:850px}.chat-layout{grid-template-columns:1fr;height:auto}.chat-contacts{height:260px}.chat-window{height:650px}.message{max-width:88%}}
.system-switch{display:inline-flex;align-items:center;height:34px;padding:0 12px;border:1px solid #c8d8eb;border-radius:18px;background:#eef6ff;color:#1769c5;font-size:11px;font-weight:800;white-space:nowrap}
@media(max-width:760px){.system-switch{height:31px;padding:0 9px}.top-actions .system-switch{font-size:0}.top-actions .system-switch:after{content:"比赛";font-size:10px}}

/* Paginated resources, manageable image galleries, locations and IYPT 2027. */
.pagination{display:flex;align-items:center;justify-content:center;gap:7px;margin:24px 0}.pagination a,.pagination span{min-width:36px;height:36px;padding:0 11px;border:1px solid var(--line);border-radius:7px;background:#fff;display:grid;place-items:center;font-size:11px}.pagination a.current{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:800}.pagination a.disabled{pointer-events:none;opacity:.42}
.image-gallery.manageable{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}.image-gallery.manageable figure{margin:0;border:1px solid var(--line);border-radius:9px;overflow:hidden}.image-gallery.manageable img{width:100%;height:250px;border-radius:0}.image-gallery.manageable figcaption{min-height:49px;padding:8px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:10px}.image-gallery.manageable form{margin:0}.image-gallery.manageable .btn{height:30px;padding:0 10px;font-size:10px}.panel-head input[type=file],.location-actions input[type=file]{display:none}
.location-card.location-manage{display:block;padding:15px}.location-gallery{display:flex;gap:8px;overflow-x:auto;margin-bottom:13px}.location-gallery figure{margin:0;position:relative;flex:none}.location-gallery .location-photo{width:126px;height:92px}.location-gallery figure form{position:absolute;right:5px;top:5px}.location-gallery figure button{width:24px;height:24px;border:0;border-radius:50%;background:rgba(174,31,45,.9);color:#fff}.location-card.location-manage .loc-bottom{margin:12px 0}.location-actions{align-items:flex-start;flex-wrap:wrap}.location-actions details{position:relative}.location-actions summary{list-style:none}.location-actions details[open] summary{border-color:var(--blue);color:var(--blue)}.location-edit{position:absolute;z-index:5;right:0;top:40px;width:320px;padding:14px;border:1px solid var(--line);border-radius:9px;background:#fff;box-shadow:0 15px 40px rgba(18,43,78,.18)}.location-edit label{display:block;font-size:11px;font-weight:700;margin-bottom:9px}.location-edit input,.location-edit select,.location-edit textarea{width:100%;margin-top:5px;border:1px solid #ccd6e2;border-radius:6px;padding:7px}.location-edit .checkbox-row{display:flex;align-items:center;gap:7px}.location-edit .checkbox-row input{width:auto}.location-edit .btn{width:100%;height:36px}
.problem-bilingual-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.problem-bilingual-card{padding:22px;scroll-margin-top:88px}.problem-bilingual-card header{display:flex;gap:13px;padding-bottom:15px;border-bottom:1px solid var(--line)}.problem-bilingual-card header>span{width:42px;height:42px;display:grid;place-items:center;flex:none;border-radius:50%;background:#e8f3ff;color:var(--blue);font:800 14px Consolas}.problem-bilingual-card h2{font-size:18px;margin:0 0 5px}.problem-bilingual-card h3{font-size:13px;font-weight:600;color:#52708f;margin:0}.problem-copy{padding-top:14px}.problem-copy b{font-size:10px;letter-spacing:1px;color:var(--blue)}.problem-copy p{line-height:1.75;margin:6px 0 0;color:#485970}.problem-copy.en{border-top:1px dashed var(--line);margin-top:14px}.problem-copy.en p{font-family:"Segoe UI",Arial,sans-serif;color:#657488}.official-problem-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.official-problem-summary a{display:grid;grid-template-columns:28px 1fr;gap:3px 8px;padding:10px;border:1px solid var(--line);border-radius:7px}.official-problem-summary span{grid-row:1/3;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#eaf3ff;color:var(--blue);font-size:10px}.official-problem-summary b,.official-problem-summary small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.official-problem-summary b{font-size:11px}.official-problem-summary small{font-size:9px;color:var(--muted)}.problem-picker b small{display:block;color:var(--muted);font-weight:400;margin-top:3px}
.release-picker fieldset:has(input[type=checkbox]:checked){border-color:#9fc6f2;background:#f8fbff}.release-picker select:disabled,.release-picker input:disabled,.release-picker textarea:disabled{background:#eef1f5;opacity:.62}.release-record{border:1px solid var(--line);border-radius:10px;margin:18px 24px;padding:15px}.release-record>header{display:flex;justify-content:space-between;gap:12px;margin-bottom:13px}.release-record>header b,.release-record>header small{display:block}.release-record>header small{color:var(--muted);font-size:10px;margin-top:4px}.approval-trace{display:flex;align-items:center;gap:12px;margin-top:13px;padding-top:12px;border-top:1px solid var(--line);font-size:11px}.approval-trace>span{color:var(--muted);flex:1}.approval-trace form{min-width:470px}
@media(max-width:900px){.problem-bilingual-grid,.official-problem-summary{grid-template-columns:1fr}.image-gallery.manageable{grid-template-columns:1fr}.approval-trace{align-items:flex-start;flex-direction:column}.approval-trace form{min-width:0;width:100%}}
@media(max-width:620px){.location-edit{position:fixed;left:12px;right:12px;top:90px;width:auto}.pagination{flex-wrap:wrap}.filter-bar{flex-wrap:wrap}.filter-bar .search-box{flex-basis:100%}.filter-bar select{min-width:0;flex:1}}

/* Resource photos are always shown in full. File-size reduction is handled by
   JPEG quality first on upload; these rules never crop the visible image. */
.resource-visual.has-image{padding:8px;background:#eef3f8}
.resource-visual.has-image img{width:100%;height:100%;object-fit:contain;object-position:center}
.image-gallery.manageable figure{background:#f3f6fa}
.image-gallery.manageable .full-image-link{display:flex;width:100%;height:clamp(260px,32vw,500px);align-items:center;justify-content:center;background:#eef2f7}
.image-gallery.manageable .full-image-link img{display:block;width:100%;height:100%;max-width:100%;object-fit:contain;object-position:center;border-radius:0}
@media(max-width:620px){.image-gallery.manageable .full-image-link{height:clamp(240px,75vw,430px)}}
.lab-access-form{display:grid;grid-template-columns:120px minmax(145px,1fr) auto;gap:5px}
.lab-access-form select,.lab-access-form input{min-width:0;height:32px;border:1px solid #ccd6e2;border-radius:5px;padding:0 7px;background:#fff}
.lab-access-form .btn{height:32px;padding:0 10px;font-size:10px}
@media(max-width:760px){.lab-access-form{grid-template-columns:1fr}.lab-access-form select,.lab-access-form input,.lab-access-form .btn{width:100%}}
.retained-status{display:flex;align-items:center;min-height:42px;margin-top:7px;padding:0 12px;border:1px solid #9fcdbb;border-radius:7px;background:#eefaf5;color:#087b53;font-weight:700}
.retained-assembly-cleanup{border:1px solid #9fcdbb;border-radius:11px;background:#f3fbf7;padding:18px;margin:0 0 18px}.retained-assembly-cleanup legend{display:flex;align-items:center;gap:9px;padding:0 8px}.retained-assembly-cleanup legend b,.retained-assembly-cleanup legend small{display:block}.retained-assembly-cleanup legend small{color:var(--muted);font-size:10px;margin-top:3px}.retained-component-summary{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:15px}.retained-component-summary small{width:100%;color:var(--muted)}.retained-component-summary span{border-radius:6px;background:#e2f4eb;color:#176a4d;padding:6px 9px;font-size:10px}.retained-assembly-result{border:1px solid #b8ddcd;border-radius:10px;background:#f4fbf8;padding:14px;margin-bottom:17px}.retained-assembly-result>div:first-child{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}.retained-assembly-result>div:first-child span{color:var(--muted);font-size:11px}.assembly-photo-panel{margin-bottom:18px;overflow:hidden}.assembly-photo-panel .image-gallery,.retained-assembly-result .image-gallery{padding:14px}.assembly-photo-panel .empty{padding:28px}

/* Xi'an Jiaotong University visual identity. Official artwork is kept at its
   original aspect ratio; the surrounding product typography remains separate. */
:root{--navy:#003f70;--blue:#005699;--blue2:#0072bc;--red:#c92b2f;--xjtu-blue:#005699;--xjtu-red:#c92b2f;--bg:#f4f7fa;--shadow:0 10px 30px rgba(0,70,125,.08)}
.sidebar{background:linear-gradient(165deg,#004a82 0%,#00365f 54%,#002847 100%);overflow:hidden}
.sidebar:before{content:"";position:absolute;width:300px;height:300px;right:-150px;bottom:72px;background:url("brand/xjtu-emblem-blue.png") center/contain no-repeat;filter:brightness(0) invert(1);opacity:.035;pointer-events:none}
.sidebar>*{position:relative;z-index:1}
.xjtu-brand{height:112px;flex:0 0 auto;flex-direction:column;align-items:flex-start;justify-content:center;gap:6px;padding:12px 9px}
.xjtu-brand img{display:block;width:183px;height:auto;max-height:49px;object-fit:contain;object-position:left center}
.xjtu-brand span{display:flex;align-items:baseline;gap:7px}.xjtu-brand span b{font-size:14px;letter-spacing:.5px}.xjtu-brand span small{margin:0;color:#b8cee0;font-size:10px}
.sidebar nav{padding-top:10px;overflow-y:auto;scrollbar-width:thin}.sidebar nav a.active{background:linear-gradient(90deg,rgba(0,121,194,.92),rgba(0,86,153,.72));box-shadow:inset 3px 0 var(--xjtu-red),0 5px 14px rgba(0,0,0,.15)}
.sidebar-foot small{margin-left:auto;color:#88a9c1;letter-spacing:1.2px}.topbar{border-top:3px solid var(--xjtu-red);height:70px}.content{padding-top:101px}.phase-banner,.metric.blue-card{background:linear-gradient(120deg,#005699,#003f70)}
.btn.primary{background:linear-gradient(135deg,#0072bc,#005699);box-shadow:0 6px 14px rgba(0,86,153,.2)}
.eyebrow.blue{color:var(--xjtu-blue)}.application-layout.single-column{grid-template-columns:minmax(0,1fr);max-width:1280px}.application-layout.single-column>.form-panel{width:100%}
.auth-hero{background:radial-gradient(circle at 18% 12%,rgba(0,124,199,.62),transparent 31%),linear-gradient(145deg,#005699,#002f53)}
.auth-hero:after{content:"1896";right:-20px;bottom:-55px;font-size:210px;letter-spacing:-10px;color:rgba(255,255,255,.045)}
.xjtu-auth-brand{display:block}.xjtu-auth-brand img{display:block;width:min(330px,72%);height:auto}.xjtu-auth-brand>span{display:block;margin-top:11px;color:#c9dcea;font-size:13px;letter-spacing:1.6px}
.mobile-brand img,.register-school-mark img{display:block;width:220px;max-width:100%;height:auto}.mobile-brand span,.register-school-mark span{display:block;margin-top:8px;color:var(--xjtu-blue);font-size:12px;letter-spacing:1px}
.register-school-mark{padding-bottom:20px;margin-bottom:24px;border-bottom:1px solid var(--line)}
@media(max-width:760px){.xjtu-brand{height:104px}.mobile-brand{letter-spacing:0}.mobile-brand img{width:205px}.topbar{height:68px}.content{padding-top:88px}}

/* Door access: one verification surface for the on-site administrator and networked board. */
.access-code-seven{font-size:50px;margin-bottom:22px}.access-state{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:13px 15px;border-radius:8px;margin:0 0 14px;text-align:left}.access-state b,.access-state span{display:block}.access-state span{font-size:11px}.access-state.waiting{background:#fff7e8;color:#7a5a25}.access-state.started{background:#e9f8f1;color:#087f55}.access-admin-grid{display:grid;grid-template-columns:minmax(380px,.8fr) minmax(420px,1.2fr);gap:18px;margin-bottom:18px}.access-input-panel{padding:28px}.access-input-panel h2{font-size:23px;margin:8px 0 20px}.access-input-panel form{display:flex;gap:10px}.access-input-panel input{height:52px;min-width:0;flex:1;border:1px solid #bdcbdc;border-radius:8px;padding:0 16px;font:700 25px/1 Consolas,monospace;letter-spacing:6px}.access-input-panel .btn{height:52px}.access-input-panel>small{display:block;color:var(--muted);margin-top:13px}.active-access-panel{overflow:hidden}.active-access-panel>.panel-head>span{font-weight:800;color:var(--green)}.active-access-list{max-height:255px;overflow:auto}.active-access-list>a{display:grid;grid-template-columns:1fr auto;gap:4px 15px;padding:13px 20px;border-top:1px solid var(--line)}.active-access-list>a:first-child{border-top:0}.active-access-list b{grid-row:1/3}.active-access-list span{color:var(--muted)}.active-access-list time{font-family:Consolas,monospace;color:var(--green)}.access-pending{margin:0 0 18px}.empty.compact{padding:24px}
.expected-arrivals{overflow:hidden;margin-bottom:18px}.expected-arrivals>.panel-head>span{font-weight:800;color:var(--blue)}.arrival-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:18px}.arrival-card{display:flex;flex-direction:column;gap:7px;padding:15px;border:1px solid var(--line);border-left:4px solid #93a3b6;border-radius:9px;background:#fbfcfe}.arrival-card header{display:flex;justify-content:space-between;align-items:center;gap:8px}.arrival-card p{margin:0;color:var(--muted);font-size:12px}.arrival-card strong{font-size:13px}.arrival-card small{color:var(--muted);line-height:1.5}.arrival-badge{padding:4px 7px;border-radius:12px;background:#edf1f6;color:#617087;font-size:10px;white-space:nowrap}.arrival-card.open{border-left-color:var(--green);background:#f4fcf8}.arrival-card.open .arrival-badge{background:#dff6eb;color:#078657}.arrival-card.no_show{border-left-color:var(--red);background:#fff8f8}.arrival-card.no_show .arrival-badge{background:#ffeaec;color:#bd3542}.access-events{margin-top:18px}
@media(max-width:1000px){.arrival-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.access-admin-grid{grid-template-columns:1fr}}
@media(max-width:600px){.access-input-panel form{flex-direction:column}.access-input-panel .btn{width:100%}.access-code-seven{font-size:38px;letter-spacing:4px}.access-state{align-items:flex-start;flex-direction:column}.arrival-grid{grid-template-columns:1fr}}
.delete-application-card{border-color:#f0c7cb}.delete-application-card>h3{color:#b62936}.delete-application-card>.notice{margin:0 0 15px}.delete-application-card .confirm-check{font-weight:500}

/* Statutory ICP record link shared by authenticated and public pages. */
.site-footer{margin:34px 0 -20px;padding:18px 12px 4px;border-top:1px solid var(--line);text-align:center;font-size:12px;color:#78879a}.site-footer a{color:inherit}.site-footer a:hover{color:var(--blue);text-decoration:underline}.auth-site-footer{position:fixed;z-index:40;left:50%;bottom:10px;transform:translateX(-50%);margin:0;padding:7px 13px;border:0;border-radius:18px;background:rgba(255,255,255,.88);box-shadow:0 4px 18px rgba(16,47,92,.1);white-space:nowrap;backdrop-filter:blur(8px)}
