/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.static{position:static}.start{inset-inline-start:var(--spacing)}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.hidden{display:none}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.rounded{border-radius:.25rem}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}:root{--paper:#f8f4ec;--paper-deep:#eee7da;--ink:#273029;--muted:#777b70;--sage:#849477;--sage-dark:#66765d;--line:#353f361f;--white:#ffffffc7;--serif:"Songti SC", "STSong", "Noto Serif SC", Georgia, serif;--sans:-apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}html{background:#d8d1c5}body{color:var(--ink);font-family:var(--sans);background:#d8d1c5;margin:0}button,input,textarea{font:inherit}button{color:inherit}button,label{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #768b695c}.stage{background:radial-gradient(circle at 18% 12%,#ffffffc7,#0000 28%),radial-gradient(circle at 78% 82%,#81947438,#0000 30%),#ded8cd;justify-content:center;min-height:100svh;display:flex}.app-shell{background:radial-gradient(circle at 90% 4%, #a4b39429, transparent 22%), linear-gradient(180deg, #fbf8f2 0%, var(--paper) 68%, #f4efe6 100%);width:min(100%,460px);min-height:100svh;padding-bottom:calc(94px + env(safe-area-inset-bottom));position:relative;overflow-x:hidden}.topbar{min-height:102px;padding:calc(24px + env(safe-area-inset-top)) 24px 16px;justify-content:space-between;align-items:center;display:flex}.brand-lockup{align-items:center;gap:12px;min-width:0;display:flex}.brand-seal{background:#f1ecdc url(/favicon.svg) 50%/contain no-repeat;border-radius:14px;flex:none;width:48px;height:48px;box-shadow:0 5px 14px #5b6f5329}.app-icon{flex:none;display:block}.brand-copy{flex-direction:column;min-width:0;display:flex}.brand-copy>span{align-items:baseline;gap:9px;display:flex}.brand-copy h1{font:700 31px/1 var(--serif);letter-spacing:.09em;margin:0}.brand-copy i{color:#90938a;letter-spacing:.22em;font-size:8px;font-style:normal}.brand-copy p{color:var(--sage-dark);font:500 10px var(--serif);letter-spacing:.16em;margin:7px 0 0}.invite-button{height:42px;color:var(--sage-dark);background:#ffffffad;border:1px solid #6b7c632e;border-radius:999px;align-items:center;gap:5px;padding:0 13px 0 11px;display:flex;box-shadow:0 8px 26px #474b4114}.invite-button .app-icon{width:17px;height:17px}.invite-button small{font-size:11px;font-weight:600}.offline-banner{color:#fff;text-align:center;background:#6f765f;border-radius:12px;margin:0 20px 10px;padding:9px 12px;font-size:12px}.page-content{padding:0 20px 26px}.date-row{justify-content:space-between;align-items:center;margin:10px 2px 16px;display:flex}.date-row p{color:var(--muted);margin:0 0 4px;font-size:13px}.date-row strong{font:500 18px var(--serif)}.photo-surface{background:#ece6dc;width:100%;height:100%;display:block;position:relative;overflow:hidden}.photo-surface img{display:block}.hero-memory,.empty-hero{text-align:left;background:#e9e2d6;border:0;border-radius:30px;width:100%;height:min(61svh,520px);min-height:420px;padding:0;position:relative;overflow:hidden;box-shadow:0 22px 50px #423d3326}.hero-photo{width:100%;height:100%}.hero-memory:after{content:"";background:linear-gradient(#0000,#151a16b8);position:absolute;inset:46% 0 0}.age-badge{z-index:2;color:#fff;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#4b5b479e;border:1px solid #ffffff8c;border-radius:999px;padding:8px 12px;font-size:12px;position:absolute;top:16px;right:16px}.hero-caption{z-index:2;color:#fff;flex-direction:column;display:flex;position:absolute;bottom:22px;left:22px;right:22px}.hero-caption small{opacity:.78;margin-bottom:6px;font-size:11px}.hero-caption strong{font:600 26px/1.25 var(--serif)}.hero-caption em{opacity:.78;margin-top:7px;font-size:12px;font-style:normal}.empty-hero{text-align:center;background:radial-gradient(circle at 50% 34%,#fffffff2,#0000 33%),linear-gradient(145deg,#e9e2d3,#f7f1e7 58%,#dfe5d8);flex-direction:column;justify-content:center;align-items:center;padding:42px;display:flex}.empty-hero:before,.empty-hero:after{content:"";border:1px solid #74876924;border-radius:50%;position:absolute}.empty-hero:before{width:330px;height:330px;top:30px}.empty-hero:after{width:250px;height:250px;top:70px}.empty-orbit{color:#fff;z-index:1;background:linear-gradient(145deg,#a8b89b,#6f8168);border-radius:34px 50px 40px 46px;place-items:center;width:98px;height:98px;margin-bottom:44px;display:grid;transform:rotate(-8deg);box-shadow:0 18px 45px #647a5b40}.empty-orbit i{font:600 28px var(--serif);font-style:normal;transform:rotate(8deg)}.empty-hero strong{z-index:1;font:600 22px/1.45 var(--serif)}.empty-hero small{z-index:1;color:var(--muted);margin-top:8px;line-height:1.6}.profile-nudge{background:#84947714;border:1px solid #84947733;border-radius:17px;justify-content:space-between;width:100%;margin-top:14px;padding:14px;font-size:12px;display:flex}.profile-nudge b{color:var(--sage-dark)}.section-heading{margin:14px 2px 20px}.section-heading p{color:var(--sage-dark);letter-spacing:.14em;margin:0 0 7px;font-size:12px}.section-heading h2{font:600 26px/1.35 var(--serif);margin:0}.timeline-overview{background:linear-gradient(135deg,#e8ede2d1,#ffffffad);border:1px solid #5e6f5721;border-radius:22px;grid-template-columns:auto 1px auto 1fr;align-items:center;gap:14px;min-height:84px;margin:-2px 0 13px;padding:14px 16px;display:grid}.timeline-overview>span{flex-direction:column;display:flex}.timeline-overview strong{font:600 21px/1 var(--serif)}.timeline-overview small{color:var(--muted);margin-top:5px;font-size:9px}.timeline-overview i{background:#4552411f;width:1px;height:31px}.timeline-overview p{color:var(--sage-dark);font:500 11px/1.55 var(--serif);text-align:right;margin:0}.timeline-modes{background:#ebe6dd;border-radius:16px;grid-template-columns:repeat(3,1fr);gap:3px;margin-bottom:12px;padding:4px;display:grid}.timeline-modes button{height:38px;color:var(--muted);background:0 0;border:0;border-radius:12px;font-size:.875rem}.timeline-modes button.active{color:var(--sage-dark);background:#fffffff5;font-weight:600;box-shadow:0 4px 13px #3f443a17}.search-box{border:1px solid var(--line);background:#fff9;border-radius:18px;align-items:center;gap:10px;height:52px;margin-bottom:17px;padding:0 16px;display:flex}.search-box .app-icon{width:20px;height:20px;color:var(--sage-dark)}.search-box input{color:var(--ink);background:0 0;border:0;outline:0;flex:1}.timeline-list{flex-direction:column;gap:13px;display:flex}.timeline-card{text-align:left;background:#ffffffa3;border:1px solid #3d453c1a;border-radius:22px;gap:14px;padding:9px;display:flex;box-shadow:0 10px 28px #4440370f}.timeline-photo{border-radius:16px;flex:none;width:104px;height:118px}.timeline-copy{flex-direction:column;min-width:0;padding:8px 8px 8px 0;display:flex}.timeline-copy small{color:var(--sage-dark);font-size:10px}.timeline-copy strong{font:600 17px/1.4 var(--serif);margin-top:9px}.timeline-copy em{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:6px;font-size:11px;font-style:normal;overflow:hidden}.year-chapters,.month-chapters,.day-chapters{flex-direction:column;gap:18px;display:flex}.year-chapter{background:#ffffffa3;border:1px solid #3d453c1a;border-radius:26px;padding:16px;box-shadow:0 12px 32px #44403712}.year-heading,.month-heading{justify-content:space-between;align-items:center;margin-bottom:13px;display:flex}.year-heading span,.month-heading span{flex-direction:column;display:flex}.year-heading strong{font:600 33px/1 var(--serif);letter-spacing:.04em}.year-heading small,.month-heading small{color:var(--muted);margin-top:6px;font-size:9px}.year-heading em,.month-heading em{color:var(--sage-dark);background:#8494771a;border-radius:999px;padding:7px 9px;font-size:9px;font-style:normal}.year-mosaic{border-radius:18px;grid-template-columns:repeat(3,1fr);grid-auto-rows:94px;gap:6px;display:grid;overflow:hidden}.year-mosaic button{background:#e8e3d9;border:0;min-width:0;padding:0;overflow:hidden}.year-mosaic button:first-child{grid-area:span 2/span 2}.year-photo{width:100%;height:100%}.month-chapter{padding-top:3px}.month-heading{padding:0 3px}.month-heading strong{font:600 19px/1.2 var(--serif)}.month-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.month-memory{text-align:left;background:#ffffffad;border:1px solid #3d453c17;border-radius:20px;min-width:0;padding:7px;overflow:hidden;box-shadow:0 8px 24px #4440370d}.month-photo{aspect-ratio:4/5;border-radius:14px;width:100%;height:auto}.month-memory>.month-copy{flex-direction:column;min-width:0;padding:9px 4px 5px;display:flex}.month-memory small{color:var(--sage-dark);font-size:9px;line-height:1.45}.month-memory strong{font:600 13px/1.4 var(--serif);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;overflow:hidden}.day-chapter{padding-left:14px;position:relative}.day-chapter:before{content:"";background:#697a602e;width:1px;position:absolute;top:8px;bottom:-18px;left:2px}.day-chapter:last-child:before{bottom:16px}.day-heading{justify-content:space-between;align-items:baseline;margin:0 1px 10px 3px;display:flex;position:relative}.day-heading:before{content:"";border:3px solid var(--paper);background:var(--sage);border-radius:50%;width:7px;height:7px;position:absolute;top:6px;left:-18px;box-shadow:0 0 0 1px #697a6033}.day-heading strong{font:600 15px var(--serif)}.day-heading small{color:var(--muted);font-size:9px}.empty-list{text-align:center;border:1px dashed #6f816447;border-radius:24px;flex-direction:column;justify-content:center;align-items:center;min-height:300px;padding:32px;display:flex}.empty-list>span{color:var(--sage);font-size:30px}.empty-list strong{font:600 18px var(--serif);margin-top:16px}.empty-list small{color:var(--muted);margin-top:8px;line-height:1.5}.settings-view{padding-bottom:10px}.settings-card{border:1px solid var(--line);background:#ffffff9e;border-radius:24px;margin-bottom:14px;padding:18px;box-shadow:0 10px 30px #4542390d}.profile-form label{border-bottom:1px solid var(--line);color:var(--muted);grid-template-columns:86px 1fr;align-items:center;gap:8px;padding:12px 0;font-size:13px;display:grid}.profile-form input{width:100%;color:var(--ink);text-align:right;background:0 0;border:0;outline:0}.cadence-field{padding:15px 0 18px}.cadence-field>span{color:var(--muted);font-size:13px}.segmented{background:#ebe6dd;border-radius:13px;grid-template-columns:repeat(3,1fr);margin-top:10px;padding:3px;display:grid}.segmented button{background:0 0;border:0;border-radius:10px;padding:8px;font-size:12px}.segmented button.active{color:var(--sage-dark);background:#fff;box-shadow:0 3px 10px #3f443a17}.primary-button,.outline-button,.danger-button{border-radius:16px;width:100%;height:50px;font-weight:600}.primary-button{color:#fff;background:linear-gradient(135deg,#899a7c,#6b7c63);border:0}.primary-button.soft{color:#586a51;background:#e4eadf}.primary-button:disabled{opacity:.58;cursor:not-allowed;box-shadow:none}.outline-button{border:1px solid var(--line);color:var(--muted);background:0 0;margin-top:9px}.text-button{width:100%;color:var(--sage-dark);background:0 0;border:0;padding:14px 0 0;font-size:12px}.card-title{align-items:center;gap:13px;margin-bottom:16px;display:flex}.card-title>span{width:40px;height:40px;color:var(--sage-dark);background:#edf0e9;border-radius:14px;place-items:center;font-size:19px;display:grid}.card-title div{flex-direction:column;gap:4px;display:flex}.card-title strong{font-size:14px}.card-title small{color:var(--muted);font-size:10px;line-height:1.4}.install-card p{color:var(--muted);text-align:center;margin:12px 0 0;font-size:10px}.book-note{color:var(--muted);margin:10px 3px 0;font-size:9px;line-height:1.65}.privacy-note{color:var(--muted);gap:12px;padding:8px 5px 20px;display:flex}.privacy-note span{color:var(--sage)}.privacy-note p{margin:0;font-size:10px;line-height:1.6}.privacy-note strong{color:var(--ink);margin-bottom:3px;display:block}.bottom-nav{z-index:20;width:min(100%,460px);height:calc(76px + env(safe-area-inset-bottom));padding:7px 18px env(safe-area-inset-bottom);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:#faf7f1db;border-top:1px solid #41483f14;grid-template-columns:1fr 1fr 86px 1fr 1fr;align-items:center;display:grid;position:fixed;bottom:0}.bottom-nav button:not(.add-button){color:#8b8e86;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;height:56px;display:flex}.bottom-nav button.active{color:var(--sage-dark)}.bottom-nav button:not(.add-button) .app-icon{width:22px;height:22px}.bottom-nav button small{font-size:9px}.add-button{border:5px solid var(--paper);color:#fff;background:linear-gradient(145deg,#91a384,#6e8067);border-radius:50%;justify-self:center;width:60px;height:60px;margin-top:-34px;font-size:32px;font-weight:200;box-shadow:0 12px 24px #6074584d}.sheet{width:min(100%,460px);max-height:94svh;padding-bottom:calc(22px + env(safe-area-inset-bottom));background:#faf7f0;border-radius:30px 30px 0 0;animation:.3s cubic-bezier(.2,.8,.2,1) sheet-up;overflow:auto;box-shadow:0 -24px 70px #1e231d40}@keyframes sheet-up{0%{opacity:0;transform:translateY(35px)}}.sheet-header{grid-template-columns:44px 1fr 44px;align-items:center;height:74px;padding:8px 16px;display:grid}.sheet-header button,.detail-close{border:1px solid var(--line);background:#ffffffb3;border-radius:50%;width:38px;height:38px;font-size:21px}.sheet-header button:disabled{opacity:.4}.sheet-header div{flex-direction:column;align-items:center;display:flex}.sheet-header small{color:var(--sage-dark);font-size:9px}.sheet-header strong{font:600 18px var(--serif)}.book-photo-grid{flex:1;grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:7px;min-height:260px;padding:0 16px 10px;display:grid;overflow-y:auto}.book-photo-grid>button{aspect-ratio:.78;background:#e8e4dc;border:3px solid #0000;border-radius:15px;min-width:0;padding:0;position:relative;overflow:hidden}.book-photo-grid>button.selected{border-color:var(--sage-dark);box-shadow:0 6px 14px #42523c29}.book-photo-grid .photo-surface{width:100%;height:100%}.book-photo-grid .book-selection-mark{color:#fff;background:#282d2757;border:1px solid #fffc;border-radius:50%;place-items:center;width:24px;height:24px;font-size:9px;display:grid;position:absolute;top:7px;right:7px}.book-photo-grid .selected .book-selection-mark{background:var(--sage-dark)}.book-photo-grid small{color:#fff;text-align:left;background:linear-gradient(#0000,#141814b3);padding:17px 6px 6px;font-size:7px;position:absolute;inset:auto 0 0}.photo-picker{background:radial-gradient(circle,#fdfbf7,#e8e3d9);border:1px dashed #6a7e6052;border-radius:25px;width:calc(100% - 32px);height:42svh;min-height:330px;max-height:480px;margin:0 16px;overflow:hidden}.photo-picker>span{flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex}.photo-picker .app-icon{width:36px;height:36px;color:var(--sage-dark);margin-bottom:10px}.photo-picker strong{font:600 18px var(--serif)}.photo-picker small{color:var(--muted);margin-top:7px}.composition-stage{-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 50% 45%,#f5f0e7,#ded7cb);border-radius:25px;width:calc(100% - 32px);margin:0 16px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #4b534814}.composition-stage:not(.frame-original){cursor:grab;touch-action:none}.composition-stage:not(.frame-original):active{cursor:grabbing}.composition-stage img{pointer-events:none;display:block}.replace-photo{z-index:3;color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#2a302994;border:1px solid #ffffffb8;border-radius:999px;height:34px;padding:0 12px;font-size:.8125rem;font-weight:600;position:absolute;top:12px;right:12px;box-shadow:0 6px 18px #181c1724}.focus-marker{z-index:2;pointer-events:none;border:1px solid #ffffffe6;border-radius:50%;width:32px;height:32px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #333c3042,0 3px 12px #1e221c38}.focus-marker:before,.focus-marker:after{content:"";background:#fffffff0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.focus-marker:before{width:12px;height:1px}.focus-marker:after{width:1px;height:12px}.photo-tools{border:1px solid var(--line);background:#ffffffc2;border-radius:22px;margin:12px 16px 0;padding:15px}.frame-strip{background:#ebe6dd;border-radius:13px;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:13px;padding:3px;display:grid}.frame-strip button{min-width:0;color:var(--sage-dark);background:0 0;border:0;border-radius:10px;font-size:.875rem}.frame-strip button.active{color:var(--sage-dark);background:#fff;font-weight:600;box-shadow:0 3px 10px #3f443a17}.composition-tip{color:var(--sage-dark);margin:10px 2px 0;font-size:.875rem;line-height:1.5}.focus-sliders{gap:8px;margin-top:10px;display:grid}.focus-sliders label{color:var(--sage-dark);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;font-size:.875rem;display:grid}.focus-sliders input{width:100%;accent-color:var(--sage-dark)}.filter-strip{grid-template-columns:repeat(4,1fr);gap:7px;padding:13px 0 0;display:grid}.filter-strip button{color:var(--sage-dark);background:0 0;border:0;border-radius:14px;flex-direction:column;align-items:center;gap:4px;padding:5px;font-size:.8125rem;display:flex}.filter-strip button.active{color:var(--sage-dark);background:#e4e9df;font-weight:600}.filter-strip button span{background:linear-gradient(135deg,#d3bda5,#96a387);border-radius:9px;width:38px;height:30px}.story-form{border:1px solid var(--line);background:#fff;border-radius:22px;margin:13px 16px 0;overflow:hidden}.date-input{border-bottom:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;padding:12px 15px;font-size:11px;display:flex}.date-input input{color:var(--ink);background:0 0;border:0}.title-input{width:100%;font:600 17px var(--serif);border:0;outline:0;padding:16px 15px 8px}.story-form textarea{resize:none;width:100%;min-height:90px;color:var(--ink);border:0;outline:0;padding:8px 15px;line-height:1.6}.sheet-save{width:calc(100% - 32px);margin:14px 16px 0;position:static;box-shadow:0 12px 28px #57694f38}.detail-sheet{position:relative}.detail-close{z-index:3;position:absolute;top:18px;right:18px}.detail-photo{width:100%;height:min(58svh,560px)}.detail-photo[data-photo-frame=square],.detail-photo[data-photo-frame=portrait4x5],.detail-photo[data-photo-frame=portrait3x4]{border-radius:22px;width:calc(100% - 32px);height:auto;max-height:none;margin:16px 16px 0}.detail-photo[data-photo-frame=square]{aspect-ratio:1}.detail-photo[data-photo-frame=portrait4x5]{aspect-ratio:4/5}.detail-photo[data-photo-frame=portrait3x4]{aspect-ratio:3/4}.detail-copy{padding:24px 24px 14px}.detail-copy small{color:var(--sage-dark)}.detail-copy h2{font:600 28px/1.35 var(--serif);margin:9px 0}.detail-copy p{color:var(--muted);margin:0;line-height:1.8}.detail-copy span{color:#9b9d94;margin-top:13px;font-size:10px;display:block}.detail-actions{padding:0 24px}.detail-actions .primary-button+.primary-button{margin-top:9px}.danger-button{color:#a46b63;background:0 0;border:0;margin-top:8px;font-size:12px}.toast{z-index:200;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));color:#fff;background:#252c26e6;border-radius:999px;width:max-content;max-width:calc(100% - 40px);padding:11px 17px;font-size:12px;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #0003}.loading-screen{background:var(--paper);width:100%;min-height:100svh;color:var(--sage-dark);flex-direction:column;justify-content:center;align-items:center;display:flex}.sprout-mark{background:var(--sage);color:#fff;width:70px;height:70px;font:600 23px var(--serif);border-radius:28px 34px 25px 32px;place-items:center;display:grid;transform:rotate(-7deg)}.loading-screen p{letter-spacing:.12em;margin-top:18px;font-size:12px}@keyframes shimmer{to{background-position-x:-200%}}@media (width>=700px){.stage{padding:30px 0}.app-shell{border:1px solid #ffffffb3;border-radius:42px;min-height:calc(100svh - 60px);box-shadow:0 28px 80px #34312b33}.bottom-nav{border-radius:0 0 42px 42px;bottom:30px}.sheet{border-radius:30px;max-height:calc(100svh - 48px);margin-bottom:24px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--muted:#586154;--sage-dark:#465c40;--accent-solid:#4e6748;--rule:#d8ded2;--gutter:16px;--tap:44px}.app-shell{overflow-wrap:anywhere;width:min(100%,620px)}.topbar{padding-inline:var(--gutter);gap:10px;min-height:90px}.brand-copy p{font:500 12px/1.4 var(--sans);letter-spacing:.04em}.brand-copy h1{font-size:28px}.invite-button{min-height:var(--tap);flex-shrink:0}.invite-button small,.bottom-nav button small{font-size:12px}.page-content{padding-inline:var(--gutter)}.page-content small,.page-content em,.sheet small,.sheet em{font-size:max(.75rem,12px)}.stage button,.sheet button,.sheet summary{min-height:var(--tap);cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline-offset:2px;outline:3px solid #527744}input:not([type=range]):not([type=checkbox]),textarea,select{min-width:0;font-size:max(1rem,16px)}.primary-button,.outline-button,.danger-button{height:auto;min-height:50px;padding:10px 12px}.primary-button{background:var(--accent-solid)}.bottom-nav{grid-template-columns:repeat(5,minmax(0,1fr));width:min(100%,620px);padding-inline:6px}.bottom-nav button:not(.add-button){color:var(--muted);padding-bottom:5px;position:relative}.bottom-nav button.active{color:var(--sage-dark);font-weight:700}.bottom-nav button[aria-current]:after{content:"";background:currentColor;border-radius:9px;width:14px;height:2px;margin-inline:auto;position:absolute;inset:auto 0 2px}.add-button{background:var(--accent-solid);place-items:center;width:clamp(48px,14vw,60px);height:clamp(48px,14vw,60px);padding:0;display:grid}.today-heading h2{font:600 27px/1.2 var(--serif);margin:2px 0 4px}.today-heading span,.today-summary,.book-note{color:var(--muted);font-size:.875rem;line-height:1.55}.today-summary{border-bottom:1px solid var(--line);margin:16px 0 10px;padding:0 0 13px}.hero-memory{height:auto;min-height:0}.hero-memory:after{display:none}.hero-photo{height:clamp(220px,56vw,490px)}.hero-caption{color:var(--ink);background:#fffaf1;padding:16px 20px;position:static}.hero-caption small,.hero-caption em{color:var(--muted);opacity:1}.hero-caption em{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.empty-hero{height:auto;min-height:300px;padding:30px 20px}.empty-orbit{margin-bottom:24px}.timeline-overview{grid-template-columns:auto 1px auto minmax(0,1fr)}.search-box input,.timeline-card{width:100%}.timeline-photo{width:min(32%,125px)}.day-heading{flex-wrap:wrap;gap:12px}.month-memory small{display:block}.year-heading em,.month-heading em{white-space:nowrap}.profile-form fieldset,.editor-fields{border:0;min-inline-size:0;margin:0;padding:0}.profile-form h3,.book-controls h3{font:600 1.35rem/1.35 var(--serif);margin:0 0 8px}.profile-form label{grid-template-columns:minmax(72px,auto) minmax(0,1fr)}.profile-form input{min-height:var(--tap)}.profile-form p,.backup-panel p,.restore-body p{color:var(--muted);line-height:1.6}.settings-card{min-width:0}.photo-surface,.composition-stage{container-type:size}.photo-window{margin:auto;display:block;position:absolute;inset:0;overflow:hidden}.photo-window[data-cropped=true]{width:min(100cqw, calc(100cqh * var(--photo-ratio)));height:min(100cqh, calc(100cqw / var(--photo-ratio)))}.photo-window img{max-width:none;max-height:none;display:block;position:absolute;inset:0 auto auto 0}.composition-stage{height:auto}.composition-stage.frame-original{max-height:54svh}.sheet.native-sheet{width:min(100%,580px);max-width:100%;color:var(--ink);border:0;margin:0 auto;position:fixed;inset:auto 0 0}.sheet.native-sheet::backdrop{background:#21292085}.sheet.native-sheet.discard-sheet{border-radius:22px;width:min(100% - 32px,360px);max-height:calc(100svh - 32px);margin:auto;inset:0}.discard-body{padding:20px}.discard-body p{margin:0 0 16px}.sheet-header{height:auto;min-height:70px}.sheet-header button,.detail-close{width:var(--tap);height:var(--tap);place-items:center;display:grid}.sheet-header button .app-icon,.detail-close .app-icon{width:19px;height:19px}.sheet-message,.restore-body{color:var(--muted);margin:14px 16px}.restore-body{margin:0;padding:0 20px}.error-message{color:#8d322b!important}.story-field{gap:5px;min-width:0;display:grid}.story-field input,.story-field textarea{min-width:0;max-width:100%}.story-form textarea.title-input{resize:none;overflow-wrap:anywhere;min-height:calc(1.6em + 16px);font:600 17px/1.6 var(--serif);overflow:hidden}.title-meta{color:var(--muted);font:400 .75rem/1.5 var(--sans);flex-wrap:wrap;justify-content:space-between;gap:4px 12px;display:flex}.story-form .story-field{color:var(--muted);padding:12px 15px 6px}.story-form .story-field input,.story-form .story-field textarea{padding:8px 0}.sheet-message.story-field input,.book-range input,.book-range select,.book-range textarea,.range-dates input{width:100%;min-height:var(--tap);border:1px solid var(--rule);color:var(--ink);background:#fffdf8;border-radius:12px;padding:8px 10px}.date-input{flex-wrap:wrap;gap:8px}.date-input input,.focus-sliders input{min-height:var(--tap)}.sheet summary{padding:10px 0;font-weight:600}.sheet summary small{color:var(--muted);margin-left:8px;font-weight:400}.replace-photo{background:#3a4636}.source-details{padding:0 16px}.source-details .detail-photo{margin-top:8px}.checkbox-line{min-height:var(--tap);align-items:center;gap:10px;padding-block:8px;display:flex}.checkbox-line input{width:20px;height:20px;accent-color:var(--accent-solid);flex:none}.book-heading{gap:8px;display:grid}.book-heading span{color:var(--muted);max-width:42rem;line-height:1.6}.book-heading button{justify-self:start}.book-heading-demo{flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.book-heading-demo small{color:var(--sage-dark);flex-basis:100%}.book-workbench{align-items:start;gap:16px;display:grid}.book-controls,.book-preview-pane{min-width:0}.book-controls{gap:12px;display:grid}.book-controls h3,.book-controls p{margin:0}.book-steps{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.book-steps button,.secondary-control{border:1px solid var(--rule);color:var(--sage-dark);background:#fffaf1;border-radius:12px;padding:8px 11px}.book-steps button{font-size:.875rem}.book-steps button[aria-current]{background:#e5eddf;border-color:#8b9e83;font-weight:700}.book-steps b{margin-right:3px}.book-range{color:var(--sage-dark);gap:6px;font-weight:600;display:grid}.range-dates{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.range-dates p{grid-column:1/-1}.inline-actions,.preview-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.inline-actions p{flex-basis:100%}.book-banner{border:1px solid var(--rule);color:var(--ink);background:#eaf0e4;border-radius:14px;padding:12px;line-height:1.5}.book-photo-scroll{overscroll-behavior:contain;max-height:560px;overflow-y:auto}.book-photo-grid{gap:9px;min-height:0;padding:4px;overflow:visible}.book-photo-grid>button{align-self:start;width:100%}.book-selection-mark .app-icon{width:14px;height:14px}.book-photo-grid small{text-align:center;background:#333d32;padding:4px}.theme-options{grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:9px;display:grid}.theme-options>button:not(.primary-button){text-align:left;border:1px solid var(--rule);background:#fffaf1;border-radius:14px;min-width:0;padding:10px}.theme-options>.active{box-shadow:inset 0 0 0 2px var(--sage-dark)}.theme-options strong,.theme-options small{margin-top:6px;display:block}.theme-proof{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;display:grid}.theme-options>.primary-button{grid-column:1/-1}.book-preview-pane{border:1px solid var(--rule);background:#e9e7dc;border-radius:20px;padding:14px;display:none}.book-preview-open{display:block}.book-raster{aspect-ratio:1240/1754;object-fit:contain;background:#fffaf1;width:100%;height:auto;display:block}.book-preview-pane>.book-raster{max-width:375px;margin:auto;box-shadow:0 8px 28px #2a33252b}.book-page-placeholder{text-align:center;min-height:160px;color:var(--muted);background:#fffaf1;border-radius:10px;place-items:center;padding:12px;display:grid}.theme-proof .book-page-placeholder{min-height:58px;padding:4px;font-size:12px}.preview-header,.preview-controls{justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.preview-controls{margin:12px 0 0}.preview-controls span{font-size:.875rem}.book-export-tools{gap:10px;display:grid}.book-export-tools .book-banner>button{margin:3px}.book-export-tools progress{max-width:100%}body:has(.native-sheet[open]){overflow:hidden}.editor-photo .composition-stage{cursor:pointer;border:0;padding:0;display:block}.editor-photo-actions{color:var(--muted);justify-content:space-between;align-items:center;gap:10px;margin:10px 16px 0;font-size:.875rem;display:flex}.photo-adjust-hint{color:#fff;background:#344330e6;border-radius:99px;width:max-content;max-width:calc(100% - 24px);padding:6px 12px;font-size:.8125rem;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.sheet.native-sheet.photo-adjust-sheet,.sheet.native-sheet.memory-reader-sheet{border-radius:0;width:min(100%,740px);height:100dvh;max-height:100dvh;margin:auto;padding:0;inset:0;overflow:hidden}.photo-adjust-shell{grid-template-rows:auto minmax(100px,1fr) minmax(0,auto) auto;gap:10px;height:100%;display:grid}.adjust-header,.reader-header{padding:calc(8px + env(safe-area-inset-top)) 12px 8px;border-bottom:1px solid var(--line);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.adjust-header h2{font:600 1.1rem/1.3 var(--serif);text-align:center;margin:0}.text-control{color:var(--sage-dark);background:0 0;border:0;padding:8px 4px;font-size:.875rem}.adjust-preview{background:#e7e2d8;border-radius:16px;min-height:0;margin-inline:12px;position:relative;overflow:hidden;container-type:size}.adjust-preview[data-tool=crop][data-cropped=true]{touch-action:none;cursor:grab}.adjust-tools{grid-template-rows:auto minmax(0,1fr);min-height:0;max-height:min(40svh,248px);margin-inline:12px;display:grid}.adjust-tabs{background:#ebe6dd;border-radius:12px;grid-template-columns:1fr 1fr;gap:4px;padding:3px;display:grid}.adjust-tabs button{color:var(--sage-dark);background:0 0;border:0;border-radius:9px;font-weight:600}.adjust-tabs button[aria-pressed=true]{background:#fff;box-shadow:0 2px 6px #26312814}.adjust-tool-panel{overscroll-behavior:contain;padding:0 2px;overflow:auto}.photo-transform-tools{justify-content:space-between;align-items:center;gap:8px;padding-top:6px;display:flex}.photo-transform-tools button{align-items:center;gap:6px;display:inline-flex}.photo-transform-tools .app-icon{width:18px;height:18px}.photo-transform-tools small{color:var(--muted);font-size:.8125rem}.adjust-tool-panel .frame-strip{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:8px}.crop-workspace{touch-action:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0}.crop-source{position:absolute}.crop-source>img{pointer-events:none;width:100%;max-width:none;height:100%;display:block}.crop-frame{border:1.5px solid #fff;position:absolute;box-shadow:0 0 0 2000px #18201880}.crop-grid{pointer-events:none;background:linear-gradient(90deg,#0000 33.15%,#ffffff80 33.15% 33.45%,#0000 33.45% 66.45%,#ffffff80 66.45% 66.75%,#0000 66.75%),linear-gradient(#0000 33.25%,#ffffff80 33.25% 33.55%,#0000 33.55% 66.55%,#ffffff80 66.55% 66.85%,#0000 66.85%);position:absolute;inset:0}.sheet .crop-move{background:0 0;border:0;width:100%;height:100%;min-height:0;padding:0;position:absolute;inset:0;cursor:move!important}.crop-handle{z-index:2;background:0 0;border:0;place-items:center;width:44px;height:44px;min-height:44px;padding:0;display:grid;position:absolute;transform:translate(-50%,-50%)}.crop-handle span{background:#465c40;border:2px solid #fff;border-radius:3px;width:13px;height:13px;box-shadow:0 1px 4px #0008}.crop-nw{top:0;left:0;cursor:nwse-resize!important}.crop-ne{top:0;left:100%;cursor:nesw-resize!important}.crop-se{top:100%;left:100%;cursor:nwse-resize!important}.crop-sw{top:100%;left:0;cursor:nesw-resize!important}.crop-n{top:0;left:50%;cursor:ns-resize!important}.crop-s{top:100%;left:50%;cursor:ns-resize!important}.crop-e{top:50%;left:100%;cursor:ew-resize!important}.crop-w{top:50%;left:0;cursor:ew-resize!important}.crop-read-error{background:var(--paper);color:#8d322b;padding:16px;position:absolute;inset:25px}.adjust-tool-panel .focus-sliders{gap:0;margin-top:4px}.adjust-tool-panel .filter-strip{padding-top:8px}.filter-thumbnail{background:#e7e2d8;border-radius:8px;width:46px;height:40px;display:block;position:relative;overflow:hidden;container-type:size}.adjust-footer{padding:0 12px calc(10px + env(safe-area-inset-bottom));gap:6px;display:grid}.adjust-footer small{color:var(--muted);text-align:center}.reader-shell{flex-direction:column;height:100%;display:flex}.reader-header{flex:none}.reader-header>div{text-align:center;gap:3px;display:grid}.reader-header strong{font:600 1.1rem/1.3 var(--serif)}.reader-header small{color:var(--muted);font-size:.75rem}.reader-header nav{gap:4px;display:flex}.reader-header button{place-items:center;padding:8px;display:grid}.reader-header .app-icon{width:20px;height:20px}.reader-scroll{overscroll-behavior:contain;scroll-behavior:auto;flex:1;min-height:0;padding:0 12px 16px;overflow-y:auto}.reader-scroll:focus-visible{outline-offset:-3px;outline:3px solid #527744}.memory-story{border-bottom:1px solid var(--line);overflow-wrap:anywhere;margin:0 0 18px;padding-bottom:16px}.story-photo-slot{background:#e7e2d8;border-radius:16px;height:clamp(180px,54svh,540px);overflow:hidden}.story-photo,.story-photo-placeholder{width:100%;height:100%;display:block}.story-copy{padding:16px 4px 4px}.story-copy small,.story-copy span{color:var(--muted);font-size:.875rem}.story-copy h2{font:600 1.5rem/1.4 var(--serif);margin:8px 0}.story-copy p{white-space:pre-wrap;margin:8px 0 14px;font-size:1rem;line-height:1.75}.story-source{padding-inline:4px}.story-source .story-photo-slot{margin-top:8px}.reader-actions{padding:8px 12px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--paper);flex:none;grid-template-columns:1fr 1fr auto;align-items:center;gap:6px;display:grid}.reader-actions>button{padding-inline:6px;font-size:.8125rem}.reader-more{position:relative}.reader-download{grid-column:1/-1}.reader-more summary{padding:8px}.reader-more>div{background:var(--paper);border-radius:14px;gap:8px;width:190px;padding:10px;display:grid;position:absolute;bottom:100%;right:0;box-shadow:0 5px 30px #26312840}.reader-empty{color:var(--muted);margin:24px;line-height:1.6}@media (width>=500px) and (height<=600px){.photo-adjust-shell{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr) minmax(250px,.85fr)}.adjust-header{grid-column:1/-1;padding-top:6px}.adjust-preview{margin-bottom:calc(10px + env(safe-area-inset-bottom));grid-area:2/1/4/2}.adjust-tools{grid-area:2/2;max-height:none}.adjust-footer{grid-area:3/2}}@media (width<=699px){html{scroll-padding-bottom:calc(94px + env(safe-area-inset-bottom))}}@media (width>=700px){:root{--gutter:26px}.stage{padding:24px 20px}.app-shell{border-radius:28px;width:min(100%,1180px);padding-bottom:24px}.topbar{min-height:92px}.bottom-nav{width:auto;height:auto;min-height:64px;margin:0 var(--gutter) 20px;border:1px solid var(--rule);background:#f2f2e9;border-radius:15px;padding:6px;position:static}.bottom-nav button:not(.add-button){flex-direction:row;gap:8px;padding-bottom:0}.bottom-nav button.active{background:#e4ebde;border-radius:10px}.bottom-nav button[aria-current]:after{content:none}.add-button{border:0;width:46px;height:46px;margin:0;font-size:26px}.today-view{max-width:840px;margin:auto}.hero-photo{height:min(56vh,490px)}.month-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.profile-columns{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:start;gap:16px;display:grid}.sheet.native-sheet{border-radius:22px;max-height:calc(100svh - 48px);margin:auto;inset:0}}@media (width>=1024px){.book-workbench{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px}.book-workbench.step-2{grid-template-rows:min-content auto}.book-preview-pane{display:block;position:sticky;top:14px}.book-workbench.step-2>.book-preview-pane{grid-area:1/2/3/3}.book-workbench.step-2>.book-export-tools{grid-area:2/1;min-width:0}.book-preview-pane>.book-raster{width:min(100%,360px,70.69svh - 113.104px)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
