:root{--primary:#8b5e3c;--bg:#fff8f0;--text:#2a211c;--muted:#6b5d55;--font-heading:Georgia, serif;--font-body:system-ui, sans-serif;--radius:16px}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--text);font-family:var(--font-body);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;margin:0;font-size:18px;line-height:1.5}button{font:inherit;cursor:pointer;touch-action:manipulation}button:disabled{cursor:default;opacity:.5}.page{min-height:100dvh;padding:calc(env(safe-area-inset-top) + 24px) 20px calc(env(safe-area-inset-bottom) + 24px);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex}.btn-primary,.btn-secondary{border-radius:999px;width:100%;max-width:340px;min-height:60px;padding:12px 24px;font-size:1.15rem;font-weight:600}.btn-primary{background:var(--primary);color:#fff;border:none}.btn-secondary{color:inherit;background:0 0;border:2px solid}.message h1{font-family:var(--font-heading);margin:0;font-size:2rem}.message p{max-width:340px;color:var(--muted);margin:0 0 12px}.landing{position:relative}.lang-toggle{top:calc(env(safe-area-inset-top) + 12px);border:1px solid var(--muted);min-height:44px;color:var(--text);background:0 0;border-radius:999px;padding:8px 16px;font-size:.9rem;position:absolute;right:16px}.eyebrow{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.9rem}.couple{color:var(--primary);font-family:var(--font-heading);margin:0;font-size:clamp(2.6rem,13vw,4rem);font-weight:400;line-height:1.15}.date{margin:0 0 16px;font-size:1.1rem}.card{border-radius:var(--radius);background:#ffffffb3;flex-direction:column;align-items:center;gap:8px;width:100%;max-width:380px;padding:24px 20px;display:flex;box-shadow:0 2px 16px #0000000f}.card p{margin:0}.privacy{max-width:340px;color:var(--muted);margin:16px 0 0;font-size:.9rem}.camera{color:#fff;-webkit-user-select:none;user-select:none;background:#000;flex-direction:column;display:flex;position:fixed;inset:0}.cam-top{padding:calc(env(safe-area-inset-top) + 8px) 12px 8px;justify-content:space-between;align-items:center;display:flex}.counter{font-variant-numeric:tabular-nums;background:#ffffff26;border-radius:999px;padding:6px 16px;font-weight:600}.icon-btn,.icon-btn-spacer{width:52px;height:52px}.icon-btn{color:#fff;background:#ffffff26;border:none;border-radius:50%;place-items:center;padding:0;display:grid}.icon-btn svg{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;width:28px;height:28px}.viewfinder{flex:1;min-height:0;position:relative;overflow:hidden}.viewfinder video{object-fit:contain;width:100%;height:100%;display:block}.viewfinder video.mirrored{transform:scaleX(-1)}.countdown{text-shadow:0 4px 24px #0009;pointer-events:none;place-items:center;font-size:40vmin;font-weight:700;animation:1s ease-out pop;display:grid;position:absolute;inset:0}@keyframes pop{0%{opacity:.4;transform:scale(1.3)}20%{opacity:1;transform:scale(1)}}.flash{opacity:0;pointer-events:none;background:#fff;animation:.35s ease-out flash;position:absolute;inset:0}@keyframes flash{0%{opacity:.9}to{opacity:0}}.cam-status{color:#fffc;place-items:center;margin:0;display:grid;position:absolute;inset:0}.cam-panel{text-align:center;background:#000000d9;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex;position:absolute;inset:0;overflow-y:auto}.cam-panel h2{margin:0;font-size:1.4rem}.cam-panel p{white-space:pre-line;text-align:left;max-width:360px;margin:0 0 8px}.notice{color:#fff;text-align:center;background:#b3261e;border-radius:12px;margin:0;padding:12px 16px;position:absolute;bottom:16px;left:16px;right:16px}.timer-row{justify-content:center;align-items:center;gap:8px;padding:10px 12px 0;display:flex}.timer-label{color:#ffffffb3;margin-right:4px;font-size:.85rem}.chip{color:#fff;background:0 0;border:1px solid #ffffff59;border-radius:999px;min-width:56px;min-height:40px;padding:4px 12px;font-size:.95rem}.chip.active{border-color:var(--primary);background:var(--primary);font-weight:600}.cam-bottom{padding:12px 24px calc(env(safe-area-inset-bottom) + 20px);grid-template-columns:1fr auto 1fr;align-items:center;display:grid}.thumb{object-fit:cover;border:2px solid #fff;border-radius:12px;justify-self:start;width:56px;height:56px}.thumb.empty{border-color:#ffffff40}.shutter{background:var(--primary);color:#fff;border:6px solid #fff;border-radius:50%;width:84px;height:84px;padding:0;font-size:1.8rem;transition:transform 80ms}.shutter:active:not(:disabled){transform:scale(.92)}.shutter.counting{background:#fff3}.switch{justify-self:end}.thumb-btn{background:0 0;border:none;justify-self:start;padding:0}.thumb-btn .thumb{display:block}.roll,.compose{flex-direction:column;min-height:100dvh;display:flex}.bar{z-index:2;padding:calc(env(safe-area-inset-top) + 8px) 12px 8px;background:var(--bg);justify-content:space-between;align-items:center;gap:8px;display:flex;position:sticky;top:0}.bar h1{text-align:center;margin:0;font-size:1.15rem}.bar .icon-btn{color:var(--text);background:#0000000f}.empty{color:var(--muted);text-align:center;flex:1;place-items:center;margin:0;padding:24px;display:grid}.roll-grid{flex:1;grid-template-columns:repeat(3,1fr);align-content:start;gap:4px;margin:0;padding:4px 4px 16px;list-style:none;display:grid}.roll-item{aspect-ratio:1;background:#00000014;border:none;border-radius:6px;width:100%;padding:0;display:block;position:relative;overflow:hidden}.roll-item img{object-fit:cover;width:100%;height:100%;display:block}.roll-item.picked{outline:4px solid var(--primary);outline-offset:-4px}.roll-item.picked img{opacity:.85}.badge{background:var(--primary);color:#fff;border:2px solid #fff;border-radius:999px;place-items:center;min-width:30px;height:30px;padding:0 6px;font-size:.95rem;font-weight:700;display:grid;position:absolute;top:6px;right:6px}.dock{padding:12px 16px calc(env(safe-area-inset-bottom) + 16px);background:var(--bg);flex-direction:column;gap:10px;display:flex;position:sticky;bottom:0;box-shadow:0 -4px 16px #00000014}.dock-hint{color:var(--muted);text-align:center;margin:0;font-size:.9rem}.dock-row{align-items:center;gap:12px;display:flex}.dock-count{flex:1;font-weight:600}.dock-row .btn-primary{width:auto;min-width:140px}.layout-buttons{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;display:grid}.layout-btn{border:2px solid var(--primary);border-radius:var(--radius);color:var(--text);background:#fff;flex-direction:column;align-items:center;gap:4px;padding:12px;font-weight:600;display:flex}.layout-btn small{color:var(--muted);font-weight:400}.layout-icon{max-width:100%;height:64px;margin-bottom:4px}.layout-icon rect:first-child{fill:var(--primary)}.layout-icon rect{fill:#fff}.viewer{z-index:10;background:#000;flex-direction:column;display:flex;position:fixed;inset:0}.viewer-image{min-height:0;padding:calc(env(safe-area-inset-top) + 8px) 8px 8px;flex:1;place-items:center;display:grid}.viewer-image img{object-fit:contain;max-width:100%;max-height:100%}.viewer-bar{padding:12px 16px calc(env(safe-area-inset-bottom) + 16px);color:#fff;gap:12px;display:flex}.compose{padding-bottom:calc(env(safe-area-inset-bottom) + 16px);gap:12px}.composite-wrap{place-items:center;min-height:200px;padding:0 16px;display:grid;position:relative}.composite{-webkit-touch-callout:default;border-radius:4px;max-width:100%;max-height:62dvh;display:block;box-shadow:0 6px 24px #0003}.composite-status{place-items:center;margin:0;font-weight:600;display:grid;position:absolute;inset:0}.composite-status:not(.error){color:var(--primary);text-shadow:0 0 12px var(--bg), 0 0 4px var(--bg)}.composite-status.error{color:#b3261e}.slot-row{flex-wrap:wrap;justify-content:center;gap:8px;margin:0;padding:0 16px;list-style:none;display:flex}.slot-thumb{background:#00000014;border:3px solid #0000;border-radius:10px;width:56px;height:56px;padding:0;position:relative;overflow:hidden}.slot-thumb img{object-fit:cover;width:100%;height:100%;display:block}.slot-thumb .badge{border-width:1px;min-width:22px;height:22px;font-size:.75rem;top:2px;right:2px}.slot-thumb.armed{border-color:var(--primary);transform:scale(1.08)}.compose-actions{flex-direction:column;align-items:center;gap:8px;padding:0 16px;display:flex}
