/* ============ App shell ============ */
body.app{min-height:100vh;background:
  radial-gradient(900px 420px at 85% -80px,rgba(99,102,241,.18),transparent 70%),
  radial-gradient(700px 380px at -10% 20%,rgba(6,182,212,.18),transparent 70%),var(--bg)}
.dash{padding-top:48px;padding-bottom:90px}
.dash>h2{font-size:clamp(1.9rem,4vw,2.6rem);margin-bottom:22px}
.dash h3+p,.dash .lead{max-width:680px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:28px;box-shadow:var(--shadow-1)}
.card h3{margin-bottom:6px}

/* ============ Forms ============ */
label{display:grid;gap:7px;font-size:.82rem;font-weight:600;color:var(--ink-2);letter-spacing:.01em}
input,select,textarea{font:inherit;font-size:.95rem;padding:12px 15px;border:1.5px solid var(--line);border-radius:var(--r-sm);background:#fff;width:100%;color:var(--ink);transition:border-color .2s,box-shadow .2s}
input:hover,select:hover,textarea:hover{border-color:rgba(15,23,42,.2)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 4px rgba(79,70,229,.18)}
input::placeholder,textarea::placeholder{color:#b3a898}
input:disabled{background:var(--sand);color:var(--ink-3)}
input[type=checkbox]{width:18px;height:18px;accent-color:var(--gold)}
.err{background:#fdeceb;color:#a02c2c;border:1px solid #f4c9c6;padding:12px 16px;border-radius:var(--r-sm);font-size:.9rem}
.row{display:flex;gap:10px;align-items:center}
.row input{flex:1}
.row-gap{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.x{background:none;border:0;color:#b13a3a;cursor:pointer;font:inherit;font-size:.84rem;font-weight:600;padding:6px 10px;border-radius:8px;transition:.2s}
.x:hover{background:#fdeceb}
.btn[disabled]{opacity:.4;cursor:not-allowed;transform:none!important}

/* ============ Auth ============ */
.auth{display:grid;place-items:center;padding:72px 20px 100px}
.auth .card{width:100%;max-width:430px;display:grid;gap:16px;padding:38px;border-radius:28px;box-shadow:var(--shadow-2)}
.auth .card h2{font-size:2rem;margin-bottom:2px}
.auth .btn{width:100%;padding:14px}

/* ============ Dashboard + lists ============ */
.grid-events{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px;margin-top:26px}
.ev{display:block;transition:transform .25s,box-shadow .25s,border-color .25s;position:relative;overflow:hidden}
.ev::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--grad);opacity:0;transition:.25s}
.ev:hover{transform:translateY(-5px);box-shadow:var(--shadow-2);border-color:rgba(79,70,229,.35)}
.ev:hover::before{opacity:1}
.ev p{color:var(--ink-3);font-size:.9rem;margin-top:8px}
.ev h2{margin:4px 0 0}
.two{display:grid;grid-template-columns:1fr 1.3fr;gap:22px;margin-top:22px}
.qrbox{display:flex;justify-content:center;margin:18px 0;padding:18px;background:#fff;border:1px solid var(--line);border-radius:20px;width:fit-content;margin-inline:auto;box-shadow:var(--shadow-1)}
.card input[readonly]{font-size:.8rem;text-align:center;background:var(--sand);border-color:transparent}
.clist{margin-bottom:14px}
.clist li{display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}
.clist li:last-child{border-bottom:0}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 22px;padding:5px;background:rgba(15,23,42,.05);border-radius:99px;width:fit-content;max-width:100%}
.chips button{border:0;background:none;border-radius:99px;padding:8px 18px;font:inherit;font-size:.86rem;font-weight:600;color:var(--ink-2);cursor:pointer;transition:.2s}
.chips button:hover{color:var(--ink)}
.chips button.on{background:#fff;color:var(--ink);box-shadow:var(--shadow-1)}
.tag{font-size:.68rem;font-weight:700;padding:3px 11px;border-radius:99px;margin-left:8px;vertical-align:middle;letter-spacing:.04em;text-transform:uppercase}
.tag.ok{background:#e1f2e3;color:#25692f}.tag.bad{background:#fdeceb;color:#a02c2c}
.impbar{background:var(--grad);color:#fff;text-align:center;padding:9px;font-size:.85rem;display:flex;gap:14px;justify-content:center;align-items:center;flex-wrap:wrap}
.impbar button{background:#fff;color:var(--ink);border:0;border-radius:99px;padding:5px 16px;font:inherit;font-size:.8rem;font-weight:600;cursor:pointer}

/* stat cards on admin overview */
.grid-events .card>.fine{margin:0 0 4px;text-transform:uppercase;letter-spacing:.1em;font-size:.72rem;font-weight:600}
.grid-events .card>h2{margin:0;font-size:2.6rem;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ============ Photos ============ */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.pgrid figure{position:relative;border-radius:18px;overflow:hidden;background:#fff;cursor:pointer;box-shadow:var(--shadow-1);transition:transform .25s,box-shadow .25s}
.pgrid figure:hover{transform:translateY(-4px) scale(1.01);box-shadow:var(--shadow-2)}
.pgrid img{width:100%;aspect-ratio:1;object-fit:cover;display:block;transition:transform .5s}
.pgrid figure:hover img{transform:scale(1.05)}
.pgrid figcaption{font-size:.76rem;padding:9px 12px;color:var(--ink-3);min-height:34px;font-weight:500}
.pgrid figure form{position:absolute;top:8px;right:8px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-radius:10px;padding:1px 4px;opacity:0;transition:.2s}
.pgrid figure:hover form{opacity:1}
#lb{position:fixed;inset:0;background:rgba(10,8,6,.92);backdrop-filter:blur(10px);display:grid;place-items:center;z-index:99;cursor:zoom-out;animation:fade .2s}
#lb[hidden]{display:none}
#lb img{max-width:94vw;max-height:92vh;border-radius:14px;box-shadow:0 30px 80px rgba(0,0,0,.6)}
@keyframes fade{from{opacity:0}}

/* ============ Guest screens ============ */
body.guest{background:radial-gradient(700px 500px at 50% -10%,rgba(99,102,241,.28),transparent 70%),var(--bg);margin:0}
.gscreen{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:18px;padding:34px 28px;text-align:center;max-width:440px;margin:0 auto}
.gscreen[hidden]{display:none}
.gscreen small{letter-spacing:.2em;text-transform:uppercase;color:var(--gold-dark);font-weight:600;font-size:.72rem}
.gscreen h1{font-size:2.5rem}
.gscreen label{width:100%;text-align:left}
.gscreen .btn.big{width:100%;margin-top:6px}
.gscreen.cam{max-width:none;padding:0;background:#000;position:fixed;inset:0;justify-content:flex-start}
.cam video{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.camtop{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:18px 20px;color:#fff;z-index:2;background:linear-gradient(rgba(0,0,0,.55),transparent);font-weight:600;font-size:.9rem}
.camtop #count{background:rgba(255,255,255,.18);backdrop-filter:blur(10px);padding:6px 14px;border-radius:99px}
.camtop .x{color:#fff;background:rgba(255,255,255,.18);backdrop-filter:blur(10px);padding:8px 16px;border-radius:99px}
.camctl{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-around;align-items:center;padding:30px 20px 40px;z-index:2;background:linear-gradient(transparent,rgba(0,0,0,.65))}
#shoot{width:78px;height:78px;border-radius:50%;border:4px solid rgba(255,255,255,.9);background:#fff;box-shadow:inset 0 0 0 5px #000,0 0 0 4px rgba(255,255,255,.25);cursor:pointer;transition:transform .12s}
#shoot:active{transform:scale(.9)}
#flip,.pick{width:50px;height:50px;border-radius:50%;background:rgba(255,255,255,.2);backdrop-filter:blur(12px);color:#fff;border:0;font-size:1.4rem;display:grid;place-items:center;cursor:pointer;transition:.2s}
#flip:hover,.pick:hover{background:rgba(255,255,255,.32)}
#toast{position:absolute;bottom:140px;left:50%;transform:translate(-50%,10px);background:rgba(15,23,42,.85);backdrop-filter:blur(10px);color:#fff;padding:10px 20px;border-radius:99px;font-size:.86rem;font-weight:500;opacity:0;transition:.3s;z-index:3;pointer-events:none;white-space:nowrap}
#toast.on{opacity:1;transform:translate(-50%,0)}

/* ============ Public content pages ============ */
.big-steps{max-width:660px;margin:28px 0}
.plans{grid-template-columns:repeat(3,1fr);align-items:stretch}
.plan{display:flex;flex-direction:column}
.plan .price,.feat.plan p.price{font-family:var(--display);font-size:2.8rem;margin:10px 0 18px;letter-spacing:-.03em;font-weight:600;color:var(--ink)}
.plan .price small{font-size:.9rem;color:var(--ink-3);font-family:var(--sans);letter-spacing:0}
.plan .clist{flex:1}
.plan.hot{border-color:transparent;background:linear-gradient(var(--surface),var(--surface)) padding-box,var(--grad) border-box;border:2px solid transparent;box-shadow:var(--shadow-2);transform:translateY(-8px)}
.plan.hot::before{content:"Most popular";position:absolute;top:16px;right:16px;font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:var(--grad);color:#fff;padding:4px 12px;border-radius:99px}
.plan .btn{margin-top:12px}

@media print{.nav,.topbar,.impbar,.row-gap,.pgrid,h3+.pgrid,form,.fine,#gurl{display:none!important}.two{grid-template-columns:1fr}}
@media(max-width:860px){.two{grid-template-columns:1fr}.plans{grid-template-columns:1fr}.plan.hot{transform:none}}
@media(max-width:560px){.dash{padding-top:32px}.auth .card{padding:28px 22px}.chips{border-radius:20px}.row{flex-wrap:wrap}}
