:root{font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:#203b35;background:#f5f6f2;font-size:calc(14px * var(--text-scale,1));--green:#246e59;--muted:#7b8b84;--line:#e4e9e2;--gold:#b18a47}
.rotation-controls{padding:14px 0;border-block:1px solid var(--line);margin:16px 0;display:flex;align-items:end;gap:8px}.rotation-controls label{flex:1}.rotation-controls input[type=range]{padding:0;accent-color:var(--green)}.channel-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;max-height:260px;overflow:auto;margin:12px 0}.channel-cell{font-size:calc(10px * var(--text-scale,1));padding:6px 2px!important;background:#f4f6f2}.channel-cell.occupied{background:#dbead1;color:#22593f;border-color:#8ab082}.align-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-height:320px;overflow:auto}.align-choices label{display:flex;gap:8px;align-items:center}.align-choices input{margin:0;flex-shrink:0}.sidebar nav{overflow-y:auto}.model-library .model-cards{max-height:430px;overflow:auto}
.bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:13px 20px;background:#f0f5ed;border-bottom:1px solid var(--line);font-size:calc(12px * var(--text-scale,1))}.bulk-bar small{color:#849080}.bulk-bar select{padding:6px;font-size:calc(11px * var(--text-scale,1))}.model-cards{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;padding:18px}.model-card{padding:8px 6px;background:#f9fbf6;text-align:center}.model-card.selected{outline:2px solid #3e896e;background:#e9f3e4}.model-card strong{display:block;font-size:calc(12px * var(--text-scale,1))}.model-card small{display:block;color:#8a9987;font-size:calc(10px * var(--text-scale,1));margin:5px 0}.model-art{display:block;width:100%;height:80px}.space-3d{height:520px;width:100%;position:relative}.space-3d canvas{width:100%;height:100%;display:block;touch-action:none}.quick-choice,.material-picker{font-size:calc(11px * var(--text-scale,1))!important;color:#6b8571!important;background:#f6faf2!important;margin:5px 0;max-width:100%;padding:6px!important}.material-picker{max-width:210px}.preset-chips{display:flex;flex-wrap:wrap;gap:8px}.preset-chips .tag{white-space:normal;line-height:1.8}.preview-content{min-height:220px}.preview-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.preview-toolbar label{display:flex;align-items:center;gap:8px}.preview-toolbar select{margin:0}.word-preview{padding:25px;background:#fff;border:1px solid #e2e7dd;line-height:1.9;overflow-wrap:anywhere}.word-preview table{white-space:normal}.word-preview td,.word-preview th{border:1px solid #dfe5d9;padding:8px}.text-preview{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9;font-family:inherit;background:#f9fbf5;padding:20px;max-height:65vh;overflow:auto}.sheet-preview{max-height:60vh;overflow:auto;border:1px solid #dde5d8}.sheet-preview td,.sheet-preview th{padding:8px;border:1px solid #e1e8dd;max-width:350px;overflow:hidden;text-overflow:ellipsis}.sheet-preview thead{position:sticky;top:0;background:#f2f7ed}.sheet-preview th{background:#f2f7ed}.pdf-preview{max-height:65vh;overflow:auto;background:#e4e9e1;padding:14px}.pdf-preview canvas{display:block;margin:auto;background:white;box-shadow:0 3px 20px #183e3022}.image-preview{max-width:100%;max-height:65vh;object-fit:contain}.dialog-body>.bulk-bar{margin-bottom:12px}
@media(max-width:1000px){.model-cards{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:600px){.model-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:10px}.model-art{height:62px}.space-3d{height:360px}}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}a{color:var(--green)}button:focus-visible,a:focus-visible{outline:3px solid #80bfa1;outline-offset:3px}button{border:1px solid var(--line);background:white;color:#36564b;border-radius:8px;padding:9px 14px;transition:background .15s}button:hover{background:#f0f5ef}.primary{background:var(--green);border-color:var(--green);color:white}.primary:hover{background:#175741}.danger{color:#a84444}.small{font-size:calc(12px * var(--text-scale,1));padding:6px 10px}.ghost{background:transparent;border-color:transparent}.shell{display:grid;grid-template-columns:224px 1fr;min-height:100vh}.sidebar{background:#163e35;color:#cbdcd4;padding:30px 18px;position:fixed;inset:0 auto 0 0;width:224px;display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center;padding:0 12px 33px;color:#fff}.brand-mark{border:1px solid #608878;border-radius:12px;width:39px;height:43px;display:grid;place-items:center;font-size:calc(25px * var(--text-scale,1))}.brand strong{font-size:calc(22px * var(--text-scale,1));letter-spacing:3px}.brand small{display:block;font-size:calc(9px * var(--text-scale,1));letter-spacing:2px;color:#a4beb2;margin-top:5px}.nav-label{font-size:calc(10px * var(--text-scale,1));letter-spacing:2px;color:#84a698;padding:18px 16px 9px}.nav-button{display:flex;align-items:center;gap:12px;width:100%;border:0;background:none;text-align:left;color:#b6cec1;padding:13px 15px;margin:3px 0;border-radius:8px}.nav-button svg{width:18px;height:18px;flex-shrink:0}.nav-button:hover{background:#214a3e}.nav-button.active{background:#e4efe3;color:#1c4b3b;font-weight:600}.nav-count{margin-left:auto;font-size:calc(11px * var(--text-scale,1));background:#3c5f4e;color:#e9f0dc;border-radius:5px;padding:2px 5px}.sidebar-foot{margin-top:auto;border-top:1px solid #345749;padding:18px 12px 0;font-size:calc(11px * var(--text-scale,1));line-height:1.9;color:#a6c2b3}.sidebar-foot b{color:#dfeadd}.main{grid-column:2;min-width:0}.topbar{height:78px;padding:0 36px;display:flex;justify-content:space-between;align-items:center;background:#fff;border-bottom:1px solid var(--line);gap:16px}.crumb{font-size:calc(12px * var(--text-scale,1));color:#71857a}.top-actions{display:flex;align-items:center;gap:15px}.demo{font-size:calc(11px * var(--text-scale,1));background:#f7f1e0;color:#92723c;padding:5px 8px;border-radius:4px}.role{border:0;background:#f5f7f2;font-size:calc(12px * var(--text-scale,1));padding:9px;border-radius:7px;max-width:190px}.content{max-width:1540px;margin:auto;padding:30px 36px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin:0 0 25px}.eyebrow{font-size:calc(10px * var(--text-scale,1));letter-spacing:2px;color:#7d9989;margin-bottom:8px}.page-head h1{font-size:calc(26px * var(--text-scale,1));letter-spacing:1px;font-weight:600;margin:0 0 9px}.sub{font-size:calc(12px * var(--text-scale,1));color:#7a8b81;line-height:1.8}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:24px}.metric{padding:21px 23px;background:white;border:1px solid var(--line);border-radius:12px}.metric-label{font-size:calc(12px * var(--text-scale,1));color:#748679;display:flex;align-items:center;justify-content:space-between}.metric strong{display:block;font-size:calc(29px * var(--text-scale,1));letter-spacing:.3px;font-weight:600;margin:12px 0 8px}.metric small{font-size:calc(10px * var(--text-scale,1));color:#8b9b90}.metric.featured{background:#e9f1e8;border-color:#d5e3d2}.panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:20px}.panel-head{padding:20px 23px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #edf0e9}.panel-head h2{font-size:calc(15px * var(--text-scale,1));margin:0;font-weight:600}.panel-head p{margin:6px 0 0}.panel-body{padding:22px}.grid2{display:grid;grid-template-columns:1.55fr 1fr;gap:20px}.space-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:20px}.space-grid>.panel{min-width:0}.muted{color:var(--muted)}.tag{display:inline-flex;border-radius:5px;padding:4px 8px;font-size:calc(11px * var(--text-scale,1));white-space:nowrap;background:#edf3ed;color:#4d775e}.tag.amber{background:#faf1dc;color:#a98230}.tag.blue{background:#edf2f8;color:#6485a5}.tag.red{background:#f8e9e5;color:#ad6258}.tag.gray{background:#f1f2f0;color:#8b958c}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap;font-size:calc(12px * var(--text-scale,1))}th{padding:13px 20px;font-weight:500;color:#869187;background:#fafbf8;border-bottom:1px solid var(--line)}td{padding:16px 20px;border-bottom:1px solid #eef1eb}tr:last-child td{border-bottom:0}td strong{font-weight:500}td small{display:block;color:#8a988f;font-size:calc(10px * var(--text-scale,1));margin-top:5px}tbody tr:hover{background:#fcfdf9}.num{text-align:right;font-variant-numeric:tabular-nums}.link{color:#34765b;background:none;border:0;padding:0;text-align:left}.toolbar{display:flex;gap:10px;padding:15px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}.toolbar input{flex:1;min-width:160px}.toolbar select{max-width:220px}.search{border:1px solid #e3e9df;border-radius:7px;padding:9px 11px;background:#fafbf8}.empty{text-align:center;padding:48px 20px;color:#829187;line-height:2}.empty strong{display:block;color:#466951;font-size:calc(15px * var(--text-scale,1))}.notice{padding:12px 16px;background:#eef4e9;border:1px solid #dae7d2;border-radius:8px;font-size:calc(12px * var(--text-scale,1));color:#607b58;line-height:1.8;margin-bottom:18px}.notice.warn{background:#fbf5e8;border-color:#eee3c9;color:#8b774e}.space-toolbar{display:flex;gap:8px;align-items:center;padding:13px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}.seg{display:flex;background:#f0f3ec;padding:3px;border-radius:7px}.seg button{padding:6px 11px;background:transparent;border:0;font-size:calc(11px * var(--text-scale,1))}.seg button.selected{background:white;box-shadow:0 1px 4px #233b3512}.map-shell{background:#f8faf6;padding:14px;position:relative}.lab-map{display:block;width:100%;height:auto;min-height:300px;max-height:580px;touch-action:none}.fixture{cursor:pointer}.fixture:hover{filter:brightness(.96)}.fixture text{pointer-events:none;font-family:"Microsoft YaHei",sans-serif}.map-caption{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:13px 20px;font-size:calc(11px * var(--text-scale,1));color:#89968a;border-top:1px solid var(--line)}.dot{width:7px;height:7px;display:inline-block;border-radius:50%;margin-right:6px}.location-title{font-size:calc(21px * var(--text-scale,1));margin:10px 0}.detail-kv{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:20px 0}.detail-kv small{display:block;color:#8a998e;font-size:calc(10px * var(--text-scale,1));margin-bottom:6px}.detail-kv span{font-size:calc(13px * var(--text-scale,1))}.slot-card{border:1px solid var(--line);border-radius:8px;padding:13px;margin-bottom:10px}.slot-card h4{margin:0 0 10px;color:#7c8d80;font-size:calc(11px * var(--text-scale,1));font-weight:400}.stock-line{padding:9px 0;border-top:1px solid #eef2e9}.stock-line strong{font-size:calc(12px * var(--text-scale,1));font-weight:500}.stock-line small{display:block;font-size:calc(10px * var(--text-scale,1));color:#9aa392;margin:5px 0}.progress{height:7px;background:#edf2e9;border-radius:5px;overflow:hidden}.progress>span{display:block;height:100%;background:#679c7c;border-radius:5px}.bar-row{margin-bottom:20px}.bar-row>div:first-child{display:flex;justify-content:space-between;gap:12px;font-size:calc(12px * var(--text-scale,1));margin-bottom:9px}.timeline{list-style:none;padding:0;margin:0}.timeline li{padding:0 0 19px 20px;position:relative;font-size:calc(12px * var(--text-scale,1));border-left:1px solid #dfe8db;margin-left:4px;line-height:1.6}.timeline li:before{content:"";position:absolute;left:-4px;top:5px;width:7px;height:7px;border-radius:50%;background:#85ab8a}.timeline small{display:block;color:#9ca696;font-size:calc(10px * var(--text-scale,1));margin-top:4px}.task-card{display:flex;gap:13px;padding:15px 0;align-items:center;border-bottom:1px solid #eef1e9}.task-card:last-child{border:0}.task-icon{background:#edf3e8;color:#608359;width:36px;height:36px;display:grid;place-items:center;border-radius:8px}.task-card b{font-size:calc(12px * var(--text-scale,1));font-weight:500}.task-card p{font-size:calc(10px * var(--text-scale,1));color:#94a08f;margin:5px 0}.task-card button{margin-left:auto}.catalog{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.supplier{padding:22px;background:white;border:1px solid var(--line);border-radius:12px}.supplier h3{font-size:calc(16px * var(--text-scale,1));margin:12px 0}.supplier p{font-size:calc(12px * var(--text-scale,1));color:#819180;line-height:1.8}.supplier .initial{width:40px;height:40px;background:#eaf1e5;color:#6c8d60;display:grid;place-items:center;border-radius:10px;font-size:calc(20px * var(--text-scale,1))}dialog{width:min(940px,calc(100vw - 40px));max-height:90vh;border:0;border-radius:15px;padding:0;box-shadow:0 25px 80px #18382c44;color:#2c4437}dialog::backdrop{background:#162d2a77;backdrop-filter:blur(3px)}.dialog-head{padding:22px 26px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.dialog-head h2{margin:0;font-size:calc(20px * var(--text-scale,1))}.dialog-body{padding:24px 26px}.dialog-foot{padding:18px 26px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;background:#fafbf8;position:sticky;bottom:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid .full{grid-column:1/-1}label{display:block;font-size:calc(12px * var(--text-scale,1));color:#617760}label input,label select,label textarea{display:block;width:100%;margin-top:7px}input,select,textarea{border:1px solid #dfe6da;background:#fff;border-radius:7px;padding:10px;color:#334b39;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid #b4d0b7;border-color:#73a07c}textarea{resize:vertical;min-height:76px}input[type=checkbox]{width:16px;height:16px;accent-color:#3c805a}.form-error{color:#b24c43;font-size:calc(12px * var(--text-scale,1));margin:12px 0}.line-editor{overflow:auto;margin-top:20px}.line-editor th,.line-editor td{padding:8px}.line-editor input,.line-editor select{padding:8px;width:100%;min-width:65px}.line-editor .wide{min-width:140px}.line-editor .medium{min-width:100px}.total{font-size:calc(21px * var(--text-scale,1));font-weight:600;text-align:right;padding:16px}.upload-zone{padding:25px;border:1px dashed #a6bda0;border-radius:9px;background:#f8fbf4;margin:15px 0}.upload-zone input{width:100%;margin-top:12px}.pill-tabs{display:flex;gap:6px;flex-wrap:wrap}.pill-tabs button{font-size:calc(11px * var(--text-scale,1))}.pill-tabs button.active{background:#e8f0e2;color:#37683f;border-color:#cbdfc4}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%) translateY(100px);background:#234e3c;color:white;padding:13px 24px;border-radius:9px;font-size:calc(13px * var(--text-scale,1));z-index:1000;transition:transform .2s;max-width:90vw;box-shadow:0 7px 25px #19352822}#toast.show{transform:translateX(-50%) translateY(0)}.footnote{font-size:calc(10px * var(--text-scale,1));color:#97a290;line-height:1.8;margin:16px 0}.wide-chart{display:grid;grid-template-columns:1fr 1fr;gap:30px}.budget-line input{max-width:110px}.mobile-title{display:none}.map-controls{margin-left:auto}.fixture-list{max-height:210px;overflow:auto}.fixture-list button{display:flex;justify-content:space-between;width:100%;font-size:calc(11px * var(--text-scale,1));padding:9px 11px;margin-bottom:5px}.fixture-list button.selected{background:#e9f2e3;border-color:#b5cfaa}.badge-circle{font-size:calc(11px * var(--text-scale,1));background:#dcebd6;border-radius:12px;padding:2px 7px}.mini-stats{display:flex;gap:25px}.mini-stats div{font-size:calc(10px * var(--text-scale,1));color:#8a9984}.mini-stats b{display:block;color:#466241;font-size:calc(19px * var(--text-scale,1));margin-top:5px}.checklist{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}.source-code{font-size:calc(10px * var(--text-scale,1));word-break:break-all;white-space:normal;color:#91a18a;max-width:200px}.home-hero{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(110deg,#e6efdf,#f5f7ef);border:1px solid #dae6d0;padding:22px 26px;border-radius:12px;margin-bottom:23px;gap:20px}.home-hero h2{font-size:calc(19px * var(--text-scale,1));margin:0 0 8px;font-weight:500}.home-hero p{font-size:calc(12px * var(--text-scale,1));color:#768b68;line-height:1.8;margin:0}
.login-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(at 20% 20%,#dae9d8,transparent 60%),#f3f6ef;padding:24px}.login-card{background:white;padding:38px;width:min(460px,100%);border:1px solid #dae5d4;border-radius:16px;box-shadow:0 16px 60px #173b2910}.login-card h1{font-size:calc(24px * var(--text-scale,1));margin:0 0 15px}.login-card label{margin:18px 0}.login-card button[type=submit]{width:100%;padding:12px}.login-card .brand-mark{border-color:#b5c9b2}.login-card .brand small{color:#8aa07d}
#toast{visibility:hidden;opacity:0}#toast.show{visibility:visible;opacity:1}
@media(min-width:1600px){.content{padding-top:38px}.space-grid{grid-template-columns:minmax(0,1fr) 340px}}
@media(max-width:1150px){.sidebar{width:186px;padding:25px 12px}.shell{grid-template-columns:186px 1fr}.content{padding:25px 22px}.topbar{padding:0 22px}.space-grid{grid-template-columns:1fr}.space-aside{display:grid;grid-template-columns:1fr 1fr;gap:20px}.metrics{gap:10px}.metric{padding:18px 14px}.metric strong{font-size:calc(25px * var(--text-scale,1))}.catalog{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.shell{display:block}.sidebar{position:sticky;top:0;width:100%;padding:10px 12px;z-index:20;display:block}.brand,.nav-label,.sidebar-foot{display:none}.sidebar nav{display:flex;overflow:auto;gap:5px}.nav-button{width:auto;white-space:nowrap;margin:0;padding:10px;font-size:calc(12px * var(--text-scale,1));gap:5px}.nav-button svg{width:15px}.nav-count{display:none}.topbar{height:60px;padding:0 15px}.crumb{display:none}.top-actions{width:100%;justify-content:space-between;gap:5px}.top-actions .small{font-size:calc(10px * var(--text-scale,1));padding:5px}.content{padding:22px 15px}.page-head{display:block}.page-head .actions{margin-top:14px}.page-head h1{font-size:calc(24px * var(--text-scale,1))}.metrics{grid-template-columns:1fr 1fr}.metric strong{font-size:calc(24px * var(--text-scale,1))}.grid2,.wide-chart,.form-grid,.space-aside{grid-template-columns:1fr}.catalog{grid-template-columns:1fr}.panel-head{padding:17px}.panel-body{padding:17px}.home-hero{padding:20px;align-items:flex-start;flex-direction:column}.dialog-body{padding:18px}.dialog-head{padding:18px}.form-grid .full{grid-column:auto}.map-shell{padding:3px}.lab-map{min-height:250px}.demo{font-size:calc(10px * var(--text-scale,1))}.role{max-width:155px}.space-toolbar{padding:10px}.space-toolbar button{font-size:calc(10px * var(--text-scale,1));padding:7px}.metric-label{font-size:calc(11px * var(--text-scale,1))}}

.people-lines{display:inline-block;white-space:normal;font-size:calc(11px * var(--text-scale,1));line-height:1.8;min-width:120px}
.kind-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.kind-card{padding:25px 18px;text-align:left;background:#f6faf3}.kind-card strong{display:block;font-size:calc(18px * var(--text-scale,1));margin-bottom:12px}.kind-card small{display:block;line-height:1.9;color:#789078}
.template-picker{background:#f5f8f1;border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:22px}.inline-choice{display:flex;gap:8px;align-items:center}.inline-choice input{margin:0;min-width:16px;flex:none}
body.space-fullscreen{overflow:hidden}body.space-fullscreen #space-workspace{position:fixed;inset:0;z-index:100;background:#f5f6f2;padding:16px;overflow:auto;grid-template-columns:minmax(0,1fr) 320px;align-items:start}
body.space-fullscreen .space-toolbar{position:sticky;top:0;z-index:2;background:white}body.space-fullscreen .space-3d{height:calc(100vh - 205px);min-height:330px}body.space-fullscreen .lab-map{height:calc(100vh - 205px);max-height:none}
body.space-fullscreen .space-aside{display:block;max-height:calc(100vh - 32px);overflow:auto}
@media(max-width:760px){.kind-cards{grid-template-columns:1fr}.kind-card{padding:16px}body.space-fullscreen #space-workspace{grid-template-columns:1fr;padding:8px}.dialog-foot{flex-wrap:wrap}.panel-head{flex-wrap:wrap}}
/* Spatial workbench: readable selection, adjustable directory and receipt previews. */
.room-toolbar,.directory-options{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:12px 18px;background:rgba(255,255,255,.7);border:1px solid rgba(156,179,201,.3);border-radius:14px;margin:10px 0}
.room-toolbar label,.directory-options label{display:flex;align-items:center;gap:10px;font-size:calc(12px * var(--text-scale,1));font-weight:600;margin:0}.room-toolbar select{min-width:180px}.directory-options{margin:0;border:0;border-radius:0;padding:8px 16px;gap:10px}.directory-options select{padding:5px;min-height:28px;width:auto}
.fixture-list{display:grid!important;grid-template-columns:repeat(var(--directory-columns,1),minmax(0,1fr));gap:7px;align-content:start}.fixture-list button{white-space:normal;text-align:left;min-width:0;line-height:1.5}.fixture-list button.selected{background:#214b73!important;color:#fff!important;box-shadow:0 3px 12px #214b7330;border-color:#163d64;font-weight:700}.fixture-list button.selected .muted{color:#c8e4ff}
#alignment-guides line{stroke:#d345a2;stroke-width:1.4;stroke-dasharray:5 3;vector-effect:non-scaling-stroke}.model-label{filter:drop-shadow(0 1px 2px #172e3e25)}
.receipt-map{border:1px solid #c8d8e4;background:linear-gradient(135deg,#f4f9fd,#fff);border-radius:14px;padding:12px;margin-top:8px}.receipt-map svg{display:block;width:100%;height:230px}.receipt-map-heading{display:flex;justify-content:space-between;gap:12px;font-size:calc(12px * var(--text-scale,1));color:#214b73}.receipt-map p{margin:4px 0 0}.csv-records{max-height:360px;overflow:auto;border:1px solid #dce5ed;border-radius:10px;margin-top:12px}.csv-records label{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;margin:0;border-bottom:1px solid #edf1f5;font-size:calc(12px * var(--text-scale,1))}.csv-records input{flex:0 0 auto}.csv-records span{overflow-wrap:anywhere}
.archive-details td{white-space:normal;min-width:110px}.archive-details td:nth-child(2){min-width:180px;overflow-wrap:anywhere}.archive-details td:nth-child(4){min-width:260px;max-width:420px}.archive-details td:last-child{min-width:230px}.archive-details .table-wrap{overflow:auto;max-width:100%}.archive-details small{white-space:normal;line-height:1.7}
.space-3d{position:relative;overflow:hidden}.model-tag-3d{position:absolute;z-index:3;pointer-events:none;padding:5px 9px;border-radius:7px;background:rgba(25,49,70,.95);color:#fff;border:1px solid #7794ae;box-shadow:0 2px 8px #11293b25;font:500 11px/1.45 system-ui,sans-serif;white-space:pre-line;max-width:210px;text-align:center;transform:translate(-50%,-100%)}
.location-panel .slot-card{margin-top:10px}.location-panel .detail-kv{margin-top:24px;padding-top:16px;border-top:1px solid #dae3ea}
@media(max-width:700px){.fixture-list{grid-template-columns:repeat(min(var(--directory-columns,1),2),minmax(0,1fr))}.receipt-map svg{height:180px}}
/* Labels use screen pixels independently of room scale and model rotation. */
.map-shell{position:relative}.plan-label-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}.label-connectors{position:absolute;inset:0;pointer-events:none}.label-connectors path{fill:none;stroke-width:1;opacity:.6}
.plan-label{position:absolute;pointer-events:auto;border:1px solid var(--label-color);border-left-width:3px;border-radius:6px;background:rgba(23,45,65,.94);color:#fff;padding:3px 6px;min-height:34px;height:34px;box-shadow:0 2px 6px #19364c24;text-align:center;font:500 10px/13px system-ui,sans-serif;transition:background .15s,box-shadow .15s;transform:none!important}
.plan-label span,.plan-label small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:calc(10px * var(--text-scale,1));line-height:13px;color:inherit}.plan-label small{color:#d2e4f4}.plan-label:hover,.plan-label.selected{background:#155b91;color:#fff;box-shadow:0 0 0 2px #f0a84b80}.model-tag-3d{font-size:calc(10px * var(--text-scale,1));line-height:1.4;max-width:180px;padding:4px 7px}.slot-tags{display:flex;gap:5px;flex-wrap:wrap;margin:8px 0}.slot-tags .tag{font-size:calc(11px * var(--text-scale,1))}.export-datasets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.export-dataset{padding:18px;text-align:left;background:#f0f6fd;color:#205080;border-color:#ccdfef}.csv-filters{margin-top:16px}.csv-records label[hidden]{display:none}
.role-shortcuts{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin:20px 0}.role-shortcut{padding:22px;text-align:left;white-space:normal;background:linear-gradient(135deg,#f3f8ffdd,#ffffffcc);border:1px solid #cedfeb;box-shadow:0 6px 24px #1d4c7610;border-radius:18px;transition:transform .2s,box-shadow .2s}.role-shortcut:hover{transform:translateY(-3px);box-shadow:0 10px 28px #1d4c7620}.role-shortcut strong{display:block;font-size:calc(17px * var(--text-scale,1));color:#225b88;margin-bottom:9px}.role-shortcut small{display:block;font-size:calc(12px * var(--text-scale,1));color:#647c91;line-height:1.6}.personal-filters{flex-wrap:wrap}.personal-filters label{min-width:150px;margin:0}
