@charset "UTF-8";
:root{--paper:#fbf5ea;--paper-deep:#f2e6d3;--card:#fffdf8;--ink:#3b302a;--ink-soft:rgba(59,48,42,.72);--ink-faint:rgba(59,48,42,.52);--terra:#c06a4c;--terra-deep:#9c4f36;--sun:#d9a441;--sage:#7f8a63;--line:rgba(59,48,42,.14);--display:"Noto Serif CJK SC","Source Han Serif SC","Songti SC","STSong","SimSun",serif;--body:"Noto Sans CJK SC","PingFang SC","Microsoft YaHei UI","Microsoft YaHei","Hiragino Sans GB",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(1100px 560px at 82% -12%,#fcefd9 0%,transparent 62%),radial-gradient(880px 480px at -12% 8%,#f3ebdd 0%,transparent 58%);background-attachment:fixed;font:16px/1.8 var(--body)}a{color:var(--terra-deep)}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--terra);outline-offset:4px;border-radius:3px}.shell{width:min(1120px,calc(100% - 2.5rem));margin-inline:auto}.skip-link{position:absolute;left:1rem;top:-4rem;z-index:50;padding:.6rem 1rem;background:var(--ink);color:#fff;border-radius:6px}.skip-link:focus{top:1rem}.site-header{position:sticky;top:0;z-index:10;padding:1rem 0;border-bottom:1px solid var(--line);background:rgba(251,245,234,.88);backdrop-filter:blur(9px)}.header-inner,.footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.7rem 1.5rem}.wordmark{display:inline-flex;align-items:center;gap:.6rem;color:var(--ink);text-decoration:none;font:600 1.3rem var(--display);letter-spacing:.04em}.mark{width:.8rem;height:.8rem;border-radius:3px;background:var(--terra);box-shadow:0 0 0 3px rgba(192,106,76,.16)}.site-nav{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .3rem;font-size:.92rem}.site-nav a,.nav-button{padding:.32rem .72rem;border:0;border-radius:999px;background:transparent;color:var(--ink-soft);font:inherit;text-decoration:none;cursor:pointer}.site-nav a:hover,.nav-button:hover{color:var(--terra-deep);background:rgba(192,106,76,.09)}.nav-form{margin:0}.hero{padding:clamp(2.5rem,6vw,5rem) 0 clamp(2.5rem,5vw,4rem)}.hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(1.5rem,4vw,3.5rem);align-items:center}.eyebrow,.section-label{display:inline-flex;align-items:center;gap:.65rem;margin:0 0 .85rem;color:var(--terra-deep);font-size:.76rem;letter-spacing:.18em}.eyebrow:before,.section-label:before{content:"";width:1.6rem;height:1px;background:var(--terra)}h1,h2,h3,p{margin-top:0}h1{margin-bottom:0;font:600 clamp(2.45rem,6vw,4.1rem)/1.2 var(--display);letter-spacing:.02em}.hero-lede,.page-lede,.auth-lede{max-width:34rem;margin:1.25rem 0 0;color:var(--ink-soft);font-size:1.02rem}.hero-note{position:relative;min-height:330px;margin:0;padding:1.4rem 1.4rem 1rem;border:1px solid var(--line);background:rgba(255,253,248,.78);box-shadow:0 22px 45px rgba(90,60,40,.08);transform:rotate(1.2deg)}.note-corner{position:absolute;right:-.65rem;top:-.65rem;width:2.2rem;height:2.2rem;border-top:2px solid var(--terra);border-right:2px solid var(--terra)}.line-art{display:block;width:min(100%,390px);height:auto;margin:.2rem auto}.hero-note figcaption{text-align:center;color:var(--ink-faint);font:italic 1rem var(--display);letter-spacing:.04em}.button{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:46px;padding:.68rem 1.05rem;border:1px solid transparent;border-radius:7px;font:600 .95rem var(--body);text-decoration:none;cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .16s ease}.button:hover{transform:translateY(-1px)}.button-primary{background:var(--terra);color:#fff}.button-primary:hover{background:var(--terra-deep);color:#fff}.button-outline{border-color:var(--line);background:var(--card);color:var(--ink)}.button-outline:hover{border-color:var(--terra);color:var(--terra-deep)}.hero-action{margin-top:1.6rem}.button-full{width:100%}.section{padding:clamp(3rem,6vw,5rem) 0;border-top:1px solid var(--line)}.section-heading{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.75rem}.section-label{margin-bottom:.5rem}.section h2,.private-empty h2{margin:0;font:600 clamp(1.65rem,3.6vw,2.4rem)/1.3 var(--display)}.photo-count{color:var(--ink-faint);font-size:.87rem}.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:230px;gap:1rem}.gallery-card{position:relative;overflow:hidden;margin:0;border:1px solid var(--line);background:var(--paper-deep)}.gallery-card-tall{grid-row:span 2}.gallery-card img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s ease}.gallery-card:hover img{transform:scale(1.025)}.gallery-card figcaption{position:absolute;right:0;bottom:0;left:0;padding:2rem 1rem .85rem;background:linear-gradient(transparent,rgba(35,27,22,.68));color:white;font-size:.9rem}.empty-gallery{display:flex;align-items:center;gap:1rem;min-height:150px;padding:1.5rem;border:1px dashed rgba(59,48,42,.2);background:rgba(255,253,248,.55)}.empty-gallery h3{margin:0 0 .25rem;font:600 1.15rem var(--display)}.empty-gallery p{margin:0;color:var(--ink-faint);font-size:.92rem}.empty-mark{display:grid;flex:none;width:3.2rem;height:3.2rem;place-items:center;border-radius:50%;background:rgba(192,106,76,.1);color:var(--terra-deep);font-size:1.7rem}.empty-mark svg{width:2rem;fill:none;stroke:currentColor;stroke-width:1.5}.site-footer{margin-top:1rem;padding:2.4rem 0 2.8rem;border-top:1px solid var(--line);background:rgba(242,230,211,.5)}.footer-name{margin:0;font:600 1.15rem var(--display);letter-spacing:.04em}.footer-name span{display:block;margin-top:.2rem;color:var(--ink-faint);font:400 .82rem var(--body)}.footer-meta{margin:0;color:var(--ink-faint);font-size:.85rem}.footer-meta a{color:var(--ink-soft);text-decoration:none;border-bottom:1px solid var(--line)}.auth-shell{display:grid;grid-template-columns:minmax(0,430px) minmax(0,1fr);gap:clamp(2rem,7vw,7rem);align-items:center;min-height:calc(100vh - 190px);padding-block:3rem}.auth-card{padding:clamp(1.5rem,4vw,2.5rem);border:1px solid var(--line);background:var(--card);box-shadow:0 20px 55px rgba(74,49,34,.08)}.auth-card h1,.detail-controls h1{font-size:2.2rem}.auth-lede{margin:.75rem 0 1.7rem;font-size:.94rem}.auth-side{padding:2rem;border-left:1px solid var(--line);font:600 clamp(2.2rem,4vw,3.8rem)/1.38 var(--display)}.auth-side p{margin:.5rem 0}.auth-side em{color:var(--terra-deep);font-style:normal}.side-kicker{color:var(--sage);font:500 .8rem var(--body);letter-spacing:.2em}.side-rule{display:block;width:4rem;height:2px;margin-top:2rem;background:var(--sun)}.stack-form{display:grid;gap:1.1rem}.field{display:grid;gap:.42rem}.field label{font-weight:600;font-size:.9rem}.field input:not([type=file]),.field input[type=text],.field input[type=password],.field input[type=number]{width:100%;min-height:46px;padding:.65rem .75rem;border:1px solid var(--line);border-radius:5px;background:#fffefa;color:var(--ink);font:inherit}.field input[type=file]{max-width:100%;padding:.55rem;border:1px dashed var(--line);background:rgba(255,253,248,.7);font:inherit}.field-error,.form-alert{margin:0;color:#9b372d;font-size:.88rem}.form-alert ul{margin:.25rem 0;padding-left:1.2rem}.help-text,.help-text ul{color:var(--ink-faint);font-size:.82rem}.help-text ul{padding-left:1.1rem}.back-link{display:inline-block;margin-top:1.1rem;text-decoration:none;font-size:.9rem}.page-shell{padding-block:3.5rem 5rem}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;margin-bottom:2rem}.page-heading h1{font-size:clamp(2rem,4vw,3rem)}.page-lede{margin-top:.55rem}.count-seal{display:grid;place-items:center;width:5.1rem;height:5.1rem;border:1px solid rgba(192,106,76,.32);border-radius:50%;color:var(--terra-deep);font:600 1.35rem var(--display)}.count-seal small{margin-top:-1rem;font:400 .7rem var(--body)}.upload-panel{margin-bottom:2.2rem;border:1px solid var(--line);background:rgba(255,253,248,.72)}.upload-panel summary{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem 1rem;padding:1rem 1.15rem;cursor:pointer;font-weight:600;list-style:none}.upload-panel summary::-webkit-details-marker{display:none}.upload-panel summary:after{content:"＋";margin-left:auto;color:var(--terra)}.upload-panel[open] summary:after{content:"−"}.summary-hint{color:var(--ink-faint);font-size:.8rem;font-weight:400}.upload-form{padding:0 1.15rem 1.2rem}.upload-fields{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto;align-items:end;gap:1rem}.mine-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.1rem}.mine-card{overflow:hidden;border:1px solid var(--line);background:var(--card)}.mine-photo{display:block;aspect-ratio:4/3;overflow:hidden;background:var(--paper-deep)}.mine-photo img{display:block;width:100%;height:100%;object-fit:cover}.mine-card-meta{display:grid;gap:.2rem;padding:.7rem .8rem}.mine-card-meta a{overflow:hidden;color:var(--ink);text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.mine-card-meta time{color:var(--ink-faint);font-size:.78rem}.private-empty{padding:4rem 1rem;text-align:center}.private-empty h2{font-size:1.8rem}.private-empty p{margin:.6rem 0 0;color:var(--ink-faint)}.pagination{display:flex;align-items:center;justify-content:center;gap:1.3rem;margin-top:2rem;color:var(--ink-faint);font-size:.88rem}.pagination a{text-decoration:none}.detail-shell{padding-block:2rem 4rem}.detail-shell>.back-link{margin:0 0 1.5rem}.detail-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(270px,.7fr);gap:clamp(1.5rem,4vw,3rem);align-items:start}.detail-image{margin:0;padding:.7rem;border:1px solid var(--line);background:var(--card)}.detail-image img{display:block;width:100%;max-height:72vh;object-fit:contain;background:var(--paper-deep)}.detail-image figcaption{padding:.6rem .25rem .1rem;color:var(--ink-faint);font-size:.78rem}.detail-controls{padding:1.3rem;border:1px solid var(--line);background:rgba(255,253,248,.7)}.detail-controls h1{margin-bottom:1.4rem;overflow-wrap:anywhere}.download-button{margin-top:1.2rem}.delete-form{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--line)}.delete-form p{margin:.25rem 0 0;color:var(--ink-faint);font-size:.78rem}.danger-link{padding:0;border:0;background:none;color:#9b372d;font:600 .9rem var(--body);text-decoration:underline;cursor:pointer}.notices{padding-top:.7rem}.notice{margin:0;padding:.65rem .9rem;border-left:3px solid var(--sage);background:rgba(255,253,248,.75);font-size:.9rem}@media(max-width:820px){.hero-grid{grid-template-columns:1fr}.hero-note{min-height:auto;max-width:520px;width:100%;margin-inline:auto}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:200px}.mine-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.auth-shell{grid-template-columns:minmax(0,1fr);max-width:720px}.auth-side{display:none}.detail-layout{grid-template-columns:minmax(0,1fr) minmax(250px,.8fr)}}@media(max-width:560px){.shell{width:calc(100% - 1.5rem)}.site-header{padding:.75rem 0}.wordmark{font-size:1.12rem}.site-nav{gap:0;font-size:.82rem}.site-nav a,.nav-button{padding:.3rem .45rem}.hero{padding-top:2.5rem}.gallery-grid{grid-template-columns:1fr 1fr;grid-auto-rows:155px;gap:.6rem}.gallery-card-tall{grid-row:span 2}.section-heading{align-items:start}.empty-gallery{align-items:flex-start}.auth-shell{min-height:0;padding-block:2rem}.auth-card{padding:1.35rem}.page-shell{padding-top:2rem}.page-heading{align-items:flex-start}.count-seal{width:4.3rem;height:4.3rem;flex:none}.upload-fields{grid-template-columns:1fr}.upload-fields .button{width:100%}.mine-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.mine-card-meta{padding:.55rem}.detail-layout{grid-template-columns:1fr}.detail-image img{max-height:58vh}.footer-inner{align-items:flex-start;flex-direction:column}.hero-note{padding:.8rem .8rem .65rem}.line-art{max-height:270px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

/* The workbench keeps the family album's paper-and-photo character, with clear task grouping. */
.button-small{min-height:38px;padding:.42rem .72rem;font-size:.84rem}
.manage-shell{max-width:1180px}
.manage-section{margin-top:2.8rem;padding-top:2rem;border-top:1px solid var(--line)}
.manage-section-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.15rem}
.manage-section-heading h2{margin:0;font:600 clamp(1.5rem,3vw,2rem)/1.3 var(--display)}
.manage-section-heading p:not(.section-label){margin:.35rem 0 0;color:var(--ink-soft);font-size:.9rem}
.manage-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.manage-card{overflow:hidden;border:1px solid var(--line);background:var(--card);box-shadow:0 8px 22px rgba(74,49,34,.045)}
.manage-card>img,.manage-edit-layout>img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--paper-deep)}
.manage-card-body{display:grid;justify-items:start;gap:.45rem;padding:1rem}
.manage-card-body h3{margin:0;max-width:100%;overflow-wrap:anywhere;font:600 1.08rem/1.4 var(--display)}
.manage-card-body time,.manage-origin{margin:0;color:var(--ink-faint);font-size:.8rem}
.manage-state{display:inline-flex;align-items:center;gap:.4rem;color:var(--ink-faint);font-size:.78rem}
.manage-state:before{width:.45rem;height:.45rem;border-radius:50%;background:#b7aa96;content:""}
.manage-state.is-live{color:var(--sage)}
.manage-state.is-live:before{background:var(--sage)}
.manage-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.4rem}
.manage-actions form,.manage-card-body form{margin:0}
.manage-empty{padding:1.7rem;border:1px dashed rgba(59,48,42,.22);background:rgba(255,253,248,.55)}
.manage-empty h3{margin:0 0 .3rem;font:600 1.1rem var(--display)}
.manage-empty p{margin:0 0 .8rem;color:var(--ink-faint);font-size:.9rem}
.text-link{font-size:.9rem;text-decoration:none}
.photo-home-state{color:var(--sage);font-size:.82rem;font-weight:600}
.delete-link{display:inline-block;margin-top:1.2rem}
.manage-edit-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:clamp(1.5rem,5vw,4rem);align-items:start;margin-top:1.5rem}
.manage-edit-layout>img{position:sticky;top:6rem;max-height:72vh;aspect-ratio:auto;object-fit:contain;background:rgba(242,230,211,.6)}
.manage-edit-form{display:grid;gap:1.1rem;padding:clamp(1.2rem,3vw,2rem);border:1px solid var(--line);background:var(--card)}
.manage-edit-form h1{margin:0 0 .4rem;font-size:2rem}
@media(max-width:820px){.manage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.manage-edit-layout{grid-template-columns:1fr}.manage-edit-layout>img{position:static;max-height:55vh}}
@media(max-width:560px){.manage-grid{grid-template-columns:1fr 1fr;gap:.65rem}.manage-card-body{padding:.7rem}.manage-actions{display:grid;width:100%}.manage-actions .button,.manage-card-body .button{width:100%}.manage-section-heading{align-items:flex-start;flex-direction:column}.manage-edit-layout{gap:1rem}.manage-edit-form{padding:1rem}}
.manage-shell{max-width:1040px}.manage-section{margin-top:3rem}.manage-section-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.manage-section-heading h2{margin:0;font:600 clamp(1.5rem,3vw,2rem)/1.3 var(--display)}.manage-section-heading>div>p:last-child{margin:.45rem 0 0;color:var(--ink-faint);font-size:.88rem}.manage-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.manage-card{overflow:hidden;border:1px solid var(--line);background:var(--card);box-shadow:0 8px 24px rgba(74,49,34,.05)}.manage-card>img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--paper-deep)}.manage-card-body{display:grid;gap:.45rem;padding:1rem}.manage-card-body h3{margin:0;font:600 1.05rem var(--display);overflow-wrap:anywhere}.manage-card-body time,.manage-origin{margin:0;color:var(--ink-faint);font-size:.82rem}.manage-state{width:max-content;padding:.12rem .55rem;border-radius:999px;background:var(--paper-deep);color:var(--ink-soft);font-size:.75rem}.manage-state.is-live{background:#e8eddc;color:#4c633d}.manage-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem;margin-top:.35rem}.manage-actions form{margin:0}.button-small{min-height:38px;padding:.45rem .72rem;font-size:.82rem}.manage-empty{padding:1.5rem;border:1px dashed var(--line);background:rgba(255,253,248,.55)}.manage-empty h3{margin:0 0 .3rem;font:600 1.1rem var(--display)}.manage-empty p{margin:0;color:var(--ink-faint);font-size:.9rem}.text-link{font-size:.9rem;text-decoration:none}.manage-edit-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);gap:2rem;align-items:start;margin-top:1.5rem}.manage-edit-layout>img{display:block;width:100%;max-height:70vh;object-fit:contain;background:var(--paper-deep)}.manage-edit-form{display:grid;gap:1rem;padding:1.5rem;border:1px solid var(--line);background:var(--card)}.manage-edit-form h1{font-size:2rem}.delete-link{display:inline-block;margin-top:1.5rem}.delete-confirm-preview{display:block;width:min(100%,560px);max-height:55vh;margin:1.25rem auto;object-fit:contain;background:var(--paper-deep)}.delete-confirm-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}.button-danger{background:#9b372d;color:#fff}.button-danger:hover{background:#7e2b24;color:#fff}@media(max-width:800px){.manage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.manage-edit-layout{grid-template-columns:1fr}}@media(max-width:520px){.manage-grid{grid-template-columns:1fr}.manage-card{display:grid;grid-template-columns:40% 1fr}.manage-card>img{height:100%;aspect-ratio:auto}.manage-section-heading{align-items:start;flex-direction:column}.manage-actions .button{width:100%}.delete-confirm-actions{flex-direction:column}.delete-confirm-actions .button{width:100%}}
