@charset "UTF-8";
:root{--rose:#b91559;--rose-dark:#981148;--rose-pale:#f9edf2;--ink:#252a31;--muted:#5b665f;--line:#e7e7e4;--canvas:#f6f6f3;--paper:#fff;--green:#27745b;--green-pale:#edf6f0;--amber:#94631a;--amber-pale:#fbf5e8;--red:#ac3e42;--red-pale:#fbefef;--blue:#4b6589;--blue-pale:#eef2f8;--radius:14px;--shadow:0 2px 5px #252a3103,0 10px 30px #252a3104;--font:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}
*{box-sizing:border-box}html{min-height:100%;scroll-behavior:smooth}body{margin:0;background:var(--canvas);color:var(--ink);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}a{color:var(--rose);text-decoration:none}a:hover{text-decoration:underline}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #bb155951;outline-offset:3px}input,select,textarea{width:100%;border:1px solid #d9dddE;background:#fff;border-radius:8px;min-height:43px;padding:10px 12px;color:var(--ink)}input::placeholder,textarea::placeholder{color:#616c65}textarea{min-height:110px;resize:vertical}select{padding-right:30px}input:disabled{background:#f4f5f5;color:var(--muted)}input[type=checkbox]{width:17px;min-height:17px;accent-color:var(--rose);margin:2px 0 0;flex:none}button{border:0;background:none;color:inherit}h1,h2,h3,h4,p{margin-top:0}h1{font-size:30px;line-height:1.2;letter-spacing:-.8px;font-weight:640;margin-bottom:9px}h2{font-size:17px;letter-spacing:-.2px;font-weight:630;margin-bottom:5px}h3{font-size:14px;font-weight:630;margin-bottom:7px}h4{font-size:13px;font-weight:650;margin-bottom:6px}p:last-child{margin-bottom:0}svg{flex:none;vertical-align:middle}.icon{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.nowrap{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-right{text-align:right}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;left:14px;top:-80px;z-index:100;padding:12px 18px;background:var(--ink);color:white;border-radius:8px}.skip-link:focus{top:14px}.boot-screen{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;color:var(--muted);gap:12px}.boot-mark{width:48px;height:48px;background:var(--rose);border-radius:12px;color:white;font-size:28px;display:grid;place-items:center}.loading-line{display:block;width:120px;height:3px;border-radius:8px;background:linear-gradient(90deg,var(--line),var(--rose),var(--line));background-size:200% 100%;animation:loading 1.6s linear infinite}@keyframes loading{to{background-position:200% 0}}.spinner{display:inline-block;vertical-align:middle;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.app-shell{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;border-right:1px solid var(--line);background:#fff;display:flex;flex-direction:column;padding:30px 19px 20px;z-index:20}.brand{display:flex;align-items:center;gap:11px;padding:0 13px 30px}.brand-word{font-size:25px;line-height:1;font-weight:740;letter-spacing:-1px;color:var(--rose)}.brand-divider{width:1px;height:28px;background:#d9dce0}.brand-service{font-size:12px;line-height:1.4;letter-spacing:.12em;font-weight:640;color:var(--ink);text-transform:uppercase}.project-label{margin:0 13px 19px;border-top:1px solid var(--line);padding-top:23px}.project-label span{font-size:12px;color:#616c65;text-transform:uppercase;letter-spacing:.13em}.project-label strong{display:block;font-size:13px;font-weight:600;margin-top:6px}.nav-list{display:flex;flex-direction:column;gap:5px}.nav-item{display:flex;align-items:center;gap:12px;border-radius:8px;padding:11px 13px;color:#616c65;font-weight:520;text-decoration:none;transition:background .15s,color .15s}.nav-item:hover{background:#f7f7f5;color:var(--ink);text-decoration:none}.nav-item.active{color:var(--rose);background:var(--rose-pale);font-weight:630}.nav-item .icon{width:19px;height:19px}.nav-item .nav-count{margin-left:auto;min-width:22px;padding:1px 6px;text-align:center;border-radius:5px;background:white;font-size:12px}.sidebar-bottom{margin-top:auto;padding:24px 10px 0}.connection-chip{font-size:12px;border:1px solid var(--line);padding:9px 10px;border-radius:8px;background:#fbfcfb;display:flex;gap:8px;align-items:center;color:#616c65}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}.sidebar-user{display:flex;align-items:center;gap:9px;border-top:1px solid var(--line);margin-top:20px;padding-top:19px}.avatar{width:31px;height:31px;border-radius:50%;background:#f3f1ef;display:grid;place-items:center;font-size:12px;font-weight:650;color:#6c6770;flex:none}.user-info{flex:1;min-width:0;font-size:12px}.user-info strong{display:block;font-weight:600}.logout-btn{padding:7px;color:var(--muted);border-radius:6px}.logout-btn:hover{background:var(--canvas);color:var(--rose)}.logout-btn .icon{width:16px;height:16px}.workspace{min-width:0}.topbar{height:70px;padding:0 38px;display:flex;align-items:center;justify-content:space-between;gap:15px;background:#fafaf8;border-bottom:1px solid var(--line)}.breadcrumb{font-size:12px;color:#616c65;display:flex;align-items:center;gap:10px}.breadcrumb strong{font-weight:500;color:#5d6670}.topbar-right{display:flex;align-items:center;gap:14px}.private-label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:5px}.private-label .icon{width:13px;height:13px}.pilot-pill{font-size:12px;font-weight:640;text-transform:uppercase;letter-spacing:.08em;background:white;border:1px solid var(--line);border-radius:20px;padding:5px 10px;color:#616c65}.main-content{padding:34px 38px 32px;max-width:1600px;margin:auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:27px}.eyebrow{display:block;font-size:12px;letter-spacing:.15em;text-transform:uppercase;color:#616c65;margin-bottom:10px;font-weight:640}.page-subtitle{font-size:13px;color:var(--muted);margin:0;max-width:720px}.page-actions{display:flex;gap:9px;align-items:center;flex:none;padding-top:5px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:39px;padding:9px 14px;border-radius:8px;font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap;transition:background .15s,box-shadow .15s;text-decoration:none}.btn:hover{text-decoration:none}.btn .icon{width:16px;height:16px}.btn-primary{background:var(--rose);color:#616c65;border:1px solid var(--rose)}.btn-primary:hover{background:var(--rose-dark);box-shadow:0 3px 8px #b9155917}.btn-secondary{background:white;color:#555f69;border:1px solid #dfe2e3}.btn-secondary:hover{background:#f8f9f8;border-color:#cbd0d4}.btn-quiet{color:#616c65;padding:7px 9px;min-height:34px}.btn-quiet:hover{background:#f0f1ef;color:var(--ink)}.btn-small{min-height:31px;padding:6px 9px;font-size:12px}.icon-btn{width:31px;height:31px;border:1px solid var(--line);display:inline-grid;place-items:center;border-radius:6px;color:#616c65;background:white}.icon-btn:hover{color:var(--rose);border-color:#dfb9c9}.icon-btn .icon{width:15px;height:15px}.stack{display:flex;flex-direction:column;gap:20px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0}.card-body{padding:22px 24px}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 24px 18px}.card-head h2{font-size:15px}.card-head p{margin:3px 0 0;color:var(--muted);font-size:12px}.card-footer{border-top:1px solid var(--line);padding:13px 24px;background:#fdfdfc;border-radius:0 0 var(--radius) var(--radius);font-size:12px;color:var(--muted);display:flex;justify-content:space-between;align-items:center;gap:15px}.panel-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(270px,1fr);gap:20px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.metric-card{padding:20px 21px 18px;min-height:137px;position:relative}.metric-label{font-size:12px;color:#616c65;display:flex;align-items:center;justify-content:space-between;gap:8px}.metric-label .icon{width:17px;height:17px;color:#616c65}.metric-number{font-size:33px;letter-spacing:-1px;line-height:1.2;font-weight:600;margin-top:12px}.metric-detail{font-size:12px;color:#616c65;margin-top:7px}.metric-number.rose{color:var(--rose)}.metric-number.amber{color:var(--amber)}.status-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:4px 8px;border-radius:5px;white-space:nowrap;line-height:1.3}.status-active,.status-available,.status-fresh,.status-done{color:var(--green);background:var(--green-pale)}.status-unavailable,.status-stale,.status-warning,.status-pending{color:var(--amber);background:var(--amber-pale)}.status-synthetic,.status-note,.status-info{color:var(--blue);background:var(--blue-pale)}.status-critical{color:var(--red);background:var(--red-pale)}.status-missing,.status-unknown{color:#616c65;background:#f0f2f3}.status-badge .dot{width:5px;height:5px}.notice{padding:14px 17px;display:flex;gap:10px;align-items:flex-start;border:1px solid #e6e6e2;background:#fff;border-radius:9px;color:#616c65;font-size:12px;line-height:1.6}.notice .icon{width:17px;height:17px;margin-top:2px}.notice p{margin:0}.notice strong{font-weight:620;color:#444f58}.notice.warning{border-color:#ecdfc2;background:#fffaf0;color:#616c65}.notice.info{border-color:#dce4ef;background:#f7f9fd;color:#616c65}.notice.rose{border-color:#eed5df;background:#fcf4f7;color:#616c65}.overview-banner{padding:20px 23px;background:#f1f2ee;border:1px solid #e1e5dc;border-radius:11px;display:flex;align-items:center;gap:16px;margin-bottom:22px}.banner-icon{width:39px;height:39px;border-radius:10px;display:grid;place-items:center;background:#fff;color:#616c65;flex:none}.overview-banner h2{font-size:14px;margin:0 0 4px;color:#465549}.overview-banner p{font-size:12px;color:#616c65;margin:0}.overview-banner .btn{margin-left:auto;color:#56694f;flex:none}.service-list{padding:0 24px 8px}.service-row{display:flex;gap:13px;align-items:center;padding:15px 0;border-bottom:1px solid #eff0ed}.service-row:last-child{border:0}.service-icon{width:34px;height:34px;border:1px solid var(--line);border-radius:9px;display:grid;place-items:center;color:#616c65;background:#fdfefd}.service-icon .icon{width:17px;height:17px}.service-info{min-width:0;flex:1}.service-info strong{font-size:12px;font-weight:600}.service-info span{display:block;font-size:12px;color:#616c65;margin-top:2px}.readiness-list{padding:0 24px 7px}.readiness-item{display:flex;gap:11px;padding:12px 0;border-bottom:1px solid #eff0ed}.readiness-item:last-child{border:0}.step-check{width:20px;height:20px;margin-top:2px;border-radius:50%;border:1px solid #e0e3df;color:#616c65;display:grid;place-items:center;flex:none;font-size:12px}.step-check.done{background:var(--green-pale);color:var(--green);border-color:#e0ede4}.step-check .icon{width:12px;height:12px}.readiness-item strong{display:block;font-size:12px;font-weight:580}.readiness-item p{font-size:12px;color:#616c65;margin:3px 0 0}.alert-list{padding:0 24px 6px}.alert-item{display:flex;gap:11px;padding:14px 0;border-bottom:1px solid #eff0ed}.alert-item:last-child{border:0}.alert-item>.icon{width:17px;height:17px;color:var(--amber);margin-top:3px}.alert-item p{font-size:12px;color:#616c65;margin:4px 0 0}.alert-item strong{font-size:12px;font-weight:580}.empty-state{padding:45px 26px;text-align:center;color:var(--muted)}.empty-state .empty-icon{width:55px;height:55px;margin:0 auto 16px;border:1px solid #e8e8e3;background:#f8f9f6;border-radius:16px;display:grid;place-items:center;color:#616c65}.empty-state .empty-icon .icon{width:26px;height:26px}.empty-state h3{font-size:14px;color:#5d676f;margin-bottom:6px;font-weight:570}.empty-state p{font-size:12px;max-width:430px;margin:0 auto 18px;color:#616c65}.empty-state.compact{padding:28px 25px}.empty-state.compact .empty-icon{width:43px;height:43px;border-radius:11px;margin-bottom:12px}.empty-state.compact .empty-icon .icon{width:21px;height:21px}.test-panel{display:flex;gap:14px;align-items:center;padding:18px 22px;margin-top:20px;background:#fafbfd;border-color:#e1e6ee}.test-panel>.icon{width:24px;height:24px;color:#616c65}.test-panel>div{flex:1}.test-panel h3{font-size:12px;margin-bottom:4px;font-weight:600}.test-panel p{font-size:12px;color:#616c65;margin:0}.mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.mini-stat strong{display:block;font-size:20px;font-weight:580;margin-top:4px}.mini-stat span{font-size:12px;color:#616c65}.updated-note{font-size:12px;color:#616c65;display:flex;align-items:center;gap:5px}.updated-note .icon{width:12px;height:12px}.page-foot{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:25px;color:#616c65;font-size:12px}.page-foot span{display:flex;gap:5px;align-items:center}.page-foot .icon{width:12px;height:12px}.app-error{padding:14px 18px;margin-bottom:20px;background:var(--red-pale);color:var(--red);border:1px solid #efdada;border-radius:9px;display:flex;gap:11px;align-items:center;font-size:12px}.app-error .btn{margin-left:auto;flex:none}.loading-content{display:flex;align-items:center;justify-content:center;gap:10px;min-height:330px;color:#616c65;font-size:12px}.progress-line{height:4px;background:#f0f0ed;border-radius:5px;overflow:hidden;margin-top:14px}.progress-line span{height:100%;display:block;background:var(--rose);border-radius:5px}.progress-0{width:0}.progress-20{width:20%}.progress-40{width:40%}.progress-60{width:60%}.progress-80{width:80%}.progress-100{width:100%}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 22px;border-bottom:1px solid var(--line);flex-wrap:wrap}.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:11px;flex-wrap:wrap}.search-box{position:relative;min-width:220px}.search-box .icon{position:absolute;left:11px;top:12px;width:16px;height:16px;color:#616c65}.search-box input{padding-left:35px;min-height:38px;font-size:12px;background:#fdfefd}.toolbar select{min-height:38px;width:auto;min-width:140px;font-size:12px}.tab-group{display:inline-flex;gap:3px;background:#f2f3f0;padding:3px;border-radius:7px}.tab-btn{padding:7px 11px;border-radius:5px;font-size:12px;color:#616c65;font-weight:530}.tab-btn.active{background:white;color:#505b65;box-shadow:0 1px 3px #00000008}.tab-btn span{font-size:12px;margin-left:4px;padding:1px 4px;border-radius:3px;background:#f0f2ef}.table-wrap{width:100%;overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}th{font-size:12px;font-weight:600;color:#616c65;text-transform:uppercase;letter-spacing:.07em;padding:13px 20px;border-bottom:1px solid var(--line);white-space:nowrap;background:#fdfdfb}td{padding:16px 20px;border-bottom:1px solid #eeefeb;font-size:12px;vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#fdfdfb}td .secondary{display:block;font-size:12px;color:#616c65;margin-top:4px}.device-name{display:flex;align-items:center;gap:10px;max-width:310px}.device-icon{width:31px;height:34px;background:#f6f7f4;border:1px solid #e9ece6;border-radius:7px;display:grid;place-items:center;color:#616c65}.device-icon .icon{width:15px;height:15px}.device-name strong{display:block;font-weight:570;color:#4c5761}.table-actions{display:flex;gap:7px}.table-footer{padding:13px 21px;border-top:1px solid var(--line);font-size:12px;color:#616c65;display:flex;justify-content:space-between;align-items:center;gap:15px}.table-pagination{display:flex;align-items:center;gap:8px}.table-empty{padding:35px!important;text-align:center;color:var(--muted)}.building-stack{display:flex;flex-direction:column;gap:19px}.building-head{padding:20px 23px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line)}.building-symbol{width:42px;height:42px;border-radius:10px;border:1px solid #ead6df;background:#fcf6f9;display:grid;place-items:center;color:var(--rose)}.building-symbol .icon{width:22px;height:22px}.building-title{flex:1;min-width:0}.building-title h2{font-size:16px;margin-bottom:4px}.building-title p{font-size:12px;color:#616c65;margin:0}.building-head-actions{display:flex;gap:7px;align-items:center}.floor{margin:0 23px;border-bottom:1px solid var(--line);padding:20px 0}.floor:last-child{border-bottom:0}.floor-title{display:flex;align-items:center;gap:10px;margin-bottom:14px}.floor-title>.icon{width:16px;height:16px;color:#616c65}.floor-title h3{margin:0;font-weight:550;flex:1}.floor-title .reference{font-size:12px;color:#616c65;margin-left:7px;font-weight:400}.rooms-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-left:26px}.room-tile{text-align:left;background:#fbfcfa;border:1px solid #e8ebe4;border-radius:9px;padding:13px 14px;display:flex;align-items:flex-start;gap:10px;min-height:84px}.room-tile:hover{border-color:#dfbdcc;background:#fdfafb}.room-tile>.icon{width:17px;height:17px;color:#616c65;margin-top:1px}.room-tile h4{font-size:12px;margin-bottom:4px;font-weight:570}.room-tile span{font-size:12px;color:#616c65;display:block}.room-tile .room-count{margin-left:auto;color:#616c65;background:#f1f3ec;border-radius:4px;padding:2px 5px;font-size:12px}.inline-empty{color:#616c65;font-size:12px;padding:9px 0 10px 27px}.inline-empty .btn{margin-left:8px}.inventory-summary{display:flex;gap:25px;font-size:12px;color:#616c65;margin:0 0 20px}.inventory-summary strong{font-size:13px;color:#616c65;font-weight:600;margin-right:5px}
.measure-controls{padding:19px 23px;display:flex;gap:16px;align-items:flex-end;border-bottom:1px solid var(--line);flex-wrap:wrap}.measure-controls .field{min-width:240px;flex:1;margin:0}.measure-controls .field.period-field{min-width:140px;max-width:170px;flex:.4}.measure-controls label{font-size:12px}.measure-controls select{font-size:12px;min-height:40px}.measure-summary{display:flex;gap:20px;align-items:center;padding:17px 24px;border-bottom:1px solid var(--line);background:#fdfdfb;flex-wrap:wrap}.measure-summary .name{font-size:13px;font-weight:570;flex:1}.measure-summary .meta{font-size:12px;color:#616c65}.metric-tabs{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap;padding:20px 24px 5px}.metric-tab{border:1px solid var(--line);padding:11px 14px;min-width:130px;text-align:left;border-radius:8px;background:#fff;color:#616c65}.metric-tab.active{border-color:#d9aabb;background:#fdf5f8;color:var(--rose)}.metric-tab span{display:block;font-size:12px}.metric-tab strong{font-size:21px;font-weight:550;display:block;margin:5px 0 2px}.metric-tab small{font-size:12px;font-weight:400}.chart-box{padding:20px 24px 14px}.chart-title{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:4px}.chart-title h3{font-size:12px;font-weight:550;margin:0}.chart-title p{font-size:12px;color:#616c65;margin:0}.time-chart{width:100%;height:auto;display:block;overflow:visible}.chart-grid{stroke:#eceeeb;stroke-width:1}.chart-axis-label{fill:#5b665f;font-size:12px;font-family:var(--font)}.chart-axis-label-small{font-size:12px}.chart-line{fill:none;stroke:var(--rose);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart-dot{fill:#fff;stroke:var(--rose);stroke-width:2}.chart-area{fill:#fbf0f5}.chart-no-numeric{padding:48px 20px;text-align:center;color:#616c65;font-size:12px}.chart-no-numeric .icon{display:block;margin:0 auto 12px;width:27px;height:27px;color:#616c65}.chart-caption{font-size:12px;color:#616c65;text-align:center;margin:2px 0 4px}.history-card{margin-top:20px}.quality-key{font-size:12px;color:#616c65;display:flex;align-items:center;gap:8px}.setup-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:22px;align-items:start}.setup-nav{padding:10px}.setup-step{width:100%;text-align:left;display:flex;gap:11px;padding:15px 12px;border-radius:8px;color:#616c65;align-items:flex-start}.setup-step:hover{background:#f9faf7}.setup-step.active{background:#fbf1f5;color:var(--rose)}.setup-step .step-number{width:24px;height:24px;border:1px solid #e2e6de;border-radius:50%;display:grid;place-items:center;font-size:12px;flex:none;margin-top:1px}.setup-step.active .step-number{border-color:#e5bdce;background:white}.setup-step.done .step-number{background:var(--green-pale);color:var(--green);border-color:#deebe1}.setup-step .step-number .icon{width:12px;height:12px}.setup-step strong{display:block;font-size:12px;font-weight:570}.setup-step small{display:block;font-size:12px;margin-top:3px;color:#616c65}.setup-progress{border-top:1px solid var(--line);margin:8px 12px 10px;padding-top:17px;font-size:12px;color:#616c65}.setup-progress strong{font-weight:560;color:#616c65}.setup-progress .progress-line{height:3px;margin-top:10px}.setup-content .card-head{padding:25px 28px 22px;border-bottom:1px solid var(--line)}.setup-content .card-head h2{font-size:18px;margin-bottom:6px}.setup-content .card-head .eyebrow{font-size:12px;margin-bottom:7px}.setup-content-body{padding:25px 28px}.setup-content .card-footer{padding:17px 28px;flex-wrap:wrap}.setup-content .card-footer .footer-buttons{display:flex;gap:9px;margin-left:auto}.setup-content .service-list{padding:0}.field{margin-bottom:18px}.field label,.field-label{display:block;font-size:12px;font-weight:580;color:#616c65;margin-bottom:7px}.field .optional{font-size:12px;font-weight:400;color:#616c65;margin-left:4px}.field-hint{font-size:12px;color:#616c65;margin:6px 0 0;line-height:1.6}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:17px}.field-row .field{min-width:0}.field:last-child{margin-bottom:0}.check-field{display:flex;gap:10px;align-items:flex-start;margin:15px 0;color:#616c65;font-size:12px;font-weight:400}.check-field span{display:block}.check-field small{display:block;color:#616c65;font-size:12px;font-weight:400;margin-top:4px;line-height:1.6}.form-divider{height:1px;background:var(--line);margin:23px 0}.field-legend{font-size:12px;text-transform:uppercase;letter-spacing:.09em;color:#616c65;font-weight:600;margin-bottom:17px}.configuration-summary{display:flex;gap:12px;align-items:flex-start;margin-top:20px;padding:15px 18px;border-radius:9px;background:#f4f5f0;border:1px solid #e6e9df;color:#616c65}.configuration-summary>.icon{width:18px;height:18px;margin-top:1px}.configuration-summary p{font-size:12px;line-height:1.6}.configuration-summary strong{display:block;font-size:12px;font-weight:560;margin-bottom:3px}.setup-hierarchy-status{display:flex;gap:25px;margin:23px 0}.readiness-tiles{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px}.readiness-tile{padding:17px;border:1px solid var(--line);border-radius:9px;background:#fdfefc}.readiness-tile h3{font-size:12px;font-weight:550}.readiness-tile p{font-size:12px;color:#616c65;line-height:1.6;margin:11px 0 0}.details-field{margin:8px 0 20px;border:1px solid var(--line);border-radius:8px;padding:0 15px}.details-field summary{font-size:12px;color:#616c65;cursor:pointer;padding:13px 0;font-weight:550}.details-field>div{padding:8px 0 16px}.details-field .field:last-child{margin-bottom:0}
.login-shell{min-height:100vh;display:grid;grid-template-columns:1.08fr 1fr;background:#fff}.login-story{padding:46px 65px 35px;background:#f3f3ee;border-right:1px solid #e5e6dd;display:flex;flex-direction:column;position:relative;overflow:hidden}.login-story .brand{padding:0}.login-story .brand-service{font-size:12px}.login-story-main{margin:auto 0;position:relative;z-index:1;padding:60px 0 40px}.login-story .eyebrow{color:#616c65;font-size:12px;letter-spacing:.15em;margin-bottom:20px}.login-story h1{font-size:48px;line-height:1.18;letter-spacing:-1.7px;max-width:490px;font-weight:530;color:#3c493c;margin-bottom:23px}.login-story h1 em{font-style:normal;color:var(--rose)}.login-story p{color:#616c65;line-height:1.8;font-size:13px;max-width:360px}.login-building-art{width:100%;max-width:425px;margin-top:40px;stroke:#bfc9ba;fill:none;stroke-width:1.2}.login-building-art .rose-stroke{stroke:#c98ba4}.login-building-art .soft-fill{fill:#eaece3}.login-story-foot{font-size:12px;letter-spacing:.05em;color:#616c65;display:flex;gap:9px;align-items:center;z-index:1}.login-story-foot .icon{width:13px;height:13px}.login-main{display:flex;align-items:center;justify-content:center;padding:50px 40px;position:relative}.login-form-wrap{width:100%;max-width:355px}.login-label{font-size:12px;letter-spacing:.15em;text-transform:uppercase;color:#616c65;margin-bottom:12px}.login-form-wrap h2{font-size:26px;font-weight:550;letter-spacing:-.6px;margin-bottom:9px}.login-intro{font-size:12px;color:#616c65;line-height:1.7;margin-bottom:29px}.login-form-wrap .field{margin-bottom:20px}.login-form-wrap .field label{font-size:12px;color:#616c65;font-weight:500}.login-form-wrap input{background:#fdfefc;font-size:12px;min-height:46px}.login-form-wrap .btn-primary{width:100%;min-height:45px;margin-top:5px}.login-help{font-size:12px;line-height:1.7;color:#616c65;margin-top:22px;display:flex;gap:8px;align-items:flex-start}.login-help .icon{width:14px;height:14px;margin-top:3px}.login-access{margin-top:32px;padding-top:23px;border-top:1px solid var(--line);font-size:12px;color:#616c65;display:flex;align-items:center;gap:7px}.login-access .dot{background:#7e9d7a;width:5px;height:5px}.login-error{font-size:12px;padding:10px 13px;margin:0 0 18px;border-radius:7px;background:var(--red-pale);color:var(--red)}
dialog{padding:0;border:1px solid #e1e4df;border-radius:16px;width:min(620px,calc(100vw - 36px));max-height:calc(100vh - 70px);box-shadow:0 30px 100px #1f302e26;background:white;color:var(--ink);overflow:auto}dialog::backdrop{background:#27373138;backdrop-filter:blur(3px)}.dialog-head{padding:23px 25px 20px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;z-index:2}.dialog-head h2{font-size:18px;font-weight:560;margin-bottom:4px}.dialog-head p{font-size:12px;color:#616c65;margin:0}.dialog-close{border:0;background:#f3f5f0;color:#616c65;width:29px;height:29px;display:grid;place-items:center;border-radius:50%;flex:none}.dialog-close .icon{width:16px;height:16px}.dialog-body{padding:23px 25px}.dialog-foot{padding:17px 25px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px;background:#fcfdf9;position:sticky;bottom:0;z-index:1}.dialog-body .notice{margin-bottom:20px}.dialog-error{color:var(--red);font-size:12px;background:var(--red-pale);padding:10px 12px;border-radius:6px;margin-bottom:16px}.mapping-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:12px}.mapping-head h3{font-size:12px;margin:0}.mapping-row{padding:14px 12px;border:1px solid #e3e8df;border-radius:8px;background:#fbfdf9;margin-bottom:10px;display:grid;grid-template-columns:1fr 1fr 70px 95px 25px;gap:8px;align-items:end}.mapping-row .field{margin:0}.mapping-row label{font-size:12px;margin-bottom:5px}.mapping-row input,.mapping-row select{font-size:12px;min-height:33px;padding:7px}.mapping-row .icon-btn{width:25px;height:32px;border:none;background:transparent}.room-detail-meta{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:23px}.room-detail-meta span{display:block;font-size:12px;color:#616c65;margin-bottom:3px}.room-detail-meta strong{font-size:12px;font-weight:550;color:#616c65}.room-device{display:flex;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.room-device:last-child{border-bottom:0}.room-device>div{flex:1}.room-device strong{font-size:12px;font-weight:550}.room-device small{display:block;color:#616c65;font-size:12px;margin-top:2px}.toast-region{position:fixed;bottom:25px;right:28px;z-index:100;display:flex;flex-direction:column;gap:8px;max-width:min(390px,calc(100vw - 35px))}.toast{border:1px solid #dce8dc;background:#f7fbf4;color:#616c65;border-radius:10px;box-shadow:0 8px 25px #31432c11;padding:13px 16px;font-size:12px;display:flex;gap:9px;align-items:flex-start;animation:toast-in .2s ease}.toast.error{border-color:#efdbdb;background:#fff9f7;color:#616c65}.toast .icon{width:16px;height:16px;margin-top:1px}.toast button{color:inherit;margin-left:auto;padding:0;font-size:15px;line-height:1.2}@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1600px){.main-content{padding-top:42px}.metric-card{min-height:146px}.panel-grid{gap:24px}.sidebar{padding-top:36px}}@media(max-width:1200px){.app-shell{grid-template-columns:215px minmax(0,1fr)}.sidebar{padding:27px 14px 18px}.brand{padding-left:9px;gap:9px}.brand-word{font-size:23px}.brand-service{font-size:12px}.project-label{margin-left:9px;margin-right:9px}.main-content{padding:29px 27px}.topbar{padding:0 27px}.metric-grid{gap:12px}.metric-card{padding:17px 17px 15px}.metric-label{font-size:12px}.panel-grid{grid-template-columns:minmax(0,1.2fr) minmax(260px,1fr)}.rooms-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.setup-layout{grid-template-columns:200px minmax(0,1fr);gap:17px}.setup-content .card-head,.setup-content-body{padding:22px}.setup-content .card-footer{padding:16px 22px}.login-story{padding:40px}.login-story h1{font-size:42px}.login-building-art{margin-top:25px}.table-actions{gap:4px}td,th{padding-left:16px;padding-right:16px}}
@media(max-width:1000px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-card{min-height:123px}.panel-grid{grid-template-columns:1fr}.page-head{flex-wrap:wrap;gap:14px}.page-actions{padding:0}.setup-layout{grid-template-columns:1fr}.setup-nav{display:flex;padding:8px;overflow:auto;gap:4px}.setup-step{padding:9px 10px;width:auto;min-width:125px;gap:8px}.setup-step strong{font-size:12px;white-space:nowrap}.setup-step small{font-size:12px;max-width:100px}.setup-step .step-number{width:20px;height:20px;font-size:12px}.setup-progress{display:none}.login-story h1{font-size:37px}.login-story{padding:35px}.login-main{padding:40px 30px}.login-story-main{padding:40px 0}.topbar-right .private-label{display:none}.readiness-tiles{grid-template-columns:1fr 1fr}.toolbar-left{flex:1}.toolbar-left .search-box{width:100%}.toolbar select{min-width:120px}.overview-banner .btn{font-size:12px}.mapping-row{grid-template-columns:1fr 1fr 65px 85px 22px;gap:6px}.test-panel{flex-wrap:wrap}.test-panel>.btn{margin-left:38px}}
@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;padding:18px 20px 0;border-right:0;border-bottom:1px solid var(--line)}.sidebar .brand{padding:0 0 17px;gap:10px}.brand-word{font-size:22px}.brand-divider{height:23px}.brand-service{font-size:12px}.project-label,.sidebar-bottom{display:none}.nav-list{flex-direction:row;overflow:auto;gap:10px;margin:0 -5px;padding-bottom:10px}.nav-item{padding:9px 10px;font-size:12px;gap:6px;white-space:nowrap}.nav-item .icon{width:16px;height:16px}.nav-count{display:none}.topbar{height:47px;padding:0 21px}.topbar .breadcrumb{font-size:12px}.topbar-right{gap:8px}.pilot-pill{font-size:12px;padding:4px 7px}.topbar-right .btn{font-size:12px;min-height:29px;padding:5px}.main-content{padding:24px 20px 28px}h1{font-size:26px}.eyebrow{font-size:12px;margin-bottom:8px}.page-subtitle{font-size:12px;max-width:500px}.page-head{margin-bottom:22px}.page-actions .btn{font-size:12px}.metric-grid{gap:10px;margin-bottom:17px}.metric-card{padding:16px;min-height:120px}.metric-number{font-size:30px;margin-top:11px}.metric-detail{font-size:12px}.metric-label{font-size:12px}.metric-label .icon{width:15px;height:15px}.overview-banner{padding:17px;gap:12px;flex-wrap:wrap;margin-bottom:17px}.overview-banner h2{font-size:12px}.overview-banner p{font-size:12px}.overview-banner .btn{margin-left:50px;padding:5px 0;min-height:22px}.banner-icon{width:36px;height:36px}.card-head{padding:19px 20px 15px}.card-head h2{font-size:14px}.card-head p{font-size:12px}.service-list,.readiness-list,.alert-list{padding-left:20px;padding-right:20px}.card-footer{padding:12px 20px;font-size:12px}.service-info strong,.readiness-item strong,.alert-item strong{font-size:12px}.service-info span,.readiness-item p,.alert-item p{font-size:12px}.page-foot{font-size:12px;flex-wrap:wrap;margin-top:21px}.test-panel{padding:16px 18px;gap:10px}.test-panel>div{min-width:200px}.test-panel h3{font-size:12px}.test-panel p{font-size:12px}.test-panel>.btn{margin-left:34px}.building-head{padding:18px;flex-wrap:wrap;gap:10px}.building-symbol{width:35px;height:35px}.building-title h2{font-size:14px}.building-title p{font-size:12px}.building-head-actions{margin-left:45px;flex-wrap:wrap}.floor{margin:0 18px;padding:17px 0}.floor-title h3{font-size:12px}.floor-title .reference{display:none}.floor-title .btn{font-size:12px}.rooms-grid{margin-left:0}.room-tile{padding:12px;min-height:81px}.room-tile h4{font-size:12px}.room-tile span{font-size:12px}.room-tile .room-count{font-size:12px}.inventory-summary{font-size:12px;gap:20px;margin-bottom:17px}.inventory-summary strong{font-size:12px}.toolbar{padding:15px 17px;gap:10px}.toolbar-left,.toolbar-right{gap:8px}.search-box{min-width:185px}.toolbar select{min-width:100px;flex:1;font-size:12px}.toolbar-right{width:100%}.toolbar-right select{max-width:none}.toolbar .tab-group{font-size:12px}.tab-btn{font-size:12px;padding:6px 9px}.table-footer{padding:12px 17px;font-size:12px;align-items:flex-start}.table-footer>span{max-width:230px}td{padding:13px 15px;font-size:12px}th{padding:11px 15px;font-size:12px}.device-name{min-width:160px}.device-name .secondary{font-size:12px}.device-icon{width:28px;height:31px}.status-badge{font-size:12px;padding:4px 6px}.table-actions{gap:5px}.setup-nav{margin-bottom:0}.setup-step{min-width:115px}.setup-step small{font-size:12px}.setup-content .card-head h2{font-size:17px}.setup-content .card-head,.setup-content-body{padding:21px}.setup-content .card-footer{padding:15px 21px}.setup-content .card-footer>span{width:100%;font-size:12px}.field-row{gap:13px}.field label,.field-label{font-size:12px}.field-hint{font-size:12px}.field input,.field select,.field textarea{font-size:12px}.readiness-tiles{grid-template-columns:1fr}.measure-controls{padding:16px 18px;gap:11px}.measure-controls .field{min-width:100%;flex:1}.measure-controls .field.period-field{min-width:130px;max-width:none}.measure-controls .btn{min-height:39px;font-size:12px;flex:1}.measure-summary{padding:15px 18px;gap:10px}.measure-summary .name{font-size:12px;min-width:100%}.measure-summary .meta{font-size:12px}.metric-tabs{padding:16px 18px 4px}.metric-tab{padding:10px 12px;min-width:115px}.metric-tab strong{font-size:19px}.metric-tab span{font-size:12px}.chart-box{padding:18px 16px 13px}.chart-title{padding:0 2px;align-items:flex-start}.chart-title h3{font-size:12px}.chart-title p{font-size:12px}.chart-caption{font-size:12px}.time-chart{min-height:160px}.quality-key{font-size:12px}.login-shell{grid-template-columns:1fr;min-height:100vh}.login-story{padding:25px 28px 23px;border-right:0;border-bottom:1px solid #e5e6dd}.login-story .brand{padding:0}.login-story .brand-word{font-size:22px}.login-story .brand-service{font-size:12px}.login-story-main{margin:0;padding:33px 0 0}.login-story .eyebrow{font-size:12px;margin-bottom:12px}.login-story h1{font-size:31px;letter-spacing:-1px;max-width:400px;margin-bottom:14px}.login-story p{font-size:12px;max-width:390px;margin:0;line-height:1.7}.login-building-art,.login-story-foot{display:none}.login-main{padding:36px 28px 45px;align-items:flex-start}.login-form-wrap{max-width:430px}.login-label{font-size:12px}.login-form-wrap h2{font-size:23px}.login-intro{font-size:12px;margin-bottom:25px}.login-help,.login-access{font-size:12px}.login-access{margin-top:25px;padding-top:18px}.toast-region{bottom:15px;right:15px}.toast{font-size:12px;padding:12px 14px}dialog{max-height:calc(100vh - 32px);width:calc(100vw - 24px);border-radius:12px}.dialog-head{padding:20px}.dialog-head h2{font-size:17px}.dialog-body{padding:20px}.dialog-foot{padding:15px 20px}.mapping-row{grid-template-columns:1fr 1fr 24px;gap:9px}.mapping-row .field:nth-child(3){grid-column:1}.mapping-row .field:nth-child(4){grid-column:2}.mapping-row .remove-mapping{grid-column:3;grid-row:1/span 2;align-self:center}.notice{font-size:12px;padding:12px 14px}.room-detail-meta{gap:12px}.room-detail-meta strong{font-size:12px}.room-detail-meta span{font-size:12px}.room-device strong{font-size:12px}.room-device small{font-size:12px}.configuration-summary p{font-size:12px}.configuration-summary strong{font-size:12px}}
@media(max-width:420px){.main-content{padding-left:15px;padding-right:15px}.sidebar{padding-left:15px;padding-right:15px}.nav-list{gap:3px}.nav-item{font-size:12px;padding:9px 8px}.nav-item .icon{width:14px;height:14px}.rooms-grid{grid-template-columns:1fr}.field-row{grid-template-columns:1fr;gap:0}.metric-grid{gap:8px}.metric-card{padding:14px}.metric-label{font-size:12px}.metric-detail{font-size:12px}.topbar{padding-left:16px;padding-right:16px}.topbar .breadcrumb>span:first-child{display:none}.page-actions{flex-wrap:wrap}.btn{font-size:12px}.mini-grid{gap:10px}.mini-stat strong{font-size:18px}.mini-stat span{font-size:12px}}
.mobile-logout{display:none}.stack-spacer{margin-top:20px}.table-notice{margin:15px 22px}.measure-test-notice{margin-bottom:18px}.mapping-help{margin-bottom:14px}.status-recorded{color:#616c65;background:#f0f3f7}.notice>.btn{flex:none}
@media(max-width:760px){.mobile-logout{display:inline-grid;place-items:center}.table-notice{margin:12px 17px}.notice:has(>.btn){flex-wrap:wrap}.notice>.btn{margin-left:27px}.setup-content .notice>.btn{margin-left:0}}
/* Lisibilité et cibles tactiles : les petites tailles restent réservées aux métadonnées. */
input,select,textarea,.login-form-wrap input,.field input,.field select,.field textarea{font-size:14px}
input::placeholder,textarea::placeholder{color:#616c65;opacity:1}
.login-label{color:var(--rose)}
.login-help,.login-access,.login-intro,.login-story-foot,.login-story .eyebrow,.login-story p{color:#5b665f}
.login-form-wrap .field label,.field label,.field-label{font-size:12px;color:#59665e}
.btn,.icon-btn,.logout-btn,.dialog-close{min-height:40px}
.icon-btn,.logout-btn,.dialog-close{min-width:40px}
.icon-btn,.dialog-close{width:40px;height:40px}
.mapping-row .icon-btn{min-height:40px;min-width:28px;width:28px}
.chart-axis-label{fill:#5b665f;font-size:14px}
.chart-axis-label-small{font-size:14px}
@media(max-width:760px){
  body{font-size:14px}
  .page-subtitle,.card-head p,.service-info strong,.service-info span,.readiness-item strong,.readiness-item p,.alert-item strong,.alert-item p,.empty-state p,.notice,.test-panel p,.field-hint,.check-field,.check-field small,.checklist-help,.configuration-summary p,.readiness-tile p,.inline-empty,.login-story p,.login-intro,.login-help,.login-access,.login-error,.dialog-head p,.dialog-error,.room-device strong,.room-device small,.mapping-help{font-size:14px}
  .login-story-foot,.login-label,.login-story .eyebrow,.eyebrow,.field label,.field-label,.field .optional,.metric-label,.metric-detail,.updated-note,.status-badge,.table-footer,.page-foot,.card-footer,.quality-key,.chart-caption,.chart-title p,.measure-summary .meta,.building-title p,.floor-title .reference,.room-tile span,.inventory-summary,.mini-stat span,.room-detail-meta span,.room-detail-meta strong,.setup-step strong,.setup-step small,.nav-item,.brand-service,.breadcrumb,.pilot-pill,.tab-btn,.mapping-row label,th,td .secondary{font-size:12px}
  .btn,.btn-small,.btn-quiet,.page-actions .btn,.overview-banner .btn,.building-head-actions .btn,.floor-title .btn,.measure-controls .btn,.login-form-wrap .btn-primary,.tab-btn{min-height:44px;font-size:14px;padding:10px 13px}
  .icon-btn,.logout-btn,.dialog-close{min-width:44px;min-height:44px;width:44px;height:44px}
  .nav-item{min-height:44px;padding:10px 11px}
  input,select,textarea,.login-form-wrap input,.field input,.field select,.field textarea,.toolbar select,.search-box input,.measure-controls select{font-size:16px;min-height:46px}
  .mapping-row input,.mapping-row select{font-size:14px;min-height:44px}
  .mapping-row .icon-btn{min-width:44px;min-height:44px;width:44px}
  .mapping-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 44px}
  .mapping-row input,.mapping-row select{min-width:0}
  input[type=checkbox]{width:22px;min-height:22px;margin-top:2px}
  .check-field{min-height:44px;align-items:flex-start;gap:12px}
  .check-field span{padding-top:1px}
  .setup-step{min-width:147px;min-height:66px}
  .setup-step .step-number{width:24px;height:24px;font-size:12px}
  .setup-step small{max-width:none}
  .login-story h1{font-size:34px}
  .login-story p{max-width:460px}
  .login-story-main{padding-top:30px}
  .login-form-wrap h2{font-size:25px}
  .login-main{padding-top:31px}
  .login-help{margin-top:20px;line-height:1.7}
  .login-access{line-height:1.6}
  .service-row{flex-wrap:wrap;row-gap:10px}
  .service-info{min-width:100px}
  .service-row>.icon-btn{margin-left:auto}
  .chart-box{overflow-x:auto}
  .time-chart{min-width:680px;min-height:208px}
  .chart-axis-label,.chart-axis-label-small{font-size:16px}
  .topbar{height:auto;min-height:58px;padding-top:5px;padding-bottom:5px}
  .topbar-right .btn{min-height:44px;min-width:44px;font-size:12px;padding:10px}
  .topbar .breadcrumb{font-size:12px}
  .topbar-right{gap:5px}
  .topbar-right{flex-shrink:0}
  .breadcrumb{min-width:0}
  .breadcrumb strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .table-actions{gap:8px}
  td{font-size:14px}
  .device-name strong{font-size:14px}
  .room-tile{min-height:100px}
  .room-tile h4{font-size:14px}
  .measure-summary .name{font-size:14px}
  .metric-tab{min-height:78px;min-width:145px}
  .metric-tab span,.metric-tab small{font-size:12px}
  .table-footer{gap:12px;flex-wrap:wrap}
}
@media(max-width:420px){
  .metric-card{padding:14px;min-height:146px}
  .metric-label{font-size:12px;align-items:flex-start}
  .metric-detail{font-size:12px}
  .metric-label .icon{margin-top:2px}
  .topbar-right .pilot-pill{display:none}
  .topbar .breadcrumb{font-size:12px}
  .nav-item{font-size:12px}
  .brand-service{font-size:12px}
}
/* Les contenus longs défilent dans leur panneau, sans élargir la grille de page. */
html,body,#root{min-width:0;max-width:100%}
#root,.app-shell{width:100%;min-width:0;max-width:100%}
.sidebar,.workspace,.main-content,#view,.card,.card-body,.card-head>div,.setup-content,.setup-content-body,.chart-box,.table-wrap,.toolbar-left,.toolbar-right{min-width:0}
.main-content,#view,.table-wrap,.chart-box{max-width:100%}
.table-wrap{position:relative}
.sr-only{left:0;top:0}
.building-title h2,.building-title p,.floor-title h3,.room-tile h4,.room-tile span,.device-name strong,.measure-summary .name,.room-device strong,.room-detail-meta strong,.dialog-head h2,.dialog-head p{overflow-wrap:anywhere;word-break:normal}
.floor-title h3,.room-tile>div,.room-device>div{min-width:0}
@media(max-width:760px){
  .app-shell,.setup-layout{grid-template-columns:minmax(0,1fr);width:100%;min-width:0;max-width:100%}
  .sidebar,.workspace,.main-content,#view,.setup-nav,.setup-content{width:100%;min-width:0;max-width:100%}
  .nav-list{min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain}
  .nav-item{flex-shrink:0}
  .setup-nav{overflow-x:auto;overscroll-behavior-x:contain}
  .setup-step{flex-shrink:0}
  .page-head>div:first-child{min-width:0;max-width:100%}
  .page-actions{min-width:0;max-width:100%;flex-wrap:wrap}
  .page-actions .btn{max-width:100%;white-space:normal}
  .building-head-actions{width:100%;max-width:100%;margin-left:0;justify-content:flex-end}
  .building-head-actions .btn{max-width:100%;white-space:normal}
  .floor-title{flex-wrap:wrap}
  .floor-title h3{min-width:0;flex:1}
  .floor-title .btn{max-width:100%;white-space:normal}
  .rooms-grid,.room-tile{min-width:0;max-width:100%}
  .room-tile>div{min-width:0;flex:1}
  .tab-group{max-width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain}
  .tab-btn{flex-shrink:0}
  .table-wrap{width:100%;min-width:0;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}
  .measure-controls .field{min-width:0;width:100%;flex-basis:100%}
  .measure-controls .field.period-field{min-width:0;width:100%;max-width:100%}
  .measure-controls select{max-width:100%;min-width:0}
  .setup-content .card-footer .footer-buttons{min-width:0;max-width:100%;flex-wrap:wrap}
  .setup-content .card-footer .btn{max-width:100%;white-space:normal}
  .setup-content-body .btn{max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:center}
  .dialog-foot{flex-direction:column-reverse;align-items:stretch;gap:10px}
  .dialog-foot .btn{width:100%;max-width:100%;min-width:0;white-space:normal;text-align:center}
  .dialog-head>div{min-width:0}
}
@media(max-width:420px){.rooms-grid,.field-row{grid-template-columns:minmax(0,1fr)}}
/* Le fond d'accent exige un contenu blanc, y compris après les règles de contraste. */
.btn-primary,.btn-primary:hover,.btn-primary:focus,.btn-primary:focus-visible,.btn-primary:active,.btn-primary .icon{color:#fff}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}

/* La vue Campus conserve son propre cadre; les outils de gestion restent disponibles. */
.app-shell.campus-mode{display:block}
.campus-mode>.sidebar,.campus-mode>.workspace>.topbar{display:none}
.campus-mode .main-content{padding:16px;max-width:1600px}
@media(max-width:580px){.campus-mode .main-content{padding:8px}}

/* Compact reference-room picker, shared by equipment assignment. */
#dialog:has(.equipment-local-picker){width:min(860px,calc(100vw - 32px));max-width:860px;border-radius:18px}
.equipment-local-head{padding:22px 26px 18px;align-items:center}.equipment-local-head h2{font-size:22px;letter-spacing:-.5px;margin:0}.equipment-local-head p{font-size:12px;color:#637784;margin:5px 0 0}.equipment-local-head .dialog-close{width:40px;height:40px;min-width:40px;min-height:40px;background:#f3f6f7}
.equipment-local-picker{padding:22px 26px 16px}.equipment-local-filters{padding-bottom:20px;border-bottom:1px solid #e3eaee;margin-bottom:0}.equipment-local-geography{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:16px}.equipment-local-search-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:16px;margin-top:15px}.equipment-local-field{display:flex;flex-direction:column;min-width:0;gap:7px;margin:0;font-size:12px;font-weight:550;color:#607582}.equipment-local-select,.equipment-local-search-control{display:block;position:relative;min-width:0}.equipment-local-select select,.equipment-local-search input{width:100%;max-width:100%;min-width:0;min-height:44px;box-sizing:border-box;background:#fff;border:1px solid #d9e3e9;border-radius:10px;color:#263e4b;font:inherit;font-size:14px;font-weight:450;line-height:1.35;margin:0;padding:11px 38px 11px 12px;box-shadow:none}.equipment-local-select select{appearance:none;-webkit-appearance:none;text-overflow:ellipsis;white-space:nowrap}.equipment-local-select select:disabled{color:#8997a0;background:#f6f8f9}.equipment-local-select>.icon{position:absolute;right:12px;top:50%;width:15px;height:15px;transform:translateY(-50%) rotate(90deg);pointer-events:none;color:#6d818e}.equipment-local-search input{padding-left:37px;padding-right:12px;font-weight:400}.equipment-local-search-control>.icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:#7b929f;pointer-events:none}.equipment-local-search input::placeholder{color:#7a8d98;font-weight:400}.equipment-local-field:focus-within select,.equipment-local-field:focus-within input{border-color:#7498b2;outline:2px solid #c6dce9;outline-offset:2px}
.equipment-local-results-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:18px 0 12px;min-height:26px}.equipment-local-results-head p{margin:0;color:#617a89;font-size:12px;font-weight:450}.equipment-local-reset{padding:5px 0;font-size:12px;color:#315f7d;text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:32px}.equipment-local-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}.equipment-local-results[aria-busy=true]{min-height:40px}.equipment-local-result{display:flex;align-items:center;gap:12px;min-width:0;width:100%;padding:13px 12px;border:1px solid #e1e8ed;border-radius:12px;background:#fff;text-align:left;color:#263e4b;font:inherit;cursor:pointer;transition:background .15s,border-color .15s}.equipment-local-result:hover{border-color:#87aac1;background:#f8fbfd}.equipment-local-result:focus-visible,.equipment-local-reset:focus-visible{outline:3px solid #749eb9;outline-offset:3px}.equipment-local-number{display:grid;place-items:center;flex:0 0 auto;min-width:48px;max-width:76px;min-height:44px;padding:7px 8px;border-radius:9px;background:#edf4f9;color:#2b638a;overflow-wrap:anywhere}.equipment-local-number strong{font-size:14px;font-weight:650}.equipment-local-description{display:flex;min-width:0;flex:1;flex-direction:column;gap:5px}.equipment-local-description strong{font-size:12px;font-weight:550;line-height:1.4;overflow-wrap:anywhere}.equipment-local-description small{font-size:11px;color:#6b808c;line-height:1.5;overflow-wrap:anywhere}.equipment-local-result>.icon{width:15px;height:15px;flex:none;color:#7892a3}.equipment-local-empty{grid-column:1/-1;padding:24px 18px;background:#f7f9fa;border:1px solid #e1e8ed;border-radius:12px;text-align:center}.equipment-local-empty p{font-size:13px;line-height:1.6;margin:0 0 14px;color:#637b89}.equipment-local-empty .btn{font-size:12px}.equipment-local-pagination{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:#6a818e;margin-top:18px}.equipment-local-pagination .btn{font-size:12px;padding:9px 12px;min-height:38px}.equipment-local-footer{display:flex;justify-content:flex-end;border-top:1px solid #e3eaee;margin-top:20px;padding-top:15px}.equipment-local-footer .btn{font-size:13px;min-height:40px;padding:9px 16px}
@media(max-width:580px){#dialog:has(.equipment-local-picker){width:calc(100vw - 20px);border-radius:14px}.equipment-local-head{padding:18px 17px 15px}.equipment-local-head h2{font-size:20px}.equipment-local-picker{padding:18px 17px 15px}.equipment-local-geography,.equipment-local-search-row{grid-template-columns:minmax(0,1fr);gap:13px}.equipment-local-search-row{margin-top:13px}.equipment-local-field{gap:6px}.equipment-local-select select,.equipment-local-search input{font-size:16px;min-height:46px}.equipment-local-results{grid-template-columns:minmax(0,1fr)}.equipment-local-results-head{align-items:flex-start}.equipment-local-reset{padding-top:0;text-align:right}.equipment-local-result{min-height:73px}.equipment-local-pagination .btn{font-size:12px;min-height:40px;padding:8px}.equipment-local-pagination{gap:7px}.equipment-local-footer{margin-top:16px}.equipment-local-footer .btn{min-height:44px}}
.equipment-selected-local{display:flex;flex-direction:column;gap:5px;padding:15px 17px;border:1px solid var(--line);border-radius:8px;background:var(--canvas);margin:18px 0}
.equipment-selected-local>span,.equipment-selected-local>small{font-size:12px;color:var(--muted)}
.equipment-selected-local>strong{font-size:17px}
.equipment-selected-local>p{font-size:13px;margin:0}
.equipment-selected-local>button{align-self:flex-start;margin-top:7px}
#equipment-local-picker .equipment-local-field>span:first-child,#equipment-local-picker .equipment-local-result small,#equipment-local-picker .equipment-local-result-count{color:#5e727e}
/* Native consoles keep their original interface and authentication. */
.platform-runtime{margin:0 24px 16px;border-top:1px solid #e4ebef}.platform-runtime>summary{display:flex;justify-content:space-between;align-items:center;gap:14px;cursor:pointer;list-style:none;font-size:12px;font-weight:550;color:#3e5a6b;padding:16px 0;min-height:48px}.platform-runtime>summary::-webkit-details-marker{display:none}.platform-runtime>summary small{font-size:11px;font-weight:400;color:#5e727e;margin-left:6px}.platform-runtime>summary>.icon{width:15px;height:15px;transform:rotate(90deg)}.platform-runtime[open]>summary>.icon{transform:rotate(-90deg)}.platform-runtime>.service-list{padding:0}.platform-runtime .service-info>strong{font-size:12px}.platform-runtime .service-info>span{font-size:11px}.platform-runtime .service-row>.status-badge{font-size:11px}
.native-consoles{margin-bottom:22px}.native-consoles>.card-head{padding-bottom:14px}.native-consoles>.card-head>.icon{color:#70828d;width:18px;height:18px}.native-consoles-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:0 24px}.native-console{display:flex;align-items:flex-start;gap:13px;padding:18px;border:1px solid #e0e7eb;border-radius:12px;min-width:0;background:#fafcfd}.native-console-icon{display:grid;place-items:center;width:38px;height:38px;border:1px solid #dae6ed;background:#eef5f8;border-radius:10px;color:#3d6b87;flex:none}.native-console-icon .icon{width:19px;height:19px}.native-console-copy{min-width:0;flex:1}.native-console h3{font-size:16px;margin:0 0 3px;color:#2b414e}.native-console p{font-size:12px;color:#5e727e;line-height:1.5;margin:9px 0 0;overflow-wrap:anywhere}.native-console>.btn{min-height:40px;padding:9px 12px;font-size:12px;align-self:center;flex:none}.native-console-unavailable{font-size:12px;color:#637681;align-self:center}.platform-service-group{padding:0 24px 10px}.platform-service-group>h3{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:#5e727e;margin:8px 0 0}.platform-service-group>.service-list{padding:0}.platform-service-group .service-row{align-items:flex-start}.platform-service-group .service-row>.status-badge{align-self:center}.platform-service-group .service-icon{flex:none}.service-info>small{display:block;margin-top:4px;font-size:11px;line-height:1.5;color:#5e727e;overflow-wrap:anywhere}.service-info>.service-checked{color:#6a7b86}.platform-services-empty{padding:10px 24px 22px}
@media(max-width:1000px){.native-console{flex-wrap:wrap}.native-console>.btn,.native-console-unavailable{margin-left:51px}.native-console-copy{flex-basis:calc(100% - 51px)}}
@media(max-width:640px){.native-consoles-grid{grid-template-columns:minmax(0,1fr);padding:0 18px;gap:10px}.native-consoles>.card-head{padding:19px 18px 14px}.native-console{padding:15px;gap:11px}.native-console-copy{flex-basis:calc(100% - 49px)}.native-console>.btn,.native-console-unavailable{margin-left:49px}.native-console>.btn{min-height:44px}.platform-service-group{padding:0 18px 8px}.platform-service-group .service-info{min-width:0}.platform-service-group .service-row{flex-wrap:nowrap;gap:10px}.platform-service-group .service-row>.status-badge{font-size:11px;padding:4px 7px}.service-info>small{font-size:11px}.service-info>.service-checked{font-size:10px}}

/* Release: compact technical context, no instruction banners. */
.platform-overview-panels{align-items:start}.platform-service-group .service-row{padding-top:14px;padding-bottom:14px}.native-console-copy>p{margin:5px 0 0}.native-console-scope{display:inline-flex;align-items:center;border:1px solid #dce5e9;border-radius:20px;padding:5px 8px;color:#5e727e;font-size:11px;white-space:nowrap}.native-consoles-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 24px 16px}.native-private-access{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:#5e727e}.native-private-access .icon{width:13px;height:13px}.setup-service-summary{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:7px 0 14px}.setup-service-summary>.icon{width:27px;height:27px;color:#4f748a}.setup-service-summary>div{flex:1;min-width:170px}.setup-service-summary strong{font-size:15px;font-weight:550}.setup-service-summary p{font-size:12px;color:#5e727e;margin:5px 0 0}.setup-status-note{display:flex;align-items:center;gap:8px;font-size:13px;color:#647783;margin:0 0 22px}.setup-status-note .icon{width:17px;height:17px}@media(max-width:640px){.native-console-scope{font-size:10px}.native-consoles-footer{padding:12px 18px 15px}.setup-service-summary>.btn{margin-top:4px}.platform-service-group .service-row{padding-top:12px;padding-bottom:12px}}

.native-console-identity{display:inline-flex;align-items:center;gap:5px;margin-top:9px;font-size:11px;color:#627783}.native-console-identity .icon{width:12px;height:12px}.native-console-identity[data-status=ready]{color:#357653}.native-console-identity[data-status=pending]{color:#7a683f}.native-console>.btn:disabled{cursor:default;opacity:.5}

.setup-fields{border:0;padding:0;margin:0;min-inline-size:0}.setup-fields:disabled input,.setup-fields:disabled select,.setup-fields:disabled textarea{background:#f6f8f9;color:#5e727e;border-color:#e1e7ea}.setup-fields:disabled label{color:#657783}
