@font-face{font-family:Plaza;src:url('/fonts/Plaza.woff2')}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{font-family:Plaza,'Noto Sans KR',Arial,sans-serif;background:#111c1e;color:#f3f4eb}button,input,select{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #a4d9b1;outline-offset:4px}button:disabled{cursor:wait;opacity:.5}.hidden{display:none!important}#scene,#shade,#labels{position:fixed;inset:0}#scene canvas{display:block;width:100%;height:100%;touch-action:none}#scene{background:radial-gradient(ellipse at 70% 30%,#31403b,#0c171b)}#shade{pointer-events:none;background:linear-gradient(90deg,rgba(10,22,24,.98),rgba(10,22,24,.92) 25%,rgba(10,22,24,.12) 57%,rgba(10,22,24,0)),linear-gradient(0deg,rgba(7,19,21,.85),transparent 25%);transition:opacity .6s}body.in-hall #shade{opacity:0}#labels{pointer-events:none;overflow:hidden}.world-label{position:absolute;transform:translate(-50%,-100%);white-space:nowrap;color:#e3e9e4;font-size:10px;background:#152522cc;padding:3px 7px;border-radius:7px;box-shadow:0 2px 6px #0003}.world-label.self{background:#bfe9c7;color:#163b29}.world-label.npc{color:#bbb;background:#0e1c1ccc}.world-bubble{position:absolute;transform:translate(-50%,-100%);background:#fff8e9;color:#24382b;white-space:nowrap;padding:9px 13px;border-radius:15px 15px 15px 2px;font-size:13px;box-shadow:0 5px 18px #0003;z-index:3}header{position:fixed;top:0;left:0;right:0;height:108px;display:flex;align-items:center;justify-content:space-between;padding:0 4.3%;z-index:10}.brand{display:flex;gap:11px;align-items:center;text-decoration:none;color:#f0f4eb;font-size:21px;font-weight:700;letter-spacing:-.7px}.brand-icon{display:flex;justify-content:center;align-items:center;width:34px;height:36px;font-size:30px;line-height:1;color:#b6dfb5;transform:rotate(-7deg)}.brand small{font-size:8px;display:block;letter-spacing:1.9px;font-weight:400;margin-top:5px;color:#a5b2ac}nav{display:flex;gap:24px;align-items:center}.quiet{border:0;background:transparent;font-size:12px;color:#c3d0c8;padding:12px 0}.demo-tag{font-size:11px;padding:8px 12px;border:1px solid #607a6e66;border-radius:5px;background:#14251daa;color:#bed6c2}.demo-tag i,.dot,.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#bed7ad;margin-right:6px}.demo-tag i{background:#d5af73}#lobby{position:absolute;z-index:4;top:22%;left:5.1%;width:430px}.eyebrow{font-size:10px;letter-spacing:1.4px;color:#9fbaa7;font-weight:500;display:flex;align-items:center;gap:9px}.eyebrow>span{width:23px;height:1px;background:#9fbaa7}h1{font-size:clamp(45px,4.1vw,67px);line-height:1.17;font-weight:500;letter-spacing:-3.5px;margin:27px 0 24px}h1 em{font-style:normal;color:#c1dfb3}.intro{font-size:18px;line-height:1.7;color:#d6dfd7;letter-spacing:-.5px;margin:0}.subintro{font-size:12px;line-height:1.9;color:#8ea399;margin:14px 0 28px}.primary{background:#c4e6af;color:#20362b;border:0;display:flex;justify-content:space-between;align-items:center;padding:17px 22px;font-size:13px;font-weight:700;border-radius:7px;min-width:255px;transition:.2s}.primary:hover{background:#def1d1;transform:translateY(-1px)}.primary span{font-size:20px;line-height:1}.entry-caption{font-size:10px;color:#8ba094;margin-top:14px}.entry-caption b{margin:0 8px;color:#5e7667}.entry-caption .dot{width:4px;height:4px;background:#b3d5a4}.lobby-note{margin-top:36px;border-top:1px solid #45635666;padding-top:19px;display:flex;gap:13px;color:#b8cbbd;font-size:11px}.lobby-note>span{font-size:9px;color:#6f8d7d;border:1px solid #45635688;padding:5px;border-radius:50%;height:23px}.lobby-note small{display:block;font-size:9px;line-height:1.7;color:#6f877c;margin-top:6px}#previewBadge{position:absolute;right:5%;bottom:7%;display:flex;align-items:center;gap:10px;background:#152a27b5;border:1px solid #6d8b6b55;border-radius:8px;padding:16px 18px;backdrop-filter:blur(12px);font-size:11px;z-index:5}#previewBadge small{display:block;font-size:9px;color:#8fae9d;margin-top:6px}#previewBadge button{margin-left:18px;font-size:18px;border:0;background:none;color:#c2dabc}.live-dot{background:#c4e6af;box-shadow:0 0 0 5px #b6dbb013}.room-chip{position:fixed;top:103px;left:4.3%;background:#0e211bce;padding:10px 15px;border:1px solid #6a8b6a44;border-radius:6px;display:flex;align-items:center;gap:8px;font-size:11px}.room-chip strong{font-weight:500}.room-chip #roomCount{color:#adccac;margin-left:10px}.room-chip small{font-size:9px;color:#7e9b8d}.divider{height:11px;width:1px;background:#53695a;margin:0 2px}.view-controls{position:fixed;right:4.3%;top:103px;display:flex;gap:7px}.view-controls button{font-size:13px;background:#112720d9;border:1px solid #5b7c665c;border-radius:6px;padding:10px 14px;color:#e4ede3}.view-controls span{font-size:10px;margin-left:5px}.help-chip{position:fixed;bottom:132px;width:100%;text-align:center;font-size:10px;color:#c3d3c8;pointer-events:none;text-shadow:0 1px 3px #000}.self-chip{position:fixed;bottom:45px;left:4.3%;display:grid;grid-template-columns:40px auto;column-gap:10px;align-items:center;background:#122a22d9;border:1px solid #62836a66;padding:10px 17px 10px 7px;border-radius:9px}.self-chip img{width:42px;height:42px;grid-row:1/3;object-fit:cover;background:#dddccf;border-radius:50%}.self-chip span{font-size:12px}.self-chip small{font-size:9px;color:#9ab5a1;margin-top:5px}.emotion-dock{position:fixed;bottom:42px;left:50%;transform:translateX(-50%);display:flex;gap:4px;padding:8px;background:#172b24ed;border:1px solid #6d826c88;border-radius:16px;backdrop-filter:blur(12px);box-shadow:0 8px 40px #0006}.emotion-dock button{width:57px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:transparent;border:0;border-radius:9px;font-size:22px;padding:7px 0;color:#ebeee2;gap:6px;transition:.15s}.emotion-dock button:hover{background:#9fc49827;transform:translateY(-3px)}.emotion-dock span{font-size:9px;color:#bdd0bd}.market-note{position:fixed;bottom:16px;width:100%;text-align:center;font-size:9px;color:#9aafa0;pointer-events:none}#phrases{position:fixed;left:50%;bottom:135px;transform:translateX(-50%);display:grid;grid-template-columns:repeat(3,1fr);gap:6px;background:#20392f;padding:10px;border:1px solid #a6c69e44;border-radius:11px;z-index:7}#phrases button{white-space:nowrap;border:1px solid #759b6f44;color:#d7e9d0;background:#2b4838;border-radius:6px;padding:10px 12px;font-size:11px}dialog{color:#233a2c;background:#f7f7ee;border:0;border-radius:18px;padding:30px 34px;width:460px;max-width:calc(100% - 30px);max-height:90%;box-shadow:0 30px 100px #0008;overflow-y:auto}dialog::backdrop{background:#0a191ccc;backdrop-filter:blur(8px)}.dialog-top{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.dialog-top .eyebrow{font-size:9px;letter-spacing:1.3px;color:#65816a;line-height:26px}.close{border:0;background:transparent;font-size:26px;color:#5a6d5a;padding:0 0 4px;line-height:24px}.close:hover{color:#132c18}h2{font-size:29px;line-height:1.25;letter-spacing:-1.4px;font-weight:500;margin:19px 0 12px}.muted{font-size:11px;line-height:1.8;color:#748273;margin:0 0 23px}label{display:flex;justify-content:space-between;font-size:11px;font-weight:700;margin:20px 0 10px}label small{font-size:9px;font-weight:400;color:#81917d}.input-row{display:flex;gap:7px}input,select{border:1px solid #cfd8c7;background:#fffefa;border-radius:7px;padding:12px;font-size:12px;color:#304733;width:100%;outline-color:#709669}.input-row input{min-width:0}.input-row button{white-space:nowrap;font-size:11px;color:#4d6d4c;border:1px solid #cfd8c7;background:#e9efdf;border-radius:7px;padding:0 12px}#avatarGrid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}#avatarGrid button{padding:0;background:#e6e8dd;border:2px solid transparent;border-radius:8px;overflow:hidden;aspect-ratio:1/1.15;position:relative}#avatarGrid button.selected{border-color:#48754b;background:#cde0bb}#avatarGrid button img{width:100%;height:100%;object-fit:cover}#avatarGrid button.selected:after{content:'✓';position:absolute;right:1px;bottom:0;color:#fff;background:#48754b;border-radius:4px 0 0 0;font-size:10px;padding:1px 4px}#avatarGrid button:disabled{cursor:default;opacity:.45}#avatarGrid button:disabled.selected{opacity:1}.lock-note{font-size:10px;color:#5d7356;margin-top:11px;line-height:1.6}.lock-note small{display:block;color:#8b9685;font-size:8px;margin-top:3px}#entryForm>.primary{width:100%;margin-top:8px;background:#31543c;color:#edf4e5}.error{color:#af5045;font-size:11px;line-height:1.5;min-height:16px;margin:12px 0}.about-features{display:grid;grid-template-columns:1fr 1fr;gap:20px;border-top:1px solid #d9dfd1;padding-top:22px}.about-features strong{font-size:12px}.about-features p{font-size:10px;line-height:1.8;color:#75826e;margin-bottom:0}.board-dialog{width:900px;background:#13251f;color:#e6eddf;padding:30px}.board-dialog h2{font-size:23px;margin:9px 0 18px}.board-dialog .eyebrow{color:#9fb298}.board-dialog .close{color:#b9cdb0}.sample-banner{background:#89774422;border:1px solid #c7b47844;padding:8px 12px;border-radius:5px;color:#d2c093;font-size:10px}.indices{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:20px 0}.indices>div{border:1px solid #64846344;padding:17px;border-radius:8px;position:relative;overflow:hidden}.indices small{display:block;color:#8fa58b;font-size:11px;margin-bottom:5px}.indices strong{font-size:29px;letter-spacing:-1px;margin-right:12px;font-family:Arial,sans-serif}.indices span{font-size:10px;white-space:nowrap}.indices svg{width:105px;height:25px;display:block;position:absolute;right:15px;top:18px;opacity:.5}.indices path{stroke:#e68b78;fill:none;stroke-width:1.4}.up{color:#ed8c7a!important}.down{color:#85b3dc!important}.board-layout{display:grid;grid-template-columns:160px 1fr;gap:23px}.board-layout aside{border-right:1px solid #65805d33;padding-right:23px}.board-layout h3{font-size:11px;font-weight:500;color:#e99a7b;margin:4px 0 16px}.theme{font-size:11px;margin:0 0 13px;display:flex;justify-content:space-between;color:#bdceb6}.theme small{font-family:Arial;font-size:10px;color:#dd8a72}.theme.weak small{color:#85b3dc}.quote-top{display:flex;justify-content:space-between;align-items:center;margin:0 0 18px}.quote-top strong{font-size:12px;font-weight:500}.quote-top button{background:transparent;color:#8ca683;border:0;font-size:10px;padding:0}.table-head,.quote-row{display:grid;grid-template-columns:1.4fr 1fr .8fr;text-align:right}.table-head span:first-child,.quote-row span:first-child{text-align:left}.table-head{font-size:10px;color:#819579;padding-bottom:10px}.quote-row{font-size:12px;padding:14px 0;border-top:1px solid #718b6233}.quote-row span:not(:first-child){font-family:Arial,sans-serif;letter-spacing:.3px}.page-controls{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:14px}.page-controls button{background:#375037;color:#bfd6b2;border:0;border-radius:50%;width:27px;height:27px}.page-controls span{font-size:10px;color:#99b18f}.small-note{font-size:9px;line-height:1.8;color:#79906f;border-top:1px solid #59734d44;padding-top:18px;margin-top:22px}#toast{position:fixed;left:50%;top:170px;transform:translate(-50%,-20px);background:#eef3e7;color:#244130;box-shadow:0 8px 25px #0005;padding:12px 20px;font-size:12px;border-radius:9px;z-index:60;opacity:0;pointer-events:none;transition:.25s;max-width:90%;text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}#loading{position:absolute;left:65%;top:52%;display:flex;align-items:center;gap:10px;z-index:2;color:#c5d8bf;font-size:11px;transform:translateX(-50%)}.spinner{width:16px;height:16px;border:2px solid #4e6e51;border-top-color:#c6e5ba;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}body.preview #lobby,body.preview #shade,body.preview #previewBadge{display:none}body.preview #hud{display:block!important}body.preview .emotion-dock,body.preview .self-chip,body.preview #seatBtn,body.preview .room-chip,body.preview #phrasesBtn{display:none}body.preview .help-chip{bottom:60px}body.preview #leaveBtn{display:block!important}@media(min-width:1500px){#lobby{top:21%}h1{font-size:72px}.lobby-note{margin-top:50px}}@media(max-height:780px) and (min-width:801px){header{height:83px}#lobby{top:17%}h1{font-size:48px;margin:20px 0 18px}.intro{font-size:15px}.subintro{margin:10px 0 20px}.lobby-note{margin-top:25px}.room-chip,.view-controls{top:84px}}@media(max-width:800px){header{height:79px;padding:0 20px}.brand{font-size:18px}.brand small{font-size:6px;letter-spacing:1.6px}.brand-icon{font-size:27px;width:29px}nav{gap:16px}.quiet{font-size:10px}.demo-tag{font-size:9px;padding:7px 9px}#lobby{left:24px;top:auto;bottom:74px;width:calc(100% - 48px)}#shade{background:linear-gradient(0deg,#0b1b1df5,#0b1b1dea 28%,#0b1b1d22 76%)}h1{font-size:43px;line-height:1.15;letter-spacing:-2.5px;margin:16px 0}h1 br:nth-child(2){display:none}h1 em{margin-left:8px}.intro{font-size:13px;line-height:1.7}.intro br{display:none}.subintro{font-size:10px;margin:7px 0 20px}.subintro br{display:none}.eyebrow{font-size:8px}.primary{width:100%;padding:16px 20px;font-size:12px}.entry-caption{text-align:center;font-size:9px}.lobby-note{display:none}#previewBadge{bottom:19px;left:24px;right:24px;padding:12px 14px;font-size:9px}#previewBadge small{font-size:8px;margin-top:4px}#previewBadge button{margin-left:auto}.room-chip{left:15px;top:82px;font-size:9px;padding:9px 11px}.room-chip #roomCount{margin-left:3px}.view-controls{top:126px;left:15px;right:auto;gap:5px}.view-controls button{padding:8px 10px;font-size:12px}.view-controls span{font-size:9px;margin-left:3px}.self-chip{bottom:134px;left:15px;padding:6px 12px 6px 4px;grid-template-columns:30px auto;column-gap:7px}.self-chip img{width:32px;height:32px}.self-chip span{font-size:10px}.self-chip small{font-size:8px;margin-top:3px}.emotion-dock{bottom:37px;padding:5px;gap:1px;width:calc(100% - 28px);justify-content:space-around;border-radius:13px}.emotion-dock button{width:43px;font-size:21px;gap:5px;padding:7px 0}.emotion-dock span{font-size:8px}.market-note{font-size:7px;bottom:16px}.help-chip{bottom:112px;font-size:8px}.board-dialog{padding:22px 18px}.board-dialog h2{font-size:21px}.indices{gap:8px}.indices>div{padding:13px 10px}.indices strong{font-size:24px}.indices small{font-size:9px}.indices span{display:block;font-size:9px;margin-top:6px}.indices svg{width:55px;top:12px;right:10px}.board-layout{grid-template-columns:1fr;gap:13px}.board-layout aside{border:0;display:grid;grid-template-columns:1fr 1fr;gap:0 20px;padding:0}.board-layout h3{margin:0 0 9px;font-size:10px}.board-layout h3.down{grid-column:2;grid-row:1}#strongThemes{grid-column:1;grid-row:2}#weakThemes{grid-column:2;grid-row:2}.theme{font-size:10px;margin-bottom:7px}.theme:nth-child(n+4){display:none}.quote-panel{border-top:1px solid #61765755;padding-top:17px}.quote-row{padding:11px 0;font-size:11px}.small-note{font-size:8px}dialog{padding:24px}h2{font-size:26px}#loading{left:50%;top:31%}#toast{top:180px;font-size:10px}#phrases{bottom:128px}.world-label{font-size:8px}.world-bubble{font-size:10px;padding:7px 10px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

#phrases{width:min(480px,calc(100% - 32px));display:flex;flex-direction:column;gap:8px;padding:16px;max-height: min(480px,60vh)}.expression-top{display:flex;justify-content:space-between;align-items:center}.expression-top label{margin:0;color:#d7e9d0;font-size:14px;line-height:20px}#phrases #closeExpressions{padding:4px 8px;font-size:20px;line-height:28px}#expressionCategories{display:flex;gap:4px;flex-wrap:wrap}#phrases #expressionCategories button{padding:4px 8px;font-size:12px;line-height:16px}#expressionCategories button[aria-pressed=true]{background:#c4e6af!important;color:#20362b!important}#expressionGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;overflow-y:auto;min-height:0}#phrases #expressionGrid button{white-space:normal;padding:8px;font-size:12px;line-height:16px;min-height:40px}#expressionEmpty{font-size:12px;line-height:16px;color:#d7e9d0}#phrases button:hover{filter:brightness(1.15)}#phrases button:active{transform:scale(.98)}

/* Scroll the catalog instead of squeezing its implicit rows on iOS. */
#avatarGrid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;max-height:280px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;margin-top:8px;padding:4px}
#avatarGrid button{aspect-ratio:auto;display:flex;flex-direction:column;align-items:center;align-self:start;min-width:0}
#avatarGrid button img{display:block;aspect-ratio:1;width:100%;height:auto;flex-shrink:0}
#avatarGrid button span{flex-shrink:0;font-size:12px;line-height:16px;min-height:24px;padding:4px;color:#304733;word-break:keep-all;overflow-wrap:anywhere}#avatarGrid button.selected:after{top:0;bottom:auto}#avatarSearch{font-size:14px;line-height:20px}@media(max-width:480px){#avatarGrid{grid-template-columns:repeat(3,minmax(0,1fr));max-height:240px}}

body{background:#e8e1d0}#scene{background:#e9e5d8}#shade{background:linear-gradient(90deg,#eee9dcfa,#eee9dce8 27%,#eee9dc00 68%)}.brand{color:#31543b}.brand small{color:#71816b}.brand-icon{color:#4b7252}.quiet{color:#3f5f49}.demo-tag{color:#526e51;background:#f3ecdb;border-color:#abaf94}#lobby{color:#344b38}#lobby .eyebrow{color:#6f785b}h1 em{color:#52764e}.intro{color:#415a44}.subintro{color:#6d7d64}.entry-caption{color:#6e7d65}.lobby-note{color:#4c644c;border-color:#a3ad93}.lobby-note small{color:#74816c}#previewBadge{background:#f4edddd9;color:#3c5b41;border-color:#a4b397}#previewBadge small{color:#6c8068}#previewBadge button{color:#3d6747}body.in-hall header{background:#f3eddfb5;backdrop-filter:blur(8px)}.board-settings{margin-top:16px;border:1px solid #617c5f;padding:12px;border-radius:8px}.board-settings summary{cursor:pointer;font-size:14px;line-height:20px}.board-settings p,.board-settings label{font-size:12px;line-height:16px}.board-settings button{background:#d1dfbd;border:0;color:#29442c;border-radius:4px;padding:4px 8px}#tickerItems{display:grid;gap:8px;font-size:12px;line-height:16px}#tickerItems>div{display:flex;justify-content:space-between;gap:8px}.ticker-input{display:flex;gap:8px;margin-top:12px}.ticker-input input{min-width:0}.ticker-input button{white-space:nowrap}@media(max-width:800px){#shade{background:linear-gradient(0deg,#eee9dcff,#eee9dcea 30%,#eee9dc00 80%)}}

nav a.quiet{text-decoration:none}
/* Image-directed hall: warm stone, brass and a full architectural view. */
#shade{display:none}header{height:78px;padding:0 28px;background:linear-gradient(#eee2cbe6,#eee2cb00)}.brand{color:#493825}.brand small{color:#776345}.brand-icon{color:#9c783a}.quiet{color:#493825}.demo-tag{background:#faf1dfc9;border-color:#bba16f;color:#604b2e}#lobby{left:30px;top:auto;bottom:28px;width:305px;padding:24px;background:#f9f0dedb;border:1px solid #b99b66a6;box-shadow:0 12px 50px #3f29182e;backdrop-filter:blur(12px);border-radius:3px}#lobby .eyebrow{font-size:10px;color:#8d703d}#lobby h1{font-size:30px;line-height:1.3;letter-spacing:-1px;margin:12px 0}#lobby h1 br{display:none}#lobby h1 em{color:#59412a;font-style:normal}#lobby .intro{font-size:12px;line-height:1.6;margin:8px 0 16px}#lobby .intro br{display:none}#lobby .subintro,#lobby .lobby-note{display:none}#lobby .primary{padding:14px 17px;width:100%;background:#66452c;color:#fff3dc;border:1px solid #9d7b45;border-radius:3px;font-size:12px}.entry-caption{font-size:9px;color:#78634a;margin-top:12px}#previewBadge{right:28px;left:auto;bottom:30px;background:#f8efddd9;color:#5a4630;border-color:#bda779}#previewBadge small{color:#857357}body.in-hall header{background:#f1e6d1c9}.room-chip,.view-controls button,.help-chip,.self-chip{background:#f8f0e1db!important;color:#55432e!important;border-color:#bc9f68!important}.world-label{background:#f7efdfbd;color:#55422e;border:1px solid #b5a18355;font-size:9px}.world-label.npc{display:none!important}.emotion-dock{background:#352c23e6;border:1px solid #b29359}.emotion-dock button{color:#f8eace}.board-dialog{width:min(1460px,96vw);background:#080f14;border:1px solid #b28a47;border-radius:3px}.board-dialog h2{font-size:24px}.all-stocks .board-layout{display:block}.all-stocks .board-layout aside,.all-stocks .indices,.all-stocks .table-head,.all-stocks .page-controls,.all-stocks #pauseBtn{display:none}.all-stocks #quotes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 18px}.all-stocks .quote-row{font-size:12px;gap:6px;padding:11px 0;grid-template-columns:1.5fr 1fr .75fr}.all-stocks .quote-row span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.up{color:#ff745e!important}.down{color:#69d0f3!important}.primary{background:#755235}.view-controls{gap:5px}.view-controls button{padding:10px 12px}.market-note{background:#f8f0dfc9;color:#6d593b;padding:4px 10px;border-radius:3px}
@media(max-width:800px){header{padding:0 16px;height:68px}.brand{font-size:17px}#lobby{left:16px;bottom:20px;width:255px;padding:18px}#lobby h1{font-size:25px}#lobby .intro{font-size:11px}#previewBadge{right:16px;bottom:300px;left:auto;padding:8px;width:185px;font-size:9px}#previewBadge small{display:none}.view-controls{top:125px;max-width:calc(100vw - 24px);flex-wrap:wrap}.view-controls button{padding:8px}.view-controls span{font-size:9px}.all-stocks #quotes{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}.all-stocks .quote-row{font-size:10px;grid-template-columns:1.1fr .9fr .7fr}.board-dialog{padding:18px 12px}.brand small{font-size:6px}.in-hall .help-chip{font-size:9px}body.preview #followBtn{display:none}}
@media(max-width:480px){.all-stocks #quotes{grid-template-columns:1fr}.all-stocks .quote-row{font-size:12px}}
#welcomeRender{position:fixed;inset:0;overflow:hidden;pointer-events:none;background:#d9c5a2}.render-frame{position:absolute;left:50%;top:50%;width:max(100vw,177.69vh);height:max(56.28vw,100vh);transform:translate(-50%,-50%)}.render-frame>img{width:100%;height:100%;display:block}.render-frame>canvas{position:absolute;left:16.6%;top:27.65%;width:64%;height:20.65%;background:#071015}body:not(.in-hall):not(.preview) #scene{visibility:hidden}body.in-hall #welcomeRender,body.preview #welcomeRender{display:none}#welcomeRender{z-index:1}header,#lobby,#previewBadge{z-index:3}#lobby{bottom:20px;padding:20px;width:280px}#lobby h1{font-size:25px}.all-stocks .quote-row{break-inside:avoid}dialog{z-index:10}
#marketSelectors{display:flex;align-items:center;gap:10px;margin:12px 0 18px}#marketSelectors[hidden]{display:none}#marketSelectors button{background:#1c2a30;color:#d9e0db;border:1px solid #617078;padding:10px 18px;border-radius:3px;font-size:14px;cursor:pointer}#marketSelectors button[aria-pressed=true]{background:#b38d4e;color:#100e0a;border-color:#e7c482}#marketSelectors span{font-size:12px;color:#9caeb4}.korea-board.all-stocks #pauseBtn{display:block}.korea-board .board-settings{display:none}@media(max-width:650px){#marketSelectors{flex-wrap:wrap}#marketSelectors span{width:100%;font-size:11px}#marketSelectors button{font-size:13px}}
/* Keep the whole upper view free of interface banners. */
body header{top:auto;bottom:0;height:56px;padding:0 20px;background:#eee2cbe8;backdrop-filter:blur(8px);border-top:1px solid #bca16b55}body header .brand{font-size:15px}body header .brand small{font-size:6px}body header nav{gap:16px}body.in-hall .view-controls,body.preview .view-controls{top:auto;right:auto;left:50%;bottom:76px;transform:translateX(-50%);display:flex;gap:5px;max-width:calc(100vw - 390px);justify-content:center;white-space:nowrap}body.in-hall .view-controls button,body.preview .view-controls button{padding:10px 11px}body.in-hall .room-chip{top:auto;left:auto;right:18px;bottom:78px;padding:10px;font-size:10px}body.in-hall .self-chip{bottom:76px;left:18px;max-width:160px}.emotion-dock{bottom:128px}.market-note{bottom:57px}.in-hall .help-chip,.preview .help-chip{display:none}#lobby{bottom:76px}#previewBadge{bottom:76px}#toast{top:auto;bottom:224px}.welcome-clock{position:absolute;top:20.1%;background:#11191b;color:#ffe4a0;border:2px solid #a98748;padding:.2% .55%;font:500 clamp(8px,1.6vw,28px)/1.4 ui-monospace,monospace;letter-spacing:.06em;box-shadow:0 1px 9px #241a1299;min-width:8%;text-align:center}.clock-left{left:21.5%}.clock-right{right:21.5%}#zoomInBtn,#zoomOutBtn{font-size:19px;min-width:38px;line-height:1}.in-hall .world-label.self{font-size:10px}
@media(max-width:1000px){body.in-hall .view-controls,body.preview .view-controls{max-width:calc(100vw - 28px);bottom:72px}body.in-hall .self-chip{bottom:196px}body.in-hall .room-chip{bottom:196px}.emotion-dock{bottom:126px}body.in-hall .view-controls button{padding:9px}body.in-hall .view-controls span{font-size:10px}body header nav{gap:10px}body header .demo-tag{display:none}}
@media(max-width:650px){body header{height:48px;padding:0 12px}body header .brand{font-size:13px}body header .brand-icon{font-size:20px;width:22px}body header .brand small{display:none}body header nav{gap:10px}body header .quiet{font-size:10px}body.in-hall #aboutBtn{display:none}body.in-hall .view-controls,body.preview .view-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:calc(100vw - 24px);max-width:440px;bottom:58px;gap:4px}body.in-hall .view-controls button,body.preview .view-controls button{padding:6px 4px;min-height:32px;font-size:14px}body.in-hall .view-controls span{font-size:9px;margin-left:2px}.emotion-dock{bottom:132px;height:54px}.emotion-dock button{padding:5px 0;font-size:20px}.emotion-dock span{font-size:8px}body.in-hall .self-chip{bottom:194px;padding:4px;grid-template-columns:24px auto}body.in-hall .self-chip img{width:24px;height:24px}body.in-hall .room-chip{bottom:196px;font-size:9px;padding:7px}.market-note{bottom:49px;font-size:7px}#toast{bottom:244px}#lobby{bottom:68px}#previewBadge{bottom:320px}.welcome-clock{font-size:2.2vw}.clock-left{left:20%}.clock-right{right:20%}}
/* Keep the avatar clear; movement uses the same captured circular stick as Lucky Plaza. */
#move-stick{display:none;position:fixed;width:124px;height:124px;left:18px;bottom:76px;z-index:6;border-radius:50%;touch-action:none;user-select:none;-webkit-user-select:none;background:#f7f0e1a8;border:1px solid #a98b5c77;box-shadow:0 4px 20px #38261422;backdrop-filter:blur(8px)}
#move-stick .stick-ring{position:absolute;inset:13px;border:1px solid #a38c6366;border-radius:50%}#move-stick .stick-thumb{position:absolute;left:50%;top:50%;width:50px;height:50px;border-radius:50%;background:#fff9e9;border:1px solid #9b805c99;box-shadow:0 3px 10px #49382033;transform:translate(calc(-50% + var(--stick-x,0px)),calc(-50% + var(--stick-y,0px)))}#move-stick.active .stick-thumb{background:#dce9d4}.stick-caption{position:absolute;bottom:7px;width:100%;text-align:center;font-size:10px;color:#68543a;pointer-events:none}
body.in-hall.touch-controls #move-stick{display:block}
body.in-hall .emotion-dock{left:auto;right:18px;bottom:132px;transform:none;padding:5px;border-radius:12px;gap:0}body.in-hall .emotion-dock button{width:39px;font-size:18px;padding:5px 0;gap:4px}body.in-hall .emotion-dock span{font-size:8px}
@media(max-width:900px){body.in-hall.touch-controls .view-controls{left:auto;right:12px;transform:none;bottom:62px;width:calc(100vw - 166px);max-width:330px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}body.in-hall.touch-controls .view-controls button{min-width:0;padding:7px 3px;min-height:34px}body.in-hall.touch-controls .view-controls span{display:none}body.in-hall.touch-controls .emotion-dock{right:12px;bottom:177px;max-width:calc(100vw - 166px)}body.in-hall.touch-controls .emotion-dock button{width:28px;font-size:17px}body.in-hall.touch-controls .emotion-dock span{display:none}body.in-hall.touch-controls .self-chip{left:16px;bottom:215px;padding:4px 7px;max-width:145px}body.in-hall.touch-controls .room-chip{right:12px;bottom:220px;max-width:calc(100vw - 175px);gap:3px;font-size:9px}body.in-hall.touch-controls #toast{bottom:275px}#move-stick{left:16px;bottom:68px}}
@media(max-width:900px){body.in-hall.touch-controls .room-chip{bottom:242px}#move-stick{bottom:calc(68px + env(safe-area-inset-bottom,0px))}}
@media(max-height:500px) and (pointer:coarse){#move-stick{width:104px;height:104px;bottom:58px}body.in-hall.touch-controls .self-chip,body.in-hall.touch-controls .room-chip{bottom:172px}body.in-hall.touch-controls .emotion-dock{bottom:168px;right:180px}body.in-hall.touch-controls .view-controls{max-width:320px;bottom:58px}}

/* Single illustrated entry card, sized above the former lower-left invitation. */
body #lobby{left:28px;top:auto;bottom:78px;width:380px;max-width:calc(100vw - 32px);padding:0;background:none;border:0;box-shadow:0 10px 36px #38231544;backdrop-filter:none;border-radius:14px;overflow:hidden}#enterBtn.entry-card{display:block;width:100%;padding:0;min-width:0;border:0;background:#eee1c5;border-radius:14px;overflow:hidden;cursor:pointer}#enterBtn.entry-card img{display:block;width:100%;height:auto}#enterBtn.entry-card:hover{filter:brightness(1.04)}#enterBtn.entry-card:focus-visible{outline-offset:-5px}body.in-hall.touch-controls .self-chip{bottom:215px}@media(max-width:650px){body #lobby{left:16px;bottom:64px;width:310px;max-width:calc(100vw - 32px)}}@media(max-height:550px){body #lobby{width:275px;bottom:64px}}

#phoneExitBtn{position:fixed;right:18px;top:18px;z-index:8;padding:12px 18px;border:1px solid #ad925c;border-radius:8px;background:#f4ead6;color:#4d3b28}#facilityDialog p{font-size:14px;line-height:1.7;color:#66513b}#facilityDialog h2{margin-top:0}

/* Internal market table is not a visitor-facing action. */
#lobbyBoardBtn[hidden], #boardBtn[hidden] { display: none !important; }

.self-chip[hidden], #boardCameraBtn { display: none !important; }
@media (max-width:900px) {
  body.in-hall .view-controls #boardCameraBtn { display:block !important; }
  body.in-hall .view-controls { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
  body.in-hall .view-controls button[data-mobile-label] { font-size:0; padding:3px 1px; min-height:32px; }
  body.in-hall .view-controls button[data-mobile-label] span { display:none; }
  body.in-hall .view-controls [data-mobile-label]::after { content:attr(data-mobile-label);font-size:11px;line-height:1.2;white-space:nowrap; }
  body.in-hall.touch-controls .emotion-dock { bottom:212px; }
  body.in-hall.touch-controls .room-chip { bottom:260px; }
  #entryDialog { padding:12px 16px; max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)); }
  #entryForm { display:flex; flex-direction:column; gap:5px; max-height:none; }
  #entryForm > :not(#avatarGrid) { flex-shrink:0; }
  #entryForm h2 { font-size:clamp(18px,5vw,26px);line-height:1.2;margin:0; }
  #entryForm .muted,#entryForm .lock-note,#entryForm .eyebrow,#entryError:empty { display:none; }
  #entryForm .dialog-top { position:absolute;right:14px;top:8px; }
  #entryForm h2 { padding-right:28px; }
  #entryForm label,#entryForm .primary,#entryError { margin:0; }
  #entryForm input,#entryForm select,#confirmEntry { padding:8px 10px; }
  /* Keep Safari from zooming the dialog when focusing its fields. */
  #entryForm input,#entryForm select { font-size:16px; }
  #entryForm #avatarGrid { flex:0 0 auto;min-height:140px;max-height:clamp(140px,36dvh,240px);overflow-y:auto;margin:0; }
}

/* Left-board Telegram promotion: touch-friendly enlargement without room UI clutter. */
.telegram-dialog{width:min(440px,calc(100vw - 28px));max-height:calc(100dvh - 28px);padding:22px;overflow:auto}.telegram-dialog .dialog-top{align-items:center;gap:10px}.telegram-dialog h2{font-size:clamp(20px,5.4vw,26px);margin:0}.telegram-subtitle{margin:10px 0 14px;color:#657364;font-size:16px}.telegram-qr{display:block;width:auto;max-width:100%;height:auto;max-height:48dvh;margin:0 auto 16px;object-fit:contain}.telegram-open{display:flex;min-height:56px;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px 16px;border-radius:12px;background:#16779d;color:#fff;text-decoration:none;font-weight:700}.telegram-open span{font-size:13px;font-weight:400}.telegram-open:focus-visible{outline:3px solid #233d31;outline-offset:3px}.telegram-caption{font-size:12px;text-align:center;color:#657364;margin:12px 0 0}.telegram-keyboard-link{position:fixed;left:-10000px;top:12px;z-index:99}.telegram-keyboard-link:focus{left:12px;padding:14px 18px;border-radius:8px;background:#fff;color:#153a2b;outline:3px solid #16779d}@media(max-height:600px){.telegram-qr{max-height:34dvh}.telegram-dialog{padding:16px}.telegram-subtitle{margin:6px 0 10px}}
.telegram-dialog .close{flex:0 0 44px;min-width:44px;min-height:44px;display:grid;place-items:center}

/* QR poster is preserved but temporarily not displayed. */
.telegram-qr[hidden]{display:none!important}

.market-access-notice{position:fixed;top:72px;left:50%;transform:translateX(-50%);z-index:30;display:flex;gap:12px;align-items:center;width:max-content;max-width:calc(100% - 24px);padding:10px 14px;border:1px solid #cbbda4;border-radius:12px;background:#fff9eefa;color:#4a453d;font-size:12px;box-shadow:0 4px 16px #28201c22}.market-access-notice[hidden]{display:none}.market-access-notice a{white-space:nowrap;color:#35576d;font-weight:700;text-underline-offset:3px;min-height:32px;display:inline-flex;align-items:center}@media(max-width:480px){.market-access-notice{top:64px;gap:8px;font-size:11px;line-height:1.5}}
/* Left wall shows KST month/day/weekday; right keeps the clock. */
.welcome-clock.clock-left{font-size:clamp(7px,1.15vw,20px);letter-spacing:0}
@media(max-width:650px){.welcome-clock.clock-left{font-size:1.5vw}}

/* Longer stock memes remain readable and easy to tap in the existing picker. */
#phrases #expressionGrid button{min-height:44px;word-break:keep-all;overflow-wrap:anywhere}
#phrases #closeExpressions{min-width:44px;min-height:44px}
@media(max-width:480px){#expressionGrid{grid-template-columns:repeat(2,minmax(0,1fr))}#phrases #expressionGrid button{font-size:13px;line-height:18px}}

#phrasesBtn .desktop-expression { display:grid; gap:4px; font-size:inherit; color:inherit; }
#phrasesBtn .desktop-expression small { font-size:9px; }
#phrasesBtn .mobile-expression { display:none; }
@media (max-width:900px), (pointer:coarse) {
  body.in-hall header { justify-content:flex-end; }
  body.in-hall header .brand, body.in-hall #feedbackNavBtn,
  body.in-hall .emotion-dock [data-emotion],
  body.in-hall #phrasesBtn .desktop-expression { display:none; }
  body.in-hall .emotion-dock { width:auto; height:auto; padding:0; }
  body.in-hall .emotion-dock #phrasesBtn { width:auto; min-height:44px; padding:0 16px; font-size:14px; }
  body.in-hall #phrasesBtn .mobile-expression { display:inline; }
}

/* Project world labels without relayout on every walking frame. */
.world-label,.world-bubble{left:0;top:0;will-change:transform}
/* Keep mobile expressions above the nameplate, even when the camera is far away. */
@media(max-width:800px){.world-bubble{margin-top:-24px}}

/* The owner requested the entire brand/navigation strip remain undisplayed. */
body header[hidden]{display:none!important}

/* Music-only volume remains available in the opening and the hall. */
.music-volume{position:fixed;z-index:12;right:max(12px,env(safe-area-inset-right));top:max(12px,env(safe-area-inset-top));height:44px;display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid #bc9f6880;border-radius:8px;background:#f8f0e1ed;color:#55432e;font-size:12px;box-shadow:0 2px 10px #382b1712}.music-volume input{width:94px;height:36px;margin:0;accent-color:#765b35;cursor:pointer;touch-action:pan-y}.music-volume input:focus-visible{outline:2px solid #765b35;outline-offset:2px;border-radius:4px}@media(max-width:600px){.music-volume{font-size:11px;gap:6px;padding:0 9px}.music-volume input{width:75px}}

/* Keep the scene unobstructed; market status remains in the board dialog. */
#hud .market-note{display:none}

/* HUD lanes: scene actions at the bottom, status above, utilities at the top. */
body.in-hall .view-controls,body.preview .view-controls{
  top:auto;left:50%;right:auto;bottom:calc(18px + env(safe-area-inset-bottom,0px));
  transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);
  display:flex;flex-wrap:nowrap;align-items:stretch;gap:6px;
}
body.in-hall .view-controls button,body.preview .view-controls button{
  min-width:44px;min-height:44px;flex-shrink:0;
}
body.in-hall .room-chip{bottom:calc(78px + env(safe-area-inset-bottom,0px));right:18px;max-width:calc(100vw - 36px)}
body.in-hall .emotion-dock{bottom:calc(124px + env(safe-area-inset-bottom,0px));right:18px}

#phoneExitBtn{top:calc(116px + env(safe-area-inset-top,0px));right:max(12px,env(safe-area-inset-right));min-height:44px}
/* Keep the old full-width timestamp strip absent, including its background. */
#hud .market-note{display:none;background:none;border:0;box-shadow:none}
@media(max-width:1100px), (pointer:coarse){
  body.in-hall .view-controls,body.preview .view-controls,
  body.in-hall.touch-controls .view-controls{
    left:auto;right:max(12px,env(safe-area-inset-right,0px));bottom:calc(12px + env(safe-area-inset-bottom,0px));
    transform:none;width:calc(100vw - 24px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));max-width:440px;
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) !important;gap:4px;
  }
  body.in-hall.touch-controls .view-controls{width:calc(100vw - 152px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));max-width:440px}
  /* Share the final row with the broadcast toggle without adding another row. */
  body.in-hall .view-controls .comfort-entry,body.preview .view-controls .comfort-entry{grid-column:span 2}
  body.in-hall .view-controls button,body.preview .view-controls button,
  body.in-hall.touch-controls .view-controls button,
  body.in-hall .view-controls button[data-mobile-label]{
    min-width:0;min-height:44px;padding:4px 1px;font-size:0;
  }
  body.in-hall .view-controls button[data-mobile-label] span,
  body.preview .view-controls button[data-mobile-label] span{display:none}
  body.in-hall .view-controls [data-mobile-label]::after,
  body.preview .view-controls [data-mobile-label]::after{
    content:attr(data-mobile-label);font-size:11px;line-height:1.2;white-space:nowrap;
  }
  body.in-hall .emotion-dock,body.in-hall.touch-controls .emotion-dock{
    bottom:calc(208px + env(safe-area-inset-bottom,0px));right:12px;
  }
  body.in-hall .room-chip,body.in-hall.touch-controls .room-chip{
    bottom:calc(260px + env(safe-area-inset-bottom,0px));right:12px;
    max-width:calc(100vw - 24px);white-space:nowrap;
  }
  body.in-hall.touch-controls #move-stick{
    left:max(12px,env(safe-area-inset-left,0px));bottom:calc(18px + env(safe-area-inset-bottom,0px));width:124px;height:124px;
  }
  body.in-hall #toast,body.in-hall.touch-controls #toast{bottom:calc(308px + env(safe-area-inset-bottom,0px))}
}
@media(min-width:600px) and (max-height:500px){
  body.in-hall .room-chip,body.in-hall.touch-controls .room-chip{left:12px;right:auto;top:12px;bottom:auto;max-width:calc(100vw - 240px)}
  #phoneExitBtn{left:12px;right:auto;top:64px}
}
/* The volume control is a label; reset form-label margins in this fixed HUD. */
.music-volume{margin:0}
