:root{color-scheme:light;--frontend-bg:#f7f4ee;--frontend-bg-secondary:#efe8dd;--frontend-surface:#fffcf7;--frontend-primary:#556b57;--frontend-primary-soft:#dde4d8;--frontend-secondary:#b89b7a;--frontend-accent:#9b6846;--text-primary:#3d3a35;--text-secondary:#716a61;--border-subtle:#e4ddd3;--status-normal:#36765b;--status-normal-bg:#e4f0e7;--status-attention:#956819;--status-attention-bg:#fff1cf;--status-warning:#b65a25;--status-warning-bg:#fde7d8;--status-emergency:#b53e48;--status-emergency-bg:#fbe3e5;--bg:var(--frontend-bg);--surface:var(--frontend-surface);--surface-soft:var(--frontend-bg-secondary);--text:var(--text-primary);--muted:var(--text-secondary);--line:var(--border-subtle);--brand:var(--frontend-primary);--brand-soft:var(--frontend-primary-soft);--normal:var(--status-normal);--normal-bg:var(--status-normal-bg);--attention:var(--status-attention);--attention-bg:var(--status-attention-bg);--warning:var(--status-warning);--warning-bg:var(--status-warning-bg);--emergency:var(--status-emergency);--emergency-bg:var(--status-emergency-bg);--radius-lg:28px;--radius-md:20px;--shadow:0 18px 50px rgba(74,62,48,.09);--s1:8px;--s2:12px;--s3:16px;--s4:24px;--s5:32px;--s6:48px}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 85% 0,#e9e1d5 0,transparent 31%),var(--bg);color:var(--text);font-family:Inter,"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;font-size:16px}.app-shell{width:min(1220px,calc(100% - 40px));margin:auto;padding:32px 0}.app-header{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px}.brand,.overline{margin:0 0 6px;color:var(--brand);font-size:.8rem;font-weight:800;letter-spacing:.1em}.app-header h1{margin:0;font-size:clamp(1.7rem,3vw,2.35rem);letter-spacing:-.03em}.connection{display:grid;grid-template-columns:auto auto;gap:2px 10px;align-items:center;padding:12px 16px;border:1px solid var(--line);border-radius:16px;background:rgba(255,252,247,.88)}.connection>span{grid-row:1/3;width:10px;height:10px;border-radius:50%;background:#a59e94}.connection strong{font-size:.9rem}.connection small{color:var(--muted);font-size:.75rem}.connection.online>span{background:var(--normal)}.connection.offline>span{background:var(--emergency)}
.safety-card{display:grid;grid-template-columns:auto 1fr auto;gap:24px;align-items:center;min-height:220px;padding:32px 36px;border:2px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow);transition:.25s}.status-icon{width:88px;height:88px;display:grid;place-items:center;border-radius:50%;background:#edf1ef;color:var(--muted);font-size:2.4rem;font-weight:900}.status-main p,.status-level span{margin:0;color:var(--muted);font-size:.9rem}.status-main h2{margin:4px 0 8px;font-size:clamp(3rem,7vw,5.3rem);line-height:1;letter-spacing:-.05em}.status-main strong{display:block;font-size:clamp(1.15rem,2vw,1.55rem)}.status-main>span{display:block;margin-top:8px;color:var(--muted);font-size:1rem}.status-level{text-align:right}.status-level b{display:block;margin-top:8px;font-size:1.2rem}.safety-card.normal{border-color:#a8cfc0;background:linear-gradient(120deg,#fff,var(--normal-bg))}.safety-card.normal .status-icon{color:var(--normal);background:#fff}.safety-card.attention{border-color:#e4c168;background:linear-gradient(120deg,#fff,var(--attention-bg))}.safety-card.attention .status-icon{color:var(--attention);background:#fff}.safety-card.warning{border-color:#de956b;background:linear-gradient(120deg,#fff,var(--warning-bg))}.safety-card.warning .status-icon{color:var(--warning);background:#fff}.safety-card.emergency{border-color:#d7767e;background:linear-gradient(120deg,#fff,var(--emergency-bg));box-shadow:0 0 0 7px rgba(181,62,72,.08),var(--shadow)}.safety-card.emergency .status-icon{color:#fff;background:var(--emergency);animation:pulse 1s ease-in-out infinite alternate}@keyframes pulse{to{transform:scale(1.06)}}
.main-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:20px;margin-top:20px}.seat-card,.movement-card,.environment-card,.event-strip{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow)}.seat-card{padding:28px}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-head h2,.event-strip h2{margin:0;font-size:1.25rem}.mapping-status{padding:6px 10px;border:1px solid #ddc88f;border-radius:999px;color:#80652c;background:#fff9e9;font-size:.74rem;font-weight:700}.location-message{margin:18px 0;padding:14px 16px;border-radius:14px;background:var(--surface-soft);font-size:1.05rem;font-weight:700}
.chair-visual{position:relative;width:min(560px,100%);height:500px;margin:2px auto 0}.chair-back{position:absolute;z-index:3;top:8px;left:16%;width:68%;height:92px;display:grid;place-items:center;border:2px solid var(--frontend-secondary);border-radius:42px 42px 22px 22px;background:linear-gradient(180deg,var(--frontend-surface),var(--frontend-bg-secondary));box-shadow:inset 0 -12px 24px rgba(85,107,87,.06)}.chair-back:after{content:"";position:absolute;bottom:-20px;left:14%;width:72%;height:22px;border-left:3px solid var(--frontend-secondary);border-right:3px solid var(--frontend-secondary)}.chair-back span,.chair-front span{color:var(--muted);font-size:.78rem;font-weight:700;letter-spacing:.08em}.chair-seat{position:absolute;z-index:2;top:116px;left:12%;width:76%;height:330px;border:3px solid #b7a58f;border-radius:34px 34px 74px 74px;background:linear-gradient(145deg,var(--frontend-surface),#f1eadf);box-shadow:inset 0 0 0 10px rgba(255,252,247,.72),inset 0 -28px 45px rgba(85,107,87,.05),0 18px 35px rgba(74,62,48,.1)}.chair-seat:before{content:"";position:absolute;inset:17px;border:1px dashed rgba(85,107,87,.2);border-radius:25px 25px 60px 60px}.seat-center-mark{position:absolute;left:50%;top:50%;width:54px;height:74px;transform:translate(-50%,-50%);border:1px solid rgba(85,107,87,.13);border-radius:50%;background:rgba(255,252,247,.5)}.chair-arm{position:absolute;z-index:1;top:136px;width:34px;height:256px;border:3px solid #c7b7a3;border-radius:18px;background:#eee6da}.arm-left{left:4%}.arm-right{right:4%}.chair-front{position:absolute;left:31%;bottom:8px;width:38%;height:38px;display:grid;place-items:center;border-top:3px solid var(--frontend-secondary);border-radius:50%}
.pressure-spot{position:absolute;z-index:4;width:126px;height:112px;display:grid;align-content:center;justify-items:center;text-align:center}.pressure-spot.rear-left{left:8%;top:10%}.pressure-spot.rear-right{right:8%;top:10%}.pressure-spot.front-left{left:8%;bottom:8%}.pressure-spot.front-right{right:8%;bottom:8%}.spot-halo,.spot-core{position:absolute;inset:50% auto auto 50%;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}.spot-halo{width:calc(72px * var(--spot-scale,.78));height:calc(72px * var(--spot-scale,.78));background:rgb(85 107 87 / calc(.08 + var(--spot-opacity,.25) * .18));filter:blur(3px);transition:.45s}.spot-core{width:calc(46px * var(--spot-scale,.78));height:calc(46px * var(--spot-scale,.78));border:2px solid rgba(85,107,87,.42);background:rgb(85 107 87 / var(--spot-opacity,.25));box-shadow:0 0 0 9px rgba(85,107,87,.06);transition:.45s}.spot-label,.pressure-spot strong,.pressure-spot small{position:relative;z-index:2}.spot-label{margin-top:-4px;color:#4f5f50;font-size:.78rem;font-weight:800}.pressure-spot strong{margin-top:5px;padding:3px 7px;border-radius:7px;background:rgba(255,252,247,.82);font-size:.78rem}.pressure-spot small{margin-top:3px;color:var(--muted);font-size:.7rem}.pressure-spot.changing .spot-halo{animation:pressurePulse 1.6s ease-in-out infinite}.pressure-spot.changing .spot-core{box-shadow:0 0 0 9px rgba(85,107,87,.09),0 0 0 17px rgba(85,107,87,.05)}@keyframes pressurePulse{50%{transform:translate(-50%,-50%) scale(1.18);opacity:.55}}.pressure-spot.safety-alert{outline:2px solid var(--status-color,var(--warning));outline-offset:3px;border-radius:30px;background:rgba(255,252,247,.55)}.spot-alert{display:none;position:absolute;z-index:5;top:4px;right:5px;width:24px;height:24px;place-items:center;border-radius:50%;color:#fff;background:var(--status-color,var(--warning));font-size:.8rem}.pressure-spot.safety-alert .spot-alert{display:grid}.seat-legend{display:flex;justify-content:center;gap:20px;margin-top:8px;color:var(--muted);font-size:.8rem}.seat-legend span{display:flex;align-items:center;gap:6px}.seat-legend i{width:10px;height:10px;border-radius:50%}.seat-legend .pressure{background:var(--brand)}.seat-legend .movement{border:2px solid var(--brand);background:transparent}.seat-legend .alert{background:var(--warning)}
.support-column{display:grid;gap:20px}.movement-card{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;padding:24px}.mini-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:15px;background:var(--surface-soft);color:var(--brand);font-size:1.5rem;font-weight:900}.movement-card p{margin:0;color:var(--muted);font-size:.85rem}.movement-card h2{margin:5px 0;font-size:1.4rem}.movement-card span{color:var(--muted);line-height:1.55}.movement-card.attention,.movement-card.warning{border-color:#e0ba62;background:var(--attention-bg)}.movement-card.emergency{border-color:#d7767e;background:var(--emergency-bg)}.environment-card{padding:24px}.metric-row{display:grid;gap:4px;margin-top:16px}.metric-row>div{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-top:1px solid var(--line)}.metric-row span{color:var(--muted)}.metric-row strong{font-size:1.05rem}.metric-row b{font-size:1.5rem}.event-strip{display:grid;grid-template-columns:180px 1fr;gap:24px;margin-top:20px;padding:24px 28px}.event-strip ol{margin:0;padding:0;list-style:none}.event-strip li{padding:10px 0;border-bottom:1px solid var(--line);font-size:.95rem}.event-strip li:last-child{border:0}footer{display:flex;justify-content:space-between;margin-top:18px;padding:0 4px;color:var(--muted);font-size:.78rem}
.pressure-spot.safety-alert .spot-core{border-color:rgba(255,255,255,.8);background:var(--status-color);box-shadow:0 0 0 10px color-mix(in srgb,var(--status-color) 18%,transparent)}.pressure-spot.safety-alert .spot-halo{background:color-mix(in srgb,var(--status-color) 28%,transparent)}.pressure-spot.low-pressure .spot-core{border-color:#bdc0bc;background:rgba(158,163,158,.18);box-shadow:0 0 0 8px rgba(158,163,158,.06)}.pressure-spot.low-pressure .spot-halo{background:rgba(158,163,158,.1)}.movement-card.attention .mini-icon,.movement-card.warning .mini-icon,.movement-card.emergency .mini-icon{width:66px;height:66px;color:var(--status-warning);background:#fff;font-size:2.6rem;animation:gentleBounce 1.4s ease-in-out infinite}.movement-card.emergency .mini-icon{color:var(--status-emergency)}@keyframes gentleBounce{0%,70%,100%{transform:translateY(0)}85%{transform:translateY(-7px)}}
.metric-row>div.distance-metric{display:grid;grid-template-columns:1fr auto;gap:7px 14px}.distance-track{position:relative;grid-column:1/-1;height:10px;overflow:visible;border-radius:99px;background:#e6ded2}.distance-track i{display:block;width:50%;height:100%;border-radius:inherit;background:var(--status-normal);transition:width .45s}.distance-track>b{position:absolute;top:50%;left:50%;width:18px;height:18px;transform:translate(-50%,-50%);border:3px solid #fff;border-radius:50%;background:var(--status-normal);box-shadow:0 2px 8px rgba(61,58,53,.22);transition:left .45s}.distance-metric>small{grid-column:1/-1;color:var(--muted);font-size:.76rem}
@media(max-width:900px){.main-grid{grid-template-columns:1fr}.support-column{grid-template-columns:1fr 1fr}.safety-card{grid-template-columns:auto 1fr}.status-level{grid-column:2;text-align:left}.event-strip{grid-template-columns:1fr}.metric-row>div{padding:12px 0}}
@media(max-width:620px){.app-shell{width:min(100% - 24px,1220px);padding:20px 0}.app-header{align-items:flex-start;flex-direction:column}.connection{width:100%}.safety-card{grid-template-columns:1fr;padding:24px}.status-icon{width:64px;height:64px}.status-main h2{font-size:3.1rem}.status-level{grid-column:auto;text-align:left}.main-grid{gap:14px}.seat-card{padding:18px}.seat-zone{min-height:112px;padding:14px}.seat-zone strong{margin-top:22px;font-size:1rem}.support-column{grid-template-columns:1fr}.seat-legend{flex-wrap:wrap}.event-strip{padding:20px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Warning UX refinement: pressure stays brand-green; danger is a separate annotation. */
.status-main small{display:block;width:max-content;max-width:100%;margin-top:10px;padding:7px 10px;border-radius:9px;background:rgba(61,58,53,.08);font-size:.88rem;font-weight:750}.status-main small[hidden]{display:none}.safety-card.warning .status-main small,.safety-card.emergency .status-main small{background:rgba(255,255,255,.16);color:#fff}
.pressure-spot small{font-size:.66rem}.pressure-spot.changing .spot-halo{animation:pressurePulse 1.8s ease-in-out infinite}.pressure-spot.changing:after{content:"";position:absolute;z-index:1;left:50%;top:50%;width:calc(82px * var(--spot-scale,.78));height:calc(82px * var(--spot-scale,.78));transform:translate(-50%,-50%);border:2px solid rgba(85,107,87,.5);border-radius:50%;animation:changeRing 1.8s ease-out infinite;pointer-events:none}@keyframes changeRing{0%{opacity:.65;transform:translate(-50%,-50%) scale(.82)}70%,100%{opacity:0;transform:translate(-50%,-50%) scale(1.16)}}
.pressure-spot.safety-alert .spot-core{border-color:rgba(85,107,87,.68);background:rgb(85 107 87 / var(--spot-opacity,.25));box-shadow:0 0 0 9px rgba(85,107,87,.09)}.pressure-spot.safety-alert .spot-halo{background:rgb(85 107 87 / calc(.08 + var(--spot-opacity,.25) * .18))}.pressure-spot.low-pressure .spot-core{border-color:rgba(85,107,87,.24);background:rgba(85,107,87,.1);box-shadow:0 0 0 8px rgba(85,107,87,.04)}.pressure-spot.low-pressure .spot-halo{background:rgba(85,107,87,.06)}
.pressure-spot.deemphasized{opacity:.36;filter:saturate(.55);transform:scale(.92)}.pressure-spot.safety-alert{z-index:6;outline-width:3px;box-shadow:0 8px 24px rgba(181,62,72,.12)}
.movement-card strong{display:block;margin:4px 0 6px;font-size:1rem}.movement-card small{display:block;margin-top:10px;color:var(--text);font-size:.86rem;font-weight:750;line-height:1.45}.movement-card small[hidden]{display:none}.movement-card.warning h2,.movement-card.emergency h2{font-size:1.55rem}.movement-card.warning strong,.movement-card.emergency strong{font-size:1.08rem}
.distance-reading{display:grid;justify-items:end}.distance-reading strong{font-size:1.5rem}.distance-reading small{color:var(--muted);font-size:.8rem}.distance-reading small b{font-size:1.1rem}

/* Chair-only readability scale. */
.chair-back span,.chair-front span{font-size:.9rem}.spot-label{font-size:1rem}.pressure-spot strong{max-width:112px;padding:5px 9px;font-size:.96rem;line-height:1.2}.seat-legend{font-size:.88rem}
.chair-back span{font-size:1.05rem;font-weight:800}

/* Reusable posture projection: latest.result is the only classification authority. */
.posture-card{display:grid;grid-template-columns:minmax(180px,44%) 1fr;gap:20px;align-items:center;min-height:270px;padding:22px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow)}.posture-visual{display:grid;place-items:center;min-width:0;color:var(--frontend-primary)}.posture-visual svg{display:block;width:100%;max-width:245px;height:auto;overflow:visible}.posture-copy p{margin:0;color:var(--muted);font-size:.85rem}.posture-copy h2{margin:5px 0 6px;font-size:1.42rem;line-height:1.2}.posture-copy strong{display:block;margin-bottom:7px;font-size:1rem;line-height:1.35}.posture-copy span{display:block;color:var(--muted);font-size:.9rem;line-height:1.5}.posture-copy small{display:block;margin-top:10px;padding-top:10px;border-top:1px solid rgba(61,58,53,.12);color:var(--text);font-size:.83rem;font-weight:800;line-height:1.45}.posture-copy small[hidden]{display:none}.posture-card.normal{grid-template-columns:minmax(230px,52%) 1fr;background:linear-gradient(135deg,var(--surface),var(--status-normal-bg));border-color:#bad8cc}.posture-card.lateral-left,.posture-card.lateral-right,.posture-card.front-pressure,.posture-card.back-pressure{border-color:#df9ba0;background:linear-gradient(135deg,var(--surface),#fff1e8)}.posture-card.unsupported-change{border-color:#e0ba62;background:var(--status-attention-bg)}.posture-card.sensor-error{border-color:#d7a26d;background:#fff3e5}.posture-card.unknown{color:var(--muted)}
.posture-svg .chair-fill{fill:#efe5d8}.posture-svg .chair-seat-fill{fill:#f8f1e7;stroke:#a98764;stroke-width:5}.posture-svg .chair-line{fill:none;stroke:#a98764;stroke-width:6;stroke-linecap:round;stroke-linejoin:round}.posture-svg .center-line,.posture-svg .seat-divider{fill:none;stroke:#8b8176;stroke-width:2;stroke-dasharray:6 7;opacity:.25}.posture-svg .front-edge{fill:none;stroke:#a9744f;stroke-width:4;stroke-linecap:round;opacity:.55}.posture-svg .head{fill:#d8b796;stroke:#8d6a4d;stroke-width:4}.posture-svg .neck{fill:#cfa982}.posture-svg .torso,.posture-svg .pelvis,.posture-svg .side-torso{fill:#637861;stroke:#4f654f;stroke-width:3}.posture-svg .arm,.posture-svg .leg,.posture-svg .foot,.posture-svg .side-arm,.posture-svg .side-leg,.posture-svg .side-foot{fill:none;stroke:#556b57;stroke-width:15;stroke-linecap:round;stroke-linejoin:round}.posture-svg .pressure-area{fill:#b77745}.posture-svg .pressure-soft{opacity:.16}.posture-svg .pressure-strong{opacity:.8;stroke:#995f35;stroke-width:3;filter:drop-shadow(0 0 11px rgba(169,116,79,.5))}.posture-svg .pressure-change{fill:none;stroke:#a9744f;stroke-width:5;stroke-dasharray:7 6;opacity:.55}.posture-svg .orientation-label text{fill:#776b5f;font-size:13px;font-weight:800}.posture-svg .view-label rect{fill:rgba(255,252,247,.94);stroke:#c5ad91;stroke-width:1.5}.posture-svg .view-label text{fill:#665d54;font-size:14px;font-weight:800}.posture-svg .attention-mark{fill:var(--status-attention)}.posture-svg .person-fill{fill:#6f826d}.posture-svg .person-line{fill:none;stroke:#556b57;stroke-width:18;stroke-linecap:round;stroke-linejoin:round}.posture-svg .alert-line{fill:none;stroke:var(--status-emergency);stroke-width:7;stroke-linecap:round;stroke-linejoin:round}.posture-svg .alert-fill{fill:var(--status-emergency)}.posture-svg .ghost{fill:none;stroke:#a9744f;stroke-width:7;stroke-dasharray:9 10;opacity:.42}.posture-svg .sensor-node{fill:#fff;stroke:#a9744f;stroke-width:5}.normal-views{display:grid;grid-template-columns:1fr 1fr;align-items:center;width:100%;gap:4px}.normal-views>div{min-width:0}.normal-views svg{max-width:150px}.posture-card.lateral-left .posture-visual,.posture-card.lateral-right .posture-visual,.posture-card.front-pressure .posture-visual,.posture-card.back-pressure .posture-visual{filter:drop-shadow(0 10px 14px rgba(105,78,52,.12))}
@media(max-width:1050px){.posture-card,.posture-card.normal{grid-template-columns:minmax(170px,43%) 1fr;padding:20px}.normal-views{grid-template-columns:1fr}.normal-side{display:none}.normal-views svg{max-width:245px}.posture-copy h2{font-size:1.25rem}.posture-copy strong{font-size:.94rem}}
@media(max-width:700px){.posture-card{grid-template-columns:1fr;text-align:center}.posture-visual svg{max-width:280px}.posture-copy small{margin-left:auto;margin-right:auto}.posture-copy span{max-width:28rem;margin:auto}}

/* Dual-view seat safety: state conclusions precede the schematic. */
.seat-safety-card{display:flex;flex-direction:column;align-items:stretch;gap:18px;container-type:inline-size;background:var(--frontend-surface);border-color:var(--border-subtle);text-align:left;padding:22px}
.seat-safety-card .posture-copy{display:contents}.seat-safety-card .posture-copy p{display:none}.seat-safety-card .posture-copy h2{order:-2;margin:0;font-size:1.45rem;line-height:1.35}.seat-safety-card .posture-copy [hidden]{display:none}.seat-safety-card .posture-copy small{margin:0;padding:14px 0 0;font-size:1rem;line-height:1.5;font-weight:700;border-top:1px solid var(--line)}
.seat-safety-card .posture-visual{width:100%;display:block}.seat-safety-views{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;width:100%}.seat-view{--view-status:var(--text-secondary);--view-soft:var(--frontend-bg-secondary);min-width:0;border:1px solid var(--line);border-radius:18px;padding:20px;background:var(--frontend-surface)}
.seat-view h3{margin:0;color:var(--text-primary);font-size:1.2rem;line-height:1.4;font-weight:750}.seat-view-verdict{display:flex;align-items:center;gap:10px;margin:14px 0 0;color:var(--view-status);font-size:1.5rem;font-weight:800;line-height:1.4}.verdict-icon{flex:0 0 32px;width:32px;height:32px;display:grid;place-items:center;border:2px solid currentColor;border-radius:50%;font-size:1.15rem;line-height:1}
.seat-view.stable{--view-status:var(--status-normal);--view-soft:var(--status-normal-bg)}.seat-view.attention{--view-status:var(--status-attention);--view-soft:var(--status-attention-bg);border:2px solid var(--status-attention)}.seat-view.warning{--view-status:var(--status-warning);--view-soft:var(--status-warning-bg);border:2px solid var(--status-warning)}.seat-view.emergency{--view-status:var(--status-emergency);--view-soft:var(--status-emergency-bg);border:2px solid var(--status-emergency)}
.seat-view.attention .seat-view-verdict,.seat-view.warning .seat-view-verdict,.seat-view.emergency .seat-view-verdict{padding:10px;border-radius:12px;background:var(--view-soft)}.seat-view-drawing{display:grid;place-items:center;margin:4px 0}.seat-view-drawing .posture-svg{width:100%;height:310px;max-width:none;opacity:.94}.seat-view.pending .seat-view-drawing{opacity:.75}.seat-view.unavailable .seat-view-drawing .posture-svg{height:225px;max-width:250px}
.seat-contact{fill:var(--view-status);fill-opacity:.22;stroke:var(--view-status);stroke-width:2;stroke-opacity:.65}.seat-contact.attention,.seat-contact.warning,.seat-contact.emergency{fill-opacity:.32;stroke-width:3;stroke-dasharray:5 3}.seat-reference>path{stroke:var(--frontend-secondary);stroke-width:1.5;stroke-dasharray:3 4;opacity:.6}.distance-reference circle{fill:var(--view-soft);stroke:var(--view-status);stroke-width:3}.distance-reference path{fill:none;stroke:var(--view-status);stroke-width:4;stroke-linecap:round}
.seat-zone-reference{display:grid;grid-template-columns:1fr 1.5fr 1fr;gap:4px;margin-top:6px;font-size:1rem;font-weight:700;text-align:center}.seat-zone-reference span{padding:8px 3px;border-radius:9px;border:1px solid var(--border-subtle);background:var(--frontend-bg-secondary);color:var(--text-secondary)}.seat-zone-reference span:nth-child(2){background:var(--status-normal-bg);color:var(--status-normal)}.seat-view.pending .seat-zone-reference span:nth-child(2),.seat-view.unavailable .seat-zone-reference span:nth-child(2){background:var(--frontend-bg-secondary);color:var(--text-secondary)}.seat-zone-reference span.highlight{border:2px solid var(--view-status);background:var(--view-soft);color:var(--view-status)}.seat-view-note{margin:12px 0 0;color:var(--view-status);font-weight:700;font-size:1rem}
.distance-metric{--distance-color:var(--text-secondary);--distance-soft:var(--frontend-bg-secondary)}
.distance-metric.distance-normal{--distance-color:var(--status-normal);--distance-soft:var(--status-normal-bg)}
.distance-metric.distance-attention{--distance-color:var(--status-attention);--distance-soft:var(--status-attention-bg)}
.distance-metric.distance-warning{--distance-color:var(--status-warning);--distance-soft:var(--status-warning-bg)}
.distance-metric.distance-emergency{--distance-color:var(--status-emergency);--distance-soft:var(--status-emergency-bg)}
.distance-metric .distance-track i,.distance-metric .distance-track>b{background:var(--distance-color)}
.distance-reading strong,.distance-metric>small{color:var(--distance-color)}
.environment-card.distance-attention{border-color:var(--status-attention)}
.environment-card.distance-warning{border-color:var(--status-warning)}
.environment-card.distance-emergency{border-color:var(--status-emergency)}
.distance-metric.distance-attention,.distance-metric.distance-warning,.distance-metric.distance-emergency{padding:18px 12px;background:var(--distance-soft);border-radius:14px;border:1px solid var(--distance-color)}
.distance-metric.distance-unavailable .distance-track{opacity:.45}
.seat-glow.strong{opacity:1}.seat-glow.soft{opacity:.15}.seat-glow.balanced{opacity:.35}
.seat-schematic-note{font-size:.95rem;color:var(--text-secondary);text-align:center;margin:14px 0 0;line-height:1.5}.seat-preview-only{padding:12px;background:var(--status-attention-bg);color:var(--status-attention);font-weight:800;border-radius:10px}
.seat-safety-card .seat-view-drawing .posture-svg{height:280px;opacity:1}.seat-view.pending .seat-view-drawing{opacity:.9}
.seat-view-verdict{min-height:54px}.seat-view.attention .seat-view-verdict,.seat-view.warning .seat-view-verdict,.seat-view.emergency .seat-view-verdict{background:var(--view-soft)}
@container(max-width:620px){.seat-safety-views{gap:12px}.seat-view{padding:12px 9px;border-radius:14px}.seat-view h3{font-size:1.02rem;text-align:center}.seat-view-verdict{font-size:1.06rem;gap:6px;min-height:60px;margin-top:10px}.verdict-icon{flex-basis:24px;width:24px;height:24px;font-size:1rem}.seat-view.attention .seat-view-verdict,.seat-view.warning .seat-view-verdict,.seat-view.emergency .seat-view-verdict{padding:8px 5px}.seat-zone-reference{font-size:.86rem;gap:2px;grid-template-columns:1fr 1.25fr 1fr}.seat-zone-reference span{padding:7px 1px}.seat-view-note{font-size:.95rem}}
@container(max-width:380px){.seat-safety-views{grid-template-columns:1fr}.seat-view h3{font-size:1.15rem}.seat-view-verdict{font-size:1.2rem;justify-content:center;min-height:0}.seat-zone-reference{font-size:1rem}.seat-safety-card .seat-view-drawing .posture-svg{height:300px}}
@media(max-width:700px){.seat-safety-views{grid-template-columns:1fr}.seat-view{padding:18px}.seat-view h3{font-size:1.3rem}.seat-view-verdict{font-size:1.35rem;justify-content:center;min-height:0}.seat-zone-reference{font-size:1rem}.seat-safety-card .seat-view-drawing .posture-svg{height:320px}.seat-schematic-note{font-size:1rem}}

/* Five-state presentation: equipment availability is not a human-risk severity. */
:root{--equipment-color:#716a61;--equipment-bg:#eee9e1}
.safety-card.warning{color:var(--text-primary);border-color:var(--status-warning);background:var(--status-warning-bg);animation:none}
.safety-card.warning .status-icon{color:var(--status-warning);background:var(--frontend-surface)}
.safety-card.warning .status-main small{color:var(--status-warning);background:var(--frontend-surface)}
.safety-card.emergency{color:var(--frontend-surface);border-color:var(--status-emergency);background:var(--status-emergency);animation:none}
.safety-card.emergency .status-icon{color:var(--status-emergency);background:var(--frontend-surface);animation:none}
.safety-card.emergency .status-main p,.safety-card.emergency .status-main>span,.safety-card.emergency .status-level span{color:var(--frontend-surface)}
.safety-card.unavailable{border-color:var(--equipment-color);background:var(--equipment-bg);box-shadow:var(--shadow)}
.safety-card.unavailable .status-icon{color:var(--equipment-color);background:var(--frontend-surface)}
.status-main>span{font-size:1.25rem;font-weight:750;line-height:1.5;color:var(--text-primary)}
.status-main,.status-level{min-width:0}
.status-main small{width:fit-content;overflow-wrap:anywhere}
.status-main p,.status-level span,.status-main small{font-size:1rem}
.pressure-spot.unavailable .spot-halo,.pressure-spot.unavailable .spot-core,.pressure-spot.unavailable .spot-alert,.pressure-spot.unavailable:after{display:none;animation:none!important}
.pressure-spot.unavailable{color:var(--equipment-color);border:1px dashed var(--border-subtle);border-radius:18px;background:var(--equipment-bg)}
.pressure-spot.unavailable .spot-label{color:var(--equipment-color)}
.pressure-spot strong{font-size:1.125rem;max-width:126px;line-height:1.35}
.spot-label,.mapping-status,.seat-legend,.seat-schematic-note,.distance-metric>small,.event-strip li{font-size:1rem}
.mapping-status{border-color:var(--border-subtle);background:var(--frontend-bg-secondary);color:var(--text-secondary);border-radius:12px}
.seat-legend{flex-wrap:wrap}
.seat-view.unavailable{--view-status:var(--equipment-color);--view-soft:var(--equipment-bg);background:var(--equipment-bg)}
.seat-view.unavailable .alert-fill{fill:var(--equipment-color)}
.seat-view.unavailable .alert-line{stroke:var(--equipment-color)}
.seat-zone-reference{font-size:1rem;grid-template-columns:1fr 1.7fr 1fr;gap:2px}
.seat-view-note{font-size:1rem}
.seat-zone-reference span:nth-child(2){color:var(--text-secondary);background:var(--frontend-bg-secondary)}
.seat-view h3,.seat-view-verdict{font-size:1.125rem;line-height:1.5}
.distance-reading strong{font-size:1.25rem}
.distance-metric.distance-unavailable .distance-track i{transition:none}
.distance-track>[hidden]{display:none}
@media(max-width:700px){.seat-view h3,.seat-view-verdict{font-size:1.25rem}}

/* Stream availability is independent of the Engine's safety level. */
.seat-viewpoint,.viewpoint-label,.viewpoint-reference{font-size:1rem;line-height:1.6;color:var(--text-secondary)}
.seat-viewpoint{margin:0 0 12px;text-align:center;color:var(--text-primary);font-weight:600}
.seat-viewpoint span{color:var(--text-secondary);font-weight:400}
.viewpoint-label{margin:8px 0 0;text-align:center;min-height:3.2em}
.viewpoint-reference{margin:12px 0 0;text-align:center}
.demo-playback[hidden]{display:none}
.demo-playback{display:flex;align-items:center;flex-wrap:wrap;gap:16px;padding:20px;margin-bottom:24px;border:1px solid var(--border-subtle);border-radius:20px;background:var(--frontend-surface);font-size:1rem}
.demo-playback>div:first-child{display:grid;gap:5px}
.demo-playback strong{color:var(--frontend-primary);font-size:1.125rem}
.demo-playback label{display:grid;gap:6px;flex:1;min-width:220px}
.demo-playback select,.demo-playback button{font:inherit;color:var(--text-primary);background:var(--frontend-bg-secondary);border:1px solid var(--border-subtle);border-radius:10px;padding:10px;min-height:44px}
.demo-controls{display:flex;flex-wrap:wrap;gap:8px}
.demo-playback button{cursor:pointer}
.demo-playback select:focus-visible,.demo-playback button:focus-visible{outline:3px solid var(--frontend-primary);outline-offset:3px}
.demo-playback #demoProgress{min-width:150px;color:var(--text-secondary)}
@media(max-width:700px){.demo-playback label{min-width:0;width:100%;flex-basis:100%}.demo-controls{width:100%}.demo-controls button{flex:1}}
.connection strong,.connection small{grid-column:2}
.connection #apiConnection,.connection #dataAvailability{font-size:1rem}
.safety-card.data-unavailable{background:var(--equipment-bg);border-color:var(--equipment-color);color:var(--text-primary);box-shadow:var(--shadow);animation:none}
.safety-card.data-unavailable .status-icon{color:var(--equipment-color);background:var(--frontend-surface);animation:none}
.seat-view.unavailable .person-fill{fill:var(--equipment-color)}
.safety-card.data-unavailable .status-main h2{font-size:clamp(2rem,5vw,3.4rem);line-height:1.2}
#lastKnownPanel{margin-top:18px;padding:16px;border:1px solid var(--border-subtle);border-radius:14px;background:var(--frontend-surface)}
#lastKnownPanel[hidden],#lastKnownNotice[hidden]{display:none}
#lastKnownPanel p{margin:0;font-size:1rem;line-height:1.6;overflow-wrap:anywhere}
#lastKnownPanel #lastKnownResult{font-size:1.125rem;font-weight:800;color:var(--text-primary)}
#lastKnownPanel #lastKnownNotice{font-size:1.125rem;font-weight:750;color:var(--status-warning);margin-top:6px}

/* Fit four sensor regions within narrow seats without covering adjacent labels. */
@media(max-width:620px){
  .pressure-spot{width:42%;min-width:0;height:106px;padding:4px}
  .pressure-spot.rear-left,.pressure-spot.front-left{left:5%}
  .pressure-spot.rear-right,.pressure-spot.front-right{right:5%}
  .pressure-spot strong{max-width:100%;font-size:clamp(.75rem,3.5vw,1rem);padding:3px 4px;overflow-wrap:anywhere}
  .pressure-spot .spot-label{font-size:.8rem}
  .metric-row>div.distance-metric{grid-template-columns:minmax(0,1fr);gap:8px}
  .distance-reading{min-width:0;justify-items:start}
  .distance-reading strong{font-size:1.125rem;line-height:1.5;overflow-wrap:anywhere}
  .distance-track,.distance-metric>small{grid-column:1}
}

/* Stable readings stay steady; change animation is reserved for changing regions. */
.pressure-spot.steady-reading{--spot-scale:1.6!important;--spot-opacity:.4!important}

/* Data changes must not animate card geometry or move the reading anchor. */
.safety-card{transition:background-color .25s,border-color .25s,color .25s}
.app-shell{overflow-anchor:none}

/* One visual treatment for the same moderate-load label, including Safari layers. */
.pressure-spot.steady-reading .spot-halo{width:112px;height:112px;background:rgba(85,107,87,.07);filter:none;opacity:1;animation:none;transition:none;transform:translate(-50%,-50%)}
.pressure-spot.steady-reading .spot-core{width:74px;height:74px;border:2px solid rgba(85,107,87,.42);background:rgba(85,107,87,.4);box-shadow:0 0 0 9px rgba(85,107,87,.06);animation:none;transition:none;transform:translate(-50%,-50%)}
.pressure-spot.steady-reading:after{display:none;animation:none}
