@font-face{font-family:Fraunces;src:url(./Fraunces-Variable-BR5x10i8.ttf) format("truetype-variations");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Fraunces;src:url(./Fraunces-Italic-Variable-BQlet8Xg.ttf) format("truetype-variations");font-weight:100 900;font-style:italic;font-display:swap}@font-face{font-family:Nunito Sans;src:url(./NunitoSans-Variable-B_ZymHAd.ttf) format("truetype-variations");font-weight:200 1000;font-style:normal;font-display:swap}:root{--inset-top: 0px;--inset-bottom: 0px;--bg: #fbf3e7;--bg-2: #f6ead6;--card: rgba(255, 251, 244, .92);--card-border: #eedcc2;--ink: #46352a;--ink-2: #6f5a48;--ink-3: #9a8471;--accent: #c96f4a;--accent-deep: #b05c39;--honey: #e0a63e;--sage: #7d9c63;--shadow: 0 1px 2px rgba(110, 70, 30, .05), 0 10px 24px -12px rgba(110, 70, 30, .18);--radius: 18px;--serif: "Fraunces", Georgia, "Iowan Old Style", serif;--sans: "Nunito Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--shadow-card: 0 1px 2px rgba(110, 70, 30, .06), 0 4px 10px -4px rgba(110, 70, 30, .08), 0 14px 32px -14px rgba(110, 70, 30, .2);--shadow-card-rest: 0 1px 2px rgba(110, 70, 30, .05), 0 10px 24px -12px rgba(110, 70, 30, .18)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--sans);color:var(--ink);line-height:1.6;background:radial-gradient(1100px 540px at 88% -8%,rgba(224,166,62,.16),transparent 60%),radial-gradient(900px 520px at -12% 22%,rgba(201,111,74,.1),transparent 55%),radial-gradient(760px 520px at 50% 115%,rgba(125,156,99,.1),transparent 60%),var(--bg);min-height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:radial-gradient(rgba(70,53,42,.035) 1px,transparent 1.3px),radial-gradient(120% 90% at 50% 0%,transparent 60%,rgba(110,70,30,.07) 100%);background-size:23px 23px,100% 100%}h1,h2,h3{font-family:var(--serif);font-weight:590;font-variation-settings:"SOFT" 60,"opsz" 40;font-feature-settings:"liga" 1,"dlig" 1,"kern" 1;line-height:1.22;margin:0 0 .5em;letter-spacing:.002em}p{margin:0 0 .85em}body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior-y:contain}button{font-family:inherit}:focus-visible{outline:3px solid rgba(201,111,74,.45);outline-offset:2px;border-radius:8px}.app{max-width:780px;margin:0 auto;padding:var(--inset-top) 18px calc(90px + var(--inset-bottom))}.fade-in{animation:fadeIn .3s ease both}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.tab-view{animation:tabIn .4s cubic-bezier(.22,.75,.3,1) both}@keyframes tabIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.tab-pane.first-load .tab-view>section{animation:cardIn .55s cubic-bezier(.22,.8,.3,1) both}.tool-view>section,.tool-view section.card{animation:cardIn .4s cubic-bezier(.22,.8,.3,1) both}.tab-view>section:nth-of-type(1){animation-delay:.03s}.tab-view>section:nth-of-type(2){animation-delay:.09s}.tab-view>section:nth-of-type(3){animation-delay:.15s}.tab-view>section:nth-of-type(4){animation-delay:.21s}.tab-view>section:nth-of-type(5){animation-delay:.27s}.tab-view>section:nth-of-type(6){animation-delay:.33s}.tab-view>section:nth-of-type(7){animation-delay:.39s}.tab-view>section:nth-of-type(8){animation-delay:.45s}.tab-view>section:nth-of-type(9){animation-delay:.51s}.tab-view>section:nth-of-type(10){animation-delay:.57s}.tab-view>section:nth-of-type(11){animation-delay:.63s}.tab-view>section:nth-of-type(12){animation-delay:.69s}.tab-view>section:nth-of-type(n+13){animation-delay:.75s}.tab-pane{animation:paneFwd .32s cubic-bezier(.22,.8,.3,1) both}.tab-pane.pane-back{animation-name:paneBack}@keyframes paneFwd{0%{opacity:0;transform:translate(26px)}to{opacity:1;transform:none}}@keyframes paneBack{0%{opacity:0;transform:translate(-26px)}to{opacity:1;transform:none}}.card.nl-pre{opacity:0;transform:translateY(16px);animation:none}.card.nl-revealed:not(.nl-skip){animation:cardIn .5s cubic-bezier(.22,.8,.3,1) backwards}.btn,.nav button,.nav-bottom button,.chip{position:relative;overflow:hidden}.btn:after,.nav button:after,.nav-bottom button:after,.chip:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at 50% 50%,rgba(201,111,74,.28),rgba(201,111,74,.08) 55%,transparent 72%);opacity:0;transform:scale(.55);transition:opacity .45s ease,transform .45s cubic-bezier(.22,.8,.3,1)}.btn:active:after,.nav button:active:after,.nav-bottom button:active:after,.chip:active:after{opacity:1;transform:scale(1);transition:none}@keyframes tabPop{0%{transform:scale(.82)}55%{transform:scale(1.14)}to{transform:scale(1)}}@keyframes cardIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.greet{display:inline-block;animation:riseWord .5s cubic-bezier(.22,.8,.3,1) both}.greet-emoji{display:inline-block;animation:sunPop .7s cubic-bezier(.34,1.4,.5,1) .22s both}@keyframes riseWord{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes sunPop{0%{opacity:0;transform:scale(0) rotate(-40deg)}60%{opacity:1;transform:scale(1.25) rotate(6deg)}to{opacity:1;transform:scale(1) rotate(0)}}.checkin .mood:active{transform:scale(.94)}.track .fill{transform-origin:left center;animation:fillIn 1s cubic-bezier(.22,.8,.3,1) .3s both}@keyframes fillIn{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.site-header{position:sticky;top:var(--inset-top);z-index:20;background:#fbf3e7f7;border-bottom:1px solid rgba(238,220,194,.7)}.header-inner{max-width:780px;margin:0 auto;padding:12px 18px 10px;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.brand{font-family:var(--serif);font-size:1.45rem;font-weight:700;color:var(--accent-deep);display:flex;align-items:center;gap:8px}.brand .brand-mark{display:inline-flex;align-self:center;filter:drop-shadow(0 2px 4px rgba(110,70,30,.18));transition:transform .35s cubic-bezier(.3,1.4,.5,1)}.brand:hover .brand-mark{transform:rotate(-6deg) scale(1.06)}.brand small{display:block;font-family:var(--sans);font-size:.72rem;font-weight:500;color:var(--ink-3);letter-spacing:.02em}.nav{display:flex;gap:6px;background:#f0e0ca8c;padding:4px;border-radius:999px;box-shadow:inset 0 1px 3px #6e461e14,inset 0 -1px #ffffff80}.nav button{border:none;background:transparent;color:var(--ink-2);font-size:.88rem;font-weight:700;letter-spacing:.01em;padding:7px 14px;border-radius:999px;cursor:pointer;transition:background .18s ease,color .18s ease,box-shadow .18s ease;white-space:nowrap}.nav button:hover{color:var(--ink)}.nav button.active{background:linear-gradient(180deg,#fffefb,#fdf6ea);color:var(--accent-deep);box-shadow:0 1px 4px #6e461e29,inset 0 1px #fff}.nav-bottom{display:none}.card{background:linear-gradient(180deg,#ffffff8c,#fff0 42%),var(--card);border:1px solid var(--card-border);border-radius:var(--radius);padding:22px 24px;box-shadow:var(--shadow-card);margin-bottom:18px}.card.soft{background:#fffcf5b8;box-shadow:none}.eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px}.hero h1{font-size:2.3rem;font-weight:620;font-variation-settings:"SOFT" 80,"opsz" 60,"WONK" 1;margin-bottom:6px}.hero .sub{color:var(--ink-2);font-size:1.02rem}.daily{position:relative;overflow:hidden;background:radial-gradient(420px 220px at 100% 0%,rgba(224,166,62,.18),transparent 65%),linear-gradient(135deg,#fff9ee,#fdeedc);border-color:#eed9b6}.daily:before{content:"☀";position:absolute;right:14px;top:6px;font-size:3.4rem;opacity:.16}.daily blockquote{margin:0;font-family:var(--serif);font-size:1.22rem;line-height:1.55;color:var(--ink)}.daily .tag{display:inline-block;margin-top:12px;font-size:.78rem;font-weight:600;color:var(--accent-deep);background:#c96f4a1a;padding:3px 12px;border-radius:999px}.celebration{border:1px solid rgba(125,156,99,.5);background:linear-gradient(135deg,#f4f9ee,#eaf2e0)}.celebration .eyebrow{color:var(--sage)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:999px;border:1.5px solid var(--card-border);background:#fffdf8;color:var(--ink-2);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s ease;--tint: var(--accent)}.chip:hover{border-color:color-mix(in srgb,var(--tint) 45%,var(--card-border));transform:translateY(-1px)}.chip.selected{background:color-mix(in srgb,var(--tint) 15%,#fffdf8);border-color:color-mix(in srgb,var(--tint) 55%,var(--card-border));color:var(--ink);box-shadow:0 1px 4px #6e461e1a}.chip .check{display:inline-block;font-size:.8rem;color:var(--tint);animation:popIn .3s cubic-bezier(.34,1.5,.5,1) both}@keyframes popIn{0%{opacity:0;transform:scale(.2)}60%{transform:scale(1.2)}to{opacity:1;transform:scale(1)}}.wind-down{margin-top:18px;border-top:1px dashed #eedcc2;padding-top:14px}.wind-line{margin:0 0 12px;font-family:var(--serif);font-style:italic;font-size:1rem;color:var(--accent-deep)}.wind-label{display:block;font-weight:600;font-size:.9rem;color:var(--ink-2);margin-bottom:8px}.wind-row{display:flex;gap:10px;flex-wrap:wrap}.wind-row .step-input{flex:1;min-width:220px;border:1.5px solid var(--card-border);border-radius:999px;background:#fffdf8;color:var(--ink);font-family:inherit;font-size:.93rem;padding:9px 16px}.wind-row .step-input::placeholder{color:var(--ink-3)}.wind-row .step-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #c96f4a24}.step-card{background:radial-gradient(360px 200px at 0% 100%,rgba(125,156,99,.14),transparent 65%),linear-gradient(135deg,#f4f9ee,#edf3e2);border-color:#7d9c6380}.step-card .step-promise{margin:0 0 8px;font-family:var(--serif);font-size:1.35rem;color:var(--sage)}.habit-card{--tint: var(--accent);position:relative}.habit-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}.habit-icon{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:1.7rem;background:color-mix(in srgb,var(--tint) 14%,white);border:1px solid color-mix(in srgb,var(--tint) 30%,var(--card-border));flex:none}.habit-title{flex:1;min-width:0}.habit-title h3{margin:0 0 2px;font-size:1.25rem}.habit-title .since{font-size:.82rem;color:var(--ink-3)}.streak-row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:10px}.growth-plant{flex:0 0 auto;align-self:center;margin-right:4px}.growth-plant svg{display:block}.nl-sway{transform-origin:60px 84px;animation:nl-sway 5.2s ease-in-out infinite}@keyframes nl-sway{0%,to{transform:rotate(-1.1deg)}50%{transform:rotate(1.4deg)}}.streak-big{font-family:var(--serif);font-size:2.4rem;font-weight:700;line-height:1;color:var(--accent-deep)}.streak-big span{font-size:1rem;font-weight:600;color:var(--ink-2);margin-left:4px}.best-tag{font-size:.8rem;color:var(--ink-3);background:#6e461e12;padding:3px 10px;border-radius:999px}.milestone-track{margin:14px 0 6px}.milestone-track .labels{display:flex;justify-content:space-between;font-size:.82rem;color:var(--ink-3);margin-bottom:6px}.track{height:9px;border-radius:999px;background:#6e461e1a;overflow:hidden}.track .fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--tint),color-mix(in srgb,var(--tint) 55%,var(--honey)));transition:width .6s ease}.affirmation{font-family:var(--serif);font-style:italic;font-size:1.02rem;color:var(--ink-2);border-left:3px solid color-mix(in srgb,var(--tint) 45%,transparent);padding:2px 0 2px 14px;margin:14px 0}.note-box{background:color-mix(in srgb,var(--tint) 7%,#fffdf8);border:1px solid color-mix(in srgb,var(--tint) 22%,var(--card-border));border-radius:14px;padding:12px 16px;margin-bottom:14px;font-size:.92rem;color:var(--ink-2)}.note-box strong{color:var(--ink)}.gentle-list{margin:0 0 14px;padding:0;list-style:none}.gentle-list li{position:relative;padding:5px 0 5px 26px;font-size:.93rem;color:var(--ink-2)}.gentle-list li:before{content:"✧";position:absolute;left:4px;top:6px;color:var(--tint)}.habit-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.text-link{background:none;border:none;color:var(--ink-3);text-decoration:underline;text-underline-offset:3px;font-size:.85rem;cursor:pointer;padding:4px}.text-link:hover{color:var(--accent-deep)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:999px;padding:10px 20px;font-size:.95rem;font-weight:700;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .16s cubic-bezier(.22,.8,.3,1),background .15s ease,box-shadow .2s ease}.btn:active{transform:scale(.955)}.btn-primary{background:linear-gradient(180deg,#d3794f 0%,var(--accent) 45%,var(--accent-deep) 100%);color:#fffaf2;box-shadow:inset 0 1px #ffffff52,0 4px 12px -4px #b05c3999,0 10px 26px -10px #b05c3973;text-shadow:0 1px 1px rgba(122,55,30,.28)}.btn-primary:hover{background:linear-gradient(180deg,#d67a52,#a85533)}.btn-soft{background:#c96f4a1a;color:var(--accent-deep)}.btn-soft:hover{background:#c96f4a2e}.btn-ghost{background:#fffdf8;border:1.5px solid var(--card-border);color:var(--ink-2)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent-deep)}.btn-danger{background:#fbe9e3;color:#b0533a}.btn-danger:hover{background:#f6d9cf}.btn:disabled{opacity:.55;cursor:default;transform:none}.tool-nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}.tool-nav button{border:1.5px solid var(--card-border);background:#fffdf8;color:var(--ink-2);border-radius:999px;padding:8px 15px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s ease}.tool-nav button:hover{border-color:var(--accent);color:var(--accent-deep)}.tool-nav button.active{background:var(--accent);border-color:var(--accent);color:#fffaf2;box-shadow:0 3px 10px -3px #b05c3980}.tool-banner{display:flex;gap:12px;align-items:flex-start;background:linear-gradient(135deg,#fff6e8,#fdeedc);border:1px solid #eed9b6;border-radius:16px;padding:14px 18px;margin-bottom:18px;color:var(--ink-2);font-size:.95rem}.tool-banner .ico{font-size:1.4rem}.breath-choice{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.breath-stage{display:flex;flex-direction:column;align-items:center;padding:8px 0 4px}.breath-circle{width:208px;height:208px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:radial-gradient(circle at 34% 30%,rgba(255,255,255,.85),transparent 55%),radial-gradient(circle at 50% 50%,#fbe9cf,#f4cfa0 78%);border:1px solid #ecd2ab;box-shadow:inset 0 -8px 22px #b46e3224,0 12px 30px -12px #b46e3266;transition:transform 1.35s cubic-bezier(.4,.1,.2,1),box-shadow 1.35s ease;will-change:transform}.breath-label{font-family:var(--serif);font-size:1.15rem;font-weight:600;color:var(--accent-deep)}.breath-seconds{font-size:.95rem;color:var(--ink-2);font-variant-numeric:tabular-nums}.breath-rounds{margin-top:10px;font-size:.85rem;color:var(--ink-3);font-variant-numeric:tabular-nums}.done-box{font-family:var(--serif);font-size:1.1rem;color:var(--sage);background:#7d9c631f;border:1px dashed rgba(125,156,99,.5);border-radius:14px;padding:14px 18px;text-align:center}.journal-search{width:100%;border:1.5px solid var(--card-border);border-radius:999px;background:#fffdf8;color:var(--ink);font-family:inherit;font-size:.92rem;padding:9px 16px;margin:2px 0 14px}.journal-search::placeholder{color:var(--ink-3)}.journal-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #c96f4a24}.journal-month{margin-bottom:18px}.journal-month .month-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 0 8px}.journal-month h4{margin:0;font-family:var(--serif);font-size:1.05rem;font-weight:600;color:var(--accent-deep)}.retro-note{margin:0 0 12px;font-size:.85rem;font-style:italic;color:var(--ink-3);background:#e0a63e1a;border-left:3px solid rgba(224,166,62,.5);border-radius:0 10px 10px 0;padding:8px 12px}.ride-clock{font-family:var(--serif);font-size:3.2rem;font-weight:700;text-align:center;color:var(--accent-deep);line-height:1.1;margin:6px 0 2px;font-variant-numeric:tabular-nums}.ride-line{text-align:center;font-family:var(--serif);font-style:italic;font-size:1.12rem;color:var(--ink-2);min-height:3em;margin:10px 0 16px;animation:fadeIn .5s ease both}.ground-step{display:flex;gap:16px;align-items:flex-start;margin-bottom:14px}.ground-count{font-family:var(--serif);font-size:2.6rem;font-weight:700;color:var(--accent-deep);line-height:1;flex:none;width:64px;text-align:center;background:#e0a63e24;border-radius:14px;padding:12px 0}.ground-progress{display:flex;gap:6px;justify-content:center;margin-bottom:16px}.ground-progress .dot{width:9px;height:9px;border-radius:50%;background:#6e461e26}.ground-progress .dot.on{background:var(--accent)}textarea.journal{width:100%;min-height:150px;resize:vertical;border:1.5px solid var(--card-border);border-radius:14px;background:#fffdf8;color:var(--ink);font-family:inherit;font-size:1rem;line-height:1.6;padding:14px 16px;margin:6px 0 12px}textarea.journal::placeholder{color:var(--ink-3)}textarea.journal:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #c96f4a24}.journal-entry{position:relative;border:1px solid var(--card-border);border-radius:14px;background:#fffdf8;padding:14px 40px 12px 16px;margin-bottom:12px}.journal-entry .when{font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:5px}.journal-entry p{margin:0;white-space:pre-wrap;color:var(--ink);font-size:.95rem}.journal-entry .del{position:absolute;top:8px;right:8px;border:none;background:none;color:var(--ink-3);font-size:1rem;cursor:pointer;padding:6px 8px;border-radius:8px}.journal-entry .del:hover{color:#b0533a;background:#fbe9e3}.empty-note{text-align:center;color:var(--ink-3);padding:18px 8px;font-size:.95rem}.mini-habit{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px dashed rgba(110,70,30,.14)}.mini-habit:last-of-type{border-bottom:none}.mini-habit .mini-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-size:1.25rem;background:color-mix(in srgb,var(--tint) 14%,white);border:1px solid color-mix(in srgb,var(--tint) 28%,var(--card-border));flex:none}.mini-habit .mini-name{flex:1;font-weight:700;color:var(--ink)}.mini-habit .mini-days{font-family:var(--serif);font-weight:700;color:var(--accent-deep);font-size:1.15rem;white-space:nowrap}.mini-habit .mini-meta{font-size:.78rem;color:var(--ink-3)}.confirm-box{border:1.5px dashed rgba(176,83,58,.45);background:#fdf3ec;border-radius:14px;padding:14px 16px;margin:4px 0 8px;font-size:.95rem;color:var(--ink-2)}.confirm-box .btn-row{margin-top:10px}.btn-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.gentle-more{margin:0 0 14px;font-size:.93rem}.gentle-more summary{cursor:pointer;color:var(--ink-2);font-weight:600;font-size:.88rem;-webkit-user-select:none;user-select:none}.gentle-more summary:hover{color:var(--accent-deep)}.gentle-more .gentle-list{margin-top:8px}.mute{color:var(--ink-3);font-size:.85rem}.keepsake-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;overflow:auto;background:#f6ecdc;padding:calc(18px + var(--inset-top)) 18px calc(18px + var(--inset-bottom))}.keepsake{max-width:720px;margin:20px auto 90px;background:#fff;border-radius:16px;padding:36px 42px 30px;color:var(--ink);box-shadow:0 20px 60px -30px #6e461e66}.ks-head{border-bottom:2px solid #f0e0c6;padding-bottom:16px;margin-bottom:22px;text-align:center}.ks-brand{font-family:var(--serif);font-weight:700;color:var(--accent-deep);font-size:1rem;margin-bottom:10px}.ks-head h1{font-size:2.2rem;margin:0 0 4px;color:var(--accent-deep)}.ks-sub{margin:0;color:var(--ink-3);font-size:.88rem}.keepsake h2{font-size:1.15rem;color:var(--accent-deep);margin:22px 0 10px;padding-bottom:6px;border-bottom:1px dashed #eedcc2}.ks-lines{margin:0 0 10px;padding:0;list-style:none}.ks-lines li{position:relative;padding:5px 0 5px 22px;font-size:.95rem;color:var(--ink-2)}.ks-lines li:before{content:"✧";position:absolute;left:2px;top:6px;color:var(--accent)}.ks-close{font-family:var(--serif);font-style:italic;font-size:.95rem;color:var(--accent-deep);margin:6px 0 0}.ks-grid{width:100%;border-collapse:collapse;table-layout:fixed}.ks-grid th{font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);padding:4px 2px;text-align:center}.ks-grid td{border:1px solid #f0e0c6;height:64px;vertical-align:top;text-align:center;padding:4px 2px}.ks-grid .ks-future{background:#faf5ec}.ks-date{display:block;font-size:.78rem;font-weight:700;color:var(--ink-2)}.ks-mood{display:block;font-size:1.05rem;line-height:1.3;color:var(--ink-2)}.ks-mark{display:block;font-size:.7rem;font-weight:700;color:var(--sage)}.ks-legend{margin:8px 0 0;font-size:.75rem;color:var(--ink-3);text-align:center}.ks-entry{border:1px solid #f0e0c6;border-radius:10px;padding:10px 14px;margin-bottom:10px}.ks-when{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px}.ks-entry p{margin:0;white-space:pre-wrap;font-size:.93rem}.ks-foot{margin-top:26px;border-top:1px dashed #eedcc2;padding-top:10px;text-align:center}.ks-foot p{margin:0;font-size:.72rem;color:var(--ink-3)}.keepsake-tools{position:fixed;left:50%;transform:translate(-50%);bottom:calc(14px + var(--inset-bottom));display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:center;background:#fffdf8;border:1px solid var(--card-border);border-radius:999px;padding:10px 16px;box-shadow:var(--shadow);max-width:92vw}@media print{.site-header,.app main,.app .footer{display:none!important}.keepsake-layer{position:static;overflow:visible;background:#fff;padding:0}.keepsake{margin:0 auto;max-width:100%;border-radius:0;box-shadow:none;padding:20px}.keepsake-tools{display:none!important}}.card-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;overflow:auto;background:#46352a66;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:calc(24px + var(--inset-top)) 16px calc(24px + var(--inset-bottom))}.celebrate{max-width:560px;margin:20px auto 40px;background:#fffdf8;border:1px solid var(--card-border);border-radius:22px;padding:24px 26px 26px;box-shadow:0 30px 80px -30px #46281480}.card-preview{text-align:center;margin:6px 0 16px}.card-preview canvas{max-width:100%;height:auto;border-radius:16px;box-shadow:0 10px 30px -14px #6e461e66}@media print{.card-layer{display:none}}.footer{margin-top:30px;text-align:center;color:var(--ink-3);font-size:.83rem}.footer .care{max-width:560px;margin:0 auto 14px;background:#fffbf4b3;border:1px dashed #e2cdaa;border-radius:14px;padding:12px 18px}.reminder-card{background:radial-gradient(360px 200px at 0% 100%,rgba(201,111,74,.08),transparent 60%),linear-gradient(135deg,#fffaf1,#fbf0de);border-style:dashed;border-color:#c96f4a59}.reminder-card h3{margin:0 0 6px;font-size:1.15rem}.reminder-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.reminder-times{display:inline-flex;flex-wrap:wrap;gap:6px;animation:fadeIn .35s ease both}.reminder-times .chip{padding:5px 12px;font-size:.85rem}.checkin{background:radial-gradient(360px 200px at 100% 0%,rgba(224,166,62,.14),transparent 65%),linear-gradient(135deg,#fffaf0,#fdefdc);border-color:#eed9b6}.checkin h2{font-size:1.3rem;margin-bottom:4px}.checkin .mood-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.checkin .mood{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:999px;border:1.5px solid var(--card-border);background:#fffdf8;color:var(--ink-2);font-size:.95rem;font-weight:600;cursor:pointer;transition:all .15s ease}.checkin .mood:hover{border-color:var(--accent);color:var(--accent-deep);transform:translateY(-1px)}.checkin-evening{border-style:dashed;background:linear-gradient(135deg,#fffcf4,#f8efdf)}.checkin-evening .eyebrow{color:var(--ink-3)}.checkin-done{display:flex;gap:14px;align-items:flex-start;margin-top:2px}.checkin-done .big{font-size:2.1rem;line-height:1}.checkin-done h2{margin:0 0 4px}.checkin-done p{margin:0;color:var(--ink-2)}.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-top:12px}.week-cell{background:#fffdf8;border:1px solid var(--card-border);border-radius:12px;padding:8px 2px 7px;display:flex;flex-direction:column;align-items:center;gap:1px;text-align:center}.week-cell.today{border-color:var(--honey);box-shadow:0 0 0 2px #e0a63e29}.week-day{font-size:.6rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.week-date{font-size:.75rem;font-weight:600;color:var(--ink-2)}.week-mood{font-size:1.1rem;line-height:1.4;min-height:1.4em}.week-mood.empty{opacity:.3}.week-kept{font-size:.68rem;font-weight:700;color:var(--sage);min-height:1.1em}.week-kept .miss{color:var(--ink-3);font-weight:600}.strip-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.month-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 10px}.month-now{font-family:var(--serif);font-size:1.05rem;font-weight:700;color:var(--accent-deep)}.month-nav .text-link:disabled{opacity:.4;cursor:default;text-decoration:none}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-top:12px}.month-head{text-align:center;font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding-bottom:2px}.month-cell{background:#fffdf8;border:1px solid var(--card-border);border-radius:10px;min-height:58px;display:flex;flex-direction:column;align-items:center;padding:5px 1px 4px;gap:1px}.month-cell.blank{background:transparent;border-color:transparent;box-shadow:none}.month-cell.future{opacity:.35;background:#fffdf88c}.month-cell.weekend{background:#fdf6ea}.month-cell.today{border-color:var(--honey);box-shadow:0 0 0 2px #e0a63e29}.month-day{font-size:.8rem;font-weight:700;color:var(--ink-2)}.month-cell.today .month-day{color:var(--accent-deep)}.month-cell .week-mood{font-size:.95rem;line-height:1.3;min-height:1.3em}.month-cell .week-kept{font-size:.66rem;min-height:1.1em}.reflection{background:radial-gradient(420px 240px at 0% 0%,rgba(125,156,99,.12),transparent 60%),linear-gradient(135deg,#fdf6ea,#f8e7cd);border-color:#eed9b6}.reflection h3{margin:0 0 8px;font-size:1.3rem}.reflect-list{list-style:none;margin:0 0 12px;padding:0}.reflect-list li{position:relative;padding:6px 0 6px 24px;font-size:.95rem;color:var(--ink-2)}.reflect-list li:before{content:"✧";position:absolute;left:2px;top:7px;color:var(--accent)}.reflection .close{margin:0;font-family:var(--serif);font-style:italic;font-size:.98rem;color:var(--accent-deep)}.shelf-card{background:radial-gradient(360px 200px at 100% 100%,rgba(201,111,74,.08),transparent 60%),linear-gradient(135deg,#fffaf1,#fbf0de)}.shelf-card h3{margin:0 0 2px;font-size:1.2rem}.shelf-row{border-top:1px dashed #eedcc2;padding:12px 0 8px;margin-top:10px}.shelf-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.shelf-head strong{font-family:var(--serif);font-size:1.08rem;color:var(--accent-deep)}.shelf-actions{display:inline-flex;gap:14px;flex-wrap:wrap}.shelf-line{margin:3px 0 0}.shelf-line.journal{font-style:italic;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}@media(max-width:560px){.app{padding:var(--inset-top) 12px calc(118px + var(--inset-bottom))}.header-inner{flex-direction:row;justify-content:center;gap:8px;padding:10px 14px 8px}.nav-top{display:none}.nav-bottom{display:flex;position:fixed;left:8px;right:8px;bottom:calc(4px + var(--inset-bottom));z-index:40;gap:4px;background:#fffbf4f0;border:1px solid rgba(238,220,194,.95);border-radius:24px;padding:6px;box-shadow:0 14px 40px -18px #6e461e73,0 2px 8px #6e461e14;background:#fbf5eaf5}.nav-bottom button{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:none;background:transparent;color:var(--ink-2);border-radius:18px;padding:7px 2px 6px;cursor:pointer;font-size:.64rem;font-weight:600;line-height:1.1;white-space:nowrap;-webkit-tap-highlight-color:transparent;transition:background .2s ease,color .2s ease,box-shadow .2s ease,transform .14s cubic-bezier(.22,.8,.3,1)}.nav-bottom button:active{transform:scale(.94)}.nav-bottom .tab-ico{font-size:1.24rem;line-height:1}.nav-bottom button.active{background:linear-gradient(180deg,#fffefb,#fdf5e7);color:var(--accent-deep);font-weight:700;box-shadow:0 3px 10px #6e461e29,inset 0 1px #fff}.nav-bottom button.active .tab-ico{animation:tabPop .38s cubic-bezier(.22,.8,.3,1)}.hero h1{font-size:1.6rem}.card{padding:18px 16px}.streak-big{font-size:2rem}}.welcome-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;overflow:auto;display:flex;padding:calc(22px + var(--inset-top)) 18px calc(22px + var(--inset-bottom));background:radial-gradient(720px 420px at 50% -6%,rgba(224,166,62,.2),transparent 62%),radial-gradient(560px 420px at -8% 108%,rgba(201,111,74,.12),transparent 58%),radial-gradient(560px 420px at 104% 92%,rgba(125,156,99,.14),transparent 60%),var(--bg)}.welcome{width:min(430px,100%);margin:auto;background:var(--card);border:1px solid var(--card-border);border-radius:24px;padding:34px 28px 26px;box-shadow:0 24px 70px -26px #6e461e73;text-align:center;animation:cardIn .6s cubic-bezier(.22,.8,.3,1) both}.welcome-mark{margin-bottom:14px;animation:leafGrow .9s cubic-bezier(.3,1.2,.4,1) both}.welcome-mark .leaf-logo{animation:leafSway 6.5s ease-in-out 1.2s infinite}@keyframes leafGrow{0%{opacity:0;transform:scale(.4) rotate(-14deg) translateY(10px)}70%{opacity:1;transform:scale(1.08) rotate(3deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes leafSway{0%,to{transform:rotate(-3deg) translateY(0)}50%{transform:rotate(3deg) translateY(-3px)}}.welcome-kicker{margin-bottom:6px}.welcome h1{font-size:2rem;margin-bottom:12px}.welcome-lead{color:var(--ink-2);font-size:.98rem;margin:0 0 18px}.welcome-stops{display:flex;flex-direction:column;gap:9px;text-align:left;margin-bottom:22px}.welcome-stop{display:flex;align-items:flex-start;gap:13px;background:#fffdf8d9;border:1px solid rgba(238,220,194,.9);border-radius:15px;padding:11px 14px;animation:cardIn .5s cubic-bezier(.22,.8,.3,1) both;animation-delay:calc(.35s + var(--stop) * .12s)}.welcome-stop .stop-ico{flex:none;width:36px;height:36px;display:grid;place-items:center;font-size:1.2rem;background:#e0a63e24;border-radius:11px}.welcome-stop strong{display:block;font-size:.95rem;color:var(--ink);margin-bottom:1px}.welcome-stop .stop-text{display:block;font-size:.87rem;line-height:1.45;color:var(--ink-2)}.btn-lg{padding:13px 30px;font-size:1.05rem;border-radius:999px}.welcome-begin{width:100%;animation:cardIn .5s ease .9s both}.welcome-trust{margin:13px 0 0;font-size:.78rem;color:var(--ink-3)}.burst-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;overflow:hidden;pointer-events:none}.burst-card{pointer-events:none;background:var(--card);border:1px solid var(--card-border);border-radius:22px;padding:18px 28px 16px;text-align:center;box-shadow:0 24px 60px -24px #6e461e73,0 0 0 6px #fffdf899;animation:burstIn .65s cubic-bezier(.22,1.15,.36,1) both;max-width:min(86vw,340px)}@keyframes burstIn{0%{opacity:0;transform:scale(.65) translateY(12px)}60%{opacity:1;transform:scale(1.05) translateY(-2px)}to{opacity:1;transform:scale(1) translateY(0)}}.burst-card .eyebrow{margin-bottom:2px;color:var(--sage)}.burst-day{font-size:2.2rem;color:var(--accent-deep);margin:0 0 4px;display:flex;align-items:center;justify-content:center;gap:8px}.burst-habit{font-size:1.4rem;line-height:1}.burst-line{margin:0;font-size:.92rem;color:var(--ink-2)}.burst-leaf{position:absolute;left:50%;top:50%;opacity:0;animation:leafFly var(--dur, 1.7s) ease-out var(--delay, 0ms) both}@keyframes leafFly{0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0)}18%{opacity:1}70%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--tx, 0px)),calc(-50% + var(--ty, -90px))) rotate(var(--rot, 40deg)) scale(1)}}.welcome-demo{margin:0 0 18px;padding:14px 12px 12px;border:1.5px dashed rgba(125,156,99,.5);border-radius:20px;background:radial-gradient(260px 150px at 50% 0%,rgba(125,156,99,.14),transparent 70%),#faf6ecbf}.demo-eyebrow{color:var(--sage)}.demo-circle{width:148px;height:148px;margin:6px auto 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:none;border-radius:50%;cursor:pointer;font-family:inherit;color:var(--accent-deep);background:radial-gradient(circle at 34% 30%,rgba(255,255,255,.9),transparent 55%),radial-gradient(circle at 50% 50%,#fdf1da,#f2c992 82%);box-shadow:inset 0 -6px 16px #b46e321f,0 10px 24px -12px #b46e3266;transition:transform 1.5s cubic-bezier(.45,0,.35,1);will-change:transform}.demo-circle:focus-visible{outline:3px solid rgba(125,156,99,.6);outline-offset:3px}.demo-circle:active{transform:scale(.96)}.demo-circle:disabled{cursor:default}.demo-label{font-family:var(--serif);font-size:1.12rem;font-weight:600;line-height:1.25}.demo-sec{font-size:1rem;color:var(--ink-2);font-variant-numeric:tabular-nums}.demo-hint{font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.demo-note{margin:0;font-size:.85rem;color:var(--ink-2)}html.nl-splash-hold *,html.nl-splash-hold *:before,html.nl-splash-hold *:after{animation:none!important}.card-layer,.keepsake-layer{animation:scrimIn .3s ease both}@keyframes scrimIn{0%{opacity:0}to{opacity:1}}.celebrate,.keepsake{animation:sheetIn .45s cubic-bezier(.22,.8,.3,1) both}.keepsake-tools{animation:fadeIn .45s ease .16s both}@keyframes sheetIn{0%{opacity:0;transform:translateY(16px) scale(.99)}to{opacity:1;transform:none}}.week-strip,.month-grid{animation:gridIn .4s cubic-bezier(.22,.75,.3,1) both}@keyframes gridIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}}.habit-detail{position:fixed;top:0;right:0;bottom:0;left:0;z-index:85;overflow-y:auto;overscroll-behavior:contain;background:radial-gradient(120% 70% at 50% 0%,var(--tint-bg) 0%,transparent 60%),var(--bg);padding:calc(18px + var(--inset-top)) 18px calc(24px + var(--inset-bottom));will-change:opacity}@keyframes detailIn{0%{opacity:0}to{opacity:1}}@keyframes detailSheetIn{0%{opacity:.4;transform:translate(var(--mx, 0px),var(--my, 0px)) scale(var(--ms, 1));border-radius:18px}to{opacity:1;transform:translate(0) scale(1);border-radius:24px}}.habit-detail.enter,.detail-sheet.enter{opacity:0}.habit-detail.open{animation:detailIn var(--nl-morph, .42s) cubic-bezier(.22,.8,.3,1) both}.detail-sheet.open{animation:detailSheetIn var(--nl-morph, .42s) cubic-bezier(.22,.8,.3,1) both}.habit-detail.closing{animation:detailOut var(--nl-morph, .32s) cubic-bezier(.5,0,.75,.4) both}@keyframes detailOut{0%{opacity:1}to{opacity:0}}.detail-sheet.closing{animation:detailSheetOut var(--nl-morph, .32s) cubic-bezier(.5,0,.75,.4) both}@keyframes detailSheetOut{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:.4;transform:translate(var(--mx, 0px),var(--my, 0px)) scale(var(--ms, .96));border-radius:18px}}.detail-close{position:absolute;top:calc(14px + var(--inset-top));right:18px;width:42px;height:42px;border-radius:50%;border:1px solid var(--card-border);background:var(--card);color:var(--ink-2);font-size:1.4rem;line-height:1;box-shadow:var(--shadow);cursor:pointer;z-index:2}.detail-close:active{transform:scale(.92)}.detail-hero{background:var(--card);border:1px solid var(--card-border);border-radius:24px;padding:30px 24px 22px;text-align:center;box-shadow:0 24px 70px -26px #6e461e73;animation:cardIn .55s cubic-bezier(.22,.8,.3,1) both}.detail-streak{font-family:var(--serif);font-size:3.4rem;font-weight:700;color:var(--ink);line-height:1.05;margin:10px 0 6px}.detail-streak span{display:block;font-family:var(--sans);font-size:1.02rem;font-weight:600;color:var(--ink-2);margin-top:4px}.detail-since{margin:0;font-size:.88rem;color:var(--ink-3)}.detail-milestone-note{margin:14px 2px 0;padding:10px 14px;border-radius:12px;background:#e0a63e29;animation:cardIn .5s cubic-bezier(.22,.8,.3,1) .12s both}.detail-section{background:var(--card);border:1px solid var(--card-border);border-radius:20px;padding:18px 18px 16px;margin-top:14px;animation:cardIn .5s cubic-bezier(.22,.6,.3,1) both}.detail-section:nth-of-type(1){animation-delay:.1s}.detail-section:nth-of-type(2){animation-delay:.16s}.detail-section:nth-of-type(3){animation-delay:.22s}.detail-section h4{margin:0 0 10px;font-family:var(--serif);font-size:1.05rem}.detail-ladder{list-style:none;margin:14px 0 0;padding:0}.detail-ladder li{display:grid;grid-template-columns:26px 64px 1fr;gap:8px;align-items:baseline;padding:7px 0;border-bottom:1px dashed rgba(238,220,194,.8);color:var(--ink-3)}.detail-ladder li:last-child{border-bottom:none}.detail-ladder li.reached{color:var(--ink-2)}.detail-ladder .rung{display:inline-flex;width:22px;height:22px;border-radius:50%;align-items:center;justify-content:center;font-size:.78rem;border:1px solid var(--card-border);background:var(--bg-2);align-self:center}.detail-ladder li.reached .rung{background:var(--sage);border-color:var(--sage);color:#fff}.detail-ladder .rung-day{font-weight:700;font-size:.9rem}.detail-ladder .rung-text{font-size:.88rem}.detail-strip{display:flex;gap:6px;flex-wrap:wrap}.strip-day{width:34px;height:34px;border-radius:11px;border:1px solid var(--card-border);background:var(--bg-2);display:inline-flex;align-items:center;justify-content:center;font-size:1rem}.strip-day.kept{background:#7d9c6333;border-color:#7d9c638c}@media(max-width:420px){.detail-strip{gap:4px}.strip-day{width:calc((100% - 6 * 4px) / 7);aspect-ratio:1;height:auto}}@media(prefers-reduced-motion:reduce){.habit-detail,.detail-sheet,.detail-hero,.detail-section,.detail-milestone-note{animation-duration:.01ms!important;animation-delay:0s!important}}button.habit-head{width:100%;text-align:left;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;border-radius:12px;-webkit-tap-highlight-color:transparent}button.habit-head:active .habit-icon{transform:scale(.92)}.habit-icon{transition:transform .15s ease}.habit-open-hint{align-self:center;margin-left:auto;color:var(--ink-3);font-size:1.05rem;transform:rotate(-90deg);transition:transform .2s ease,color .2s ease}button.habit-head:active .habit-open-hint{transform:rotate(-90deg) translate(-2px);color:var(--accent)}.habit-card:active{transform:scale(.995)}.keepsake-layer,.card-layer,.welcome-layer{overscroll-behavior:contain}.pager-viewport{touch-action:pan-y;cursor:grab}.pager-viewport.pager-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.pager-viewport .month-grid{will-change:transform}
