:root{font-family:Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif;color:#203448;background:#f4f2e9;font-weight:500}*{box-sizing:border-box}html,body,#root{margin:0;width:100%;height:100%;overflow:hidden}button,a,select{touch-action:manipulation}button{font:inherit;cursor:pointer}button:disabled{opacity:.35;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #437cbb;outline-offset:3px}a{color:inherit;text-decoration:none}.mvp-screen{position:relative;isolation:isolate;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;height:100dvh;overflow:hidden;background:#edf0e5;padding-top:env(safe-area-inset-top)}.mvp-header{display:flex;align-items:center;justify-content:space-between;padding:14px 24px 12px;z-index:4;background:#fffdf5;border-bottom:1px solid #dedccf}.mvp-brand{display:flex;gap:10px;align-items:center;font-size:22px;font-weight:900;letter-spacing:1px}.mvp-brand small{display:block;font-size:9px;font-weight:600;letter-spacing:.8px;margin-top:2px;color:#7d817b}.brand-mark{display:grid;place-items:center;width:40px;height:40px;background:#f8cd46;color:#26394b;border-radius:11px;font-size:30px}.icon-button,.map-tools button{display:grid;place-items:center;width:44px;height:44px;border:1px solid #deddd1;border-radius:12px;background:#fffdf4;color:#34485a;font-size:22px}.city-stage{position:relative;min-height:0;overflow:hidden;background:#e9eddf}.city-stage .world-3d{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;min-height:0}.world-3d canvas{width:100%;height:100%;display:block;border-radius:0;touch-action:none}.world-loading,.scene-loading{position:absolute;top:44%;left:0;right:0;text-align:center;font-size:12px;color:#77856c}.town-caption{position:absolute;top:16px;left:24px;display:flex;align-items:center;gap:10px;font-size:13px;font-weight:800;pointer-events:none}.demo-pill{background:#f6ce4d;color:#344050;border-radius:5px;padding:5px 7px;font-size:9px;font-weight:800;letter-spacing:.8px}.town-caption i{font-style:normal;color:#9aab91;margin:0 5px}.town-caption small{display:block;font-size:8px;color:#7b8c76;font-weight:500;margin-top:3px}.map-tools{position:absolute;right:20px;bottom:22px;display:flex;flex-direction:column;gap:7px}.map-tools button{box-shadow:0 2px 8px #4456350b;background:#fffdf2e8}.town-board{position:absolute;left:24px;bottom:22px;display:flex;align-items:center;gap:12px;border:1px solid #d5d0b5;border-radius:12px;background:#fff9dfed;padding:12px 15px;color:#314451;text-align:left;box-shadow:0 3px 12px #4e5e2610;max-width:calc(100% - 100px)}.board-icon{color:#ae8a31;font-size:24px}.town-board small{display:block;font-size:8px;color:#8d8767;margin-bottom:5px}.town-board strong{font-size:12px}.town-board strong span{font-size:10px;margin-left:10px;font-weight:500}.town-board>b{font-size:24px;margin-left:10px;color:#a09b7c}.activity-strip{position:relative;z-index:4;display:flex;align-items:center;gap:10px;padding:10px 26px;background:#fffdf5;border-top:1px solid #e2e2d4;font-size:11px;min-height:57px}.live-signal{width:7px;height:7px;background:#79a58b;border-radius:50%;flex-shrink:0}.activity-strip>span:nth-child(2){display:flex;gap:10px;align-items:center}.activity-strip small{font-size:9px;color:#939782}.activity-strip strong{font-size:11px;font-weight:600}.activity-strip>button{margin-left:auto;min-height:36px;border:0;background:transparent;color:#7a826b;font-size:10px;padding:5px 0 5px 12px;white-space:nowrap}.activity-strip>button span{margin-left:12px;color:#344a58}.action-dock{display:grid;grid-template-columns:1fr 1fr;gap:0 13px;padding:12px max(24px,calc((100vw - 740px)/2)) calc(9px + env(safe-area-inset-bottom));background:#fffdf5;margin:0;border:0;max-width:none;color:#25374a;z-index:5}.primary-cheer,.vote-action{min-height:62px;border:0;border-radius:13px;display:flex;align-items:center;justify-content:center;position:relative}.primary-cheer{background:#f6cc46;color:#293947;font-size:17px;font-weight:800;box-shadow:inset 0 -3px #dfb63b;gap:9px;padding:6px 15px 19px;transition:background .15s,transform .15s}.primary-cheer>span{font-size:24px}.primary-cheer>small{position:absolute;bottom:9px;font-size:8px;font-weight:500;letter-spacing:.3px}.primary-cheer:active{transform:translateY(2px)}.primary-cheer.reacting{background:#ffdc66}.vote-action{background:#233a4b;color:#fff9e8;flex-direction:column;gap:6px;font-size:14px;font-weight:700}.vote-action b{font-size:15px;margin-left:10px}.vote-action small{font-size:8px;color:#d5dfdc;font-weight:400}.action-dock>p{grid-column:1/-1;margin:8px 0 0;text-align:center;font-size:8px;color:#9a9e8b;font-weight:400;letter-spacing:.3px}.cheer-toast{position:absolute;top:25%;left:50%;transform:translate(-50%);background:#fffceaf5;border:2px solid #edc24b;border-radius:30px;padding:12px 20px;font-size:13px;font-weight:700;color:#36454b;white-space:nowrap;box-shadow:0 8px 30px #69795315;pointer-events:none;animation:cheer-arrive .22s ease-out}.focus-label{position:absolute;top:16px;left:50%;transform:translate(-50%);background:#f7cf50;border-radius:20px;padding:7px 10px 7px 14px;font-size:10px;display:flex;gap:8px;align-items:center;white-space:nowrap}.focus-label button{border:0;background:transparent;color:#384e57;width:30px;height:28px;font-size:20px}.floating-panel{position:absolute;right:20px;z-index:8;width:min(350px,calc(100vw - 32px));background:#fffdf5;box-shadow:0 10px 50px #263d4b25;border:1px solid #e1decc;border-radius:18px;padding:19px}.settings-panel{top:78px;max-height:calc(100dvh - 180px);overflow:auto}.log-panel{bottom:178px}.panel-title{display:flex;align-items:center;justify-content:space-between}.panel-title h2{font-size:15px;margin:0;color:#2b4052}.panel-title button{width:40px;height:40px;font-size:25px;background:#f1f0e6;border-radius:10px;border:0;color:#657365}.floating-panel>p,.event-dialog p{font-size:10px;line-height:1.9;color:#92967d}.settings-panel label{font-size:11px;display:block;margin:16px 0}.settings-panel select{display:block;width:100%;font:inherit;color:#314752;border:1px solid #d8ddcc;background:#f6f7ee;min-height:44px;border-radius:9px;padding:8px;margin-top:8px}.settings-panel .check-setting{display:flex;align-items:center;gap:10px;min-height:32px;margin:8px 0}.check-setting input{width:18px;height:18px;accent-color:#ddaf2b}.settings-panel>a{display:block;padding:14px 0 6px;font-size:11px;color:#405c67}.log-row{display:flex;align-items:center;gap:12px;width:100%;padding:10px 0;background:transparent;border:0;border-top:1px solid #edeadd;text-align:left}.log-row small{display:block;color:#9ca08b;font-size:9px;margin-bottom:4px}.log-row strong{display:block;font-size:12px;color:#435664}.log-row>b{margin-left:auto;font-size:23px;color:#8e9d8d}.worker-avatar{position:relative;display:grid;place-items:center;background:#f1ecd8;border-radius:50%;width:38px;height:38px;font-size:22px;color:#e3bb88;flex-shrink:0}.worker-avatar:before{content:"";position:absolute;width:22px;height:12px;border-radius:12px 12px 3px 3px;background:var(--worker-color);top:7px;left:8px}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#23394b5c;display:grid;place-items:center;padding:20px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.event-dialog{border:0;outline:none;background:#fffdf4;border-radius:20px;padding:20px;width:min(420px,100%);max-height:80dvh;overflow:auto}.event-dialog article{border-top:1px solid #e9e3cd;margin-top:18px;padding-top:18px}.event-dialog article small{font-size:10px;color:#9c956e}.event-dialog article h3{font-size:19px;margin:10px 0}.event-disclaimer{background:#f8edc7;padding:9px 12px;border-radius:8px;color:#8e7d39!important}.static-town{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:absolute}.static-town img{width:100%;height:100%;object-fit:contain}.static-town p{position:absolute;bottom:95px;font-size:10px;color:#7b8c74;background:#fffdf0dd;border-radius:10px;padding:7px 10px}.exhibit-dock{display:flex;max-width:none;justify-content:space-between;align-items:center;margin:0;padding:20px 25px;background:#f7ce4c;border:0;font-size:12px}.exhibit-dock strong{font-size:18px}.exhibit-dock span{color:#6e734f}.exhibit-dock a{font-size:11px}@keyframes cheer-arrive{0%{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}@media(max-width:640px){.mvp-header{padding:10px 16px}.mvp-brand{font-size:18px;gap:9px}.mvp-brand small{font-size:7px;letter-spacing:.3px}.brand-mark{width:34px;height:34px;font-size:26px;border-radius:9px}.icon-button{width:40px;height:40px}.town-caption{top:13px;left:16px;font-size:11px}.town-caption small{font-size:7px}.demo-pill{font-size:8px;padding:4px 6px}.map-tools{right:12px;bottom:82px;gap:5px}.map-tools button{width:38px;height:38px;border-radius:10px;font-size:20px}.town-board{left:13px;bottom:12px;right:13px;max-width:none;padding:10px 12px;gap:10px;border-radius:11px}.board-icon{font-size:22px}.town-board small{font-size:7px;margin-bottom:4px}.town-board strong{font-size:11px}.town-board strong span{font-size:9px;margin-left:7px}.town-board>b{margin-left:auto}.activity-strip{padding:8px 16px;gap:8px;min-height:53px}.activity-strip>span:nth-child(2){display:block}.activity-strip small{font-size:8px;display:block;margin-bottom:4px}.activity-strip strong{font-size:10px}.activity-strip>button{font-size:9px;min-height:38px}.action-dock{padding:10px 13px calc(8px + env(safe-area-inset-bottom));gap:0 9px}.primary-cheer,.vote-action{min-height:62px;border-radius:12px}.primary-cheer{font-size:17px;padding-bottom:20px;gap:7px}.vote-action{font-size:13px}.action-dock>p{font-size:7px;margin-top:7px}.cheer-toast{top:19%;font-size:10px;padding:11px 14px;max-width:95%}.focus-label{top:55px;font-size:9px;max-width:94%}.settings-panel{top:69px;right:12px}.log-panel{bottom:167px;right:12px}.floating-panel{padding:16px}.exhibit-dock{padding:15px;gap:8px;flex-wrap:wrap}.exhibit-dock strong{font-size:13px}.exhibit-dock span{font-size:9px}.exhibit-dock a{font-size:10px}}@media(max-height:610px){.mvp-header{padding-top:6px;padding-bottom:6px}.town-board{padding:7px 10px}.activity-strip{min-height:42px;padding-top:4px;padding-bottom:4px}.primary-cheer,.vote-action{min-height:52px}.action-dock{padding-top:6px}.town-caption{top:7px}.map-tools{gap:3px}.map-tools button{height:32px;width:34px}.log-panel{bottom:143px}}@media(prefers-reduced-motion:reduce){.cheer-toast{animation:none}.primary-cheer{transition:none}}.debug-play{min-height:44px;width:100%;border:0;border-radius:9px;background:#f4cc4e;color:#2a4052;font-size:12px;font-weight:700}.ceremony-status{position:absolute;top:58px;left:50%;transform:translate(-50%);z-index:3;display:flex;align-items:center;gap:10px;padding:7px 8px 7px 13px;background:#fff6d5ed;border:1px solid #e4bd4a;border-radius:24px;font-size:10px;white-space:nowrap}.ceremony-status button{min-height:34px;border:0;border-radius:18px;padding:5px 12px;background:#273d50;color:#fff7db;font-size:10px}.settings-panel .debug-play:disabled{opacity:.45}.night-stage{background:#33485b}.night-stage .town-caption{color:#fff0c6}.night-stage .town-caption small{color:#d0dbc4}.district-settings{border-top:1px solid #e5dfcb;border-bottom:1px solid #e5dfcb;margin:12px 0;padding:12px 0;font-size:11px}.district-settings summary{cursor:pointer;min-height:24px;color:#405c67}.district-settings label{font-size:10px;margin:12px 0}.district-help{font-size:10px;color:#92967d;line-height:1.7}.header-tools{display:flex;align-items:center;gap:7px}.audio-button{font-size:21px;background:#f4f0df}.audio-button[aria-pressed=true]{background:#f6d15c}.volume-range{display:block;width:100%;margin-top:10px;accent-color:#cda52e;min-height:30px}.history-reset{width:100%;min-height:40px;border:1px solid #d9d2b9;border-radius:8px;background:#f4f0e3;color:#536355;font-size:10px;margin:4px 0 12px}.settings-panel .debug-play{margin-bottom:8px}.lock-info{position:absolute;z-index:4;top:104px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;width:max-content;max-width:94%;padding:8px 10px 8px 14px;border:1px solid #d7bd72;border-radius:12px;background:#fff7deed;color:#304450;font-size:11px;box-shadow:0 4px 18px #384d4b20}.lock-info span{font-weight:700}.lock-info button{border:0;background:transparent;font-size:21px;min-width:30px;min-height:32px;color:#52685c}.city-stage{transition:background 2s ease}@media(max-width:640px){.header-tools{gap:5px}.lock-info{font-size:10px;flex-wrap:wrap;gap:3px 8px;padding:8px 10px;top:100px}.lock-info button{margin-left:auto}}.opening-guide{align-items:flex-start;gap:8px;max-width:calc(100% - 40px)}.opening-copy{padding:7px 10px;border:1px solid #d9dccb;border-radius:11px;background:#fffcefec;color:#2a4150;max-width:295px;pointer-events:auto}.opening-copy>strong{display:block;font-size:12px}.opening-guide .opening-copy>small{color:#6d7c69;font-size:8px;line-height:1.5;margin-top:3px}.next-opening{display:flex;flex-direction:column;gap:3px;align-items:flex-start;min-height:44px;border:0;border-radius:7px;padding:6px 8px;margin-top:5px;background:#f8dda0;color:#314651;font-size:10px;max-width:100%;text-align:left}.next-opening>b{font-size:11px}.next-opening span{font-size:9px;line-height:1.4}.next-opening i{font-style:normal}.opened-link{display:block;min-height:27px;border:0;background:transparent;text-decoration:underline;color:#5a705e;padding:4px 0 0;font-size:9px}.open-complete{display:block;margin-top:5px;font-size:10px;color:#5b755c}.opened-blocks{border-bottom:1px solid #e0ddcb;padding:8px 0 12px;font-size:11px}.opened-blocks summary{cursor:pointer;min-height:36px;display:flex;align-items:center}.opened-blocks p{font-size:9px;color:#74816b;line-height:1.6}.opened-blocks ul{padding:0;list-style:none;margin:5px 0}.opened-blocks li{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-top:1px solid #eee8d7;font-size:10px}.opened-blocks li small{white-space:nowrap;color:#7d896f;font-size:9px}.ceremony-status{top:164px;max-width:calc(100% - 28px);white-space:normal;line-height:1.6}.ceremony-status>span{min-width:0;overflow-wrap:anywhere}.ceremony-status button{flex-shrink:0}.focus-label{top:164px;max-width:94%;white-space:normal}.lock-info{top:210px}@media(max-width:640px){.opening-guide{left:12px;top:9px;max-width:calc(100% - 24px)}.opening-copy{padding:6px 8px;max-width:min(265px,calc(100vw - 74px))}.opening-copy>strong{font-size:11px}.opening-guide .opening-copy>small{font-size:9px;line-height:1.4}.next-opening>b{font-size:10px}.next-opening span{font-size:9px}.ceremony-status,.focus-label{top:158px}.lock-info{top:206px}}@media(max-height:610px){.opening-copy{padding:4px 7px}.opening-guide{top:5px}.next-opening{margin-top:3px;padding:4px 7px}.opened-link{min-height:24px}.ceremony-status,.focus-label{top:145px}.lock-info{top:190px}}
