:root{--ink:#1d3557;--muted:#5a6b80;--line:#e1e6ee;--panel:#fffffff5;--ok:#2e9e57;--bad:#d64545}html,body{-webkit-user-select:none;user-select:none;touch-action:none;word-break:keep-all;height:100%;color:var(--ink);background:#bfe3f5;margin:0;font-family:system-ui,-apple-system,Apple SD Gothic Neo,Noto Sans KR,sans-serif;overflow:hidden}#app{position:fixed;inset:0}#app canvas{display:block}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:auto}#ui>.world-overlay,#ui>.play-banner,#ui>.alert,#ui>.scoreboard,#ui>.coach{pointer-events:none}#ui>.coach .coach-skip{pointer-events:auto}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.45;cursor:default}.top-left,.top-right{top:max(12px, env(safe-area-inset-top));gap:8px;display:flex;position:absolute}.top-left{pointer-events:none;flex-direction:column;align-items:flex-start;left:16px}.top-right{right:16px}.pill{background:#ffffffe0;border-radius:999px;padding:6px 12px;font-size:14px;font-weight:700;box-shadow:0 2px 6px #0000001a}.pill.money{pointer-events:auto;border:0;font-size:16px;transition:color .2s}.pill .pill-hint{color:var(--muted);margin-left:4px;font-size:11px}.pill.money.up{color:#1f8f4a}.pill.money.down{color:var(--bad)}.pill.day{font-size:13px}.round{background:#ffffffe6;border:0;border-radius:999px;width:44px;height:44px;font-size:20px;font-weight:700;box-shadow:0 2px 6px #0000001f}.toast{bottom:calc(max(16px, env(safe-area-inset-bottom)) + 160px);color:#fff;white-space:nowrap;pointer-events:none;background:#1d3557eb;border-radius:999px;padding:10px 16px;font-size:14px;font-weight:700;animation:.18s ease-out toast-in;position:absolute;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,6px)}}.bottom-bar{left:50%;bottom:max(16px, env(safe-area-inset-bottom));gap:10px;display:flex;position:absolute;transform:translate(-50%)}.big{white-space:nowrap;border:0;border-radius:16px;min-width:96px;height:52px;padding:0 14px;font-size:16px;font-weight:800;box-shadow:0 4px 12px #00000026}.primary{background:var(--ink);color:#fff}.secondary{color:var(--ink);background:#fff}.danger{background:var(--bad);color:#fff}.sheet{box-sizing:border-box;width:min(560px,100%);padding:18px 16px max(16px, env(safe-area-inset-bottom));background:var(--panel);border-radius:20px 20px 0 0;position:absolute;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -4px 20px #00000026}.sheet h2{margin:0 0 4px;font-size:18px}.sheet-header{justify-content:space-between;align-items:center;display:flex}.sheet-hint{color:var(--muted);margin:2px 0 0;font-size:13px}.style-picker .sheet-hint{margin-bottom:14px}.icon{background:var(--line);border:0;border-radius:999px;width:36px;height:36px;font-size:16px}.sheet-actions{gap:8px;margin-top:14px;display:flex}.sheet-actions button{border:0;border-radius:12px;flex:1;height:48px;font-size:16px;font-weight:700}.sheet-actions .secondary{background:var(--line)}.card-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.card{border:2px solid var(--line);text-align:left;background:#fff;border-radius:14px;flex-direction:column;gap:4px;padding:12px 10px;display:flex}.card strong{font-size:14px}.card span{color:var(--muted);font-size:12px}.card.active{border-color:var(--ink);background:#eef3fa}.card.disabled{opacity:.5}.tabs{gap:6px;margin:10px 0;display:flex;overflow-x:auto}.tabs button{background:var(--line);border:0;border-radius:999px;flex:none;padding:8px 14px;font-size:14px;font-weight:700}.tabs button.active{background:var(--ink);color:#fff}.card-row{touch-action:pan-x;gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.facility-card{flex:none;width:150px}.facility-card .meta{color:var(--ink);margin-top:auto}.upgrade-card{flex:none;width:190px}.upgrade-card .stars{color:#e0a800;font-size:12px}.upgrade-card b{color:var(--ink)}.card .buy{background:var(--ink);color:#fff;border:0;border-radius:10px;margin-top:auto;padding:8px 10px;font-size:14px;font-weight:700}.card .buy:disabled{background:var(--line);color:var(--muted)}.place-info strong{font-size:16px}.status{margin-top:6px;font-size:14px;font-weight:700}.status.ok{color:var(--ok)}.status.bad{color:var(--bad)}.fps{left:50%;top:max(8px, env(safe-area-inset-top));color:#7cff9b;pointer-events:none;z-index:10;background:#000000b3;border-radius:8px;padding:4px 10px;font:12px/1.3 ui-monospace,monospace;position:fixed;transform:translate(-50%)}.world-overlay{pointer-events:none;position:absolute;inset:0;overflow:hidden}.world-overlay>*{will-change:transform;position:absolute;top:0;left:0}.bubble{color:var(--ink);white-space:nowrap;background:#fff;border-radius:12px;padding:4px 9px;font-size:12px;font-weight:700;box-shadow:0 2px 6px #0000002e}.bubble:after{content:"";border:5px solid #0000;border-top-color:#fff;border-bottom:0;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)}.bubble.bad{color:#a12a22;background:#ffe8e6}.bubble.bad:after{border-top-color:#ffe8e6}.popup{color:#1f8f4a;text-shadow:0 0 3px #fff,0 0 3px #fff,0 0 6px #fff;white-space:nowrap;font-size:15px;font-weight:900}.play-banner{color:#ffcf33;letter-spacing:2px;white-space:nowrap;-webkit-text-stroke:8px #1d3557;paint-order:stroke fill;text-shadow:0 6px #1d3557;pointer-events:none;font-size:56px;font-weight:900;position:absolute;top:34%;left:50%;transform:translate(-50%,-50%)}.play-banner.pop{animation:.45s cubic-bezier(.2,1.6,.4,1) banner-pop}@keyframes banner-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.3)}}.alert{left:50%;top:calc(max(12px, env(safe-area-inset-top)) + 140px);color:#7a4b00;pointer-events:none;background:#fff3cd;border-radius:12px;max-width:calc(100% - 32px);padding:10px 14px;font-size:14px;font-weight:800;position:absolute;transform:translate(-50%);box-shadow:0 3px 10px #00000026}.scoreboard{left:50%;top:calc(max(12px, env(safe-area-inset-top)) + 52px);color:#fff;text-align:center;pointer-events:none;white-space:nowrap;background:#16263d;border-radius:12px;padding:8px 14px;position:absolute;transform:translate(-50%);box-shadow:0 3px 10px #00000040}.score-row{align-items:baseline;gap:8px;font-size:14px;display:flex}.score-row b{color:#ffcf33;font-variant-numeric:tabular-nums;font-size:22px}.score-row .inning{background:#2c4566;border-radius:6px;padding:2px 6px;font-size:12px;font-weight:700}.last-play{color:#9fd3ff;margin-top:2px;font-size:13px;font-weight:700}.modal-backdrop{z-index:20;background:#0a142359;position:absolute;inset:0}.result{max-height:90%;overflow-y:auto}.result-title{text-align:center;font-size:30px;font-weight:900}.result-title.win{color:#e8a600}.result-title.lose{color:var(--muted)}.result-score{text-align:center;margin:4px 0 12px;font-size:16px}.result-score b{font-size:22px}.result-stats{grid-template-columns:auto 1fr;gap:6px 16px;margin:0;font-size:15px;display:grid}.result-stats dt{color:var(--muted)}.result-stats dd{text-align:right;margin:0;font-weight:700}.result-stats dd.total{color:#1f8f4a;font-size:18px}.result-voices{background:#f3f6fa;border-radius:12px;margin-top:14px;padding:10px 12px}.result-voices .label{color:var(--muted);margin-bottom:4px;font-size:12px}.voice{font-size:14px;font-weight:700}.result-tip{color:#7a4b00;margin-top:10px;font-size:14px;font-weight:700}@media (width<=700px){.scoreboard{top:calc(max(12px, env(safe-area-inset-top)) + 144px)}.alert{top:calc(max(12px, env(safe-area-inset-top)) + 224px)}.play-banner{font-size:44px}}.pill.season{font-size:13px}.pill.season small{color:var(--muted)}.pill.season .sep{color:var(--muted);margin:0 5px}.pill.season.reached{background:#fff3c4}.result-game{text-align:center;color:var(--muted);font-size:12px}.fans-up{color:#1f8f4a}.fans-down{color:var(--bad)}.season-end{text-align:center}.season-end .result-voices{text-align:left}.season-line{margin:8px 0;font-size:15px}.confetti{font-size:34px;animation:.6s cubic-bezier(.2,1.6,.4,1) banner-pop}.setting-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:12px 0;font-size:15px;font-weight:700;display:flex}.setting-row:last-child{border-bottom:0}.setting-row small{color:var(--muted);font-size:12px;font-weight:400;display:block}button.small{background:var(--line);border:0;border-radius:10px;padding:8px 12px;font-size:14px;font-weight:700}.segmented{background:var(--line);border-radius:10px;padding:3px;display:flex}.segmented button{background:0 0;border:0;border-radius:8px;min-width:44px;padding:7px 10px;font-size:14px;font-weight:700}.segmented button.active{background:#fff;box-shadow:0 1px 3px #00000026}.toggle{background:#c9d1dc;border:0;border-radius:999px;width:52px;height:30px;transition:background .15s;position:relative}.toggle span{background:#fff;border-radius:999px;width:24px;height:24px;transition:transform .15s;position:absolute;top:3px;left:3px}.toggle.on{background:var(--ok)}.toggle.on span{transform:translate(22px)}.coach{left:50%;bottom:calc(max(16px, env(safe-area-inset-bottom)) + 66px);box-sizing:border-box;background:#fffbea;border:2px solid #f2c94c;border-radius:14px;width:min(440px,100% - 32px);padding:12px 14px 10px;animation:.2s ease-out toast-in;position:absolute;transform:translate(-50%);box-shadow:0 4px 14px #00000026}.coach-step{color:#b38600;font-size:11px;font-weight:800}.coach-text{margin-top:2px;font-size:14px;font-weight:700;line-height:1.4}.coach-skip{color:var(--muted);background:0 0;border:0;font-size:12px;position:absolute;top:8px;right:10px}.pulse{animation:1.2s ease-in-out infinite pulse}@keyframes pulse{0%,to{box-shadow:0 4px 12px #00000026,0 0 #f2c94ce6}50%{box-shadow:0 4px 12px #00000026,0 0 0 8px #f2c94c00}}.cheer-hint{background:#fff4d6;border-radius:10px;margin-top:8px;padding:8px 10px;font-size:13px}.cheer-row .empty{color:var(--muted);margin:12px 4px;font-size:14px}.member-card,.shop-card{flex:none;width:190px}.set-card{flex:none;width:250px}.member-card .trait{color:#c2185b;font-size:11px}.member-card .trait-desc{font-size:11px}.stat-bars .stat{grid-template-columns:56px 1fr 18px;align-items:center;gap:4px;font-size:11px;display:grid}.stat-bars .stat i,.set-card .power i{background:#f06292;border-radius:3px;height:6px;display:block}.stat-bars .stat b{text-align:right}.practice{gap:4px;margin-top:auto;display:flex}.practice button{background:var(--line);border:0;border-radius:8px;flex-direction:column;flex:1;padding:6px 2px;font-size:11px;font-weight:700;display:flex}.practice button small{font-size:10px;font-weight:400}.chips{flex-wrap:wrap;gap:4px;display:flex}.chips button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 8px;font-size:11px}.chips button.on{background:#fde4ee;border-color:#f06292;font-weight:700}.set-card .power{background:var(--line);border-radius:9px;height:18px;margin-top:auto;position:relative;overflow:hidden}.set-card .power i{border-radius:0;height:100%}.set-card .power span{text-align:center;color:var(--ink);font-size:11px;font-weight:700;line-height:18px;position:absolute;inset:0}.pill .mascot{pointer-events:auto;background:#eef3fa;border:0;border-radius:999px;margin:-4px 4px -4px -6px;padding:2px 6px;font-size:15px}.team-name{gap:6px;display:flex}.team-name input{border:2px solid var(--line);width:140px;font:inherit;border-radius:10px;padding:6px 8px;font-size:14px}.chips.ideas{margin:-4px 0 6px}.swatches{gap:6px;display:flex}.swatches button{width:28px;height:28px;box-shadow:0 0 0 1px var(--line);border:3px solid #fff;border-radius:50%}.swatches button.on{box-shadow:0 0 0 3px var(--ink)}.team-section{margin:12px 0 6px;font-size:15px;font-weight:700}.manager-card{flex:none;width:150px}.team-star{color:var(--muted);margin:0;font-size:13px}.star-offer{left:50%;bottom:calc(max(16px, env(safe-area-inset-bottom)) + 66px);box-sizing:border-box;background:#fff8e1;border:2px solid #f6c667;border-radius:14px;align-items:center;gap:10px;width:min(440px,100% - 32px);padding:12px 14px;font-size:14px;display:flex;position:absolute;transform:translate(-50%);box-shadow:0 6px 18px #00000026}.star-offer small{color:var(--muted);margin-top:2px;font-size:12px;display:block}.star-offer .actions{gap:6px;margin-left:auto;display:flex}.lot-card{flex:none;width:210px}.lot-options{grid-template-columns:1fr 1fr;gap:4px;display:grid}.lot-options button{border:1px solid var(--line);background:#fff;border-radius:8px;flex-direction:column;padding:6px 4px;font-size:12px;font-weight:700;display:flex}.lot-options button small{color:var(--muted);font-size:10px;font-weight:400}.card .link{color:var(--muted);background:0 0;border:0;font-size:11px;text-decoration:underline}.festival{flex-direction:column;gap:6px;display:flex}.interior-summary{color:var(--muted);margin:6px 0 8px;font-size:13px}.building{background:#e9e2d4;border-radius:12px;flex-direction:column;gap:4px;padding:8px;display:flex}.building .roof-line{background:#9fb3c8;border-radius:12px 12px 0 0;height:10px;margin:-8px -8px 2px}.building .ground-line{background:#8a6f55;border-radius:0 0 12px 12px;height:6px;margin:2px -8px -8px}.floor{grid-template-columns:34px repeat(4,1fr);align-items:stretch;gap:4px;display:grid;position:relative}.floor-name{align-self:center;font-size:12px;font-weight:700}.floor .room{background:#fffaf0;border:2px solid #0000;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;min-height:56px;padding:4px 2px;font-size:18px;display:flex}.floor .room small{text-align:center;font-size:10px;font-weight:700}.floor .room.empty{color:#a08a66;border:2px dashed #c9b48f}.floor .room.active{border-color:var(--ink)}.floor .room.locked{background:#d8d1c3;font-size:14px}.floor-lock{color:var(--muted);pointer-events:none;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex;position:absolute;inset:0 0 0 38px}.room-picker{flex-direction:column;gap:6px;margin-top:10px;font-size:13px;display:flex}.room-picker-row{margin-top:10px}.room-card{flex:none;width:150px}.price-help{color:var(--muted);margin:6px 0 10px;font-size:13px}.price-list{flex-direction:column;gap:10px;max-height:46vh;display:flex;overflow-y:auto}.price-row{border:2px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px}.price-row.absent{opacity:.6}.price-head{justify-content:space-between;align-items:baseline;display:flex}.price-value{font-size:16px}.price-row input[type=range]{width:100%;accent-color:var(--ink);margin:8px 0 4px}.price-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:flex}.verdict{border-radius:999px;padding:2px 8px;font-weight:700}.verdict.cheap{color:#1f7a3f;background:#dff3e4}.verdict.fair{color:var(--ink);background:#e8eef8}.verdict.dear{color:#9a6400;background:#fff1d6}.verdict.pricy{color:#b3261e;background:#fde2e2}
