:root{--c-primary:#0b0b0b;--c-primary-strong:#000;--c-primary-soft:#f1f1f1;--c-accent:#d90429;--c-accent-strong:#a9031f;--c-accent-soft:#ffe8ec;--c-paper:#fff;--c-paper-deep:#f4f4f4;--c-surface:#fff;--c-ink:#0b0b0b;--c-ink-soft:#4b4b4b;--c-line:#cfcfcf;--c-stage:#0b0b0b;--c-danger:#a9031f;--c-red-on-dark:#ff5c70;--font-display:"Bricolage Grotesque", "Be Vietnam Pro", system-ui, sans-serif;--font-body:"Be Vietnam Pro", system-ui, sans-serif;--text-sm:.875rem;--text-md:1rem;--text-lg:1.125rem;--r-s:12px;--r-m:20px;--r-pill:999px;--shadow-1:0 1px 2px #0000001a, 0 4px 12px -6px #00000029;--shadow-2:0 2px 4px #0000001a, 0 12px 24px -12px #0000003d;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:72px;--tap:48px;--gutter:clamp(16px, 4vw, 48px);--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--dur-press:.12s;--dur-fast:.2s;--dur-screen:.32s;--green:var(--c-primary);--ink:var(--c-ink);--muted:var(--c-ink-soft);--line:var(--c-line);--cream:var(--c-paper-deep);--serif:var(--font-display);color:var(--c-ink);background:var(--c-paper)}.pb{min-height:100dvh;font-family:var(--font-body);font-size:var(--text-md);color:var(--c-ink);background:var(--c-paper);padding-inline:var(--safe-left) var(--safe-right);line-height:1.55;overflow-x:clip}.pb h1,.pb h2,.pb h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-weight:700;line-height:1.1}.pb p{margin:0}.pb :focus-visible{outline:3px solid var(--c-primary);outline-offset:3px;border-radius:var(--r-s)}.pb .cam :focus-visible,.pb .cam:focus-visible{outline-color:#fff}.pb button,.pb a,.pb label{-webkit-tap-highlight-color:transparent}.pb button{cursor:pointer;font:inherit}.pb input,.pb select{font:inherit;font-size:var(--text-md);min-height:var(--tap);border:1.5px solid var(--c-line);border-radius:var(--r-pill);background:var(--c-surface);color:var(--c-ink);padding:0 var(--s-4)}.pb label{font-size:var(--text-sm);font-weight:600}.pb .eyebrow{font-size:var(--text-sm);letter-spacing:.04em;text-transform:uppercase;color:var(--c-accent-strong);align-items:center;gap:var(--s-2);font-weight:700;display:flex}.pb .eyebrow>span{background:var(--c-accent);border-radius:50%;width:8px;height:8px}.btn{justify-content:center;align-items:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-5);border-radius:var(--r-pill);font-family:var(--font-body);font-size:var(--text-md);text-align:center;white-space:nowrap;cursor:pointer;transition:transform var(--dur-press) var(--ease-out), background-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);border:1.5px solid #0000;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.btn:active:not(:disabled):not(.is-disabled){transform:scale(.96)}.btn--primary{background:var(--c-primary);color:#fff;box-shadow:var(--shadow-1)}.btn--accent{background:var(--c-accent);color:#fff;box-shadow:var(--shadow-1)}.btn--quiet{background:var(--c-surface);color:var(--c-ink);border-color:var(--c-line)}.btn--xl{min-height:60px;padding:0 var(--s-6);font-size:var(--text-lg)}@media (hover:hover){.btn--primary:hover:not(:disabled){background:var(--c-primary-strong);box-shadow:var(--shadow-2)}.btn--accent:hover:not(:disabled){background:var(--c-accent-strong);box-shadow:var(--shadow-2)}.btn--quiet:hover:not(:disabled):not(.is-disabled){border-color:var(--c-primary);background:var(--c-primary-soft)}}.btn:disabled,.btn.is-disabled{background:var(--c-paper-deep);color:var(--c-ink-soft);border-color:var(--c-line);box-shadow:none;cursor:not-allowed}.btn.is-disabled{pointer-events:none}.pb .brand{font-family:var(--font-display);letter-spacing:-.03em;gap:var(--s-2);color:var(--c-primary);font-size:1.625rem;font-weight:800}.pb .brand-icon{border-radius:var(--r-s);background:var(--c-primary);color:#fff;width:40px;height:40px}.pb .brand-dot{color:var(--c-accent);margin-left:-6px}.pb-nav{justify-content:space-between;align-items:center;gap:var(--s-4);max-width:1240px;padding:calc(var(--safe-top) + var(--s-4)) var(--gutter) var(--s-4);margin:0 auto;display:flex}.pb-nav nav{gap:var(--s-5);margin-inline:auto;display:flex}.pb-nav nav a{min-height:var(--tap);color:var(--c-ink-soft);border-bottom:2px solid #0000;align-items:center;font-weight:600;display:inline-flex}.pb-nav nav a:hover{color:var(--c-primary);border-color:var(--c-accent)}.screen{animation:screen-in var(--dur-screen) var(--ease-out)}@keyframes screen-in{0%{opacity:0;transform:translateY(16px)}}::view-transition-old(root){animation:vt-out .2s var(--ease-out) both}::view-transition-new(root){animation:vt-in var(--dur-screen) var(--ease-out) both}@keyframes vt-out{to{opacity:0;transform:translateY(-8px)}}@keyframes vt-in{0%{opacity:0;transform:translateY(16px)}}.welcome{align-items:center;gap:var(--s-6);max-width:1240px;padding:var(--s-6) var(--gutter) var(--s-8);grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);margin:0 auto;display:grid}.welcome-copy{justify-items:start;gap:var(--s-5);display:grid}.welcome h1{letter-spacing:-.035em;font-size:clamp(2.6rem,6.4vw,5rem);font-weight:800;line-height:1}.welcome h1 em{color:var(--c-accent);background:linear-gradient(var(--c-accent-soft), var(--c-accent-soft)) 0 88% / 100% .28em no-repeat;font-style:normal}.welcome-copy>p{font-size:var(--text-lg);color:var(--c-ink-soft);max-width:34ch}.welcome-trust{gap:var(--s-2) var(--s-5);font-size:var(--text-sm);color:var(--c-ink-soft);flex-wrap:wrap;margin:0;padding:0;font-weight:600;list-style:none;display:flex}.welcome-trust li{align-items:center;gap:6px;display:inline-flex}.welcome-trust svg{color:var(--c-primary)}.hero-art{aspect-ratio:1/1.02;width:100%;max-width:520px;margin-inline:auto;position:relative}.postcard{border-radius:var(--r-s);width:56%;box-shadow:var(--shadow-2);translate:var(--hero-x,0px) var(--hero-y,0px);transition:translate .6s var(--ease-out);background:#fff;padding:10px 10px 0;position:absolute}.postcard img{aspect-ratio:3/4;object-fit:cover;border-radius:6px;width:100%}.postcard span{padding:var(--s-3) 0;font-family:var(--font-display);font-weight:600;font-size:var(--text-md);color:var(--c-ink);text-align:center;display:block}.front-card{z-index:2;top:14%;left:2%;rotate:-6deg}.back-card{top:0;right:0;rotate:7deg}.art-stamp{z-index:3;border:2px dashed var(--c-accent);background:var(--c-paper);width:112px;height:112px;color:var(--c-accent-strong);font-size:var(--text-sm);letter-spacing:.05em;text-align:center;padding-top:var(--s-3);border-radius:50%;place-items:center;gap:2px;font-weight:700;line-height:1.2;display:grid;position:absolute;bottom:6%;right:6%;rotate:10deg}.art-stamp span{margin-top:-8px}@media (prefers-reduced-motion:no-preference){.postcard{animation:7s ease-in-out infinite float;animation-play-state:var(--hero-play,running)}.back-card{animation-duration:9s;animation-delay:-3s}.welcome-copy>*{animation:screen-in .6s var(--ease-out) both}.welcome-copy>:nth-child(2){animation-delay:80ms}.welcome-copy>:nth-child(3){animation-delay:.16s}.welcome-copy>:nth-child(4){animation-delay:.24s}.welcome-copy>:nth-child(5){animation-delay:.32s}}@keyframes float{50%{transform:translateY(-10px)}}.picker,.steps{max-width:1240px;padding:var(--s-7) var(--gutter);scroll-margin-top:var(--s-4);margin:0 auto}.section-head{gap:var(--s-2);margin-bottom:var(--s-5);display:grid}.section-head h2{font-size:clamp(1.9rem,4.4vw,3rem);font-weight:800}.section-head p{color:var(--c-ink-soft)}.picker-filters{justify-content:space-between;align-items:center;gap:var(--s-4);margin-bottom:var(--s-5);flex-wrap:wrap;display:flex}.chips{gap:var(--s-2);scroll-snap-type:x proximity;scrollbar-width:none;max-width:100%;padding-block:2px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chips button{scroll-snap-align:start;min-height:var(--tap);padding:0 var(--s-5);border:1.5px solid var(--c-line);border-radius:var(--r-pill);background:var(--c-surface);color:var(--c-ink);transition:transform var(--dur-press) var(--ease-out), background-color var(--dur-fast) var(--ease-out);flex:none;font-weight:600}.chips button:active{transform:scale(.96)}.chips button.selected{background:var(--c-primary);border-color:var(--c-primary);color:#fff}@media (hover:hover){.chips button:not(.selected):hover{background:var(--c-primary-soft)}}.picker-tools{gap:var(--s-3);display:flex}.field{align-items:center;display:flex;position:relative}.field svg{left:var(--s-4);color:var(--c-ink-soft);pointer-events:none;position:absolute}.field input,.field select{padding-left:44px}.field input{width:240px}.frame-grid{gap:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));display:grid}.frame-card{gap:var(--s-3);text-align:left;padding:var(--s-3);background:var(--c-surface);border:1.5px solid var(--c-line);border-radius:var(--r-m);box-shadow:var(--shadow-1);color:inherit;transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);align-content:start;display:grid}.frame-card:active{transition-duration:var(--dur-press);transform:scale(.98)}.frame-art{aspect-ratio:4/4.6;padding:var(--s-4);border-radius:var(--r-s);background:var(--c-primary-soft);place-items:center;display:grid;position:relative;overflow:hidden}.frame-art img{object-fit:contain;width:auto;max-width:100%;max-height:100%;box-shadow:var(--shadow-2);transition:transform var(--dur-screen) var(--ease-out);border-radius:6px}.frame-tag{top:var(--s-3);left:var(--s-3);z-index:1;padding:4px var(--s-3);border-radius:var(--r-pill);background:var(--c-accent);color:#fff;font-size:var(--text-sm);font-weight:700;position:absolute}.frame-info{justify-content:space-between;align-items:center;gap:var(--s-3);padding-inline:var(--s-1);display:flex}.frame-text h3{font-size:1.375rem}.frame-text p{font-size:var(--text-sm);color:var(--c-ink-soft);margin-top:4px}.frame-go{width:var(--tap);height:var(--tap);background:var(--c-primary);color:#fff;transition:transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);border-radius:50%;flex:none;place-items:center;display:grid}.frame-meta{align-items:center;gap:var(--s-3);padding:0 var(--s-1) var(--s-1);font-size:var(--text-sm);color:var(--c-ink-soft);font-weight:600;display:flex}.frame-free{padding:4px var(--s-3);border-radius:var(--r-pill);background:var(--c-primary-soft);color:var(--c-primary);margin-left:auto}.layout-glyph{border:1.5px solid var(--c-primary);background:var(--c-paper);border-radius:4px;height:36px;display:block;position:relative}.layout-glyph i{background:var(--c-primary-soft);border:1px solid var(--c-primary);border-radius:2px;position:absolute}@media (hover:hover){.frame-card:hover{border-color:var(--c-primary);box-shadow:var(--shadow-2);transform:translateY(-4px)}.frame-card:hover .frame-art img{transform:scale(1.04)rotate(-1deg)}.frame-card:hover .frame-go{background:var(--c-accent);transform:translate(3px)}}.load-more{margin:var(--s-6) auto 0;display:flex}.steps{background:var(--c-paper-deep);border-radius:var(--r-m);max-width:none}.steps ol{gap:var(--s-5);grid-template-columns:repeat(3,minmax(0,1fr));margin-block:0;padding:0;list-style:none;display:grid}.steps li{gap:var(--s-2);align-content:start;display:grid}.step-stamp{border:2px dashed var(--c-accent);border-radius:var(--r-s);background:var(--c-paper);width:56px;height:56px;color:var(--c-accent-strong);font-family:var(--font-display);place-items:center;font-size:1.5rem;font-weight:800;display:grid}.steps h3{font-size:1.25rem}.pb-footer{justify-content:space-between;align-items:center;gap:var(--s-4);max-width:1240px;padding:var(--s-6) var(--gutter) calc(var(--s-6) + var(--safe-bottom));font-size:var(--text-sm);color:var(--c-ink-soft);flex-wrap:wrap;margin:0 auto;display:flex}.offline-banner{z-index:30;justify-content:center;align-items:center;gap:var(--s-2);padding:var(--s-3) var(--gutter);padding-top:calc(var(--safe-top) + var(--s-3));background:var(--c-ink);color:var(--c-paper);font-size:var(--text-sm);text-align:center;font-weight:600;display:flex;position:sticky;top:0}.state-card{justify-items:center;gap:var(--s-3);max-width:520px;margin:var(--s-5) auto;padding:var(--s-6) var(--s-5);background:var(--c-surface);border:1.5px solid var(--c-line);border-radius:var(--r-m);text-align:center;display:grid}.state-card h3{font-size:1.375rem}.state-card p{color:var(--c-ink-soft);max-width:42ch}.state-icon{background:var(--c-accent-soft);width:64px;height:64px;color:var(--c-accent-strong);border-radius:50%;place-items:center;display:grid}.state-card--ask .state-icon{background:var(--c-primary-soft);color:var(--c-primary)}.state-steps{text-align:left;padding-left:var(--s-5);color:var(--c-ink-soft);font-size:var(--text-sm);margin:0}.state-actions{justify-content:center;gap:var(--s-3);margin-top:var(--s-2);flex-wrap:wrap;display:flex}.state-icon--pulse{animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{transform:scale(1.08)}}.alert,.pb .success{align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-4);border-radius:var(--r-s);font-size:var(--text-sm);margin:0;font-weight:600;line-height:1.5;display:flex}.alert{color:var(--c-danger);border:2px solid var(--c-accent);background:#ffe8ec}.sk-grid{gap:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));display:grid}.sk-card{gap:var(--s-3);padding:var(--s-3);background:var(--c-surface);border:1.5px solid var(--c-line);border-radius:var(--r-m);display:grid}.sk{border-radius:var(--r-s);background:linear-gradient(100deg, transparent 30%, #ffffffb3 50%, transparent 70%) 0 0 / 200% 100%, var(--c-paper-deep)}.sk-art{aspect-ratio:4/4.6}.sk-line{height:20px}.sk-line--short{width:60%}@media (prefers-reduced-motion:no-preference){.sk{animation:1.4s linear infinite shimmer}}@keyframes shimmer{to{background-position:-200% 0}}.spinner{align-items:center;gap:var(--s-3);font-weight:600;display:inline-flex}.spinner i{opacity:.8;border:3px solid;border-top-color:#0000;border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.booth-steps{gap:var(--s-4);font-size:var(--text-sm);color:var(--c-ink-soft);margin:0 auto;padding:0;font-weight:600;list-style:none;display:flex}.booth-steps li{align-items:center;gap:var(--s-2);display:flex}.booth-steps li>span{border:1.5px solid var(--c-line);background:var(--c-surface);width:28px;height:28px;font-size:var(--text-sm);border-radius:50%;place-items:center;display:grid}.booth-steps .is-done>span{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.booth-steps .is-current{color:var(--c-ink)}.booth-steps .is-current>span{background:var(--c-accent);border-color:var(--c-accent);color:#fff}.booth-main{align-items:start;gap:var(--s-6);max-width:1240px;padding:var(--s-4) var(--gutter) var(--s-7);grid-template-columns:minmax(0,1.1fr) minmax(340px,.9fr);margin:0 auto;display:grid}.booth-stage{gap:var(--s-4);top:var(--s-4);justify-items:center;display:grid;position:sticky}.booth-intro{gap:var(--s-2);text-align:center;justify-items:center;display:grid}.booth-intro h1{font-size:clamp(1.9rem,4.6vw,3rem);font-weight:800}.booth-intro p{color:var(--c-ink-soft)}.booth-stage>.state-card,.booth-stage>.alert{width:100%;margin:0}.strip{width:100%;padding:var(--s-4) 0;justify-items:center;display:grid;position:relative}.strip-paper{width:min(100%, calc(66dvh * var(--ar,.67)));padding:var(--s-3);border-radius:var(--r-s);box-shadow:var(--shadow-2);transition:rotate var(--dur-screen) var(--ease-spring), box-shadow var(--dur-fast) var(--ease-out);background:#fff;position:relative}.strip-paper .preview canvas{border-radius:6px}.strip.is-complete .strip-paper{rotate:-1.5deg}.strip.is-complete .strip-paper:before{content:"";background:#d90429e0;border-radius:4px;width:96px;height:28px;position:absolute;top:-14px;left:50%;translate:-50%;rotate:3deg}.strip-badge{padding:6px var(--s-4);border-radius:var(--r-pill);background:var(--c-accent);color:#fff;font-size:var(--text-sm);box-shadow:var(--shadow-1);align-items:center;gap:6px;font-weight:700;display:inline-flex;position:absolute;bottom:0}@media (prefers-reduced-motion:no-preference){.strip.is-complete .strip-paper{animation:settle .52s var(--ease-spring)}.strip-badge{animation:screen-in var(--dur-screen) var(--ease-out) .2s both}}@keyframes settle{0%{transform:translateY(-14px)scale(1.03)}}.privacy-note{align-items:center;gap:var(--s-2);font-size:var(--text-sm);color:var(--c-ink-soft);display:inline-flex}.booth-panel{gap:var(--s-4);padding:var(--s-5);background:var(--c-surface);border:1.5px solid var(--c-line);border-radius:var(--r-m);box-shadow:var(--shadow-1);display:grid}.panel-head{justify-content:space-between;align-items:center;gap:var(--s-3);display:flex}.panel-head h2{font-size:1.375rem}.panel-count{padding:4px var(--s-3);border-radius:var(--r-pill);background:var(--c-primary-soft);color:var(--c-primary);font-size:var(--text-sm);font-weight:700}.photo-slots{gap:var(--s-3);flex-wrap:wrap;display:flex}.photo-slots button{border:2px dashed var(--c-line);border-radius:var(--r-s);background:var(--c-paper);width:72px;height:72px;color:var(--c-ink-soft);transition:transform var(--dur-press) var(--ease-out), border-color var(--dur-fast) var(--ease-out);place-items:center;padding:0;display:grid;position:relative;overflow:hidden}.photo-slots button:active:not(:disabled){transform:scale(.96)}.photo-slots button.selected{border:3px solid var(--c-primary)}.photo-slots button:disabled{opacity:1;cursor:default}.photo-slots img{object-fit:cover;width:100%;height:100%}.photo-slots button>span{background:var(--c-ink);color:#fff;min-width:22px;height:22px;font-size:var(--text-sm);border-radius:50%;place-items:center;font-weight:700;line-height:1;display:grid;position:absolute;top:4px;left:4px}.dock{gap:var(--s-3);grid-template-columns:1.3fr 1fr;grid-template-areas:"cam up""hint hint";display:grid}.dock[data-ready=true]{grid-template-areas:"save save""cam up""hint hint"}.dock-camera{grid-area:cam}.dock-upload{cursor:pointer;grid-area:up}.dock-save{gap:var(--s-3);grid-area:save;display:grid}.dock[data-ready=false] .dock-save{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.dock[data-ready=true] .dock-camera{min-height:var(--tap);font-size:var(--text-md)}.dock-hint{font-size:var(--text-sm);color:var(--c-ink-soft);text-align:center;grid-area:hint}.format{justify-content:space-between;align-items:center;gap:var(--s-3);display:flex}.format select{flex:1;max-width:220px}.download-btn{width:100%}.crop-controls{gap:var(--s-3);display:grid}.range{gap:2px;display:grid}.range>span{align-items:center;gap:var(--s-2);display:flex}.pb .range input{width:100%;min-height:var(--tap);accent-color:var(--c-primary);background:0 0;border:0;padding:0}.crop-actions{gap:var(--s-3);grid-template-columns:1fr 1fr;display:grid}.crop-actions .btn{padding:0 var(--s-3);font-size:var(--text-sm)}.crop-empty{padding:var(--s-4);border-radius:var(--r-s);background:var(--c-paper);color:var(--c-ink-soft);font-size:var(--text-sm)}.mobile-edit-button{display:none}.cam{z-index:100;background:var(--c-stage);color:#fff;border:0;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}.cam[open]{animation:cam-in var(--dur-screen) var(--ease-out)}.cam::backdrop{background:var(--c-stage)}@keyframes cam-in{0%{opacity:0;transform:scale(1.03)}}.cam-video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}.cam-loading{background:var(--c-stage);place-items:center;display:grid;position:absolute;inset:0}.cam-top,.cam-bottom{padding-inline:max(var(--s-4), var(--safe-left)) max(var(--s-4), var(--safe-right));display:flex;position:absolute;left:0;right:0}.cam-top{align-items:flex-start;gap:var(--s-3);padding-top:calc(var(--safe-top) + var(--s-3));padding-bottom:var(--s-6);background:linear-gradient(#0009,#0000);top:0}.cam-icon{width:var(--tap);height:var(--tap);color:#fff;transition:transform var(--dur-press) var(--ease-out);background:#0009;border:1.5px solid #ffffff59;border-radius:50%;flex:none;place-items:center;display:grid}.cam-icon:active{transform:scale(.94)}.cam-progress{gap:var(--s-2);min-height:var(--tap);flex:1;align-content:center;display:grid}.cam-progress p{text-shadow:0 1px 6px #0000008c;font-weight:700}.cam-bars{gap:6px;display:flex}.cam-bars i{height:6px;transition:background-color var(--dur-fast) var(--ease-out);background:#ffffff59;border-radius:3px;flex:1}.cam-bars .is-done{background:#fff}.cam-bars .is-current{background:var(--c-accent);box-shadow:0 0 0 1.5px #fff}.cam-pip{border-radius:var(--r-s);width:72px;box-shadow:var(--shadow-1);background:#fff;border:2px solid #fff;flex:none;overflow:hidden}.cam-count{pointer-events:none;place-items:start center;padding-top:9dvh;display:grid;position:absolute;inset:0}.cam-count span{font-family:var(--font-display);color:#ffffffeb;text-shadow:0 4px 24px #00000073;animation:count-pop 1s var(--ease-out) both;font-size:clamp(5rem,20vmin,9rem);font-weight:800;line-height:1}@keyframes count-pop{0%{opacity:0;transform:scale(1.7)}25%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0;transform:scale(.8)}}.cam-flash{pointer-events:none;background:#fff;animation:.42s ease-out forwards flash;position:absolute;inset:0}@keyframes flash{0%{opacity:.95}to{opacity:0}}.cam-bottom{align-items:center;gap:var(--s-3);padding-top:var(--s-7);padding-bottom:calc(var(--safe-bottom) + var(--s-4));background:linear-gradient(#0000,#000000b3);flex-direction:column;bottom:0}.cam-strip{gap:var(--s-2);margin:0;padding:0;list-style:none;display:flex}.cam-strip li{width:44px;height:58px;font-size:var(--text-sm);background:#00000073;border:2px solid #ffffff8c;border-radius:8px;place-items:center;font-weight:700;display:grid;position:relative;overflow:hidden}.cam-strip li.is-current{box-shadow:0 0 0 2px var(--c-accent);border-color:#fff}.cam-strip img{object-fit:cover;width:100%;height:100%;animation:drop-in .56s var(--ease-spring) both;transform:scaleX(-1)}@keyframes drop-in{0%{opacity:0;transform:translateY(-160px)rotate(-10deg)scale(2.4)scaleX(-1)}}.cam-actions{justify-items:center;gap:var(--s-3);display:grid}.shutter{justify-items:center;gap:var(--s-2);min-width:var(--tap);min-height:var(--tap);color:#fff;text-shadow:0 1px 6px #0009;background:0 0;border:0;padding:0;display:grid}.shutter-ring{width:88px;height:88px;transition:transform var(--dur-press) var(--ease-out);border:4px solid #fff;border-radius:50%;padding:6px;display:grid}.shutter-core{background:var(--c-accent);transition:transform var(--dur-press) var(--ease-out), background-color var(--dur-fast) var(--ease-out);border-radius:50%}.shutter-label{font-size:var(--text-sm);font-weight:700}.shutter:active:not(:disabled) .shutter-ring{transform:scale(.94)}.shutter:active:not(:disabled) .shutter-core{transform:scale(.88)}.shutter:disabled{opacity:1;cursor:wait}.shutter:disabled .shutter-core{background:#8c8c8c}@media (hover:hover){.shutter:hover:not(:disabled) .shutter-core{background:var(--c-accent-strong)}}.cam-link{align-items:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-4);border-radius:var(--r-pill);color:#fff;font-size:var(--text-sm);transition:transform var(--dur-press) var(--ease-out);background:#0009;border:1.5px solid #fff6;font-weight:600;display:inline-flex}.cam-link:active{transform:scale(.96)}@media (width>=900px){.cam-pip{width:132px}.cam-strip li{width:56px;height:72px}}@media (orientation:landscape) and (height<=560px){.cam-bottom{width:220px;padding-top:calc(var(--safe-top) + var(--s-3));background:linear-gradient(90deg,#0000,#000000b3);justify-content:center;top:0;left:auto}.cam-top{right:220px}.cam-strip{flex-wrap:wrap;justify-content:center}.cam-strip li{width:40px;height:52px}.cam-count{padding-top:8dvh;right:220px}}.mobile-photo-editor{background:var(--c-paper);width:100%;max-width:none;height:100dvh;max-height:none;color:var(--c-ink);border:0;margin:0;padding:0}.mobile-photo-editor[open]{animation:sheet-in var(--dur-screen) var(--ease-out);flex-direction:column;display:flex}@keyframes sheet-in{0%{opacity:0;transform:translateY(24px)}}.mobile-photo-editor>header{justify-content:space-between;align-items:center;gap:var(--s-3);padding:calc(var(--safe-top) + var(--s-3)) var(--s-4) var(--s-3);display:flex}.mobile-photo-editor h2{font-size:1.25rem}.mobile-edit-preview{min-height:0;padding:var(--s-3) var(--s-4);background:var(--c-paper-deep);flex:1;overflow:hidden}.mobile-edit-preview .preview{width:100%;height:100%}.mobile-edit-preview canvas{object-fit:contain;width:100%;height:100%;aspect-ratio:auto!important}.mobile-edit-panel{gap:var(--s-3);max-height:46dvh;padding:var(--s-4) var(--s-4) calc(var(--safe-bottom) + var(--s-4));background:var(--c-surface);border-top:1.5px solid var(--c-line);border-radius:var(--r-m) var(--r-m) 0 0;grid-auto-rows:max-content;display:grid;overflow-y:auto}.mobile-edit-photo-tabs{gap:var(--s-3);min-height:64px;padding:2px;display:flex;overflow-x:auto}.mobile-edit-photo-tabs button{isolation:isolate;border:2px solid var(--c-line);border-radius:var(--r-s);color:#fff;width:56px;height:56px;font-weight:700;font-size:var(--text-sm);text-shadow:0 1px 4px #000000b3;flex:none;padding:0;position:relative;overflow:hidden}.mobile-edit-photo-tabs button[aria-pressed=true]{border:3px solid var(--c-primary)}.mobile-edit-photo-tabs img{object-fit:cover;z-index:-1;width:100%;height:100%;position:absolute;inset:0}@media (width<=899px){.pb-nav nav,.pb-nav-studio{display:none}.welcome{padding-top:var(--s-4);padding-bottom:var(--s-6);grid-template-columns:1fr}.hero-art{max-width:320px;margin-top:var(--s-4)}.booth-steps li:not(.is-current){gap:0;font-size:0}.booth-main{grid-template-columns:1fr}.booth-stage{position:static}.steps ol{grid-template-columns:1fr}.picker-tools{width:100%}.picker-tools .field{flex:1}.field input{width:100%}}@media (width<=767px){.desktop-crop{display:none}.mobile-edit-button{display:inline-flex}.booth-panel{box-shadow:none;background:0 0;border:0;padding:0}.welcome h1{font-size:clamp(2.3rem,11.4vw,3.4rem)}}@media (width<=899px) and (height>=540px){.booth-main{padding-bottom:200px}.dock{z-index:20;padding:var(--s-3) max(var(--gutter), var(--safe-left)) calc(var(--safe-bottom) + var(--s-3));backdrop-filter:blur(12px);border-top:1.5px solid var(--c-line);background:#fffffff0;position:fixed;bottom:0;left:0;right:0}.dock[data-ready=true] .dock-hint{display:none}.dock-save{grid-template-columns:auto 1fr;align-items:center}.format{flex-direction:column;align-items:flex-start;gap:2px}.format select{max-width:150px;min-height:var(--tap)}}@media (width<=480px){.btn--xl{padding-inline:var(--s-4)}.dock{grid-template-columns:1fr 1fr}}@media (prefers-reduced-motion:reduce){.pb *,.pb :before,.pb :after,.cam,.cam *{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.cam-flash{display:none}.postcard{translate:none}}:root{--clay-lip:inset 0 -3px 0 #00000024, inset 0 2px 0 #ffffff47;--clay-lip-soft:inset 0 -3px 0 #0000000f}html{scroll-behavior:smooth;scroll-padding-block:var(--s-5) 220px}.btn{white-space:normal;cursor:pointer}.btn--primary,.btn--accent{box-shadow:var(--clay-lip), var(--shadow-1)}.btn--quiet{box-shadow:var(--clay-lip-soft);border-width:2px}@media (hover:hover){.btn--primary:hover:not(:disabled),.btn--accent:hover:not(:disabled){box-shadow:var(--clay-lip), var(--shadow-2);transform:translateY(-2px)}}.chips button{box-shadow:var(--clay-lip-soft);border-width:2px}.frame-card{box-shadow:var(--clay-lip-soft), var(--shadow-1);border-width:2px}.frame-art{border:2px solid #00000014}.frame-go{box-shadow:var(--clay-lip)}@media (hover:hover) and (prefers-reduced-motion:no-preference){.frame-card:hover{transition-timing-function:var(--ease-spring)}}.booth-panel{box-shadow:var(--clay-lip-soft), var(--shadow-1);border-width:2px}.photo-slots button{border-width:2px}.photo-slots button.selected{box-shadow:0 0 0 4px var(--c-primary-soft)}.sticker{z-index:4;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-4);border:2px solid var(--c-ink);border-radius:var(--r-pill);color:var(--c-ink);font-size:var(--text-sm);box-shadow:var(--clay-lip-soft), var(--shadow-1);background:#fff;font-weight:700;display:inline-flex;position:absolute}.sticker svg{color:var(--c-accent)}.sticker--a{top:4%;left:-2%;rotate:-5deg}.sticker--b{bottom:24%;right:12%;rotate:4deg}.sticker--b svg{color:var(--c-primary)}.terraces{width:100%;height:clamp(56px,9vw,120px);margin-top:calc(var(--s-6) * -1);display:block}.terraces+.picker{margin-top:0}.steps{max-width:none;margin:var(--s-6) 0 0;padding:var(--s-7) var(--gutter);border-radius:0}.steps-inner{max-width:1240px;margin-inline:auto}.steps>*{max-width:none;margin-inline:0}.steps ol{position:relative}@media (width>=900px){.steps ol:before{content:"";border-top:2px dashed var(--c-accent);opacity:.45;position:absolute;top:28px;left:28px;right:28px}.step-stamp{position:relative}}.step-stamp{box-shadow:var(--clay-lip-soft);border-width:2px}.strip-stamp{z-index:2;border:2px dashed var(--c-accent);width:84px;height:84px;color:var(--c-accent-strong);font-size:var(--text-sm);letter-spacing:.06em;padding-top:var(--s-2);background:#ffffffeb;border-radius:50%;place-items:center;gap:0;font-weight:800;line-height:1;display:grid;position:absolute;bottom:10%;right:6%;rotate:12deg}@media (prefers-reduced-motion:no-preference){.strip-stamp{animation:stamp-in .48s var(--ease-spring) .36s both}.frame-card,.sk-card{animation:card-rise .52s var(--ease-out) both;animation-delay:calc(var(--i,0) * 70ms)}.sticker{animation:sticker-pop .56s var(--ease-spring) .4s both}@supports (animation-timeline:view()){.section-head,.steps li{animation:linear both card-rise view();animation-range:entry entry 55%}}}@keyframes stamp-in{0%{opacity:0;rotate:-8deg;scale:1.8}}@keyframes card-rise{0%{opacity:0;transform:translateY(24px)scale(.97)}}@keyframes sticker-pop{0%{opacity:0;scale:.6}}@media (width<=899px){.sticker--a{top:0;left:0}.sticker--b{bottom:30%;right:4%}}.result-view{background:var(--c-paper);width:100%;max-width:none;height:100dvh;max-height:none;color:var(--c-ink);border:0;margin:0;padding:0}.result-view[open]{animation:sheet-in var(--dur-screen) var(--ease-out);flex-direction:column;display:flex}.result-view>header{justify-content:space-between;align-items:center;gap:var(--s-3);padding:calc(var(--safe-top) + var(--s-3)) var(--gutter) var(--s-3);display:flex}.result-view h2{font-size:1.25rem}.result-body{gap:var(--s-4);min-height:0;padding:0 var(--gutter) calc(var(--safe-bottom) + var(--s-6));flex:1;align-content:start;display:grid;overflow-y:auto}.result-photo{padding:var(--s-3);border-radius:var(--r-m);background:var(--c-paper-deep);place-items:center;display:grid}.result-photo img{border-radius:var(--r-s);max-width:100%;max-height:60dvh;display:block;box-shadow:0 8px 24px #00000038}.result-side{gap:var(--s-4);align-content:start;display:grid}.result-steps{gap:var(--s-5);margin:0;padding:0;list-style:none;display:grid}.result-steps li{gap:var(--s-3);display:grid}.result-steps h3{align-items:flex-start;gap:var(--s-2);font-size:var(--text-lg);display:flex}.result-steps h3 span{border-radius:var(--r-pill);background:var(--c-primary);color:#fff;width:28px;height:28px;font-size:var(--text-sm);flex:none;place-items:center;display:grid}.result-hint{color:var(--c-ink-soft);font-size:var(--text-sm);margin:0}@media (width>=900px){.result-body{gap:var(--s-6);grid-template-columns:minmax(0,1fr) minmax(360px,480px)}.result-photo img{max-height:78dvh}}.result-rating{align-items:center;gap:var(--s-2);color:var(--c-ink);margin:0;display:flex}.result-rating svg{color:#e8a317;fill:currentColor}.pb .brand{color:var(--c-ink)}.pb .brand-icon{background:var(--c-accent)}.pb .brand-dot{color:var(--c-accent)}.pb :focus-visible{outline-color:var(--c-ink)}.btn--quiet{border-color:var(--c-ink);color:var(--c-ink)}.btn--primary{background:var(--c-ink)}.btn--accent{border-color:var(--c-ink);box-shadow:0 4px 0 var(--c-ink)}.btn--accent:active:not(:disabled):not(.is-disabled){box-shadow:0 1px 0 var(--c-ink);transform:translateY(3px)scale(.97)}@media (hover:hover){.btn--accent:hover:not(:disabled){background:var(--c-accent-strong);box-shadow:0 6px 0 var(--c-ink);transform:translateY(-2px)}.btn--quiet:hover:not(:disabled):not(.is-disabled){background:var(--c-ink);color:#fff;border-color:var(--c-ink)}.btn--primary:hover:not(:disabled){background:var(--c-accent)}}.btn:disabled,.btn.is-disabled{border-color:var(--c-line);box-shadow:none}.btn--accent:disabled{background:var(--c-paper-deep)}.hero-art:before{content:"";background:var(--c-accent);border-radius:50%;position:absolute;inset:8% 4% 2% 10%}.postcard{border:2px solid var(--c-ink)}.art-stamp{background:var(--c-ink);color:#fff;outline:2px solid var(--c-ink);border:2px solid #fff}.art-stamp svg{color:var(--c-red-on-dark)}.sticker{box-shadow:3px 3px 0 var(--c-ink)}.welcome h1 em{color:var(--c-accent);background-image:linear-gradient(var(--c-accent-soft), var(--c-accent-soft))}.terraces path:first-child{fill:var(--c-accent-soft);opacity:1}.terraces path:nth-child(2){fill:var(--c-accent)}.terraces path:nth-child(3){fill:var(--c-paper)}.chips button{border-color:var(--c-ink);box-shadow:none}.chips button.selected{background:var(--c-ink);color:#fff}@media (hover:hover){.chips button:not(.selected):hover{background:var(--c-accent-soft)}}.field input,.field select{border-color:var(--c-ink)}.frame-card{border:2px solid var(--c-ink);box-shadow:none}.frame-art{background:var(--c-accent-soft);border:0}.frame-art.tone-1{background:var(--c-ink)}.frame-art.tone-2{background:var(--c-primary-soft)}.frame-go{background:var(--c-accent);box-shadow:none}.frame-free{background:var(--c-ink);color:#fff}.frame-tag{background:var(--c-accent);border:2px solid var(--c-ink)}.layout-glyph{border-color:var(--c-ink)}.layout-glyph i{background:var(--c-accent-soft);border-color:var(--c-accent)}@media (hover:hover){.frame-card:hover{border-color:var(--c-ink);box-shadow:6px 6px 0 var(--c-accent);transform:translate(-3px,-3px)}.frame-card:hover .frame-go{background:var(--c-ink)}}.steps{background:var(--c-ink);color:#fff}.steps h2,.steps h3{color:#fff}.steps p{color:#d0d0d0}.steps .eyebrow{color:var(--c-red-on-dark)}.steps .eyebrow>span{background:var(--c-red-on-dark)}.steps .step-stamp{background:var(--c-accent);color:#fff;box-shadow:none;border:2px solid #fff}.steps ol:before{opacity:.35;border-top-color:#fff}.steps :focus-visible{outline-color:#fff}.pb-footer{background:var(--c-ink);color:#d0d0d0;box-shadow:0 0 0 100vmax var(--c-ink);clip-path:inset(0 -100vmax)}.pb-footer .brand{color:#fff}.booth-steps .is-done>span{background:var(--c-ink);border-color:var(--c-ink)}.booth-steps li>span{border:2px solid var(--c-ink)}.booth-panel{border:2px solid var(--c-ink);box-shadow:6px 6px 0 var(--c-ink)}.panel-count{background:var(--c-ink);color:#fff}.photo-slots button{border-color:var(--c-ink);border-style:dashed}.photo-slots button.selected{border:3px solid var(--c-accent);box-shadow:0 0 0 4px var(--c-accent-soft)}.strip-paper{border:2px solid var(--c-ink);box-shadow:6px 6px 0 var(--c-ink)}.strip-badge{border:2px solid var(--c-ink)}.strip-stamp{background:var(--c-ink);outline:2px solid var(--c-ink);color:#fff;border:2px solid #fff}.pb .success{background:var(--c-ink);color:#fff;border:0}.dock{border-top-color:var(--c-ink)}.state-card,.sk-card{border-color:var(--c-ink)}.offline-banner{background:var(--c-accent);color:#fff}@media (width<=767px){.booth-panel{box-shadow:none;border:0}}@media (prefers-reduced-motion:reduce){.btn--accent:active{transform:none}}
