:root{--green:#17352f;--green-deep:#0e2723;--cream:#f7f3e9;--paper:#fffdfa;--gold:#ba9c66;--ink:#263630;--muted:#6d756f;--border:#dedccf;--font:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:var(--font);background:var(--cream);-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Georgia,"Times New Roman",serif;font-weight:400}button,input{font:inherit}button{cursor:pointer}a{color:inherit}a:hover{text-decoration-color:var(--gold)}.eyebrow{font-size:.7rem;letter-spacing:.19em;text-transform:uppercase;font-weight:700}.guest-hero{background:radial-gradient(ellipse at 4% 8%,#315a4d 0,transparent 36%),radial-gradient(ellipse at 96% 90%,#27483c 0,transparent 39%),linear-gradient(145deg,var(--green),var(--green-deep));color:#fff9e9;text-align:center;padding:64px 20px 78px;position:relative}.guest-hero:before,.guest-hero:after{content:"✧";position:absolute;top:44%;font-size:4rem;color:#b8a67c;opacity:.24}.guest-hero:before{left:9%}.guest-hero:after{right:9%}.hero-inner{max-width:660px;margin:auto}.hero-stars{color:var(--gold);letter-spacing:1em;font-size:1rem;margin-bottom:28px}.guest-hero .eyebrow{color:#decfac;font-size:.68rem}.guest-hero h1{font-size:clamp(3rem,9vw,5.2rem);line-height:1.06;letter-spacing:-.035em;margin:19px 0 12px}.kicker{font-family:Georgia,serif;font-size:clamp(1.45rem,4vw,2rem);letter-spacing:.12em;margin-bottom:24px;color:#e7d5ad}.intro{margin:0 auto;max-width:490px;line-height:1.7;color:#e8e8df;font-size:.95rem}.guest-content{max-width:890px;margin:auto;padding:42px 18px 90px}.section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;padding:0 3px 18px}.section-head .eyebrow{color:#7e6743;margin:0}.section-head p{font-size:.79rem;margin:0;color:var(--muted);text-align:right;max-width:250px}.challenges{display:grid;gap:13px}.challenge{background:var(--paper);border:1px solid var(--border);border-radius:14px;display:flex;align-items:center;gap:18px;padding:21px;box-shadow:0 4px 18px #172c2220}.emoji{background:#f3efe4;border-radius:13px;width:61px;height:61px;display:grid;place-items:center;font-size:1.8rem;flex:none}.challenge-copy{flex:1;min-width:0}.number{display:block;color:#927c56;font-size:.63rem;letter-spacing:.15em;font-weight:700;margin-bottom:5px}.challenge h2{font-size:1.45rem;margin:0 0 4px;color:#20382f;line-height:1.2}.challenge p{font-size:.81rem;color:#747b75;margin:0;line-height:1.45}.upload-open{background:var(--green);color:white;border:0;border-radius:8px;font-size:.84rem;font-weight:600;white-space:nowrap;padding:13px 16px}.upload-open:hover{background:#285749}.upload-open span{margin-left:7px;color:#e2c88c}.upload-open.uploaded{background:#426e51}.footer-note{text-align:center;color:#6e756d;line-height:1.6;margin-top:45px;font-family:Georgia,serif;font-size:1.15rem}.footer-note>span{color:#be966e}.footer-note small{display:block;max-width:550px;margin:13px auto 0;font-family:var(--font);font-size:.76rem}.upload-dialog{border:0;border-radius:16px;padding:27px;width:min(94vw,460px);max-height:90vh;box-shadow:0 20px 80px #001e16a0}.upload-dialog::backdrop{background:#061a16b7}.dialog-top{display:flex;align-items:start;justify-content:space-between}.dialog-top .eyebrow{color:#947b4d;margin:8px 0}.dialog-top button{border:0;background:transparent;color:#56635b;font-size:2rem;line-height:1;padding:0 4px}.upload-dialog h2{font-size:2rem;line-height:1.15;margin:8px 0 26px}.input-label{font-size:.8rem;display:block;font-weight:700;margin:18px 0 8px}.input-label small{font-weight:400;color:#7b837c}.upload-dialog input{width:100%;padding:14px 12px;border:1px solid #cfd2c9;border-radius:8px;background:#fbfbf7;color:var(--ink);font-size:.92rem}.upload-dialog input[type=file]{background:#f3f4ef;font-size:.8rem}.file-hint{color:#707970;font-size:.72rem;line-height:1.5}.primary-button{display:inline-block;text-align:center;padding:13px 17px;background:var(--green);border:0;color:#fff;text-decoration:none;border-radius:8px;font-weight:650;font-size:.83rem}.primary-button:hover{background:#2d594c}.primary-button:disabled{opacity:.6;cursor:wait}.upload-dialog .primary-button{margin-top:15px;width:100%}#message{font-size:.84rem;line-height:1.4;margin-top:12px}#message.success{background:#e5f5e8;color:#1a6034;border-radius:8px;padding:12px}#message.error{background:#fff0e9;color:#992d22;border-radius:8px;padding:12px}.center-message{text-align:center;max-width:500px;margin:15vh auto;padding:20px}.center-message .mark{font-size:3rem;color:#a79567}.center-message h1{font-size:2.9rem}.admin-page{background:#f5f4ee}.admin-wrap{max-width:1140px;margin:55px auto;padding:0 24px 70px}.admin-top{display:flex;align-items:end;justify-content:space-between;gap:28px;margin-bottom:32px}.admin-top h1{font-size:2.7rem;margin:10px 0}.admin-top p{color:#68766d;font-size:.85rem}.admin-top .eyebrow{color:#9c7e52}.admin-actions{display:flex;gap:10px;flex-wrap:wrap}.subtle-button{display:inline-block;padding:12px 16px;background:#fff;border:1px solid #c9d0c9;border-radius:8px;text-decoration:none;font-size:.82rem;font-weight:650}.admin-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.admin-album{display:flex;align-items:center;gap:16px;background:white;border:1px solid #dddcd4;border-radius:14px;padding:20px;text-decoration:none}.admin-album:hover{border-color:var(--gold)}.admin-album .emoji{width:52px;height:52px}.admin-album h2{font-size:1.3rem;margin:0 0 5px}.admin-album p{font-size:.8rem;color:#6d776f;margin:0}.chevron{margin-left:auto;color:#698275}.help-note{margin-top:26px;color:#667068;font-size:.8rem}.back-link{font-size:.85rem;color:#536e59;text-decoration:none}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.photo-card{border-radius:12px;border:1px solid #dddcd4;background:white;overflow:hidden}.photo-card>a{display:block;aspect-ratio:4/3;background:#e8e8e0}.photo-card>a img{width:100%;height:100%;object-fit:cover;display:block}.heic-placeholder{display:flex;align-items:center;justify-content:center;flex-direction:column;height:100%;font-size:2.3rem}.heic-placeholder small{font-size:.75rem;color:#718078;margin-top:7px}.photo-caption{display:grid;gap:7px;padding:13px}.photo-caption strong{font-size:.8rem}.photo-caption small,.photo-caption a{font-size:.72rem;color:#637369}.print-page{background:#efeeea}.print-toolbar{max-width:900px;margin:20px auto;display:flex;justify-content:space-between;padding:0 15px}.print-toolbar a{align-self:center}.print-toolbar button{background:var(--green);color:white;border:0;border-radius:6px;padding:12px 22px;font-weight:700}.print-warning{max-width:900px;margin:10px auto;color:#921c10;background:#ffe4d5;padding:13px;font-size:.9rem}.print-sheet{width:190mm;max-width:100%;margin:16px auto 30px;display:flex;flex-direction:column;gap:5mm}.print-card{background:#fdfbf5;border:1.5mm solid #1b3e35;border-radius:3mm;display:flex;height:132mm;padding:7mm;gap:5mm;position:relative;overflow:hidden}.print-left{width:66%;position:relative}.print-subheading{font-size:2.6mm;letter-spacing:.15em;font-weight:700;text-transform:uppercase;color:#667869;margin:0}.print-decoration{font-size:8mm;color:#b89c69;position:absolute;top:4mm;right:4mm}.print-card h2{font-size:11mm;line-height:1;margin:6mm 0 2mm;color:#1a3d35;letter-spacing:-.025em}.print-name{font-family:Georgia,serif;font-size:6mm;color:#96784f;margin:0 0 3mm}.print-description{font-size:3.2mm;margin:0 0 5mm;color:#58675d}.print-card ol{display:grid;grid-template-columns:1fr 1fr;gap:3mm 4mm;list-style:none;padding:0;margin:0}.print-card li{font-size:3.25mm;color:#254039;font-weight:600}.print-card li span{margin-right:1mm}.print-right{width:34%;border-left:.35mm solid #c9c5b7;padding-left:4mm;text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}.print-right img{width:100%;max-width:38mm;image-rendering:crisp-edges}.print-right strong{font-size:6mm;letter-spacing:.13em;color:#244638;margin:3mm 0}.print-right p{font-size:3.3mm;line-height:1.5;color:#375045;margin:0 0 3mm}.print-right small{font-size:2.7mm;color:#748176}
@media(max-width:650px){.guest-hero{padding:48px 22px 55px}.guest-hero:before,.guest-hero:after{display:none}.guest-content{padding:30px 13px 60px}.challenge{padding:14px 12px;gap:10px;border-radius:10px}.challenge .emoji{width:43px;height:43px;font-size:1.35rem;border-radius:9px}.challenge h2{font-size:1.12rem}.challenge p{font-size:.73rem}.challenge .number{font-size:.58rem}.upload-open{padding:10px 11px;font-size:.76rem}.upload-open span{margin-left:2px}.admin-top{flex-direction:column;align-items:start}.admin-list{grid-template-columns:1fr}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-wrap{margin-top:25px;padding:0 14px 50px}.admin-top h1{font-size:2.15rem}.print-sheet{overflow:hidden}.print-card{height:auto;min-height:100mm;padding:4mm}.print-left{width:64%}.print-right{width:36%}.print-card h2{font-size:7mm}.print-card li{font-size:2.5mm}.print-name{font-size:4.3mm}.print-description{font-size:2.6mm}.print-card ol{grid-template-columns:1fr}}
@media(max-width:380px){.challenge .emoji{display:none}.challenge{gap:8px}.challenge h2{font-size:1.05rem}.upload-open{padding:10px 9px}.photo-grid{grid-template-columns:1fr}}
@page{size:A4 portrait;margin:10mm}@media print{body.print-page{background:white;-webkit-print-color-adjust:exact;print-color-adjust:exact}.print-toolbar,.print-warning{display:none!important}.print-sheet{width:190mm;margin:0;gap:5mm}.print-card{break-inside:avoid;page-break-inside:avoid;border-radius:0;height:132mm}.print-left{width:66%}.print-right{width:34%}.print-card h2{font-size:11mm}.print-card li{font-size:3.25mm}.print-card ol{grid-template-columns:1fr 1fr}}

/* Wedding photo dashboard statistics — v1.1 */
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 12px}
.stat-card{background:#fff;border:1px solid #deddd4;padding:18px;border-radius:13px;display:flex;flex-direction:column;gap:8px;min-width:0}
.stat-card>span{font-size:.75rem;color:#666f68;font-weight:650}
.stat-card>strong{font-size:clamp(1.1rem,2vw,1.6rem);font-family:Georgia,serif;font-weight:400;color:#1b3e35;white-space:nowrap}
.stat-card>small{font-size:.67rem;color:#7c847d;line-height:1.3}
.quota-line{height:7px;background:#dfdfd5;border-radius:99px;overflow:hidden}
.quota-line>div{background:#a2885f;height:100%;border-radius:99px}
.quota-caption{color:#737b73;font-size:.73rem;margin:8px 0 28px}
.albums-heading{font-size:1.65rem;margin:0 0 16px}
@media(max-width:850px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.stats-grid{gap:9px}.stat-card{padding:12px}.stat-card>strong{font-size:1.13rem}}

/* Allow the longer couple title to fit on printed cards. */
.print-card h2{font-size:9mm}
@media print{.print-card h2{font-size:9mm}}

/* Admin-only safe photo management — v1.2 */
.photo-operation{margin:0;padding:0;display:block}
.photo-action{background:#edf3ef;border:1px solid #bed0c4;color:#194a38;padding:9px 11px;font-size:.77rem;line-height:1.2;border-radius:8px;cursor:pointer;font-weight:650;width:100%;text-align:center}
.photo-action:hover{background:#dce9df}
.photo-action.danger{background:#fff6f4;border-color:#edc2ba;color:#9b3028}
.photo-action.danger:hover{background:#fde7e2}
.photo-action:disabled{opacity:.55;cursor:wait}
.removed-category{font-size:.73rem;color:#66786d;font-weight:650;margin:0 0 6px}
.admin-actions{flex-wrap:wrap}

/* v1.3: private accounts, album photobook, duplex cards */
.account-bar{display:flex;gap:15px;align-items:center;justify-content:flex-end;margin-bottom:20px;color:#62756b;font-size:.8rem}
.account-bar form{margin:0}.account-bar button{border:0;background:none;color:#244b40;text-decoration:underline;cursor:pointer;font-size:.8rem}
.login-page{background:#f4f1e8;min-height:100vh}.login-shell{min-height:100vh;display:grid;place-items:center;padding:25px}
.login-panel{width:min(100%,450px);background:#fffcf6;border:1px solid #dedacc;border-radius:18px;box-shadow:0 12px 45px #163b2912;padding:clamp(24px,6vw,48px);text-align:center}
.login-decoration{font-size:2rem;color:#b79b6b;margin:10px 0}.login-panel h1{font-family:Georgia,serif;color:#173b32;font-size:clamp(2rem,5vw,3rem);margin:12px 0;line-height:1.1}
.login-intro{color:#65756b;margin:12px 0 25px}.login-form{display:grid;text-align:left;gap:9px}.login-form label{font-size:.8rem;font-weight:700;color:#41584b}
.login-form input{height:47px;font-size:1rem;border:1px solid #cbd5cb;border-radius:9px;padding:10px 12px;background:white;margin-bottom:7px}
.login-form input:focus{outline:2px solid #a0bfae;outline-offset:1px}.login-form button{text-align:center;border:none;cursor:pointer;margin-top:12px}
.login-error{background:#ffefeb;color:#893a2d;padding:10px;border-radius:8px;font-size:.83rem}.login-help{font-size:.75rem;color:#7a877b;margin-top:23px}
.photo-thumb{cursor:zoom-in}.photobook{width:min(94vw,1100px);height:min(94vh,900px);max-width:none;max-height:none;border:0;border-radius:12px;padding:0;background:#0e1c18;color:#fbf7eb;box-shadow:0 15px 75px #0009}
.photobook::backdrop{background:rgba(0,0,0,.84)}.photobook-header,.photobook-footer{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;gap:12px;font-size:.9rem}
.photobook-header button{border:0;background:transparent;color:white;font-size:2rem;cursor:pointer}.photobook-media{height:calc(100% - 112px);display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 7px}
.photobook-media>button{border:0;border-radius:999px;cursor:pointer;width:46px;height:46px;background:#ffffff1d;color:#fff;font-size:2rem;flex:0 0 46px}
.photobook-image{height:100%;width:100%;min-width:0;display:grid;place-items:center}.photobook-image img{display:block;width:100%;height:100%;max-height:100%;object-fit:contain}.photobook-image img[hidden]{display:none}.photobook-image p{color:#efebe3;text-align:center;padding:15px}
.photobook-footer a{color:#f3d9a5}.photobook-footer span{font-size:.82rem;color:#d5dfd9}
@media(max-width:550px){.photobook{width:100vw;height:100dvh;border-radius:0}.photobook-media>button{width:35px;height:42px;flex-basis:35px;font-size:1.5rem}.account-bar{justify-content:flex-start}}
/* Print: three identical cards, 87mm tall each, 6mm gutters, with 10mm page margins. */
.print-toolbar{max-width:850px;gap:12px}.print-toolbar>div{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.print-toolbar span{font-size:.74rem;color:#5b6d65}
.print-screen-label{max-width:190mm;margin:26px auto 7px;color:#6b746c;font-size:.72rem;letter-spacing:.1em;font-weight:700}
.print-sheet{width:190mm;max-width:100%;display:flex;flex-direction:column;gap:6mm;margin:0 auto 25px}
.print-card{box-sizing:border-box;width:100%;height:87mm;min-height:87mm;max-height:87mm;flex:0 0 87mm;padding:5mm 6mm;gap:5mm;border:.4mm solid #21463d;border-radius:2mm;overflow:hidden;background:#fdfbf5;display:flex}
.print-left{width:69%}.print-right{width:31%;padding-left:3mm}.print-card h2,.print-card.print-card-back h2{font-size:7mm;line-height:1.04;margin:3mm 0 1mm}.print-card .print-name{font-size:4.8mm;margin-bottom:1.7mm}
.print-description{font-size:2.9mm;margin-bottom:2.6mm}.print-card ol{display:grid;grid-template-columns:1fr 1fr;gap:2mm 2mm}.print-card li{font-size:2.75mm;line-height:1.15}
.print-subheading{font-size:2.35mm}.print-right img{max-width:32mm;width:100%}.print-right strong{font-size:4mm;margin:1.5mm 0}.print-right p{font-size:2.9mm;line-height:1.4}
.print-card-back .print-back-copy{width:69%}.print-card-back .print-description{margin-top:3mm}.print-card-back .print-steps{display:grid;grid-template-columns:1fr;list-style:none;gap:3mm;margin:3mm 0;padding:0}
.print-card-back .print-steps li{font-size:3.4mm}.print-card-back .print-steps b{margin-right:3mm;color:#9c8053}.print-card-back .print-thanks{font-family:Georgia,serif;font-size:4.2mm;color:#9c8053;margin:4mm 0 0}
.print-lamination-tip{max-width:190mm;margin:25px auto 45px;color:#526a5c;font-size:.8rem}
@page{size:A4 portrait;margin:10mm}
@media print{
  html,body{margin:0!important;padding:0!important}body.print-page{background:#fff!important}
  .print-toolbar,.print-warning,.print-screen-label,.print-lamination-tip{display:none!important}
  .print-sheet{width:190mm!important;height:273mm!important;max-width:none!important;margin:0!important;gap:6mm!important;break-after:page;page-break-after:always}
  .print-sheet:last-of-type{break-after:auto;page-break-after:auto}
  .print-card{width:190mm!important;height:87mm!important;min-height:87mm!important;max-height:87mm!important;flex:0 0 87mm!important;border:.4mm solid #21463d!important;border-radius:2mm!important;padding:5mm 6mm!important;break-inside:avoid!important;page-break-inside:avoid!important}
  .print-left{width:69%!important}.print-right{width:31%!important}.print-card h2,.print-card.print-card-back h2{font-size:7mm!important}
  .print-card ol{grid-template-columns:1fr 1fr!important}.print-card li{font-size:2.75mm!important}.print-card .print-name{font-size:4.8mm!important}
}
@media screen and (max-width:800px){.print-sheet{min-width:630px}.print-page{overflow-x:auto}}
/* Balanced table-card layout, with scan-safe QR size. */
.print-card .print-left,.print-card .print-back-copy{display:flex;flex-direction:column;justify-content:center}
.print-card .print-left h2,.print-card .print-back-copy h2{font-size:7.8mm;line-height:1.08}
.print-card .print-left ol{gap:3mm 3mm}
.print-card .print-left li{font-size:3mm}
.print-card .print-back-copy .print-steps{grid-template-columns:1fr!important;gap:3mm}
.print-card .print-right img{max-width:38mm}
@media print{
  .print-card .print-left,.print-card .print-back-copy{display:flex!important;flex-direction:column!important;justify-content:center!important}
  .print-card .print-left h2,.print-card .print-back-copy h2{font-size:7.8mm!important}
  .print-card .print-left li{font-size:3mm!important}
  .print-card .print-back-copy .print-steps{grid-template-columns:1fr!important}
}
