:root{--backdrop:#332b22;--bezel:#221c15;--bg:#ece3d3;--surface:#f6efe1;--ink:#3d352a;--ink-soft:#7a6f5d;--line:#dccfb7;--accent:#b0684a;--accent2:#7c7a4e;--heart:#c1543f}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{background:var(--surface)}html,body{margin:0;padding:0}body{background:var(--surface);color:var(--ink);justify-content:center;align-items:center;min-height:100dvh;font-family:Newsreader,Georgia,serif;display:flex}::-webkit-scrollbar{width:0;height:0}.app{background:var(--surface);flex-direction:column;width:100%;max-width:430px;min-height:100dvh;display:flex;position:relative;overflow:hidden}@media (width>=480px){html{background:var(--backdrop)}body{background:var(--backdrop);padding:28px}.app{height:min(860px,100dvh - 56px);min-height:0;box-shadow:0 45px 90px -35px #32231299, 0 0 0 10px var(--bezel), 0 0 0 11px #00000040;border-radius:46px}}.screen{background:var(--surface);flex-direction:column;display:flex;position:absolute;inset:0}.screen.scroll{scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;overflow:hidden auto}.screen.enter-fwd{z-index:2;animation:.34s cubic-bezier(.33,0,.2,1) both slideInRight}.screen.exit-fwd{z-index:1;animation:.34s cubic-bezier(.33,0,.2,1) both slideOutLeft}.screen.enter-back{z-index:1;animation:.34s cubic-bezier(.33,0,.2,1) both slideInLeft}.screen.exit-back{z-index:2;animation:.34s cubic-bezier(.33,0,.2,1) both slideOutRight}.screen.enter-fade{z-index:2;animation:.6s both fadeIn}.screen.exit-fade{z-index:1;animation:.6s both fadeOut}.screen.dragging{will-change:transform;animation:none!important}.center{padding:calc(40px + env(safe-area-inset-top)) 34px calc(40px + env(safe-area-inset-bottom));text-align:center;justify-content:center;align-items:center}button{font-family:inherit}.logo{color:var(--ink);letter-spacing:.08em;justify-content:center;align-items:center;font-family:Caveat,cursive;font-size:92px;font-weight:700;line-height:1;display:inline-flex}.logo .lg-inner{align-items:center;display:inline-flex}.logo .lg-inner .heart{color:var(--heart);justify-content:center;align-items:center;margin:0 -.06em 0 .14em;font-family:Georgia,serif;font-size:1.12em;line-height:1;display:inline-flex}.logo.morph .lg-inner{animation:.55s forwards fadeOut}.logo.morph.morphed .lg-inner{letter-spacing:normal;animation:.6s forwards fadeIn,1s cubic-bezier(.34,1.4,.5,1) forwards logoRise}.logo.morph.morphed .lg-inner .heart{animation:.75s cubic-bezier(.34,1.7,.5,1) backwards heartPop,.7s .75s 2 heartBeat,1.5s .75s heartGlow}.tagline{color:var(--accent);margin:10px 0 0;font-family:Caveat,cursive;font-size:24px}.entry-form{width:100%;max-width:300px;margin:48px auto 0}.pw-row{background:var(--surface);border:1.5px solid var(--line);border-radius:18px;align-items:center;gap:10px;padding:6px 6px 6px 18px;display:flex}.pw-row.shake{animation:.45s shakex}.pw-row input{min-width:0;color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-family:Newsreader,serif;font-size:17px}.pw-go{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:13px;flex:none;justify-content:center;align-items:center;width:46px;height:46px;font-size:22px;display:flex}.pw-error{color:var(--heart);margin:12px 2px 0;font-size:14px}.pw-hint{color:var(--ink-soft);letter-spacing:.02em;margin:16px 2px 0;font-size:13px}.reveal{animation:.7s both revealUp}.who{justify-content:center;padding:40px 30px 60px}.eyebrow{color:var(--accent);margin:0;font-family:Caveat,cursive;font-size:24px}.who h1{color:var(--ink);margin:2px 0 28px;font-family:Caveat,cursive;font-size:46px}.who-list{flex-direction:column;gap:16px;display:flex}.who-card{all:unset;cursor:pointer;background:var(--surface);border:1.5px solid var(--line);border-radius:22px;align-items:center;gap:18px;padding:20px 22px;display:flex}.who-card:active{transform:scale(.99)}.avatar{color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:58px;height:58px;font-family:Caveat,cursive;font-size:34px;display:flex}.avatar.niels{background:var(--accent)}.avatar.sylvia{background:var(--accent2)}.who-name{color:var(--ink);font-family:Caveat,cursive;font-size:30px;display:block}.who-sub{color:var(--ink-soft);font-size:14px}.who-note{color:var(--ink-soft);margin:26px 2px 0;font-size:13px}.head{padding:calc(20px + env(safe-area-inset-top)) 24px 6px;flex:none}.head .greeting{all:unset;cursor:pointer;color:var(--accent);font-family:Caveat,cursive;font-size:25px}.head h1{color:var(--ink);margin:0;font-family:Caveat,cursive;font-size:46px}.cat-list{padding:10px 20px calc(120px + env(safe-area-inset-bottom));flex:1}.cat-card{all:unset;cursor:pointer;width:100%;margin-bottom:14px;display:block}.cat-card:active{transform:scale(.995)}.cat-inner{background:var(--tint-soft);border:1px solid var(--tint-line);border-radius:24px;flex-direction:column;justify-content:flex-end;min-height:112px;padding:22px 22px 20px;display:flex;position:relative;overflow:hidden}.cat-blob{border-radius:var(--blob);width:134px;height:120px;transform:var(--blob-t);background:var(--tint);opacity:.92;position:absolute;top:-28px;right:-26px}.cat-symbol{color:#fff7ec;opacity:.92;z-index:1;pointer-events:none;width:40px;height:40px;position:absolute;top:16px;right:18px;transform:rotate(-4deg)}.cat-symbol svg{width:100%;height:100%;display:block}.cat-name{color:var(--ink);margin:0;font-family:Caveat,cursive;font-size:32px;position:relative}.cat-open{color:var(--ink-soft);margin:3px 0 0;font-size:14px;position:relative}.add-cat-btn{all:unset;box-sizing:border-box;cursor:pointer;border:1.5px dashed var(--line);width:100%;color:var(--accent);border-radius:20px;justify-content:center;align-items:center;gap:8px;margin-top:16px;padding:16px;font-family:Caveat,cursive;font-size:23px;display:flex}.arch-link{all:unset;cursor:pointer;text-align:center;width:100%;color:var(--ink-soft);margin-top:20px;font-family:Caveat,cursive;font-size:21px;display:block}.arch-link:active{color:var(--accent)}.arch-list{padding:10px 20px calc(40px + env(safe-area-inset-bottom));flex:1}.arch-row{background:var(--bg);border:1px solid var(--line);border-radius:16px;align-items:center;gap:14px;margin-bottom:10px;padding:14px 16px;display:flex}.arch-swatch{opacity:.55;border-radius:13px;flex:none;width:42px;height:42px}.arch-body{flex:1;min-width:0}.arch-name{color:var(--ink);font-size:17px;font-weight:500}.arch-meta{color:var(--ink-soft);font-size:13px}.arch-restore{all:unset;cursor:pointer;color:var(--accent);flex:none;padding:6px 8px;font-family:Caveat,cursive;font-size:21px}.arch-restore:active{transform:scale(.96)}.arch-note{color:var(--ink-soft);margin:18px 2px 0;font-size:13px;line-height:1.5}.fab{bottom:calc(20px + env(safe-area-inset-bottom));background:var(--accent);color:#fff;cursor:pointer;z-index:5;border:none;border-radius:50%;justify-content:center;align-items:center;width:62px;height:62px;font-size:32px;display:flex;position:absolute;right:22px;box-shadow:0 12px 26px -8px #3c1e0a99}.fab:active{transform:scale(.95)}.detail-top{padding:calc(16px + env(safe-area-inset-top)) 20px 6px;flex:none;justify-content:space-between;align-items:center;display:flex}.icon-back{all:unset;cursor:pointer;color:var(--ink);padding:4px 8px;font-size:24px}.link-muted{all:unset;cursor:pointer;color:var(--ink-soft);font-size:14px}.detail-hero{flex:none;padding:4px 24px 8px}.detail-hero .cat-inner{min-height:96px}.detail-hero .cat-name{font-size:38px}.detail-hero .cat-symbol{width:54px;height:54px;top:20px;right:22px}.detail-body{padding:8px 24px calc(120px + env(safe-area-inset-bottom));flex:1}.section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:14px 2px 10px;font-size:13px}.section-label.done-label{margin-top:24px}.item{background:var(--bg);border:1px solid var(--line);border-radius:16px;align-items:flex-start;gap:14px;margin-bottom:10px;padding:14px 16px;display:flex}.item.done{background:0 0}.check{border:2px solid var(--accent);cursor:pointer;background:0 0;border-radius:50%;flex:none;width:26px;height:26px;margin-top:2px;padding:0}.check:active{transform:scale(.9)}.check-done{background:var(--accent2);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:26px;height:26px;margin-top:2px;font-size:15px;display:flex}.item-body{flex:1;min-width:0}.item-title{color:var(--ink);margin:0;font-size:17px;line-height:1.25}.item-title.struck{color:var(--ink-soft);text-decoration:line-through;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line)}.item-note{color:var(--ink-soft);margin:3px 0 0;font-size:14px;font-style:italic}.item-meta{color:var(--ink-soft);margin:5px 0 0;font-size:12px}.empty{color:var(--ink-soft);padding:6px 2px 10px;font-family:Caveat,cursive;font-size:22px}.form-top{padding:calc(16px + env(safe-area-inset-top)) 20px 6px;flex:none;align-items:center;gap:12px;display:flex}.form-top h1{color:var(--ink);margin:0;font-family:Caveat,cursive;font-size:34px}.form{padding:12px 24px calc(40px + env(safe-area-inset-bottom))}.form label{color:var(--ink-soft);margin:14px 2px 7px;font-size:14px;display:block}.form label.spaced{margin-top:18px}.field{border:1.5px solid var(--line);background:var(--bg);width:100%;color:var(--ink);border-radius:14px;outline:none;padding:14px;font-family:Newsreader,serif;font-size:16px}select.field{appearance:none}textarea.field{resize:none}.field:focus{border-color:var(--accent)}.submit{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:16px;width:100%;margin-top:22px;padding:16px;font-family:Caveat,cursive;font-size:24px}.submit:active{transform:scale(.99)}.form-foot{text-align:center;color:var(--ink-soft);margin:14px 0 0;font-size:13px}.newcat-preview{align-items:center;gap:14px;margin:10px 0 8px;display:flex}.newcat-swatch{background:var(--tint);border-radius:15px;flex:none;width:52px;height:52px}.newcat-preview p{color:var(--ink-soft);margin:0;font-size:14px}.symbol-picker{grid-template-columns:repeat(6,1fr);gap:10px;margin-top:8px;display:grid}.symbol-choice{all:unset;cursor:pointer;aspect-ratio:1;border:1.5px solid var(--line);color:var(--ink-soft);border-radius:14px;justify-content:center;align-items:center;transition:transform 80ms;display:flex}.symbol-choice svg{width:24px;height:24px}.symbol-choice:active{transform:scale(.94)}.symbol-choice.selected{border-color:var(--accent);color:var(--accent);background:var(--accent-soft,#b0684a1a)}@keyframes shakex{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(3px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}@keyframes softIn{0%{opacity:0}to{opacity:1}}@keyframes revealUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes fadeOut{to{opacity:0}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideOutLeft{0%{transform:translate(0)}to{transform:translate(-30%)}}@keyframes slideInLeft{0%{transform:translate(-30%)}to{transform:translate(0)}}@keyframes slideOutRight{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes heartPop{0%{transform:scale(0)}55%{transform:scale(1.32)}75%{transform:scale(.9)}to{transform:scale(1)}}@keyframes heartBeat{0%,to{transform:scale(1)}28%{transform:scale(1.18)}46%{transform:scale(1)}}@keyframes heartGlow{0%,to{text-shadow:none}40%{text-shadow:0 0 22px #c1543f73}}@keyframes logoRise{0%{transform:scale(.9)}60%{transform:scale(1.05)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.screen,.reveal,.pw-row.shake,.screen.enter-fwd,.screen.exit-fwd,.screen.enter-back,.screen.exit-back,.screen.enter-fade,.screen.exit-fade{animation-duration:.01ms!important}.logo.morph .lg-inner,.logo.morph.morphed .lg-inner,.logo.morph.morphed .lg-inner .heart{opacity:1;animation:none!important}}
