:root{--bg-0: #0a0a0d;--bg-1: #131319;--bg-2: #1c1c24;--bg-3: #262630;--text: #f4f4f7;--text-dim: #b8b8c0;--text-muted: #8a8a92;--accent: #c66fbc;--accent-2: #ff6b9d;--accent-warm: #efcf6e;--accent-cool: #6f4ef6;--line: rgba(255,255,255,.1);--status-go: #B6C99A;--status-warn: #EFCF6E;--status-bad: #F2A89E;--status-info: #9EBED9;--motion-fast: .15s;--motion-smooth: .24s;--ease-std: cubic-bezier(.2, 0, 0, 1)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;touch-action:manipulation}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg-0);color:var(--text);min-height:100svh;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{max-width:480px;margin:0 auto;padding:1rem 1rem 6.5rem;min-height:100svh;display:flex;flex-direction:column}header.brand{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:.7rem;padding-bottom:.9rem;border-bottom:1px solid var(--line);margin-bottom:1.2rem}.brand h1{font-size:1.05rem;font-weight:600;margin:0;color:var(--text)}.brand .currency{font-size:.82rem;color:var(--accent-warm);font-variant-numeric:tabular-nums;background:var(--bg-2);padding:.28rem .6rem;border-radius:999px;border:1px solid var(--line);display:inline-flex;align-items:center;gap:.3rem}.brand .menu-btn{padding:.4rem .5rem;font-size:1.1rem;color:var(--text-muted);border-radius:6px}.brand .menu-btn:hover{color:var(--text)}.progress-strip{margin-bottom:1rem}.progress-strip .label{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.4rem}.progress-strip .label .lbl{font-size:.76rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.progress-strip .pct{font-size:.86rem;color:var(--accent);font-weight:600;font-variant-numeric:tabular-nums}.progress-strip .bar{height:6px;background:var(--bg-2);border-radius:999px;overflow:hidden}.progress-strip .fill{height:100%;background:linear-gradient(90deg,var(--accent-2),var(--accent),var(--accent-cool));border-radius:999px;transition:width var(--motion-smooth) var(--ease-std)}.onb-step h2{font-size:1.4rem;line-height:1.25;margin:0 0 .6rem;letter-spacing:-.01em}.onb-step .lede{color:var(--text-dim);font-size:.95rem;margin:0 0 1.2rem;max-width:38ch}.onb-welcome{align-items:center;text-align:center;padding-top:.5rem}.hero-img{display:block;width:100%;max-width:360px;margin:0 auto 1.4rem;aspect-ratio:4 / 5}.hero-img img{width:100%;height:auto;display:block;border-radius:16px}.hero-h{font-size:1.55rem;line-height:1.2;margin:0 0 1.4rem;letter-spacing:-.01em;max-width:22ch}.hero-h em{font-style:normal;color:var(--accent)}.cat-picker{display:grid;grid-template-columns:1fr;gap:.45rem;margin:0 0 1rem}.cat-item{display:flex;align-items:center;gap:.7rem;padding:.85rem 1rem;background:var(--bg-1);border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:background var(--motion-fast) var(--ease-std),border-color var(--motion-fast) var(--ease-std)}.cat-item.selected{background:var(--bg-3);border-color:var(--accent)}.cat-item .dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--text-muted);flex-shrink:0}.cat-item.selected .dot{background:var(--accent);border-color:var(--accent)}.cat-item[data-valence=good].selected{border-color:var(--status-go)}.cat-item[data-valence=bad].selected{border-color:var(--accent-warm)}.cat-item[data-valence=good].selected .dot{background:var(--status-go);border-color:var(--status-go)}.cat-item[data-valence=bad].selected .dot{background:var(--accent-warm);border-color:var(--accent-warm)}.cat-icon{width:22px;height:22px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:1.05rem}.valence-tag{font-size:.62rem;padding:.18rem .5rem;border-radius:999px;text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--line)}.valence-tag.good{color:var(--status-go);border-color:#b6c99a47}.valence-tag.bad{color:var(--accent-warm);border-color:#efcf6e47}.cat-add{width:100%;padding:.8rem 1rem;background:transparent;border:1px dashed var(--line);border-radius:10px;color:var(--text-muted);text-align:left;font-size:.92rem}.cat-add:hover{color:var(--text-dim);border-color:var(--text-muted)}.sticky-cta{position:sticky;bottom:0;background:linear-gradient(to top,var(--bg-0) 60%,rgba(10,10,13,0));padding:1rem 0 .5rem;margin-top:.5rem;z-index:30;display:flex;flex-direction:column;gap:.5rem}.chips{display:flex;flex-wrap:wrap;gap:.45rem;margin:0 0 .9rem}.chip{padding:.5rem .85rem;background:var(--bg-1);border:1px solid var(--line);border-radius:999px;color:var(--text-dim);font-size:.86rem;cursor:pointer;transition:background var(--motion-fast) var(--ease-std),border-color var(--motion-fast) var(--ease-std),color var(--motion-fast)}.chip:hover{color:var(--text)}.chip.selected{background:var(--bg-3);border-color:var(--accent);color:var(--text)}.why-input{width:100%;min-height:66px;background:var(--bg-1);border:1px solid var(--line);border-radius:10px;padding:.85rem 1rem;color:var(--text);font:inherit;font-size:.92rem;resize:vertical;margin-bottom:.4rem}.why-input:focus{outline:none;border-color:var(--accent)}.why-helper{color:var(--text-muted);font-size:.82rem;margin:0 0 .9rem}.primary-btn{width:100%;padding:.95rem 1.2rem;background:linear-gradient(135deg,var(--accent-2),var(--accent));color:#fff;font-weight:600;font-size:1rem;border-radius:12px;box-shadow:0 4px 12px #c66fbc40;transition:transform var(--motion-fast) var(--ease-std)}.primary-btn:active{transform:scale(.98)}.primary-btn:disabled{background:var(--bg-3);color:var(--text-muted);box-shadow:none;cursor:not-allowed}.secondary-btn{width:100%;padding:.85rem 1.2rem;background:transparent;color:var(--text-dim);border:1px solid var(--line);border-radius:10px;font-weight:500}.secondary-btn:hover{background:var(--bg-2);color:var(--text)}.period-tabs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.3rem;background:var(--bg-1);padding:.25rem;border-radius:10px;margin-bottom:.8rem}.period-tab{padding:.55rem .5rem;font-size:.85rem;font-weight:500;color:var(--text-muted);border-radius:7px;display:inline-flex;align-items:center;justify-content:center;gap:.3rem}.period-tab:hover{color:var(--text-dim)}.period-tab.active{background:var(--bg-3);color:var(--text)}.period-tab .count{font-size:.72rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.period-tab.active .count{color:var(--accent);font-weight:600}.period-stat{display:flex;align-items:baseline;gap:.9rem;flex-wrap:wrap;margin:0 0 1.1rem .1rem}.period-stat .stat-num{font-size:2rem;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;line-height:1}.period-stat .stat-split{display:inline-flex;gap:.7rem;font-size:.85rem;font-variant-numeric:tabular-nums}.stat-good{color:var(--status-go)}.stat-bad{color:var(--accent-warm)}.period-stat .stat-delta{margin-left:auto;font-size:.78rem;font-weight:600;font-variant-numeric:tabular-nums}.period-stat .stat-delta.down{color:var(--status-go)}.period-stat .stat-delta.up{color:var(--accent-warm)}.period-stat .stat-delta.flat{color:var(--text-muted)}.log-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:1rem}.log-btn{padding:1.1rem .7rem;background:var(--bg-1);border:1px solid var(--line);border-radius:12px;color:var(--text);font-size:.96rem;font-weight:500;text-align:center;min-height:84px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.32rem;line-height:1.22;word-break:break-word}.log-btn:hover{background:var(--bg-2)}.log-btn:active{transform:scale(.97)}.log-btn .icon{font-size:1.5rem;line-height:1}.log-btn .label{font-size:.88rem}.log-btn[data-valence=good]{border-bottom:2px solid var(--status-go)}.log-btn[data-valence=bad]{border-bottom:2px solid var(--accent-warm)}.free-text{width:100%;background:var(--bg-1);border:1px solid var(--line);border-radius:10px;padding:.8rem 1rem;color:var(--text);font:inherit;margin-bottom:.5rem}.free-text:focus{outline:none;border-color:var(--accent)}.why-recall{color:var(--text-muted);font-size:.84rem;margin:.3rem 0 0;line-height:1.45}.recent-block{margin-top:1.3rem}.recent-head{font-size:.76rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 .5rem;display:flex;justify-content:space-between;align-items:baseline}.recent-list,.history-extra{list-style:none;padding:0;margin:0 0 .7rem}.recent-item{display:flex;align-items:baseline;gap:.7rem;padding:.5rem 0;border-bottom:1px dotted rgba(255,255,255,.06);font-size:.92rem}.recent-item:last-child{border-bottom:none}.recent-item .when{font-size:.74rem;color:var(--text-muted);flex-shrink:0;font-variant-numeric:tabular-nums;width:2.8em}.recent-item .cat{flex:1;color:var(--text)}.recent-item .cat .note{color:var(--text-dim);font-size:.84rem;margin-top:.15rem}.recent-empty{color:var(--text-muted);font-size:.88rem;padding:.6rem 0;text-align:center}.full-history-toggle{display:block;width:100%;padding:.55rem;color:var(--accent);background:transparent;border:1px dashed var(--line);border-radius:8px;font-size:.84rem;text-align:center}.full-history-toggle:hover{border-color:var(--accent);background:var(--bg-1)}.cal-controls{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem}.cal-month{flex:1;font-weight:600;text-align:center;color:var(--text)}.cal-nav{background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:.4rem .9rem;color:var(--text-dim);font-size:1rem}.cal-nav:hover{background:var(--bg-3)}.cal-filter{display:flex;gap:.35rem;margin-bottom:.7rem;padding:.25rem;background:var(--bg-1);border-radius:10px}.cal-filter-btn{flex:1;padding:.4rem .5rem;font-size:.78rem;color:var(--text-muted);border-radius:7px}.cal-filter-btn:hover{color:var(--text-dim)}.cal-filter-btn.active{background:var(--bg-3);color:var(--text)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:1.3rem}.cal-day-head{text-align:center;font-size:.7rem;color:var(--text-muted);padding:.25rem 0;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.cal-day{aspect-ratio:1;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:.82rem;position:relative;border:1px solid transparent;background:var(--bg-1);color:var(--text-dim)}.cal-day.other{background:transparent;color:var(--text-muted);opacity:.4}.cal-day.today{border-color:var(--accent);color:var(--accent);font-weight:600}.cal-day.has-entries{background:var(--bg-3);color:var(--text);cursor:pointer}.cal-day.has-entries:hover{border-color:var(--accent)}.cal-day .cnt{position:absolute;bottom:3px;right:4px;font-size:.62rem;color:var(--accent-warm);font-weight:600;line-height:1}.cal-day.v-good .cnt{color:var(--status-go)}.cal-day.v-bad .cnt{color:var(--accent-warm)}.cal-day.v-mix .cnt{color:var(--text)}.cal-day.v-good{border-bottom:2px solid rgba(182,201,154,.35)}.cal-day.v-bad{border-bottom:2px solid rgba(239,207,110,.35)}.cal-day.v-mix{border-bottom:2px solid rgba(198,111,188,.35)}.cal-detail{background:var(--bg-1);border:1px solid var(--line);border-radius:10px;padding:1rem;margin-bottom:1rem}.cal-detail .date{font-weight:600;margin-bottom:.7rem;color:var(--accent)}.cal-detail ul{list-style:none;padding:0;margin:0}.cal-detail li{padding:.4rem 0;border-bottom:1px dotted rgba(255,255,255,.06);font-size:.9rem;color:var(--text-dim)}.cal-detail li:last-child{border-bottom:none}.cal-detail .close{margin-top:.6rem;color:var(--text-muted);font-size:.82rem;text-decoration:underline;background:none;border:none;cursor:pointer}.pause-overlay{position:fixed;inset:0;background:#0a0a0df2;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:100;padding:2rem 1.5rem;text-align:center}.pause-overlay h2{font-size:1.3rem;line-height:1.35;margin:0 0 1.3rem;max-width:28ch;color:var(--text)}.pause-overlay .why-recall{font-size:.9rem;color:var(--text-dim);margin:0 0 1.5rem;max-width:32ch;line-height:1.5;border-left:2px solid var(--accent);padding-left:1rem;text-align:left}.pause-overlay .ring{width:82px;height:82px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--accent);animation:spin 6s linear forwards;margin-bottom:1.3rem}@keyframes spin{to{transform:rotate(360deg)}}.pause-overlay .countdown{font-size:2.4rem;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums;margin:-.5rem 0 1.3rem;line-height:1}.pause-overlay .skip{color:var(--text-muted);text-decoration:underline;font-size:.88rem;margin-top:.8rem}.reward-burst{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:150;background:#0a0a0d99}.reward-burst .card{background:linear-gradient(135deg,var(--bg-1),var(--bg-3));border:1px solid var(--accent);border-radius:16px;padding:2rem 1.5rem;text-align:center;max-width:320px;animation:pop var(--motion-smooth) var(--ease-std);box-shadow:0 12px 40px #c66fbc40}@keyframes pop{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.reward-burst h3{margin:0 0 .5rem;color:var(--accent-warm);font-size:1.2rem}.reward-burst p{margin:0 0 1.2rem;color:var(--text-dim);font-size:.92rem;line-height:1.5}.reward-burst .reward-num{font-size:2.5rem;font-weight:700;color:var(--accent);line-height:1;margin-bottom:.4rem}.reward-burst button{padding:.7rem 1.4rem;border-radius:999px;background:var(--accent);color:#fff;font-weight:600}.menu-modal{position:fixed;inset:0;background:#0a0a0dd9;display:flex;align-items:flex-end;justify-content:center;z-index:90;padding:0 1rem 1rem}.menu-panel{background:var(--bg-1);border:1px solid var(--line);border-radius:14px;padding:1rem;width:100%;max-width:480px;margin-bottom:env(safe-area-inset-bottom)}.menu-panel h3{margin:0 0 1rem;font-size:1rem;color:var(--text-dim);font-weight:500}.menu-item{width:100%;text-align:left;padding:.85rem .75rem;color:var(--text);border-radius:8px;font-size:.95rem;display:flex;justify-content:space-between;align-items:center}.menu-item:hover{background:var(--bg-2)}.menu-item .meta{color:var(--text-muted);font-size:.82rem}.menu-item.danger{color:var(--accent-2)}.tabs{position:fixed;bottom:0;left:0;right:0;background:var(--bg-1);border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;padding:.4rem 0 calc(.4rem + env(safe-area-inset-bottom));z-index:50}.tab-btn{padding:.65rem 0;text-align:center;color:var(--text-muted);font-size:.78rem;font-weight:500;border-radius:8px;display:flex;flex-direction:column;align-items:center;gap:.18rem}.tab-btn .ti{font-size:1.15rem;line-height:1}.tab-btn.active{color:var(--accent)}.toast{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 5rem);left:50%;transform:translate(-50%) translateY(100%);background:var(--bg-3);color:var(--text);padding:.7rem 1.2rem;border-radius:999px;font-size:.88rem;border:1px solid var(--line);transition:transform var(--motion-smooth) var(--ease-std),opacity var(--motion-smooth) var(--ease-std);opacity:0;pointer-events:none;z-index:200}.toast.visible{transform:translate(-50%) translateY(0);opacity:1}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}.cat-section-head{font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600;margin:.5rem 0;color:var(--text-muted)}.cat-section-head.good-head{color:var(--status-go)}.cat-section-head.bad-head{color:var(--accent-warm)}.log-btn{position:relative}.log-count{position:absolute;top:6px;right:8px;font-size:.7rem;color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:600;background:var(--bg-0);padding:1px 6px;border-radius:999px;border:1px solid var(--line)}.log-btn[data-valence=good] .log-count{color:var(--status-go)}.log-btn[data-valence=bad] .log-count{color:var(--accent-warm)}.sparkle-burst{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:700;color:var(--status-go);background:#b6c99a2e;border-radius:12px;animation:sparkle-pop .9s var(--ease-std);pointer-events:none}@keyframes sparkle-pop{0%{opacity:0;transform:scale(.6)}20%{opacity:1;transform:scale(1.08)}to{opacity:0;transform:scale(1.4)}}.log-btn.sparkling{border-color:var(--status-go)}.cal-dot{position:absolute;top:2px;left:3px;font-size:.66rem;line-height:1}
