: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:calc(11px * var(--ptm-heading-scale,1));font-weight:800;letter-spacing:.22em;color:#9b472e}h1{font-family:Georgia,serif;font-size:calc(clamp(38px,8vw,64px) * var(--ptm-heading-scale,1));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 calc(26px * var(--ptm-heading-scale,1)) 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:calc(16px * var(--ptm-text-scale,1))}.primary{border:0;border-radius:11px;padding:14px 20px;font-size:calc(16px * var(--ptm-button-scale,1));font-weight:750;cursor:pointer}.secondary{border:0;border-radius:11px;padding:14px 20px;font-size:calc(16px * var(--ptm-button-scale,1));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:calc(18px * var(--ptm-button-scale,1));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{color:#77776c;font-size:calc(13px * var(--ptm-text-scale,1))}.note{color:#77776c;font-size:calc(13px * var(--ptm-text-scale,1))}footer{color:#77776c;font-size:calc(13px * var(--ptm-text-scale,1))}.camera{font-size:calc(34px * var(--ptm-text-scale,1))}.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:calc(21px * var(--ptm-button-scale,1));cursor:pointer}.decade span{display:block;font:calc(12px * var(--ptm-text-scale,1)) 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:calc(12px * var(--ptm-text-scale,1));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:calc(11px * var(--ptm-text-scale,1));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:calc(13px * var(--ptm-text-scale,1));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:calc(42px * var(--ptm-heading-scale,1))}.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:calc(13px * var(--ptm-text-scale,1));color:#575f55}.dashboard-photo button{font-size:calc(13px * var(--ptm-button-scale,1));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:calc(16px * var(--ptm-text-scale,1))}.settings-grid label{font-size:calc(14px * var(--ptm-text-scale,1))}.stats{display:flex;gap:16px;flex-wrap:wrap;color:#4a584b}.status-dot{font-size:calc(13px * var(--ptm-text-scale,1));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:calc(clamp(28px,4vw,55px) * var(--ptm-heading-scale,1))}.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:calc(clamp(16px,2.3vw,28px) * var(--ptm-heading-scale,1))}.muted{color:#73766e;font-size:calc(14px * var(--ptm-text-scale,1))}@media(max-width:560px){.admin-shell header{padding-left:0}.admin-shell h1{font-size:calc(34px * var(--ptm-heading-scale,1))}}

/* Longer historical-era labels */
.decade{font-size:calc(clamp(15px,1.8vw,21px) * var(--ptm-button-scale,1));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:calc(clamp(34px,7vw,52px) * var(--ptm-heading-scale,1))}.wizard-brand h1 em{display:inline}.step-panel{min-height:320px;padding:clamp(20px,4vw,36px)}.step-panel h2{font-size:calc(clamp(26px,4vw,34px) * var(--ptm-heading-scale,1))}.step-panel>p{font-size:calc(17px * var(--ptm-text-scale,1));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:calc(18px * var(--ptm-button-scale,1));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:calc(16px * var(--ptm-button-scale,1));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:calc(18px * var(--ptm-button-scale,1))}.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:calc(72px * var(--ptm-text-scale,1));background:radial-gradient(circle,#bd7b57,#60463b)}.polaroid-caption{text-align:center;color:#5b4a3b;font:calc(9px * var(--ptm-text-scale,1)) Georgia,serif;letter-spacing:1px;margin-top:8px}.darkroom-sparkle{position:absolute;color:#ffcf88;font-size:calc(32px * var(--ptm-text-scale,1));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:calc(clamp(32px,4vw,48px) * var(--ptm-heading-scale,1));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:var(--theme-display-background,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 calc(clamp(10px,1.1vw,16px) * var(--ptm-text-scale,1)) system-ui,sans-serif;letter-spacing:.26em;color:#e5c59b}
.tabletop-title{font:normal calc(clamp(28px,4vw,64px) * var(--ptm-heading-scale,1)) 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 calc(clamp(12px,1.5vw,21px) * var(--ptm-text-scale,1)) 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:calc(clamp(22px,3vw,39px) * var(--ptm-heading-scale,1));color:#fbe5c2}
.tabletop-waiting p{font-size:calc(clamp(13px,1.5vw,19px) * var(--ptm-text-scale,1));color:#e4d3bd}
.waiting-ornament{font-size:calc(44px * var(--ptm-text-scale,1));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 calc(clamp(9px,1vw,15px) * var(--ptm-text-scale,1)) 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:calc(12px * var(--ptm-button-scale,1));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:calc(30px * var(--ptm-heading-scale,1))}.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:calc(var(--ctm-event-title-size,42px) * var(--ptm-heading-scale,1));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{display:block;width:100%;background:#fff;border:1px solid #bcad96;border-radius:9px;padding:12px;font:calc(16px * var(--ptm-text-scale,1)) system-ui,sans-serif;color:#243c30;}#periodEditor input:not([type=checkbox]){display:block;width:100%;background:#fff;border:1px solid #bcad96;border-radius:9px;padding:12px;font:calc(16px * var(--ptm-text-scale,1)) system-ui,sans-serif;color:#243c30;}#periodEditor textarea{display:block;width:100%;background:#fff;border:1px solid #bcad96;border-radius:9px;padding:12px;font:calc(16px * var(--ptm-text-scale,1)) 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;}


/* Photo Time Machine themes and guest review */
#joinPanel{text-align:center}#joinQr{max-width:100%;height:auto;background:white;border-radius:12px}.mini-photo button,.mini-photo a{display:block;margin:12px auto}.mini-photo img{width:100%;height:auto}#guestReview{text-align:left;background:#f6efdd}#decisionStatus:empty{display:none}


/* Event context and management */
.event-context{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;background:#ffffffa6;border:1px solid #d9ceba;border-radius:12px;margin-bottom:16px;text-align:left;font-size:calc(14px * var(--ptm-text-scale,1))}.event-name{margin:0;font-weight:650;overflow-wrap:anywhere}.event-context summary{cursor:pointer;white-space:nowrap}.event-context form{display:flex;gap:8px;margin-top:12px}.event-context input{min-width:0;width:150px}.event-context input{padding:12px;border:1px solid #baaa92;border-radius:9px;font:inherit}.event-form input{padding:12px;border:1px solid #baaa92;border-radius:9px;font:inherit}.event-form input{width:100%}.event-card{border-top:1px solid #ddd2c1;padding:20px 0}.event-card h3{margin:0 0 8px;font:calc(24px * var(--ptm-heading-scale,1)) Georgia,serif}.event-card .toolbar{margin-top:14px;flex-wrap:wrap}.event-card code{overflow-wrap:anywhere}.event-list{margin-top:16px}
/* Keep the invitation above the photo pile and inside projector safe margins. */
.projector-join{position:absolute;right:clamp(16px,2.5vw,60px);bottom:clamp(16px,2.5vh,48px);z-index:1000;width:clamp(88px,calc(11.9vw - 17px),172px);padding:0;background:transparent;color:#fff;text-align:center}.projector-join img{display:block;width:100%;height:auto;aspect-ratio:1;background:transparent}.projector-join strong{display:block;font-size:calc(clamp(11px,1vw,15px) * var(--ptm-text-scale,1));font-weight:500;line-height:1.35;margin-top:5px;text-shadow:0 1px 4px #000}
@media(max-width:600px){.event-context{align-items:flex-start;flex-direction:column}.event-context form{width:100%}.projector-join{width:87px;padding:0}.event-context input{width:100%}}

.admin-upload input[type=file]{display:block;max-width:100%;margin:14px 0}.upload-summary{margin:14px 0;padding-left:22px;line-height:1.6}.upload-summary .error{font-weight:500}

/* Staff packages and theme presentation */
.package-summary{padding:14px 16px;background:#e7efe6;border-radius:10px;line-height:1.6;font-weight:600}.theme-period{border:1px solid #d9ceba;border-radius:12px;padding:14px;margin:14px 0}.theme-period summary{cursor:pointer;font-weight:700}.theme-period textarea{width:100%}.theme-preview{border-left:6px solid var(--ptm-accent,#235443);padding:16px;background:var(--ptm-background,#ede7d8);border-radius:10px;margin:16px 0}.staff-nav{display:flex;justify-content:center;gap:20px;flex-wrap:wrap}body .primary{background:#235443}.theme-fields input,.theme-fields select{max-width:100%}.theme-fields textarea{width:100%}#themeEditor textarea{width:100%;padding:12px;border:1px solid #baaa92;border-radius:9px;font:inherit}#themeEditor input[type=text]{width:100%;padding:12px;border:1px solid #baaa92;border-radius:9px;font:inherit}

.theme-fields input[type=color]{height:44px;padding:4px;cursor:pointer}#themePick{min-width:min(100%,280px);padding:10px;border:1px solid #baaa92;border-radius:8px;font:inherit}

.event-context{flex-wrap:wrap}.event-timeline{flex-basis:100%;font-size:calc(14px * var(--ptm-text-scale,1));line-height:1.6;margin:8px 0;overflow-wrap:anywhere}.event-context[data-status=archived]{background:#eee8df}.event-schedule{margin-top:18px;padding:14px;border:1px solid #d9ceba;border-radius:10px}.event-schedule summary{cursor:pointer;font-weight:650}.event-schedule input{width:100%;padding:10px;border:1px solid #baaa92;border-radius:8px;font:inherit}.event-form input[type=datetime-local]{width:100%;min-width:0}button:disabled{cursor:not-allowed;opacity:.45}

/* One display treatment across themes; only the background image varies. */
.theme-background-settings{padding:18px 0;border-bottom:1px solid #d9ceba;margin-bottom:18px}.theme-background-preview{display:block;width:min(100%,640px);aspect-ratio:16/9;object-fit:cover;border-radius:12px;background:#1a100e}.theme-background-settings input[type=file]{display:block;max-width:100%;margin:12px 0}.gallery-view{background:linear-gradient(#100b0bc9,#100b0bc9),var(--theme-display-background,url('/assets/christmas-table.jpg')) center/cover fixed!important}.gallery-view .wizard-brand,.gallery-view .stepbar,.gallery-view footer{color:#fff6e8}.gallery-view .wizard-brand h1,.gallery-view .wizard-brand h1 em,.gallery-view .wizard-brand .eyebrow{color:#fff6e8}.gallery-view .gallery-footer{background:#fffdf7ee;border-radius:12px;padding:1px 12px 14px}

.danger{border:1px solid #b84a3d;border-radius:10px;background:#fff1ed;color:#9b2f24;font:600 calc(14px * var(--ptm-text-scale,1)) system-ui,sans-serif;padding:11px 15px;cursor:pointer}.danger:hover{background:#fbe0d9}.danger:disabled{opacity:.5;cursor:not-allowed}

.settings-schedule{border-top:1px solid #ded4c2;border-bottom:1px solid #ded4c2;padding:4px 0 18px;margin:20px 0;scroll-margin-top:20px}.settings-schedule h3{font:calc(24px * var(--ptm-heading-scale,1)) Georgia,serif;margin:18px 0 10px}.event-schedule-link{display:inline-block;margin-top:16px;color:#235443;font-weight:650}

/* Consistent Events manager actions{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 15px;border:0;border-radius:11px;font:750 calc(16px * var(--ptm-text-scale,1))/1.25 system-ui,sans-serif;text-align:center;text-decoration:none} including navigation links. */
.event-card .secondary{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 15px;border:0;border-radius:11px;font:750 calc(16px * var(--ptm-button-scale,1))/1.25 system-ui,sans-serif;text-align:center;text-decoration:none}.event-card .danger{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 15px;border:0;border-radius:11px;font:750 calc(16px * var(--ptm-text-scale,1))/1.25 system-ui,sans-serif;text-align:center;text-decoration:none}
.event-card .danger{background:#f5ded8;color:#9b2f24}.event-card .danger:hover{background:#edc8be}.event-action:hover{background:#e2d6bd}.event-action:focus-visible,.event-card button:focus-visible{outline:3px solid #235443;outline-offset:3px}

/* Guest actions and accessible invite dialog. */
.wizard-shell .gallery-footer{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:20px}.wizard-shell .guest-action{display:inline-flex;align-items:center;justify-content:center;min-height:48px;margin:0;padding:14px 20px;font:750 calc(16px * var(--ptm-button-scale,1))/1.25 system-ui,sans-serif;text-align:center;text-decoration:none}.guest-action:hover{background:#e2d6bd}.guest-action:focus-visible,.join-dialog button:focus-visible{outline:3px solid #235443;outline-offset:3px}.join-dialog{width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 32px);margin:auto;padding:28px;border:1px solid #d9ceba;border-radius:18px;background:#fffdf7;color:#20392d;box-shadow:0 18px 70px #0006;overflow-y:auto;text-align:center}.join-dialog::backdrop{background:#100b0bb8}.join-modal-content>p{line-height:1.5}.join-dialog #joinQr{display:block;width:min(280px,100%);height:auto;margin:16px auto;border-radius:10px;background:#fff}.join-dialog #closeJoin{min-height:48px;min-width:120px}.qr-modal-open{overflow:hidden}@media(max-width:560px){.wizard-shell .guest-action{width:100%}.join-dialog{padding:22px}}

.application-controls{margin-top:20px;padding-top:4px;border-top:1px solid #ded4c2}.application-controls h4{font-size:calc(17px * var(--ptm-heading-scale,1));margin:16px 0 10px}.application-controls .danger{border:0;border-radius:11px;font:750 calc(16px * var(--ptm-text-scale,1)) system-ui,sans-serif;background:#f5ded8;color:#9b2f24}.application-controls .danger:hover{background:#edc8be}

.code-input{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.code-input input{flex:1;min-width:120px}.code-input button{flex-shrink:0}

.admin-navigation .admin-action{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 15px;font:750 calc(16px * var(--ptm-button-scale,1))/1.25 system-ui,sans-serif;text-align:center;text-decoration:none}.admin-navigation .admin-action:hover{background:#e2d6bd}.admin-navigation .admin-action:focus-visible{outline:3px solid #235443;outline-offset:3px}

/* A theme's single main color drives its interface palette. Photo/QR assets stay intact. */
body[data-palette]{color:var(--ptm-ink)}
body[data-palette]:not(.display-page):not(.gallery-view){background:radial-gradient(ellipse at 10% 0%,var(--ptm-page-glow),var(--ptm-page) 72%)}
body[data-palette] .panel,body[data-palette] .join-dialog{background:var(--ptm-surface);color:var(--ptm-ink);border-color:var(--ptm-border)}
body[data-palette] h1,body[data-palette] h2,body[data-palette] h3,body[data-palette] h4,body[data-palette] label,body[data-palette] .display-login h1{color:var(--ptm-ink)}
body[data-palette] h1 em,body[data-palette] .eyebrow{color:var(--ptm-accent)}
body[data-palette] .muted,body[data-palette] .note,body[data-palette] .subtitle,body[data-palette] footer,body[data-palette] .stepbar,body[data-palette] .dashboard-photo p{color:var(--ptm-muted)}
body[data-palette] .primary,.theme-preview[data-palette] .primary{background:var(--ptm-primary);color:var(--ptm-on-primary);border:1px solid var(--ptm-border)}
body[data-palette] .primary:hover,.theme-preview[data-palette] .primary:hover{background:var(--ptm-primary-hover);color:var(--ptm-on-primary-hover)}
body[data-palette] .secondary:not(.danger),.theme-preview[data-palette] .secondary{background:var(--ptm-secondary);color:var(--ptm-on-secondary)}
body[data-palette] .secondary:not(.danger):hover{background:var(--ptm-selected);color:var(--ptm-on-secondary)}
body[data-palette] .hint,body[data-palette] .package-summary,body[data-palette] .pill,body[data-palette] #guestReview,body[data-palette] .dashboard-photo,body[data-palette] .mini-photo{background:var(--ptm-section);color:var(--ptm-ink);border-color:var(--ptm-border)}
body[data-palette] .decade,body[data-palette] .upload{background:var(--ptm-section);color:var(--ptm-ink);border-color:var(--ptm-border)}
body[data-palette] .decade.selected{background:var(--ptm-selected);color:var(--ptm-ink);border-color:var(--ptm-main);box-shadow:0 0 0 2px var(--ptm-border)}
body[data-palette] .decade span{color:var(--ptm-muted)}
body[data-palette] a:not(.secondary),body[data-palette] .text-button{color:var(--ptm-accent)}
body[data-palette] input:not([type=color]):not([type=checkbox]):not([type=file]),body[data-palette] select,body[data-palette] textarea{background:var(--ptm-surface);color:var(--ptm-ink);border-color:var(--ptm-border)}
body[data-palette] input::placeholder,body[data-palette] textarea::placeholder{color:var(--ptm-muted);opacity:1}
body[data-palette] :focus-visible{outline:3px solid var(--ptm-accent);outline-offset:3px}
body[data-palette] .settings-schedule,body[data-palette] .application-controls{border-color:var(--ptm-border)}
body[data-palette] .tabletop,body[data-palette].display-page{background:var(--ptm-dark)}
body[data-palette] .tabletop-shade{background:linear-gradient(transparent,var(--ptm-dark))}
body[data-palette] .tabletop-waiting{background:var(--ptm-dark);color:var(--ptm-on-dark);border-color:var(--ptm-border)}
body[data-palette] .tabletop-waiting h2,body[data-palette] .tabletop-waiting p,body[data-palette] .waiting-ornament,body[data-palette] .tabletop-footer,body[data-palette] .tabletop-footer span{color:var(--ptm-on-dark)}
body[data-palette].gallery-view .gallery-footer{background:var(--ptm-surface)}
body[data-palette].gallery-view .wizard-brand h1,body[data-palette].gallery-view .wizard-brand h1 em,body[data-palette].gallery-view .wizard-brand .eyebrow,body[data-palette].gallery-view .stepbar,body[data-palette].gallery-view footer{color:#ffffff}
.theme-color-settings{padding:18px 0;border-bottom:1px solid #d9ceba;margin-bottom:18px}.theme-color-controls{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.theme-color-controls input[type=color]{width:72px;height:46px;cursor:pointer}.theme-color-controls #mainColorHex{width:130px;font-family:monospace}.palette-swatches{display:flex;flex-wrap:wrap;gap:16px;margin:18px 0}.palette-swatches>div{display:flex;flex-direction:column;gap:6px;font-size:calc(13px * var(--ptm-text-scale,1))}.palette-swatch{width:80px;height:38px;border:1px solid #777;border-radius:8px}
.theme-preview[data-palette]{background:var(--ptm-page);color:var(--ptm-ink);border-color:var(--ptm-main);padding:22px}.theme-preview[data-palette] p{color:var(--ptm-ink)}.theme-preview[data-palette] .palette-preview-section{padding:16px;background:var(--ptm-section);border-radius:9px}.theme-preview[data-palette] button:disabled{opacity:1;margin:4px 8px 4px 0}

body[data-palette].gallery-view{background:linear-gradient(var(--ptm-scrim),var(--ptm-scrim)),var(--theme-display-background) center/cover fixed!important}

/* Per-theme dark mode and optional Google Fonts family. */
[data-color-mode=dark]{color-scheme:dark}
body[data-palette] .event-context,body[data-palette] .event-schedule{background:var(--ptm-surface);color:var(--ptm-ink);border-color:var(--ptm-border)}
body[data-color-mode=dark] .error,body[data-color-mode=dark] #accessError,body[data-color-mode=dark] #loginError{color:#ffb7a6}
.theme-dark-toggle{display:flex;align-items:center;gap:10px;margin-top:20px}.theme-dark-toggle input{width:20px;height:20px}.theme-color-settings #fontFamily{padding:11px;border:1px solid #baaa92;border-radius:9px;font:inherit;min-width:min(100%,280px)}.theme-color-settings #customFontField{max-width:440px}

/* Visual controls grouped by purpose; manual palette values override generated defaults. */
.palette-control-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-top:20px}.palette-control{padding:14px;background:#f6f2e9;border:1px solid #d9ceba;border-radius:12px}.palette-control>label{margin-top:0}.palette-color-inputs{display:flex;align-items:center;gap:10px}.palette-color-inputs input[type=color]{width:58px;height:42px;cursor:pointer;flex-shrink:0}.palette-color-inputs input[type=text]{min-width:0;max-width:135px;font-family:monospace!important}.palette-lock{display:inline-flex;align-items:center;gap:8px;font-size:calc(14px * var(--ptm-text-scale,1));margin:12px 10px 6px 0}.palette-lock input{width:18px;height:18px}.theme-font-settings{padding:18px 0;border-bottom:1px solid #d9ceba;margin-bottom:18px}.theme-font-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:22px}.theme-font-control select{width:100%;padding:11px;border:1px solid #baaa92;border-radius:9px;font:inherit}.theme-color-controls{align-items:center}.theme-color-controls #mainColor{order:0}.theme-color-controls #randomMainColor{order:1}.theme-color-controls #mainColorHex{order:2}
body[data-palette] h1,body[data-palette] h2,body[data-palette] h3,body[data-palette] h4,body[data-palette] .display-login h1{color:var(--ptm-heading,var(--ptm-ink))}.theme-preview[data-palette] #previewName{color:var(--ptm-heading,var(--ptm-ink))}
body[data-body-font],.theme-preview[data-body-font]{font-family:var(--ptm-body-font)}
body[data-body-font] input,body[data-body-font] select,body[data-body-font] textarea,body[data-body-font] .decade span{font-family:var(--ptm-body-font)}
body[data-heading-font] h1,body[data-heading-font] h2,body[data-heading-font] h3,body[data-heading-font] h4,body[data-heading-font] h1 em,body[data-heading-font] .wizard-brand h1,body[data-heading-font] .wizard-brand h1 em,body[data-heading-font] .tabletop-title,body[data-heading-font] .tabletop-eyebrow,body[data-heading-font] .tabletop-event-title,body[data-heading-font] .tabletop-footer,body[data-heading-font] button,body[data-heading-font] .secondary,body[data-heading-font] .guest-action,body[data-heading-font] .admin-action,.theme-preview[data-heading-font] #previewName,.theme-preview[data-heading-font] button{font-family:var(--ptm-heading-font)}

body[data-palette] .tabletop-event-title,body[data-palette] .tabletop-title,body[data-palette] .tabletop-eyebrow{color:var(--ptm-on-dark)}

/* Keep theme saving within reach without covering the final editor fields. */
.theme-editor-page .shell{padding-bottom:150px}.theme-save-bar{position:fixed;z-index:1000;left:50%;bottom:16px;transform:translateX(-50%);width:min(1086px,calc(100% - 32px));display:flex;align-items:center;justify-content:flex-end;gap:18px;padding:14px 18px;background:#fffdf7f5;border:1px solid #d9ceba;border-radius:14px;box-shadow:0 8px 35px #0003;backdrop-filter:blur(10px)}.theme-save-bar #themeMessage{margin:0;flex:1;min-width:0;max-height:24vh;overflow-y:auto;line-height:1.45}.theme-save-bar #themeMessage:empty{display:none}.theme-save-bar #saveTheme{flex-shrink:0;min-height:48px}.palette-details{margin:20px 0 12px;border:1px solid #d9ceba;border-radius:12px;padding:14px}.palette-details summary{cursor:pointer;font-weight:700}.palette-details summary:focus-visible{outline:3px solid #235443;outline-offset:4px}.palette-details[open] summary{margin-bottom:12px}@media(max-width:560px){.theme-save-bar{bottom:10px;padding:12px;gap:10px;flex-wrap:wrap}.theme-save-bar #themeMessage{flex-basis:100%;max-height:18vh}.theme-save-bar #saveTheme{width:100%}.theme-editor-page .shell{padding-bottom:210px}}

/* Category multipliers keep authored responsive sizes proportional, without compounding. */
body,.theme-preview{font-size:calc(16px * var(--ptm-text-scale,1))}h3{font-size:calc(18.72px * var(--ptm-heading-scale,1))}h4{font-size:calc(16px * var(--ptm-heading-scale,1))}h5{font-size:calc(13.28px * var(--ptm-heading-scale,1))}h6{font-size:calc(10.72px * var(--ptm-heading-scale,1))}.theme-preview #previewName{font-size:calc(16px * var(--ptm-heading-scale,1))}.theme-size-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}.theme-size-grid select{width:100%;padding:11px;border:1px solid #baaa92;border-radius:9px;font:inherit}.theme-size-controls{margin-bottom:22px}.theme-size-controls h4{margin-bottom:8px}


/* The product identity uses fixed artwork; event fonts and colors remain configurable. */
.brand-heading{margin:0 0 18px;line-height:1}
.photomorph-logo{display:block;width:min(100%,300px);height:auto;background:transparent;border-radius:0;padding:0;box-sizing:border-box}
.wizard-brand .photomorph-logo{margin-inline:auto}
.admin-shell .photomorph-logo{width:min(100%,270px)}
.display-login .photomorph-logo{margin-inline:auto}
@media(max-width:560px){.photomorph-logo{width:min(100%,240px)}}


/* PhotoMorph public identity: navy, orange, sky blue and white from the logo. */
:root{--ptm-main:#08263d;--ptm-primary:#ff8000;--ptm-on-primary:#08263d;--ptm-primary-hover:#e66e00;--ptm-on-primary-hover:#08263d;--ptm-page:#edf6fc;--ptm-page-glow:#ffffff;--ptm-surface:#ffffff;--ptm-section:#e4f4fc;--ptm-secondary:#d9f0fc;--ptm-on-secondary:#08263d;--ptm-ink:#08263d;--ptm-heading:#08263d;--ptm-muted:#456175;--ptm-accent:#125e83;--ptm-border:#7893a6;--ptm-selected:#bde7fb;--ptm-dark:#08263d;--ptm-on-dark:#ffffff;--ptm-scrim:#08263dcc}
:root{background:#edf6fc}
body[data-theme=brand],body[data-theme=brand].display-page{background:radial-gradient(ellipse at 10% 0%,#ffffff,#edf6fc 72%);color:#08263d;color-scheme:light;font-family:system-ui,-apple-system,'Segoe UI',sans-serif}
body[data-theme=brand] h1,body[data-theme=brand] h2,body[data-theme=brand] h3,body[data-theme=brand] h4,body[data-theme=brand] button,body[data-theme=brand] .secondary{font-family:system-ui,-apple-system,'Segoe UI',sans-serif}
body[data-theme=brand] h2{font-weight:650}
body[data-theme=brand] .eyebrow{color:#125e83}
body[data-theme=brand] .panel{border-top:4px solid #ff8000;box-shadow:0 10px 35px #08263d12}
body[data-theme=brand] .primary{border-color:transparent}
body[data-theme=brand] .primary:hover{border-color:#08263d}
body[data-theme=brand] :focus-visible{outline-color:#125e83}
body[data-theme=brand].display-page{overflow:auto;display:flow-root}
body[data-theme=brand] .display-login{width:calc(100% - 32px);margin:clamp(24px,7vh,72px) auto}
