:root{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;color:#20392d;background:#ede7d8}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 10% 0%,#f7eed9,#e7e0d2 72%);min-height:100vh}.shell{max-width:780px;margin:auto;padding:22px 16px 45px}header{text-align:center;padding:25px 10px 28px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.22em;color:#9b472e}h1{font-family:Georgia,serif;font-size:clamp(38px,8vw,64px);line-height:1.05;margin:12px 0;color:#183f31}h1 em{display:block;font-weight:normal;color:#ad4f33}.subtitle{max-width:540px;line-height:1.65;margin:15px auto;color:#5c655b}.panel{background:#fffdf7;border:1px solid #d9ceba;border-radius:18px;padding:24px;margin:15px 0;box-shadow:0 6px 24px #263f2310}h2{font:normal 26px Georgia,serif;margin:0 0 15px}.panel>p{line-height:1.5}label{display:block;font-weight:600;margin:12px 0 8px}input[type=password]{border:1px solid #baaa92;border-radius:9px;padding:13px;width:100%;font-size:16px}.primary,.secondary{border:0;border-radius:11px;padding:14px 20px;font-size:16px;font-weight:750;cursor:pointer}.primary{background:#235443;color:white}.primary:hover{background:#143b2e}.primary:disabled{opacity:.4;cursor:not-allowed}.secondary{background:#ece3d0;color:#214432}.big{display:block;width:100%;font-size:18px;margin-top:18px;padding:19px}.upload{margin:16px 0;border:2px dashed #c5ae8c;background:#f8f2e7;border-radius:15px;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:155px;cursor:pointer;gap:7px}.upload input{position:absolute;width:1px;height:1px;opacity:0}.upload small,.note,footer{color:#77776c;font-size:13px}.camera{font-size:34px}.decades{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.decade{background:#f5efe4;border:2px solid #e4d8c5;border-radius:12px;color:#30483a;padding:17px 4px;font-family:Georgia,serif;font-size:21px;cursor:pointer}.decade span{display:block;font:12px system-ui,sans-serif;margin-top:4px;color:#75695e}.decade.selected{border-color:#24543e;background:#dcebdc;box-shadow:0 0 0 2px #24543e24}.between{display:flex;align-items:center;justify-content:space-between;gap:9px}.between h2{margin:0}.pill{border-radius:18px;background:#e7efe6;color:#2d583f;font-size:12px;padding:8px 11px}#originalHolder{text-align:center}#original{max-width:100%;max-height:380px;border-radius:10px}.hidden{display:none!important}.note{text-align:center;line-height:1.6}.error{color:#a52f26;font-weight:650;white-space:pre-wrap}.spinner{width:40px;height:40px;border-radius:50%;border:4px solid #d9e5d4;border-top-color:#24543e;animation:spin 1s linear infinite;margin:8px auto 22px}@keyframes spin{to{transform:rotate(360deg)}}#progress{text-align:center}.compare{display:grid;grid-template-columns:1fr 1fr;gap:12px}.compare img{width:100%;border-radius:9px;display:block;object-fit:contain;background:#eee3d2}.compare small{font-size:11px;font-weight:800;letter-spacing:.12em;display:block;margin:0 0 8px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}footer{text-align:center;padding:22px}@media(max-width:480px){.panel{padding:17px}.decades{grid-template-columns:repeat(2,1fr)}.compare{grid-template-columns:1fr}.between{align-items:start}.pill{white-space:nowrap}}

.compare > div{min-width:0}.compare img{width:100%;height:auto;object-fit:contain;aspect-ratio:1/1;background:#f2ebdf}.compare{align-items:start}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:13px}.mini-photo{background:#f7f1e7;border-radius:12px;padding:10px;font-size:13px;min-width:0}.mini-photo p{margin:0 0 7px}.mini-photo img{width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;border-radius:8px;background:#eee}.mini-photo a{display:inline-block;margin-top:9px;color:#1e5742;font-weight:750}.admin-shell{max-width:1150px}.admin-shell header{text-align:left}.admin-shell h1{font-size:42px}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.toolbar button{padding:11px 15px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:12px}.dashboard-photo{background:#f4ecdf;border:1px solid #ddd1bb;border-radius:12px;padding:12px}.dashboard-photo img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;background:#e7e1d4;border-radius:8px}.dashboard-photo p{font-size:13px;color:#575f55}.dashboard-photo button{font-size:13px;padding:10px 12px}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:15px}.settings-grid input:not([type=checkbox]){width:100%;padding:10px;border:1px solid #bcad96;border-radius:8px;font-size:16px}.settings-grid label{font-size:14px}.stats{display:flex;gap:16px;flex-wrap:wrap;color:#4a584b}.status-dot{font-size:13px;font-weight:750}.status-dot.pending{color:#9c6519}.status-dot.approved{color:#1c6540}.status-dot.hidden{color:#8d4240}.display-page{background:#101c19;color:#f9f1dd;min-height:100vh}.display-page .shell{max-width:none}.display-page h1{color:#e5c997;text-align:center;font-size:clamp(28px,4vw,55px)}.slide-area{width:min(94vw,1100px);margin:auto;display:flex;align-items:center;justify-content:center;min-height:64vh;flex-direction:column;gap:12px}.slide-area img{max-width:100%;max-height:75vh;object-fit:contain;box-shadow:0 10px 50px #000a}.display-page .panel{color:#20392d;max-width:570px;margin:30px auto}.display-actions{position:fixed;bottom:12px;right:12px;opacity:.4}.display-actions:hover{opacity:1}.display-actions button{padding:8px}.projector-caption{color:#e8cfa9;font-size:clamp(16px,2.3vw,28px)}.muted{color:#73766e;font-size:14px}@media(max-width:560px){.admin-shell header{padding-left:0}.admin-shell h1{font-size:34px}}

/* Longer historical-era labels */
.decade{font-size:clamp(15px,1.8vw,21px);min-height:94px;padding:13px 6px;line-height:1.15}
.decade span{line-height:1.3}

/* Version 0.4: one clear action per guest screen */
.wizard-shell{max-width:800px}.wizard-brand{padding:20px 10px 10px}.wizard-brand h1{font-size:clamp(34px,7vw,52px)}.wizard-brand h1 em{display:inline}.step-panel{min-height:320px;padding:clamp(20px,4vw,36px)}.step-panel h2{font-size:clamp(26px,4vw,34px)}.step-panel>p{font-size:17px;line-height:1.55}.stepbar{text-align:center;font-weight:800;letter-spacing:.04em;color:#597263;padding-top:8px}.big-actions{display:flex;flex-direction:column;gap:14px;margin-top:24px}.choice-button{width:100%;min-height:64px;font-size:18px;text-align:center}.hint{background:#f3eddf;border-radius:12px;padding:12px}.text-button{display:block;margin:20px auto 4px;border:0;background:transparent;font-size:16px;color:#28533f;text-decoration:underline;cursor:pointer;padding:12px}.visually-hidden-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.review-frame{display:flex;justify-content:center;background:#eee7db;padding:12px;border-radius:14px}.review-frame img{max-width:100%;max-height:50vh;object-fit:contain;border-radius:8px}.wizard-shell .decades{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:20px}.wizard-shell .decade{min-height:100px;font-size:18px}.wizard-shell .gallery-footer{text-align:center}.wizard-shell .compare{margin-top:22px}.wizard-shell .compare img{aspect-ratio:1/1;object-fit:contain}.wizard-shell .error:not(:empty){background:#fff1ed;border-radius:10px;padding:12px}
.darkroom{position:relative;height:290px;max-width:430px;margin:22px auto 18px;overflow:hidden;border-radius:18px;background:radial-gradient(circle at 75% 8%,#6d2921 0%,#341612 26%,#120f10 74%);box-shadow:inset 0 0 50px #000a}.darkroom-light{position:absolute;top:-15px;right:18%;width:170px;height:230px;background:linear-gradient(#d7784519,#e66c3900);transform:skewX(-20deg)}.polaroid{position:absolute;width:165px;height:201px;top:38px;left:calc(50% - 82px);background:#fff9e9;padding:11px 11px 27px;box-shadow:3px 10px 26px #000b;transform:rotate(-8deg);animation:photo-in 3.8s ease-in-out infinite}.polaroid-picture{height:143px;background:#c7a381;overflow:hidden;position:relative}.polaroid-picture:after{content:'';position:absolute;inset:0;background:#e5d7b6;animation:develop 4s ease-in-out infinite}.develop-scene{display:grid;place-items:center;height:100%;font-size:72px;background:radial-gradient(circle,#bd7b57,#60463b)}.polaroid-caption{text-align:center;color:#5b4a3b;font:9px Georgia,serif;letter-spacing:1px;margin-top:8px}.darkroom-sparkle{position:absolute;color:#ffcf88;font-size:32px;animation:twinkle 2s ease-in-out infinite}.star1{left:17%;top:27%}.star2{right:15%;bottom:26%;animation-delay:1s}@keyframes photo-in{0%{transform:translateY(-22px) rotate(-12deg);opacity:.65}25%,75%{transform:translateY(0) rotate(-5deg);opacity:1}100%{transform:translateY(-22px) rotate(-12deg);opacity:.65}}@keyframes develop{0%{opacity:.98}60%,85%{opacity:.04}100%{opacity:.98}}@keyframes twinkle{0%,100%{opacity:.2;transform:scale(.7)}50%{opacity:1;transform:scale(1.15)}}@media(max-width:550px){.wizard-shell .decades{grid-template-columns:repeat(2,minmax(0,1fr))}.wizard-shell .compare{grid-template-columns:1fr}.step-panel{padding:20px}.darkroom{height:260px}}@media(prefers-reduced-motion:reduce){.polaroid,.polaroid-picture:after,.darkroom-sparkle{animation:none}.polaroid-picture:after{opacity:.08}}

/* Version 0.5: Christmas dinner tabletop photo-pile projector */
.display-page{overflow:hidden;background:#0d0807;color:#fff6e8}
.display-page .display-login{position:relative;z-index:5;margin:9vh auto;max-width:560px;color:#20392d;padding:28px}
.display-page .display-login h1{color:#20392d;font-size:clamp(32px,4vw,48px);text-align:left}
.tabletop{position:fixed;inset:0;overflow:hidden;isolation:isolate;background:#1a100e}
.tabletop-background{position:absolute;inset:-9%;z-index:-3;background-image:url('/assets/christmas-table.jpg');background-size:cover;background-position:50% 50%;filter:brightness(.46) saturate(.72) blur(1.2px);transform:scale(1.06)}
.tabletop-shade{position:absolute;inset:0;z-index:-2;background:radial-gradient(ellipse at 50% 49%,#1d100b00 12%,#0d0708b8 92%),linear-gradient(to bottom,#100b0bcc,#1d111100 30%,#0c070b44 76%,#0c0809dd)}
.tabletop-heading{position:absolute;top:clamp(16px,3.4vh,50px);left:0;right:0;text-align:center;text-shadow:0 3px 18px #000,0 1px 2px #000;pointer-events:none}
.tabletop-eyebrow{font:700 clamp(10px,1.1vw,16px) system-ui,sans-serif;letter-spacing:.26em;color:#e5c59b}
.tabletop-title{font:normal clamp(28px,4vw,64px) Georgia,serif;color:#fff0d3;margin-top:7px}
.photo-pile{position:absolute;inset:0;perspective:1300px;pointer-events:none}
.pile-print{position:absolute;top:52%;left:50%;width:clamp(220px,30vw,470px);margin:0;padding:clamp(9px,1.2vw,17px) clamp(9px,1.2vw,17px) clamp(35px,4vw,57px);background:#f3e9d5;color:#423021;box-shadow:0 9px 14px #0006, 0 19px 54px #000a, inset 0 0 0 1px #a7957f88;transform:translate(-50%,-50%) translate(var(--dx),var(--dy)) rotate(var(--rotation));transform-origin:50% 55%;border-radius:2px;will-change:transform,opacity;animation:photo-drop 1.35s cubic-bezier(.16,.87,.24,1) both}
.pile-print img{display:block;width:100%;aspect-ratio:1/1;object-fit:contain;background:#e1d5be;box-shadow:inset 0 0 8px #39281c4d}
.pile-print figcaption{text-align:center;font:italic clamp(12px,1.5vw,21px) Georgia,serif;letter-spacing:.025em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:clamp(8px,1.1vw,14px)}
.pile-print.no-drop{animation:none}
@keyframes photo-drop{
  0%{opacity:0;filter:blur(5px);transform:translate(-50%,-62%) translateY(-8vh) scale(2.05) rotate(0deg);box-shadow:0 38px 80px #000c}
  24%{opacity:1;filter:blur(0);transform:translate(-50%,-58%) translateY(-5vh) scale(1.75) rotate(calc(var(--rotation) * .15))}
  78%{opacity:1;transform:translate(-50%,-50%) translate(var(--dx),var(--dy)) scale(.97) rotate(calc(var(--rotation) * 1.07))}
  90%{opacity:1;transform:translate(-50%,-50%) translate(var(--dx),var(--dy)) scale(1.025) rotate(var(--rotation))}
  100%{opacity:1;filter:none;transform:translate(-50%,-50%) translate(var(--dx),var(--dy)) scale(1) rotate(var(--rotation))}
}
.tabletop-waiting{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(600px,88vw);padding:38px 30px;background:#180f0cc9;text-align:center;border:1px solid #e0c29766;border-radius:16px;box-shadow:0 12px 60px #000b}
.tabletop-waiting h2{font-size:clamp(22px,3vw,39px);color:#fbe5c2}
.tabletop-waiting p{font-size:clamp(13px,1.5vw,19px);color:#e4d3bd}
.waiting-ornament{font-size:44px;color:#f7d3a0;margin-bottom:17px}
.tabletop-footer{position:absolute;bottom:clamp(16px,3.4vh,42px);left:0;right:0;text-align:center;color:#ead0ac;font:700 clamp(9px,1vw,15px) system-ui,sans-serif;letter-spacing:.26em;text-shadow:0 2px 12px #000}
.tabletop-footer span{padding:0 12px;color:#d0a766}
.display-page .display-actions{z-index:30;right:14px;bottom:14px;opacity:.15;transition:opacity .2s}
.display-page .display-actions:hover,.display-page .display-actions:focus-within{opacity:1}
.display-page .display-actions button{font-size:12px;padding:10px 14px}
.display-error{position:absolute;bottom:62px;left:50%;transform:translateX(-50%);background:#3c1815;color:#fff;padding:10px 14px;border-radius:8px;max-width:90vw;z-index:40}
@media(max-width:700px){.tabletop-title{font-size:30px}.pile-print{width:min(58vw,330px);top:53%}.tabletop-eyebrow{letter-spacing:.14em}.tabletop-footer{letter-spacing:.1em}.tabletop-background{background-position:center}}
@media(prefers-reduced-motion:reduce){.pile-print{animation:none!important;will-change:auto}.tabletop-background{filter:brightness(.46) saturate(.72)}}

/* v0.6: Minimal projector labels; editable title in lower-left */
.tabletop-event-title {
 position:absolute;left:clamp(20px,3.5vw,60px);bottom:clamp(18px,3.5vh,48px);
 z-index:20;max-width:min(48vw,650px);overflow-wrap:break-word;pointer-events:none;
 font-family:Georgia,serif;font-style:normal;font-weight:normal;line-height:1.15;font-size:var(--ctm-event-title-size,42px);color:#fff0d3;
 text-shadow:0 3px 15px #000,0 1px 4px #000;
}
@media(max-width:700px){.tabletop-event-title{max-width:65vw}}


/* Version 0.7: smooth single-flight drop and historically varied print edges */
.pile-print {
  width: clamp(253px,34.5vw,540px); /* 15% larger than v0.6 */
  padding: clamp(8px,1.1vw,16px);
  border-radius: 1px;
  animation: none;
  transform: translate(-50%,-50%) translate(var(--dx),var(--dy)) rotate(var(--rotation));
  backface-visibility:hidden;
  contain:layout style;
}
.pile-print img {aspect-ratio:1;object-fit:contain;border-radius:0;box-shadow:none;}
.pile-print figcaption {display:none!important;}
.pile-print.incoming {opacity:0;transform:translate(-50%,-68%) translateY(-5vh) scale(1.72) rotate(0deg);}
.pile-print.incoming.dropping {animation: smooth-photo-drop 1.85s cubic-bezier(.36,0,.20,1) forwards;}
@keyframes smooth-photo-drop {
  0% {opacity:0;filter:blur(3px);transform:translate(-50%,-68%) translateY(-5vh) scale(1.72) rotate(0deg);}
  14% {opacity:.75;filter:blur(1px);}
  30% {opacity:1;filter:blur(0);}
  100% {opacity:1;filter:none;transform:translate(-50%,-50%) translate(var(--dx),var(--dy)) scale(1) rotate(var(--rotation));}
}
.pile-print.border-parchment {background:#d9bd8d;padding:clamp(13px,1.45vw,22px);box-shadow:0 10px 30px #0009,inset 0 0 0 2px #9a6a3d77,inset 0 0 25px #714623aa;clip-path:polygon(0 2%,3% 1%,9% 2%,16% 0,25% 1.5%,34% .3%,45% 1.5%,55% 0,65% 1%,77% 0,88% 1.5%,98% 0,100% 4%,99% 16%,100% 30%,98% 44%,100% 55%,99% 68%,100% 80%,98% 95%,100% 99%,93% 98%,82% 100%,71% 98%,58% 100%,47% 98%,32% 100%,19% 98%,7% 100%,0 98%,1% 85%,0 72%,2% 61%,0 48%,1% 31%,0 18%);}
.pile-print.border-parchment img {filter:sepia(.12);border:1px solid #9c7653;}
.pile-print.border-cabinet {background:#4b3024;padding:clamp(17px,2vw,28px);border:clamp(5px,.7vw,10px) solid #a4815e;box-shadow:0 13px 35px #000b,inset 0 0 0 3px #d5b788,inset 0 0 0 7px #3b251b;}
.pile-print.border-cabinet img {outline:1px solid #dbc5a4;}
.pile-print.border-deckle {background:#e2d2b4;padding:clamp(12px,1.5vw,22px);clip-path:polygon(0 1%,4% 0,8% 1%,12% 0,17% 1%,23% 0,28% 1%,34% 0,40% 1%,46% 0,52% 1%,58% 0,64% 1%,70% 0,76% 1%,82% 0,88% 1%,94% 0,100% 1%,99% 6%,100% 13%,99% 20%,100% 28%,99% 36%,100% 44%,99% 52%,100% 60%,99% 68%,100% 76%,99% 84%,100% 92%,99% 99%,93% 100%,86% 99%,79% 100%,72% 99%,65% 100%,58% 99%,51% 100%,44% 99%,37% 100%,30% 99%,23% 100%,16% 99%,9% 100%,2% 99%,0 96%,1% 88%,0 80%,1% 72%,0 64%,1% 56%,0 48%,1% 40%,0 32%,1% 24%,0 16%,1% 8%);box-shadow:0 13px 35px #000b;}
.pile-print.border-deckle img{filter:sepia(.05);}
.pile-print.border-scallop {background:#f0e6d4;padding:clamp(13px,1.5vw,22px);border:7px solid transparent;border-image:repeating-linear-gradient(45deg,#c7b79e 0 3px,#f6ecd8 3px 6px) 7;box-shadow:0 14px 40px #000a,inset 0 0 0 2px #b9a184;}
.pile-print.border-scallop img{outline:1px solid #bba990;}
.pile-print.border-white {background:#f0eee8;padding:clamp(7px,.8vw,12px);box-shadow:0 11px 32px #000b,0 0 0 1px #a7a09b;}
.pile-print.border-instant {background:#f7f3eb;padding:clamp(9px,1.1vw,16px) clamp(9px,1.1vw,16px) clamp(35px,4vw,57px);box-shadow:0 12px 35px #000b,inset 0 0 0 1px #aaa196;}

@media(max-width:700px){.pile-print{width:min(66.7vw,380px)}.tabletop-event-title{max-width:65vw}}
@media(prefers-reduced-motion:reduce){.pile-print.incoming,.pile-print.incoming.dropping{animation:none!important;opacity:1;filter:none;transform:translate(-50%,-50%) translate(var(--dx),var(--dy)) rotate(var(--rotation))}}

/* v0.8: separate historical-period editor */
#periodEditor select,#periodEditor input:not([type=checkbox]),#periodEditor textarea{display:block;width:100%;background:#fff;border:1px solid #bcad96;border-radius:9px;padding:12px;font:16px system-ui,sans-serif;color:#243c30;}#periodEditor textarea{line-height:1.5;resize:vertical;}#periodEditor input[readonly]{background:#eeeae1;color:#747064;}#periodEditor .period-enable{display:flex;align-items:center;gap:12px;}#periodEditor .period-enable input{width:19px;height:19px;}#periodEditor select{margin-bottom:18px;}#periodMessage:not(:empty){padding:12px;background:#edf4ec;border-radius:8px;}#periodMessage.error{background:#ffede8;}
