:root{--bg: #111111;--bg-deep: #0f0f0f;--bg-soft: #1a1a1a;--card: #181818;--card-strong: #1e1e1e;--text: #f6f2eb;--muted: #c4bbb0;--accent-light: #efe4d3;--accent-red: #d62b2b;--accent-red-strong: #ef3b33;--border: rgba(255, 255, 255, .1);--border-strong: rgba(239, 228, 211, .24);--danger-bg: rgba(214, 43, 43, .18);--notice-bg: rgba(239, 228, 211, .08);--status-new: #8f8f8f;--status-seen: #2367d8;--status-maybe: #ffb300;--status-approved: #20b718;--status-playing-next: #8f35d9;--status-played: #39bd2c;--status-not-tonight: #e00000;--status-duplicate: #ff3c12;--status-cancelled: #5f5f5f;--status-expired: #9b6500;color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg-deep);color:var(--text);font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}.guest-shell{align-items:center;background:linear-gradient(140deg,#0f0f0ff0,#d62b2b29),var(--bg);display:flex;min-height:100vh;padding:24px}.guest-panel,.login-panel{background:#181818f0;border:1px solid var(--border);border-radius:8px;margin:0 auto;max-width:560px;padding:28px;width:100%}.login-panel{box-shadow:0 24px 80px #0000005c}.login-copy{color:var(--muted);font-weight:700;margin-bottom:22px}.login-form{border-top:1px solid var(--border);padding-top:20px}.eyebrow{color:var(--accent-red-strong);font-size:.78rem;font-weight:800;letter-spacing:0;margin:0 0 8px;text-transform:uppercase}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(2rem,6vw,3.2rem);line-height:1;margin-bottom:12px}.brand-logo{display:block;height:auto;margin:0 auto 28px;max-height:150px;max-width:min(100%,620px);object-fit:contain}.brand-logo-compact{margin:0;max-height:104px;max-width:470px}.lede,.notice,.closed-message,.meta,.status-copy{color:var(--muted)}.closed-message,.notice,.success,.error{border-radius:8px;padding:14px}.closed-message,.notice{background:var(--notice-bg)}.request-disclaimer{background:#d62b2b29;border:1px solid rgba(214,43,43,.38);border-radius:8px;color:var(--accent-light);font-weight:700;margin:0 0 18px;padding:12px 14px}.success{background:#efe4d31f;color:var(--accent-light)}.admin-feedback{border:1px solid var(--border-strong);font-weight:800;margin:12px 0}.error{background:var(--danger-bg);color:var(--accent-light)}.request-form,.admin-form{display:grid;gap:16px}label{color:var(--text);display:grid;font-weight:700;gap:8px}label span{color:var(--muted);font-size:.85rem;font-weight:500}.form-hint{color:var(--muted);font-size:.92rem;margin:-6px 0 4px}.time-field{color:var(--text);display:grid;font-weight:700;gap:8px}.time-field-label{color:var(--text)}.time-select-grid{display:grid;gap:12px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.time-select{gap:6px}.time-select span{color:var(--muted);font-size:.85rem;font-weight:700}.checkbox-label{align-items:center;display:flex;flex-direction:row;gap:10px}.checkbox-label input{min-height:20px;width:20px}.compact-control{max-width:320px}input,select,textarea{background:var(--bg-soft);border:1px solid var(--border-strong);border-radius:8px;color:var(--text);min-height:48px;padding:12px 14px;width:100%}textarea{min-height:96px;resize:vertical}.primary-button,.secondary-button,.success-button,.warning-button,.danger-button,.ghost-button,.status-actions button{border:0;border-radius:8px;color:var(--text);cursor:pointer;font-weight:800;min-height:44px;padding:10px 14px}.primary-button{background:var(--accent-red)}.secondary-button,.status-actions button,.success-button{background:var(--accent-light);color:var(--bg)}.warning-button{background:#c9a64c;color:var(--bg)}.danger-button{background:var(--accent-red)}.ghost-button{background:#ffffff14;color:var(--text)}button:disabled{cursor:not-allowed;opacity:.55}.link-button,.text-link{display:inline-flex;justify-content:center;margin-top:16px;text-decoration:none}.text-link{color:var(--accent-light)}.request-list,.gig-list,.request-board{display:grid;gap:14px}.security-panel{margin:0 auto;max-width:720px}.security-checks{display:grid;gap:10px;margin:18px 0}.security-checks p{margin:0}.totp-qr{background:#fff;border-radius:8px;display:block;height:220px;margin:0 auto;padding:10px;width:220px}.request-item,.gig-row,.admin-request{background:var(--card-strong);border:1px solid var(--border);border-radius:8px;padding:16px}.request-item h2,.admin-request h2{font-size:1.25rem;margin-bottom:4px}.status-badge,.active-pill{border-radius:999px;display:inline-flex;font-size:.78rem;font-weight:900;margin:8px 0;padding:6px 10px;width:fit-content}.status-new{background:var(--status-new);color:#fff}.status-seen{background:var(--status-seen);color:#fff}.status-maybe{background:var(--status-maybe);color:#111}.status-approved{background:var(--status-approved);color:#fff}.status-playing-next{background:var(--status-playing-next);color:#fff}.status-played{background:var(--status-played);color:#fff}.status-not-tonight,.status-rejected{background:var(--status-not-tonight);color:#fff}.status-duplicate{background:var(--status-duplicate);color:#fff}.status-cancelled{background:var(--status-cancelled);color:#fff}.status-expired{background:var(--status-expired);color:#fff}.admin-shell{background:var(--bg-deep);min-height:100vh;padding:18px}.login-shell{align-items:center;display:flex}.admin-header{align-items:center;border-bottom:1px solid var(--border);display:flex;gap:16px;justify-content:space-between;margin-bottom:22px;min-height:112px;padding-bottom:16px}.brand,.admin-header a{color:var(--text);font-weight:900;text-decoration:none}.admin-header nav{display:flex;flex-wrap:wrap;gap:12px}.admin-header .active{color:var(--accent-red-strong)}.dashboard-grid,.admin-layout{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.admin-section,.admin-action{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:20px}.admin-action{align-items:center;color:var(--text);display:flex;font-size:1.2rem;font-weight:900;gap:12px;min-height:120px;text-decoration:none}.button-row,.status-actions,.filters{display:flex;flex-wrap:wrap;gap:10px}.filters{margin:18px 0}.filters label{align-items:center;display:flex;flex:1 1 300px}.filters select{flex:0 1 220px}.gig-row{display:grid;gap:12px}.masked-code-row{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.masked-code{background:#ffffff14;border:1px solid var(--border);border-radius:8px;color:var(--accent-light);display:inline-flex;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1.1rem;font-weight:900;justify-content:center;letter-spacing:.12em;min-width:92px;padding:9px 12px}.event-code-controls{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.event-code-controls input:not([type=checkbox]){max-width:190px}.active-pill{background:var(--accent-red);color:var(--text);margin-left:8px}.request-heading{align-items:start;display:flex;gap:16px;justify-content:space-between}.message,.reason{color:var(--accent-light)}.reason{background:#efe4d314;border-left:3px solid var(--accent-red);padding:10px 12px}.status-actions{margin-top:12px}.status-actions .status-action-seen{background:var(--status-seen);color:#fff}.status-actions .status-action-maybe{background:var(--status-maybe);color:#111}.status-actions .status-action-approved{background:var(--status-approved);color:#fff}.status-actions .status-action-playing-next{background:var(--status-playing-next);color:#fff}.status-actions .status-action-played{background:var(--status-played);color:#fff}.status-actions .status-action-not-tonight,.status-actions .status-action-rejected{background:var(--status-not-tonight);color:#fff}.status-actions .status-action-duplicate{background:var(--status-duplicate);color:#fff}.status-actions .status-action-cancelled{background:var(--status-cancelled);color:#fff}.copy-button{align-items:center;display:inline-flex;gap:6px}@media(max-width:720px){.guest-shell,.admin-shell{padding:12px}.guest-panel,.login-panel,.admin-section,.admin-action{padding:18px}.brand-logo{max-height:118px;max-width:100%}.brand-logo-compact{max-height:72px;max-width:300px}.admin-header,.request-heading{align-items:stretch;flex-direction:column}.status-actions button{flex:1 1 140px}}
