:root{font-family:'Avenir Next','Segoe UI',sans-serif;color:#253349;background:#f0f3f8;font-synthesis:none;--blue:#294fa4;--line:#dce3ee;--muted:#63728a}*{box-sizing:border-box}body{margin:0;display:grid;grid-template-columns:228px 1fr;min-height:100vh}aside{background:#172c4b;color:#fff;padding:32px 20px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{color:#fff;text-decoration:none;font-size:35px;font-weight:800;letter-spacing:3px}.brand span{display:block;font-size:11px;letter-spacing:0;font-weight:400;color:#b5c7e4;margin-top:5px;line-height:1.6}.venue{margin:34px 0 26px;padding:16px 12px;border:1px solid #435773;border-radius:7px}.venue span{display:block;color:#b5c7e4;font-size:12px;margin-top:5px}nav{display:grid;gap:6px}button,input,select{font:inherit}button{cursor:pointer;border:0;border-radius:6px;background:var(--blue);color:white;padding:12px 18px;font-weight:600}button:hover{filter:brightness(.94)}button:disabled{opacity:.45;cursor:not-allowed}nav button{text-align:left;background:none;color:#c6d2e6;font-size:13px;padding:13px 11px;font-weight:500}nav button.active{background:#314c73;color:#fff}.aside-foot{margin-top:auto;color:#c6d2e6;font-size:12px;line-height:2}.aside-foot small{color:#92a8c8}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#64bc9b;margin-right:5px}main{padding:30px 36px;min-width:0;max-width:1800px;width:100%}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px}#date{font-size:12px;color:var(--muted)}h1{font-size:29px;margin:8px 0 0;letter-spacing:-.6px}h2{font-size:19px;margin:0 0 14px}h3{margin:0 0 8px}.demo{padding:10px 15px;background:#fff1cc;color:#74581e;border-radius:6px;font-size:12px;font-weight:600}.demo span{display:block;font-size:11px;font-weight:400;margin-top:4px}.panel{background:white;border:1px solid var(--line);border-radius:10px;padding:24px}.muted{color:var(--muted);font-size:13px}.toolbar{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin-bottom:22px}.toolbar label{flex:1;min-width:160px}.workspace{display:grid;grid-template-columns:minmax(400px,1fr) 290px;gap:20px}.sessions{display:flex;gap:10px;overflow-x:auto;padding-bottom:18px}.session{background:white;color:#253349;border:1px solid var(--line);padding:14px 17px;min-width:190px;text-align:left}.session.selected{border:2px solid var(--blue);background:#f4f7ff;padding:13px 16px}.session strong,.session small{display:block}.session small{color:var(--muted);font-weight:400;margin-top:7px}.session time{display:block;color:var(--blue);font-size:21px;margin:9px 0 0}.screen{height:34px;border-top:4px solid #adc0dd;border-radius:50% 50% 0 0;text-align:center;color:var(--muted);font-size:11px;padding-top:8px;margin:18px 10% 30px}.seatmap{overflow-x:auto;padding:0 0 18px}.seatrow{display:flex;align-items:center;justify-content:center;gap:6px;min-width:440px;margin:7px 0}.rownum{font-size:11px;width:18px;text-align:center;color:#77859c}.seat{padding:0;width:29px;height:29px;flex-shrink:0;background:#e3ebf9;color:#354f7c;border:1px solid #c4d2eb;border-radius:6px 6px 3px 3px;font-size:10px}.seat:nth-child(9){margin-left:15px}.seat.paid{background:#a5afbf;color:#fff;border-color:#a5afbf}.seat.held{background:#ffe2ac;border-color:#e7c37b;color:#5b4318}.seat.chosen{background:var(--blue);color:#fff;border-color:var(--blue)}.legend{display:flex;gap:18px;justify-content:center;color:var(--muted);font-size:11px;flex-wrap:wrap}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;background:#e3ebf9}.legend .taken{background:#a5afbf}.legend .booked{background:#ffe2ac}.legend .picked{background:var(--blue)}.basket{align-self:start}.basket .empty{padding:30px 0;color:var(--muted);font-size:13px;line-height:1.6}.basket ul{padding:0;list-style:none}.basket li{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.total{display:flex;justify-content:space-between;padding:20px 0;font-size:18px;font-weight:700}.full{width:100%;margin-top:10px}.secondary{background:#eef2f8;color:#314866}label{display:block;color:var(--muted);font-size:12px;margin-bottom:12px}input,select{display:block;width:100%;margin-top:7px;padding:10px 11px;color:#253349;background:white;border:1px solid #c7d2e3;border-radius:5px}input:focus,select:focus{outline:2px solid #7898d3}button:focus-visible,a:focus-visible{outline:3px solid #db9b30;outline-offset:3px}table{width:100%;border-collapse:collapse;font-size:13px;text-align:left}th{font-size:11px;color:var(--muted);font-weight:500;background:#f6f8fc}th,td{padding:14px 13px;border-bottom:1px solid var(--line)}td small{display:block;color:var(--muted);margin-top:5px}.tablewrap{overflow:auto}.status{display:inline-block;padding:5px 8px;border-radius:4px;font-size:11px;background:#e7f4ee;color:#286345}.status.warn{background:#fff1cc;color:#74581e}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}.metric{background:white;padding:20px;border:1px solid var(--line);border-radius:8px}.metric strong{display:block;font-size:28px;margin-top:10px}.split{display:grid;grid-template-columns:1fr 350px;gap:20px}.note{padding:16px 20px;background:#e7edf8;border-left:3px solid #7795c5;margin-bottom:20px;font-size:13px;line-height:1.7}.small-btn{font-size:11px;padding:7px 10px}#notice:not(:empty){margin-bottom:18px;padding:13px 16px;background:#dff1e9;border-radius:6px;font-size:13px}#notice.error{background:#fbe5e5;color:#873636}dialog{border:1px solid var(--line);border-radius:12px;padding:30px;width:min(620px,90vw);max-height:85vh;overflow:auto;color:#253349}dialog::backdrop{background:#172c4b88}.ticket{padding:18px;border:1px dashed #9aaccc;margin:15px 0;border-radius:7px}.ticket code{display:block;overflow-wrap:anywhere;font-size:11px;margin-top:13px;color:var(--muted)}.ticket button{margin-top:10px}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;line-height:1.7}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.section-head h2{margin:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{margin:0}.form-grid button{grid-column:1/-1}.pill{color:var(--blue);background:#edf2fd;border-radius:4px;padding:4px 7px;font-size:11px}@media(max-width:1100px){body{grid-template-columns:190px 1fr}main{padding:24px 20px}.workspace,.split{grid-template-columns:1fr}.basket{max-width:none}.seatrow{gap:5px}}@media(max-width:700px){body{display:block}aside{position:relative;height:auto;padding:18px}.brand{font-size:26px}.brand span,.venue,.aside-foot{display:none}nav{display:flex;overflow:auto;margin-top:12px}nav button{white-space:nowrap;padding:10px}main{padding:20px 14px}header{align-items:start;gap:12px}h1{font-size:24px}.demo{font-size:10px}.panel{padding:16px}.metrics{grid-template-columns:1fr}.metric strong{font-size:24px}.form-grid{grid-template-columns:1fr}.session{min-width:175px}.workspace{display:block}.basket{margin-top:16px}}
aside{overflow-y:auto}

.ticket-qr{display:block;width:200px;height:200px;max-width:100%;margin:12px auto;background:#fff}
.ticket code{display:block;overflow-wrap:anywhere;white-space:normal;font-size:11px}.ticket small{display:block}.ticket-status{font-weight:700}
@media print{
 @page{margin:10mm}
 body{display:block!important;background:white!important;color:black!important}
 body>aside,body>main,body>dialog:not([open]){display:none!important}
 dialog[open]{position:static!important;display:block!important;width:auto!important;max-width:none!important;max-height:none!important;margin:0!important;padding:0!important;border:0!important;overflow:visible!important;background:white!important;color:black!important;box-shadow:none!important}
 dialog::backdrop{display:none!important}dialog[open] #close-dialog,dialog[open] button{display:none!important}
 .ticket{display:block!important;break-inside:avoid;page-break-inside:avoid;border:1px solid #000!important;background:#fff!important;color:#000!important;padding:5mm!important;margin:0 0 5mm!important;max-width:72mm}
 .ticket-qr{width:45mm!important;height:45mm!important;print-color-adjust:exact;-webkit-print-color-adjust:exact}
}

.admission-video{display:block;width:min(100%,640px);max-height:50vh;background:#111;object-fit:contain;margin:12px 0}.admission-video[hidden]{display:none}
