@import url('/static/fonts.css');
:root{color-scheme:dark;--bg:#08060D;--surface:#121017;--raised:#1A1622;--line:#393041;--text:#F5F2F8;--muted:#C4BACD;--violet:#6116CE;--accent:#BD22CB;--pink:#FF2B9B;--green:#38D996}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button,a,input,textarea,select{outline-offset:4px}a{color:inherit;text-decoration:none}button,.button{border:1px solid var(--line);border-radius:12px;color:var(--text);background:var(--raised);padding:12px 18px;cursor:pointer;font-weight:650;display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:background .15s,transform .15s}button:hover,.button:hover{background:#2b2236}button:disabled{opacity:.5;cursor:wait}.primary{background:var(--violet);border-color:var(--violet)}.primary:hover{background:#7725e4}.danger{color:#FF8196}input,select,textarea{width:100%;background:#0f0c15;border:1px solid var(--line);border-radius:10px;padding:13px;color:var(--text)}label{display:block;color:var(--muted);font-size:13px;font-weight:600;margin:18px 0 8px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(34px,5vw,60px);letter-spacing:-2px;line-height:1.06}h2{font-size:28px;letter-spacing:-.7px}h3{font-size:19px;letter-spacing:-.3px}.muted{color:var(--muted)}.eyebrow{color:#B36CFF;text-transform:uppercase;letter-spacing:2px;font-size:11px;font-weight:750}.brand{display:flex;align-items:center;gap:12px;font-size:20px;letter-spacing:-.7px;font-weight:800}.brand img{width:46px;height:46px;object-fit:contain}.brand small{font-size:10px;color:var(--muted);letter-spacing:2px;display:block;margin-top:4px;font-weight:500}.topbar{height:96px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #2A2332;padding:0 max(24px,calc((100vw - 1320px)/2));gap:20px}.topbar .nav{display:flex;gap:24px;align-items:center;font-size:13px}.topbar .nav a{color:var(--muted)}main{max-width:1320px;margin:auto;padding:48px 28px 80px}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:70px;align-items:center;padding:36px 0 50px}.hero h1{font-size:clamp(48px,5.9vw,80px);max-width:650px;line-height:1.04;letter-spacing:-3.5px;margin:24px 0}.gradient{color:#B36CFF}.hero p{line-height:1.7;max-width:460px;font-size:16px;color:var(--muted)}.hero .actions{display:flex;gap:12px;margin-top:30px}.hero-visual{height:450px;position:relative;display:grid;place-items:center;background:radial-gradient(ellipse at center,#361447 0,#150c23 42%,transparent 72%)}.orbit{border:1px solid #6c398952;border-radius:50%;width:370px;height:370px;position:absolute}.orbit.second{width:270px;height:270px}.visual-card{position:absolute;background:#201429;border:1px solid #694379;border-radius:18px;width:170px;height:205px;padding:14px;box-shadow:0 30px 70px #0008;display:flex;flex-direction:column;justify-content:space-between}.visual-card .art{height:142px;display:grid;place-items:center;overflow:hidden;background:linear-gradient(130deg,#411874,#ad258c);border-radius:10px;font-size:54px}.visual-card:nth-of-type(3){transform:rotate(-14deg) translate(-104px,-5px)}.visual-card:nth-of-type(4){transform:rotate(12deg) translate(108px,-35px)}.visual-card:nth-of-type(5){transform:rotate(-3deg) translate(0,67px)}.visual-card small{font-size:11px;color:#d9c1e6}.visual-card img{width:110px}.visual-pill{position:absolute;bottom:15px;background:#121017;border:1px solid var(--line);padding:13px 18px;border-radius:30px;font-size:12px;z-index:2}.features{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;border-top:1px solid #2A2332;padding-top:36px}.feature{padding-right:30px}.feature .num{font-size:12px;color:#B36CFF;margin-bottom:15px}.feature p{font-size:14px;color:var(--muted);line-height:1.7}.footer{border-top:1px solid #2A2332;margin-top:50px;padding-top:24px;color:#AEA3BC;display:flex;justify-content:space-between;font-size:11px}.auth{max-width:440px;margin:35px auto;padding:36px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}.auth button{width:100%;margin-top:24px}.auth p{font-size:14px;line-height:1.6}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px}.page-heading h1{font-size:42px;margin:12px 0}.page-heading p{font-size:14px}.stats{display:flex;gap:30px;margin:28px 0 40px;border-top:1px solid #2A2332;border-bottom:1px solid #2A2332;padding:22px 0}.stat strong{font-size:28px;display:block}.stat span{font-size:12px;color:var(--muted)}.event-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.event-card{border:1px solid var(--line);background:var(--surface);border-radius:18px;overflow:hidden;transition:transform .2s}.event-card:hover{transform:translateY(-3px)}.event-cover{height:170px;background:radial-gradient(ellipse at 75% 30%,#511569,#211130 65%);display:flex;align-items:center;justify-content:center;position:relative}.event-cover img{height:100px;max-width:100%;object-fit:contain}.event-cover .badge{position:absolute;top:16px;right:16px}.event-body{padding:24px}.event-body h3{margin-bottom:12px}.event-body .meta{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:24px}.badge{border:1px solid #6d4984;border-radius:30px;padding:6px 10px;background:#24142ecc;color:#dec2f9;font-size:11px}.tools{display:flex;flex-wrap:wrap;gap:10px}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin:34px 0 28px}.tabs button{background:none;border:0;border-radius:0;padding:0 0 14px;color:var(--muted)}.tabs button.active{color:#B36CFF;border-bottom:2px solid var(--accent)}.upload-box{border:1px dashed #704591;background:#160d20;border-radius:16px;padding:32px;margin-bottom:30px;text-align:center}.upload-box p{font-size:13px;color:var(--muted);margin:12px 0 18px}.upload-box input{max-width:420px}.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.photo{border-radius:14px;overflow:hidden;background:var(--surface);border:1px solid #2A2332}.photo .image-btn{padding:0;border:0;width:100%;border-radius:0;display:block;aspect-ratio:4/3;background:#1A1622}.photo img{width:100%;height:100%;object-fit:cover}.photo-info{padding:12px}.photo-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;color:var(--muted);margin-bottom:10px}.reactions{display:flex;gap:4px;flex-wrap:wrap}.reactions button{font-size:14px;border-radius:8px;padding:5px 7px;min-width:32px;background:#1A1622;border-color:transparent}.reactions button:hover{border-color:var(--accent)}.photo-actions{display:flex;justify-content:space-between;margin-top:10px}.photo-actions button,.photo-actions a{font-size:11px;padding:5px 8px;color:var(--muted)}.empty{padding:65px 30px;text-align:center;border:1px dashed var(--line);border-radius:18px}.empty .symbol{font-size:40px;margin-bottom:16px}.empty p{color:var(--muted);font-size:14px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.panel{border:1px solid var(--line);border-radius:18px;padding:28px;background:var(--surface)}.panel p{line-height:1.65;font-size:13px;color:var(--muted)}.linkbox{display:flex;gap:8px}.linkbox input{min-width:0;font-size:12px}.qr-preview{background:#fff;border-radius:12px;width:min(100%,350px);display:block;margin:24px auto}.admin-row{border-top:1px solid var(--line);padding:14px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}.admin-row button{padding:6px 10px;font-size:11px}.notice{border:1px solid #785d25;background:#30240e;border-radius:12px;padding:15px;color:#F4D68D;font-size:13px;line-height:1.6;margin:20px 0}.success{border-color:#245540;background:#12271d;color:#97e8bd}.error{color:#FF8196;line-height:1.5;font-size:13px}dialog{color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:30px;width:min(520px,calc(100vw - 32px))}dialog::backdrop{background:#000b;backdrop-filter:blur(6px)}dialog .modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:25px}dialog.lightbox{width:min(1000px,95vw)}dialog.lightbox img{width:100%;max-height:75vh;object-fit:contain}#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:#2A2035;border:1px solid #6a4183;border-radius:12px;padding:15px 22px;box-shadow:0 10px 40px #0008;z-index:100;display:none;max-width:90vw;font-size:13px}.slideshow{height:100dvh;background:#000;position:relative;display:flex;align-items:center;justify-content:center}.slideshow img{width:100%;height:100%;object-fit:contain}.slide-controls{position:absolute;bottom:20px;left:20px;right:20px;display:flex;justify-content:space-between;align-items:center;gap:10px;background:#08060Dbb;border:1px solid #393041;border-radius:14px;padding:12px;opacity:.25;transition:opacity .2s}.slide-controls:hover,.slide-controls:focus-within{opacity:1}.slide-controls select{width:100px}.slide-controls .tools{flex-wrap:nowrap}.slide-label{position:absolute;top:24px;left:24px;font-size:18px;text-shadow:0 2px 10px #000}.mobile-hide{display:inline}.help-list{line-height:2;font-size:14px;color:var(--muted)}@media(max-width:1000px){.hero{gap:20px}.hero-visual{transform:scale(.85)}.event-grid{grid-template-columns:repeat(2,1fr)}.gallery{grid-template-columns:repeat(3,1fr)}}@media(max-width:700px){.topbar{height:80px;padding:0 20px}.topbar .nav{gap:12px}.topbar .nav .mobile-hide{display:none}main{padding:30px 20px 50px}.hero{grid-template-columns:1fr;padding-top:12px;gap:0}.hero h1{font-size:52px;letter-spacing:-2px}.hero-visual{height:360px}.features{grid-template-columns:1fr;gap:22px}.feature{padding:0}.event-grid,.settings-grid{grid-template-columns:1fr}.gallery{grid-template-columns:repeat(2,1fr);gap:10px}.photo-info{padding:9px}.reactions button{padding:4px}.page-heading{align-items:flex-start;flex-direction:column}.page-heading h1{font-size:34px}.stats{gap:25px}.tools button,.tools .button{padding:10px 12px;font-size:12px}.auth{padding:25px;margin:20px auto}.slide-controls{flex-wrap:wrap}.footer{gap:15px;flex-wrap:wrap}.hero .actions{flex-wrap:wrap}}

.slide-stage{position:absolute;inset:0;overflow:hidden}.slide-stage .slide-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.slide-in-fade{animation:dia-fade 1s ease-in-out}.slide-in-right{animation:dia-right 1s cubic-bezier(.22,.61,.36,1)}.slide-in-down{animation:dia-down 1s cubic-bezier(.22,.61,.36,1)}.slide-in-zoom{animation:dia-zoom 1s ease-out}.slide-out{animation:dia-out 1s ease-in-out forwards}@keyframes dia-fade{from{opacity:0}to{opacity:1}}@keyframes dia-right{from{opacity:0;transform:translateX(-12%)}to{opacity:1;transform:translateX(0)}}@keyframes dia-down{from{opacity:0;transform:translateY(-12%)}to{opacity:1;transform:translateY(0)}}@keyframes dia-zoom{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes dia-out{to{opacity:0}}@media(prefers-reduced-motion:reduce){.slide-stage .slide-photo{animation:none!important}.slide-stage .slide-out{visibility:hidden}}@media(max-width:700px){.slide-controls{bottom:8px;left:8px;right:8px;opacity:1}.slide-controls .brand{font-size:14px}.slide-controls .brand img{width:28px;height:28px}.slide-controls .tools{flex-wrap:wrap}.admin-row span{overflow-wrap:anywhere;min-width:0}}

.guest-page{max-width:1100px}.guest-page h1{font-size:clamp(28px,5vw,44px);margin-bottom:24px}.guest-page .upload-box{padding:22px}.slideshow{width:100vw;height:100dvh;overflow:hidden}.slide-controls{opacity:1;transition:opacity .35s}.slideshow.controls-hidden{cursor:none}.slideshow.controls-hidden .slide-controls{opacity:0;pointer-events:none}.slide-stage .slide-photo{object-fit:contain}.slide-controls .brand img{width:32px;height:32px}.slide-controls .brand{font-size:15px}.slideshow.controls-hidden .slide-label{display:none}

.photo .image-btn img{object-fit:contain;background:#08060D}

.guest-hero{position:relative;overflow:hidden;border-radius:22px;min-height:230px;height:clamp(230px,32vw,400px);background:radial-gradient(ellipse at 80% 10%,#BD22CB77,transparent 60%),linear-gradient(135deg,#30104e,#100a1b);margin-bottom:24px;display:flex;align-items:flex-end}.guest-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.guest-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 15%,#08060dcc)}.guest-hero-title{position:relative;z-index:1;padding:30px}.guest-hero-title h1{margin:12px 0 0;overflow-wrap:anywhere}.guest-hero-title .eyebrow{color:#ead5ff}.guest-welcome{padding:0 8px 12px}.guest-welcome p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.75;color:var(--muted)}.panel .guest-hero{height:260px;min-height:220px}.panel .guest-hero h1{font-size:30px}.tabs{flex-wrap:wrap;gap:16px}.slide-in-left{animation:dia-left 1s cubic-bezier(.22,.61,.36,1)}.slide-in-up{animation:dia-up 1s cubic-bezier(.22,.61,.36,1)}.slide-in-zoom-out{animation:dia-zoom-out 1s ease-out}.slide-in-blur{animation:dia-blur 1s ease-out}.slide-in-wipe-x{animation:dia-wipe-x 1s ease-in-out}.slide-in-wipe-y{animation:dia-wipe-y 1s ease-in-out}@keyframes dia-left{from{opacity:0;transform:translateX(12%)}to{opacity:1;transform:translateX(0)}}@keyframes dia-up{from{opacity:0;transform:translateY(12%)}to{opacity:1;transform:translateY(0)}}@keyframes dia-zoom-out{from{opacity:0;transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@keyframes dia-blur{from{opacity:0;filter:blur(12px)}to{opacity:1;filter:blur(0)}}@keyframes dia-wipe-x{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes dia-wipe-y{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}@media(max-width:700px){.guest-hero-title{padding:22px}.guest-page{padding-top:20px}.guest-hero{border-radius:16px}}

/* Generous photos, compact reactions and a responsive, uncropped viewer. */
.gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.photo .image-btn{aspect-ratio:4/5}.photo .image-btn img{object-fit:contain}.reactions{gap:5px}.reactions button{font-size:12px;min-height:40px;min-width:40px;padding:4px 6px}.photo-info{padding:14px}
dialog.lightbox{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:16px;border:0;border-radius:0;background:#08060d;overflow:hidden;box-sizing:border-box}dialog.lightbox[open]{display:flex;flex-direction:column;gap:12px}.viewer-toolbar,.viewer-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0}.viewer-toolbar span,.viewer-footer span{font-size:13px;color:var(--muted)}.viewer-footer span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;touch-action:pan-y pinch-zoom}dialog.lightbox .viewer-stage img{width:100%;height:100%;max-height:none;object-fit:contain}.viewer-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:1;width:48px;height:64px;padding:0;font-size:38px;background:#16101ccc;border:1px solid #ffffff40}.viewer-arrow.previous{left:0}.viewer-arrow.next{right:0}.viewer-arrow:disabled{opacity:.2;cursor:default}.viewer-footer .button{flex-shrink:0;font-size:12px}
@media(max-width:1000px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.gallery{grid-template-columns:1fr;gap:22px}.photo .image-btn{aspect-ratio:4/5;max-height:520px}.reactions button{font-size:12px;min-height:40px;min-width:40px;padding:4px 6px}dialog.lightbox{padding:12px}.viewer-arrow{width:44px;height:56px}.tabs{gap:16px;overflow-x:auto}.tabs button{white-space:nowrap}}

html:has(dialog.lightbox[open]){overflow:hidden}

/* The guest QR remains above every transition and outside the fading controls. */
.slide-qr{position:absolute;z-index:3;right:clamp(12px,2vw,32px);bottom:clamp(12px,2vw,32px);width:clamp(180px,13vw,250px);padding:8px;background:#fff;color:#08060d;border-radius:12px;box-shadow:0 2px 16px #0006;pointer-events:none}.slide-qr[hidden]{display:none}.slideshow .slide-qr img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain}.slide-qr span{display:block;text-align:center;font-size:12px;font-weight:650;margin:2px 0 4px}.slide-controls{z-index:4}.slide-qr-switch{display:flex;align-items:center;gap:8px;margin:0;white-space:nowrap;font-size:12px}.slide-qr-switch input{width:18px;height:18px;margin:0;accent-color:var(--accent)}.slideshow:not(.controls-hidden) .slide-qr{bottom:108px}@media(max-width:700px){.slide-qr{width:140px;padding:6px}.slide-qr span{font-size:10px}.slideshow:not(.controls-hidden) .slide-qr{bottom:180px}}

/* Anchor the QR flush to the projection edges, including while controls show. */
.slideshow .slide-qr,.slideshow:not(.controls-hidden) .slide-qr{right:0;bottom:0;border-radius:10px 0 0 0;z-index:5}
.slideshow .slide-controls{right:calc(clamp(180px,13vw,250px) + 16px)}
@media(max-width:700px){.slideshow .slide-controls{right:156px}}

.tools .event-edit-button{font-size:12px;padding:8px 12px;align-self:center}#edit-event>p{font-size:12px;line-height:1.6;margin-top:14px}
