:root{--color-bg:#1a1a2e;--color-surface:#16213e;--color-accent:#e94560;--color-text:#eaeaea;--color-text-muted:#888;--color-card-bg:#0f3460;--color-card-hover:#1a4a7a;--color-win-bg:#000000d9;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius-sm:8px;--radius-md:16px;--radius-lg:24px;--z-game:1;--z-overlay:100;--z-win:200}.home-screen{width:100%;min-height:100dvh;padding:var(--space-4);flex-direction:column;justify-content:center;align-items:center;display:flex}.home-version{color:#ffffff38;pointer-events:none;letter-spacing:.05em;margin-top:16px;font-size:.65rem}.home-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(min(160px,45%),1fr));width:100%;max-width:480px;display:grid}.game-card{justify-content:center;align-items:center;gap:var(--space-3);background:var(--color-card-bg);border-radius:var(--radius-lg);padding:var(--space-5);-webkit-tap-highlight-color:transparent;flex-direction:column;min-height:160px;transition:background .15s,transform .1s;display:flex}.game-card:active{background:var(--color-card-hover);transform:scale(.96)}.game-card--coming-soon{opacity:.55;cursor:default;position:relative}.game-card--coming-soon:active{background:var(--color-card-bg);transform:none}.game-card__badge{letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 15%, transparent);border-radius:99px;padding:2px 8px;font-size:.7rem;font-weight:700}.game-card__icon{justify-content:center;align-items:center;display:flex}.game-card__title{color:var(--color-text);letter-spacing:.02em;font-size:1.1rem;font-weight:600}.sound-toggle{top:var(--space-3);right:var(--space-3);z-index:var(--z-overlay);border-radius:var(--radius-md);width:48px;height:48px;color:var(--color-text);-webkit-tap-highlight-color:transparent;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed}.sound-toggle:active{background:#000c}.home-button{top:var(--space-3);left:var(--space-3);z-index:var(--z-overlay);height:48px;padding:0 var(--space-3);gap:var(--space-2);border-radius:var(--radius-sm);color:var(--color-text);letter-spacing:.03em;-webkit-tap-highlight-color:transparent;background:#00000080;justify-content:center;align-items:center;font-size:.85rem;font-weight:600;display:flex;position:fixed}.home-button:active{background:#000c}.dpad{bottom:var(--space-5);z-index:var(--z-overlay);position:fixed;left:50%;transform:translate(-50%)}.dpad__grid{grid-template-rows:repeat(3,64px);grid-template-columns:repeat(3,64px);display:grid}.dpad__btn{border-radius:var(--radius-sm);width:64px;height:64px;color:var(--color-text);-webkit-tap-highlight-color:transparent;background:#ffffff26;justify-content:center;align-items:center;font-size:1.4rem;display:flex}.dpad__btn:active{background:#ffffff59}.win-overlay{z-index:var(--z-win);background:var(--color-win-bg);text-align:center;padding:var(--space-4);flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.win-overlay--transparent{padding-bottom:var(--space-6);background:0 0;justify-content:flex-end}.win-overlay--transparent .win-overlay__stars,.win-overlay--transparent .win-overlay__message,.win-overlay--transparent .win-overlay__actions{border-radius:var(--radius-lg);padding:var(--space-3) var(--space-5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3}.win-overlay__stars{margin-bottom:var(--space-3);font-size:2rem}.win-overlay__message{color:var(--color-text);margin:0 0 var(--space-5);text-shadow:0 2px 8px #000c;font-size:2rem;font-weight:700}.win-overlay__actions{gap:var(--space-3);flex-direction:column;width:100%;max-width:280px;display:flex}.win-overlay__btn{width:100%;padding:var(--space-4);border-radius:var(--radius-md);font-size:1.1rem;font-weight:600}.win-overlay__btn--primary{background:var(--color-accent);color:#fff}.win-overlay__btn--secondary{background:var(--color-card-bg);color:var(--color-text)}.difficulty-selector{z-index:50;background:var(--color-bg);padding:var(--space-4);justify-content:center;align-items:center;padding-top:72px;display:flex;position:fixed;inset:0}.difficulty-selector__inner{align-items:center;gap:var(--space-4);flex-direction:column;display:flex}@media (height<=680px){.difficulty-selector__inner{gap:var(--space-2)}.character-btn{width:48px;height:48px;font-size:1.6rem}.character-selector{gap:var(--space-2);max-width:260px}.character-reward-hint{font-size:1.3rem}.difficulty-btn{padding:var(--space-3)}.difficulty-btn svg{width:52px;height:52px}}.difficulty-selector__grid{gap:var(--space-3);width:fit-content;display:flex}.character-selector{justify-content:center;gap:var(--space-3);flex-wrap:wrap;max-width:320px;display:flex}.character-btn{background:var(--color-card-bg);border-radius:var(--radius-md);-webkit-tap-highlight-color:transparent;border:3px solid #0000;justify-content:center;align-items:center;width:64px;height:64px;font-size:2.2rem;transition:border-color .12s,transform .1s;display:flex}.character-btn--selected{border-color:var(--color-accent)}.character-btn:active{transform:scale(.94)}.character-reward-hint{text-align:center;opacity:.85;letter-spacing:.1em;font-size:1.8rem}.difficulty-btn{background:var(--color-card-bg);border-radius:var(--radius-lg);padding:var(--space-4);-webkit-tap-highlight-color:transparent;flex-direction:column;justify-content:center;align-items:center;width:clamp(88px,28vw,120px);transition:background .15s,transform .1s;display:flex}.difficulty-btn:active{background:var(--color-card-hover);transform:scale(.96)}.difficulty-btn__label{color:var(--color-text);margin-top:var(--space-2);letter-spacing:.03em;font-size:.95rem;font-weight:600}.game-screen{background:#000;width:100%;height:100dvh;position:relative;overflow:hidden}.game-screen canvas{width:100%;height:100%;display:block}.sight-words{background:var(--color-bg);width:100%;height:100dvh;padding:var(--space-4);padding-top:72px;padding-bottom:var(--space-4);box-sizing:border-box;flex-direction:column;justify-content:space-between;align-items:center;display:flex;position:relative;overflow:hidden}.sight-words__tabs{gap:var(--space-2);display:flex}.sight-words__tab{padding:var(--space-2) var(--space-5);color:var(--color-text-muted);background:var(--color-surface);letter-spacing:.03em;-webkit-tap-highlight-color:transparent;border-radius:99px;font-size:.95rem;font-weight:600;transition:background .12s,color .12s}.sight-words__tab--active{background:var(--color-accent);color:#fff}.sight-words__tab:active:not(.sight-words__tab--active){background:var(--color-card-bg)}.sight-words__word-area{align-items:center;gap:var(--space-5);flex-direction:column;display:flex}.sight-words__word{color:var(--color-text);letter-spacing:.05em;text-align:center;font-size:clamp(4rem,20vw,8rem);font-weight:800;line-height:1}.sight-words__speak{background:var(--color-surface);-webkit-tap-highlight-color:transparent;border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;font-size:2.8rem;transition:background .12s,transform .1s;display:flex}.sight-words__speak:active{background:var(--color-card-bg);transform:scale(.93)}.sight-words__actions{gap:var(--space-3);flex-direction:column;width:100%;max-width:360px;display:flex}.sight-words__btn{width:100%;padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);letter-spacing:.02em;-webkit-tap-highlight-color:transparent;font-size:1.2rem;font-weight:700;transition:transform .1s}.sight-words__btn:active{transform:scale(.97)}.sight-words__btn--correct{background:var(--color-accent);color:#fff}.sight-words__btn--next{background:var(--color-card-bg);color:var(--color-text)}.puzzle-selector{z-index:50;background:var(--color-bg);padding:var(--space-4);-webkit-overflow-scrolling:touch;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.puzzle-selector__inner{align-items:center;gap:var(--space-6);flex-direction:column;width:100%;padding-top:56px;display:flex}.puzzle-difficulty-row{gap:var(--space-4);display:flex}.puzzle-difficulty-btn{background:var(--color-card-bg);border-radius:var(--radius-lg);padding:var(--space-4);color:var(--color-text);-webkit-tap-highlight-color:transparent;border:3px solid #0000;flex-direction:column;justify-content:center;align-items:center;transition:background .15s,border-color .12s,transform .1s;display:flex}.puzzle-difficulty-btn--selected{border-color:var(--color-accent)}.puzzle-difficulty-btn:active{transform:scale(.96)}.puzzle-difficulty-btn__label{margin-top:var(--space-2);letter-spacing:.03em;font-size:.85rem;font-weight:600}.puzzle-selector__grid{gap:var(--space-4);flex-wrap:wrap;justify-content:center;transition:opacity .2s;display:flex}.puzzle-selector__grid--locked{opacity:.35;pointer-events:none}.puzzle-btn{background:var(--color-card-bg);border-radius:var(--radius-lg);padding:var(--space-5);-webkit-tap-highlight-color:transparent;flex-direction:column;justify-content:center;align-items:center;transition:background .15s,transform .1s;display:flex}.puzzle-btn:active{background:var(--color-card-hover);transform:scale(.96)}.puzzle-btn__label{color:var(--color-text);margin-top:var(--space-2);letter-spacing:.03em;font-size:.95rem;font-weight:600}.puzzle-thumbnail{top:var(--space-3);right:var(--space-3);z-index:var(--z-overlay);border-radius:var(--radius-md);pointer-events:none;border:2px solid #fff3;width:56px;height:56px;position:fixed;overflow:hidden}.outline-toggle{top:calc(var(--space-3) + 56px + var(--space-2));right:var(--space-3);z-index:var(--z-overlay);border-radius:var(--radius-sm);width:40px;height:40px;color:var(--color-text);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:#00000080;border:none;justify-content:center;align-items:center;display:flex;position:fixed}.outline-toggle:active{background:#000c}.fishing-catch-count{z-index:var(--z-overlay);color:#fff;text-shadow:0 1px 6px #000c;pointer-events:none;font-size:2.5rem;font-weight:700;position:fixed;top:10px;left:50%;transform:translate(-50%)}.fishing-earnings{z-index:var(--z-overlay);color:#ffd600;text-shadow:0 1px 4px #000000b3;letter-spacing:.04em;pointer-events:none;font-size:1.5rem;font-weight:700;position:fixed;top:10px;right:12px}.fishing-selector__title{color:var(--color-text);margin:0;font-size:1.5rem;font-weight:700}@keyframes catch-flash{0%{opacity:1;transform:translateY(0)scale(1)}55%{opacity:1;transform:translateY(-28px)scale(1.5)}to{opacity:0;transform:translateY(-56px)scale(2)}}.catch-flash{z-index:var(--z-overlay);color:#b9f6ca;text-shadow:0 0 #000,-2px -2px #000,2px -2px #000,-2px 2px #000,2px 2px #000,0 3px 8px #000000e6;pointer-events:none;transform-origin:bottom;font-size:1.5rem;font-weight:800;animation:1.8s ease-out forwards catch-flash;position:fixed;top:48px;left:58%}.fishing-selector__sub{color:var(--color-text);opacity:.65;text-align:center;margin-top:2px;font-size:.72rem}.farm-picker-backdrop{z-index:98;position:fixed;inset:0}.farm-picker{z-index:99;background:#fffde7;border:2px solid #f9a825;border-radius:12px;min-width:190px;padding:10px;position:fixed;box-shadow:0 4px 16px #00000040}.farm-picker-section{margin-bottom:8px}.farm-picker-section:last-child{margin-bottom:0}.farm-picker-label{color:#795548;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px;font-size:.7rem;font-weight:700;display:block}.farm-picker-row{gap:6px;display:flex}.farm-picker-btn{cursor:pointer;-webkit-tap-highlight-color:transparent;background:#fff8e1;border:2px solid #ffe082;border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:6px 4px;transition:background .1s,transform .1s;display:flex}.farm-picker-btn:active{background:#fff3cd;transform:scale(.94)}.farm-picker-emoji{font-size:1.5rem;line-height:1}.farm-picker-name{color:#555;font-size:.6rem;font-weight:600}.farm-tile-detail{z-index:99;background:#fffde7;border:2px solid #f9a825;border-radius:12px;flex-direction:column;gap:8px;min-width:170px;padding:10px 12px;display:flex;position:fixed;box-shadow:0 4px 16px #00000040}.farm-detail-stages{justify-content:center;gap:8px;display:flex}.farm-detail-stage{opacity:.3;font-size:1.4rem;transition:opacity .2s}.farm-detail-stage--active{opacity:1;transform:scale(1.15)}.farm-detail-bar{background:#e0e0e0;border-radius:4px;height:8px;overflow:hidden}.farm-detail-bar-fill{background:#66bb6a;border-radius:4px;height:100%;transition:width .3s}.farm-detail-clear{color:#b71c1c;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#ffcdd2;border:2px solid #ef9a9a;border-radius:8px;width:100%;padding:6px;font-size:.85rem;font-weight:700}.farm-detail-clear:active{background:#ef9a9a}.farm-win-screen{z-index:var(--z-win);background:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.farm-win-inner{text-align:center;background:#fffde7;border-radius:20px;width:90%;max-width:340px;padding:24px 20px;box-shadow:0 8px 32px #0006}.farm-win-title{color:#f57f17;margin:0 0 4px;font-size:1.8rem;font-weight:900}.farm-win-sub{color:#555;margin:0 0 16px;font-size:.85rem}.farm-win-chart-wrap{flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;margin-bottom:16px;display:flex}.farm-win-legend{text-align:left;flex-direction:column;gap:4px;display:flex}.farm-win-legend-row{color:#333;align-items:center;gap:6px;font-size:.8rem;display:flex}.farm-win-legend-dot{border:1px solid #00000026;border-radius:50%;flex-shrink:0;width:12px;height:12px}.farm-win-legend-count{color:#555;margin-left:auto;font-weight:700}.farm-win-play-again{color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#66bb6a;border:none;border-radius:50px;padding:12px 32px;font-size:1.1rem;font-weight:800;transition:transform .1s;box-shadow:0 4px #388e3c}.farm-win-play-again:active{transform:translateY(3px);box-shadow:0 1px #388e3c}*,:before,:after{box-sizing:border-box}html,body,#root{background:var(--color-bg);width:100%;height:100%;min-height:100dvh;color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;-webkit-user-select:none;user-select:none;margin:0;padding:0;font-family:system-ui,Segoe UI,Roboto,sans-serif}button{cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;padding:0}
