:root{--surface:#fff;--surface-raised:#fff;--surface-sunken:#f7f6f4;--border:#e3e2de;--border-strong:#d8d6d1;--text:#2b2e33;--text-muted:#9a9da3;--accent:#d5353b;--hud:#2b2e33;--hud-text:#f4f3f0;--hud-rail:#5b5f66;--radius:12px;--shadow:0 1px 2px #181a1e0f, 0 4px 12px #181a1e0a;--shadow-raised:0 2px 4px #181a1e14, 0 10px 24px #181a1e0f;color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:15px}*{box-sizing:border-box}#app{width:100%;min-width:0}body{background:var(--surface);overscroll-behavior:none;place-items:center;min-height:100dvh;margin:0;padding:24px;display:grid}.card{flex-direction:column;gap:14px;width:min(440px,100%);min-width:0;margin-inline:auto;display:flex}.card--home{text-align:center;gap:12px}.card__header{text-align:center;margin-bottom:4px}.title{letter-spacing:-.02em;margin:0;font-size:30px;font-weight:600}.title--small{font-size:20px}.subtitle{color:var(--text-muted);margin:6px 0 0;font-size:14px}.splash{color:var(--text-muted)}.btn{font:inherit;color:var(--text);background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;padding:14px 18px;font-weight:500;transition:box-shadow .12s,transform .12s,background .12s}.btn:hover:not(:disabled){box-shadow:var(--shadow-raised);transform:translateY(-1px)}.btn:active:not(:disabled){box-shadow:var(--shadow);transform:translateY(0)}.btn:focus-visible,.input:focus-visible,.segmented__option:focus-visible{outline:2px solid var(--text);outline-offset:2px}.btn--primary{border-color:var(--border-strong);font-weight:600}.btn--ghost{box-shadow:none;color:var(--text-muted);background:0 0;border-color:#0000;padding:10px 18px}.btn--ghost:hover:not(:disabled){box-shadow:none;color:var(--text)}.btn--muted{color:var(--text-muted);background:var(--surface-sunken);box-shadow:none}.btn--small{padding:10px 14px;font-size:14px}.btn:disabled{color:var(--text-muted);cursor:default}.load{text-align:center;display:block;position:relative}.load.is-loaded{color:var(--text);border-color:var(--border-strong)}.load__input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.input{font:inherit;width:100%;min-width:0;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:11px 13px}.input:read-only{background:var(--surface-sunken);color:var(--text-muted)}select.input{appearance:none;background-image:linear-gradient(135deg, transparent 50%, var(--text-muted) 50%), linear-gradient(45deg, var(--text-muted) 50%, transparent 50%);background-position:calc(100% - 18px),calc(100% - 13px);background-repeat:no-repeat;background-size:5px 5px;padding-right:30px}.input--code{letter-spacing:.14em;text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.slider{width:100%;accent-color:var(--hud)}.field{flex-direction:column;gap:6px;display:flex}.field__label{color:var(--text-muted);font-size:13px;font-weight:500}.field__hint{color:var(--text-muted);font-size:12px}.field__error,.form__error{color:var(--accent);font-size:12px}.form__error{text-align:center}.copy-row,.color-row,.input-row{align-items:center;gap:8px;display:flex}.copy-row>.input,.input-row>.input,.color-row__hex{flex:1;min-width:0}.color-row__picker{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;width:46px;height:44px;padding:3px}.preview{border:1px solid var(--border);border-radius:var(--radius);background:#f3f2ee;place-items:center;padding:12px 0;display:grid}.character{display:block}.settings{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-sunken);flex-direction:column;gap:14px;padding:16px;display:flex}.settings--locked{opacity:.55}.save-summary{color:var(--text-muted);text-align:center;flex-wrap:wrap;justify-content:center;gap:4px 10px;margin:0;font-size:13px;display:flex}.save-summary strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.settings__note{color:var(--text-muted);margin:0;font-size:13px}.settings__title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0;font-size:13px;font-weight:600}.segmented{gap:6px;display:flex}.segmented__option{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:10px;flex:1;padding:10px 8px;font-size:14px}.segmented__option:disabled{cursor:default}.segmented__option.is-selected{background:var(--hud);border-color:var(--hud);color:var(--hud-text)}.game{background:#d8d6d1;position:fixed;inset:0}.game__canvas{cursor:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:100%;height:100%;display:block}.reticle{pointer-events:none;z-index:1;margin:-14px 0 0 -14px;position:fixed;top:0;left:0}.game__labels,.hud{pointer-events:none;position:absolute;inset:0}.hurt{pointer-events:none;opacity:0;background:radial-gradient(#d5353b00 35%,#d5353b73 78%,#b72127d9 100%);position:absolute;inset:0}.game__loading{color:var(--text-muted);place-items:center;margin:0;display:grid;position:absolute;inset:0}.nameplate{color:var(--hud-text);text-shadow:0 1px 2px #181a1ed9,0 0 6px #181a1e8c;white-space:nowrap;background:#2b2e3361;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:500;position:absolute;top:0;left:0}.day-banner{letter-spacing:.01em;white-space:nowrap;color:#fff;-webkit-text-stroke:4px #000;paint-order:stroke fill;pointer-events:none;font-size:53px;font-weight:800;line-height:1;animation:4s linear forwards day-banner;position:absolute;top:33%;left:50%;transform:translate(-50%,-50%)}@keyframes day-banner{0%,50%{opacity:1}to{opacity:0}}.loading-veil{color:var(--text-muted);pointer-events:auto;background:#fff;place-items:center;font-size:18px;font-weight:600;display:grid;position:absolute;inset:0}.floaters{pointer-events:none;flex-direction:column-reverse;align-items:center;gap:2px;display:flex;position:absolute;top:0;left:0}.floater{white-space:nowrap;color:var(--hud-text);text-shadow:0 1px 2px #181a1ed9,0 0 6px #181a1e8c;font-size:13px;font-weight:700;line-height:1.25;animation:1.3s ease-out both floater-rise}.floater--gold{color:#f0c463}.floater--xp{color:#c3a2f2}.floater--hp{color:#7fd093}.floater--item{color:#f4f3f0}@keyframes floater-rise{0%{opacity:0;transform:translateY(6px)scale(.92)}14%{opacity:1;transform:translateY(0)scale(1)}65%{opacity:1}to{opacity:0;transform:translateY(-34px)}}.build{gap:6px;animation:.12s ease-out pickup-in;display:flex;position:absolute;top:0;left:0}.build[hidden]{display:none}.build__slot{display:flex;position:relative}.build__slot--demolish{align-items:flex-end}.build__tip{z-index:1;white-space:nowrap;color:var(--hud-text);visibility:hidden;opacity:0;pointer-events:none;background:#181a1ef0;border:1px solid #ffffff38;border-radius:8px;padding:4px 9px;font-size:12px;line-height:1.35;transition:opacity 90ms ease-out;position:absolute;bottom:calc(100% + 9px);left:50%;transform:translate(-50%);box-shadow:0 2px 8px #181a1e73}.build__tip:after{content:"";background:inherit;border-right:inherit;border-bottom:inherit;border-radius:1px;width:8px;height:8px;position:absolute;top:calc(100% - 4px);left:50%;transform:translate(-50%)rotate(45deg)}.build__slot:hover .build__tip{visibility:visible;opacity:1}.build-tip{position:absolute;top:0;left:0}.stick{bottom:calc(20px + env(safe-area-inset-bottom));pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#2b2e3347;border:1px solid #f4f3f047;border-radius:50%;width:132px;height:132px;transition:background .12s;position:absolute}.stick--left{left:calc(20px + env(safe-area-inset-left))}.stick--right{right:calc(20px + env(safe-area-inset-right))}.stick--held{background:#2b2e3366}@media (pointer:coarse){.touch-drop{top:calc(58px + env(safe-area-inset-top));right:calc(16px + env(safe-area-inset-right));width:38px;height:38px;bottom:auto}.touch-drop__arrow{width:13px;height:13px}}.touch-switch{bottom:calc(168px + env(safe-area-inset-bottom));left:calc(64px + env(safe-area-inset-left));width:48px;height:48px;color:var(--text);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-raised);pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;border-radius:14px;place-items:center;padding:0;display:grid;position:absolute}.touch-switch--on{color:var(--hud-text);background:#4f7a4a;border-color:#3f6239}.build-mode{pointer-events:none;border:3px solid #7eb074b8;border-radius:2px;position:absolute;inset:0;box-shadow:inset 0 0 22px #7eb07438}.build-mode[hidden]{display:none}.touch-drop,.touch-session{color:var(--text);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-raised);pointer-events:auto;-webkit-tap-highlight-color:transparent;border-radius:12px;place-items:center;padding:0;display:grid;position:absolute}.touch-drop{right:calc(16px + env(safe-area-inset-right));width:44px;height:44px;bottom:68px}.touch-drop:disabled{color:var(--text-muted);background:var(--surface-sunken)}.touch-drop__arrow{width:16px;height:16px;color:var(--text-muted);place-items:center;display:grid;position:absolute;bottom:0;right:1px}.touch-drop:disabled .touch-drop__arrow{display:none}.touch-session{width:38px;height:38px;position:relative;top:0;right:0}.rotate{z-index:3;color:#f3f2ef;pointer-events:auto;text-align:center;background:#181a1ef0;place-content:center;justify-items:center;gap:14px;padding:24px;display:grid;position:absolute;inset:0}.rotate[hidden]{display:none}.rotate__text{margin:0;font-size:16px;font-weight:500}.stick__knob{width:56px;height:56px;box-shadow:var(--shadow);background:#f4f3f0d1;border:1px solid #2b2e3333;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.build-tip[hidden]{display:none}.build__tip--shown{visibility:visible;opacity:1;display:block;position:static;transform:none}.build__icon{width:52px;height:52px;color:var(--hud-text);cursor:pointer;background:#2b2e33eb;border:1px solid #ffffff8c;border-radius:12px;place-items:center;padding:0;transition:transform 90ms ease-out;display:grid;position:relative;box-shadow:0 2px 6px #181a1e59}.build__icon:hover:not(:disabled){border-color:#fff;transform:translateY(-2px)}.build__icon--poor{opacity:.55;cursor:not-allowed}.build__icon--locked{border-style:dashed;border-color:#fff6}.build__glyph{opacity:.92;margin-bottom:6px}.build__icon--locked .build__glyph{opacity:.6}.build__icon--demolish{color:#fff;background:#a03e3ae0;border-color:#ffffffb3;align-self:flex-end;width:26px;height:26px}.build__icon--demolish .build__glyph{opacity:1;margin-bottom:0}.build__icon--demolish.is-armed{background:#46494ff0}.build__icon--demolish.is-armed .build__glyph{display:none}.build__confirm{font-size:15px;font-weight:700;line-height:1;display:none}.build__icon--demolish.is-armed .build__confirm{display:block}.build__cost{font-variant-numeric:tabular-nums;align-items:center;gap:2px;font-size:11px;font-weight:700;display:flex;position:absolute;bottom:2px;right:4px}.build__icon--poor .build__cost{color:var(--accent)}.hud__corner{gap:8px;display:flex;position:absolute;top:16px}.hud__corner--left{left:16px}.hud__corner--right{flex-direction:column;align-items:flex-end;right:16px}.hud__pills{gap:8px;display:flex}.boostbar{pointer-events:auto;flex-direction:row-reverse;gap:5px;display:flex}.boostbar__button{--item-icon-size:17px;width:28px;height:28px;color:var(--hud-text);cursor:pointer;background:#2b2e33eb;border:1px solid #0000;border-radius:8px;place-items:center;padding:0;display:grid;position:relative}.boostbar__button--running{opacity:.45}.boostbar__button:focus-visible{outline:2px solid var(--hud-text);outline-offset:2px}.boostbar__count{font-size:9px;font-weight:600;position:absolute;bottom:0;right:3px}.pill--day,.pill--gold,.pill--xp{align-items:center;gap:8px;display:inline-flex}.pill--gold{font-variant-numeric:tabular-nums;gap:6px}.pill__icon{opacity:.9}.play{background:var(--accent);color:#fff;cursor:pointer;pointer-events:auto;border:0;border-radius:999px;justify-content:center;align-items:center;width:22px;height:22px;margin:-5px -7px -5px 1px;transition:transform .12s,filter .12s;display:inline-flex}.play:hover:not(:disabled){transform:scale(1.1)}.play:disabled{background:var(--hud-rail);color:#ffffff8c;cursor:default}.xp{background:var(--hud-rail,#5b5f66);border-radius:999px;width:110px;height:6px;display:inline-block;overflow:hidden}.xp__fill{background:var(--hud-text);height:100%;transition:width .2s ease-out;display:block}.hud__bottom{flex-direction:column;align-items:center;gap:7px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.health{background:#2b2e33eb;border-radius:999px;width:200px;height:7px;overflow:hidden}.health__fill{background:var(--accent);height:100%;transition:width .14s ease-out;display:block}.hotbar{pointer-events:auto;gap:5px;display:flex}.hotbar__slot{width:40px;height:40px;color:var(--hud-text);cursor:pointer;background:#2b2e33eb;border:1px solid #0000;border-radius:10px;place-items:center;padding:0;display:grid;position:relative}.hotbar__slot--selected{box-shadow:inset 0 0 0 2px var(--hud-text)}.hotbar__slot:focus-visible{outline:2px solid var(--hud-text);outline-offset:2px}.hotbar__index{color:var(--text-muted);font-size:10px;position:absolute;top:2px;left:5px}.hotbar__count{font-size:10px;font-weight:600;position:absolute;bottom:2px;right:5px}.hotbar__level{text-align:center;min-width:13px;color:var(--text);background:#ffffff24;border-radius:7px;padding:0 2px;font-size:9px;font-weight:700;line-height:13px;position:absolute;top:1px;right:1px}.hotbar__icon{width:var(--item-icon-size,24px);height:var(--item-icon-size,24px);display:block}.debug{color:var(--hud-text);background:#2b2e33eb;border-radius:12px;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5;position:absolute;bottom:16px;left:16px}.pill{color:var(--hud-text);background:#2b2e33eb;border-radius:999px;padding:7px 14px;font-size:13px;font-weight:500}.pill--muted{color:var(--text-muted)}.pill--press{cursor:pointer;pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:0;font-family:inherit}.pill--press:active{transform:scale(.97)}.shield{color:#cfe3f2;letter-spacing:.02em;white-space:nowrap;background:#2b2e33eb;border-radius:999px;align-self:center;margin:0;padding:4px 12px;font-size:12px;font-weight:600}.shield--boost{color:#f2e2c4}.shop__heading{color:#cfd6df;letter-spacing:.04em;text-transform:uppercase;margin:18px 0 10px;font-size:13px;font-weight:600}.death{pointer-events:none;background:#181a1e73;place-content:center;justify-items:center;gap:6px;animation:.22s ease-out death-in;display:grid;position:absolute;inset:0}.death__title{color:#fff;letter-spacing:.01em;margin:0;font-size:30px;font-weight:600}.death__countdown{color:#ffffffb8;font-variant-numeric:tabular-nums;margin:0;font-size:15px}@keyframes death-in{0%{opacity:0}}.banner{background:var(--accent);color:#fff;border-radius:999px;padding:7px 14px;font-size:13px;position:absolute;top:16px;left:50%;transform:translate(-50%)}.card--game{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.players{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.players__row{align-items:center;gap:10px;display:flex}.players__dot{border-radius:50%;width:14px;height:14px;box-shadow:inset 0 0 0 1px #00000014}.players__name{font-weight:500}.players__tag{color:var(--text-muted);font-size:12px}.overlay{overscroll-behavior:contain;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffb8;place-items:center;padding:24px;display:grid;position:fixed;inset:0;overflow-y:auto}.card--menu{background:var(--surface);border:1px solid var(--border);width:min(320px,100%);box-shadow:var(--shadow-raised);text-align:center;border-radius:16px;padding:20px}@media (max-height:520px){.overlay{align-content:start;padding:10px}.card--menu{gap:8px;padding:12px 14px}.card--menu .btn{padding:9px 14px}.card--menu .title{font-size:17px}}.field--group{border:0;min-width:0;margin:0;padding:0}.field--group>.field__label{margin-bottom:6px;padding:0}.tree__scroll--panel{padding:2px}.grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.grid__slot{color:#f3f2ef;font:inherit;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:12px;place-items:center;gap:2px;padding:14px 8px 10px;display:grid;position:relative}.grid__slot--held{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.grid__index{color:#f3f2ef80;font-size:11px;position:absolute;top:4px;left:8px}.grid__count{font-size:11px;font-weight:600;position:absolute;top:4px;right:8px}.grid__name{color:#f3f2ef8c;font-size:12px}.give{color:#f3f2ef99;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;display:flex}.give__amount{color:#f3f2ef;width:90px;font:inherit;background:#ffffff14;border:1px solid #ffffff29;border-radius:10px;padding:8px 10px}.roster{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.roster__row{border-top:1px solid #ffffff1a;align-items:center;gap:10px;padding:8px 6px;display:flex}.roster__dot{border-radius:999px;flex:none;width:14px;height:14px}.roster__name{flex:1;align-items:baseline;gap:6px;display:flex}.roster__tag{color:#f3f2ef8c;font-size:12px}.roster__gold{font-variant-numeric:tabular-nums;color:#f3f2ef99;font-size:14px}.tree__window .btn--ghost{color:#f3f2efb3}.tree__window .btn--ghost:hover:not(:disabled){color:#f3f2ef}.tree__window .btn--ghost:disabled{color:#f3f2ef52}.tree{z-index:3;pointer-events:auto;background:#18191c73;place-items:center;display:grid;position:fixed;inset:0}.tree__window{width:min(1280px,100% - 48px);min-width:0;height:min(66vh,640px);box-shadow:var(--shadow-raised);color:#f3f2ef;background:#1e1f23eb;border:1px solid #ffffff1f;border-radius:18px;flex-direction:column;padding:16px 18px;display:flex}@media (pointer:coarse){.tree__window{width:calc(100% - 16px);height:min(88vh,640px);padding:12px 14px}}.tree__header{justify-content:space-between;align-items:center;gap:12px;display:flex}.tree__title{margin:0;font-size:17px;font-weight:650}.tree__tabs{scrollbar-width:none;flex:1;gap:2px;min-width:0;display:flex;overflow-x:auto}.tree__tabs::-webkit-scrollbar{display:none}.tree__tab{color:#f3f2ef8c;font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:999px;flex:none;padding:7px 13px;font-size:14px}.tree__tab--current{color:#f3f2ef;background:#ffffff1f}.tree__gold{font-variant-numeric:tabular-nums;color:#f3f2ef99;flex:none;font-size:14px}.tree__close{color:#f3f2ef99;cursor:pointer;background:0 0;border:0;border-radius:999px;flex:none;width:30px;height:30px;font-size:22px;line-height:1}.tree__close:hover{color:#f3f2ef}.tree__hint{opacity:.6;margin:4px 0 12px;font-size:12px}.tree__scroll{flex:1;overflow:auto}.tree__board{margin:4px 2px 12px;position:relative}.tree__slot{width:var(--tree-node-w);height:var(--tree-node-h);position:absolute}.tree__paths{pointer-events:none;position:absolute;inset:0;overflow:visible}.tree__path{fill:none;stroke:#ffffff29;stroke-width:2px;stroke-linecap:round}.tree__path--lit{stroke:#fffc}.tree__node{text-align:left;width:100%;height:100%;font:inherit;color:inherit;cursor:default;background:#ffffff12;border:1px solid #0000;border-radius:14px;flex-direction:column;gap:3px;padding:8px 13px;transition:transform .12s,background .12s;display:flex;position:relative}.tree__node--owned{background:#ffffff29}.tree__node--open{cursor:pointer;border-color:#ffffffd9}.tree__node--open:hover{background:#ffffff1f;transform:translateY(-2px)}.tree__node--shut{opacity:.45}.tree__node--poor{cursor:not-allowed}.tree__name{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;line-height:1.3;overflow:hidden}.tree__foot{justify-content:space-between;align-items:baseline;gap:10px;margin-top:auto;display:flex}.tree__stats{text-overflow:ellipsis;white-space:nowrap;opacity:.66;font-size:11px;line-height:1.35;overflow:hidden}.tree__price{flex:none;align-items:center;gap:3px;font-size:11.5px;font-weight:700;display:flex}.tree__node--poor .tree__price{color:var(--accent)}.tree__need{color:var(--accent);opacity:1}.tree-open{width:44px;height:44px;color:inherit;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-raised);cursor:pointer;pointer-events:auto;border-radius:12px;place-items:center;padding:0;display:grid;position:absolute;bottom:16px;right:16px}.shop__shelf{flex-wrap:wrap;align-content:flex-start;gap:14px;padding:4px 2px 12px;display:flex}.shop__article{gap:8px;width:100%;display:flex}.shop__buy{flex:70%}.shop__upgrade{flex:0 0 30%;min-width:150px}.shop__arrow{vertical-align:-1px;width:11px;height:11px;margin-right:5px}.shop__level{opacity:.6;margin-left:6px;font-weight:400}.tree__node--full{cursor:not-allowed}.tree-open--player{bottom:68px}.tree-open--shop{bottom:120px}.tree-open:hover{transform:translateY(-2px)}.pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pair__field{flex-direction:column;gap:4px;display:flex}.pair__label{opacity:.7;font-size:12px}
