:root{
  --ink:#171713;--paper:#f2eee3;--white:#fff;--muted:#6d695f;--line:#d8d1c1;
  --red:#8b1e24;--gold:#b68a3a;--green:#24633b;--dark:#171713;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Arial,sans-serif;color:var(--ink);background:#fbfaf6;line-height:1.55}
a{color:inherit}.container{width:min(1160px,calc(100% - 32px));margin:auto}.narrow{width:min(720px,calc(100% - 32px))}
.nav{height:72px;display:flex;align-items:center;gap:24px;position:relative;z-index:2}.nav a{text-decoration:none}.nav .brand{font-weight:900;font-size:22px;margin-right:auto;border:2px solid;padding:4px 10px}
.hero{position:relative;overflow:hidden;background:linear-gradient(135deg,#f5efe0,#fff 65%)}.hero-art{position:absolute;right:-100px;top:-60px;width:650px;opacity:.12}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:52px;align-items:center;padding:76px 0 96px;position:relative}.hero h1{font-family:Georgia,serif;font-size:clamp(48px,7vw,92px);line-height:.95;margin:12px 0 26px;letter-spacing:-.04em}.lead{font-size:20px;max-width:720px;color:#4d493f}
.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-weight:800;font-size:12px;color:var(--red)}
.event-meta{display:flex;flex-wrap:wrap;gap:10px;margin:28px 0}.event-meta span{border:1px solid var(--line);background:#fff;padding:8px 12px;border-radius:999px;font-weight:650}
.hero-card{background:var(--dark);border-radius:28px;padding:34px;box-shadow:0 30px 80px #0002}.hero-card img{width:100%;display:block}
.section{padding:82px 0}.section h2{font-family:Georgia,serif;font-size:clamp(34px,4vw,56px);line-height:1.08;margin:10px 0 20px}.section-grid,.register-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:18px}.gallery img{width:100%;height:260px;object-fit:cover;border-radius:18px;border:1px solid var(--line);background:#fff}
.paper{background:var(--paper)}.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 12px 35px #0000000a}
.form-card{display:grid;gap:16px}.form-card label{display:grid;gap:6px;font-weight:700}.form-card input{font:inherit;padding:13px 14px;border:1px solid #bbb5a8;border-radius:10px;background:#fff}.check{grid-template-columns:auto 1fr!important;align-items:start;font-weight:500!important}.check input{margin-top:5px}
.button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:0;border-radius:10px;padding:13px 18px;font-weight:800;cursor:pointer;font:inherit}.button.primary{background:var(--red);color:#fff}.button.ghost{border:1px solid #ffffff55;color:#fff;background:transparent}.button:disabled{opacity:.5}
.ref-banner{padding:13px 15px;border-left:4px solid var(--gold);background:#fff7df;margin:18px 0}.message{padding:8px 0}.message.success{color:var(--green)}.message.error{color:#9b1c1c}
.contest{display:grid;grid-template-columns:180px 1fr;gap:36px;align-items:center}.contest img{width:100%}
.dark{background:var(--dark);color:#fff}.dark .eyebrow{color:#d5b46f}.ranking{display:grid;gap:8px;margin-top:28px}.rank-row{display:grid;grid-template-columns:1fr 160px 160px;gap:16px;padding:16px 0;border-bottom:1px solid #ffffff20}.rank-row b{text-align:right}
footer{padding:28px 0;background:#0d0d0b;color:#bdb9ae}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:28px 0 48px}.stat{background:var(--paper);border-radius:14px;padding:22px}.stat span{display:block;color:var(--muted);font-size:13px}.stat strong{font-size:42px}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;margin-bottom:50px}table{border-collapse:collapse;width:100%;background:#fff}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid #eee;white-space:nowrap}th{background:#f5f2ea;font-size:12px;text-transform:uppercase}
.admin-nav{background:var(--dark);color:#fff}.admin-nav .container{height:60px;display:flex;align-items:center;justify-content:space-between}.admin-nav a{margin-left:18px;text-decoration:none}
.dark-page{background:#10100e;color:#fff;min-height:100vh}.dark-page .card{color:var(--ink);margin-top:8vh}.scanner-wrap{padding:36px 0}.scanner-head{display:flex;justify-content:space-between;align-items:center}.reader{background:#fff;border-radius:16px;overflow:hidden;max-width:620px;margin:24px auto}.scan-result{max-width:620px;margin:16px auto;padding:22px;border-radius:14px;background:#25251f}.scan-result.ok{background:#174c2b}.scan-result.repeat{background:#6a4a13}.scan-result.bad{background:#6c1b1f}.scan-name{font-size:30px;font-weight:800;margin-top:8px}.small{font-size:13px;opacity:.75}
@media(max-width:800px){.nav a:not(.brand){display:none}.hero-grid,.section-grid,.register-grid{grid-template-columns:1fr}.hero-grid{padding-top:42px}.hero-card{max-width:470px}.gallery img{height:180px}.contest{grid-template-columns:1fr}.contest img{width:130px}.stats{grid-template-columns:1fr 1fr}.rank-row{grid-template-columns:1fr auto}.rank-row span{display:none}}

.ticket-card{text-align:center}.ticket-card h1{font-family:Georgia,serif}.ticket-qr,.success-qr{display:block;width:min(320px,100%);height:auto;margin:22px auto;background:#fff;padding:10px;border:1px solid var(--line);border-radius:14px}.ticket-link,.break-link{overflow-wrap:anywhere;word-break:break-word}.ticket-info{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:24px 0}.ticket-info div{background:var(--paper);padding:16px 8px;border-radius:12px}.ticket-info span{display:block;font-size:12px;color:var(--muted)}.ticket-info strong{font-size:24px}.registration-success{background:#eef8f0;border:1px solid #b9d8c0;padding:20px;border-radius:14px;margin-top:10px;color:var(--ink)}.diagnostic{white-space:pre-wrap;overflow-wrap:anywhere;padding:16px;border-radius:10px;margin-top:20px;font-size:12px}.okdiag{background:#edf8ef}.baddiag{background:#fdeeee}@media(max-width:600px){.ticket-info{grid-template-columns:1fr}}

.button.danger{background:#8f1e24;color:#fff}
.small-button{padding:8px 12px;font-size:13px}
.delete-form{margin:0}
.admin-notice{margin:14px 0 24px;padding:12px 14px;border-radius:10px;background:#edf8ef}
.admin-notice.error{background:#fdeeee}
