:root{--album-bg:#faf8f4;--album-surface:#fffefa;--album-text:#282925;--album-muted:#73746b;--album-line:#e4e2d9;--album-soft:#f0eee7;--album-action:#596149;font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;color:var(--album-text);background:var(--album-bg);line-height:1.55}
body{background:var(--album-bg)}h1,h2,h3,.brand{font-family:inherit;font-weight:500;letter-spacing:-.02em}button,a,summary{-webkit-tap-highlight-color:transparent}button:disabled{opacity:.4}:focus-visible{outline:2px solid var(--album-action);outline-offset:3px}
.app-shell{display:block;min-height:100dvh}.album-header{background:var(--album-surface);border-bottom:1px solid var(--album-line)}.album-header-inner{height:64px;max-width:1120px;margin:auto;padding:0 40px;display:flex;justify-content:space-between;align-items:center;gap:12px}.brand{font-size:17px;font-weight:500;color:var(--album-text)}.header-actions{display:flex;align-items:center;gap:8px}.primary-button{border:0;border-radius:22px;background:var(--album-action);color:var(--album-surface);padding:10px 18px;font-size:13px;font-weight:500;min-height:44px;box-shadow:none}.primary-button:hover{background:#454e38}.secondary-button{background:var(--album-surface);border:1px solid var(--album-line);color:var(--album-text);border-radius:9px;min-height:44px;padding:10px 16px;font-weight:400}.icon-button,.photo-viewer-close{width:44px;height:44px;flex-shrink:0;border:0;border-radius:50%;background:var(--album-soft);color:var(--album-text);font-size:25px;line-height:1}
.album-menu,.entry-menu{position:relative}.album-menu summary,.entry-menu summary{list-style:none;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;font-size:23px;cursor:pointer;user-select:none}.album-menu summary::-webkit-details-marker,.entry-menu summary::-webkit-details-marker{display:none}.album-menu summary:hover,.entry-menu summary:hover{background:var(--album-soft)}.menu-items{position:absolute;right:0;top:calc(100% + 6px);z-index:5;width:190px;padding:6px;background:var(--album-surface);border:1px solid var(--album-line);border-radius:10px;box-shadow:0 8px 24px #25231b22}.menu-items button{display:block;width:100%;min-height:44px;text-align:left;border:0;border-radius:6px;background:transparent;color:var(--album-text);padding:10px 12px;font-size:13px}.menu-items button:hover{background:var(--album-soft)}
.main-content{max-width:1120px;padding:0 40px;margin:auto}.intro{display:block;padding:34px 0 28px}.intro h1{font-size:34px;font-weight:500;line-height:1.3;letter-spacing:-.025em;margin:0 0 8px;overflow-wrap:anywhere}.intro p{color:var(--album-muted);font-size:13px;line-height:1.55;margin:0}.memories{padding:0}.album-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:26px}.month-picker{min-width:0}.month-picker select{max-width:100%;min-height:44px;border:0;border-radius:8px;background:transparent;color:var(--album-text);font-family:inherit;font-weight:500;font-size:15px;line-height:1.5;padding:6px 22px 6px 0;cursor:pointer}.entry-filters{display:flex;flex-shrink:0;background:var(--album-soft);padding:3px;border-radius:9px;gap:0}.entry-filters button{min-height:38px;border:0;border-radius:7px;background:transparent;color:var(--album-muted);font-size:12px;padding:5px 14px;white-space:nowrap}.entry-filters button[aria-pressed=true]{background:var(--album-surface);color:var(--album-text);box-shadow:0 1px 3px #25231b22}.group-heading{font-size:20px;font-weight:500;color:var(--album-text);margin:10px 0 20px}.group-heading:not(:first-child){margin-top:44px}.memory-list{display:grid;grid-template-columns:1.3fr 1fr;gap:32px;align-items:start}.memory-card{border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible;transition:none}.memory-card:hover{transform:none;box-shadow:none}.memory-photo-grid{border-radius:9px;aspect-ratio:1;gap:4px}.memory-photo-grid.count-2{aspect-ratio:1.35}.memory-photo-grid.count-3{aspect-ratio:1.15}.memory-photo-tile img{transition:filter .15s ease}.memory-photo-grid:hover .memory-photo-tile img{transform:none;filter:brightness(.97)}.photo-count{font-size:11px;background:#24251bd9;padding:3px 9px}.memory-photo-more{font-weight:400;font-size:23px}.memory-body{padding:14px 0 0;position:relative}.memory-date{font-size:12px;font-weight:400;color:var(--album-muted);letter-spacing:0;padding-right:44px}.memory-body h3{font-size:17px;font-weight:500;font-family:inherit;line-height:1.45;margin:5px 0 0;padding-right:38px;overflow-wrap:anywhere}.entry-title-button{padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;min-height:30px}.entry-title-button:hover{text-decoration:underline;text-underline-offset:4px}.memory-note{color:var(--album-muted);font-size:13px;line-height:1.65;margin:6px 0 0;-webkit-line-clamp:2}.milestone-badge{display:inline-block;margin-top:8px;font-size:11px;color:var(--album-action);background:transparent;padding:0;border-radius:0}.entry-menu{position:absolute;right:-8px;top:8px}.entry-menu .menu-items{top:38px}footer{border-top:1px solid var(--album-line);margin:48px 0 0;padding:18px 0 24px;color:var(--album-muted);gap:12px;font-size:11px}footer span{font-size:11px;color:inherit}.empty-state{min-height:260px;border:0;border-radius:0;background:transparent;padding:40px 20px}.empty-state h3{font-family:inherit;font-weight:500;font-size:20px;line-height:1.4}.empty-state p{color:var(--album-muted);line-height:1.6;font-size:13px}.empty-state button{background:var(--album-action);color:var(--album-surface);font-size:13px;font-weight:500;padding:10px 18px;border-radius:22px;min-height:44px}
.gate{background:var(--album-bg)}.gate-card{background:var(--album-surface);border:1px solid var(--album-line);border-radius:16px;box-shadow:0 12px 40px #25231b0a}.gate-card h1{font-size:28px;font-weight:500}.gate-card .brand{margin-bottom:28px}.plain-link{color:var(--album-action);min-height:44px}.modal{background:var(--album-surface);color:var(--album-text);border-radius:16px;max-height:calc(100dvh - 32px)}.modal::backdrop{background:#17181270;backdrop-filter:blur(3px)}.modal-top{padding:20px 24px;align-items:center;border-color:var(--album-line)}.modal-top h2{font-size:23px;font-weight:500;margin:0}.modal-body{padding:24px;max-height:calc(100dvh - 210px);overflow-y:auto}.modal-actions{padding:16px 24px 22px;flex-wrap:wrap;border-top:1px solid var(--album-line)}.field-label{color:var(--album-muted);font-weight:400;font-size:13px}.field input,.field textarea{color:var(--album-text);background:var(--album-bg);border-color:var(--album-line);font-size:16px;min-height:44px;outline:revert}.field input:focus,.field textarea:focus{border-color:var(--album-action);box-shadow:0 0 0 2px #59614922}.photo-drop{height:140px;background:var(--album-bg);border:1px dashed #b9bbae}.camera-icon{color:var(--album-action)}.photo-placeholder{display:grid;gap:4px;justify-items:center}.photo-drop small,.form-hint,.backup-copy{color:var(--album-muted)}.photo-item button{height:44px;width:44px;right:0;top:0;font-size:22px}.check-row{background:var(--album-soft);color:var(--album-text);min-height:44px}.check-row input{accent-color:var(--album-action)}.backup-option{background:var(--album-surface);border-color:var(--album-line);color:var(--album-text)}.backup-option:hover{background:var(--album-soft);border-color:#b9bbae}.backup-option small{color:var(--album-muted)}.option-icon{background:var(--album-soft);color:var(--album-action)}.secret-result{background:var(--album-soft)}.trash-row{border-color:var(--album-line)}.trash-row button{min-height:44px;background:var(--album-soft);color:var(--album-action)}.trash-row small{color:var(--album-muted)}.toast{background:#343b2d}
.photo-viewer{background:var(--album-surface);color:var(--album-text);border-radius:16px}.photo-viewer::backdrop{background:#171812a0}.photo-viewer-top{padding:16px 20px;border-bottom:1px solid var(--album-line)}.photo-viewer-top h2{color:var(--album-text);font-size:20px}.photo-viewer-stage{background:var(--album-soft);padding:10px}.photo-viewer-arrow{background:#fffefaed;color:var(--album-text);width:44px;height:44px}.photo-viewer-arrow:hover:not(:disabled){background:#fffefa}.photo-viewer-close:hover{background:#e5e3da}.photo-viewer-status{color:var(--album-muted);padding:8px 20px 0}.photo-viewer-actions{color:var(--album-muted);padding:12px 20px}.photo-viewer-actions button,.photo-viewer-actions a{color:var(--album-text);border:0;background:var(--album-soft);min-height:44px;padding:10px 12px}.photo-viewer-actions button:hover,.photo-viewer-actions a:hover{background:#e5e3da}.gallery-detail{padding:14px 20px 0;max-height:120px;overflow-y:auto;flex-shrink:0}.gallery-detail p{margin:0;font-size:13px;line-height:1.6;color:var(--album-muted);white-space:pre-wrap;overflow-wrap:anywhere}.gallery-detail p+p:not(:empty){margin-top:5px}.photo-viewer-thumbnails button{opacity:.75;background:var(--album-soft);border-radius:6px}.photo-viewer-thumbnails button[aria-current=true]{border-color:var(--album-action);opacity:1}.photo-viewer-image-area{height:min(53dvh,580px)}.photo-viewer-image-area img{touch-action:pan-y}.photo-viewer-image-area img.is-zoomed{touch-action:none}
@media(max-width:600px){.album-header-inner{height:58px;padding:0 18px;gap:8px}.brand{font-size:15px}.header-actions{gap:3px}.header-actions .primary-button{padding:8px 13px;font-size:12px}.main-content{padding:0 20px}.intro{padding:24px 0 18px}.intro h1{font-size:26px;margin-bottom:7px}.album-toolbar{gap:8px;margin-bottom:20px}.month-picker{flex:1}.month-picker select{width:100%;font-size:14px;padding-right:18px}.entry-filters button{padding:5px 10px;min-height:44px}.group-heading{font-size:18px;margin:0 0 16px}.group-heading:not(:first-child){margin-top:36px}.memory-list{grid-template-columns:1fr;gap:32px}.memory-body{padding-top:12px}.memory-body h3{font-size:17px}.entry-title-button{min-height:36px}.memory-note{-webkit-line-clamp:2}.memory-photo-grid{aspect-ratio:1}.memory-photo-grid.count-1{aspect-ratio:1.12}.memory-photo-grid.count-2{aspect-ratio:1.25}.memory-photo-grid.count-3{aspect-ratio:1.12}.menu-items{width:180px}.field-grid{grid-template-columns:1fr;gap:0}.modal{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);border-radius:14px}.modal-top,.modal-body{padding:20px}.modal-body{max-height:calc(100dvh - 190px)}.modal-actions{padding:14px 20px 18px}.photo-viewer{width:100%;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0}.photo-viewer-shell{height:100dvh;max-height:100dvh}.photo-viewer-top{padding:calc(12px + env(safe-area-inset-top)) 16px 12px}.photo-viewer-top h2{font-size:18px}.photo-viewer-stage{padding:8px 0;flex:1;min-height:100px}.photo-viewer-image-area{height:100%;min-height:0}.photo-viewer-arrow{width:44px;height:44px;bottom:10px;background:#fffefaed}.gallery-detail{padding:10px 16px 0;max-height:90px}.photo-viewer-status{padding:6px 16px 0;flex-shrink:0}.photo-viewer-actions{padding:10px 16px;flex-shrink:0}.photo-viewer-actions>div{gap:6px}.photo-viewer-actions button,.photo-viewer-actions a{font-size:12px;padding:10px}.photo-viewer-thumbnails{padding:0 16px calc(16px + env(safe-area-inset-bottom));flex-shrink:0}.photo-viewer-thumbnails button{width:52px;height:52px}.gallery-detail p{font-size:12px}footer{margin-top:32px;flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.memory-photo-tile img{transition:none}}

/* Warm paper, botanical margin art and restrained photographic framing. */
:root{--album-bg:#f3ebdd;--album-surface:#fff9ee;--album-text:#39392f;--album-muted:#777164;--album-line:#ded4c2;--album-soft:#e9e0cd;--album-action:#687553}
body{background-color:var(--album-bg);background-image:radial-gradient(ellipse at 92% 0,#e3e7d366,transparent 42%),radial-gradient(ellipse at 5% 42%,#eed8c455,transparent 48%)}
.app-shell{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9'%3E%3Ccircle cx='2' cy='2' r='.45' fill='%2389785d' opacity='.065'/%3E%3C/svg%3E")}
.album-header{background:#f7efdfeb;border-bottom-color:#dfd4be}
.brand{font-family:'Songti SC','STSong',serif;font-size:18px;letter-spacing:.03em}
.brand::before{content:'';display:block;width:7px;height:7px;flex-shrink:0;background:#b7bf9d;border-radius:50%;box-shadow:3px -3px 0 #d2b894}
.intro{position:relative;min-height:135px;padding-right:154px}
.intro::after{content:'';position:absolute;right:4px;bottom:9px;width:150px;height:104px;background:url('/album-sprig.svg') center/contain no-repeat;pointer-events:none}
.intro h1{color:#414536}.intro p{color:#827b68}
.group-heading{display:flex;align-items:center;gap:14px;color:#666d50;font-size:18px}
.group-heading::before{content:'';width:5px;height:5px;border-radius:50%;background:#b1b99a;flex-shrink:0}
.group-heading::after{content:'';height:1px;max-width:180px;flex:1;background:linear-gradient(90deg,#d6cbb6,transparent)}
.memory-photo-grid{border:5px solid #fff9ed;border-radius:12px;box-shadow:0 2px 4px #64513508,0 7px 18px #6451350d;gap:4px}
.memory-body{padding-left:4px;padding-right:4px}
.milestone-badge{padding:3px 9px;border-radius:5px;background:#e3e8d5;color:#626e4c}
.entry-filters{background:#e6dcc8}.entry-filters button[aria-pressed=true]{background:#fff7e8;box-shadow:0 1px 4px #65523c17}
.photo-viewer-stage{background:#e9e0cf}.gate{background:var(--album-bg)}
@media(max-width:600px){.brand{font-size:16px}.intro{padding-right:88px;min-height:112px;padding-top:26px;padding-bottom:22px}.intro h1{font-size:24px;line-height:1.35}.intro::after{width:92px;height:80px;right:-9px;bottom:14px;opacity:.9}.memory-photo-grid{border-width:4px;border-radius:11px}.group-heading{font-size:17px}.group-heading::after{max-width:120px}}

.album-kicker{font-size:11px;letter-spacing:.15em;color:#9b876a;margin-bottom:10px;display:flex;align-items:center;gap:8px}.album-kicker::before{content:'';width:18px;height:1px;background:#cbb799}.intro .album-slogan{font-family:'Songti SC','STSong',serif;font-size:15px;line-height:1.7;color:#8b8069;margin-top:13px;letter-spacing:.03em}.intro{padding-top:32px;padding-bottom:28px}.intro::after{bottom:24px}
.memory-card{background:#fff9ee;border:1px solid #ded2be;border-radius:15px;padding:6px;box-shadow:0 3px 12px #6a51340b}.memory-photo-grid{border:0;border-radius:10px;box-shadow:none}.memory-body{padding:16px 12px 17px}.memory-body h3{margin-top:7px}.memory-note{margin-top:8px;line-height:1.75}.entry-menu{right:5px;top:10px}.entry-menu .menu-items{right:0}.milestone-badge{margin-top:11px}.memory-card:hover{box-shadow:0 5px 18px #6a513411}.memory-card{transition:box-shadow .2s ease}
.modal[open],.photo-viewer[open]{animation:album-dialog-in .22s ease-out both}.modal[open]::backdrop,.photo-viewer[open]::backdrop{animation:album-backdrop-in .22s ease-out both}.modal.is-closing,.photo-viewer.is-closing{animation:album-dialog-out .18s ease-in both;pointer-events:none}.modal.is-closing::backdrop,.photo-viewer.is-closing::backdrop{animation:album-backdrop-out .18s ease-in both}.photo-viewer-image-area img{transition:opacity .14s ease,transform .18s ease;opacity:1}.photo-viewer-image-area img.is-loading{opacity:0}.menu-items{animation:album-menu-in .14s ease-out both}
@keyframes album-dialog-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes album-dialog-out{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(6px)}}
@keyframes album-backdrop-in{from{opacity:0}to{opacity:1}}@keyframes album-backdrop-out{from{opacity:1}to{opacity:0}}
@keyframes album-menu-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){.intro{padding-top:24px;padding-bottom:24px}.album-kicker{margin-bottom:8px}.intro .album-slogan{font-size:13px;line-height:1.75;margin-top:10px}.intro::after{bottom:34px}.memory-card{border-radius:13px;padding:5px}.memory-body{padding:13px 10px 15px}.memory-photo-grid{border:0;border-radius:8px}.entry-menu{right:2px;top:8px}}
@media(prefers-reduced-motion:reduce){.modal[open],.photo-viewer[open],.modal[open]::backdrop,.photo-viewer[open]::backdrop,.menu-items{animation:none!important}.photo-viewer-image-area img,.memory-card{transition:none!important}}
