:root{--ink:#171614;--muted:#746f68;--line:#e8e1da;--paper:#f7f4ef;--card:#fffdfa;--accent:#9b654d;--accent2:#6e4737;--ok:#2d7a52;--danger:#a84545;--shadow:0 18px 55px rgba(37,27,18,.10)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}.wrap{width:min(1160px,calc(100% - 40px));margin:auto}.nav{height:78px;display:flex;align-items:center;justify-content:space-between}.brand{font-family:Georgia,serif;font-size:23px;letter-spacing:.08em}.navlinks{display:flex;gap:22px;color:var(--muted);font-size:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:12px;padding:12px 17px;background:var(--ink);color:#fff;font-weight:700;cursor:pointer}.btn.alt{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}.btn.danger{background:var(--danger)}.btn.small{padding:9px 12px;font-size:13px}.hero{padding:40px 0 72px;display:grid;grid-template-columns:1.08fr .92fr;gap:46px;align-items:center}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:11px;color:var(--accent);font-weight:800}.hero h1{font:500 clamp(48px,6vw,82px)/.95 Georgia,serif;margin:16px 0}.hero p{font-size:18px;line-height:1.7;color:var(--muted);max-width:620px}.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.hero-img{min-height:620px;border-radius:30px;background-size:cover;background-position:center;box-shadow:var(--shadow)}.section{padding:70px 0}.section h2{font:500 42px Georgia,serif;margin:0 0 14px}.sub{color:var(--muted);line-height:1.7}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:24px;box-shadow:0 8px 25px rgba(50,30,20,.04)}.stat{font-size:34px;font-weight:800}.muted{color:var(--muted)}.footer{padding:35px 0;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.page{padding:20px 0 70px}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin:20px 0 26px}.page-head h1{font:500 42px Georgia,serif;margin:0 0 8px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.panel{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:22px}.field{display:grid;gap:7px;margin-bottom:15px}.field label{font-size:13px;font-weight:800}.field input,.field textarea,.field select{width:100%;border:1px solid #ddd4cb;background:#fff;padding:12px 13px;border-radius:11px;font:inherit}.field textarea{min-height:120px;resize:vertical}.alert{padding:12px 14px;border-radius:12px;margin-bottom:18px}.alert.ok{background:#edf7f0;color:#236541}.alert.err{background:#fff0ef;color:#9f3d39}.tablewrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:13px;border-bottom:1px solid var(--line);text-align:left;font-size:14px;white-space:nowrap}.actions{display:flex;gap:8px;flex-wrap:wrap}.cover{height:185px;border-radius:18px;background-size:cover;background-position:center}.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.thumb{aspect-ratio:1/1;border-radius:17px;overflow:hidden;background:#eee;position:relative}.thumb img{width:100%;height:100%;display:block;object-fit:cover}.thumb .badge{position:absolute;left:8px;bottom:8px;background:rgba(0,0,0,.62);color:#fff;padding:5px 8px;border-radius:999px;font-size:11px}.drop{border:2px dashed #d7cec6;border-radius:18px;padding:28px;text-align:center;background:#fcfaf7}.drop input{display:none}.drop strong{display:block;margin-bottom:5px}.progress{height:7px;background:#eee4da;border-radius:999px;overflow:hidden;margin-top:10px}.progress span{height:100%;display:block;background:var(--accent);width:0}.qrbox{background:#fff;border:1px solid var(--line);padding:15px;border-radius:20px;display:inline-flex}.center{text-align:center}.event-hero{padding:35px 0 35px}.event-card{background:rgba(255,253,250,.95);border:1px solid var(--line);border-radius:26px;padding:26px}.selfie-wrap{max-width:600px;margin:auto}.camera{position:relative;border-radius:24px;overflow:hidden;background:#111;aspect-ratio:4/3}.camera video,.camera canvas{width:100%;height:100%;object-fit:cover;display:block}.camera canvas{position:absolute;inset:0}.hint{font-size:13px;color:var(--muted);line-height:1.6}.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.photo-card{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden}.photo-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.photo-card .in{padding:12px}.sticky{position:sticky;top:10px}.hide{display:none!important}
@media(max-width:900px){.hero,.grid-2,.grid-3{grid-template-columns:1fr}.hero-img{min-height:440px}.cards,.result-grid{grid-template-columns:1fr 1fr}.gallery{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){.wrap{width:min(100% - 24px,1160px)}.nav{height:68px}.navlinks{display:none}.hero{padding-top:22px}.hero h1{font-size:52px}.cards,.result-grid,.gallery{grid-template-columns:1fr}.page-head{display:block}.hero-img{min-height:380px}.section{padding:48px 0}.qrbox{max-width:100%}.actions .btn{width:100%}}

.upload-panel{padding:26px}.upload-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:18px}.upload-head h3{font:500 28px Georgia,serif;margin:5px 0}.upload-count{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 12px;font-size:12px;color:var(--muted)}.upload-dropzone{border:2px dashed #d7cec6;border-radius:20px;padding:38px 20px;text-align:center;background:linear-gradient(180deg,#fffdfa,#fcfaf7);cursor:pointer;transition:.2s}.upload-dropzone:hover,.upload-dropzone.dragging{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 10px 30px rgba(50,30,20,.06)}.upload-dropzone input{display:none}.upload-dropzone strong{display:block;font-size:18px;margin:10px 0 4px}.upload-dropzone>span{font-size:13px;color:var(--muted)}.upload-icon{width:52px;height:52px;border-radius:16px;background:#f0e7df;display:grid;place-items:center;margin:auto;font-size:24px}.upload-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px}.upload-model{display:flex;align-items:center;gap:8px;margin-left:auto;font-size:12px;color:var(--muted);padding:9px 12px;border:1px solid var(--line);border-radius:999px;background:#fff}.status-dot{width:8px;height:8px;border-radius:50%;background:#aaa}.upload-model.ready{color:#236541;background:#f2faf5;border-color:#cde8d5}.upload-model.ready .status-dot{background:#2d7a52}.upload-model.warn{color:#9f3d39;background:#fff6f4;border-color:#f0d4cf}.upload-model.warn .status-dot{background:#c65a52}.upload-list{display:grid;gap:10px;margin-top:16px}.upload-item{display:flex;align-items:center;gap:12px;padding:11px;border:1px solid var(--line);border-radius:16px;background:#fff}.upload-thumb{width:64px;height:64px;border-radius:12px;overflow:hidden;background:#eee;flex:0 0 64px}.upload-thumb img{width:100%;height:100%;object-fit:cover}.upload-meta{min-width:0;flex:1}.upload-meta strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px}.upload-meta>span{display:block;font-size:11px;color:var(--muted);margin-top:3px}.upload-state{font-size:11px;margin-top:5px}.upload-state.ok{color:#236541}.upload-state.err{color:var(--danger)}.icon-btn{border:1px solid var(--line);background:#fff;width:34px;height:34px;border-radius:10px;cursor:pointer;font-size:20px;color:var(--muted)}

/* Guest event experience */
.guest-page{padding-bottom:72px}.guest-hero{padding:34px 0 22px}.guest-hero h1{font:500 clamp(42px,7vw,78px)/1.02 Georgia,serif;margin:12px 0}.guest-lead{max-width:760px;font-size:18px;line-height:1.7;color:#675f56}.event-meta{font-size:14px;color:#8a8177}.guest-trust{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.guest-trust span,.badge-soft{border:1px solid #e9dfd4;background:#fffdf9;border-radius:999px;padding:8px 12px;font-size:12px;color:#665f56}.guest-shell{max-width:1020px;margin:14px auto 0}.stepper{display:flex;align-items:center;max-width:760px;margin:0 auto 22px}.step{display:flex;align-items:center;gap:8px;font-size:12px;color:#9c9389;white-space:nowrap}.step span{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;border:1px solid #ded5cb;background:#fff}.step.active,.step.done{color:#231f1b}.step.active span{background:#231f1b;color:#fff;border-color:#231f1b}.step.done span{background:#e9f4ec;color:#25643d;border-color:#b9ddc3}.step .line{height:1px;background:#dfd5ca;flex:1;margin:0 12px}.guest-card{display:none;background:#fff;border:1px solid #e8dfd4;border-radius:26px;box-shadow:0 18px 55px rgba(44,32,18,.06);padding:30px}.guest-card.active{display:block}.card-title{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:24px}.card-title h2{font:500 32px Georgia,serif;margin:8px 0 4px}.card-title p{margin:0;color:#7b7268}.text-btn{background:none;border:0;padding:7px 0;color:#5f554b;cursor:pointer}.consent{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.55;color:#625a51;margin:16px 0}.form-error{border:1px solid #efc1b7;background:#fff2ef;color:#a44737;padding:11px 13px;border-radius:12px;font-size:13px;margin-bottom:12px}.hide{display:none!important}.btn-wide{width:100%;justify-content:center}.selfie-layout{display:grid;grid-template-columns:1.3fr .7fr;gap:24px}.camera-card{min-width:0}.camera-big{position:relative;aspect-ratio:4/3;border-radius:22px;overflow:hidden;background:#161411;border:1px solid #2c2824}.camera-big video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.camera-guide{position:absolute;inset:14% 23%;border:2px dashed rgba(255,255,255,.72);border-radius:50% / 42%;pointer-events:none}.camera-status{display:flex;gap:9px;align-items:center;margin-top:12px;padding:11px 13px;border-radius:12px;background:#f7f4ef;color:#686057;font-size:13px}.camera-status.ready{background:#eef8f0;color:#2b6541}.camera-status.error{background:#fff0ed;color:#a44939}.status-dot{width:8px;height:8px;border-radius:50%;background:currentColor}.selfie-side{display:flex;flex-direction:column;gap:12px}.mini-check{border:1px solid #eee6dd;border-radius:18px;padding:16px;display:flex;flex-direction:column;gap:10px;background:#fdfbf8}.mini-check span:before{content:'✓';display:inline-block;margin-right:8px;color:#35734b}.photo-actions{display:flex;gap:8px;padding:11px}.photo-actions .btn{flex:1}.result-message{border-radius:14px;padding:12px 14px;font-size:13px;margin-bottom:16px}.result-message.ok{background:#eef8f0;color:#2b6541}.result-message.warn{background:#fff5e7;color:#805b22}.result-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.photo-card{border:1px solid #e9e1d8;border-radius:18px;overflow:hidden;background:#fff}.photo-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.btn-ghost{background:#fff;border:1px solid #ded5cb;color:#3b352f}.small{font-size:13px;padding:9px 12px}@media(max-width:780px){.guest-page{padding-top:4px}.guest-card{padding:20px;border-radius:20px}.card-title{display:block}.card-title .text-btn{margin-top:10px}.selfie-layout{grid-template-columns:1fr}.result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.step strong{display:none}.step .line{margin:0 7px}.guest-hero{padding-top:18px}.guest-hero h1{font-size:44px}}

.qr-link-note{font-size:11px;word-break:break-all;margin-top:5px}.qr-link-note a{text-decoration:underline}

.file-btn{position:relative;overflow:hidden;cursor:pointer}.file-btn input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.or-divider{display:flex;align-items:center;gap:10px;margin:4px 0;color:#8d867e;font-size:12px}.or-divider:before,.or-divider:after{content:"";height:1px;background:#e3ddd6;flex:1}.camera-help{margin-top:10px;padding:12px 14px;border:1px solid #ead5c8;background:#fff8f3;border-radius:12px;color:#6e5548;font-size:13px;line-height:1.5}.center-actions{justify-content:center}.btn.danger{border-color:#d9b1a8;background:#fff4f1;color:#8d2e1f}.btn.danger:hover{background:#ffe7e1}.camera-status.error{border-color:#e2b9b0;background:#fff5f2;color:#8d2e1f}.camera-status.ready{border-color:#c9ddca;background:#f3faf3;color:#2e6333}@media (max-width:700px){.selfie-side .btn{min-height:48px}.camera-big{min-height:300px}.qrbox canvas{max-width:100%;height:auto}}
