:root{--ink:#2b1e2f;--paper:#fff4e0;--paper-deep:#f2d3a0;--accent:#f27c8a;--accent-deep:#d14b4b;--muted:#8a5a3c;--bg:#1f4d3a;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);--scene-left:0px;--scene-right:0px;color:var(--ink);font-family:ui-rounded,SF Pro Rounded,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}html,body{background:var(--bg);overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;height:100%;margin:0;overflow:hidden}canvas{touch-action:none;display:block}[hidden]{display:none!important}.pixel-image{image-rendering:pixelated}button{font:inherit;color:inherit;cursor:pointer}.place-label{top:calc(10px + var(--safe-top));left:max(12px, var(--scene-left));border:2px solid var(--ink);background:var(--paper);box-shadow:0 3px 0 var(--ink);border-radius:10px;padding:4px 12px;font-size:14px;font-weight:700;position:fixed}.hud{padding:10px 12px calc(10px + var(--safe-bottom));justify-content:center;gap:10px;display:flex;position:fixed;bottom:0;left:0;right:0}.hud-button,.chip{border:2px solid var(--ink);background:var(--paper);box-shadow:0 3px 0 var(--ink);border-radius:12px;font-weight:700;transition:transform 80ms,box-shadow 80ms}.hud-button{min-width:112px;padding:10px 16px;font-size:15px}.chip{padding:6px 12px;font-size:14px}.hud-button:active,.chip:active,.catalog-card:active{box-shadow:0 1px 0 var(--ink);transform:translateY(2px)}.chip.primary{background:var(--accent);color:#fff}.chip.active{background:var(--paper-deep)}.chip:disabled{opacity:.45;pointer-events:none}.decor-panel{padding:10px 12px calc(12px + var(--safe-bottom));border-top:3px solid var(--ink);background:var(--paper);position:fixed;bottom:0;left:0;right:0}.panel-header,.panel-actions{align-items:center;gap:8px;display:flex}.panel-header{justify-content:space-between}.panel-title{font-size:15px}.panel-actions{min-height:36px;margin:6px 0}.panel-hint{color:var(--muted);font-size:13px}.catalog{scrollbar-width:none;gap:8px;padding:2px 2px 6px;display:flex;overflow-x:auto}.catalog-card{border:2px solid var(--ink);width:76px;height:86px;box-shadow:0 3px 0 var(--ink);background:#fff;border-radius:12px;flex-direction:column;flex:none;justify-content:space-between;align-items:center;padding:6px 4px;display:flex}.catalog-thumb{place-items:center;height:50px;display:grid}.catalog-name{text-align:center;font-size:11px;font-weight:600;line-height:1.1}.backdrop{background:#2b1e2f73;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:min(100%,460px);max-height:88vh;padding:14px 16px calc(14px + var(--safe-bottom));border:3px solid var(--ink);background:var(--paper);border-bottom:0;border-radius:18px 18px 0 0;overflow-y:auto}.avatar-preview{background:#4fa35a;border-radius:12px;justify-content:center;align-items:flex-end;gap:18px;margin:12px 0 6px;padding:10px;display:flex}.option-row{border-bottom:1px dashed var(--paper-deep);align-items:center;gap:10px;padding:7px 0;display:flex}.option-label{flex:0 0 74px;font-size:13px;font-weight:700}.options{flex-wrap:wrap;gap:6px;display:flex}.swatch{border:2px solid var(--ink);border-radius:8px;width:28px;height:28px;padding:0}.swatch.active{outline:3px solid var(--accent);outline-offset:1px}.sheet-footer{justify-content:space-between;margin-top:12px;display:flex}.toast{z-index:10;left:50%;top:calc(56px + var(--safe-top));border:2px solid var(--ink);background:var(--ink);color:var(--paper);opacity:0;pointer-events:none;border-radius:10px;padding:8px 14px;font-size:14px;font-weight:600;transition:opacity .15s,transform .15s;position:fixed;transform:translate(-50%,-8px)}.toast.show{opacity:1;transform:translate(-50%)}.fade{background:var(--ink);opacity:0;pointer-events:none;transition:opacity .18s;position:fixed;inset:0}.fade.on{opacity:1;pointer-events:auto}.hud-button.accent{background:var(--accent);color:#fff}.chip.wide{width:100%;margin-top:14px;padding:12px;font-size:16px}.brand{text-align:center;letter-spacing:.5px;margin:6px 0 0;font-size:30px}.tagline{text-align:center;color:var(--muted);margin:2px 0 14px}.invite-line{border:2px dashed var(--accent);text-align:center;border-radius:12px;margin:0 0 14px;padding:10px 12px;font-weight:700}.field{flex-direction:column;gap:6px;display:flex}.text-input{box-sizing:border-box;border:2px solid var(--ink);width:100%;font:inherit;-webkit-user-select:text;user-select:text;background:#fff;border-radius:10px;padding:10px 12px;font-size:16px}.sheet-title{margin:4px 0 8px;font-size:18px}.sheet-text{margin:0 0 12px;line-height:1.4}.invite-code{text-align:center;letter-spacing:6px;margin:10px 0 0;font-size:22px;font-weight:800}.field-label{font-size:13px;font-weight:700}.coin-badge{top:calc(10px + var(--safe-top));right:max(12px, var(--scene-right));border:2px solid var(--ink);background:var(--paper);box-shadow:0 3px 0 var(--ink);font-variant-numeric:tabular-nums;border-radius:10px;align-items:center;gap:6px;padding:4px 12px 4px 8px;font-size:15px;font-weight:800;display:flex;position:fixed}.catalog-card{height:102px}.catalog-badge{color:var(--muted);font-size:11px;font-weight:800}.catalog-badge.owned{color:#2f7a4b}.crop-row{border-bottom:1px dashed var(--paper-deep);align-items:center;gap:12px;padding:8px 0;display:flex}.crop-info{flex-direction:column;flex:1;gap:2px;display:flex}.crop-meta{color:var(--muted);font-size:13px}.meter-row{align-items:center;gap:10px;padding:4px 0;display:flex}.meter{border:2px solid var(--ink);background:#fff;border-radius:8px;flex:1;height:12px;overflow:hidden}.meter-fill{background:#4fa35a;height:100%;display:block}.meter-fill.low{background:var(--accent-deep)}.care-actions,.rename-row{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.rename-row .text-input{flex:1;width:auto}.note-list{flex-direction:column;gap:8px;max-height:38vh;margin-bottom:12px;display:flex;overflow-y:auto}.note{border:2px solid var(--ink);max-width:85%;box-shadow:0 2px 0 var(--ink);background:#fff9c4;border-radius:4px 12px 12px;align-self:flex-start;padding:8px 10px}.note.mine{background:var(--paper-deep);border-radius:12px 4px 12px 12px;align-self:flex-end}.note-meta{color:var(--muted);font-size:11px;font-weight:700}.note-body{white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;margin:2px 0 0;line-height:1.35}.note-input{resize:none}.gift-list{max-height:46vh;margin-top:8px;overflow-y:auto}.gift-reveal{flex-direction:column;align-items:center;gap:8px;padding:14px 0;display:flex}.gift-message{text-align:center;font-style:italic}.trace-list{margin:0 0 6px;padding:0;list-style:none}.trace{border-bottom:1px dashed var(--paper-deep);gap:10px;padding:7px 0;line-height:1.35;display:flex}.trace-time{min-width:44px;color:var(--muted);font-variant-numeric:tabular-nums;flex:none;font-size:13px;font-weight:800}.install-steps{margin:0 0 12px;padding-left:22px;line-height:1.5}.install-steps li+li{margin-top:6px}.gesture-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-bottom:14px;display:grid}.gesture-button{border:2px solid var(--ink);background:var(--paper);color:var(--ink);font:inherit;box-shadow:0 3px 0 var(--ink);cursor:pointer;border-radius:10px;padding:10px 6px;font-weight:700}.gesture-button:active{box-shadow:0 1px 0 var(--ink);transform:translateY(2px)}.gesture-icon{flex-direction:column;align-items:center;gap:4px;display:inline-flex}.mood-chip .gesture-icon{flex-direction:row;gap:6px}.answer-hint{background:var(--paper-deep);border-radius:8px;padding:8px 10px}@media (hover:hover) and (pointer:fine){.hud-button:hover,.chip:hover,.gesture-button:hover,.catalog-card:hover{filter:brightness(.95)}}@media (width>=700px) and (height>=560px){.backdrop{align-items:center;padding:24px}.sheet{border-bottom:3px solid var(--ink);width:min(100%,480px);max-height:min(84vh,760px);box-shadow:0 6px 0 var(--ink);border-radius:18px;padding:18px 20px}.decor-panel{border:3px solid var(--ink);border-bottom:0;border-radius:18px 18px 0 0;width:min(100% - 32px,760px);left:50%;right:auto;transform:translate(-50%)}.place-label,.coin-badge{padding:6px 14px;font-size:16px}}.speech{border:2px solid var(--ink);background:var(--paper);max-width:min(220px,60vw);box-shadow:0 2px 0 var(--ink);overflow-wrap:anywhere;pointer-events:none;z-index:5;border-radius:10px;padding:6px 10px;font-size:14px;font-weight:600;line-height:1.3;position:fixed;top:0;left:0}.speech.mine{background:var(--paper-deep)}.chat-bar{left:50%;bottom:calc(70px + var(--safe-bottom));border:2px solid var(--ink);background:var(--paper);width:min(100% - 24px,460px);box-shadow:0 3px 0 var(--ink);z-index:6;border-radius:14px;gap:6px;padding:8px;display:flex;position:fixed;transform:translate(-50%)}.chat-input{flex:1;min-width:0;margin:0}.egg-check{color:var(--muted);font-size:14px}.egg-check.done{color:#2f7a4b;font-weight:700}.rarity{border:2px solid var(--ink);border-radius:999px;padding:2px 10px;font-size:13px;font-weight:800}.rarity.rare{background:#b5e3f5}.rarity.legendary{background:#fff09e;box-shadow:0 0 0 3px #f7d65a}.grow-reveal{justify-content:center;align-items:flex-end;gap:14px;padding:18px 0 8px;display:flex}.grow-before{opacity:.55}.grow-arrow{align-self:center;font-size:22px;font-weight:800}.grow-after{animation:.6s ease-out grow-pop;position:relative}.grow-reward{text-align:center;color:var(--accent-deep);margin:0;font-weight:800}.sparkles{pointer-events:none;position:absolute;inset:-12px}.sparkle{left:calc(50% + 46% * cos(var(--i) * 60deg) - 4px);top:calc(50% + 46% * sin(var(--i) * 60deg) - 4px);clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);width:8px;height:8px;animation:1.2s steps(4,end) infinite sparkle;animation-delay:calc(var(--i) * .2s);background:#ffd84d;position:absolute}@keyframes grow-pop{0%{transform:scale(.6)}70%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes sparkle{0%,to{opacity:0;transform:scale(.4)}50%{opacity:1;transform:scale(1.2)}}@media (prefers-reduced-motion:reduce){.grow-after,.sparkle{animation:none}}.auth-body{flex-direction:column;gap:12px;display:flex}.auth-tabs{border:2px solid var(--ink);border-radius:12px;grid-template-columns:1fr 1fr;padding:3px;display:grid}.auth-tab{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:8px 0;font-weight:700}.auth-tab.active{background:var(--ink);color:#fff}.auth-form{flex-direction:column;gap:12px;display:flex}.field-hint{color:var(--muted);font-size:12px}.password-wrap{position:relative}.password-wrap .text-input{padding-right:64px}.password-toggle{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:4px 8px;font-size:13px;font-weight:700;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.form-error{color:var(--accent-deep);background:#fde2e2;border-radius:10px;margin:0;padding:8px 10px;font-size:14px;font-weight:700}.account-name{align-self:center;font-weight:700}.days-badge{top:calc(48px + var(--safe-top));left:max(12px, var(--scene-left));border:2px solid var(--ink);background:var(--paper);box-shadow:0 3px 0 var(--ink);font:inherit;color:var(--ink);cursor:pointer;border-radius:10px;align-items:center;gap:5px;padding:3px 10px;font-size:13px;font-weight:800;display:flex;position:fixed}.days-heart{color:var(--accent-deep)}.link-button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;align-self:center;padding:4px 6px;font-size:14px;font-weight:700;text-decoration:underline}.chip.small{padding:3px 10px;font-size:13px}.chip.danger,.chip.primary.danger{background:var(--accent-deep);color:#fff}.danger-label{color:var(--accent-deep);margin:14px 0 6px}.inline-form{align-items:flex-end;gap:8px;display:flex}.inline-form .field,.inline-form .text-input{flex:1;min-width:0}.inline-form .chip.wide{width:auto}.account-email{flex-direction:column;gap:6px;margin:6px 0 12px;display:flex}.email-state{align-self:center;font-size:14px}.email-state.ok{color:#2f7a4b;font-weight:700}.days-count{text-align:center;margin:4px 0 0;font-size:22px;font-weight:800}.days-since{text-align:center;color:var(--muted);margin:0 0 6px}.special-day{border-bottom:1px dashed var(--paper-deep);grid-template-columns:1fr auto;align-items:center;gap:2px 8px;padding:8px 0;display:grid}.special-day.today .special-title{color:var(--accent-deep)}.special-title{font-weight:700}.special-when{color:var(--muted);grid-column:1;font-size:13px}.special-day .chip{grid-area:1/2/span 2}.special-add{grid-template-columns:1fr auto;gap:8px;margin-top:10px;display:grid}.special-add .text-input:first-child{grid-column:1/-1}.special-add .chip.wide{width:auto}.inline-form .chip.wide,.special-add .chip.wide{margin-top:0;padding:10px 14px}
