:root{--paper:#eef3ec;--sheet:#fbfdf9;--ink:#15241b;--soft:#4d5e53;--rule:#d3ddd2;--tint:#e3ebe1;--work:#2c6a3a;--hobby:#9a530f;--life:#2a6787;--love:#ae3760;--family:#7b522c;--habit:#4b7018;--writing:#1f2c24;--sun:#e9b53f;--night:0;--sky-top:#b9dbe5;--sky-bot:#eef3ec;--orb:#f6c95c;--cloud:#fff;--hill-far:#bcd3c2;--hill-mid:#93b99e;--hill-near:#6a9b77;--trunk:#5b4330;--leaf-a:#3d7a4c;--leaf-b:#6ea85c;--leaf-far:#8fb69b;--blossom:#e892ad;--firefly:#f4e27a;--star:#dfe7f5;--display:"Fraunces", "Iowan Old Style", Georgia, serif;--serif:"Newsreader", Georgia, "Times New Roman", serif;--mono:"JetBrains Mono", ui-monospace, Menlo, monospace;--hand:"Caveat", "Bradley Hand", cursive;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#0c1511;--sheet:#14211a;--ink:#e2ece4;--soft:#9fb2a5;--rule:#24352b;--tint:#1b2b22;--work:#7cc58a;--hobby:#f0a75a;--life:#7cc0e3;--love:#f08aab;--family:#d6a777;--habit:#b4dd6e;--writing:#e2ece4;--sun:#f1c75e;--night:1;--sky-top:#040812;--sky-bot:#0c1511;--orb:#ece8d4;--cloud:#1a2731;--hill-far:#15291f;--hill-mid:#11231a;--hill-near:#0f1d16;--trunk:#2b2119;--leaf-a:#1c3b29;--leaf-b:#275238;--leaf-far:#19312a;--blossom:#7a3b52;--firefly:#f4e27a;--star:#dfe7f5;color-scheme:dark}}:root[data-theme=dark]{--paper:#0c1511;--sheet:#14211a;--ink:#e2ece4;--soft:#9fb2a5;--rule:#24352b;--tint:#1b2b22;--work:#7cc58a;--hobby:#f0a75a;--life:#7cc0e3;--love:#f08aab;--family:#d6a777;--habit:#b4dd6e;--writing:#e2ece4;--sun:#f1c75e;--night:1;--sky-top:#040812;--sky-bot:#0c1511;--orb:#ece8d4;--cloud:#1a2731;--hill-far:#15291f;--hill-mid:#11231a;--hill-near:#0f1d16;--trunk:#2b2119;--leaf-a:#1c3b29;--leaf-b:#275238;--leaf-far:#19312a;--blossom:#7a3b52;--firefly:#f4e27a;--star:#dfe7f5;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--serif);margin:0;padding-block:0 72px;font-size:17.5px;line-height:1.6}body:before{content:"";height:env(safe-area-inset-top,0px);z-index:10;background:var(--paper);position:fixed;inset:0 0 auto}.gutter{padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px))}.col{flex-direction:column;gap:24px;max-width:840px;margin:0 auto;display:flex}h1,h2,h3,h4{font-family:var(--display);font-variation-settings:"SOFT" 100;text-wrap:balance;margin:0;font-weight:600}p{text-wrap:pretty;max-width:64ch;margin:0}a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}a:focus-visible{outline:2px solid var(--c,var(--work));outline-offset:2px;border-radius:3px}.soft{color:var(--soft)}.label{font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--soft);font-size:.72rem}.skip{position:absolute;top:0;left:-9999px}.skip:focus{left:max(16px, env(safe-area-inset-left,0px));top:calc(env(safe-area-inset-top,0px) + 8px);z-index:20;background:var(--sheet);border-radius:8px;padding:6px 12px}.hero{background:linear-gradient(var(--sky-top), var(--sky-bot) 78%);height:clamp(320px,42vw,410px);position:relative;overflow:hidden}.hero canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.hero-in{max-width:840px;padding-top:calc(env(safe-area-inset-top,0px) + 30px);flex-direction:column;gap:8px;margin:0 auto;display:flex;position:relative}.hero h1{letter-spacing:-.02em;font-size:clamp(2.4rem,8.5vw,4rem);font-weight:650;line-height:.95}.hero h1 em{font-style:italic;font-weight:400}.hero .label{color:var(--ink);opacity:.75}.intro{grid-template-columns:124px minmax(0,1fr);align-items:start;gap:22px;margin-top:-4px;display:grid}.intro p{color:var(--soft);font-size:1.06rem}.portrait{z-index:1;aspect-ratio:1;object-fit:cover;background:var(--tint);width:100%;max-width:100%;height:auto;box-shadow:0 0 0 4px var(--paper), 0 0 0 6px color-mix(in srgb, var(--work) 45%, var(--paper)), 0 0 0 10px var(--paper), 0 0 0 11px color-mix(in srgb, var(--family) 30%, var(--paper));border-radius:50%;margin-top:-62px;display:block;position:relative}@media (width<=520px){.intro{grid-template-columns:84px minmax(0,1fr);gap:16px}.portrait{margin-top:-44px}}nav.tabs{top:env(safe-area-inset-top,0px);z-index:5;background:var(--paper);border-bottom:1px solid var(--rule);padding:10px 0;position:sticky}html:not([data-room]) nav.tabs{display:none}.tabrow{scrollbar-width:none;gap:6px;margin:-3px;padding:3px;display:flex;overflow-x:auto}.tabrow::-webkit-scrollbar{display:none}.tabrow.more-right{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 40px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 40px),#0000)}.tabrow.more-left{-webkit-mask-image:linear-gradient(270deg,#000 calc(100% - 40px),#0000);mask-image:linear-gradient(270deg,#000 calc(100% - 40px),#0000)}.tabrow.more-left.more-right{-webkit-mask-image:linear-gradient(90deg,#0000,#000 40px calc(100% - 40px),#0000);mask-image:linear-gradient(90deg,#0000,#000 40px calc(100% - 40px),#0000)}.tab{font:500 .95rem var(--display);font-variation-settings:"SOFT" 100;color:var(--soft);border:1px solid var(--rule);cursor:pointer;background:0 0;border-radius:999px;flex:none;align-items:center;gap:7px;padding:7px 15px 7px 12px;transition:background-color .2s,color .2s,border-color .2s;display:inline-flex}.tab .lf{background:var(--c);border-radius:0 100%;width:11px;height:11px;transition:transform .35s cubic-bezier(.3,1.6,.5,1)}.tab:hover .lf{transform:rotate(-35deg)scale(1.15)}.tab[aria-selected=true]{color:var(--sheet);background:var(--c);border-color:var(--c)}.tab[aria-selected=true] .lf{background:var(--sheet);transform:rotate(-20deg)}.tab:focus-visible{outline:2px solid var(--c);outline-offset:2px}.booting .tab,.booting .tab .lf{transition:none}main{flex-direction:column;gap:48px;display:flex}.room{flex-direction:column;gap:18px;display:flex;position:relative}html[data-room] .room{display:none}html[data-room=work] #room-work,html[data-room=hobby] #room-hobby,html[data-room=personal] #room-personal,html[data-room=relationship] #room-relationship,html[data-room=family] #room-family,html[data-room=habits] #room-habits,html[data-room=articles] #room-articles{display:flex}.room>*{z-index:1;position:relative}.room-head{flex-direction:column;gap:4px;display:flex}.room-head h2{letter-spacing:-.01em;color:var(--c);font-size:2.1rem}.room-head p{color:var(--soft)}.card{background:var(--sheet);border:1px solid var(--rule);border-radius:12px;min-width:0;padding:16px}.empty{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:24px 16px 22px;display:flex}.empty svg{width:100%;max-width:260px;height:auto}.empty p{color:var(--soft);max-width:40ch}.stats{background:repeating-radial-gradient(circle at 104% -14%, transparent 0 11px, color-mix(in srgb, var(--family) 13%, transparent) 11px 12.5px), var(--sheet);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;display:grid}.stat b{font:650 1.75rem var(--display);font-variation-settings:"SOFT" 100;color:var(--work);font-variant-numeric:tabular-nums;display:block}.stat span{color:var(--soft);font-size:.84rem;line-height:1.35;display:block}.vine{flex-direction:column;padding-left:32px;display:flex;position:relative}.vine:before{content:"";background:linear-gradient(var(--work), color-mix(in srgb, var(--work) 30%, transparent));transform-origin:top;border-radius:3px;width:3px;animation:1.1s cubic-bezier(.5,0,.2,1) both vine;position:absolute;top:10px;bottom:10px;left:9px}.cv-item{border-top:1px solid var(--rule);grid-template-columns:112px 1fr;gap:14px;padding:14px 0;display:grid;position:relative}.cv-item:first-child{border-top:0}.leafmark{background:var(--work);transform-origin:0 100%;width:19px;height:12px;transform:rotate(var(--r,-14deg));animation:.55s cubic-bezier(.3,1.6,.5,1) both leaf-pop,4.5s ease-in-out infinite alternate flutter;animation-delay:calc(var(--i) * .11s + .25s), calc(var(--i) * .3s + 1s);border-radius:0 100%;position:absolute;top:19px;left:-21px}.cv-item:nth-child(2n) .leafmark{--r:12deg;background:color-mix(in srgb, var(--work) 70%, var(--sun))}.cv-date{font:500 .78rem var(--mono);color:var(--work);font-variant-numeric:tabular-nums;white-space:nowrap;padding-top:4px}.cv-item h3{font-size:1.12rem}.cv-item h3 a{text-decoration:none}.cv-item h3 a:hover{text-decoration:underline}.cv-body{flex-direction:column;gap:2px;min-width:0;display:flex}.cv-body p{color:var(--soft);font-size:.95rem}@media (width<=520px){.cv-item{grid-template-columns:1fr;gap:2px}.cv-date{padding-top:0}}.chips{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.chip{font:.7rem var(--mono);background:var(--tint);border-radius:999px;padding:2px 8px}.garden{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;display:grid}.bed{background:var(--sheet);border:1px solid var(--rule);border-radius:16px;flex-direction:column;gap:6px;min-width:0;padding:10px 14px 14px;display:flex}.bed svg.flower{transform-origin:50% 100%;width:64px;height:74px;animation:3.8s ease-in-out infinite alternate sway;animation-delay:calc(var(--i) * -.9s);overflow:visible}.flower .stem{fill:none;stroke:var(--habit);stroke-width:2.4px;stroke-linecap:round}.flower .lvs{fill:var(--habit)}.flower .bloom{transform-box:fill-box;transform-origin:50%;animation:.9s cubic-bezier(.3,1.5,.5,1) both bloom;animation-delay:calc(var(--i) * .12s + .15s)}.flower .petal{fill:var(--p)}.flower .core{fill:var(--sun)}.bed h3{font-size:1.05rem}.bed p{color:var(--soft);font-size:.87rem}.bed .since{font:.7rem var(--mono);color:var(--hobby);margin-top:auto;padding-top:4px}@media (width<=520px){.garden{grid-template-columns:1fr}.bed{grid-template-columns:56px 1fr;align-items:start;gap:4px 12px;padding:12px 14px;display:grid}.bed svg.flower{grid-row:1/span 3;width:56px;height:65px}.bed .since{padding-top:0}}.seedling{transform-box:fill-box;transform-origin:50% 100%;animation:.9s cubic-bezier(.3,1.5,.5,1) .4s both sprout}.room>.fall{pointer-events:none;z-index:0;position:absolute;inset:96px 0 0;overflow:hidden}.fall span{width:calc(15px * var(--s));height:calc(10px * var(--s));background:var(--c);opacity:.35;border-radius:0 100%;animation:linear infinite drop,ease-in-out infinite alternate twirl;position:absolute;top:-20px}.journal{flex-direction:column;gap:14px;display:flex}.entry{background:var(--sheet);border:1px solid var(--rule);border-radius:6px 16px 16px 6px;flex-direction:column;gap:6px;padding:16px 18px;display:flex;position:relative}.entry .when{font:.75rem var(--mono);color:var(--soft);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.entry .mood{font-size:1.1rem;line-height:1}.entry .body p{font-size:1.04rem}.entry .hand{font-family:var(--hand);color:var(--life);font-size:1.45rem;line-height:1.2}.together svg .trunk{fill:none;stroke:var(--family);stroke-width:7px;stroke-linecap:round}.together svg .ground{fill:var(--tint)}.together svg .heart{fill:var(--love);transform-box:fill-box;transform-origin:50% 80%;animation:1s cubic-bezier(.3,1.4,.5,1) .2s both grow-in,3.2s ease-in-out 1.4s infinite pulse}.together svg .dapple{fill:var(--sheet);opacity:.16}.story{flex-direction:column;gap:22px;padding-left:28px;display:flex;position:relative}.story:before{content:"";background:repeating-linear-gradient(var(--love) 0 6px, transparent 6px 12px);width:2px;position:absolute;top:8px;bottom:6px;left:8px}.beat{flex-direction:column;gap:2px;display:flex;position:relative}.beat:before{content:"";background:var(--love);width:13px;height:13px;box-shadow:0 0 0 3px var(--paper);border-radius:0 60% 60%;position:absolute;top:3px;left:-26px;transform:rotate(45deg)}.beat .d{font:.72rem var(--mono);color:var(--soft)}.beat h3{font-size:1.1rem}.beat p{color:var(--soft);font-size:.94rem}.ftree{aspect-ratio:460/580;width:100%;max-width:460px;margin:0 auto;position:relative}.ftree.bare{max-width:260px}.ftree svg{width:100%;height:100%;position:absolute;inset:0}.ftree .canopy{fill:var(--work);transform-box:fill-box;transform-origin:50%;animation:.9s cubic-bezier(.3,1.4,.5,1) both grow-in;animation-delay:calc(var(--i) * 90ms + .5s)}.ftree .bark{fill:var(--family);transform-box:fill-box;transform-origin:50% 100%;animation:.9s cubic-bezier(.4,0,.2,1) both rise-up}.ftree .root{fill:none;stroke:var(--family);stroke-width:5px;stroke-linecap:round;stroke-dasharray:260;animation:1.2s ease-out .3s both draw}.ftree .soil{fill:none;stroke:var(--soft);stroke-width:2px;stroke-dasharray:4 6;opacity:.5}.node{background:var(--sheet);border:1px solid var(--rule);text-align:center;width:40%;max-width:160px;box-shadow:0 6px 18px -12px color-mix(in srgb, var(--ink) 60%, transparent);animation:.5s cubic-bezier(.3,1.4,.5,1) both node-in;animation-delay:calc(var(--i) * .12s + .9s);border-radius:12px;flex-direction:column;gap:1px;padding:8px 8px 9px;display:flex;position:absolute;transform:translate(-50%,-50%)}.node b{font-family:var(--display);font-size:.92rem;line-height:1.2}.node span{color:var(--soft);font-size:.74rem}.node.me{border-color:var(--family);border-width:2px}.habits{flex-direction:column;gap:18px;display:flex}.hrow{flex-direction:column;gap:6px;display:flex}.hhead{flex-direction:column;gap:1px;display:flex}.hhead b{font-family:var(--display);font-weight:600}.hhead>span{font:.75rem var(--mono);color:var(--soft);font-variant-numeric:tabular-nums}.sprouts{border-bottom:3px solid color-mix(in srgb, var(--family) 55%, transparent);border-radius:0 0 2px 2px;grid-template-columns:repeat(30,1fr);gap:2px;height:32px;display:grid}.sprouts i{position:relative}.sprouts i:before{content:"";width:2px;height:var(--h);background:var(--stem);transform-origin:bottom;animation:.55s cubic-bezier(.3,1.4,.5,1) both sprout;animation-delay:var(--d);border-radius:2px;position:absolute;bottom:0;left:calc(50% - 1px)}.sprouts i:after{content:"";left:50%;bottom:calc(var(--h) - 5px);background:var(--stem);transform-origin:0 100%;width:8px;height:6px;transform:scaleX(var(--fx,1));animation:.4s cubic-bezier(.3,1.6,.5,1) both leaf-out;animation-delay:calc(var(--d) + .35s);border-radius:0 100%;position:absolute}.sprouts i:nth-child(2n){--fx:-1}.sprouts .s2{--h:25px;--stem:var(--habit)}.sprouts .s1{--h:11px;--stem:color-mix(in srgb, var(--habit) 55%, var(--paper))}.sprouts .s0:before{background:color-mix(in srgb, var(--family) 70%, var(--paper));border-radius:50%;width:4px;height:4px;left:calc(50% - 2px)}.sprouts .s0:after,.sprouts .sx:before,.sprouts .sx:after{display:none}.notebook{background:var(--sheet);border:1px solid var(--rule);border-radius:12px;padding:4px 16px}.art{border-bottom:1px solid var(--rule);grid-template-columns:46px 1fr auto;align-items:start;gap:4px 14px;padding:16px 0;display:grid}.art:last-child{border-bottom:0}.art svg{grid-row:1/span 3;width:46px;height:52px;transition:transform .4s cubic-bezier(.3,1.6,.5,1)}.art:hover svg{transform:rotate(-12deg)scale(1.05)}.art svg .lf-fill{fill:var(--lc);opacity:.85}.art svg .lf-line{fill:none;stroke:var(--lc);stroke-width:1.6px;stroke-linecap:round}.art svg .lf-vein{fill:none;stroke:var(--sheet);stroke-width:1.1px;stroke-linecap:round;opacity:.7}.art h3{font-family:var(--serif);font-size:1.25rem;font-weight:600;line-height:1.3}.art h3 a{text-decoration:none}.art h3 a:hover{text-decoration:underline}.cv-item h3 a:after,.art h3 a:after{content:"↗";font:500 .8em var(--mono);color:var(--soft);margin-left:.25em;text-decoration:none;display:inline-block}.art .d{font:.74rem var(--mono);color:var(--soft);white-space:nowrap;padding-top:5px}.art .sum{grid-column:2/-1}.art .sum p{color:var(--soft);font-size:.94rem}.art .kind{flex-wrap:wrap;grid-column:2/-1;align-items:center;gap:8px;display:flex}@media (width<=420px){.art{grid-template-columns:34px 1fr}.art svg{width:34px;height:40px}.art .d{grid-area:2/2;padding-top:0}.art .sum{grid-row:3}.art .kind{grid-row:4}}.elsewhere{gap:16px;display:flex}footer{color:var(--soft);border-top:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;gap:6px 16px;padding-top:16px;font-size:.88rem;display:flex}@keyframes vine{0%{transform:scaleY(0)}}@keyframes leaf-pop{0%{transform:rotate(-70deg)scale(0)}}@keyframes flutter{to{transform:rotate(calc(var(--r,-14deg) - 10deg))}}@keyframes sway{0%{transform:rotate(-3deg)}to{transform:rotate(3deg)}}@keyframes bloom{0%{transform:scale(0)rotate(-120deg)}}@keyframes sprout{0%{transform:scaleY(0)}}@keyframes leaf-out{0%{transform:scale(0)}}@keyframes grow-in{0%{opacity:.2;transform:scale(.2)}}@keyframes rise-up{0%{transform:scaleY(0)}}@keyframes draw{0%{stroke-dashoffset:260px}}@keyframes node-in{0%{opacity:.3;transform:translate(-50%,-30%)scale(.85)}}@keyframes pulse{50%{transform:scale(1.035)}}@keyframes drop{0%{top:-6%}to{top:104%}}@keyframes twirl{0%{transform:translate(0)rotate(0)}to{transform:translateX(var(--x)) rotate(320deg)}}@keyframes room-in{0%{opacity:.5;transform:translateY(8px)}}@media (prefers-reduced-motion:no-preference){html[data-room] .room{animation:.35s ease-out room-in}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.fall{display:none}}
