:root{--plum:#58304f;--ink:#302535;--muted:#6f6072;--paper:#fffdfa;--line:#e9dfe6;--rose:#f2e7ef;--green:#2e634c;--red:#842d49}*{box-sizing:border-box}body{margin:0;background:#f7f3f1;color:var(--ink);font:15px system-ui,sans-serif}header{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:15px max(18px,calc((100vw - 1120px)/2));background:var(--paper);border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:5px;color:var(--plum);text-decoration:none}.brand img{flex:none}.brand span{font:bold 30px/.88 Georgia,serif;letter-spacing:-1.2px}.brand small{display:block;font:800 9px/1 system-ui,sans-serif;letter-spacing:.24em;text-transform:uppercase;margin-top:5px}.badge,.label{font-size:10px;letter-spacing:.13em;font-weight:800;text-transform:uppercase;color:var(--plum)}.badge{border-radius:20px;background:var(--rose);padding:7px 9px;text-align:center}main{width:min(1120px,100% - 30px);margin:26px auto}h1,h2,p{margin:0 0 12px}h1,h2{font-family:Georgia,serif;font-weight:500}h1{font-size:clamp(32px,6vw,61px);letter-spacing:-.04em}h2{font-size:25px}p{line-height:1.55}.muted{color:var(--muted)}.hero{padding:clamp(22px,5vw,62px);border-radius:17px;background:linear-gradient(90deg,#291a2ef2,#432c44c9 52%,#32273677),url('/cover.jpg') center 52%/cover;color:#fff9f1;margin-bottom:16px}.hero .label{color:#efd3aa}.hero p{max-width:430px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.card{background:var(--paper);border:1px solid var(--line);border-radius:13px;padding:18px;min-width:0}.card .label{display:block;margin-bottom:7px}.card.center{text-align:center;max-width:500px;margin:auto}.narrow{max-width:560px;margin:auto}.form{display:grid;gap:12px;margin:13px 0}label{display:grid;gap:5px;font-weight:650;font-size:13px}input,select,button,.button{font:inherit;color:var(--ink);border:1px solid #d9cbd6;border-radius:8px;padding:10px;background:#fff;min-width:0}button,.button{cursor:pointer;font-size:13px;font-weight:700;text-decoration:none;display:inline-block}button:hover,.button:hover{background:var(--rose)}button:disabled{opacity:.6;cursor:wait}.primary{background:var(--plum);color:white;border-color:var(--plum)}.primary:hover{background:#724665}:focus-visible{outline:2px solid #865577;outline-offset:2px}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.msg{font-size:14px;margin:8px 0}.msg:empty{display:none}.error{color:var(--red)}.pill{display:inline-block;font-size:11px;padding:5px 8px;border-radius:20px;background:var(--rose);color:var(--plum);white-space:nowrap}.qr{background:white;padding:3px;margin:10px auto;width:max-content;max-width:100%;border-radius:10px;border:1px solid var(--line)}.qr svg{display:block;width:220px;height:auto}.result{padding:13px;border-radius:9px;background:var(--rose);margin:12px 0;min-height:45px}.result.ok{background:#e3f1e8;color:var(--green)}.result.bad{background:#f8e3e7;color:var(--red)}.result:empty{display:none}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th,td{padding:9px;border-bottom:1px solid var(--line);font-size:13px}th{color:var(--muted)}.dashboard{display:grid;grid-template-columns:1.75fr 1fr;gap:12px;margin-top:12px}.incident{border-left:3px solid #973e61;background:#faedf0;padding:9px;margin:8px 0;border-radius:6px;font-size:13px}.incident p{margin:3px 0}.headrow{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}.summary{display:flex;flex-wrap:wrap;gap:8px}.video{display:block;width:100%;max-height:310px;background:#29222b;border-radius:8px;margin:8px 0}.video[hidden]{display:none}details{margin:9px 0}summary{cursor:pointer;color:var(--plum);font-size:13px;font-weight:700}@media(max-width:760px){.grid,.dashboard{grid-template-columns:1fr}.card{padding:15px}main{margin-top:15px}}

.manage-entry{margin:16px 0}
.manage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}
.event-directory{margin-top:14px}
.manage-event{border-top:1px solid var(--line);padding:12px 0}
.manage-event h3{margin:0 0 4px}
.manage-event p{margin:0 0 7px}
.staff-list{list-style:none;padding:0;margin:8px 0 0}
.staff-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.staff-list li button{flex:none}
.access-issued code{overflow-wrap:anywhere}
.guest-add-box{margin-top:16px;padding-top:10px;border-top:1px solid var(--line)}
.guest-add-box .form{grid-template-columns:repeat(2,minmax(0,1fr))}
.guest-add-box .form>button,.guest-add-box .form>.msg{grid-column:1/-1}
@media(max-width:700px){.manage-grid{grid-template-columns:1fr}}


.template-field{min-width:0;margin:0;padding:8px 9px;border:1px solid var(--line);border-radius:9px}
.template-field legend{font-size:12px;font-weight:700}
.template-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.template-choice{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px;padding:6px;border:1px solid var(--line);border-radius:7px;cursor:pointer;font-size:11px}
.template-choice input{margin:0;accent-color:var(--plum)}
.template-choice:has(input:checked){background:var(--pink);border-color:#b88ca9}
.template-swatch{display:block;height:28px;border-radius:4px;background:linear-gradient(135deg,var(--swatch) 0 62%,var(--swatch-accent) 63%)}
.template-choice>span:last-child{grid-column:1/-1}
.recovery-list{display:grid;padding:12px 15px;border-radius:8px;background:var(--rose);color:var(--plum);font-size:15px;line-height:1.75}

.control-hero{position:relative;isolation:isolate;display:grid;align-content:center;min-height:170px;overflow:hidden;background:radial-gradient(ellipse at 91% 36%,color-mix(in srgb,var(--panel-accent) 57%,transparent),transparent 68%),linear-gradient(117deg,var(--panel-ink),color-mix(in srgb,var(--panel-ink) 75%,var(--panel-cover)));color:#fffaf2}
.control-hero>div{z-index:1;position:relative;max-width:78%}
.control-hero h1{margin:5px 0;font-size:clamp(30px,5.2vw,59px)}
.control-hero h1 span{display:block}
.control-hero .control-art{position:absolute;right:clamp(4px,3vw,34px);top:50%;transform:translateY(-50%) rotate(-9deg);width:min(42%,270px);height:auto;color:#fff6d2;opacity:.35}
.panel-toolbar{margin:0 0 10px}
.attendance-detail summary{font-size:11px}
.attendance-detail ul{padding-left:17px;white-space:normal;line-height:1.55}
.companion-field{grid-column:1/-1}
.companion-field textarea{width:100%;resize:vertical;border:1px solid #e0d1dc;border-radius:7px;padding:7px;font:inherit}
#app-notice{position:fixed;z-index:20;bottom:18px;right:18px;max-width:calc(100% - 36px);padding:10px 15px;border-radius:8px;background:var(--plum);color:white;box-shadow:0 5px 22px #3b25494a}
#app-notice[hidden]{display:none}


.template-swatch { position:relative; overflow:hidden; height:38px; }
.template-swatch .template-art { position:absolute; inset:1px 5px 0 auto; width:48px; height:37px; color:#fff8e7; filter:drop-shadow(0 1px 3px #442f44a0); }
.theme-toggle{display:grid;place-items:center;flex:none;width:38px;height:38px;padding:0;border-radius:50%;font-size:19px}
header .badge{margin-left:auto}
:root[data-theme="dark"]{color-scheme:dark;--plum:#e3afd3;--ink:#f7edf5;--muted:#c9b7c8;--paper:#28212b;--line:#493d4d;--rose:#392a3f;--green:#acd5b8;--red:#ffadc5}
[data-theme="dark"] body{background:#19151d}
[data-theme="dark"] :is(button,.button,input,textarea,select,summary){color:var(--ink)}
[data-theme="dark"] :is(input,textarea,select){background:#201a23;border-color:var(--line)}
[data-theme="dark"] .primary,[data-theme="dark"] #app-notice{background:#75446e;color:#fff5fb}
[data-theme="dark"] .qr{background:white}
.dashboard-plan{margin-bottom:24px}
.dashboard-plan .headrow{align-items:center}
.event-floor{position:relative;height:clamp(245px,40vh,390px);overflow:hidden;border:1px solid var(--line);border-radius:12px;background:repeating-linear-gradient(0deg,transparent 0 27px,var(--line) 28px),repeating-linear-gradient(90deg,var(--paper) 0 27px,var(--line) 28px)}
.event-floor>span{position:absolute;transform:translate(-50%,-50%);padding:5px 8px;text-align:center;white-space:nowrap;font-size:11px}
.event-floor .floor-table{display:grid;place-items:center;min-width:44px;min-height:44px;border-radius:50%;border:2px solid var(--line);background:var(--rose);color:var(--plum);font-weight:700}
.event-floor .floor-main,.event-floor .floor-dance,.event-floor .floor-entry{left:50%;border:1px dashed var(--line);border-radius:6px;color:var(--muted)}
.floor-main{top:12%}.floor-dance{top:48%}.floor-entry{top:91%}
#guests select{padding:5px;max-width:120px}
@media(max-width:560px){.event-floor .floor-table{min-width:34px;min-height:34px;padding:4px;font-size:9px}}
[data-theme="dark"] :is(button,.button){background:var(--paper);border-color:var(--line)}
[data-theme="dark"] :is(button,.button):hover{background:var(--rose)}
[data-theme="dark"] .primary{background:#75446e;color:#fff5fb}
[data-theme="dark"] .incident,[data-theme="dark"] .result.bad{background:#442632}
[data-theme="dark"] .result.ok{background:#263b30}
[data-theme="dark"] td a{color:var(--plum)}
.event-policy{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}
.event-policy button{justify-self:start}
#pass-recovery{padding:10px;margin:10px 0;background:var(--rose);border-radius:9px;text-align:left}
#pass-recovery[hidden]{display:none}
@media(max-width:580px){.event-policy{grid-template-columns:1fr}}

.password-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem;align-items:end}
.event-floor .floor-table.shape-square{border-radius:9px}
.event-floor .floor-table small{font-size:9px;font-weight:400;white-space:nowrap}
.attendance-kpis{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:20px;border:1px solid var(--line,#d6c3d2);border-radius:16px;margin:0 0 18px;background:var(--paper,#fffaf5)}
.attendance-kpis h3,.attendance-kpis>p{grid-column:1/-1;margin:0}
.attendance-kpi{display:flex;flex-direction:column;gap:5px;padding:18px;border-radius:12px;background:var(--pink,#f1e4ed);color:var(--ink,#352837)}
.attendance-kpi strong{font:600 clamp(27px,4vw,46px) Georgia,serif}
.attendance-kpi strong small{font-size:.55em;opacity:.75}
.attendance-kpi>span:last-child{font-size:12px}
.party-count-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:600px){.attendance-kpis{grid-template-columns:1fr;padding:12px}.party-count-fields{grid-template-columns:1fr}}
.attendance-kpi{background:#f1e4ed;color:#352837}
[data-theme=dark] .attendance-kpis{background:#2b2430;color:#fff4fa}
[data-theme=dark] .attendance-kpi{background:#433448;color:#fff4fa}
