/* 房态图 */
.v20-toolbar,.v20-stats{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
.v20-stats .yel{color:#a06b00}.v20-stats .gry{color:#777}
.v20-mapwrap{display:grid;grid-template-columns:1fr 300px;gap:14px;align-items:start}
.v20-map{overflow:auto;max-height:calc(100vh - 300px)}
.v20-floor{display:flex;gap:5px;margin-bottom:5px;align-items:center}.v20-fl{width:40px;color:#889;font-size:12px;flex:none}
.v20-cell{width:88px;flex:none;border:2px solid transparent;border-radius:6px;padding:4px 6px;font-size:12px;line-height:1.3;text-align:left;cursor:pointer;box-shadow:none}
.v20-cell b,.v20-cell span{display:block}
.v20-cell.green{background:#dff3e8;color:#16704a}.v20-cell.yellow{background:#fff1d6;color:#8a5a00}.v20-cell.red{background:#fde3e0;color:#a8322a}.v20-cell.grey{background:#eceeee;color:#666}
.v20-cell.sel{border-color:#134a42;box-shadow:0 0 0 2px #fff inset}
.v20-preview{position:sticky;top:10px}.v20-preview .wide,button.wide{display:block;width:100%;margin:6px 0}
/* 催费中心 */
.v20-tabs{display:flex;gap:6px;margin-bottom:12px}
.v20-filter{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}.v20-filter label{display:flex;gap:6px;align-items:center;margin:0}
.v20-filter input[type=number]{width:80px}.v20-filter input:not([type]){flex:1;min-width:200px}
.v20-actbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}
.v20-table{width:100%;border-collapse:collapse;font-size:14px}.v20-table th{text-align:left;color:#6b7b77;font-weight:500;border-bottom:1px solid #e3e8e6;padding:7px 8px}.v20-table td{padding:7px 8px;border-bottom:1px solid #f0f3f2;vertical-align:top}
.v20-content{max-width:420px;font-size:13px}.v20-scroll{max-height:50vh;overflow:auto}
.v20-lv{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px}.lv1{background:#e6effc;color:#2d5fa8}.lv2{background:#fff1d6;color:#8a5a00}.lv3{background:#fde3e0;color:#a8322a}.lv4{background:#a8322a;color:#fff}
.notice.red{background:#fde8e6;color:#a8322a;padding:8px 12px;border-radius:6px}
.v20-cfg{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 16px}.v20-cfg .wide,.v20-cfg details,.v20-cfg button{grid-column:1/-1}.v20-cfg textarea{width:100%}
/* 张贴单 */
.v20-page{page-break-after:always;border:1px dashed #ccc;padding:10px;margin-bottom:12px}.v20-page h4{margin:0 0 8px}
.v20-notice{display:inline-block;width:48%;vertical-align:top;border:1px solid #333;margin:0 1% 10px 0;padding:10px;box-sizing:border-box;min-height:220px;position:relative;font-size:14px}
.v20-notice h3{margin:0 0 6px;font-size:16px}.v20-qr{float:right;width:96px;height:96px;border:2px dashed #555;font-size:12px;text-align:center;display:flex;flex-direction:column;justify-content:center;margin-left:8px;word-break:break-all}
.v20-qr small{font-size:9px}
.v20-printbody{font-family:"Microsoft YaHei",sans-serif}.v20-printbody .v20-page{border:0}
@media print{.v20-page{border:0;margin:0}}
/* 统一页面模板：标题 + 操作 / 一行筛选 / 表格 / 分页 */
.v20-page-main .card{border-radius:10px}
.v20-page-main .card>h2{display:flex;align-items:center;gap:8px;justify-content:space-between}
.v20-page-main table td .actions,.v20-page-main td{white-space:normal}
.v20-page-main td button{padding:4px 10px;font-size:13px}
.v20-page-main .report-tabs{display:flex;flex-wrap:wrap;gap:6px}
@media (max-width:1100px){.v20-mapwrap{grid-template-columns:1fr}.v20-cfg{grid-template-columns:1fr}}
#rotationCreate,#rotationFill,#rotationHold {display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin:16px 0;}
#rotationCreate label,#rotationFill label,#rotationHold label {display:flex;flex-direction:column;gap:6px;min-width:0;}
#rotationCreate input,#rotationFill input,#rotationHold select {box-sizing:border-box;width:100%;max-width:100%;}
#rotationCreate p,#rotationCreate button,#rotationFill button,#rotationHold h3,#rotationHold button {grid-column:1/-1;}
#rotationCreate button,#rotationFill button,#rotationHold button {justify-self:start;}
.staff-photo{display:block;max-width:160px;max-height:190px;object-fit:contain;margin:12px 0;}
.garage-overview{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:14px;margin-bottom:16px;align-items:start}.garage-overview>.card{margin:0;min-width:0}.garage-overview h2,.garage-overview h3{margin:0 0 10px}.garage-overview p{margin:8px 0;line-height:1.6}.garage-search{display:flex;align-items:end;gap:8px;flex-wrap:wrap}.garage-search label{display:flex;flex-direction:column;gap:5px;font-size:12px}.garage-search input{max-width:220px}.garage-rules{background:#f8fbf9}.garage-rules summary{cursor:pointer;color:#247864;font-size:13px}.garage-rules details p{font-size:12px}@media(max-width:1050px){.garage-overview{grid-template-columns:1fr}}
.rotation-board-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.rotation-board-head h2{margin:0}.rotation-board-head p{margin:8px 0}.rotation-lanes{display:grid;grid-template-columns:1fr 1fr;gap:18px}.rotation-lane{min-width:0;border:1px solid #dce7e2;border-radius:10px;overflow:hidden}.rotation-lane>header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:#e7f4ec}.rotation-lane>header h3{margin:0;font-size:17px}.waiting-lane>header{background:#fff3d0}.rotation-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:12px;max-height:530px;overflow-y:auto;align-content:start}.rotation-person{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:12px;background:#f1f9f4;color:#2d5543;border:1px solid #d5e8dc;border-radius:8px;min-width:0}.rotation-person.waiting{background:#fffaf0;color:#66552e;border-color:#ede1bf}.rotation-person:hover{border-color:#21806a;box-shadow:0 2px 6px #183c4315}.rotation-person strong{font-size:21px}.rotation-position{font-size:11px;color:#66776d}.rotation-person small{color:#52675d;font-size:12px;overflow-wrap:anywhere}.rotation-person em{position:absolute;right:9px;top:9px;font-size:10px;font-style:normal;background:white;border:1px solid #d5d8d4;padding:2px 5px;border-radius:4px}#rotationManagement>summary{cursor:pointer;font-weight:600;padding:4px}#rotationManagement>div{padding-top:12px}@media(max-width:1000px){.rotation-lanes{grid-template-columns:1fr}.rotation-cards{max-height:420px}}@media(max-width:520px){.rotation-cards{grid-template-columns:1fr}}
.rotation-register-0{background:#e1f3e8;color:#1d6942}.rotation-register-1{background:#fff2be;color:#715b14}.rotation-register-2{background:#fff;color:#4d6260;border:1px solid #cbd6d3}.report-tabs button.chosen{outline:2px solid #287768;outline-offset:2px}
.rental-badge{display:inline-block!important;vertical-align:middle;background:#e7efff;color:#345c99;border:1px solid #c7d8f2;border-radius:4px;font-size:11px!important;font-style:normal;padding:1px 5px;margin-left:5px;white-space:nowrap}.v20-cell .rental-badge{padding:0 2px;margin-left:3px;font-size:10px!important}.rental-heading h2{margin:0}.rental-heading p{margin:8px 0}.rental-heading .search-tools{margin-bottom:0}
.garage-board{margin:0 0 16px}.garage-board-heading{align-items:flex-start}.garage-board-heading h2{margin:0;font-size:20px}.garage-board-heading h2 small{font-size:12px;font-weight:500;color:#73847e;margin-left:8px}.garage-board-heading p{margin:7px 0 0}.garage-view-switch{display:flex;gap:6px;flex-shrink:0}.garage-view-switch button,.garage-category-tabs button{border:1px solid #d8e4df;background:#fff;color:#45615a;border-radius:7px;padding:8px 13px;cursor:pointer}.garage-view-switch button.chosen,.garage-category-tabs button.chosen{background:#147d6c;border-color:#147d6c;color:#fff}.garage-stats{display:grid;grid-template-columns:repeat(4,minmax(100px,1fr));gap:10px;margin:14px 0}.garage-stats>div{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:#f5f8f7;border:1px solid #e7eeeb;border-radius:8px;color:#5e756d}.garage-stats b{font-size:20px;color:#183f38}.garage-map-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 0;border-top:1px solid #edf1ef}.garage-category-tabs,.garage-map-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.garage-category-tabs button{padding:7px 11px;font-size:13px}.garage-map-actions input{width:min(260px,58vw)}.garage-legend{display:flex;gap:8px 15px;flex-wrap:wrap;padding:8px 0 13px;color:#637770;font-size:12px}.garage-legend span{display:inline-flex;align-items:center;gap:6px}.garage-legend i{width:12px;height:12px;border:1px solid #d4e1dc;border-radius:4px}.garage-zone{margin-top:12px;border:1px solid #e4ece8;border-radius:10px;overflow:hidden}.garage-zone>header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#f7faf8;color:#60766d}.garage-zone h3{margin:0;color:#244b42;font-size:15px}.garage-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:7px;padding:10px}.garage-slot{display:flex;min-width:0;min-height:58px;flex-direction:column;justify-content:center;align-items:flex-start;gap:5px;padding:8px 9px;text-align:left;border:1px solid #dbe6e1;border-radius:7px;color:#2d4e45;cursor:pointer;transition:transform .12s,border-color .12s,box-shadow .12s}.garage-slot:hover{transform:translateY(-1px);border-color:#21816d;box-shadow:0 3px 10px #173f3618}.garage-slot b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.garage-slot span{font-size:11px;opacity:.88}.space-available{background:#e7f5ec;border-color:#b9ddc6!important;color:#286344!important}.lease-active{background:#e8f2fb;border-color:#c4d9ef!important;color:#315e82!important}.lease-priority,.ground-hold{background:#fff3d6;border-color:#efd69a!important;color:#795d17!important}.lease-alert{background:#fce9e6;border-color:#efc1b8!important;color:#9d4135!important}.ground-used{background:#dff2e8;border-color:#afd9c3!important;color:#176442!important}.ground-rotation{background:#f1f6f3;border-color:#d6e2dc!important;color:#587168!important}.private-ok{background:#eeeafa;border-color:#d4caee!important;color:#5f4f86!important}.needs-review{background:#fff0df;border-color:#f0d0a8!important;color:#8b5b18!important}.space-unknown{background:#f0f2f1;border-color:#dce1de!important;color:#6e7c76!important}.garage-empty{padding:28px;text-align:center}.garage-footnote{margin:12px 0 0;font-size:12px}.garage-live-table{width:100%;border-collapse:collapse}.garage-live-table th,.garage-live-table td{padding:9px 10px;border-bottom:1px solid #edf1ef;text-align:left;white-space:nowrap}.garage-live-table .garage-status{display:inline-block;padding:4px 8px;border:1px solid;border-radius:999px;font-size:12px}.garage-live-table td:nth-child(4){max-width:240px;overflow:hidden;text-overflow:ellipsis}@media(max-width:780px){.garage-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.garage-map-toolbar{align-items:stretch}.garage-map-actions{width:100%}.garage-map-actions input{flex:1;width:auto}.garage-grid{grid-template-columns:repeat(auto-fill,minmax(88px,1fr))}.garage-slot{min-height:54px;padding:7px}.garage-live-table{min-width:760px}}
.wb-main{max-width:1600px}.wb-welcome{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:28px 30px;background:linear-gradient(110deg,#e4f2ee,#f9fbfa);border:1px solid #dce9e5;border-radius:14px;margin:18px 0 24px}.wb-welcome h2{font-size:27px;margin:9px 0;color:#20574f}.wb-welcome p{margin:0;color:#58716c}.wb-date{color:#58716c;white-space:nowrap}.wb-heading{font-size:17px;margin:18px 0 12px}.wb-shortcuts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:24px}.wb-shortcuts button{position:relative;background:white;border:1px solid #dfe8e5;color:#254c44;padding:22px;text-align:left;transition:border-color .15s,background .15s}.wb-shortcuts button:hover{border-color:#238471;background:#f4faf7}.wb-shortcuts strong{display:block;font-size:18px;margin-bottom:8px}.wb-shortcuts span{font-size:13px;color:#667f78}.wb-shortcuts i{position:absolute;right:20px;top:20px;font-style:normal;color:#609486}.wb-todos h2,.wb-status h2{font-size:17px;margin:0 0 12px}.wb-todos>button{display:flex;align-items:center;gap:18px;width:100%;text-align:left;background:white;color:#3d5750;border-top:1px solid #edf2f0;border-radius:0;padding:14px 2px}.wb-todos>button b{margin-left:auto;color:#7c8f88;font-weight:500}.wb-todos .has-items{color:#13785f;background:#edf7f1;border-radius:5px;padding:3px 8px}.wb-status{display:flex;justify-content:space-between;align-items:center;gap:16px}.wb-status p{margin:0;color:#71847d;font-size:13px}@media(max-width:1000px){.wb-shortcuts{grid-template-columns:repeat(2,minmax(0,1fr))}.wb-welcome{padding:20px;flex-wrap:wrap}}@media(max-width:650px){.wb-shortcuts{grid-template-columns:1fr}.wb-status{flex-wrap:wrap}}
.garage-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}.garage-slot{min-height:104px;padding:13px;gap:10px}.garage-slot-top{display:flex;width:100%;align-items:center;justify-content:space-between;gap:6px}.garage-slot-top b{font-size:16px}.garage-slot-top span{font-size:11px}.garage-slot .garage-slot-holder{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.garage-slot-date{font-size:12px;font-weight:500}.pk-space-actions{position:sticky;bottom:0;background:white;padding:12px 0;border-top:1px solid #e7eeeb}@media(max-width:780px){.garage-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.garage-slot{min-height:100px}}
.garage-period{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 15px;margin:8px 0;background:#edf6f2;border-radius:8px;color:#315e50}.garage-period span{margin-left:auto;color:#607a6f}.garage-status-tabs{display:flex;gap:6px;flex-wrap:wrap;padding:5px 0 12px}.garage-status-tabs button{padding:6px 12px;font-size:12px}.garage-status-tabs .chosen{background:#147d6c;color:white}.garage-grid .garage-slot{min-height:132px;justify-content:flex-start}.garage-slot .garage-slot-plates{line-height:1.5;overflow-wrap:anywhere;font-size:12px}.garage-slot small{font-size:11px;opacity:.8}.garage-pending>p{padding:0 12px}
.garage-board .garage-grid{grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:7px;padding:8px}.garage-board .garage-grid .garage-slot{min-height:108px;padding:9px 10px;gap:5px;line-height:1.35}.garage-board .garage-slot-top{gap:4px}.garage-board .garage-slot-top b{font-size:14px}.garage-board .garage-slot-top span{font-size:10px;flex-shrink:0}.garage-board .garage-slot .garage-slot-holder,.garage-board .garage-slot .garage-slot-plates,.garage-board .garage-slot-date{font-size:12px}.garage-board .garage-slot .garage-slot-plates{line-height:1.35}.garage-board .garage-slot small{font-size:10px;line-height:1.3}@media(max-width:520px){.garage-board .garage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
