:root{--ground:#fff;--ink:#1a1a18;--ink-soft:#2a2927;--muted:#5c5a55;--placeholder:#8c8880;--tonal:#e9ddcf;--line:#dfd2c4;--waiting:#f4f2ee;--danger:#c2341b;--serif:"Source Serif 4", Georgia, "Times New Roman", serif;--sans:"Geist", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--m:20px;--gutter:10px;--opener-space:60px;font-family:var(--sans);color:var(--ink);background:var(--ground);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.4}*{box-sizing:border-box}body{background:var(--ground);margin:0}img{max-width:100%;display:block}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.35}h1,h2,h3,p{margin:0}.app{max-width:480px;min-height:100vh;padding-bottom:env(safe-area-inset-bottom,0px);margin:0 auto}.screen{flex-direction:column;display:flex}.muted{color:var(--muted)}.center{text-align:center}.loading{padding:40px var(--m)}.label{font-family:var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:600;line-height:1.3}.btn{background:var(--tonal);min-height:44px;color:var(--ink);border:0;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:0 20px;font-size:15px;font-weight:600;display:inline-flex}.btn.primary{background:var(--ink);color:#fff}.btn.ghost{box-shadow:inset 0 0 0 1.5px var(--line);background:0 0}.btn.small{min-height:36px;padding:0 16px;font-size:14px}.btn.primary.small{min-height:44px}.btn.wide{width:100%}.btn:hover:not(:disabled){filter:brightness(.96)}.btn.primary:hover:not(:disabled){filter:none;background:#000}.link{color:var(--ink);text-underline-offset:2px;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline}.banner{margin:12px var(--m) 0;background:var(--waiting);border-radius:12px;padding:10px 14px;font-size:13px}.error{color:var(--danger);font-size:13px}.banner.error{background:#fde8e3}div.banner{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.album-bar{z-index:20;padding:calc(8px + env(safe-area-inset-top,0px)) var(--m) 8px;background:var(--ground);justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.album-bar .btn{min-height:44px}.album-head{padding:20px var(--m) 0}.label-row{justify-content:space-between;gap:12px;display:flex}.album-title{font-family:var(--serif);font-variation-settings:"opsz" 60;letter-spacing:-.03em;margin-top:18px;font-size:60px;font-weight:500;line-height:.95}.album-title .name{font-weight:800}.cover{background:var(--tonal);cursor:zoom-in;border:0;width:100%;margin-top:28px;padding:0;display:block}.cover img{aspect-ratio:4/5;object-fit:cover;width:100%}.waiting-card{margin:28px var(--m) 0;background:var(--waiting);border-radius:18px;flex-direction:column;align-items:flex-start;gap:8px;padding:20px;display:flex}.waiting-title{font-family:var(--serif);letter-spacing:-.02em;font-variation-settings:"opsz" 60;font-size:26px;font-weight:800;line-height:1.05}.waiting-sub{color:var(--ink-soft);margin-bottom:6px;font-size:13px}.caught-up{margin:28px var(--m) 0;text-align:center;color:var(--muted);font-size:13px}.album.editing{--opener-space:64px}.chapter{padding-top:var(--opener-space);scroll-margin-top:52px}.chapter-add{padding:0 var(--m);text-align:center;flex-direction:column;align-items:center;gap:12px;font-size:13px;display:flex}.chapter-empty{padding:40px var(--m) 0;text-align:center;flex-direction:column;align-items:center;gap:6px;scroll-margin-top:52px;font-size:13px;display:flex}.chapter-empty h2{font-family:var(--serif);letter-spacing:-.02em;font-variation-settings:"opsz" 60;font-size:24px;font-weight:900}.chapter-empty .btn{margin-top:6px}.album-footer{margin:72px var(--m) 40px;color:var(--muted);flex-wrap:wrap;justify-content:center;gap:10px;font-size:13px;display:flex}.opener-wrap{margin-bottom:var(--opener-space);position:relative}.opener{isolation:isolate;aspect-ratio:340/119;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:6px;width:calc(100% - 50px);max-width:340px;margin:0 auto;display:flex;position:relative}.opener.birth{aspect-ratio:340/170}.opener-shape{z-index:-1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.opener.birth .opener-shape{transform:rotate(-2deg)}.opener .label{color:inherit;opacity:.85}.chapter-title{font-family:var(--serif);font-variation-settings:"opsz" 60;letter-spacing:-.02em;font-size:34px;font-weight:900;line-height:1}.edit-btn{width:44px;height:44px;color:var(--ink);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:-46px;right:8px}.edit-btn:hover{background:var(--waiting)}.turns-one{width:77%;max-width:300px;margin:0 auto 4px;display:block;overflow:visible}.turns-one-digit{font-family:var(--serif);letter-spacing:-.04em;font-variation-settings:"opsz" 60;fill:var(--ink);font-size:140px;font-weight:900}.modules{padding:0 var(--m)}.module{column-gap:var(--gutter);grid-template-columns:repeat(4,minmax(0,1fr));margin:44px 0 0;display:grid}.module:first-child{margin-top:0}.module.stacked{margin-top:10px}.module-photo{grid-area:1/1/auto/-1;position:relative}.module.tagged .module-photo{margin-bottom:24px}.photo-btn{background:var(--tonal);cursor:zoom-in;border:0;width:100%;padding:0;display:block}.photo-btn img{object-fit:cover;width:100%;height:100%}.module figcaption{color:var(--ink-soft);font-size:13px;line-height:1.4}.module.bleed .module-photo{margin-left:calc(-1 * var(--m));margin-right:calc(-1 * var(--m))}.module.bleed figcaption,.module.inset figcaption{grid-area:2/3/auto/5;margin-top:10px}.module.tagged.bleed figcaption,.module.tagged.inset figcaption{margin-top:-14px}.module.third-left .module-photo{grid-column:1/4}.module.third-left figcaption{grid-area:1/4/auto/5;align-self:end}.module.third-right .module-photo{grid-column:2/5}.module.third-right figcaption{text-align:right;grid-area:1/1/auto/2;align-self:end}.module.tagged.third-left figcaption,.module.tagged.third-right figcaption{margin-bottom:24px}.milestone-tag{isolation:isolate;white-space:nowrap;align-items:center;height:38px;padding:0 18px;font-size:13px;font-weight:600;display:inline-flex;position:relative}.milestone-tag svg{z-index:-1;width:100%;height:100%;position:absolute;inset:0}.module-photo .milestone-tag{pointer-events:none;position:absolute;bottom:-24px;left:8px}.module.bleed .module-photo .milestone-tag{left:var(--m)}.topbar{z-index:10;padding:calc(8px + env(safe-area-inset-top,0px)) 12px 10px;background:var(--ground);border-bottom:1px solid var(--line);grid-template-columns:44px 1fr 44px;align-items:center;gap:8px;display:grid;position:sticky;top:0}.topbar-title{text-align:center;flex-direction:column;gap:2px;min-width:0;display:flex}.topbar-title h1{font-family:var(--serif);letter-spacing:-.02em;font-variation-settings:"opsz" 60;font-size:26px;font-weight:900;line-height:1}.back-btn{background:0 0;border:0;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;display:grid}.back-btn:hover{background:var(--waiting)}.guidance{margin:20px var(--m) 28px;color:var(--ink-soft);font-size:13px}.checkin>.error{margin:-16px var(--m) 16px}.hint{margin:12px var(--m) 0;color:var(--muted);font-size:12px}.module.editable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.module.editable .photo-btn{cursor:pointer}.module.dragging{opacity:.3}.caption-empty{color:var(--placeholder)}.caption-tap{cursor:pointer}.tile-remove{color:#fff;background:#1a1a1899;border:0;border-radius:50%;place-items:center;width:32px;height:32px;padding:0;display:grid;position:absolute;top:8px;right:8px}.module.bleed .tile-remove{right:var(--m)}.tile-remove:hover{background:#1a1a18cc}.module.dragging .tile-remove{display:none}.drag-ghost{z-index:40;pointer-events:none;position:fixed;overflow:hidden;transform:scale(1.04);box-shadow:0 12px 28px #1a1a184d}.drag-ghost img{object-fit:cover;width:100%;height:100%}.add-area{width:calc(100% - 2 * var(--m));height:120px;margin:44px var(--m) 0;border:2px dashed var(--line);background:var(--ground);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:15px;font-weight:600;display:flex}.add-area:hover{border-color:var(--muted)}.add-plus{font-size:32px;font-weight:300;line-height:1}.save-bar{padding:16px var(--m) calc(12px + env(safe-area-inset-bottom,0px));background:linear-gradient(to bottom, #fff0, var(--ground) 30%);margin-top:24px;position:sticky;bottom:0}.tag-picker{border:0;min-width:0;margin:0;padding:0}.tag-picker legend{margin-bottom:10px;padding:0}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--tonal);min-height:40px;color:var(--ink);border:0;border-radius:999px;padding:0 16px;font-size:14px;font-weight:600}.chip[aria-pressed=true]{background:var(--ink);color:#fff}.chip-add{border:1.5px dashed var(--line);border-radius:999px;align-items:center;min-height:40px;display:flex;overflow:hidden}.chip-add input{background:0 0;border:0;outline:none;width:120px;padding:0 4px 0 14px;font-size:16px}.chip-add button{background:0 0;border:0;height:40px;padding:0 14px;font-size:18px;font-weight:600}.chip-add:focus-within{border-color:var(--ink)}.field{flex-direction:column;gap:8px;display:flex}.field>span{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:600}.field input,.field textarea{border:1.5px solid var(--line);background:var(--ground);color:var(--ink);border-radius:12px;padding:12px 14px;font-size:16px}.field input{min-height:48px}.field textarea{resize:vertical;line-height:1.4}.field input::placeholder,.field textarea::placeholder{color:var(--placeholder)}.field input:focus,.field textarea:focus{border-color:var(--ink);outline:none}.toggle-row{justify-content:space-between;align-items:center;gap:12px;font-size:15px;font-weight:600;display:flex}.toggle{background:var(--line);border:0;border-radius:999px;flex:none;width:52px;height:32px;padding:0;transition:background .15s;position:relative}.toggle[aria-checked=true]{background:var(--ink)}.toggle-knob{background:#fff;border-radius:50%;width:26px;height:26px;transition:transform .15s;position:absolute;top:3px;left:3px}.toggle[aria-checked=true] .toggle-knob{transform:translate(20px)}.hint-inline{color:var(--muted);font-size:13px}.focus-picker{justify-content:center;display:flex}.focus-frame{touch-action:none;cursor:crosshair;-webkit-user-select:none;user-select:none;position:relative}.focus-frame img{pointer-events:none;width:auto;max-height:240px}.focus-marker{width:36px;height:36px;box-shadow:0 0 0 1.5px var(--ink), 0 2px 8px #1a1a1859;pointer-events:none;border:3px solid #fff;border-radius:50%;margin:-18px 0 0 -18px;position:absolute}.onboarding{max-width:400px;padding:0 var(--m) 40px;gap:18px;margin:8vh auto 0}.onboarding-head{flex-direction:column;gap:12px;margin-bottom:8px;display:flex}.onboarding-head h1{font-family:var(--serif);font-variation-settings:"opsz" 60;letter-spacing:-.03em;font-size:48px;font-weight:800;line-height:.95}.onboarding-head p{color:var(--ink-soft);font-size:15px}.onboarding .tag-picker legend{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:600}.onboarding>p{font-size:13px}.sheet-root{z-index:50;position:fixed;inset:0}.sheet-backdrop{background:#1a1a1873;animation:.22s fade-in;position:absolute;inset:0}.sheet{background:var(--ground);border-radius:22px 22px 0 0;outline:none;flex-direction:column;max-width:480px;max-height:88dvh;margin:0 auto;transition:transform .22s;animation:.26s cubic-bezier(.2,.8,.2,1) sheet-up;display:flex;position:absolute;bottom:0;left:0;right:0}.sheet-root.closing .sheet{transform:translateY(100%)}.sheet-root.closing .sheet-backdrop{opacity:0;transition:opacity .22s}.sheet-grab{padding:8px var(--m) 14px;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--line)}.sheet-grab img{pointer-events:none}.sheet-handle{background:var(--line);border-radius:3px;width:40px;height:5px;margin:0 auto 12px}.sheet-head{align-items:center;gap:12px;display:flex}.sheet-head img{object-fit:cover;border-radius:6px;flex:none;width:56px;height:56px}.sheet-head h2{font-family:var(--serif);font-variation-settings:"opsz" 60;letter-spacing:-.02em;flex:1;font-size:24px;font-weight:900;line-height:1}.sheet-body{overscroll-behavior:contain;padding:20px var(--m) calc(28px + env(safe-area-inset-bottom,0px));flex-direction:column;flex:auto;gap:24px;display:flex;overflow-y:auto}@keyframes sheet-up{0%{transform:translateY(100%)}}@keyframes fade-in{0%{opacity:0}}.lightbox{z-index:60;background:var(--ground);padding:calc(64px + env(safe-area-inset-top,0px)) var(--m) calc(24px + env(safe-area-inset-bottom,0px));cursor:zoom-out;flex-direction:column;justify-content:center;align-items:center;gap:18px;animation:.18s fade-in;display:flex;position:fixed;inset:0}.lightbox img{object-fit:contain;max-width:100%;max-height:74dvh}.lightbox-caption{max-width:440px}.photo-caption{color:var(--ink-soft);align-items:center;gap:12px;font-size:13px;line-height:1.4;display:flex}.lightbox-close{top:calc(12px + env(safe-area-inset-top,0px));background:var(--tonal);width:44px;height:44px;color:var(--ink);border:0;border-radius:50%;font-size:1.05rem;position:absolute;right:12px}.toast{z-index:30;left:50%;bottom:calc(92px + env(safe-area-inset-bottom,0px));width:calc(100% - 2 * var(--m));background:var(--ink);color:#fff;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;max-width:440px;padding:8px 8px 8px 16px;font-size:14px;animation:.18s fade-in;display:flex;position:fixed;transform:translate(-50%)}.toast-action{color:var(--ochre,#ffc400);background:0 0;border:0;padding:8px 12px;font-weight:600}
