:root{--hc-bg:#f5f7fa;--hc-panel:#fff;--hc-line:#e6e9ef;--hc-text:#1f2733;--hc-sub:#6b7688;--hc-brand:#16796b;--hc-brand-soft:#e6f4f1;--hc-warn:#d98600;--hc-danger:#d64545;--hc-side:#16202c;--hc-side-2:#1e2b3a}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--hc-bg);color:var(--hc-text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;font-size:14px}.page{max-width:1680px;padding:20px 24px 0}@media (width<=1000px){.page{padding:14px 12px 0}.card{padding:12px}}.page-head{align-items:flex-end;gap:12px;margin:0 0 18px;display:flex}.page-head h1{letter-spacing:.2px;white-space:nowrap;margin:0;font-size:21px;font-weight:650}.page-head .sub{color:var(--hc-sub);margin-bottom:2px;font-size:12.5px}@media (width<=960px){.page-head .sub{display:none}}.page-head .spacer{flex:1}.card{background:var(--hc-panel);border:1px solid var(--hc-line);border-radius:10px;margin-bottom:16px;padding:16px 18px}.card h2{align-items:center;gap:8px;margin:0 0 12px;font-size:14px;font-weight:650;display:flex}.card h2 .n{color:var(--hc-sub);font-size:12px;font-weight:400}.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px;display:grid}@media (width<=960px){.kpis{grid-template-columns:repeat(2,1fr)}}.kpi{background:var(--hc-panel);border:1px solid var(--hc-line);border-radius:10px;padding:14px 16px;position:relative;overflow:hidden}.kpi .lb{color:var(--hc-sub);margin-bottom:6px;font-size:12px}.kpi .v{font-variant-numeric:tabular-nums;letter-spacing:-.3px;font-size:22px;font-weight:680}.kpi .v small{color:var(--hc-sub);margin-left:3px;font-size:12px;font-weight:500}.kpi .hint{color:var(--hc-sub);margin-top:6px;font-size:11.5px}.kpi.green .v{color:var(--hc-brand)}.kpi.red .v{color:var(--hc-danger)}.kpi.amber .v{color:var(--hc-warn)}.kpi:after{content:"";background:var(--hc-brand-soft);width:3px;position:absolute;top:0;bottom:0;left:0}.kpi.green:after{background:var(--hc-brand)}.kpi.red:after{background:var(--hc-danger)}.kpi.amber:after{background:var(--hc-warn)}.num{font-variant-numeric:tabular-nums}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.dim{color:var(--hc-sub)}.danger{color:var(--hc-danger)}.ok{color:var(--hc-brand)}.warnc{color:var(--hc-warn)}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.toolbar .spacer{flex:1}.el-table{--el-table-border-color:#eef1f5}.el-table th.el-table__cell{color:#485264;font-weight:600;background:#fafbfd!important}.el-table .cell{line-height:1.5}.el-form-item__label{white-space:nowrap}.el-dialog{max-width:calc(100vw - 24px)}.tag-pub{background:var(--hc-brand-soft);color:var(--hc-brand);border:1px dashed #9fd0c6;border-radius:999px;padding:1px 7px;font-size:11.5px;display:inline-block}.empty-hint{text-align:center;color:var(--hc-sub);padding:40px 0}.day-head{border-bottom:1px solid var(--hc-line);z-index:3;background:#fff;display:flex;position:sticky;top:0}.day-meta{width:132px;color:var(--hc-sub);border-right:1px solid var(--hc-line);flex:0 0 132px;padding:6px 10px;font-size:12px}.day-cells{flex:1;display:grid}.day-cells .dh{text-align:center;color:var(--hc-sub);border-right:1px solid #f3f5f8;padding:4px 0;font-size:11px}.day-cells .dh.today{background:var(--hc-brand-soft);color:var(--hc-brand);font-weight:650}.day-cells .dh.we{background:#fafbfd}.tl-row{border-bottom:1px solid #f3f5f8;display:flex}.tl-meta{border-right:1px solid var(--hc-line);flex:0 0 132px;align-items:center;gap:6px;width:132px;padding:6px 10px;display:flex}.tl-meta .no{font-size:13px;font-weight:650}.tl-meta small{color:var(--hc-sub);font-size:11.5px}.tl-track{flex:1;position:relative}.tl-cells{display:grid;position:absolute;inset:0}.tl-cells i{cursor:pointer;border-right:1px solid #f5f7fa}.tl-cells i.td{background:#f2fbf8}.tl-cells i.we{background:#fcfcfd}.tl-cells i.longcell{cursor:not-allowed;background:repeating-linear-gradient(45deg,#f4f6f8,#f4f6f8 4px,#eceff3 4px 8px)}.tl-cells i.closedcell{cursor:not-allowed;background:repeating-linear-gradient(45deg,#f6f7f9,#f6f7f9 4px,#e9ebef 4px 8px)}.tl-bar{white-space:nowrap;cursor:pointer;color:#fff;border-radius:5px;height:20px;padding:0 6px;font-size:11.5px;line-height:20px;position:absolute;overflow:hidden;box-shadow:0 1px 2px #00000014}.tl-bar.s-预订{background:#4a7ec4}.tl-bar.s-在住{background:#16796b}.tl-bar.late{background:var(--hc-danger)}.tl-bar b{font-weight:600}.rcards{grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:12px;display:grid}.rcard{border:1px solid var(--hc-line);background:#fff;border-left:4px solid #d7dde6;border-radius:10px;padding:12px 14px}.rcard.st-free{background:#fff;border-left-color:#cfd7e1}.rcard.st-live{background:#fafdfc;border-left-color:#16796b}.rcard.st-arrive{background:#fafcff;border-left-color:#2f62b3}.rcard.st-booked{background:#fbfcff;border-left-color:#7ba2d8}.rcard.st-late{border-left-color:var(--hc-danger);background:snow}.rcard.st-long{background:#fffdf6;border-left-color:#c9a227}.rcard.st-closed{background:#f5f6f8;border-left-color:#6b7280}.rcard.st-closed .rh .no{color:#5b6472}.rcard.st-pending{background:#fffbf3;border-left-color:#c58a2a}.rcard.st-pending .rh .no{color:#8a6414}.rcard.conflict{border-color:#f0b4b4;box-shadow:inset 0 0 0 2px #fdeeee}.rcard .rh{align-items:center;gap:8px;margin-bottom:8px;display:flex}.rcard .rh .no{font-size:17px;font-weight:700}.rcard .state{border-radius:999px;padding:1px 8px;font-size:11.5px}.state.live{color:var(--hc-brand);background:#e6f4f1}.state.arrive{color:#2f62b3;background:#eaf1fb}.state.booked{color:#4a7ec4;background:#eef3fb}.state.free{color:var(--hc-sub);background:#f3f5f8}.state.late{color:var(--hc-danger);background:#fdecec}.state.long{color:var(--hc-warn);background:#fdf6e7}.state.closed{color:#5b6472;background:#eceef1}.state.pending{color:#b07212;background:#fdf3e2}.rcard .rf{align-items:baseline;gap:8px;margin-top:4px;font-size:12.5px;display:flex}.rcard .rf .k{color:var(--hc-sub);flex:0 0 56px;width:56px}.rcard .rf .v{flex:1}.rcard .money{border-top:1px dashed var(--hc-line);gap:12px;margin-top:10px;padding-top:10px;font-size:12px;display:flex}.rcard .money div{flex:1}.rcard .money b{font-variant-numeric:tabular-nums;font-size:14px;display:block}.rcard .acts{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.rcard .acts .el-button{margin-left:0}.card-legend{color:var(--hc-sub);flex-wrap:wrap;gap:14px;margin:0 0 10px;font-size:12px;display:flex}.card-legend .cl-item{align-items:center;display:inline-flex}.card-legend .cl-dot{border-radius:3px;width:10px;height:12px;margin-right:5px;display:inline-block}.cl-dot.st-free{background:#cfd7e1}.cl-dot.st-live{background:#16796b}.cl-dot.st-arrive{background:#2f62b3}.cl-dot.st-booked{background:#7ba2d8}.cl-dot.st-late{background:var(--hc-danger)}.cl-dot.st-long{background:#c9a227}.cl-dot.st-closed{background:#6b7280}.cl-dot.st-pending{background:#c58a2a}.todo{border:1px solid var(--hc-line);background:#fff;border-left-width:3px;border-radius:8px;align-items:center;gap:12px;margin-bottom:8px;padding:10px 14px;display:flex}.todo.l0{border-left-color:var(--hc-danger)}.todo.l1{border-left-color:var(--hc-warn)}.todo.l2{border-left-color:#4a7ec4}.todo.l3{border-left-color:#c8cfda}.todo .t{font-size:13.5px;font-weight:600}.todo .h{color:var(--hc-sub);margin-top:2px;font-size:12px}.todo .a{gap:6px;margin-left:auto;display:flex}.legend{color:var(--hc-sub);flex-wrap:wrap;gap:16px;margin-bottom:10px;font-size:12px;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:12px;height:10px;margin-right:5px;display:inline-block}.cat-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;display:grid}.cat-box{border:1px solid var(--hc-line);border-radius:8px;padding:10px 12px}.cat-box h3{margin:0 0 8px;font-size:13px;display:flex}.cat-box h3 .spacer{flex:1}.cat-row{border-bottom:1px dashed #f0f2f6;align-items:center;gap:6px;padding:4px 0;font-size:13px;display:flex}.cat-row:last-child{border-bottom:0}.cat-row .nm{flex:1}.cat-row .used{color:var(--hc-sub);font-size:11px}.cat-row .ops{gap:2px;display:flex}@media print{.side,.page-head,.topbar,.toolbar,.ops,button,.el-button,.el-dialog__headerbtn,.el-tabs__header,.filter-bar,nav,aside{display:none!important}body{background:#fff!important}#app{display:block!important}.page,.card,.panel,.el-card,.el-table{box-shadow:none!important;color:#000!important;background:#fff!important;border:1px solid #999!important}.el-table,.el-table__header,.el-table__body,table{color:#000!important}.el-table td,.el-table th,.el-table__cell,table td,table th{color:#000!important;background:#fff!important;border:1px solid #bbb!important}tr,.el-table__row{break-inside:avoid;page-break-inside:avoid}a{color:#000!important;text-decoration:none!important}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
