:root{--bg:#f4f7f6;--surface:#fff;--ink:#17312e;--muted:#657875;--line:#dce7e4;--primary:#0f766e;--primary-dark:#0a5a54;--soft:#e6f4f1;--danger:#c2413a;--warning:#a16207;--radius:18px;--shadow:0 12px 35px rgba(28,64,60,.08)}
*{box-sizing:border-box}html{font-family:Inter,"Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;background:var(--bg);color:var(--ink)}body{margin:0;min-width:320px}a{color:var(--primary);text-decoration:none}button,input,select,textarea{font:inherit}.topbar{height:72px;padding:0 max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;gap:28px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:10px;font-weight:800;color:var(--ink);white-space:nowrap}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:var(--primary);color:white;font-size:13px}.desktop-nav{display:flex;align-items:center;gap:22px;flex:1}.desktop-nav a{color:#425754;font-weight:650;font-size:14px}.desktop-nav a:hover{color:var(--primary)}.top-actions{display:flex;align-items:center;gap:8px}.inline-form{display:inline-flex;margin:0}.text-button{border:0;background:transparent;color:var(--primary);font-weight:700;cursor:pointer;padding:10px}.page-shell{width:min(1180px,calc(100% - 40px));margin:0 auto;padding:40px 0 80px}.alert{padding:14px 18px;border-radius:12px;margin-bottom:18px;font-weight:650}.alert-success{background:#dff4ea;color:#166534}.alert-error{background:#fde8e7;color:#9f2d28}.hero-row,.page-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px}.hero-row{padding:28px 0 8px}.hero-row h1,.page-heading h1{font-size:clamp(30px,4vw,48px);line-height:1.05;margin:8px 0 10px;letter-spacing:-.035em}.hero-row p,.page-heading p,.access-layout>div>p{color:var(--muted);margin:0;max-width:600px;line-height:1.7}.eyebrow{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--primary)}.button{min-height:44px;padding:11px 18px;border-radius:12px;border:1px solid transparent;font-weight:750;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.button.primary{background:var(--primary);color:white}.button.primary:hover{background:var(--primary-dark)}.button.secondary{background:white;color:var(--ink);border-color:var(--line)}.button.danger{color:var(--danger);background:#fff3f2;border-color:#f1c8c5}.button.light{color:var(--primary);background:white}.button.full{width:100%}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0 36px}.stats-grid.four{grid-template-columns:repeat(4,1fr)}.stat-card{min-height:126px;background:white;border:1px solid var(--line);border-radius:16px;padding:22px;display:flex;flex-direction:column;justify-content:space-between}.stat-card span{color:var(--muted);font-size:14px}.stat-card strong{font-size:28px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin:24px 0 12px}.section-heading h2{font-size:20px;margin:0}.booking-list{display:grid;gap:12px}.booking-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;background:white;border:1px solid var(--line);border-radius:16px;padding:16px;color:var(--ink);transition:.2s}.booking-card:hover{transform:translateY(-1px);box-shadow:var(--shadow);border-color:#bddbd6}.booking-card h3{margin:0 0 5px;font-size:16px}.booking-card p{margin:0;color:var(--muted);font-size:14px}.date-chip{width:54px;height:58px;border-radius:12px;background:var(--soft);display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--primary)}.date-chip strong{font-size:20px}.date-chip span{font-size:11px;text-transform:uppercase}.status{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800;white-space:nowrap}.status-confirmed{background:#dcf4eb;color:#176b4d}.status-cancelled{background:#f7e5e3;color:#9f3731}.empty-state{padding:48px;text-align:center;color:var(--muted);border:1px dashed #bfd0cd;border-radius:16px}.form-card{padding:28px;max-width:880px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-grid label,.auth-card label,.access-form label,.filter-row label{display:flex;flex-direction:column;gap:8px;font-size:14px;font-weight:700}.form-grid .span-2{grid-column:span 2}input,select,textarea{width:100%;min-height:46px;border:1px solid #cbd9d6;border-radius:10px;background:white;color:var(--ink);padding:10px 12px;outline:none}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(15,118,110,.12)}.form-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:24px}.form-actions form{margin:0}.auth-layout{min-height:calc(100vh - 190px);display:grid;grid-template-columns:1.15fr .85fr;align-items:center;gap:80px}.auth-intro h1{font-size:clamp(42px,7vw,72px);line-height:1;margin:12px 0 20px;letter-spacing:-.05em}.auth-intro p{font-size:19px;line-height:1.7;color:var(--muted);max-width:560px}.auth-card{padding:32px;display:grid;gap:18px}.auth-card h2{margin:0 0 4px}.demo-accounts{display:grid;gap:7px;background:var(--soft);padding:14px;border-radius:12px;color:var(--muted);font-size:13px}.demo-accounts code{color:var(--ink)}.detail-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:20px}.detail-card,.qr-card{padding:28px}.detail-card h2,.qr-card h2{margin-top:0}.detail-card dl{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:26px 0}.detail-card dl div{border-bottom:1px solid var(--line);padding-bottom:14px}.detail-card dt{font-size:12px;color:var(--muted);margin-bottom:6px}.detail-card dd{margin:0;font-weight:750}.qr-card{text-align:center}.qr-card img{max-width:100%;height:auto;border-radius:14px}.qr-card p{color:var(--muted);font-size:14px}.qr-disabled{padding:80px 10px;background:#f4f5f5;color:var(--muted);border-radius:14px}.admin-grid{display:grid;grid-template-columns:1.55fr .8fr;gap:22px}.table-card{background:white;border:1px solid var(--line);border-radius:16px;overflow:auto}table{width:100%;border-collapse:collapse;min-width:620px}th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);font-size:13px}th{color:var(--muted);font-weight:700;background:#fafcfb}.room-list{display:grid;gap:10px}.room-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:white;border:1px solid var(--line);border-radius:14px;padding:14px}.room-row div{display:grid;gap:4px}.room-row small{color:var(--muted)}.filter-row{display:flex;justify-content:flex-end;margin:-8px 0 16px}.filter-row label{width:230px}.reset-panel{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px;margin-top:26px;border:1px solid #efcfcc;background:#fff8f7;border-radius:16px}.reset-panel p{margin:4px 0 0;color:var(--muted)}.access-layout{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center;min-height:calc(100vh - 190px)}.access-layout h1{font-size:clamp(38px,6vw,66px);line-height:1;margin:12px 0 20px}.access-form{padding:28px;display:grid;gap:17px}.result-shell{min-height:calc(100vh - 190px);display:grid;place-items:center}.access-result{width:min(680px,100%);padding:52px;text-align:center;border-radius:28px;color:white;box-shadow:0 24px 70px rgba(16,65,59,.18)}.result-allowed{background:linear-gradient(145deg,#0f766e,#169b78)}.result-denied{background:linear-gradient(145deg,#9f2f2a,#d65347)}.result-icon{width:86px;height:86px;border-radius:50%;display:grid;place-items:center;margin:0 auto 24px;background:rgba(255,255,255,.18);font-size:54px}.access-result .eyebrow{color:rgba(255,255,255,.75)}.access-result h1{font-size:44px;margin:10px 0}.access-result p{color:rgba(255,255,255,.8)}.result-meta{display:flex;justify-content:center;gap:20px;margin:24px 0;color:white;font-weight:700}.mobile-nav{display:none}
@media(max-width:820px){.topbar{height:64px;padding:0 16px}.brand span:last-child{display:none}.desktop-nav{display:none}.top-actions{margin-left:auto}.page-shell{width:min(100% - 28px,680px);padding:26px 0 96px}.hero-row,.page-heading{align-items:flex-start;flex-direction:column}.hero-row .button,.page-heading .button{width:100%}.hero-row h1,.page-heading h1{font-size:34px}.stats-grid,.stats-grid.four{grid-template-columns:1fr 1fr}.stat-card{min-height:105px}.stat-card:nth-child(3){grid-column:span 2}.booking-card{grid-template-columns:auto 1fr}.booking-card>.status{grid-column:2;justify-self:start}.form-card{padding:20px}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}.form-actions{position:static;background:transparent;padding-top:0}.detail-grid,.auth-layout,.access-layout,.admin-grid{grid-template-columns:1fr;gap:20px}.auth-layout{padding-top:30px}.auth-intro h1{font-size:46px}.auth-intro p{font-size:16px}.detail-card,.qr-card,.auth-card,.access-form{padding:22px}.detail-card dl{grid-template-columns:1fr}.table-card{overflow:auto}.reset-panel{align-items:flex-start;flex-direction:column}.reset-panel .button{width:100%}.access-result{padding:38px 20px}.access-result h1{font-size:34px}.result-meta{flex-direction:column;gap:6px}.mobile-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;height:68px;background:white;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1.35fr 1fr;align-items:center;padding:7px 10px max(7px,env(safe-area-inset-bottom));box-shadow:0 -8px 30px rgba(28,64,60,.08)}.mobile-nav a{text-align:center;color:var(--muted);font-size:12px;font-weight:750}.mobile-nav .mobile-primary{background:var(--primary);color:white;padding:12px 6px;border-radius:12px}.filter-row{justify-content:stretch}.filter-row label{width:100%}}
@media(max-width:480px){.stats-grid,.stats-grid.four{grid-template-columns:1fr}.stat-card:nth-child(3){grid-column:auto}.top-actions .inline-form:last-child{display:none}.page-shell{width:calc(100% - 24px)}.booking-card{padding:13px;gap:12px}.date-chip{width:48px}.form-actions{display:grid;grid-template-columns:1fr 1fr}.form-actions .button{width:100%}}

/* V2 keeps the interface close to familiar business software: plain surfaces,
   restrained color and explicit actions. */
:root{--radius:10px;--shadow:0 2px 8px rgba(28,64,60,.06)}
.topbar{background:#fff;backdrop-filter:none}.card,.stat-card,.booking-card,.room-row,.table-card{border-radius:10px;box-shadow:none}.button{border-radius:8px}.brand-mark{border-radius:8px}.simple-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:12px 0 24px}.simple-heading h1{font-size:32px;margin:6px 0 0}.branch-label,.count-badge{display:inline-flex;padding:7px 10px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--muted);font-size:13px;font-weight:700}.action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:34px}.action-tile{min-height:118px;padding:20px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);display:flex;flex-direction:column;justify-content:space-between}.action-tile strong{font-size:18px}.action-tile span{font-size:13px;color:var(--muted);line-height:1.5}.action-tile.action-main{border-color:#82b9b1;background:#f2faf8}.status-pending{background:#fff3d6;color:#8a5a00}.status-approved,.status-active{background:#dcf4eb;color:#176b4d}.status-rejected,.status-expired{background:#f7e5e3;color:#9f3731}.qr-placeholder{min-height:230px;border:1px dashed #b9cbc7;background:#f8faf9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px}.qr-placeholder span,.notice-text{color:var(--muted);font-size:13px;line-height:1.6}.notice-text{text-align:left;border-top:1px solid var(--line);padding-top:14px;margin-top:18px}.approval-list{display:grid;gap:12px}.approval-card{padding:20px;display:grid;grid-template-columns:1fr minmax(280px,420px);gap:24px}.approval-main h2{margin:10px 0 8px;font-size:18px}.approval-main p{margin:4px 0;color:var(--muted);font-size:14px}.approval-actions{display:grid;gap:10px}.approval-actions form{display:grid;grid-template-columns:1fr auto;gap:8px}.approval-actions input{min-height:42px}.approval-actions .button{min-width:82px}
@media(max-width:820px){.simple-heading{align-items:flex-start;flex-direction:column}.action-grid{grid-template-columns:1fr}.action-tile{min-height:92px;padding:16px}.approval-card{grid-template-columns:1fr}.approval-actions form{grid-template-columns:1fr}.approval-actions .button{width:100%}}
.role-panel{max-width:880px;margin-top:16px;padding:22px}.role-panel h2{margin-top:0;font-size:18px}.role-panel form{display:grid;grid-template-columns:1fr auto;gap:10px}.settings-list{display:grid;gap:12px}.setting-card{padding:18px;display:grid;grid-template-columns:1fr 2fr;gap:24px}.setting-card h2{font-size:17px;margin:5px 0}.setting-card p{margin:0;color:var(--muted);font-size:13px}.compact-fields{display:grid;grid-template-columns:repeat(5,minmax(100px,1fr));gap:10px;align-items:end}.compact-fields label{font-size:12px;font-weight:700}.compact-fields label:has(input[type=checkbox]){display:flex;align-items:center;gap:7px;padding-bottom:12px}.compact-fields input[type=checkbox]{width:18px;min-height:18px}
@media(max-width:900px){.setting-card{grid-template-columns:1fr}.compact-fields{grid-template-columns:1fr 1fr}.role-panel form{grid-template-columns:1fr}.role-panel .button{width:100%}}
.map-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:18px}.map-heading h1{font-size:36px;margin:6px 0}.map-heading p{margin:0;color:var(--muted)}.map-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,.75fr);gap:14px;min-height:650px}.branch-map{min-height:650px;border:1px solid var(--line);border-radius:10px;background:#dcebea;position:relative}.map-basemap-label{position:absolute;left:12px;bottom:10px;z-index:400;background:rgba(255,255,255,.9);border:1px solid var(--line);padding:5px 8px;border-radius:5px;color:var(--muted);font-size:11px}.map-branch-list{display:grid;align-content:start;gap:10px}.map-branch-card{background:#fff;border:1px solid var(--line);border-left:5px solid #b42318;border-radius:8px;padding:16px}.map-branch-card.health-online{border-left-color:#18794e}.map-branch-card.health-partial{border-left-color:#a16207}.map-branch-card header{display:flex;justify-content:space-between;gap:12px}.map-branch-card header span{font:12px monospace;color:var(--muted)}.map-metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.map-metrics div{display:flex;flex-direction:column}.map-metrics b{font-size:20px}.map-metrics small{color:var(--muted);margin-top:3px}.report-filters{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr)) auto;gap:10px;align-items:end;background:#fff;border:1px solid var(--line);padding:16px;border-radius:10px;margin-bottom:16px}.report-filters label{font-size:12px;font-weight:700}.report-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}.report-kpis article{background:#fff;border:1px solid var(--line);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:8px}.report-kpis span{color:var(--muted);font-size:12px}.report-kpis strong{font-size:24px}

.map-heading-actions{display:flex;gap:8px}.map-room-details{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.map-room-details summary{cursor:pointer;font-weight:750;color:var(--primary);display:flex;justify-content:space-between}.map-room-device-list{display:grid;gap:9px;margin-top:10px}.map-room-device{border:1px solid var(--line);border-radius:9px;padding:10px;display:grid;gap:8px}.map-room-name,.map-device-relation{display:flex;justify-content:space-between;align-items:center;gap:8px}.map-room-name small,.map-device-relation small{color:var(--muted);font-size:11px}.map-room-actions{display:flex;justify-content:flex-end;gap:6px}.button.small{min-height:34px;padding:7px 10px;border-radius:8px;font-size:12px}.connection-settings{display:grid;grid-template-columns:1fr 1fr minmax(240px,1.6fr);gap:12px;align-items:center;background:var(--soft);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:18px}.connection-settings div{display:grid;gap:4px}.connection-settings small,.connection-settings p,.setup-connection-values small{color:var(--muted);margin:0}.connection-settings code,.setup-connection-values code{font-size:18px;font-weight:800;color:var(--primary)}.setup-connection-values{display:grid;grid-template-columns:1fr 1fr;gap:10px}.setup-connection-values>span{display:grid;gap:3px}
@media(max-width:1000px){.map-layout{grid-template-columns:1fr;min-height:auto}.branch-map{min-height:480px}.report-filters{grid-template-columns:1fr 1fr}.report-kpis{grid-template-columns:1fr 1fr}.report-kpis article:last-child{grid-column:span 2}}
@media(max-width:600px){.map-heading{align-items:flex-start;flex-direction:column}.map-heading .button{width:100%}.branch-map{min-height:380px}.report-filters{grid-template-columns:1fr}.report-kpis{grid-template-columns:1fr}.report-kpis article:last-child{grid-column:auto}}
@media(max-width:600px){.map-heading-actions{width:100%;flex-direction:column}.connection-settings{grid-template-columns:1fr}.setup-connection-values{grid-template-columns:1fr}.map-room-name,.map-device-relation{align-items:flex-start;flex-direction:column}.map-room-actions{display:grid;grid-template-columns:1fr}.map-room-actions .button{width:100%}}
.map-error{position:absolute;left:50%;top:18px;z-index:500;max-width:calc(100% - 32px);transform:translateX(-50%);background:rgba(255,255,255,.96);border:1px solid #d6a949;padding:9px 12px;border-radius:6px;color:#7a4b00;font-size:12px;box-shadow:0 4px 14px rgba(24,36,32,.12)}
.mobile-entry-card{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:20px 24px;margin:-12px 0 34px}.mobile-entry-card h2{font-size:20px;margin:5px 0 6px}.mobile-entry-card p{color:var(--muted);font-size:13px;margin:0 0 10px}.mobile-entry-card code{font-size:12px;color:var(--primary);overflow-wrap:anywhere}.mobile-entry-card img{width:156px;height:156px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:6px}@media(max-width:820px){.mobile-entry-card{display:none}}
.device-setup{padding:24px;margin-bottom:18px}.device-setup-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}.device-setup-heading h2{margin:5px 0 0;font-size:22px}.setup-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;list-style:none;padding:0;margin:22px 0}.setup-steps li{display:flex;flex-direction:column;gap:8px;min-height:108px;padding:14px;border:1px solid var(--line);border-radius:8px;background:#fafcfb}.setup-steps li.complete{border-color:#8bc7b8;background:#f0faf6}.setup-steps strong{font-size:13px}.setup-steps span,.setup-steps code{font-size:12px;color:var(--muted);overflow-wrap:anywhere}.device-evidence{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0}.device-evidence div{padding:12px;background:var(--soft);border-radius:7px}.device-evidence dt{font-size:11px;color:var(--muted)}.device-evidence dd{margin:5px 0 0;font-size:13px;font-weight:700;overflow-wrap:anywhere}@media(max-width:820px){.device-setup-heading{align-items:flex-start;flex-direction:column}.device-setup-heading .button{width:100%}.setup-steps,.device-evidence{grid-template-columns:1fr}}
.guide-page{display:grid;gap:22px}.guide-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:26px 0}.guide-hero h1{font-size:clamp(36px,5vw,58px);margin:8px 0 10px;letter-spacing:-.04em}.guide-hero p,.guide-section-head p{color:var(--muted);margin:0;line-height:1.6}.guide-jump{display:flex;gap:8px;flex-wrap:wrap;position:sticky;top:82px;z-index:10;background:rgba(244,247,246,.96);padding:10px 0}.guide-jump a{padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:13px;font-weight:750}.guide-section{scroll-margin-top:140px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:24px}.guide-section-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:18px}.guide-section-head>span{display:grid;place-items:center;min-width:44px;height:44px;border-radius:10px;background:var(--soft);color:var(--primary);font-weight:850}.guide-section-head h2{margin:0 0 5px;font-size:24px}.guide-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.guide-steps.three{grid-template-columns:repeat(3,1fr)}.guide-steps.two{grid-template-columns:repeat(2,1fr)}.guide-steps article{min-height:170px;padding:16px;border:1px solid var(--line);border-radius:10px;background:#fafcfb}.guide-steps article>b{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--primary);color:#fff}.guide-steps h3{font-size:16px;margin:14px 0 7px}.guide-steps p{font-size:13px;color:var(--muted);line-height:1.65;margin:0}.guide-note{display:flex;gap:10px;margin-top:14px;padding:13px 15px;border-radius:9px;background:var(--soft);font-size:13px}.guide-connection{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}.guide-connection div{display:grid;gap:5px;padding:16px;border:1px solid #8bc7b8;border-radius:10px;background:#f0faf6}.guide-connection small{color:var(--muted)}.guide-connection code{font-size:24px;font-weight:850;color:var(--primary);overflow-wrap:anywhere}.guide-faq{display:grid;gap:8px}.guide-faq details{border:1px solid var(--line);border-radius:9px;padding:12px 14px}.guide-faq summary{cursor:pointer;font-weight:750}.guide-faq p{color:var(--muted);font-size:13px;line-height:1.6;margin:10px 0 0}@media(max-width:820px){.guide-hero{align-items:flex-start;flex-direction:column}.guide-hero .button{width:100%}.guide-jump{top:64px;overflow:auto;flex-wrap:nowrap}.guide-jump a{white-space:nowrap}.guide-section{padding:18px}.guide-steps,.guide-steps.three,.guide-steps.two,.guide-connection{grid-template-columns:1fr}.guide-steps article{min-height:auto}.guide-note{align-items:flex-start;flex-direction:column}.top-actions .guide-link{font-size:12px;padding:8px}}

/* Reports use small native visuals so the demo remains fast and dependency-free. */
.report-tabs{display:flex;gap:6px;overflow:auto;margin:-4px 0 14px;padding-bottom:2px}.report-tabs a{white-space:nowrap;padding:9px 13px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);font-size:13px;font-weight:750}.report-tabs a.active{background:var(--primary);border-color:var(--primary);color:#fff}.report-kpis article small{color:var(--muted);font-size:11px}.ring-kpi{align-items:center;justify-content:center;text-align:center}.report-ring{--percent:0;width:70px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#d97706 calc(var(--percent)*1%),#edf1f0 0);position:relative}.report-ring.positive{background:conic-gradient(var(--primary) calc(var(--percent)*1%),#edf1f0 0)}.report-ring:before{content:"";position:absolute;inset:7px;border-radius:50%;background:#fff}.report-ring strong,.report-ring small{position:relative;z-index:1}.report-ring strong{font-size:15px}.report-ring.large{width:150px}.report-ring.large:before{inset:13px}.report-ring.large strong{font-size:28px}.report-ring.large small{font-size:11px;color:var(--muted)}.report-visual-card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:20px;margin-bottom:14px}.report-visual-card>header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.report-visual-card h2{font-size:18px;margin:0}.report-visual-card header span{font-size:12px;color:var(--muted)}.trend-chart{height:230px;display:flex;align-items:flex-end;gap:10px;padding:20px 10px 0;border-bottom:1px solid var(--line);overflow-x:auto}.trend-column{height:100%;min-width:42px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:7px;flex:1}.trend-bar{width:min(34px,80%);height:var(--bar);min-height:4px;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,#2aa28f,var(--primary));position:relative;transition:height .45s ease}.trend-bar span{position:absolute;top:-20px;width:100%;text-align:center;font-size:11px;font-weight:800}.trend-column small{height:18px;font-size:10px;color:var(--muted)}.room-rank-list{display:grid;gap:12px}.room-rank-row{display:grid;grid-template-columns:minmax(70px,120px) 1fr 60px;align-items:center;gap:12px;font-size:12px}.room-rank-row>div{height:12px;background:#edf1f0;border-radius:999px;overflow:hidden}.room-rank-bar{display:block;width:var(--bar);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--primary),#53b9a7);transition:width .45s ease}.room-rank-row strong{text-align:right}.heat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}.heat-cell{min-height:78px;padding:10px;border-radius:8px;background:color-mix(in srgb,var(--primary) calc(16% + var(--heat)*70%),#f4f7f6);color:color-mix(in srgb,#fff calc(var(--heat)*75%),var(--ink));display:flex;flex-direction:column;gap:4px}.heat-cell span,.heat-cell small{font-size:10px;opacity:.8}.heat-cell b{font-size:15px}.department-visuals{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.department-visuals article{display:flex;align-items:center;gap:14px;padding:12px;border:1px solid var(--line);border-radius:8px}.department-visuals article>div:last-child{display:grid;gap:5px}.department-visuals small{color:var(--muted)}.access-visual{display:flex;align-items:center;justify-content:center;gap:60px}.access-numbers{display:grid;grid-template-columns:repeat(3,minmax(100px,1fr));gap:10px}.access-numbers article{padding:16px;border-left:3px solid var(--primary);background:var(--soft);display:grid;gap:6px}.access-numbers span{font-size:11px;color:var(--muted)}.access-numbers strong{font-size:24px}.report-table{margin-bottom:20px}.report-table td small{display:block;margin-top:3px;color:var(--muted);font-size:10px}
@media(prefers-reduced-motion:reduce){.trend-bar,.room-rank-bar{transition:none}}
@media(max-width:760px){.report-tabs{margin-left:-4px;margin-right:-4px}.report-visual-card{padding:16px}.report-visual-card>header{align-items:flex-start;flex-direction:column;gap:4px}.access-visual{flex-direction:column;gap:22px}.access-numbers{width:100%;grid-template-columns:1fr}.room-rank-row{grid-template-columns:70px 1fr 48px}.trend-chart{height:190px}}

.permission-category-list{display:grid;gap:14px}.permission-category-card{padding:20px}.permission-category-card>header,.permission-category-card>footer{display:flex;align-items:center;justify-content:space-between;gap:18px}.permission-category-card h2{font-size:19px;margin:8px 0 0}.permission-category-card footer{border-top:1px solid var(--line);padding-top:14px}.permission-category-card footer small{color:var(--muted)}.switch-field{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:750}.switch-field input,.capability-grid input{width:18px;min-height:18px}.category-basics{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:18px 0}.category-basics label{font-size:12px;font-weight:750}.capability-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.capability-grid label{display:flex;align-items:center;gap:8px;min-height:48px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#fafcfb;font-size:12px;font-weight:700}
@media(max-width:820px){.category-basics{grid-template-columns:1fr}.capability-grid{grid-template-columns:1fr 1fr}.permission-category-card>footer{align-items:flex-start;flex-direction:column}.permission-category-card>footer .button{width:100%}}
@media(max-width:480px){.capability-grid{grid-template-columns:1fr}}

/* The map becomes a restrained read-only operations screen only in full screen. */
.live-map-shell{display:grid;gap:14px}.live-screen-top,.live-screen-footer{display:none}.live-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.live-kpis article{min-height:88px;padding:15px 18px;border:1px solid var(--line);border-radius:9px;background:#fff;display:flex;flex-direction:column;justify-content:space-between}.live-kpis span{font-size:12px;color:var(--muted)}.live-kpis strong{font-size:27px}.live-kpis strong b{font:inherit}.live-events{background:#fff;border:1px solid var(--line);border-radius:9px;padding:14px}.live-events>header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:10px}.live-events>header>div{display:flex;align-items:center;gap:8px}.live-events h2{font-size:15px;margin:0}.live-events header small{color:var(--muted)}.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#35d39c;box-shadow:0 0 0 4px rgba(53,211,156,.13)}.live-event-list{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:7px;overflow:auto}.live-event-list article{display:grid;grid-template-columns:auto 1fr auto;gap:4px 8px;padding:10px;border-left:3px solid #d86c64;border-radius:7px;background:#fafcfb;font-size:11px}.live-event-list article.event-granted{border-left-color:#29966e}.live-event-list article strong{font-size:12px}.live-event-list article small{grid-column:1/3;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.live-event-list article b{grid-column:3;grid-row:1/3;align-self:center;text-transform:uppercase;font-size:9px}.branch-marker.health-online{animation:marker-breathe 2.6s ease-in-out infinite}.live-screen-footer{font-size:11px}
@keyframes marker-breathe{50%{stroke-width:6;fill-opacity:.7}}
.live-map-shell:fullscreen{height:100vh;padding:18px 22px;background:#071b1c;color:#e7f6f3;grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:12px;overflow:hidden}.live-map-shell:fullscreen .live-screen-top,.live-map-shell:fullscreen .live-screen-footer{display:flex;align-items:center;justify-content:space-between}.live-map-shell:fullscreen .live-screen-top>div{display:flex;align-items:center;gap:12px}.live-map-shell:fullscreen .live-screen-top time{font:700 22px/1 monospace;color:#fff}.live-map-shell:fullscreen [data-exit-fullscreen]{width:34px;height:34px;border:1px solid rgba(255,255,255,.2);border-radius:7px;background:rgba(255,255,255,.08);color:#fff;font-size:22px}.live-map-shell:fullscreen .map-heading{display:none}.live-map-shell:fullscreen .live-kpis article{min-height:82px;border-color:rgba(152,214,202,.16);background:#0c2929}.live-map-shell:fullscreen .live-kpis span{color:#90b8b1}.live-map-shell:fullscreen .live-kpis strong{color:#fff;font-size:30px}.live-map-shell:fullscreen .map-layout{grid-template-columns:minmax(0,1.8fr) minmax(300px,.62fr);min-height:0;height:auto}.live-map-shell:fullscreen .branch-map{min-height:0;height:100%;border-color:rgba(152,214,202,.18);background:#0a2223}.live-map-shell:fullscreen .leaflet-tile-pane{filter:brightness(.48) saturate(.72) hue-rotate(112deg)}.live-map-shell:fullscreen .leaflet-control-attribution{background:rgba(7,27,28,.78);color:#9abbb5}.live-map-shell:fullscreen .map-branch-list{overflow:auto;padding-right:4px}.live-map-shell:fullscreen .map-branch-card{background:#0c2929;border-color:rgba(152,214,202,.16);color:#e7f6f3}.live-map-shell:fullscreen .map-branch-card header span,.live-map-shell:fullscreen .map-metrics small,.live-map-shell:fullscreen .map-room-name small,.live-map-shell:fullscreen .map-device-relation small{color:#90b8b1}.live-map-shell:fullscreen .map-room-details{display:none}.live-map-shell:fullscreen .live-events{padding:10px 12px;border-color:rgba(152,214,202,.16);background:#0c2929}.live-map-shell:fullscreen .live-events header{margin-bottom:7px}.live-map-shell:fullscreen .live-events header small{color:#90b8b1}.live-map-shell:fullscreen .live-event-list{grid-template-columns:repeat(8,minmax(150px,1fr))}.live-map-shell:fullscreen .live-event-list article{background:#102f30;color:#e7f6f3}.live-map-shell:fullscreen .live-event-list article small{color:#90b8b1}.live-map-shell:fullscreen .live-screen-footer{color:#90b8b1}
@media(prefers-reduced-motion:reduce){.branch-marker.health-online{animation:none}}
@media(max-width:820px){.live-kpis{grid-template-columns:1fr 1fr}.live-event-list{grid-template-columns:repeat(2,minmax(180px,1fr))}.live-map-shell:fullscreen{padding:12px}.live-map-shell:fullscreen .map-layout{grid-template-columns:1fr}.live-map-shell:fullscreen .map-branch-list{display:none}}
@media(max-width:480px){.live-event-list{grid-template-columns:1fr}}

.brand-mark img{width:100%;height:100%;object-fit:contain;background:#fff;border-radius:6px}.login-organisation{display:inline-flex;margin-bottom:8px;padding:6px 9px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--muted);font-size:12px;font-weight:750}.branding-form{padding:24px}.brand-preview{display:flex;align-items:center;gap:14px;margin-bottom:22px;padding:18px;border-radius:10px;background:#f7faf9;border:1px solid var(--line)}.brand-preview-mark{width:58px;height:58px;display:grid;place-items:center;border-radius:10px;background:var(--preview-colour);color:#fff;font-weight:850}.brand-preview-mark img{max-width:100%;max-height:100%;object-fit:contain;background:#fff;border-radius:8px}.brand-preview>div:last-child{display:grid;gap:5px}.brand-preview small{color:var(--muted)}.brand-preview strong{font-size:20px}.branding-form input[type=file]{padding:9px}.branding-form input[type=color]{padding:5px;cursor:pointer}.brand-safety-note{display:flex;gap:10px;margin-top:18px;padding:13px 15px;border-radius:8px;background:var(--soft);font-size:12px}.brand-safety-note span{color:var(--muted)}
@media(max-width:600px){.brand-safety-note{flex-direction:column}}

.customer-introduction{display:grid;gap:18px}.introduction-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;padding:30px 0 16px}.introduction-hero h1{font-size:clamp(40px,6vw,68px);line-height:1;margin:8px 0 12px;letter-spacing:-.045em}.introduction-hero p{max-width:720px;margin:0;color:var(--muted);font-size:17px;line-height:1.7}.introduction-actions{display:flex;gap:8px;flex-shrink:0}.intro-section{padding:24px;background:#fff;border:1px solid var(--line);border-radius:11px;break-inside:avoid}.intro-section>div:first-child:has(>span+ h2){display:flex;align-items:center;gap:10px;margin-bottom:18px}.intro-section>div:first-child>span{display:grid;place-items:center;width:34px;height:34px;border-radius:8px;background:var(--soft);color:var(--primary);font-size:11px;font-weight:850}.intro-section h2{font-size:22px;margin:0}.intro-card-grid,.intro-module-grid{display:grid;gap:10px}.intro-card-grid.three{grid-template-columns:repeat(3,1fr)}.intro-card-grid article,.intro-module-grid article{padding:15px;border:1px solid var(--line);border-radius:8px;background:#fafcfb}.intro-card-grid h3{font-size:15px;margin:0 0 7px}.intro-card-grid p,.intro-module-grid p{font-size:12px;line-height:1.65;color:var(--muted);margin:0}.intro-module-grid{grid-template-columns:repeat(4,1fr)}.intro-module-grid b{display:block;font-size:13px;margin-bottom:7px}.intro-flow{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(5,1fr);gap:9px;counter-reset:flow}.intro-flow li{position:relative;min-height:120px;padding:15px;border:1px solid var(--line);border-top:3px solid var(--primary);border-radius:8px;display:flex;flex-direction:column;gap:8px}.intro-flow b{font-size:14px}.intro-flow span,.intro-steps li{font-size:12px;line-height:1.6;color:var(--muted)}.intro-relation{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:12px}.intro-relation div{min-height:92px;padding:16px;border:1px solid #8bc7b8;border-radius:9px;background:#f0faf6;display:grid;align-content:center;gap:6px}.intro-relation i{font-size:24px;color:var(--primary);font-style:normal}.intro-relation small{color:var(--muted)}.intro-note{margin:14px 0 0;padding:12px 14px;border-radius:8px;background:var(--soft);font-size:12px;line-height:1.65;color:var(--muted)}.intro-connection{display:grid;grid-template-columns:1fr 1fr;gap:10px}.intro-connection div{display:grid;gap:5px;padding:16px;border:1px solid #8bc7b8;border-radius:9px;background:#f0faf6}.intro-connection small{color:var(--muted)}.intro-connection code{font-size:24px;font-weight:850;color:var(--primary)}.intro-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0 0;padding-left:24px}.demo-timeline{list-style:none;padding:0;margin:0;display:grid;gap:8px}.demo-timeline li{display:grid;grid-template-columns:70px 1fr;gap:12px;padding:12px;border-left:3px solid var(--primary);background:#fafcfb}.demo-timeline time{font:800 14px monospace;color:var(--primary)}.demo-timeline b{font-size:13px}.demo-timeline p{margin:4px 0 0;color:var(--muted);font-size:12px}.acceptance-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0;padding:0;list-style:none}.acceptance-list li{padding:12px 12px 12px 36px;border:1px solid var(--line);border-radius:8px;background:#fafcfb;position:relative;font-size:12px}.acceptance-list li:before{content:"✓";position:absolute;left:12px;color:var(--primary);font-weight:900}.introduction-footer{display:flex;justify-content:space-between;gap:20px;padding:18px 4px;color:var(--muted);font-size:12px}.introduction-footer>div{display:flex;gap:12px}
@media(max-width:900px){.introduction-hero{align-items:flex-start;flex-direction:column}.intro-card-grid.three,.intro-module-grid{grid-template-columns:1fr 1fr}.intro-flow{grid-template-columns:1fr}.intro-flow li{min-height:auto}.intro-steps{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.introduction-actions{display:grid;width:100%;grid-template-columns:1fr}.intro-card-grid.three,.intro-module-grid,.intro-connection,.intro-steps,.acceptance-list{grid-template-columns:1fr}.intro-relation{grid-template-columns:1fr}.intro-relation i{transform:rotate(90deg);justify-self:center}.introduction-footer,.introduction-footer>div{flex-direction:column}}
@media print{.topbar,.mobile-nav,.introduction-actions{display:none!important}.page-shell{width:100%;padding:0}.customer-introduction{gap:8px}.introduction-hero{padding:10px 0}.introduction-hero h1{font-size:38px}.intro-section{padding:15px;box-shadow:none}.intro-card-grid.three{grid-template-columns:repeat(3,1fr)}.intro-module-grid{grid-template-columns:repeat(4,1fr)}.intro-section,.introduction-hero{break-inside:avoid}.live-dot{animation:none}}

@media(min-width:821px){table[data-table-key]{table-layout:fixed}.report-table th{position:relative}.column-resizer{position:absolute;top:0;right:-4px;width:9px;height:100%;cursor:col-resize;touch-action:none;z-index:2}.column-resizer:after{content:"";position:absolute;right:4px;top:22%;width:1px;height:56%;background:transparent}.column-resizer:hover:after{background:var(--primary)}}
