:root{--ink:#192736;--muted:#606b77;--paper:#fff;--bg:#f3f5f7;--accent:#a45430;--line:#dce1e5;--serif:Georgia,'Times New Roman',serif}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:16px;line-height:1.55}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,.book:focus-visible{outline:3px solid #b36a37;outline-offset:4px}h1,h2,h3,p{margin-top:0}h1,h2{font-family:var(--serif);font-weight:400;line-height:1.13}h1{font-size:clamp(2rem,4vw,3.3rem);margin-bottom:16px;overflow-wrap:anywhere}h2{font-size:1.65rem;margin-bottom:16px}h3{font-size:1rem}p{margin-bottom:18px}.muted{color:var(--muted)}.small{font-size:.875rem}.eyebrow{font-size:.75rem;letter-spacing:.18em;font-weight:650;color:var(--accent);margin-bottom:16px}.primary,.secondary,.text-button{display:inline-flex;align-items:center;justify-content:center;gap:16px;border-radius:6px;padding:12px 19px;min-height:46px;font-size:.9375rem;font-weight:550;border:1px solid transparent;line-height:1.4}.primary{background:var(--ink);color:white}.primary:hover{background:#2d4258}.secondary{background:white;border-color:var(--line);color:var(--ink)}.text-button{background:transparent;color:var(--ink);padding:9px 12px}.text-button:hover{text-decoration:underline}.wide{width:100%}.button-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.topbar{height:86px;background:white;border-bottom:1px solid var(--line);padding:0 max(24px,calc((100vw - 1240px)/2));display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{font-family:var(--serif);font-size:2rem;white-space:nowrap;letter-spacing:-1px}.brand-dot{color:var(--accent)}nav{display:flex;align-items:center;gap:24px}.private{font-size:.875rem;color:var(--muted)}footer{text-align:center;color:var(--muted);font-family:var(--serif);font-style:italic;padding:38px 24px;font-size:.9375rem}.workspace{max-width:1288px;padding:46px 24px;margin:auto}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:36px}.section-heading h1{margin-bottom:0}.section-heading .eyebrow{margin-bottom:10px}.back{display:inline-block;color:var(--muted);font-size:.9375rem;margin-bottom:24px}.empty{text-align:center;background:white;border:1px solid var(--line);padding:70px 24px}.empty h2{font-size:2.4rem}.empty p{color:var(--muted)}.empty .small{margin:18px 0 0}.empty-mark{font-size:3rem;color:var(--accent);display:block;margin-bottom:15px}.album-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}.album-cover{display:flex;align-items:center;justify-content:center;background:#e1e6eb;aspect-ratio:1/1;border:12px solid white;box-shadow:0 8px 20px #19273612}.album-cover img{width:100%;height:100%;object-fit:contain}.album-cover span{font:1.5rem var(--serif);text-align:center;padding:20px}.album-meta{display:flex;justify-content:space-between;gap:10px;margin-top:18px}.album-meta h2{font-size:1.5rem;margin-bottom:8px;overflow-wrap:anywhere}.album-meta p{font-size:.875rem}.login-wrap{min-height:85vh;display:grid;place-items:center;padding:40px 20px;background:linear-gradient(135deg,#e6ecf1,#fff 65%)}.login-card{max-width:470px;width:100%;padding:38px 44px;background:white;box-shadow:0 20px 80px #19273610;border-top:3px solid var(--accent)}.login-card h1{font-size:3.5rem;letter-spacing:-1.5px}.login-card form{margin-top:30px}.login-card>.small{margin-top:22px;margin-bottom:0}.book-mark{font-size:2.5rem;color:var(--accent);margin-bottom:16px}label{display:block;font-size:.9375rem;font-weight:550;margin:16px 0 7px}input:not([type=checkbox]):not([type=file]),textarea{width:100%;border:1px solid #bdc7cf;background:white;border-radius:5px;padding:11px;color:var(--ink)}textarea{resize:vertical}label.check{display:flex;gap:10px;align-items:center;font-weight:400;font-size:.875rem;margin:18px 0 24px}.check input{width:18px;height:18px;flex-shrink:0}.error{color:#a12f2f;font-size:.9375rem;overflow-wrap:anywhere}.notice{max-width:1240px;margin:20px auto 0;background:#e2efe7;color:#224d32;padding:12px 18px;border-radius:5px}dialog{width:min(470px,calc(100% - 32px));border:1px solid var(--line);border-radius:8px;padding:30px;box-shadow:0 20px 80px #0003}dialog::backdrop{background:#19273688}dialog .button-row{justify-content:flex-end;margin-top:24px}.editor-layout{display:grid;grid-template-columns:300px 1fr;gap:32px;align-items:start}.panel{background:white;border:1px solid var(--line);padding:24px;border-radius:8px}.details h2{font-size:1.5rem}.details .small{margin-top:8px}.print-info{border-top:1px solid var(--line);margin-top:28px;padding-top:22px}.upload-box{padding:30px 24px;text-align:center;background:white;border:1px dashed #9aaab7;border-radius:8px}.upload-box h2{margin-bottom:8px}.file-label{position:relative;overflow:hidden;cursor:pointer;margin:0 0 14px}.file-label input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}.file-label:focus-within{outline:3px solid #b36a37;outline-offset:4px}progress{width:100%;accent-color:var(--ink)}.photo-heading{display:flex;align-items:center;justify-content:space-between;margin:28px 0 4px;gap:14px}.photo-heading h2{margin:0}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.photo-card{background:white;border:1px solid var(--line);border-radius:8px;overflow:hidden;scroll-margin-top:24px}.photo-card>img{width:100%;height:250px;object-fit:contain;background:#e9edf0;display:block}.photo-card form{padding:0 16px 16px}.photo-actions{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}.photo-actions button{font-size:.875rem;border:0;background:#f1f3f5;padding:8px 10px;border-radius:4px;min-height:40px}.photo-actions .danger{color:#9b3333}.reader{max-width:1080px;margin:auto;padding:24px}.reader-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px}.reader-toolbar .back{margin:0}.reader #copy-status{min-height:22px;margin:8px 0;text-align:right}.book{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;max-width:720px;margin:0 auto;box-shadow:0 14px 46px #1927361c;background:white}.book::-webkit-scrollbar{display:none}.book-page{flex:0 0 100%;min-width:0;aspect-ratio:1/1;scroll-snap-align:start;position:relative;padding:6%;display:flex;flex-direction:column;align-items:center;overflow:hidden;background:white}.book-page.cover .eyebrow{margin:0 0 4%;font-size:.75rem}.cover-photo{width:100%;height:60%;object-fit:contain;min-height:0}.book-page.cover h1{font-size:clamp(1.5rem,3.5vw,2.7rem);text-align:center;margin:4% 0 2%;line-height:1.1;max-width:100%}.subtitle{text-align:center;font-size:clamp(.875rem,1.5vw,1rem);overflow-wrap:anywhere;line-height:1.25}.cover-placeholder{height:55%;display:grid;place-items:center;font-family:var(--serif);color:var(--muted)}.page-number{position:absolute;bottom:2%;font-size:.75rem;color:var(--muted);left:50%;transform:translateX(-50%)}.book-page.note h2{margin:3% 0 6%;font-size:clamp(1.5rem,3vw,2rem)}.personal-note{white-space:pre-wrap;overflow-wrap:anywhere;overflow-y:auto;width:100%;font:clamp(.9375rem,1.8vw,1.15rem)/1.7 var(--serif);padding:0 3%;min-height:0}.page-photos{display:flex;width:100%;height:100%;gap:4%}.page-photos figure{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;margin:0}.page-photos img{width:100%;height:77%;object-fit:contain;min-height:0}.page-photos figcaption{text-align:center;font-family:var(--serif);font-size:clamp(.875rem,1.7vw,1rem);line-height:1.45;padding-top:6%;width:100%;overflow-wrap:anywhere;overflow-y:auto;flex:1;padding-bottom:7%}.reader-controls{display:flex;align-items:center;justify-content:center;gap:28px;margin-top:24px;font-size:.9375rem}.reader-hint{text-align:center;margin:16px 0 0}@media(max-width:850px){.album-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.editor-layout{grid-template-columns:1fr}.details{display:grid;grid-template-columns:1fr 1fr;gap:28px}.print-info{margin:0;border:0;border-left:1px solid var(--line);padding:0 0 0 24px}.reader-toolbar{align-items:flex-start}.reader-toolbar .button-row{justify-content:flex-end}.book-page{padding:7%}}@media(max-width:560px){.topbar{height:72px;padding:0 18px}.private{display:none}.workspace{padding:28px 18px}.section-heading{align-items:flex-start;flex-direction:column;gap:18px}.album-grid{grid-template-columns:1fr;gap:24px}.empty{padding:42px 18px}.empty h2{font-size:2rem}.login-card{padding:30px 25px}.login-card h1{font-size:3rem}.details{display:block}.print-info{border:0;border-top:1px solid var(--line);padding:22px 0 0;margin-top:28px}.photo-grid{grid-template-columns:1fr}.reader{padding:18px 10px}.reader-toolbar{flex-direction:column;align-items:stretch;padding:0 8px}.reader-toolbar .button-row{justify-content:flex-start;gap:6px}.reader-toolbar .secondary,.reader-toolbar .text-button{padding:10px;font-size:.875rem}.book-page.cover h1{font-size:1.5rem}.book-page.cover .eyebrow{font-size:.75rem;letter-spacing:.12em}.book-page.note{aspect-ratio:auto;min-height:100%;height:calc(100vw - 20px)}footer{padding:28px 18px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.ai-trigger{background:transparent;color:var(--accent);border:0;padding:10px 0;font-size:.9375rem;min-height:44px;cursor:pointer;text-align:left}.ai-trigger:hover{text-decoration:underline}.ai-heading-row{display:flex;align-items:flex-start;gap:12px;justify-content:space-between}.ai-heading-row h2{margin-bottom:12px}.ai-heading-row .eyebrow{font-size:.75rem;letter-spacing:.12em}.ai-modes{border:0;padding:0;margin:8px 0 18px}.ai-modes legend{font-weight:550;font-size:.9375rem}.ai-modes label{display:flex;align-items:center;gap:10px;font-weight:400;margin:10px 0}.ai-modes input[type=radio]{width:18px!important;height:18px;accent-color:var(--ink)}#ai-dialog{width:min(540px,calc(100% - 24px));max-height:90vh;overflow-y:auto}#ai-photo-preview{width:100%;height:140px;object-fit:contain;background:var(--bg);margin-top:12px}select{font:inherit;color:var(--ink);width:100%;border:1px solid #bdc7cf;border-radius:5px;padding:11px;background:white}#ai-privacy{margin:10px 0 18px}#ai-status{margin:12px 0}#ai-result{border-top:1px solid var(--line);padding-top:8px}.ai-footnote{margin:18px 0 0}.ai-setup{max-width:710px}.ai-setup .panel{padding:32px}.ai-setup h1{font-size:2.5rem}.ai-setup-details{border-top:1px solid var(--line);padding-top:24px;margin-top:28px}.ai-setup-details h2{font-size:1.6rem}.ai-setup .notice{margin:0 0 20px}.ai-setup code{display:block;background:var(--bg);padding:12px;overflow-wrap:anywhere;font-size:.875rem}.upload-box>.secondary{margin:0 0 14px 8px}[hidden]{display:none!important}
.setup-steps{padding-left:24px}.setup-steps li{margin:14px 0}.setup-steps a,.ai-setup p a{color:var(--accent);text-decoration:underline}details summary{cursor:pointer;font-weight:600;margin-bottom:16px}#google-picker .wide{margin-bottom:14px}#google-progress{margin-bottom:16px}#google-status{margin-top:12px}
/* Handmade scrapbook pages, with full photographs kept inside their frames. */
.book-page{background-color:#f8f0df;background-image:repeating-linear-gradient(0deg,transparent 0 17px,#ae957519 17px 18px);padding:9%;isolation:isolate}
.book-page:before{content:'';position:absolute;inset:7% 5% 8%;background:#fffbf1;box-shadow:5px 6px 0 #e7d2bf;transform:rotate(-1deg);z-index:-1}
.page-photos{align-items:center;gap:6%;padding:3% 0 8%}
.page-photos figure{position:relative;height:87%;padding:3%;background:#fffef9;box-shadow:3px 6px 10px #65482e26;transform:rotate(-3deg)}
.page-photos figure:before,.cover-photo:after{content:'';position:absolute;width:28%;height:18px;top:-7px;left:36%;background:#d9b59acc;transform:rotate(3deg);z-index:1}
.page-photos figure:nth-child(2){transform:translateY(5%) rotate(4deg)}
.book-page:nth-child(even) .count-1 figure{transform:rotate(3deg)}
.page-photos img{height:70%;flex:1;min-height:0;background:#f6f1e8}
.page-photos figcaption{flex:0 1 auto;max-height:30%;padding:7% 2% 2%;font-style:italic;color:#594b40;font-size:clamp(.75rem,1.7vw,1rem)}
.page-photos.count-2 figure{height:78%;padding:3%}
.page-photos.count-2 figcaption{max-height:37%;font-size:clamp(.7rem,1.5vw,.95rem)}
.cover-photo{transform:rotate(-3deg);border:10px solid #fffef9;box-shadow:3px 6px 10px #65482e26;background:#fffef9;margin-top:2%}
.book-page.cover h1{margin-top:7%;color:#594b40}
.book-page.note .personal-note{background:repeating-linear-gradient(transparent 0 1.7em,#b99b7526 1.7em calc(1.7em + 1px));font-style:italic}
.page-number{color:#81664f}
