@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond.woff2)format("woff2");font-weight:300 700;font-display:swap}@font-face{font-family:Jost;src:url(/fonts/Jost.woff2)format("woff2");font-weight:100 900;font-display:swap}:root{--wine:#7d4044;--wine-deep:#642f35;--night:#1f0c10;--ivory:#fdfaf6;--muted:#fdfaf6c7;--line:#fdfaf652;--gold:#c9ab6b;--gold-text:#e3c98e;--foil:linear-gradient(110deg, #ad8c4f 0%, #dcc387 42%, #c6a666 68%, #a6864d 100%);--linen:#efebe6;--ink-on-linen:#4a1820;--danger:#ffb4a3;--serif:"Cormorant Garamond", Garamond, "Times New Roman", serif;--sans:"Jost", "Futura", "Century Gothic", system-ui, sans-serif;--gutter:22px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{background:var(--wine);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100dvh;color:var(--ivory);font:16px/1.55 var(--sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0}button{font:inherit}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.page-art{z-index:-1;pointer-events:none;background:url(/art/flakes.webp) 0 0/max(100%,600px) no-repeat;height:calc(max(100vw,600px)/1.07143);animation:1.8s ease-out backwards gild-in;position:absolute;top:0;left:0;right:0;overflow:hidden}.page-art:after{content:"";height:calc(env(safe-area-inset-top) + 150px);background:linear-gradient(to bottom, #7d4044 0, #7d4044 env(safe-area-inset-top), #7d4044d1 calc(env(safe-area-inset-top) + 30px), #7d404480 calc(env(safe-area-inset-top) + 70px), #7d404433 calc(env(safe-area-inset-top) + 110px), #7d404400 calc(env(safe-area-inset-top) + 150px));position:absolute;top:0;left:0;right:0}@keyframes gild-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}}.masthead>*,.gate>:not(.page-art),.live-empty-text>*,.live-empty-qr{animation:.9s cubic-bezier(.2,.7,.2,1) backwards rise-in}.masthead>:first-child,.gate>:nth-child(2),.live-empty-text>:first-child{animation-delay:.15s}.masthead>:nth-child(2),.gate>:nth-child(3),.live-empty-text>:nth-child(2){animation-delay:.3s}.masthead>:nth-child(3),.gate>:nth-child(4),.live-empty-text>:nth-child(3){animation-delay:.45s}.masthead>:nth-child(4),.gate>:nth-child(5),.live-empty-text>:nth-child(4){animation-delay:.55s}.masthead>:nth-child(5),.live-empty-qr{animation-delay:.65s}.masthead>:nth-child(n+6){animation-delay:.75s}.home>.tabs,.home>.grid{animation:.8s ease-out .7s backwards gild-in}@media (hover:none){.btn:active{background-color:#fdfaf61f}.btn.primary:active{filter:brightness(.94)}.tile:active{opacity:.82}.link:active{opacity:.7}}.verse{width:min(62%,300px);height:auto;margin:0 0 18px;display:block}.names{font-family:var(--serif);letter-spacing:.2em;text-transform:uppercase;margin:0;font-size:clamp(1.75rem,7.4vw,3.5rem);font-weight:600;line-height:1.15}.caps{letter-spacing:.22em;text-transform:uppercase;margin:0;font-size:.8rem;line-height:1.95}.btn{appearance:none;border:1px solid var(--line);color:var(--ivory);letter-spacing:.16em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:2px;justify-content:center;align-items:center;gap:8px;padding:13px 20px;font-size:.82rem;font-weight:500;text-decoration:none;transition:background-color .15s,border-color .15s,filter .15s;display:inline-flex}.btn:hover{background-color:#fdfaf614;border-color:#fdfaf680}.btn:disabled{opacity:.6;cursor:default}.btn.primary{background:var(--foil);color:#3f1419;border:0}.btn.primary:hover{filter:brightness(1.06)}.btn.danger{color:var(--danger);border-color:#ffb4a373}.btn svg{width:18px;height:18px}.link{appearance:none;color:var(--ivory);text-decoration:underline;-webkit-text-decoration-color:var(--gold);text-decoration-color:var(--gold);text-underline-offset:4px;cursor:pointer;background:0 0;border:0;margin:-10px -4px;padding:10px 4px}.row{gap:8px;display:flex}input{border:1px solid var(--line);min-width:0;color:var(--ivory);font:inherit;background:#280c1159;border-radius:2px;flex:1;padding:12px 14px;font-size:16px}input::placeholder{color:#fdfaf680}input:focus-visible,.btn:focus-visible,.link:focus-visible,.tile:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.error{color:var(--danger);margin:0}.center-screen{text-align:center;place-content:center;gap:14px;min-height:100dvh;padding:24px;display:grid}.gate{max-width:860px;min-height:100dvh;padding:clamp(150px, 30vh, 300px) var(--gutter) 40px}.gate .date{margin-top:18px}.gate-form{gap:10px;max-width:400px;margin-top:30px;display:grid}.home{max-width:1120px;padding:env(safe-area-inset-top) env(safe-area-inset-right) calc(140px + env(safe-area-inset-bottom)) env(safe-area-inset-left);margin:0 auto}.masthead{max-width:860px;padding:clamp(150px, 30vh, 300px) var(--gutter) 30px;text-shadow:0 1px 14px #46161e8c}.lede{margin-top:26px}.date{margin-top:16px}.btn.add{width:min(100%,360px);text-shadow:none;margin-top:30px;padding:17px 20px}.name-line{color:var(--muted);margin:16px 0 0;font-size:.95rem}.name-line strong{color:var(--ivory);font-weight:500}.name-form{width:min(100%,360px);text-shadow:none;justify-items:start;gap:8px;margin-top:18px;display:grid}.name-form label{color:var(--muted);font-size:.95rem}.name-form .row{width:100%}.notice{margin:6px var(--gutter) 12px;background:var(--wine-deep);border-radius:2px;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;display:flex}.notice.admin{border:1px solid #c9ab6b99}.tabs{margin:10px var(--gutter) 12px;border-bottom:1px solid var(--line);display:flex}.tabs button{color:var(--muted);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #0000;margin:0 26px -1px 0;padding:13px 0;font-size:.78rem}.tabs button[aria-pressed=true]{color:var(--ivory);border-bottom-color:var(--gold)}.count{color:var(--gold-text);font-variant-numeric:tabular-nums;margin-left:6px}.grid{margin:0 var(--gutter);grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:3px;padding:0;list-style:none;display:grid}@media (width>=720px){:root{--gutter:40px}.grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:6px}}.tile{aspect-ratio:1;background:var(--wine-deep);cursor:pointer;border:0;border-radius:1px;width:100%;padding:0;display:block;position:relative;overflow:hidden}.tile img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .5s;display:block}.tile img.loaded{opacity:1}.tile.entering{opacity:0;transform:scale(.92)}.tile.entering.ready{opacity:1;transition:opacity .7s,transform .7s cubic-bezier(.2,.7,.2,1);transform:none}.tile-fallback{height:100%;color:var(--muted);place-items:center;display:grid}.tile-badge{color:#fff;filter:drop-shadow(0 1px 2px #000000b3);position:absolute;bottom:5px;right:6px}.tile-badge svg{width:18px;height:18px}.tile.is-hidden img.loaded{opacity:.3}.tile-flag{color:var(--ivory);letter-spacing:.14em;text-transform:uppercase;background:#1f0c10bf;border-radius:1px;padding:2px 6px;font-size:.7rem;position:absolute;top:6px;left:6px}.empty{color:var(--muted);text-align:center;padding:48px 28px}.foot{letter-spacing:.18em;text-transform:uppercase;flex-direction:column;align-items:center;gap:14px;padding:48px 14px 0;font-size:.86rem;display:flex}.foot a{color:var(--ivory);-webkit-text-decoration-color:var(--gold);text-decoration-color:var(--gold);text-underline-offset:4px}.foot .link{color:var(--muted);letter-spacing:.02em;text-transform:none;text-underline-offset:3px;font-size:.66rem;text-decoration-color:#c9ab6b80}.new-pill{top:calc(12px + env(safe-area-inset-top));z-index:15;background:var(--foil);color:#3f1419;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;cursor:pointer;border:0;border-radius:2px;align-items:center;gap:8px;padding:10px 16px;font-size:.74rem;font-weight:500;animation:.3s both pill-in;display:inline-flex;position:fixed;left:50%;transform:translate(-50%)}.new-pill svg{width:16px;height:16px}@keyframes pill-in{0%{opacity:0;transform:translate(-50%,-8px)}}.drop-overlay{z-index:30;pointer-events:none;background:#1f0c10d1;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.drop-overlay p{border:1px dashed var(--gold);text-align:center;padding:40px 48px;font-size:.9rem}.tabs{align-items:center}.tabs>button{white-space:nowrap;flex:none}.filter{align-items:center;min-width:0;margin-left:auto;display:flex;position:relative}.tabs .filter-button,.tabs .filter-clear{cursor:pointer;background:0 0;border:0;margin:0}.tabs .filter-button{min-width:0;color:var(--muted);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:7px;padding:12px 2px 12px 8px;font-size:.7rem;display:inline-flex}.filter-label{text-overflow:ellipsis;min-width:0;overflow:hidden}.tabs .filter-button svg{flex:none}.tabs .filter-button.active{color:var(--gold-text)}.tabs .filter-clear{color:var(--muted);place-items:center;padding:12px 0 12px 6px;display:grid}.filter-clear svg{width:14px;height:14px}.filter-menu{z-index:12;border:1px solid var(--line);background:var(--wine-deep);border-radius:2px;min-width:210px;max-height:60vh;padding:6px 0;animation:.15s ease-out gild-in;display:grid;position:absolute;top:calc(100% + 4px);right:0;overflow-y:auto}.tabs .filter-menu button{color:var(--ivory);letter-spacing:.02em;text-align:left;text-transform:none;white-space:nowrap;background:0 0;border:0;justify-content:space-between;gap:18px;margin:0;padding:11px 16px;font-size:.85rem;display:flex}.tabs .filter-menu button:hover{background:#fdfaf612}.tabs .filter-menu button[aria-checked=true]{color:var(--gold-text)}.filter-menu .to-check{border-top:1px solid var(--line)!important}.admin-login,.admin-page{max-width:760px;padding:calc(clamp(110px, 20vh, 220px) + env(safe-area-inset-top)) max(var(--gutter), env(safe-area-inset-right)) calc(60px + env(safe-area-inset-bottom)) max(var(--gutter), env(safe-area-inset-left));margin:0 auto}.admin-login-form{gap:12px;max-width:400px;display:grid}.admin-login-form label{color:var(--muted);margin-top:18px}.admin-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px 28px;margin-bottom:18px;display:flex}.admin-nav{letter-spacing:.18em;text-transform:uppercase;gap:22px;font-size:.78rem;display:flex}.admin-nav a{color:var(--ivory);-webkit-text-decoration-color:var(--gold);text-decoration-color:var(--gold);text-underline-offset:4px}.admin-nav .link{letter-spacing:inherit;text-transform:inherit}.admin-section{border-top:1px solid var(--line);gap:10px;padding:26px 0;display:grid}.admin-section h2{font-family:var(--serif);letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:1.35rem;font-weight:600}.admin-section p{margin:0}.admin-section a{color:var(--gold-text)}.admin-section .visitors{max-height:none}.admin-foot{margin-top:10px}.people{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:22px;margin-top:6px;display:grid}.person{justify-items:start;gap:10px;display:grid}.person-photo{aspect-ratio:1;border:1px solid var(--line);background:var(--wine-deep);place-items:center;width:100%;display:grid;overflow:hidden}.person-photo img{object-fit:cover;width:100%;height:100%}.person-name{font-family:var(--serif);letter-spacing:.14em;text-transform:uppercase;font-size:1.15rem;font-weight:600}.btn.disabled{opacity:.6;pointer-events:none}.upload-bar{left:max(12px, env(safe-area-inset-left));right:max(12px, env(safe-area-inset-right));bottom:calc(12px + env(safe-area-inset-bottom));z-index:10;background:var(--linen);max-width:560px;color:var(--ink-on-linen);border-radius:2px;margin:0 auto;padding:14px 16px;position:fixed}.upload-bar .link{color:var(--ink-on-linen);font-weight:500;text-decoration-color:currentColor}.upload-line{justify-content:space-between;align-items:baseline;gap:12px;font-weight:500;display:flex}.upload-actions{white-space:nowrap;gap:16px;display:flex}.progress{background:#4a182026;height:3px;margin-top:10px;overflow:hidden}.progress div{background:var(--wine);transform-origin:0;height:100%;transition:transform .3s}.hint{opacity:.8;margin:8px 0 0;font-size:.85rem}.failures{gap:6px;margin:10px 0 0;padding:0;font-size:.9rem;list-style:none;display:grid}.failures li{justify-content:space-between;gap:12px;display:flex}.failures span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lightbox{z-index:20;background:var(--night);position:fixed;inset:0}.lb-stage{top:calc(56px + env(safe-area-inset-top));bottom:calc(76px + env(safe-area-inset-bottom));touch-action:none;place-items:center;display:grid;position:absolute;left:0;right:0}.lb-photo{position:absolute;inset:0}.lb-photo img,.lb-photo video{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;position:absolute;inset:0}.lb-full{opacity:0;transition:opacity .25s}.lb-full.loaded{opacity:1}.spinner{border:2px solid #fdfaf640;border-top-color:var(--gold);pointer-events:none;border-radius:50%;width:30px;height:30px;margin:-15px 0 0 -15px;animation:.8s linear infinite spin;position:absolute;top:50%;left:50%}@keyframes spin{to{transform:rotate(360deg)}}.lb-top{padding:calc(8px + env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) 8px max(16px, env(safe-area-inset-left));justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0;right:0}.lb-count{color:var(--muted);letter-spacing:.18em;text-transform:uppercase;font-variant-numeric:tabular-nums;font-size:.78rem}.lb-bottom{padding:12px max(14px, env(safe-area-inset-right)) calc(14px + env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex;position:absolute;bottom:0;left:0;right:0}.lb-by{font-family:var(--serif);font-size:1.35rem;font-weight:500}.lb-by .you{font-family:var(--sans);color:var(--muted);font-size:.85rem}.lb-actions{gap:8px;display:flex}.lb-actions .btn{padding:10px 14px}.icon-btn{color:var(--ivory);cursor:pointer;background:0 0;border:0;border-radius:2px;place-items:center;padding:8px;display:grid}.lb-nav{width:46px;height:46px;color:var(--ivory);cursor:pointer;background:#fdfaf61a;border:0;border-radius:50%;place-items:center;display:none;position:absolute;top:50%;transform:translateY(-50%)}.lb-nav:hover{background:#fdfaf62e}@media (hover:hover){.lb-nav{display:grid}}.lb-nav.prev{left:14px}.lb-nav.next{right:14px}.sheet{background:var(--wine);width:min(92vw,420px);color:var(--ivory);border:0;border-radius:2px;padding:0}.sheet::backdrop{background:#140609b8}.sheet-body{gap:14px;padding:24px;display:grid}.sheet h2{font-family:var(--serif);letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:1.45rem;font-weight:600;line-height:1.25}.sheet p{margin:0}.sheet .row .btn{flex:1}.transfer-qr svg{width:100%;max-width:230px;height:auto;margin:0 auto;display:block}.fine{color:var(--muted);font-size:.85rem}.admin-actions{white-space:nowrap;gap:18px;display:flex}.visitors{gap:2px;max-height:55vh;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.visitors li{border-top:1px solid var(--line);padding:10px 0}.visitor-top{align-items:baseline;gap:8px;display:flex}.visitor-top strong{font-weight:500}.visitor-uploads{color:var(--gold-text);white-space:nowrap;margin-left:auto;font-size:.85rem}.live{background:var(--night);position:fixed;inset:0;overflow:hidden}.live.idle{cursor:none}.live-grid{padding:max(6px, env(safe-area-inset-top)) max(6px, env(safe-area-inset-right)) max(6px, env(safe-area-inset-bottom)) max(6px, env(safe-area-inset-left));gap:6px;display:grid;position:absolute;inset:0}.live-tile{background:#2c1217;border-radius:1px;position:relative;overflow:hidden}.live-layer{animation:1.6s both live-fade;position:absolute;inset:0}@keyframes live-fade{0%{opacity:0}to{opacity:1}}.live-frame{position:absolute;inset:0;overflow:hidden}.live-media{object-fit:cover;will-change:transform;width:100%;height:100%;animation:24s linear both live-drift;display:block}.hero .live-media{object-fit:contain;animation-name:live-drift-soft}.is-video .live-media{animation:none}@keyframes live-drift{0%{transform:scale(1.04)}to{transform:scale(1.14) translate(var(--dx), var(--dy))}}@keyframes live-drift-soft{0%{transform:scale(1)}to{transform:scale(1.05) translate(calc(var(--dx) / 2), calc(var(--dy) / 2))}}.live-backdrop{object-fit:cover;filter:blur(30px)brightness(.42)saturate(1.1);width:calc(100% + 80px);height:calc(100% + 80px);position:absolute;inset:-40px}.live-caption{color:var(--ivory);background:linear-gradient(#0000,#14060999);align-items:center;gap:14px;padding:56px 26px 22px;display:flex;position:absolute;bottom:0;left:0;right:0}.live-by{font-family:var(--serif);letter-spacing:.16em;text-transform:uppercase;font-size:clamp(1.1rem,2.1vw,2rem);font-weight:600;line-height:1.1}.live-new{background:var(--foil);color:#3f1419;letter-spacing:.18em;text-transform:uppercase;padding:4px 9px;font-size:clamp(.65rem,.85vw,.85rem);font-weight:500}.live-join{right:calc(18px + env(safe-area-inset-right));bottom:calc(18px + env(safe-area-inset-bottom));background:var(--linen);color:var(--ink-on-linen);border-radius:2px;align-items:center;gap:16px;padding:12px 20px 12px 12px;display:flex;position:absolute}.live-join .qr svg{width:clamp(84px,9vw,160px);height:auto;display:block}.live-join strong{font-family:var(--serif);letter-spacing:.16em;text-transform:uppercase;margin-bottom:4px;font-size:clamp(1rem,1.6vw,1.6rem);font-weight:600;line-height:1.1;display:block}.live-join span{letter-spacing:.06em;font-size:clamp(.75rem,1vw,1rem);display:block}.live-controls{top:calc(14px + env(safe-area-inset-top));right:calc(14px + env(safe-area-inset-right));gap:8px;transition:opacity .3s;display:flex;position:absolute}.live.idle .live-controls{opacity:0;pointer-events:none}.live-controls .btn{background:#1f0c10bf}.live-empty{background:var(--wine) url(/art/flakes.webp) no-repeat left top / max(100%, 600px) auto;flex-wrap:wrap;justify-content:center;align-items:center;gap:6vmin 9vmin;padding:6vmin;display:flex;position:absolute;inset:0}.live-empty-text{text-shadow:0 1px 14px #46161e8c;max-width:min(860px,92vw)}.live-empty .verse{width:min(55%,340px)}.live-empty .names{font-size:clamp(1.8rem,4.4vw,4rem)}.live-empty .caps{font-size:clamp(.8rem,1.2vw,1.15rem)}.live-empty .lede{margin-top:1.6em}.live-empty .date{margin-top:1em}.live-empty-qr{background:#f3efe9;padding:2.2vmin}.live-empty-qr svg{width:min(36vmin,70vw);height:auto;display:block}@media (prefers-reduced-motion:reduce){.live-media,.page-art,.masthead>*,.gate>:not(.page-art),.live-empty-text>*,.live-empty-qr,.home>.tabs,.home>.grid{animation:none}.tile.entering{transform:none}}
