:root{color:#12324a;-webkit-tap-highlight-color:transparent;background:#8fd3ff;font-family:system-ui,sans-serif}html,body,#root{overscroll-behavior:none;height:100%;margin:0;overflow:hidden}.app{-webkit-user-select:none;user-select:none;height:100dvh;position:relative}.app-blocked{text-align:center;place-content:center;gap:8px;max-width:420px;margin:0 auto;padding:24px;display:grid}.auth-screen{box-sizing:border-box;place-items:center;height:100dvh;padding:16px;display:grid;overflow-y:auto}.auth-card{background:#fff;border-radius:20px;gap:12px;width:min(100%,400px);padding:24px;display:grid;box-shadow:0 12px 40px #12324a33}.auth-card h1{text-align:center;margin:0}.island-canvas{touch-action:none;position:absolute;inset:0}.hud{top:env(safe-area-inset-top);left:env(safe-area-inset-left);right:env(safe-area-inset-right);pointer-events:none;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 8px;padding:12px 16px;display:flex;position:absolute}.hud h1{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1.25rem;overflow:hidden}.resource-bar{flex-wrap:wrap;gap:16px 6px;margin:0;padding:0;list-style:none;display:flex}.resource-bar li{box-sizing:border-box;font-variant-numeric:tabular-nums;background:#fffc;border-radius:999px;align-items:center;gap:4px;min-height:32px;padding:0 8px;font-weight:600;display:flex}.resource-icon{border-radius:50%;flex:none;width:.8em;height:.8em;display:inline-block}.resource-icon--food{background:#e9b949}.resource-icon--cloudstone{background:#9fb3c2;border-radius:3px}.resource-icon--parts{background:#b5835a;border-radius:2px;transform:rotate(45deg)scale(.85)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.cost,.ready{flex-wrap:wrap;justify-content:center;gap:8px;font-size:.85rem;font-weight:600;display:inline-flex}.cost-item{font-variant-numeric:tabular-nums;align-items:center;gap:3px;display:inline-flex}.cost-item--short{color:#c0392b}button{font:inherit;cursor:pointer}.actions{padding:12px max(16px, env(safe-area-inset-left)) calc(12px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-right));flex-wrap:wrap;justify-content:center;gap:8px;display:flex;position:absolute;bottom:0;left:0;right:0}.action{min-width:48px;max-width:200px;min-height:48px;color:inherit;background:#ffffffd9;border:0;border-radius:14px;flex:auto;padding:0 12px;font-weight:600;box-shadow:0 2px 8px #12324a26}.action--attention{color:#fff;background:#2f8fd1}.action--attention .cost-item--short{color:inherit}.action--outline{box-shadow:inset 0 0 0 2px #2f8fd1}.action .ready{margin-top:2px;font-size:.75rem;display:flex}.building-panel{left:16px;right:16px;bottom:calc(84px + env(safe-area-inset-bottom));box-sizing:border-box;overscroll-behavior:contain;background:#fffffff2;border-radius:16px;max-width:420px;max-height:calc(100dvh - 160px);margin:0 auto;padding:14px 16px;position:absolute;overflow-y:auto;box-shadow:0 4px 16px #12324a2e}@media (width>=768px){.building-panel{width:300px;top:64px;bottom:auto;left:auto}}.building-panel-header{justify-content:space-between;align-items:baseline;display:flex}.building-panel h2{margin:0;font-size:1.1rem}.level{opacity:.7;font-size:.85rem}.building-stat{align-items:center;gap:6px;margin:10px 0 8px;font-size:.9rem;display:flex}.storage{background:#e8f4fb;border-radius:11px;height:22px;position:relative;overflow:hidden}.storage-fill{background:#8fd18a;height:100%;transition:width .9s linear}.storage-label{font-variant-numeric:tabular-nums;place-items:center;font-size:.8rem;font-weight:600;display:grid;position:absolute;inset:0}.upgrade-button{flex-direction:column;align-items:center;gap:4px;width:100%;margin-top:12px;display:flex}.upgrade-button .cost-item--short{color:#ffd5cf}.glim-card{max-height:60dvh;overflow-y:auto}.mood-fill{background:#ffd36e}.rarity{white-space:nowrap;background:#e8f4fb;border-radius:999px;margin-left:6px;padding:1px 7px;font-size:.72rem;font-weight:600}.rarity--uncommon{color:#1d6b3a;background:#dcf3e2}.rarity--rare{color:#2b4fb3;background:#dde6ff}.rarity--mutant{color:#7a2fb3;background:#f0e2ff}.genes{gap:6px;margin:12px 0 0;font-size:.88rem;display:grid}.gene{justify-content:space-between;gap:12px;display:flex}.gene dt{opacity:.65}.gene dd{text-align:right;margin:0}.egg-fill{background:#f2d98d}.egg-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.reveal{text-align:center;flex-direction:column;align-items:center;display:flex}.reveal-egg{background:radial-gradient(circle at 35% 35%,#fffaf0,#fff3d6 60%,#f2dca8);border-radius:50% 50% 46% 46%/58% 58% 42% 42%;width:72px;height:92px;margin:24px auto;animation:1.4s ease-in both egg-shake;box-shadow:inset -6px -8px #0000000d}@keyframes egg-shake{0%,20%{transform:rotate(0)}30%{transform:rotate(-10deg)}40%{transform:rotate(10deg)}50%{transform:rotate(-14deg)}60%{transform:rotate(14deg)}75%{transform:rotate(-6deg)scale(1.05)}to{opacity:0;transform:scale(1.25)}}.reveal-portrait{background:radial-gradient(circle,#fffbe8,#e8f4fb 70%);border-radius:50%;place-items:center;width:120px;height:120px;margin:8px auto;animation:.45s cubic-bezier(.2,1.6,.4,1) both reveal-pop;display:grid}.reveal-portrait img{max-width:80%;max-height:80%}@keyframes reveal-pop{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}.field{gap:4px;font-size:.85rem;font-weight:600;display:grid}@media (prefers-reduced-motion:reduce){.reveal-egg,.reveal-portrait{animation-duration:.01ms}}.placing-hint--error{color:#a3261b}.action:disabled{opacity:.5;cursor:default}.placing-hint{top:calc(52px + env(safe-area-inset-top));text-align:center;pointer-events:none;background:#ffffffd9;border-radius:12px;max-width:360px;margin:0 auto;padding:8px 12px;font-size:.9rem;position:absolute;left:16px;right:16px}@media (width>=768px){.placing-hint{top:16px}}.sheet-title{margin:0 0 12px;font-size:1.1rem}.build-list{grid-template-columns:repeat(2,1fr);gap:8px;margin:0;padding:0;list-style:none;display:grid}.build-option{width:100%;min-height:64px;color:inherit;background:#e8f4fb;border:0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-weight:600;display:flex}.build-size{opacity:.7;font-size:.8rem;font-weight:400}.build-option:disabled{cursor:default;opacity:.6}@media (width>=768px){.actions{flex-direction:column;width:180px;padding:0 16px;top:64px;bottom:auto;right:auto}.action{flex:none}}.sheet-layer{justify-content:center;align-items:flex-end;display:flex;position:absolute;inset:0}.sheet-backdrop{background:#12324a59;border:0;position:absolute;inset:0}.sheet{box-sizing:border-box;width:100%;max-width:420px;padding:20px 16px calc(20px + env(safe-area-inset-bottom));overscroll-behavior:contain;background:#fff;border-radius:20px 20px 0 0;max-height:calc(100dvh - 24px);position:relative;overflow-y:auto}@media (width>=768px){.sheet-layer{align-items:center}.sheet{border-radius:20px}}.tabs{background:#e8f4fb;border-radius:12px;gap:4px;padding:4px;display:flex}.tab{color:inherit;background:0 0;border:0;border-radius:9px;flex:1;padding:8px}.tab--active{background:#fff;font-weight:600}.hint{margin:12px 0;font-size:.9rem}.form{flex-direction:column;gap:10px;display:flex}.form input{font:inherit;border:1px solid #bcd9ea;border-radius:10px;padding:12px}.primary,.secondary{border:0;border-radius:10px;padding:12px;font-weight:600}.primary{color:#fff;background:#2f8fd1}.primary:disabled{opacity:.6}.secondary{width:100%;color:inherit;background:#e8f4fb}.error{color:#a3261b;margin:0;font-size:.85rem}.reveal .form{text-align:left;width:100%}.mood-fill--low{background:#f2a07b}.feed-button{justify-content:center;align-items:center;gap:8px;margin-top:10px;display:flex}.card-subtitle{margin:14px 0 6px;font-size:.9rem}.job-list,.worker-list{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.job,.worker{min-height:40px;color:inherit;background:#e8f4fb;border:0;border-radius:10px;align-items:center;gap:8px;padding:0 12px;display:flex}.job:disabled{cursor:default;opacity:.55}.job--current:disabled{opacity:1;box-shadow:inset 0 0 0 2px #2f8fd1}.job-bonus{color:#e0a100}.worker-list{margin-top:8px}.job--chosen{color:#fff;background:#2f8fd1}.odds dd{max-width:70%}.away-ready{gap:6px;margin:0 0 12px;padding:0;font-size:1.05rem;list-style:none;display:grid}.away-ready li{align-items:center;gap:8px;display:flex}.away-notes{margin:0 0 8px;padding-left:18px;font-size:.9rem}.away-notes li+li{margin-top:4px}.hud-title{flex-wrap:wrap;align-items:center;gap:16px 8px;min-width:0;display:flex}.hud-chip{box-sizing:border-box;pointer-events:auto;min-width:40px;min-height:32px;color:inherit;background:#fffc;border:0;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:0 10px;font-size:.8rem;font-weight:600;display:inline-flex;position:relative}.hud-dot{background:#e0533d;border-radius:50%;width:9px;height:9px;position:absolute;top:-2px;right:-2px}.atlas-set+.atlas-set{border-top:1px solid #e8f4fb;margin-top:14px;padding-top:10px}.atlas-entries{flex-wrap:wrap;gap:6px;margin:0 0 8px;padding:0;list-style:none;display:flex}.atlas-entry{background:#e8f4fb;border-radius:999px;align-items:center;gap:5px;padding:4px 9px;font-size:.82rem;display:inline-flex}.atlas-entry--unknown{color:#9bb3c4;background:#f3f7fa;border:1px dashed #c9dbe6}.swatch{border-radius:50%;width:10px;height:10px;box-shadow:inset 0 0 0 1px #00000026}.atlas-claim{justify-content:center;align-items:center;gap:8px;display:flex}.streak-track{grid-template-columns:repeat(7,1fr);gap:4px;width:100%;margin:4px 0 12px;padding:0;list-style:none;display:grid}.streak-day{background:#f3f7fa;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:6px 2px;font-size:.7rem;display:flex}.streak-day .cost{flex-direction:column;gap:2px;font-size:.68rem}.streak-day--done{opacity:.55}.streak-day--today{color:#fff;background:#2f8fd1}.streak-number{font-size:.85rem;font-weight:700}.quest-list{gap:12px;margin:0 0 12px;padding:0;list-style:none;display:grid}.quest .building-panel-header{margin-bottom:6px}.tutorial-hint{top:calc(52px + env(safe-area-inset-top));z-index:2;color:#fff;background:#2f8fd1;border-radius:14px;justify-content:space-between;align-items:center;gap:10px;max-width:420px;margin:0 auto;padding:10px 12px;font-weight:600;display:flex;position:absolute;left:16px;right:16px;box-shadow:0 4px 14px #12324a40}.tutorial-skip{color:inherit;background:#fff3;border:0;border-radius:8px;flex:none;padding:4px 8px;font-size:.8rem}.tutorial-done{top:calc(52px + env(safe-area-inset-top));z-index:2;background:#fff;border-radius:16px;max-width:420px;margin:0 auto;padding:14px 16px;position:absolute;left:16px;right:16px;box-shadow:0 4px 16px #12324a33}.tutorial-done p{margin:0 0 10px}.tutorial-done .primary{width:100%}@media (width>=768px){.tutorial-hint,.tutorial-done{top:auto;bottom:24px}}.tutorial-target{animation:1.4s ease-in-out infinite tutorial-pulse}@keyframes tutorial-pulse{0%,to{box-shadow:0 0 #2f8fd199}50%{box-shadow:0 0 0 8px #2f8fd100}}@media (prefers-reduced-motion:reduce){.tutorial-target{outline:3px solid #2f8fd1;animation:none}}@media (width<=479px){.hud-title h1{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}}.friend-code{background:#e8f4fb;border-radius:12px;grid-template-columns:1fr auto;align-items:center;gap:2px 12px;margin-bottom:12px;padding:12px;display:grid}.friend-code .hint{grid-column:1;margin:0}.friend-code strong{letter-spacing:.12em;font-variant-numeric:tabular-nums;grid-column:1;font-size:1.4rem}.friend-code .primary{grid-area:1/2/span 2}.inline-form{gap:8px;margin-bottom:8px;display:flex}.inline-form input{min-width:0;font:inherit;border:1px solid #bcd9ea;border-radius:10px;flex:1;padding:10px 12px}.inline-form .secondary{width:auto;padding:0 16px}.friend-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.friend{background:#f3f7fa;border-radius:10px;justify-content:space-between;align-items:baseline;gap:8px;padding:10px 12px;display:flex}.field-label{opacity:.7;margin:10px 0 4px;font-size:.8rem;display:block}button.friend{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;border:0}.visitor{background:#f3f7fa;border-radius:10px;justify-content:space-between;align-items:baseline;gap:8px;padding:10px 12px;display:flex}.visitor--new{box-shadow:inset 3px 0 #e0533d}.action{position:relative}.visit-title{flex-direction:column;align-items:flex-start;gap:0}.visit-label{opacity:.7;font-size:.75rem}.like--on{color:#fff;background:#e0533d}.notification-settings{gap:8px;margin-top:16px;display:grid}.check-row{align-items:center;gap:10px;min-height:48px;display:flex}.check-row input{width:22px;height:22px}.quiet-hours{align-items:center;gap:8px;display:flex}.quiet-hours select{min-height:48px;font:inherit}.push-prompt{left:50%;bottom:calc(96px + env(safe-area-inset-bottom));z-index:20;background:#fff;border-radius:16px;width:min(92vw,380px);padding:16px;position:fixed;transform:translate(-50%);box-shadow:0 8px 24px #12324a33}.push-prompt p{margin:0 0 12px}.push-prompt-actions{gap:8px;display:flex}.push-prompt-actions button{flex:1;min-height:48px}.level-chip{align-items:center;gap:6px;display:inline-flex}.level-chip-bar{background:#12324a26;border-radius:3px;width:36px;height:6px;display:inline-block;overflow:hidden}.level-chip-bar span{background:#f2a93b;height:100%;display:block}.level-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.level-row{background:#f3f7fa;border-radius:10px;justify-content:space-between;gap:12px;padding:10px 12px;display:flex}.level-up{text-align:center;justify-items:center;gap:8px;display:grid}.level-up-badge{color:#fff;background:radial-gradient(circle at 35% 30%,#ffd57a,#f2a93b);border-radius:50%;place-items:center;width:72px;height:72px;font-size:2rem;font-weight:800;display:grid;box-shadow:0 6px 16px #f2a93b73}.build-locked{opacity:.7;font-size:.85rem;font-weight:600}.resource-icon--treat{background:#f29bb4;border-radius:40% 40% 50% 50%}.product-storage{opacity:.8;font-size:.75rem}.job-queue{gap:6px;margin:8px 0;padding:0;list-style:none;display:grid}.job-queue-item{grid-template-columns:auto 1fr auto;align-items:center;gap:8px;display:grid}.job-queue-bar{background:#e3ebf1;border-radius:4px;height:8px;overflow:hidden}.job-queue-bar span{background:#f29bb4;height:100%;display:block}.job-queue-item--done .job-queue-bar span{background:#5cb85c}.recipe-list{gap:6px;margin:8px 0;padding:0;list-style:none;display:grid}.resource-icon--coins{background:radial-gradient(circle at 35% 35%,#ffe38a,#e0a92a);box-shadow:inset 0 0 0 1.5px #c48d1c}.order-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.order{background:#f3f7fa;border-radius:12px;gap:8px;padding:12px;display:grid}.order--ready{box-shadow:inset 0 0 0 2px #5cb85c}.order--away{opacity:.7}.order-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.order-label{opacity:.7;font-size:.85rem}.order-actions{gap:8px;display:flex}.order-actions button{flex:1;min-height:48px}.resource-icon--brick{background:#d5dbe0;border-radius:2px;box-shadow:inset 0 0 0 1.5px #98a4ad}.resource-icon--gear{background:radial-gradient(circle,#c9b38a 30%,#8f7a55 32%)}.resource-icon--stardew{background:radial-gradient(circle at 40% 35%,#fff,#9fd2ff);border-radius:50% 50% 50% 0;transform:rotate(-45deg)scale(.9)}.resource-icon--kite{background:#f27aa8;border-radius:2px;transform:rotate(45deg)scale(.8)}.expand-option{width:100%;margin-bottom:12px}.build-purpose,.building-purpose{opacity:.8;font-size:.8rem;font-weight:400;line-height:1.3}.build-purpose{text-align:center;padding:0 8px}.building-purpose{margin:4px 0 8px}.resource-chip{pointer-events:auto;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;align-self:stretch;align-items:center;gap:4px;margin:0 -8px;padding:0 8px;display:flex;position:relative}.info-title{align-items:center;gap:8px;display:flex}.info-list{gap:10px;margin:12px 0 0;display:grid}.info-list dt{opacity:.7;font-size:.8rem;font-weight:600}.info-list dd{margin:2px 0 0}.help-steps{gap:12px;margin:0;padding-left:22px;display:grid}.help-step{gap:2px;display:grid}.info-uses{margin:0;padding-left:18px}.glim-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.glim-row{width:100%;min-height:56px;font:inherit;color:inherit;text-align:left;cursor:pointer;background:#f3f7fa;border:0;border-radius:10px;gap:2px;padding:8px 12px;display:grid}.glim-row:disabled{opacity:.55;cursor:default}.glim-row-name{align-items:center;gap:8px;display:flex}.glim-best{margin:4px 0;font-weight:600}.fly-layer{z-index:30;pointer-events:none;position:fixed;inset:0}.fly-icon{margin:-8px 0 0 -8px;transition-property:transform;transition-timing-function:cubic-bezier(.5,-.4,.6,1);position:absolute;top:0;left:0}.fly-icon .resource-icon{width:16px;height:16px}.hud-chip:after,.resource-chip:after{content:"";position:absolute;inset:-8px -3px}@media (width<=767px){.hud{padding:12px}.resource-bar{column-gap:4px}.resource-bar li{padding:0 6px}.resource-chip{margin:0 -6px;padding:0 6px}.resource-chip:after{inset:-8px -2px}.placing-hint,.tutorial-hint,.tutorial-done{top:calc(var(--hud-bottom,calc(104px + env(safe-area-inset-top))) + 4px)}}.level-fill{background:#8fa8ff}.battle-stats small{opacity:.65}.move-list{gap:6px;margin:0 0 8px;padding:0;list-style:none;display:grid}.move{background:#f2f7fb;border-radius:10px;grid-template-columns:1fr auto;align-items:center;gap:2px 8px;padding:8px 10px;display:grid}.move>small{opacity:.7;grid-column:1}.move>button{grid-area:1/2/span 2}.move-element{opacity:.65;font-size:.8rem}.fainted-notice{color:#8a2c1c;background:#fde8e4;border-radius:12px;gap:4px;margin:8px 0;padding:10px 12px;display:grid}.team-list{display:grid}.team-pick{text-align:left;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;width:100%;display:grid}.battle{z-index:40;padding:max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom));background:linear-gradient(#5d7fb0,#9fd6ff 55%,#dff3ff);grid-template-rows:1fr auto 1fr;gap:8px;display:grid;position:fixed;inset:0;overflow-y:auto}.battle-side{align-content:center;gap:6px;display:grid}.battle-side-name{color:#fff;text-align:center;text-shadow:0 1px 2px #12324a66;margin:0;font-size:.95rem}.battle-team{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:100%;max-width:560px;margin:0 auto;padding:0;list-style:none;display:grid}.battle-glim{text-align:center;background:#ffffffe0;border-radius:14px;justify-items:center;gap:2px;padding:8px 6px;transition:transform .25s,opacity .4s;display:grid;position:relative}.battle-glim strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.battle-glim small{opacity:.7;font-size:.75rem}.battle-glim--acting{transform:translateY(-6px)scale(1.04);box-shadow:0 0 0 3px #ffd36e}.battle-glim--hit{animation:.35s battle-shake}.battle-glim--target{box-shadow:0 0 0 3px #e0533d}.battle-aim{width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;justify-items:center;gap:2px;padding:0;display:grid}.battle-moves{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:100%;margin:0;padding:0;list-style:none;display:grid}.battle-move{width:100%;height:100%;min-height:48px;font:inherit;color:inherit;text-align:left;cursor:pointer;background:#f2f7fb;border:1px solid #c4d3df;border-radius:12px;align-content:start;gap:2px;padding:8px;display:grid}.battle-move small{opacity:.7;font-size:.75rem}.battle-move:disabled{opacity:.5;cursor:default}.battle-move--chosen{background:#fde8e4;border-color:#e0533d}.battle-glim--out{opacity:.35;filter:grayscale()}.battle-hp{background:#e3ebf1;border-radius:4px;width:100%;height:8px;overflow:hidden}.battle-hp>div{background:#3fae6a;height:100%;transition:width .4s}.battle-pop{z-index:1;background:#fff;border-radius:999px;padding:2px 8px;font-weight:700;animation:1s forwards battle-pop;position:absolute;top:-6px}.battle-pop--hit,.battle-pop--weak{color:#c2412d}.battle-pop--strong{color:#fff;background:#e0533d}.battle-pop--heal{color:#1d7a3a}.battle-log{box-sizing:border-box;text-align:center;background:#fff;border-radius:16px;justify-items:center;gap:8px;width:100%;max-width:560px;margin:0 auto;padding:12px;display:grid}.battle-log p{min-height:2.6em;margin:0}.battle-result h2{margin:0 0 4px}.battle-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}@keyframes battle-shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}@keyframes battle-pop{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-22px)}}@media (prefers-reduced-motion:reduce){.battle-glim,.battle-hp>div{transition:none}.battle-glim--hit,.battle-pop{animation:none}}.battle-outcome{gap:4px;margin-bottom:8px;display:grid}.battle-outcome p{min-height:0}.leaderboard{gap:4px;margin:0 0 8px;padding-left:24px;display:grid}.leaderboard li::marker{opacity:.6}.leaderboard li>*+*{margin-left:8px}.leaderboard-me{font-weight:700}
