pfilter button:focus-visible{outline:2px solid var(--accent);outline-offset:1px} .officetop{display:grid;grid-template-columns:repeat(6,1fr);gap:12px} .progwrap{width:100%} .progtrack{height:6px;border-radius:999px;background:var(--bg);overflow:hidden;margin-top:6px} .progfill{height:100%;border-radius:999px;background:var(--good)} .officegrid{display:grid;grid-template-columns:1.6fr 1fr;gap:18px;align-items:start} .roomgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-top:16px} .roomcard{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--bg)} .roomcard.pending{opacity:.72} .roomthumb{height:64px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb, var(--accent) 10%, var(--bg));color:var(--accent)} .roomcard.pending .roomthumb{background:var(--bg);color:var(--muted)} .roombody{padding:10px 12px;display:flex;flex-direction:column;gap:6px} .roomname{font-weight:600;font-size:13px} .roomstatus{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;width:fit-content} .roomstatus .dot{width:6px;height:6px;border-radius:50%} .roomstatus.occ{background:var(--good-bg);color:var(--good)} .roomstatus.occ .dot{background:var(--good)} .roomstatus.empty{background:var(--bg);color:var(--muted);border:1px solid var(--line)} .roomstatus.empty .dot{background:var(--muted)} .roomstatus.pend{background:var(--warn-bg);color:var(--warn)} .roomstatus.pend .dot{background:var(--warn)} .roommeta{font-size:11.5px;color:var(--muted)} .roomdevices{display:flex;gap:7px;color:var(--muted)} .roomdevices svg{width:13px;height:13px} .roomdevices svg.on{color:var(--accent)} .sidepanel{display:flex;flex-direction:column;gap:16px} .rolloutrow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font-size:12.5px} .rolloutrow:last-child{border-bottom:none} .rolloutrow .stage{color:var(--muted);font-size:11.5px} .threecol{display:grid;grid-template-columns:1.1fr 1fr 0.9fr;gap:18px;align-items:start} .alertlist{display:flex;flex-direction:column} .alertrow{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line)} .alertrow:last-child{border-bottom:none} .alertrow .dot{width:8px;height:8px;border-radius:50%;margin-top:5px;flex:none} .alertrow .when{font-size:11px;color:var(--muted);white-space:nowrap} .alertrow .what{font-size:12.5px} .alertrow .where{font-size:11px;color:var(--muted)} @media (max-width: 980px){ .officegrid{grid-template-columns:1fr} .threecol{grid-template-columns:1fr} .officetop{grid-template-columns:repeat(3,1fr)} } @media (max-width: 480px){ .officetop{grid-template-columns:repeat(2,1fr)} } @media (max-width: 640px){ .skpis{grid-template-columns:repeat(2,1fr)} .srow-head{grid-template-columns:36px 1fr 18px} .smetrics{display:none} .scost{display:none} .ubar{grid-template-columns:76px 1fr 54px} } .legend{display:flex;gap:14px;align-items:center;font-size:11.5px;color:var(--muted);flex-wrap:wrap} .legend .sw{width:12px;height:12px;border-radius:3px;display:inline-block;margin-right:4px;vertical-align:-2px} @media (max-width: 760px){ .app{grid-template-columns:1fr} .rail{display:none} .kpis{grid-template-columns:repeat(2,1fr)} header.bar{padding:12px 16px} main{padding:16px 16px 40px} .mobilenav{display:flex!important} } .mobilenav{display:none;gap:4px;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--surface);overflow-x:auto} .mobilenav button{flex:none;font-size:12.5px;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--ink)} .mobilenav button.active{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)} @media (prefers-reduced-motion: no-preference){ .navbtn, .themebtn{transition:background .12s ease} } .livebadge{position:fixed;bottom:14px;right:16px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px;z-index:50;box-shadow:0 4px 14px rgba(0,0,0,.08)} .livebadge .dot{width:7px;height:7px;border-radius:50%;background:var(--good)} .livebadge.stale .dot{background:var(--warn)}
Office hours 09:00 AM – 09:00 PM IST OPEN NOW
05-10-2026 · 14:52 IST

Office Overview

Live status, space utilization and session activity for all 4 rooms.
0 / 4
Rooms occupied now
4
Total rooms
4
Total sessions today
44m
Total occupied time
11:00 AM
Busiest hour
Saturday
Quietest day

Room Status (4 rooms)

Meeting Room 2
Empty
22.3°C · last session 12:31 PM
Meeting Room 1
Pending install
Sensor ordered, hub not paired
—
HOD Cabin, MD
Pending install
Site survey scheduled
—
HOD Cabin, Director
Pending install
Site survey scheduled
—

Live Occupancy

0 / 4 rooms in use right now
0% currently in use

Rollout Status

Sensor + IR build-out, by cabin
Meeting Room 2Live
Meeting Room 1
Hub not paired
Ordered
HOD Cabin, MD
Site survey
Scheduled
HOD Cabin, Director
Site survey
Scheduled

Occupancy Heatmap — Meeting Room 2

Today's Timeline — Meeting Room 2

Occupancy % People count
Occupancy and people count by hour, today.
100% 75% 50% 25% 0% 6 0 9 AM 11 AM 1 PM 3 PM 5 PM 7 PM
11:00 AM
73% occupied
5 people avg

Recent Alerts

View all
AC auto-off, room confirmed empty
Meeting Room 2
12:31 PM
TV ping-sync loop fixed
Meeting Room 2
Yesterday
Sensor offline, 47 min
Meeting Room 2
Sat, 03 Oct
Site survey scheduled
HOD Cabin, Director
2 days ago

Room Analytics

Space utilization, occupancy patterns and detailed room sessions in one view.
41%
Occupancy (office hours)
↑ 8% vs previous 7 days
11:00 AM
Busiest hour
73% occupancy
Saturday
Quietest day
14% occupancy
4
Total sessions
Today
44m
Total occupied
Today
44m
AC runtime
Today
42m
TV runtime
Today
0m
Extra chill used
Today
₹14.62
Total cost
Today

Space Utilization

Occupancy against the 09:00 AM–09:00 PM office hours, by day and hour.
Shows the average number of people detected per hour, over the selected period.
Key insights
11:00 AMBusiest hour, avg 3.6 people
SaturdayQuietest day, 14% occupancy
23 minutesLongest idle period, today
16 minutesAvg session length, ↑ 12% vs previous 7 days
3 cabins queued for the same sensor build-out — Meeting Room 1, HOD Cabin (MD), HOD Cabin (Director).

Room Sessions

Every occupancy session with device runtime, cost and a camera snapshot.
Today · 05 Oct 2026 4 sessions · 44m occupied

Usage & Consumption Reports

Monthly device runtime and estimated electricity cost per cabin, closed out once a month.
59.7
kWh, this month
₹1,316.07
Cost, this month
84%
Cost share, AC
+7.5%
vs prior month
1 / 4
Cabins billed
₹43.87
Avg daily cost
Cost = (AC × 0.762kW + TV × 0.113kW + Center × 0.036kW + Filler × 0.072kW + Extra Chill × 0.762kW) × ₹22.03/kWh — closed monthly, so a rate change only affects months billed after it.

AC runtime by day, last 2 weeks

Meeting Room 2. Bars scaled to a 9h office-hours ceiling.
9h 0h
Connecting to Home Assistant…