:root{--bg:#f4f0e8;--ink:#24212a;--wine:#672c43;--accent:#ed705e;--muted:#777079;--line:#e5ded5}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px 'DM Sans',system-ui,sans-serif}h1,h2,h3{font-family:Manrope,system-ui,sans-serif}h1{font-size:34px;letter-spacing:-1px;margin:8px 0}h2{font-size:21px;margin:0 0 6px}h3{font-size:14px}p{line-height:1.5}button,input,select{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:white;padding:10px 14px;border-radius:8px;color:var(--ink);font-weight:600}button:hover{filter:brightness(.97)}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ed705e88;outline-offset:2px}.primary{background:var(--wine);border-color:var(--wine);color:white}.sidebar{position:fixed;inset:0 auto 0 0;width:232px;background:#2d1b29;color:#fff;padding:36px 24px;display:flex;flex-direction:column}.brand{font:800 58px Manrope;letter-spacing:-6px;line-height:1}.brand span{display:block;font:600 9px Manrope;letter-spacing:2px;margin:16px 0 36px}.event{font-size:17px;font-weight:600;line-height:1.6}.event small{font-size:12px;color:#c0adb8;font-weight:400}nav{margin-top:46px;display:grid;gap:10px}nav button{color:#b8a5b2;background:transparent;border:0;text-align:left;display:flex;gap:14px;padding:14px 10px;font-size:12px}nav button span{font-size:14px}nav button.selected{background:#ffffff13;color:#fff;border-left:3px solid var(--accent);border-radius:0 8px 8px 0}.aside-foot{margin-top:auto;font-size:10px;letter-spacing:1.4px;color:var(--accent)}.aside-foot small{display:block;color:#b8a5b2;letter-spacing:0;margin-top:9px}main{margin-left:232px;padding:34px 38px;max-width:1600px}header{display:flex;justify-content:space-between;align-items:center;gap:12px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;color:var(--wine)}.demo-pill{background:#eadfcf;border-radius:20px;font-size:10px;padding:9px 13px;white-space:nowrap;letter-spacing:.8px}.notice{background:#fff8ee;border:1px solid #e9d8bd;border-radius:9px;padding:12px 15px;color:#715a39;font-size:12px;margin:20px 0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:26px}.stat{background:#fffaf4;border:1px solid var(--line);padding:17px 20px;border-radius:12px}.stat strong{font-size:28px;display:block}.stat span{color:var(--muted);font-size:12px}.panel{background:#fffdf9;border:1px solid var(--line);border-radius:14px;padding:24px}.hidden{display:none!important}.section-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.section-head p{margin:0;color:var(--muted)}input:not([type=checkbox]),select{padding:11px 12px;background:white;border:1px solid var(--line);border-radius:7px;color:var(--ink);min-width:0}label{display:grid;gap:6px;margin-bottom:14px;font-size:12px;font-weight:600}.toolbar{display:flex;gap:12px;margin-bottom:20px}.toolbar input{flex:1}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;min-width:680px}th{text-align:left;text-transform:uppercase;letter-spacing:1px;font-size:10px;color:var(--muted);padding:12px 8px;border-bottom:1px solid var(--line)}td{padding:17px 8px;border-bottom:1px solid var(--line);vertical-align:top;font-size:12px}td strong{display:block;font-size:14px;margin-bottom:5px}td small{color:var(--muted)}.chips{display:flex;gap:4px;flex-wrap:wrap;max-width:260px}.chip{font-size:10px;padding:4px 7px;border-radius:4px;background:#efe9e1}.state{font-size:10px;display:inline-block;padding:5px 8px;border-radius:20px;white-space:nowrap}.active{background:#e2f1e7;color:#286343}.pending{background:#fff0d0;color:#865e0c}.revoked{background:#fae3e0;color:#9b3c34}.actions{display:flex;gap:5px;flex-wrap:wrap}.actions button{font-size:11px;padding:6px 8px}.muted{font-size:12px;color:var(--muted);line-height:1.55}.full{width:100%}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:14px;margin-top:20px}.person-card{border:1px solid var(--line);border-radius:10px;padding:18px}.person-card h3{margin:0 0 5px;font-size:17px}.person-card .actions{margin-top:15px}.scan-settings{display:grid;grid-template-columns:1fr 1fr;gap:15px}.scan-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}.camera{height:245px;background:#241a25;border-radius:12px;color:white;display:grid;place-items:center;position:relative;overflow:hidden;margin:5px 0 12px}.camera video{width:100%;height:100%;object-fit:cover;position:absolute}.camera #cameraHint{font:600 38px Manrope;text-align:center;z-index:1}.camera small{display:block;font:12px 'DM Sans';color:#c9b8c6;margin-top:15px}.manual{display:flex;gap:8px;align-items:end;margin-top:16px}.manual label{flex:1;margin:0}.test-label{margin-top:18px}.result{border-radius:12px;padding:28px;min-height:245px;background:#efeae3;border:1px solid var(--line)}.result-icon{font-size:40px;display:block;margin-bottom:18px}.result.allow{background:#e2f2e6;color:#20573a;border-color:#a8d4b5}.result.deny{background:#fbe5e1;color:#87362b;border-color:#e5b4ac}.result.accompany{background:#fff0cf;color:#755307;border-color:#e8cc89}.result .person{font-size:20px;font-weight:700;margin-top:20px}.result p{margin-bottom:0}.log{margin-top:25px}.logitem{border-top:1px solid var(--line);padding:10px 0;font-size:12px}.logitem small{color:var(--muted)}footer{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:11px;margin-top:22px}footer button{font-size:11px;background:transparent;border:0;padding:5px}dialog{border:0;border-radius:14px;max-width:560px;width:calc(100% - 30px);padding:25px;max-height:92vh;color:var(--ink)}dialog::backdrop{background:#20132299;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.close{font-size:25px;padding:0 8px;border:0}.dates{margin:20px 0}.dates>span{display:block;font-size:12px;font-weight:600;margin-bottom:10px}.dates label{display:inline-flex;align-items:center;gap:6px;margin-right:15px}.permissions-head{display:flex;align-items:center;justify-content:space-between}.permissions-head label{display:flex;align-items:center;gap:6px;margin:0}.permission{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);gap:10px}.permission label{display:flex;align-items:center;gap:7px;margin:0}.permission label:last-child{font-size:10px;color:var(--muted)}input[type=checkbox]{accent-color:var(--wine)}.dialog-actions{display:flex;justify-content:end;gap:10px;margin-top:22px}.error{color:#a43831}.pass-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;text-align:center;background:#faf5ed;max-width:350px;margin:auto}.pass-top{background:var(--wine);color:white;letter-spacing:2px;font-size:14px;padding:20px;font-weight:700}.pass-top span{display:block;font-size:10px;margin-top:7px}.pass-body{padding:22px}.pass-demo{font-size:8px;color:#9a5b47;letter-spacing:1px}.pass-body h2{margin:13px 0 4px}.pass-body p{font-size:12px;color:var(--muted)}#qrCanvas{width:200px;height:200px;max-width:100%}#passId{font-family:monospace}#passDates{font-size:11px}.pass-zones{display:flex;justify-content:center;gap:5px;flex-wrap:wrap;margin:14px 0}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#302332;color:#fff;padding:12px 22px;border-radius:8px;display:none;z-index:9}
@media(max-width:900px){.sidebar{width:185px;padding:28px 18px}main{margin-left:185px;padding:25px 20px}.scan-grid{grid-template-columns:1fr}.brand{font-size:48px}.section-head{align-items:start}h1{font-size:28px}}@media(max-width:620px){.sidebar{position:static;width:100%;padding:18px}.brand{font-size:30px;letter-spacing:-3px;display:flex;align-items:center;gap:18px}.brand span{margin:0;font-size:8px}.event,.aside-foot{display:none}nav{display:flex;margin:18px 0 0;gap:4px}nav button{padding:10px 7px;gap:5px}nav button span{font-size:11px}main{margin:0;padding:20px 12px}.stats{gap:7px}.stat{padding:12px}.stat strong{font-size:23px}.panel{padding:16px}.section-head{flex-direction:column}.toolbar{flex-direction:column}.demo-pill{display:none}.scan-settings{grid-template-columns:1fr}.manual{align-items:stretch;flex-direction:column}footer{gap:15px}.dialog-actions{flex-wrap:wrap}}
@media print{body>*{display:none!important}dialog#passDialog{display:block!important;position:static;border:0;margin:0;max-width:none;width:100%;max-height:none;padding:0}#passDialog>*:not(.pass-card){display:none!important}.pass-card{width:85mm;max-width:85mm;print-color-adjust:exact;-webkit-print-color-adjust:exact}}

.operator-zones{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0}.operator-zones label{display:flex;align-items:center;gap:5px}
@font-face{font-family:Invitation;src:url('/fonts/invitation-regular.woff') format('woff');font-weight:400;font-display:block}
@font-face{font-family:Invitation;src:url('/fonts/invitation-bold.woff') format('woff');font-weight:700;font-display:block}
.invitation-preview{display:block;max-width:100%;max-height:65vh;width:auto;height:auto;margin:16px auto}
textarea{font:inherit;padding:12px;border:1px solid #d6d0c6;border-radius:8px;max-width:100%}

#guestRows .rsvp-accepted td,.person-card.rsvp-accepted{background:#143c2a;color:#e6fff0}#guestRows .rsvp-declined td,.person-card.rsvp-declined{background:#48232b;color:#ffe9ec}#guestRows .rsvp-waiting td{background:#453b1c;color:#fff5cc}#responseList{max-height:480px;overflow:auto;margin-top:16px}#responseList .person-card{margin:10px 0}#responseNotice{font-weight:700;color:#e0b469}

fieldset{border:1px solid #665b45;border-radius:12px;padding:18px;margin:18px 0}legend{color:#e0b469;font-weight:700}#arrivalRows,#peopleList,#historyContent{max-height:420px;overflow:auto}#arrivalRows .person-card{margin:10px 0}#batchPreview{max-height:58vh;overflow:auto}#batchPreview details{padding:12px;margin:8px 0;border:1px solid #665b45;border-radius:10px}#batchProgress{white-space:pre-wrap}input[type=checkbox][data-select-guest]{width:auto;margin-right:8px}

dialog{max-height:90vh;overflow-y:auto}#guestRows small{line-height:1.65}#guestRows td{vertical-align:top}#responseCounts{margin-bottom:14px}#arrivalSearch{width:100%;margin:12px 0}#peopleForm{display:grid;gap:12px}#batchPreview textarea{width:100%}
