:root{--bg:#f4f0ea;--surface:#fff;--border:#e2ddd2;--text:#2c1f14;--text-muted:#6b5b4e;--accent:#c85a3a;--accent-dark:#993c1d;--danger:#a32d2d;--radius:10px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}a{color:var(--accent-dark);text-decoration:none}a:hover{text-decoration:underline}.shell{max-width:1080px;margin:0 auto;padding:24px}.topbar{display:flex;align-items:center;justify-content:space-between;padding-bottom:16px;border-bottom:1px solid var(--border);margin-bottom:24px}.brand{font-size:20px;font-weight:700}.brand span{color:var(--accent)}.nav{display:flex;gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:16px}.btn{display:inline-flex;align-items:center;gap:6px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer}.btn:hover{background:var(--accent-dark)}.btn-secondary{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg)}.btn-danger{background:var(--danger)}.btn-danger:hover{background:#791f1f}.field{margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:4px;color:var(--text-muted)}.field input,.field select,.field textarea{width:100%;padding:9px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px;background:var(--surface);color:var(--text)}.field textarea{resize:vertical;min-height:90px}.field .hint{font-size:12px;color:var(--text-muted);margin-top:4px}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.table{width:100%;border-collapse:collapse}.table td,.table th{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border);font-size:14px}.table th{color:var(--text-muted);font-weight:600;font-size:12px;text-transform:uppercase}.thumb{width:48px;height:48px;border-radius:6px;object-fit:cover}.badge,.thumb{background:var(--bg)}.badge{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;color:var(--text-muted)}.badge.pro{background:#faeeda;color:#854f0b}.badge.premium{background:#fbeaf0;color:#993556}.badge.draft{background:#fcebeb;color:#a32d2d}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{width:360px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));grid-gap:10px;gap:10px;margin-top:8px}.gallery-grid img{width:100%;height:90px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.error-text{color:var(--danger);font-size:13px;margin-top:6px}.redeem-wrap{max-width:460px;margin:0 auto;padding:32px 20px 56px;gap:20px}.redeem-head,.redeem-wrap{display:flex;flex-direction:column}.redeem-head{gap:4px}.redeem-eyebrow{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.redeem-venue{margin:0;font-size:24px;letter-spacing:-.02em}.redeem-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px}.code-input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:30px;font-weight:700;letter-spacing:.24em;text-align:center;text-transform:uppercase;padding:16px 12px!important}.redeem-btn{width:100%;padding:16px;font-size:17px}.pin-chip{display:block;width:100%;margin-bottom:14px;font-size:12px;color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:9px 12px;cursor:pointer}.redeem-result{border-radius:var(--radius);padding:24px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}.redeem-result strong{font-size:21px;letter-spacing:-.01em}.redeem-result .muted{color:var(--text-muted);font-size:13px}.redeem-result.good{background:#eaf6ec;border:1px solid #b6dcc0;color:#205c30}.redeem-result.bad{background:#fcebeb;border:1px solid #e8c0c0;color:var(--danger)}.redeem-result .tick{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;margin-bottom:4px;background:#d6efdb;color:#1d7a37;font-size:26px;font-weight:700}.access-issued{margin-top:18px;padding:18px;border:1px solid var(--accent);border-radius:var(--radius);background:#fdf6f3}.access-row{display:flex;align-items:baseline;gap:12px;margin-top:10px;flex-wrap:wrap}.access-row span{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);min-width:40px}.access-row code{font-size:13px;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:6px 10px;word-break:break-all}.access-row code.access-pin{font-size:20px;font-weight:700;letter-spacing:.2em;color:var(--accent)}.vh-link{display:block;text-align:center;font-size:13px;color:var(--text-muted);padding:6px}.vh-stats{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.vh-stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:4px}.vh-stat span{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.vh-stat strong{font-size:24px;letter-spacing:-.02em}.vh-list{gap:10px}.vh-list,.vh-row{display:flex;flex-direction:column}.vh-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;gap:5px}.vh-row-main{display:flex;align-items:center;justify-content:space-between;gap:10px}.vh-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;font-weight:700;letter-spacing:.12em}.vh-pill{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:6px}.vh-pill.used{background:#eaf6ec;color:#205c30}.vh-pill.wait{background:var(--bg);color:var(--text-muted)}.vh-pill.gone{background:#fcebeb;color:var(--danger)}.vh-row-sub{font-size:13px;color:var(--text-muted)}.vh-row-foot{display:flex;justify-content:space-between;font-size:12px;color:var(--text-muted)}