:root{--page:#f6f5f1;--paper:#fffefa;--ink:#303b32;--muted:#7d8178;--line:#e4e5dc;--green:#607862;--accent:#bd6e4f;--accent-dark:#a85c40;--soft-green:#edf1e8;--font:Inter,"Aptos","Segoe UI",Arial,sans-serif;color-scheme:light;font-family:var(--font);color:var(--ink);background:var(--page);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}button,a,input,[tabindex]{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid #527d8b;outline-offset:4px}button{transition:background .18s,box-shadow .18s,opacity .18s,transform .18s}button:active:not(:disabled){transform:translateY(1px)}button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}button[hidden],[hidden]{display:none!important}a{color:inherit}p,h1,h2{margin:0}.site-header{height:104px;max-width:1580px;margin:auto;padding:0 44px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:25px;font-weight:650;letter-spacing:-1px}.brand-period{color:var(--accent)}.brand-mark{width:39px;height:43px;display:grid;place-items:center;border-radius:11px;background:#e9ece2;color:#556b53}.brand-mark svg{width:31px;height:31px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.header-right{display:flex;align-items:center;gap:17px}.connection-badge{font-size:11px;letter-spacing:.25px;display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid #dde4d6;border-radius:30px;background:#eff2e9;color:#52634e}.status-dot{width:6px;height:6px;border-radius:50%;background:#748866;display:inline-block;flex-shrink:0}.connection-badge.local{background:#f5eee1;border-color:#e8dfce;color:#847354}.connection-badge.local .status-dot{background:#b49a65}.connection-badge.disconnected{background:#f8e9e1;border-color:#e6c9b9;color:#975b3d}.connection-badge.disconnected .status-dot{background:#b46d4a}.icon-button{padding:0;min-width:34px;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:8px;background:transparent;color:#6e776d}.icon-button:hover{background:#e9ede3}.icon-button:disabled{opacity:.35}.leave-button{border:0;background:transparent;color:#787d74;font-size:12px;padding:9px 0 9px 17px;border-left:1px solid var(--line)}.leave-button span{padding-left:5px;font-size:16px}.leave-button:hover{color:var(--accent)}.app-layout{display:grid;grid-template-columns:246px minmax(0,1fr);gap:34px;padding:36px 44px 28px;max-width:1580px;margin:auto}.sidebar{display:flex;flex-direction:column;gap:24px}.eyebrow{font-size:9px;font-weight:650;letter-spacing:1.5px;color:#8b907f;line-height:1.5}.welcome-copy .eyebrow{font-size:8.5px;letter-spacing:1.8px;margin:3px 0 14px}.welcome-copy h1{font-family:Georgia,"Times New Roman",serif;font-size:54px;line-height:1.06;letter-spacing:-2px;font-weight:normal;color:#374d39}.welcome-copy>p:last-child{color:#7a8174;font-size:12px;line-height:1.8;margin-top:16px}.person-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:19px 18px 13px;box-shadow:0 3px 10px #45503903}.person-row{display:flex;gap:11px;align-items:center;margin-top:17px}.person-icon{width:39px;height:39px;background:#f2e4db;border-radius:12px;display:grid;place-items:center;flex-shrink:0}.person-icon svg{width:36px;height:36px}.person-identity{min-width:0}.person-identity strong{font-size:14px;display:block;overflow-wrap:anywhere;font-weight:600}.person-identity>span{font-size:10px;display:block;margin-top:4px;color:var(--muted);line-height:1.4}.seat-location{border-radius:7px;background:#f5f5ef;font-size:10px;color:#858978;display:flex;align-items:center;gap:7px;margin:17px 0 14px;padding:10px}.location-dot{width:5px;height:5px;flex-shrink:0;border-radius:50%;background:#b1b7a7}.seat-location.active{background:#f6ebe4;color:#ae684a}.seat-location.active .location-dot{background:var(--accent)}.primary-button{border:0;border-radius:9px;color:#fffdf8;background:var(--accent);font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:9px;min-height:43px;width:100%}.primary-button:hover:not(:disabled){background:var(--accent-dark);box-shadow:0 4px 12px #a4593420}.primary-button:disabled{background:#e9eae3;color:#a2a596}.stand-button svg{height:17px;width:17px}.text-button{border:0;background:transparent;font-size:11px;font-weight:500;color:#798271;padding:8px 0}.text-button:hover:not(:disabled){color:var(--accent)}.text-button:disabled{opacity:.4}.find-seat{display:flex;justify-content:center;gap:14px;width:100%;margin-top:6px}.find-seat span{font-size:15px}.stats-card{padding:0 3px}.stats-card h2{margin-bottom:15px}.stat{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#7a8273;padding:7px 0}.stat strong{font-size:15px;font-weight:550;color:#53664e;font-variant-numeric:tabular-nums}.seat-meter{display:grid;grid-template-columns:repeat(20,1fr);gap:4px;margin-top:14px}.seat-meter i{height:9px;border-radius:2px;background:#d7e0ce;transition:background .2s}.seat-meter i.taken{background:#a3aaa0}.seat-meter i.mine{background:#c28162}.seat-meter i.reserved{background:#dcc6a3}.capacity-note{font-size:9px;color:#959b8e;line-height:1.65;margin-top:9px;min-height:28px}.instructions-card{padding-top:17px;border-top:1px solid var(--line)}.instructions-card h2{margin-bottom:15px}.instruction{display:flex;align-items:center;gap:11px;margin:14px 0}.instruction-icon{width:31px;height:31px;border:1px solid #e2e6d9;border-radius:8px;display:grid;place-items:center;flex-shrink:0;color:#849078;background:#f0f2e9}.instruction-icon svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.instruction p strong{font-size:11px;font-weight:550;display:block;color:#6e7865}.instruction p span{font-size:10px;line-height:1.7;color:#989d90;display:block}.demo-tools{padding:12px 3px 0;border-top:1px solid var(--line);margin-top:auto}.demo-tools .text-button{font-size:11px;padding:3px 0 8px}.demo-tools p{font-size:9px;line-height:1.6;color:#9a9f91}.room-panel{align-self:start;background:#fcfbf7;border:1px solid #e0e2d7;border-radius:17px;overflow:hidden;box-shadow:0 6px 28px #53634305}.room-toolbar{padding:23px 25px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fffef9;border-bottom:1px solid var(--line)}.room-heading-row{display:flex;align-items:center;gap:9px}.room-heading-row h2{font-size:15px;font-weight:600;letter-spacing:-.25px}.tiny-room-icon{display:flex;color:#839075}.tiny-room-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.room-toolbar p{font-size:10px;color:#969b8e;margin-top:8px}.capacity-pill{padding:7px 11px;border-radius:6px;font-size:10px;white-space:nowrap;color:#758067;display:flex;align-items:center;gap:7px;background:#f0f3e9}.capacity-pill .status-dot{width:5px;height:5px}.room-viewport{overflow:auto;background:#f0ede5;max-height:790px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#c9c9b9 #f0ede5;touch-action:pan-x pan-y}.world-stage{min-width:880px;width:100%;position:relative}#room-svg{width:100%;height:auto;display:block;cursor:crosshair;user-select:none;-webkit-user-select:none;outline-offset:-5px}#architecture,#decorations,#avatars{pointer-events:none}.chair{cursor:pointer;outline:none}.chair .seat-hit{fill:transparent;stroke:none}.chair .seat-ring{fill:none;stroke:transparent;stroke-width:2}.chair .seat-base{fill:#bcc6b0;stroke:#8b9a7c;stroke-width:1.5}.chair .seat-pad{fill:#e2e9d8;stroke:#a0ae91;stroke-width:1}.chair .chair-back{fill:#c4ceb8;stroke:#93a283;stroke-width:1.2}.chair .seat-plus{stroke:#869777;stroke-width:1.5;stroke-linecap:round}.chair .seat-body{transition:filter .15s,opacity .15s}.chair:hover .seat-ring,.chair:focus-visible .seat-ring{stroke:#829574;stroke-width:2.5}.chair:hover .seat-pad{fill:#f0f6e9}.chair:focus-visible .seat-ring{stroke:#527d8b;stroke-width:3}.chair.taken .seat-base{fill:#b3b7ab;stroke:#8f9487}.chair.taken .seat-pad{fill:#c8ccbf;stroke:#999e91}.chair.taken .chair-back{fill:#b8beb0;stroke:#909a86}.chair.taken{cursor:not-allowed}.chair.reserved .seat-ring{stroke:#aa8f60;stroke-dasharray:5 4}.chair.mine .seat-base{fill:#c78b6d;stroke:#a56e50}.chair.mine .seat-pad{fill:#eac5aa;stroke:#b98161}.chair.mine .chair-back{fill:#d3a187;stroke:#b67d5d}.chair.mine .seat-ring{stroke:#bb7c59}.chair:not(.available) .seat-plus{opacity:0}.table-group{cursor:default}.table-number{font-family:var(--font);font-weight:500;font-size:16px;fill:#9c8060;letter-spacing:1px;pointer-events:none}.avatar{pointer-events:none}.avatar-name{font-size:12px;font-weight:600;fill:#555e4b;font-family:var(--font);letter-spacing:.1px}.avatar.is-self .avatar-name{fill:#a56647}.avatar.is-walking .avatar-figure{animation:walk-bob .32s ease-in-out infinite}.avatar.is-walking .foot-left{animation:feet .32s ease-in-out infinite alternate}.avatar.is-walking .foot-right{animation:feet .32s ease-in-out infinite alternate-reverse}.avatar.is-seated .avatar-feet{opacity:0}.avatar.is-seated .avatar-shadow{rx:18;ry:7}.avatar .you-ring{opacity:0}.avatar.is-self .you-ring{opacity:1}.avatar.is-seated .you-ring{opacity:0}@keyframes walk-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2.5px)}}@keyframes feet{from{transform:translateY(-2px)}to{transform:translateY(2px)}}.room-bottom-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 22px;background:#fffefa;border-top:1px solid var(--line)}.legend{display:flex;gap:20px;align-items:center}.legend>span{display:flex;align-items:center;gap:6px;font-size:9px;color:#8b9183;white-space:nowrap}.legend i{width:8px;height:8px;border-radius:3px;display:block}.legend-open{background:#c8d4ba;border:1px solid #a6b595}.legend-taken{background:#acb2a3;border:1px solid #959e88}.legend-you{background:#d1a081;border:1px solid #bb8260}.view-controls{display:flex;gap:3px;align-items:center}.view-controls .icon-button{width:28px;height:28px;min-width:28px}.view-controls .icon-button svg{width:16px;height:16px}#zoom-label{font-size:9px;color:#93998b;min-width:38px;text-align:center;font-variant-numeric:tabular-nums}.control-divider{width:1px;height:15px;background:var(--line);margin:0 6px}.room-note{display:flex;justify-content:space-between;gap:10px;font-size:9px;color:#9b9f93;line-height:1.6;padding:10px 23px 11px;border-top:1px solid #eeeee6;background:#fafaf4}.touch-hint{display:none}.site-footer{display:flex;justify-content:space-between;max-width:1580px;margin:auto;padding:4px 44px 28px;color:#a3a89a;font-size:9px;letter-spacing:.1px}.site-footer b{font-weight:normal;margin:0 7px}.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);max-width:min(90vw,480px);background:#374634;color:#fbfbf4;font-size:12px;line-height:1.6;padding:13px 21px;border-radius:10px;box-shadow:0 8px 30px #27302226;z-index:20;text-align:center}.toast.error{background:#8a503d}.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}dialog{border:1px solid #e7e4d9;background:#fffef8;border-radius:21px;color:var(--ink);padding:34px;box-shadow:0 22px 95px #35443228;width:440px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 36px);overflow:auto}dialog::backdrop{background:#45544044;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.entrance-dialog{text-align:center;padding:15px 38px 28px}.entry-art{height:135px;position:relative;margin:0 auto 9px;width:280px;max-width:100%}.entry-art>svg{position:relative;width:100%;height:100%}.art-halo{position:absolute;width:113px;height:113px;border-radius:50%;background:#f0eee3;left:50%;top:9px;transform:translateX(-50%)}.entrance-dialog>.eyebrow{color:#9a9d8b;font-size:8px;letter-spacing:2.3px}.entrance-dialog h2{font-family:Georgia,"Times New Roman",serif;font-weight:normal;letter-spacing:-1.2px;color:#3e533d;font-size:39px;margin-top:10px}.entry-description{font-size:12px;line-height:1.85;color:#8b917f;margin-top:12px}#entry-form{text-align:left;margin-top:26px}#entry-form>label{display:block;font-size:11px;font-weight:550;color:#6a7660;margin-bottom:8px}.name-input-wrap{display:flex;align-items:center;gap:8px;border:1px solid #dbdfcf;background:#fbfcf6;padding:5px 10px;border-radius:9px;transition:border .2s,box-shadow .2s}.name-input-wrap:focus-within{border-color:#8a9b7b;box-shadow:0 0 0 3px #9eaf8b18}.entry-avatar{width:33px;height:33px;background:#f0e3d9;display:grid;place-items:center;border-radius:8px;flex-shrink:0}.entry-avatar svg{width:31px;height:31px}.name-input-wrap input{width:100%;min-width:0;border:0;padding:9px 5px;color:#43533c;outline:none;background:transparent;font-size:13px}.name-input-wrap input::placeholder{color:#b0b5a7}.color-fieldset{border:0;margin:17px 0 0;padding:0;display:flex}.color-fieldset legend{font-size:10px;color:#8c9480;padding:0;margin-bottom:9px}.color-choices{display:flex;gap:12px}.color-choice{padding:0;width:23px;height:23px;border:3px solid #fffef8;border-radius:50%;outline:1px solid transparent;position:relative}.color-choice[aria-pressed="true"]{outline:1.5px solid #8e9880}.color-choice[aria-pressed="true"]::after{content:"";display:block;width:7px;height:4px;transform:rotate(-45deg);border-left:1.5px solid #fff9ef;border-bottom:1.5px solid #fff9ef;position:absolute;top:5px;left:5px}.color-choice:focus-visible{outline:3px solid #527d8b;outline-offset:2px}.form-error{font-size:11px;color:#a65b43;margin-top:8px;min-height:14px;line-height:1.4}.enter-button{margin-top:7px;justify-content:space-between;padding:0 17px;min-height:46px}.enter-button>span:last-child{font-size:20px;font-weight:normal}.entry-footnote{color:#a5aa9a;font-size:9px;line-height:1.7;margin-top:16px}.help-dialog{width:480px;padding:33px}.help-dialog h2{font-family:Georgia,"Times New Roman",serif;font-size:28px;font-weight:normal;letter-spacing:-.7px;margin:12px 0 23px;color:#3d533c}.help-dialog>p:not(.eyebrow){font-size:12px;line-height:1.8;color:#7e8674;margin:14px 0}.help-dialog strong{font-weight:600;color:#55634c}.dialog-close{position:absolute;right:14px;top:14px;font-size:25px}.help-mode{margin-top:23px;border-top:1px solid var(--line);padding-top:15px;font-size:11px;line-height:1.8;color:#9a9e8e}.noscript{position:fixed;inset:20px 20px auto;z-index:100;padding:20px;background:#8a503d;color:white;text-align:center;border-radius:12px}
@media(min-width:1500px){.app-layout{grid-template-columns:258px minmax(0,1fr);gap:42px}.sidebar{gap:28px}.welcome-copy h1{font-size:60px}.room-toolbar{padding:25px 29px}.room-note{font-size:10px}.room-heading-row h2{font-size:16px}}
@media(max-width:1100px){.site-header{padding:0 26px;height:85px}.app-layout{padding:25px 26px;grid-template-columns:1fr;gap:24px}.sidebar{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:22px;align-items:start}.welcome-copy{padding-top:8px}.welcome-copy h1{font-size:45px}.welcome-copy .eyebrow{font-size:8px;letter-spacing:1.1px}.welcome-copy>p:last-child{font-size:11px;margin-top:12px}.instructions-card{display:none}.stats-card{padding:8px 3px}.person-card{padding:17px 17px 10px}.person-card .eyebrow{font-size:8px;letter-spacing:1px}.person-row{margin-top:13px}.seat-location{margin:12px 0 10px}.demo-tools{grid-column:3;padding:0;border:0;margin-top:-32px;align-self:end}.demo-tools p{display:none}.room-viewport{max-height:770px}.site-footer{padding:0 26px 24px}.room-note{font-size:10px}.touch-hint{display:inline}}
@media(max-width:700px){.site-header{height:73px;padding:0 18px}.brand{font-size:22px;gap:8px}.brand-mark{width:32px;height:37px;border-radius:9px}.brand-mark svg{width:27px;height:27px}.header-right{gap:8px}.connection-badge{font-size:9px;padding:7px 8px;gap:5px}.header-right>.icon-button{width:27px;min-width:27px}.leave-button{font-size:10px;padding-left:9px}.leave-button span{display:none}.app-layout{padding:23px 16px 19px;gap:20px}.sidebar{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px 18px}.welcome-copy{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:6px 20px;padding:0}.welcome-copy .eyebrow{grid-column:1/-1;margin:0 0 1px;font-size:8px;letter-spacing:1.3px}.welcome-copy h1{font-size:38px;line-height:1.1;letter-spacing:-1.5px}.welcome-copy h1 br{display:none}.welcome-copy>p:last-child{font-size:10px;margin:0;align-self:center;line-height:1.7}.person-card{padding:14px 13px 9px}.person-row{gap:8px;margin-top:12px}.person-icon{width:31px;height:34px;border-radius:9px}.person-icon svg{width:30px;height:30px}.person-identity strong{font-size:12px}.person-identity>span{font-size:9px}.person-card .eyebrow{font-size:7px;letter-spacing:.9px}.seat-location{font-size:9px;padding:8px;min-height:31px}.stand-button{min-height:38px;font-size:11px}.find-seat{font-size:9px;gap:7px;padding:6px 0 2px}.stats-card{padding:9px 0 0}.stats-card .eyebrow{font-size:8px;letter-spacing:1px;margin-bottom:13px}.stat{font-size:10px;padding:7px 0}.stat strong{font-size:14px}.seat-meter{grid-template-columns:repeat(10,1fr);gap:4px;margin-top:9px}.seat-meter i{height:6px}.capacity-note{font-size:8px;margin-top:8px}.demo-tools{grid-column:2;margin-top:-31px;align-self:end}.demo-tools .text-button{font-size:9px;padding:0}.room-toolbar{padding:17px 15px;gap:7px}.room-heading-row{gap:6px}.room-heading-row h2{font-size:13px}.room-toolbar p{font-size:9px;margin-top:6px}.capacity-pill{font-size:8px;padding:6px 7px;gap:4px}.room-panel{border-radius:13px}.room-viewport{max-height:600px}.room-bottom-bar{padding:10px 11px;gap:5px;flex-wrap:wrap}.legend{gap:11px}.legend>span{font-size:8px;gap:4px}.legend i{width:7px;height:7px}.view-controls{gap:0}.view-controls .icon-button{width:27px;min-width:27px;height:30px}#zoom-label{font-size:8px;min-width:30px}.control-divider{margin:0 3px}.room-note{padding:9px 13px;font-size:8px;flex-wrap:wrap;gap:3px}.touch-hint{color:#7e8873}.site-footer{padding:0 18px 20px;font-size:8px;gap:15px}.site-footer>span:first-child{display:none}.site-footer b{margin:0 4px}dialog{max-height:calc(100dvh - 25px)}.entrance-dialog{padding:8px 27px 24px;width:390px}.entry-art{height:112px;margin-bottom:6px}.art-halo{height:97px;width:97px;top:4px}.entrance-dialog h2{font-size:35px}.entry-description{font-size:11px;margin-top:9px}#entry-form{margin-top:20px}.name-input-wrap input{font-size:16px}.entry-footnote{font-size:8px}.help-dialog{padding:30px 24px}}
@media(max-width:370px){.brand{font-size:20px}.connection-badge{font-size:8px;padding:6px}.header-right{gap:4px}.leave-button{font-size:9px;padding-left:6px}.welcome-copy h1{font-size:32px}.sidebar{gap:17px 12px}.legend{gap:8px}.room-bottom-bar{justify-content:center}.view-controls{margin-left:auto}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Keep the compact header and the two-line welcome intact on small screens. */
@media(max-width:700px){.brand{font-size:20px;white-space:nowrap;flex-shrink:0;gap:6px}.connection-badge,.leave-button{white-space:nowrap}.welcome-copy{grid-template-columns:1.1fr .9fr}.welcome-copy h1 br{display:initial}}
@media(max-width:370px){.header-right .connection-badge{display:none}.brand{font-size:20px}}

.admin-dialog-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.admin-clear-chat-button{border-color:#c98268;color:#9a4f36}.admin-clear-chat-button:hover:not(:disabled){background:#f7e7df;border-color:#b96a4f}.admin-clear-note{font-size:10px!important;line-height:1.6!important;color:#9a7a6d!important;margin-top:11px!important}

/* Global all-rooms roster */
.people-panel{overflow:hidden}.people-panel ul,#people-list{overflow-x:hidden;max-width:100%}.people-row{display:flex;flex-direction:column;align-items:stretch;gap:6px;max-width:100%}.person-in-room{width:100%;min-width:0}.people-row>.private-message-button,.people-row>.admin-mute,.people-row>.admin-kick{width:100%;max-width:100%;white-space:normal}.person-in-room small{white-space:normal;overflow-wrap:anywhere}.people-hint{overflow-wrap:anywhere}


/* Admin broadcast announcement */
.admin-broadcast-form{margin:18px 0;padding:14px;border:1px solid var(--line);border-radius:12px;background:#faf9f3}.admin-broadcast-form label{display:block;font-size:11px;font-weight:650;color:#5e6957;margin-bottom:8px}.admin-broadcast-form textarea{display:block;width:100%;resize:vertical;min-height:76px;max-height:180px;border:1px solid #d9ddcf;border-radius:9px;background:#fffefa;color:var(--ink);padding:10px 11px;font:inherit;font-size:12px;line-height:1.5}.admin-broadcast-form textarea:focus{outline:3px solid #527d8b33;border-color:#7d9580}.admin-announcement{position:fixed;z-index:90;top:82px;left:50%;transform:translateX(-50%);width:min(620px,calc(100vw - 28px));display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:15px 17px;border-radius:13px;background:#374634;color:#fffef7;box-shadow:0 12px 36px #25302338}.admin-announcement[hidden]{display:none!important}.admin-announcement strong{font-size:11px;text-transform:uppercase;letter-spacing:.9px}.admin-announcement p{margin:5px 0 4px;font-size:14px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.admin-announcement span{font-size:9px;color:#d8dfd2}.admin-announcement button{border:0;background:transparent;color:#fff;font-size:23px;line-height:1;padding:0 2px;flex:0 0 auto}.admin-announcement.announce-pop{animation:admin-announce-pop .32s ease-out}@keyframes admin-announce-pop{from{opacity:0;transform:translate(-50%,-10px) scale(.98)}to{opacity:1;transform:translate(-50%,0) scale(1)}}@media(max-width:700px){.admin-announcement{top:67px}.admin-announcement p{font-size:13px}}

/* Admin voice broadcast */
.admin-voice-broadcast{margin:18px 0;padding:14px;border:1px solid var(--line);border-radius:12px;background:#f7f8f2}.admin-voice-broadcast>label{display:block;font-size:11px;font-weight:650;color:#5e6957}.admin-voice-broadcast>p{font-size:10px!important;color:#8a907f!important;margin:5px 0 11px!important}.admin-voice-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.admin-voice-actions .primary-button{width:auto;min-height:34px;padding:0 13px}.admin-voice-preview{width:100%;height:38px;margin-top:10px}.admin-voice-announcement{position:fixed;z-index:91;top:150px;left:50%;transform:translateX(-50%);width:min(620px,calc(100vw - 28px));display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 14px;padding:14px 16px;border-radius:13px;background:#425444;color:#fffef7;box-shadow:0 12px 36px #25302338}.admin-voice-announcement[hidden]{display:none!important}.admin-voice-copy{min-width:0}.admin-voice-copy strong{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.9px}.admin-voice-copy span{display:block;font-size:9px;color:#d8dfd2;margin-top:4px}.admin-voice-announcement audio{grid-column:1 / -1;width:100%;height:38px}.admin-voice-announcement>button{position:absolute;right:10px;top:9px;border:0;background:transparent;color:#fff;font-size:23px;line-height:1}.admin-voice-announcement.voice-pop{animation:admin-voice-pop .32s ease-out}@keyframes admin-voice-pop{from{opacity:0;transform:translate(-50%,-10px) scale(.98)}to{opacity:1;transform:translate(-50%,0) scale(1)}}@media(max-width:700px){.admin-voice-announcement{top:132px}}

/* v12 admin live voice */
.admin-live-banner{position:fixed;z-index:92;top:145px;left:50%;transform:translateX(-50%);width:min(620px,calc(100vw - 28px));display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 16px;border-radius:13px;background:#3f5342;color:#fffef7;box-shadow:0 12px 36px #25302338}.admin-live-banner[hidden]{display:none!important}.admin-live-banner strong{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.9px}.admin-live-banner span{display:block;font-size:9px;color:#d8dfd2;margin-top:4px}.admin-live-banner button{border:1px solid #ffffff55;background:#ffffff14;color:#fff;border-radius:8px;padding:7px 10px;font-size:10px}.admin-live-status{font-size:10px!important;color:#7c8777!important;margin:10px 0 0!important}.admin-live-status.live{color:#5c765b!important;font-weight:650}.admin-voice-actions .primary-button{width:auto;min-width:100px}.admin-voice-actions{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:700px){.admin-live-banner{top:126px}}

/* Static admin-required gate: visible before JavaScript initializes. */
.site-header{position:relative;z-index:30}
.admin-required-overlay{position:fixed;inset:0;z-index:25;background:rgba(246,245,241,.96);backdrop-filter:blur(5px);display:grid;place-items:center;padding:24px}
.admin-required-overlay[hidden]{display:none!important}
.admin-required-card{max-width:520px;width:min(92vw,520px);background:#fffefa;border:1px solid #e1e3d8;border-radius:20px;padding:34px;text-align:center;box-shadow:0 18px 70px rgba(45,55,46,.16)}
.admin-required-card h2{font-family:Georgia,"Times New Roman",serif;font-weight:normal;font-size:34px;color:#3e533d;margin:0 0 12px}
.admin-required-card>p{font-size:13px;line-height:1.8;color:#7d8575;margin:0}
.admin-required-admin-button{margin-top:14px;border:0;border-radius:10px;background:#bd6e4f;color:#fffdf8;font:600 13px/1 inherit;padding:13px 20px;min-width:180px;cursor:pointer}
.admin-required-admin-button:hover{background:#a85c40}
.admin-required-login{margin-top:22px;padding-top:20px;border-top:1px solid #e7e6dc;text-align:left}
.admin-required-login label{display:block;font-size:11px;font-weight:600;color:#667061;margin:10px 0 6px}
.admin-required-login input{width:100%;border:1px solid #d9ddcf;border-radius:9px;padding:11px 12px;background:#fbfcf7;color:#394439;font:inherit}
.admin-required-login input:focus{outline:3px solid #527d8b33;border-color:#829574}
.admin-required-login .form-error{min-height:18px;margin-top:8px;color:#a65b43;font-size:11px}

/* v16.6: keep admin login directly beneath the closed-room message. */
.admin-required-card>p{margin-bottom:0}
.admin-required-login{margin-top:16px;padding-top:16px}

/* v16.7: closed-room gate scroll fix */
html,body{min-height:100%}
.admin-required-overlay{display:block;overflow-y:auto;overflow-x:hidden;padding:24px 16px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.admin-required-card{margin:0 auto;max-height:none;min-height:min-content}
@media(max-height:720px){
  .admin-required-overlay{padding-top:12px;padding-bottom:24px}
  .admin-required-card{padding:24px 22px}
  .admin-required-card h2{font-size:29px}
  .admin-required-login{margin-top:12px;padding-top:12px}
}
@media(max-width:700px){
  .admin-required-overlay{padding:12px 10px 28px}
  .admin-required-card{width:100%;max-width:430px;padding:22px 18px;border-radius:16px}
  .admin-required-admin-button{width:100%}
}

/* v16.8: force a visible vertical scrollbar inside the closed-room card. */
.admin-required-overlay{
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  padding:12px;
}
.admin-required-card{
  width:min(92vw,520px);
  height:min(620px,calc(100dvh - 24px));
  max-height:calc(100dvh - 24px);
  overflow-y:scroll;
  overflow-x:hidden;
  scrollbar-gutter:stable;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  margin:0;
  padding:30px 28px 42px;
}
.admin-required-card::-webkit-scrollbar{width:12px}
.admin-required-card::-webkit-scrollbar-track{background:#ecece4;border-radius:20px}
.admin-required-card::-webkit-scrollbar-thumb{background:#9ea995;border:3px solid #ecece4;border-radius:20px}
.admin-required-card{scrollbar-width:auto;scrollbar-color:#9ea995 #ecece4}
.admin-required-login{scroll-margin-top:16px}
@media(max-width:700px){
  .admin-required-overlay{padding:8px}
  .admin-required-card{width:100%;height:calc(100dvh - 16px);max-height:calc(100dvh - 16px);padding:22px 18px 38px}
}

/* v16.9: the closed-room admin gate owns the screen while locked. */
.admin-required-overlay{z-index:2147483000}
body.admin-locked{overflow:hidden}

/* v17.4: transferred normal players never paint the admin gate before restore. */
html.transfer-boot #admin-required-overlay { display:none !important; visibility:hidden !important; opacity:0 !important; }

/* v19.0 fully responsive layout */
html,body{max-width:100%;overflow-x:hidden}
img,svg,video,canvas{max-width:100%}
.app-layout,.room-panel,.sidebar,.site-header,.site-footer{min-width:0}
.room-panel{width:100%}
.room-viewport{width:100%;max-width:100%;overflow:auto}
.world-stage{min-width:0!important;width:100%!important}
#room-svg{width:100%!important;height:auto!important;min-width:0!important}

@media(max-width:900px){
  .site-header{height:auto;min-height:72px;padding:12px 18px;gap:10px;flex-wrap:wrap}
  .header-right{min-width:0;flex-wrap:wrap;justify-content:flex-end}
  .app-layout{padding:18px;grid-template-columns:1fr;gap:18px}
  .sidebar{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
  .welcome-copy{grid-column:1/-1}
  .room-toolbar{align-items:flex-start;flex-wrap:wrap}
  .capacity-pill{white-space:normal}
  .room-bottom-bar{flex-wrap:wrap}
  .legend{flex-wrap:wrap}
  .site-footer{flex-wrap:wrap}
}

@media(max-width:600px){
  body{font-size:14px}
  .site-header{padding:10px 12px;min-height:64px}
  .brand{font-size:19px;max-width:100%}
  .brand-mark{width:30px;height:34px}
  .header-right{width:100%;justify-content:space-between;gap:6px}
  .connection-badge{max-width:50vw;overflow:hidden;text-overflow:ellipsis}
  .leave-button{border-left:0;padding-left:4px}
  .app-layout{padding:12px;gap:14px}
  .sidebar{display:grid;grid-template-columns:1fr;gap:12px}
  .welcome-copy{display:block}
  .welcome-copy h1{font-size:clamp(30px,10vw,40px);margin-top:4px}
  .welcome-copy>p:last-child{margin-top:8px}
  .person-card,.voice-card,.people-panel{width:100%;min-width:0}
  .stats-card,.demo-tools{grid-column:auto!important;grid-row:auto!important;margin-top:0!important}
  .room-panel{border-radius:10px}
  .room-toolbar{padding:12px}
  .room-heading-row h2{font-size:14px}
  .room-viewport{max-height:none;overflow:hidden;touch-action:manipulation}
  .world-stage{min-width:0!important;width:100%!important}
  #room-svg{width:100%!important;height:auto!important;touch-action:manipulation}
  .room-bottom-bar{padding:9px 10px;align-items:flex-start}
  .legend{width:100%;gap:7px 12px}
  .view-controls{margin-left:auto}
  .room-note{padding:8px 10px}
  .site-footer{padding:0 12px 14px}
  dialog{width:calc(100vw - 16px)!important;max-width:calc(100vw - 16px)!important;max-height:calc(100dvh - 16px)!important;margin:auto;padding-left:16px!important;padding-right:16px!important}
  .entrance-dialog,.help-dialog,.admin-dialog{width:calc(100vw - 16px)!important}
  .admin-required-card{width:100%!important;max-width:none!important}
  .admin-announcement,.admin-voice-announcement,.admin-live-banner{width:calc(100vw - 16px)!important;left:8px!important;right:8px!important;transform:none!important}
}

@media(max-width:420px){
  .site-header{align-items:flex-start}
  .brand{font-size:18px}
  .connection-badge{font-size:8px;max-width:58vw}
  .room-toolbar>div:first-child{width:100%}
  .capacity-pill{width:100%;justify-content:center}
  .room-bottom-bar{display:block}
  .view-controls{margin:8px 0 0;justify-content:flex-end}
  .legend{display:grid;grid-template-columns:repeat(3,1fr)}
  .legend>span{white-space:normal}
  .admin-voice-actions .primary-button{width:100%}
}

@media(max-height:520px) and (orientation:landscape){
  .site-header{min-height:52px;padding-top:6px;padding-bottom:6px}
  .app-layout{padding-top:8px}
  .welcome-copy{display:none}
  dialog{max-height:calc(100dvh - 8px)!important}
}


/* v20.0 mobile panoramic room viewport
   Keep chairs/avatars usable on phones and tablets instead of shrinking the
   full 1240px room to the device width. The inline width from setZoom() is
   authoritative; this CSS makes that oversized stage scroll naturally. */
.room-viewport{
  overflow:auto!important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  touch-action:pan-x pan-y;
  scrollbar-gutter:stable;
}
.world-stage{
  max-width:none!important;
  flex:none;
}
#room-svg{
  max-width:none!important;
  height:auto!important;
  touch-action:pan-x pan-y;
}
@media(max-width:900px){
  .room-viewport{
    max-height:min(72dvh,680px)!important;
  }
  .touch-hint{font-weight:600}
}
@media(max-width:600px){
  .room-viewport{
    max-height:min(68dvh,620px)!important;
    overflow:auto!important;
    touch-action:pan-x pan-y!important;
  }
  .world-stage{
    width:auto;
    min-width:0;
  }
  #room-svg{
    width:100%!important;
    min-width:100%!important;
    touch-action:pan-x pan-y!important;
  }
  .room-note .touch-hint::before{content:'Panoramic view: ';}
}
@media(max-height:520px) and (orientation:landscape){
  .room-viewport{max-height:72dvh!important}
}


/* v21.0 whole-page mobile vertical scrolling
   Mobile/tablet: the room no longer owns a separate vertical scroll area.
   The entire project page (header, controls, room, chat, etc.) moves up/down
   together. The room keeps horizontal panoramic scrolling only. */
@media (max-width:900px){
  html,body{height:auto!important;min-height:100%;overflow-y:auto!important;overscroll-behavior-y:auto!important}
  body{position:static!important;touch-action:pan-y pinch-zoom}
  .app-layout{overflow:visible!important}
  .room-panel{overflow:visible!important}
  .room-viewport{
    max-height:none!important;
    height:auto!important;
    overflow-x:auto!important;
    overflow-y:visible!important;
    overscroll-behavior-x:contain!important;
    overscroll-behavior-y:auto!important;
    touch-action:pan-x pan-y!important;
    -webkit-overflow-scrolling:touch;
    scrollbar-gutter:auto!important;
  }
  .world-stage,#room-svg{
    touch-action:pan-x pan-y!important;
  }
  .room-toolbar,.room-bottom-bar,.sidebar,.chat-panel{
    position:static!important;
  }
}
@media (max-width:600px){
  .room-viewport{
    max-height:none!important;
    overflow-x:auto!important;
    overflow-y:visible!important;
  }
}
@media (max-height:520px) and (orientation:landscape){
  .room-viewport{max-height:none!important;height:auto!important;overflow-y:visible!important}
}

/* v22.0 frameless mobile room
   Phones/tablets: remove the visible room card/frame so the panoramic room
   feels like part of the same vertically scrolling page. Horizontal room
   panning remains available; the page owns vertical scrolling. */
@media (max-width:900px){
  .room-panel{
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    background:transparent!important;
    overflow:visible!important;
  }
  .room-viewport{
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    background:transparent!important;
    outline:0!important;
    overflow-x:auto!important;
    overflow-y:visible!important;
    scrollbar-width:none;
  }
  .room-viewport::-webkit-scrollbar{display:none;width:0;height:0}
  .room-toolbar{
    border-bottom:0!important;
    box-shadow:none!important;
  }
  .room-bottom-bar{
    border-top:0!important;
    box-shadow:none!important;
  }
}
@media (max-width:600px){
  .room-panel{
    width:calc(100% + 24px)!important;
    margin-left:-12px!important;
    margin-right:-12px!important;
  }
  .room-toolbar,.room-bottom-bar,.room-note{
    border-radius:0!important;
  }
}


/* v23.0 iPhone/mobile page-scroll behavior
   Vertical swipes over the room belong to the document, not a nested room
   scroller. Horizontal room panning is handled by JavaScript so iOS Safari
   does not trap up/down gestures inside the panoramic room. Desktop stays
   unchanged. */
@media (max-width:900px){
  .room-viewport,
  .world-stage,
  #room-svg{
    touch-action:pan-y pinch-zoom!important;
    overscroll-behavior-y:auto!important;
  }
  .room-viewport{
    overflow-x:hidden!important;
    overflow-y:visible!important;
    -webkit-overflow-scrolling:auto!important;
  }
}

/* v24.0 mobile true frameless room shell + Safari cache refresh
   Mobile only. Desktop remains unchanged. The room is part of normal page flow;
   no card/frame surface surrounds the tables. */
@media (max-width:900px){
  .room-panel,
  .room-toolbar,
  .shared-tools,
  .room-bottom-bar,
  .room-note{
    background:transparent!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    outline:0!important;
  }
  .room-panel{
    width:100%!important;
    margin-left:0!important;
    margin-right:0!important;
    padding:0!important;
    overflow:visible!important;
  }
  .room-toolbar{
    padding-left:0!important;
    padding-right:0!important;
  }
  .room-viewport{
    width:100%!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    outline:0!important;
    background:transparent!important;
    overflow-x:hidden!important;
    overflow-y:visible!important;
    touch-action:pan-y pinch-zoom!important;
  }
  .world-stage,#room-svg{
    margin:0!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    outline:0!important;
  }
}

/* v25.0 mobile-only: larger room tables + compact online moderation row.
   Desktop remains unchanged. On phones the room stage is wider than the
   viewport so roughly three table columns are visible at once. */
@media (max-width:600px){
  .world-stage,
  #room-svg{
    width:650px!important;
    min-width:650px!important;
    max-width:none!important;
  }

  #people-list{
    width:100%!important;
    max-width:100%!important;
    margin:0!important;
    padding:0!important;
  }
  #people-list>li{
    width:100%!important;
    max-width:100%!important;
    margin:0 0 7px!important;
    padding:0!important;
  }
  .people-row{
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:4px!important;
    align-items:stretch!important;
    width:100%!important;
    max-width:100%!important;
  }
  .people-row>.person-in-room{
    grid-column:1 / -1!important;
    width:100%!important;
    min-width:0!important;
    margin:0!important;
  }
  .people-row>.private-message-button,
  .people-row>.admin-mute,
  .people-row>.admin-kick{
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    min-height:34px!important;
    height:auto!important;
    margin:0!important;
    padding:5px 3px!important;
    border-radius:7px!important;
    font-size:9px!important;
    line-height:1.08!important;
    letter-spacing:0!important;
    white-space:normal!important;
    overflow-wrap:normal!important;
    text-align:center!important;
  }
}
@media (max-width:370px){
  .world-stage,
  #room-svg{
    width:610px!important;
    min-width:610px!important;
  }
  .people-row>.private-message-button,
  .people-row>.admin-mute,
  .people-row>.admin-kick{
    font-size:8px!important;
    padding:5px 2px!important;
  }
}


/* v26 — iPhone/phone room fit: no horizontal panorama. Desktop unchanged. */
@media (max-width:600px){
  .room-viewport{
    width:100%!important;
    max-width:100%!important;
    overflow-x:hidden!important;
    overflow-y:visible!important;
    overscroll-behavior-x:none!important;
    touch-action:pan-y pinch-zoom!important;
    -webkit-overflow-scrolling:auto!important;
  }
  .world-stage{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    margin:0!important;
    touch-action:pan-y pinch-zoom!important;
  }
  #room-svg{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    touch-action:pan-y pinch-zoom!important;
  }
  .view-controls{display:none!important;}
}


/* v27 — iPhone 20-table reflow: 2 tables per row, 10 rows. Phone only. */
@media (max-width:600px){
  .world-stage,#room-svg{width:100%!important;min-width:0!important;max-width:100%!important;height:auto!important;}
  .room-viewport{overflow:visible!important;}
  #room-svg{aspect-ratio:1240 / 3300!important;}
  .touch-hint{font-size:9px!important;}
}
