:root{--brand-ink: #10275c;--brand-ink-soft: #40537f;--brand-purple: #7857e6;--brand-purple-dark: #5f40cf;--brand-orange: #ff9b4a;--brand-cream: #fffaf2;--brand-blue-pale: #e9f4ff;--brand-mint: #dff6e8;--brand-navy: #203b82;--brand-navy-deep: #132a63;--brand-gradient-soft: linear-gradient(135deg, #ffe8be, #f5e9ff 48%, #dff1ff);--brand-line: rgba(28, 50, 103, .12);--brand-shadow: 0 20px 50px rgba(37, 55, 113, .12);--brand-font: "Nunito", ui-rounded, system-ui, -apple-system, BlinkMacSystemFont, sans-serif}:root{--z-background: -1;--z-content: 1;--z-content-raised: 3;--z-tooltip: 10;--z-prompt: 15;--z-rail: 20;--z-panel: 25;--z-header: 30;--z-popover: 40;--z-dialog: 100;--z-dialog-effects: 110;--z-debug: 9999;--bg: var(--brand-cream);--card: #ffffff;--ink: var(--brand-ink);--muted: var(--brand-ink-soft);--primary: var(--brand-purple);--primary-dark: var(--brand-purple-dark);--surface: #f7f8fd;--surface-muted: #eef1fb;--surface-sunken: #e9edfa;--line: #dfe5f5;--line-strong: #cfd8ef;--line-soft: #ebeff9;--done: #58c08a;--done-bg: var(--brand-mint);--partial: #ffeeda;--partial-line: #ffbf80;--accent: #9bd5ff;--danger: #d9534f;--nav-active: #efe9ff;--pet-halo: #ece6ff;--radius: 20px;--shadow: 0 4px 16px rgba(37, 55, 113, .1)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--brand-font);font-size:17px;line-height:1.45;-webkit-font-smoothing:antialiased}.screen{max-width:480px;margin:0 auto;padding:20px 16px calc(40px + env(safe-area-inset-bottom));min-height:100dvh;display:flex;flex-direction:column;gap:16px}.screen.list-page{max-width:640px}.screen.center{align-items:center;justify-content:center;text-align:center}.screen.login:before{content:"";position:fixed;inset:0;z-index:var(--z-background);background:var(--brand-gradient-soft)}h1{font-size:1.5rem;line-height:1.25;margin:0}.muted{color:var(--muted);margin:0}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.pet-stage{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;width:100%}.pet{width:clamp(140px,42vw,190px);margin:0 auto;animation:floaty 3.5s ease-in-out infinite}.pet.tappable{cursor:pointer;-webkit-tap-highlight-color:transparent}.pet.tappable:active{transform:scale(.96)}.pet-bubbles{position:absolute;bottom:calc(100% - 12px);left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:var(--z-content-raised);pointer-events:none}.pet-bubble{background:var(--card);color:var(--ink);font-weight:700;padding:10px 18px;border-radius:18px;box-shadow:var(--shadow);width:max-content;max-width:min(320px,80vw);text-align:center;animation:bubble-in .28s cubic-bezier(.2,1.4,.4,1)}.pet-bubble:last-child:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:8px solid transparent;border-top-color:var(--card);margin-top:-1px}.pet-bubble:last-child{position:relative}.pet-bubble.leaving{animation:bubble-out .26s ease forwards}@keyframes bubble-in{0%{opacity:0;transform:translateY(14px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes bubble-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-8px) scale(.96)}}.pet img{display:block;width:100%;height:auto;filter:drop-shadow(0 10px 18px rgba(37,55,113,.2))}.pet.cheer{animation:cheer .7s ease,floaty 3.5s ease-in-out .7s infinite}.pet-name{margin:4px 0 0;font-size:1.1rem;font-weight:700;color:var(--ink)}.pet-level{margin:0;font-size:.85rem;font-weight:600;color:var(--muted)}.big-emoji{font-size:4rem;line-height:1;animation:floaty 3.5s ease-in-out infinite}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes cheer{0%{transform:scale(1)}30%{transform:scale(1.12) rotate(-3deg)}60%{transform:scale(.96) rotate(2deg)}to{transform:scale(1)}}.head{text-align:center;display:flex;flex-direction:column;gap:6px}.hello{margin:4px 0 0;color:var(--muted);font-weight:600}.reason{margin:0;color:var(--muted)}.today{text-align:center}.date{margin:0 0 12px;font-weight:700;color:var(--primary-dark)}.mood{font-size:2.4rem;line-height:1;margin:-6px 0 10px}.day-note{margin:-8px 0 12px;font-size:.85rem;font-weight:600;color:var(--muted)}.bar{height:16px;border-radius:999px;background:var(--surface-sunken);overflow:hidden}.bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--primary));transition:width .5s ease}.count{margin:10px 0 0}.all-done{margin:10px 0 0;font-weight:700;color:var(--done);animation:rise .4s ease}.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.steps li{display:flex;align-items:center;gap:8px}.step{flex:1;display:flex;align-items:center;gap:12px;min-height:64px;padding:12px 16px;border:2px solid transparent;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);font:inherit;font-weight:600;color:var(--ink);text-align:left;cursor:pointer;transition:transform .12s ease,background .2s ease;-webkit-tap-highlight-color:transparent}.step:not(:disabled):active{transform:scale(.97)}.step:disabled{cursor:default}.step.done{background:var(--done-bg);border-color:var(--done);color:var(--ink)}.step-check{flex:none;width:32px;height:32px;border-radius:50%;border:2.5px solid var(--line-strong);display:grid;place-items:center;font-size:19px;color:#fff;background:transparent;transition:all .2s ease}.step.done .step-check{background:var(--done);border-color:var(--done);animation:pop .35s ease}.step-name{flex:1}.step-state{flex:none;font-size:.8rem;font-weight:700;color:var(--done);text-transform:lowercase}.undo{flex:none;border:none;background:none;font:inherit;font-size:.8rem;color:var(--muted);text-decoration:underline;cursor:pointer;padding:8px 2px}@keyframes pop{0%{transform:scale(.4)}60%{transform:scale(1.25)}to{transform:scale(1)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:12px 20px;border:none;border-radius:999px;background:var(--primary);color:#fff;font:inherit;font-weight:700;text-decoration:none;cursor:pointer;transition:transform .12s ease;-webkit-tap-highlight-color:transparent}.button:active{transform:scale(.97)}.button:disabled{opacity:.6;cursor:default}.button[aria-busy=true]{gap:10px}.button.ghost{background:transparent;color:var(--primary-dark)}.button.small{min-height:40px;padding:8px 14px;font-size:.9rem}.progress-link{align-self:flex-start;justify-content:flex-start;text-align:left;min-height:auto;width:auto;padding:4px 0}.form{display:flex;flex-direction:column;gap:16px}.form label{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:.95rem}.form input,.form textarea,.form select{font:inherit;font-weight:500;color:var(--ink);background:var(--surface);border:2px solid var(--line);border-radius:14px;padding:12px 14px;outline:none;width:100%}.form input:focus,.form textarea:focus,.form select:focus{border-color:var(--primary)}.form textarea{resize:vertical}.steps-field{border:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.steps-field legend{font-weight:700;font-size:.95rem;padding:0;margin-bottom:4px}.hint{margin:0;font-size:.85rem;color:var(--muted);font-weight:500}.history-title{margin:0 0 12px;font-size:1rem}.history-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(34px,1fr));gap:6px}.day-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;padding:0;border:2px solid var(--line);border-radius:10px;background:var(--surface);font:inherit;font-size:.78rem;font-weight:600;color:var(--muted);cursor:pointer}.day-cell.part{background:var(--partial);border-color:var(--partial-line);color:var(--primary-dark)}.day-cell.full{background:var(--done);border-color:var(--done);color:#fff}.day-cell.today{border-color:var(--primary)}.day-cell.future{opacity:.35;cursor:default}.day-details{margin-top:2px;padding-top:16px;border-top:1px solid var(--line-soft);text-align:center}.day-details h2,.day-details h3{margin:0 0 4px}.day-steps{list-style:none;margin:12px 0 16px;padding:0;display:flex;flex-direction:column;gap:8px;text-align:left}.day-steps li{display:flex;align-items:center;gap:10px;font-weight:600}.day-step-mark{flex:none;width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:2px solid var(--line);border-radius:50%;font-size:.8rem;color:var(--muted)}.day-steps li.done .day-step-mark{background:var(--done);border-color:var(--done);color:#fff}.day-step-empty{color:var(--muted);font-style:italic;font-weight:500}.day-step-toggle{background:none;border:none;padding:0;margin:0;display:flex;align-items:center;gap:10px;width:100%;text-align:left;cursor:pointer;font:inherit;font-weight:600;color:inherit;-webkit-tap-highlight-color:transparent}.day-step-toggle:active{opacity:.7}.day-step-toggle:disabled{cursor:default;opacity:.6}.step-row{display:flex;gap:8px;align-items:center}.mode-picker{display:flex;gap:4px;padding:4px;background:var(--surface-muted);border-radius:14px}.mode-tab{flex:1;min-height:40px;padding:8px 12px;border:none;border-radius:10px;background:transparent;color:var(--muted);font:inherit;font-weight:600;font-size:.9rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s ease,color .15s ease}.mode-tab.active{background:var(--card);color:var(--ink);box-shadow:0 1px 3px #25377124}.form label.checkbox-label{flex-direction:row;align-items:center;gap:10px;font-weight:500;cursor:pointer}.form label.checkbox-label input[type=checkbox]{flex:none;width:auto;margin:0}.label-optional{font-weight:400;color:var(--muted)}.remove-step{flex:none;width:40px;height:40px;border:none;border-radius:50%;background:var(--surface-sunken);color:var(--muted);font-size:20px;line-height:1;cursor:pointer}.pet-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.pet-option{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;border:2px solid var(--line);border-radius:14px;background:var(--surface);font:inherit;font-weight:600;font-size:.85rem;color:var(--ink);cursor:pointer;transition:transform .12s ease,border-color .2s ease,background .2s ease;-webkit-tap-highlight-color:transparent}.pet-option img{width:100%;max-width:84px;height:auto}.pet-option:active{transform:scale(.96)}.pet-option.selected{border-color:var(--primary);background:#fff;box-shadow:var(--shadow)}.growth{border:2px solid var(--line);border-radius:14px;padding:12px 14px}.growth summary{font-weight:700;font-size:.95rem;cursor:pointer}.growth label{margin-top:12px}.form-error{margin:0;color:var(--danger);font-weight:600}.foot{margin-top:auto;text-align:center}.edit-link{color:var(--muted);font-size:.85rem;text-decoration:none}.edit-link:hover{text-decoration:underline}.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%);background:var(--ink);color:#fff;padding:12px 22px;border-radius:999px;font-weight:700;box-shadow:0 6px 20px #25377147;animation:toast-in .3s ease;max-width:min(92vw,440px);text-align:center;z-index:var(--z-tooltip)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(12px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.modal-overlay{position:fixed;inset:0;background:#10275c80;display:grid;place-items:center;padding:20px;z-index:var(--z-dialog);animation:fade-in .25s ease}.modal-card{background:var(--card);border-radius:var(--radius);box-shadow:0 12px 40px #25377152;padding:24px 20px;width:min(92vw,400px);max-height:calc(100dvh - 40px);overflow-y:auto;animation:modal-in .35s cubic-bezier(.2,1.4,.4,1)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:scale(.8) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.celebration{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.celebration h2{margin:0;font-size:1.35rem}.celebration p{margin:0 0 8px;color:var(--muted);font-weight:600}.celebration .button{min-width:160px}.confetti-layer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:var(--z-dialog-effects)}.confetti-piece{position:absolute;top:-16px;border-radius:2px;animation:confetti-fall 3s linear forwards}.confetti-piece.round{border-radius:50%}@keyframes confetti-fall{0%{transform:translate3d(0,-20px,0) rotate(0);opacity:1}85%{opacity:1}to{transform:translate3d(var(--drift),105dvh,0) rotate(var(--spin));opacity:0}}.button-loader{position:relative;width:20px;height:20px;flex:0 0 20px}.button-loader svg{position:absolute;top:50%;left:50%;width:15px;height:15px;fill:currentColor;opacity:0;transform-origin:center;animation:button-paw-stomp 18.6s linear infinite;animation-delay:calc(var(--button-paw-index) * -1.1625s)}@keyframes button-paw-stomp{0%{opacity:0;transform:translate(-50%,-50%) translateY(-1px) rotate(var(--button-paw-angle))}0.5%{opacity:1;transform:translate(-50%,-50%) translateY(1px) rotate(var(--button-paw-angle))}4.3%{opacity:0;transform:translate(-50%,-50%) translateY(1px) rotate(var(--button-paw-angle))}to{opacity:0;transform:translate(-50%,-50%) translateY(-1px) rotate(var(--button-paw-angle))}}.page-loader{--loader-size: 118px;--paw-size: 25px;position:relative;width:var(--loader-size);height:var(--loader-size);margin:8px auto;flex:0 0 var(--loader-size);color:var(--ink)}.page-loader-paw{position:absolute;top:50%;left:50%;width:var(--paw-size);height:var(--paw-size);opacity:0;transform:translate(-50%,-50%) rotate(var(--paw-angle)) translateY(calc(var(--loader-size) * -.37)) rotate(90deg);animation:page-loader-step 1.6s ease-in-out infinite;animation-delay:var(--paw-delay)}.page-loader-paw:nth-child(1){--paw-angle: 0deg;--paw-delay: 0s}.page-loader-paw:nth-child(2){--paw-angle: 45deg;--paw-delay: .2s}.page-loader-paw:nth-child(3){--paw-angle: 90deg;--paw-delay: .4s}.page-loader-paw:nth-child(4){--paw-angle: 135deg;--paw-delay: .6s}.page-loader-paw:nth-child(5){--paw-angle: 180deg;--paw-delay: .8s}.page-loader-paw:nth-child(6){--paw-angle: 225deg;--paw-delay: 1s}.page-loader-paw:nth-child(7){--paw-angle: 270deg;--paw-delay: 1.2s}.page-loader-paw:nth-child(8){--paw-angle: 315deg;--paw-delay: 1.4s}.page-loader-paw svg{display:block;width:100%;height:100%;fill:currentColor;filter:drop-shadow(0 3px 4px rgba(37,55,113,.12))}@keyframes page-loader-step{0%,12%{opacity:0}28%{opacity:1}60%{opacity:.78}to{opacity:0}}.screen.home{max-width:none;width:100%;height:100dvh;min-height:0;display:grid;grid-template:1fr / 1fr;gap:0;padding-top:calc(12px + env(safe-area-inset-top));padding-bottom:calc(14px + env(safe-area-inset-bottom));padding-left:clamp(12px,4vw,40px);padding-right:clamp(12px,4vw,40px);overflow:hidden;position:relative}.screen.home>.dash,.screen.home>.stage,.screen.home>.dock{grid-area:1 / 1;min-width:0}.dash{align-self:start;position:relative;z-index:var(--z-content-raised);width:100%;max-height:100%;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow)}.dash.open{z-index:var(--z-panel)}.dash-head{display:flex;align-items:center;gap:14px;width:100%;padding:12px 14px;border:none;background:none;text-align:left;cursor:pointer;font:inherit;color:inherit;-webkit-tap-highlight-color:transparent;transition:transform .12s ease}.dash-head:active{transform:scale(.99)}.dash-chevron{display:inline-block;margin-left:6px;color:var(--muted);font-size:.8em;transition:transform .25s ease}.dash.open .dash-chevron{transform:rotate(180deg)}.dash-more-wrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .28s ease}.dash.open .dash-more-wrap{grid-template-rows:1fr}.dash-more{overflow:hidden;min-height:0}.dash.open .dash-more{overflow-y:auto;max-height:calc(100dvh - 130px)}.dash-pages{display:grid;grid-template-columns:50% 50%;width:200%;transition:transform .3s ease}.dash-more-wrap.showing-progress .dash-pages{transform:translate(-50%)}.dash-more-inner{margin:0 14px;padding:14px 0 16px;border-top:1px solid var(--line-soft);display:flex;flex-direction:column;gap:16px}.dash-menu-page,.dash-progress-page{min-width:0}.dash-progress-page{align-self:start}.dash-progress-page .history-title{margin:0;text-align:left}.dash-actions{display:flex;flex-direction:column;gap:10px}.dash-avatar{flex:none;width:clamp(56px,16vw,76px);height:clamp(56px,16vw,76px)}.dash-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:9px}.dash-title{font-size:1.15rem;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:116px}.dash-dot{color:var(--muted);margin:0 2px}.dash-scale{display:flex;gap:3px}.dash-cell{flex:1 1 0;min-width:5px;height:13px;border-radius:3px;background:var(--surface-sunken);box-shadow:inset 0 0 0 1px var(--line)}.dash-cell.filled{background:var(--primary);box-shadow:inset 0 0 0 1px var(--primary-dark)}.dash-scale-max{font-size:.8rem;font-weight:700;color:var(--done)}.stage{align-self:stretch;position:relative;z-index:var(--z-content);display:flex;align-items:center;justify-content:center;min-height:0;padding:4px 0}.stage .pet{width:clamp(300px,88vw,560px);max-height:100%}.stage .pet img{max-height:100%;object-fit:contain}.dock{align-self:end;justify-self:center;position:relative;z-index:var(--z-content-raised);width:100%;display:flex;flex-direction:column;gap:8px}.dock-title{margin:0;text-align:center;font-size:1.1rem;font-weight:700}.dock-name{margin:0;text-align:center;font-size:.95rem;font-weight:700;color:var(--muted)}.mark-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:74px;padding:14px 20px;border:2px solid transparent;border-radius:var(--radius);background:var(--primary);color:#fff;box-shadow:var(--shadow);font:inherit;font-weight:800;font-size:1.15rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .12s ease}.mark-btn:not(:disabled):active{transform:scale(.98)}.mark-btn:disabled{cursor:default}.mark-btn.done{background:var(--done-bg);color:var(--ink);border-color:var(--done)}.mark-check{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:2.5px solid rgba(255,255,255,.7);font-size:1rem}.mark-btn.done .mark-check{background:var(--done);border-color:var(--done);color:#fff}.slider{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:4px;cursor:grab;-webkit-user-select:none;user-select:none}.slider{justify-content:safe center}.slider.dragging{cursor:grabbing;scroll-snap-type:none}.slider.dragging .slide{pointer-events:none}.slider::-webkit-scrollbar{display:none}.slide{scroll-snap-align:center;flex:0 0 min(46vw,168px);min-height:92px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 12px;border:2px solid transparent;border-radius:var(--radius);background:var(--card);box-shadow:none;font:inherit;color:var(--ink);text-align:center;cursor:pointer;transition:transform .12s ease,background .2s ease,border-color .2s ease;-webkit-tap-highlight-color:transparent}.slide:not(:disabled):active{transform:scale(.97)}.slide:disabled{cursor:default}.slide.done{background:var(--done-bg);border-color:var(--done)}.slide-check{flex:none;width:32px;height:32px;border-radius:50%;border:2.5px solid var(--line-strong);display:grid;place-items:center;font-size:.95rem;font-weight:800;color:var(--muted);background:transparent;transition:all .2s ease}.slide.done .slide-check{background:var(--done);border-color:var(--done);color:#fff;animation:pop .35s ease}.slide-name{font-size:.9rem;font-weight:700;line-height:1.2}@media(min-width:768px){.dock{max-width:1000px}.slide{min-height:104px;gap:8px;padding:14px 16px}.slide-check{width:38px;height:38px;font-size:1.05rem}.slide-name{font-size:.98rem}}.finished-history,.modal-stack{display:flex;flex-direction:column;gap:16px}.finished-history{width:min(100%,400px);padding:16px;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);text-align:left}.finished-history .history-title{margin:0;text-align:center}.menu-sheet{display:flex;flex-direction:column;gap:16px}.menu-player{display:flex;align-items:center;gap:14px}.menu-avatar{flex:none;width:64px;height:64px;border-radius:50%;background:var(--bg);display:grid;place-items:center;overflow:hidden}.menu-avatar img{width:100%;height:100%;object-fit:contain}.menu-child{margin:0;font-size:1.3rem}.menu-sub{margin:2px 0 0;font-size:.85rem;font-weight:600}.menu-stats{margin:0;display:flex;flex-direction:column;gap:10px}.menu-stats div{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line-soft);padding-bottom:10px}.menu-stats dt{color:var(--muted);font-weight:600;font-size:.9rem;flex:none}.menu-stats dd{margin:0;font-weight:700;text-align:right}.menu-edit{text-align:center;padding:4px;border:none;background:none;font:inherit;font-size:.85rem;color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent}.settings-link{margin-top:16px;margin-bottom:-10px}.settings-link-icon{font-size:1.3rem;vertical-align:-3px}.app-shell{min-height:100dvh;width:100%;display:flex;flex-direction:column}.app-bar{position:fixed;top:calc(8px + env(safe-area-inset-top));right:6px;z-index:var(--z-header);display:flex;align-items:center;gap:8px}.app-menu-btn{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:8px 16px;border:none;border-radius:999px;background:var(--card);box-shadow:var(--shadow);color:var(--ink);font:inherit;font-weight:700;font-size:.9rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .12s ease}.app-menu-btn:active{transform:scale(.96)}.app-header{position:sticky;top:0;z-index:var(--z-header);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(6px + env(safe-area-inset-top)) 16px 6px;background:var(--bg);border-bottom:1px solid var(--line)}.app-logo{display:flex;align-items:center}.app-logo img{display:block;height:52px;width:auto;margin:-14px 0}.app-header-actions{display:flex;align-items:center;gap:8px}.app-header-menu{border:none;background:none;padding:6px 4px;font:inherit;font-weight:700;font-size:.95rem;color:var(--ink);cursor:pointer;-webkit-tap-highlight-color:transparent}.header-menu{position:relative}.header-menu-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:var(--z-popover);min-width:200px;padding:8px;display:flex;flex-direction:column;gap:2px;background:var(--card);border-radius:14px;box-shadow:0 12px 40px #25377147;animation:fade-in .15s ease}.notif{position:relative}.notif-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;padding:6px;border:none;border-radius:999px;background:var(--card);box-shadow:var(--shadow);font-size:1.1rem;line-height:1;cursor:pointer;-webkit-tap-highlight-color:transparent}.app-header-actions .notif-btn{background:none;box-shadow:none}.notif-dot{position:absolute;top:7px;right:7px;width:9px;height:9px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--bg)}.notif-pop{position:absolute;top:calc(100% + 8px);right:0;width:min(88vw,320px);max-height:min(70vh,440px);overflow-y:auto;background:var(--card);border-radius:16px;box-shadow:0 12px 40px #25377147;z-index:var(--z-popover);animation:fade-in .15s ease}.notif-pop-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px 10px;font-weight:800}.notif-readall{display:inline-flex;align-items:center;gap:6px;border:none;background:none;padding:2px 4px;font:inherit;font-size:.82rem;font-weight:700;color:var(--primary);cursor:pointer;-webkit-tap-highlight-color:transparent}.notif-empty{padding:4px 16px 18px}.notif-list{list-style:none;margin:0;padding:0 8px 8px;display:flex;flex-direction:column;gap:2px}.notif-item-btn{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:10px 12px;border:none;border-radius:12px;background:none;font:inherit;color:var(--ink);cursor:pointer;-webkit-tap-highlight-color:transparent}.notif-item-btn:hover{background:var(--surface)}.notif-item.unread .notif-item-btn{background:var(--nav-active)}.notif-item-title{font-weight:700;font-size:.92rem}.notif-item-body{font-size:.85rem;color:var(--muted)}.app-menu{display:flex;flex-direction:column;gap:14px}.app-menu-title{margin:0;font-size:1.2rem;text-align:center}.app-menu-nav{display:flex;flex-direction:column;gap:2px}.app-menu-link{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;border-radius:10px;background:none;font-size:1rem;font-weight:600;color:var(--ink);text-decoration:none}.app-menu-link.active{background:var(--nav-active);color:var(--primary-dark)}.app-menu-link.account{margin-top:6px;padding-top:14px;border-top:1px solid var(--line-soft);border-radius:0 0 10px 10px}.app-menu-badge{font-size:.72rem;font-weight:700;color:var(--muted);background:var(--surface-muted);padding:2px 8px;border-radius:999px}.app-content{flex:1;min-height:0;display:flex;flex-direction:column}.app-content>.screen{flex:1}.pwa-install-prompt{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));left:max(16px,env(safe-area-inset-left));z-index:var(--z-prompt);display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:520px;margin:0 auto;padding:14px 16px;border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow)}.pwa-install-prompt strong{display:block}.pwa-install-prompt p{margin:3px 0 0;color:var(--muted);font-size:.86rem}.pwa-install-actions{display:flex;flex:none;align-items:center;gap:2px}.pwa-ios-help{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}.pwa-ios-help h2,.pwa-ios-help p{margin:0}.pwa-ios-help p{color:var(--muted)}.pwa-install-icon{display:grid;width:48px;height:48px;place-items:center;border-radius:50%;background:var(--nav-active);color:var(--primary);font-size:1.8rem;font-weight:700}@media(max-width:430px){.pwa-install-prompt{align-items:stretch;flex-direction:column;gap:10px}.pwa-install-actions{justify-content:flex-end}}.list-page{display:flex;flex-direction:column;gap:12px}.list-section{display:flex;flex-direction:column;gap:10px}.list-section+.list-section{margin-top:10px}.list-section-title{margin:0;font-size:1.05rem;color:var(--muted)}.recipient-list{list-style:none;margin:10px 0 0;padding:10px 0 0;border-top:1px solid var(--line-soft);display:flex;flex-direction:column;gap:8px}.recipient-list li{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:.9rem}.recipient-email{font-weight:600;overflow:hidden;text-overflow:ellipsis}.achievement-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.achievement-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:var(--card);box-shadow:var(--shadow)}.achievement-icon{flex:none;font-size:1.6rem;line-height:1}.achievement-body{display:flex;flex-direction:column;gap:1px}.achievement-title{font-weight:800}.achievement-track{font-size:.82rem;color:var(--muted)}.item-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.item-card{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.item-card h2{margin:0 0 4px;font-size:1.05rem}.item-card-actions{display:flex;gap:8px;flex-wrap:wrap}.habit-cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}.habits-page-with-create{padding-bottom:calc(108px + env(safe-area-inset-bottom))}.create-habit{position:fixed;z-index:var(--z-panel);bottom:calc(16px + env(safe-area-inset-bottom));left:max(16px,calc(50% - 224px));right:max(16px,calc(50% - 224px));box-shadow:0 8px 24px #2537713d}.habit-card{display:flex;align-items:center;gap:16px;text-decoration:none;color:inherit;transition:transform .15s ease,box-shadow .15s ease}.habit-card:active{transform:scale(.99)}.habit-card-pet{position:relative;flex:0 0 auto;width:clamp(96px,30vw,132px);aspect-ratio:1;border-radius:18px;background:radial-gradient(circle at 50% 32%,#ffffff,var(--pet-halo));display:flex;align-items:center;justify-content:center}.habit-card-pet img{width:86%;height:auto;filter:drop-shadow(0 8px 14px rgba(37,55,113,.22))}.habit-pet-empty{font-size:3rem;line-height:1}.habit-level-badge{position:absolute;bottom:-6px;right:-6px;line-height:1;font-size:1.7rem}.habit-card-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:9px}.habit-card-body h2{margin:0;font-size:1.1rem}.habit-kind{font-weight:400;color:var(--muted)}.habit-card-sub{margin:0;font-size:.85rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.habit-meter{display:flex;flex-direction:column;gap:5px}.habit-meter-head{display:flex;justify-content:space-between;gap:8px;font-size:1rem;font-weight:700}.habit-meter{margin-top:-3px}.habit-meter .bar{height:16px}.habit-title{margin-bottom:6px;white-space:normal;overflow:visible}.habit-journey{margin:0;font-size:.8rem;color:var(--muted)}.pet-avatar{display:block;width:100%;height:100%;border-radius:50%;overflow:hidden;background:var(--surface)}.pet-avatar img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.9);transform-origin:50% 40%}.habit-rail{display:flex;flex-direction:column;gap:8px;position:fixed;left:0;top:50%;transform:translateY(-50%);max-height:calc(100dvh - 24px);overflow-y:auto;padding:8px 8px 8px 6px;background:var(--card);border-radius:0 20px 20px 0;box-shadow:var(--shadow);z-index:var(--z-rail)}.rail-item{display:flex;align-items:center;justify-content:center;padding:3px;border-radius:14px;text-decoration:none;color:var(--muted)}.rail-item.active{background:var(--nav-active);color:var(--primary-dark)}.rail-home{margin-bottom:2px;padding-bottom:8px;border-bottom:1px solid var(--line-soft);border-radius:14px 14px 6px 6px}.rail-home-icon{font-size:1.45rem;line-height:1}.rail-pet{position:relative;width:48px;height:48px;border-radius:13px;background:transparent;display:flex;align-items:center;justify-content:center}.rail-pet img{width:96%;height:auto;filter:drop-shadow(0 3px 6px rgba(37,55,113,.22))}.rail-egg{font-size:1.5rem;line-height:1}@media(min-width:768px){.habit-rail{padding:8px;border-radius:0 24px 24px 0}.rail-item{border-radius:16px}.rail-pet{width:66px;height:66px;border-radius:16px}}.rail-mood{position:absolute;bottom:-4px;right:-4px;display:flex;align-items:center;justify-content:center;font-size:17px;line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}@media(prefers-reduced-motion:reduce){.pet,.pet.cheer,.pet-bubble,.big-emoji,.modal-overlay,.modal-card,.dash-pages{animation:none;transition:none}.page-loader-paw{opacity:.72;animation:none}.button-loader svg{display:none;animation:none}.button-loader svg:first-child{display:block;opacity:1;transform:translate(-50%,-50%)}.confetti-layer{display:none}}.settings-card{margin-bottom:16px}.settings-card h2{margin:0 0 10px;font-size:1.05rem}.settings-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-list{margin:0 0 12px;display:grid;gap:8px}.settings-list div{display:flex;justify-content:space-between;gap:12px}.settings-list dt{color:var(--muted)}.settings-list dd{margin:0;text-align:right;font-weight:600}.reward-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}.reward-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid rgba(37,55,113,.12);border-radius:14px;background:var(--bg)}.reward-item.unlocked{background:var(--done-bg);border-color:var(--done)}.reward-item-icon{font-size:1.5rem;line-height:1}.reward-item-body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.reward-item-title{font-weight:600}.reward-item-meta{font-size:.85rem;color:var(--muted)}.reward-item-status{font-size:1.1rem}.reward-item-actions{display:flex;gap:4px}.share-row{display:flex;align-items:center;gap:8px}.share-row .share-toggle{flex:1}.icon-button{border:none;background:transparent;cursor:pointer;font-size:1rem;padding:6px;border-radius:10px;line-height:1}.icon-button:hover{background:#25377114}.name-row{display:flex;align-items:center;gap:8px}.name-row input{flex:1;min-width:0}.name-row .dice{flex:none;font-size:1.35rem;padding:8px;background:var(--surface);border-radius:12px}.settings-modal{display:flex;flex-direction:column;gap:20px}.settings-modal-title{margin:0;font-size:1.2rem;text-align:center}.settings-section{display:flex;flex-direction:column;gap:8px;padding-top:16px;border-top:1px solid var(--line-soft)}.settings-section h3{margin:0;font-size:1rem}.settings-section .settings-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.look-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.look-option{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border:2px solid var(--line);border-radius:14px;background:var(--surface);font:inherit;font-size:.8rem;font-weight:700;color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent}.look-option img{width:52px;height:52px;object-fit:contain}.look-option .look-follow{font-size:2rem;line-height:52px}.look-option.selected{border-color:var(--primary);background:var(--nav-active);color:var(--primary-dark)}.button.danger{color:var(--danger)}.reward-form{gap:12px;margin:0}.reward-form-row{display:flex;gap:10px}.reward-icon-field{width:76px;flex:none}.reward-title-field{flex:1}.reward-form-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tier-edit{flex-wrap:wrap}.reward-icon-input{width:56px;text-align:center;flex:none}.reward-title-input{flex:1;min-width:140px}.reward-id{font-size:.75rem;color:var(--muted);background:#25377114;padding:2px 6px;border-radius:6px}.tier-threshold{width:110px;flex:none}.tier-threshold input{width:100%}.tier-treat{flex:1;min-width:160px}.saved-note{color:var(--done);font-weight:600}.room-screen{max-width:none;margin:0;padding:20px 16px calc(40px + env(safe-area-inset-bottom));min-height:100dvh;display:flex;flex-direction:column;gap:16px}.room{position:relative;flex:1;min-height:min(70vh,620px);overflow:hidden}.room-pet{position:absolute;display:flex;flex-direction:column;align-items:center;gap:2px;text-decoration:none;color:inherit;will-change:left,transform}.room-pet img{width:168px;height:auto;filter:drop-shadow(0 6px 10px rgba(37,55,113,.22));pointer-events:none}.room-pet-name{font-size:.9rem;font-weight:600;color:var(--ink);background:var(--card);padding:2px 10px;border-radius:999px;box-shadow:var(--shadow);opacity:0;transform:translateY(-2px);transition:opacity .12s ease,transform .12s ease;white-space:nowrap;pointer-events:none}.room-pet:hover .room-pet-name,.room-pet:focus-visible .room-pet-name{opacity:1;transform:translateY(0)}.screen.admin-panel{max-width:none;margin:0;padding:0;display:flex;flex-direction:column}.admin-tabs{position:sticky;top:0;z-index:var(--z-header);padding:12px 16px;background:var(--bg);border-bottom:1px solid var(--line)}.admin-tabs .mode-picker{margin:0;justify-content:flex-start}.admin-content-wrapper{flex:1;display:flex;flex-direction:column;overflow-y:auto}.admin-content{max-width:640px;margin:0 auto;padding:20px 16px calc(40px + env(safe-area-inset-bottom));width:100%;display:flex;flex-direction:column;gap:16px}.admin-content.center{align-items:center;justify-content:center;text-align:center}.admin-content h2{margin:0 0 4px;font-size:1.2rem}.admin-content h3{margin:0 0 10px;font-size:1.05rem}.admin-footer{display:flex;justify-content:center;gap:12px;padding:12px 16px;border-top:1px solid var(--line);background:var(--bg)}
