@font-face{font-family:Manrope;src:url('../../fonts/first-words/manrope-hub-0.woff2') format('woff2');font-weight:200 800;font-display:swap}@font-face{font-family:Syne;src:url('../../fonts/syne-latin-wght-normal.woff2') format('woff2');font-weight:400 800;font-display:swap}@font-face{font-family:DM Serif Display;src:url('../../fonts/dm-serif-display-latin-400-italic.woff2');font-weight:400;font-style:italic;font-display:swap}
:root{--paper:#f8f5ef;--ink:#302a38;--muted:#62596b;--purple:#7655c6;--lavender:#ebe3fa;--line:#e4ded9;--font:Manrope,sans-serif;color-scheme:light;font-family:var(--font);color:var(--ink);background:#eee8e3}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button{min-height:44px}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--purple);outline-offset:4px}button:disabled{cursor:default;opacity:.45}[hidden]{display:none!important}.layout{max-width:1240px;min-height:100vh;margin:auto;padding:48px 44px;display:grid;grid-template-columns:1fr 480px;gap:100px;align-items:start}.intro{position:sticky;top:48px;min-height:760px;display:flex;flex-direction:column}.back{font-size:13px;text-decoration:none}.back:hover{text-decoration:underline}.intro-main{margin:80px 0 48px}.eyebrow{display:block;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}h1{font:600 clamp(36px,4vw,54px)/1.07 Syne,sans-serif;letter-spacing:-.04em;margin:24px 0}h1 em{font-family:'DM Serif Display',serif;font-weight:400;color:#654991}.intro-main>p{font-size:16px;line-height:1.8;max-width:350px;color:var(--muted)}ol{list-style:none;counter-reset:step;padding:0;margin:36px 0 0}li{counter-increment:step;position:relative;padding:0 0 20px 34px;font-size:12px;line-height:1.8;color:var(--muted)}li:before{content:'0' counter(step);position:absolute;left:0;top:0;color:var(--purple);font-size:10px;font-weight:700}li b{display:block;color:var(--ink);font-size:13px}.prototype-note{margin-top:auto;border-top:1px solid #d6ceca;padding-top:16px;max-width:360px;font-size:11px;line-height:1.8;color:var(--muted)}.text-button{padding:0;border:0;background:none;text-decoration:underline;text-underline-offset:4px;font-size:12px}.app{background:var(--paper);border:1px solid #fff9;border-radius:32px;box-shadow:0 24px 90px #52416113;overflow:hidden;min-width:0;position:relative}.app-header{padding:24px 28px 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{font-weight:800;font-size:25px;letter-spacing:-1px;text-decoration:none}.wordmark span{margin-left:7px;color:var(--purple);font-size:20px}.edition{font-size:10px;color:var(--muted)}.app-body{padding:28px;min-height:665px}.date-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}h2{font-size:30px;letter-spacing:-1px;margin:7px 0 5px;line-height:1.2}.date-header p{font-size:12px;color:var(--muted);margin:0}.soft-button{border:1px solid var(--line);background:#fff8;padding:8px 15px;border-radius:14px;font-size:12px}.progress-card{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:24px 20px;border:1px solid var(--line);border-radius:22px;background:#fffc}.progress-card h3{font-size:24px;line-height:1.25;letter-spacing:-.8px;margin:9px 0}.progress-card p{font-size:11px;color:var(--muted);margin:0;max-width:170px;line-height:1.5}.ring{--progress:0%;width:94px;height:94px;flex:0 0 94px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--purple) var(--progress),#eee7f8 0);position:relative}.ring:before{content:'';position:absolute;inset:8px;background:#fdfbf8;border-radius:50%}.ring span{z-index:1;color:#6844b4;font-size:20px;font-weight:800}.week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:24px 0}.week button{border:0;background:none;border-radius:13px;padding:10px 0;font-size:13px;min-width:0}.week button span{display:block;font-size:9px;color:var(--muted);margin-bottom:7px}.week button[aria-pressed=true]{background:var(--lavender);color:#613ab2;font-weight:800}.section-label{display:flex;align-items:center;justify-content:space-between}.section-label h3{font-size:14px}.section-label>span{font-size:10px;color:var(--muted)}.habits{display:grid;gap:8px}.habit{width:100%;display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#fffa;text-align:left}.habit[aria-pressed=true]{background:var(--lavender);border-color:#d7c8f3}.check{width:26px;height:26px;border-radius:50%;border:1px solid #cbc0d5;display:grid;place-items:center;flex:none;color:transparent}.habit[aria-pressed=true] .check{background:var(--purple);border-color:var(--purple);color:white}.habit-name{font-size:13px;font-weight:700;overflow-wrap:anywhere}.habit small{display:block;color:var(--muted);font-size:10px;font-weight:400;margin-top:3px}.add-button{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:0;padding:15px 2px;color:var(--muted);font-size:12px}.add-button b{font-size:22px;border-radius:50%;background:var(--purple);width:30px;height:30px;color:white;font-weight:400}.reflection-link{margin-top:12px;padding:14px 0;border:0;border-top:1px solid var(--line);background:none;text-align:left;width:100%;font-size:12px}.reflection-link span{display:block;color:var(--purple);margin-top:6px;font-size:11px}.app-nav{display:grid;grid-template-columns:repeat(3,1fr);padding:12px 20px 18px;border-top:1px solid var(--line);background:var(--paper);position:sticky;bottom:0}.app-nav button{border:0;background:none;border-radius:14px;font-size:10px;color:var(--muted);padding:8px}.app-nav button span{display:block;font-size:21px;line-height:1.2;margin-bottom:5px}.app-nav button[aria-current]{color:#603bac;background:var(--lavender);font-weight:800}.month-heading{display:flex;align-items:center;justify-content:space-between}.month-heading h3{font-size:18px}.month-heading button{border:0;background:none;width:44px;font-size:20px}.weekday,.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.weekday{font-size:10px;text-align:center;color:var(--muted);margin:12px 0}.calendar button{border:0;border-radius:12px;background:none;position:relative;padding:12px 0;font-size:12px;aspect-ratio:1}.calendar button[aria-pressed=true]{background:var(--lavender);color:#603bac;font-weight:800}.calendar button.is-today{box-shadow:inset 0 0 0 1px #b49bdc}.calendar button.has-entry:after{content:'';position:absolute;bottom:5px;left:calc(50% - 2px);width:4px;height:4px;background:var(--purple);border-radius:50%}.calendar-key{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:7px;margin:16px 0 28px}.calendar-key i{width:5px;height:5px;background:var(--purple);border-radius:50%}.day-summary{border:1px solid var(--line);padding:22px;border-radius:20px;background:#fffa}.day-summary h3{font-size:19px;margin:12px 0}.day-summary p{font-size:12px;line-height:1.7;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere}.journal-card{border:1px solid var(--line);border-radius:20px;background:#fff9;padding:22px}.journal-card strong{display:block;font-size:23px;line-height:1.35;letter-spacing:-.6px;margin-top:12px}.journal-card p{font-size:11px;color:var(--muted);line-height:1.6}.journal-card textarea{display:block;resize:vertical;width:100%;min-height:240px;border:0;background:none;padding:18px 0;color:var(--ink);font-size:14px;line-height:1.9;border-radius:4px}.journal-meta{margin-top:12px;display:flex;justify-content:space-between;gap:12px;font-size:9px;color:var(--muted)}.prompts{margin-top:24px}.prompts button{display:flex;justify-content:space-between;width:100%;padding:14px 0;background:none;border:0;border-bottom:1px solid var(--line);font-size:12px}.prompts button span{color:var(--purple)}.warning{font-size:12px;padding:14px 24px;background:#f8e9d1;line-height:1.6}.skip{position:fixed;top:-100px}.skip:focus{top:8px;left:8px;background:white;padding:12px;z-index:10}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}dialog{border:1px solid var(--line);border-radius:24px;background:var(--paper);color:var(--ink);padding:28px;max-width:440px;width:calc(100% - 32px)}dialog::backdrop{background:#241c3a66;backdrop-filter:blur(5px)}dialog h2{font-size:25px;margin:12px 0 24px}dialog p{font-size:13px;line-height:1.8}dialog label{display:block;font-size:12px;margin-bottom:8px}dialog input{width:100%;border:1px solid #bcb0c8;border-radius:12px;padding:14px;background:#fff9}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.dialog-actions button{border:1px solid var(--line);border-radius:12px;background:#fff8;padding:10px 14px;font-size:12px}.dialog-actions .primary{background:var(--purple);color:white;border-color:var(--purple)}#add-error{color:#91364d}
@view-transition{navigation:auto}@media(max-width:1000px){.layout{gap:40px;padding:32px 24px;grid-template-columns:1fr 440px}}@media(max-width:760px){.layout{display:block;padding:0;max-width:500px}.intro{position:static;min-height:0;padding:24px 24px 18px}.intro-main{margin:24px 0 18px}.intro-main h1{font-size:34px;margin:12px 0}.intro-main h1 br{display:none}.intro-main h1 br:after{content:' '}.intro-main>p,.intro-main ol{display:none}.prototype-note{border:0;padding:0;max-width:none;display:flex;gap:16px;align-items:center}.prototype-note p{font-size:10px;margin:0;flex:1}.prototype-note button{font-size:10px;max-width:75px;text-align:left}.app{border-radius:26px 26px 0 0;box-shadow:none}.app-body{padding:24px;min-height:620px}.app-nav{padding-bottom:max(18px,env(safe-area-inset-bottom))}.app-header{padding:20px 24px}.edition{font-size:10px}}@media(max-width:360px){.app-body{padding:18px}.progress-card{padding:18px 14px}.ring{width:80px;height:80px;flex-basis:80px}.progress-card h3{font-size:22px}.calendar button{min-height:38px}.intro-main h1{font-size:30px}}@media(prefers-reduced-motion:reduce){::view-transition-group(*){animation:none}}

/* Keep the skip link out of view until keyboard focus, including restored scroll positions. */
.skip:not(:focus){width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(max-width:760px){.app{padding-bottom:96px}.app-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,500px);z-index:5;box-shadow:0 -8px 25px #302a3808}.intro-main h1{max-width:380px}}

/* Reserve the initial day layout while the saved state and fonts arrive. */
.date-header h2{min-height:36px}
.date-header p{line-height:18px;min-height:18px}
.progress-card h3{min-height:60px}
.progress-card p{line-height:17px;min-height:34px}
.week{min-height:64px}
.week button{height:64px}
.week-placeholder{display:grid;place-items:center;height:64px;font-size:11px;color:var(--muted)}
.habit{min-height:68px}
.habit-placeholder{height:68px}
.placeholder-lines{display:block;width:50%;height:22px;border-top:6px solid #e4dfe7;border-bottom:4px solid #ece7ed;border-radius:3px}
.week button span{font-size:11px}
.habit small,.section-label>span,.edition,.calendar-key,.journal-meta{font-size:11px}
@media(max-width:760px){.prototype-note p,.prototype-note button,.edition{font-size:11px}}
