@font-face{font-family:TicketSans;src:url('DejaVuSans.ttf')}*{box-sizing:border-box}body{margin:0;background:#f1f5f7;color:#183343;font:14px/1.55 system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}a{color:#137b82;text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border:1px solid #c6d4dc;border-radius:8px;background:white;color:#234858;cursor:pointer;line-height:1.3;font-weight:600;white-space:nowrap}button:hover,.button:hover{background:#eaf2f5;text-decoration:none}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:#127c82;border-color:#127c82;color:white}.primary:hover{background:#0d656a;color:white}.secondary{background:#eef5f7}.danger{color:#a33232;background:#fff7f6;border-color:#e8c8c4}.small-button{padding:6px 10px;font-size:12px}.wide{width:100%}.topbar{display:flex;align-items:center;gap:32px;background:#143b4b;color:white;padding:17px max(24px,calc((100vw - 1460px)/2));min-height:78px}.brand{display:flex;align-items:center;gap:9px;font-size:23px;font-weight:700;letter-spacing:-.7px;color:white}.brand small{font-size:10px;letter-spacing:2px;opacity:.65;margin-left:5px}.brand-icon{font-size:32px;color:#78d3ce}.topbar nav{display:flex;gap:5px;flex:1}.topbar nav a{color:#cfdee5;padding:10px 13px;border-radius:7px}.topbar nav .active{color:white;background:#2b5261}.account{display:flex;align-items:center;gap:14px;font-size:12px}.account a,.text-button{color:#d4e4eb}.text-button{background:transparent;border:0;padding:0;font-size:12px}.text-button:hover{background:transparent;color:white}main{max-width:1510px;padding:32px 28px 55px;margin:auto;min-height:calc(100vh - 150px)}h1{font-size:30px;letter-spacing:-.8px;line-height:1.2;margin:7px 0 12px}h2{font-size:18px;line-height:1.35;margin:0 0 12px}p{margin:8px 0 16px}small,.small{font-size:12px}.muted{color:#6b818d}.eyebrow{color:#6d8c9a;letter-spacing:1.8px;font-size:10px;font-weight:750}.lead{font-size:18px;line-height:1.8;color:#617b89}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:22px;margin:8px 0 26px}.page-heading p{margin-bottom:0}.card{background:white;border:1px solid #d7e2e8;border-radius:12px;padding:24px;box-shadow:0 2px 5px #18334304}.event-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px}.event-card{border-top:3px solid #69b8b5}.event-card h2{font-size:23px;margin:19px 0 6px}.event-card h2 a{color:#183343}.event-date{font-size:12px;font-weight:650;color:#477482;display:flex;justify-content:space-between}.event-date span{background:#eaf3f5;border-radius:5px;padding:2px 8px}.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);margin:20px 0;border-top:1px solid #e2eaf0;border-bottom:1px solid #e2eaf0;padding:17px 0}.mini-stats strong{font-size:24px;display:block}.mini-stats span{font-size:11px;color:#7a909b}.card-actions,.actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px}.card-actions .button{flex:1;font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:0 0 25px}.stats>div{padding:18px 22px;border-radius:9px;background:white;border:1px solid #d7e2e8}.stats span{color:#718794;font-size:12px;display:block}.stats strong{font-size:31px;line-height:1.4}.stats .positive{background:#e6f5ef;border-color:#c6e6d8;color:#1e7854}.split{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:22px;align-items:start}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.section-heading h2{margin:0}.search{display:flex;gap:7px}.search input{max-width:240px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:13px}th{background:#edf3f6;color:#4c6d7d;font-size:10px;text-transform:uppercase;letter-spacing:.5px;padding:12px 13px;border-bottom:1px solid #d4e0e7}td{padding:14px 13px;border-bottom:1px solid #e0e8ed;vertical-align:middle}tbody tr:nth-child(even){background:#f7fafb}td small{display:block;color:#8a9ba4;font-size:11px}.badge{display:inline-block;border-radius:5px;padding:4px 8px;font-size:11px;font-weight:650}.valid,.issued,.accepted{background:#e0f4e9;color:#1a714a}.reserved,.used{background:#fff1d9;color:#9d6418}.canceled,.invalid,.wrong_event{background:#fce4e1;color:#a13330}.empty{grid-column:1/-1;text-align:center;padding:65px 25px}.empty p{max-width:540px;margin:15px auto 24px;color:#6b818d}.empty-icon{display:block;font-size:42px;color:#7fa7b6}.empty-row{text-align:center;color:#8397a1;padding:40px}.form-card{max-width:760px;margin:0 auto}.form-card form>p{margin-bottom:20px}label{display:block;font-size:12px;font-weight:600;color:#476371;margin-bottom:7px}input:not([type=checkbox]):not([type=hidden]),select,textarea{display:block;width:100%;padding:10px 12px;background:#fff;border:1px solid #cbd9e1;border-radius:7px;outline:none;color:#243f4d;min-width:0}input:focus,select:focus,textarea:focus{border-color:#2f9a9f;box-shadow:0 0 0 3px #26a19f15}input[type=checkbox]{accent-color:#137b82;width:16px;height:16px;vertical-align:middle}.helptext{display:block;font-size:11px;color:#84959e;margin-top:5px}.helptext ul{padding-left:18px}.errorlist{padding:10px 15px 10px 30px;color:#ac3535;background:#fff0ed;border-radius:7px;font-size:12px}.notice{padding:13px 17px;border-radius:8px;background:#e2f1fa;color:#285f7e;margin-bottom:20px}.notice.success{background:#e3f5eb;color:#216a46}.notice.error{background:#fff0eb;color:#a33832}.spaced{margin-top:22px}.back{display:inline-block;font-size:12px;margin-bottom:10px}.reservation-meta{display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px}.reservation-meta input[type=number]{width:100px}.print-toolbar{padding:15px;background:#eff5f7;border-radius:9px;display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:15px 0}.print-toolbar label{margin:0;min-width:240px}.login-layout{display:grid;grid-template-columns:1.2fr 1fr;max-width:1100px;margin:70px auto;align-items:center;gap:80px}.login-layout h1{font-size:44px;max-width:500px;margin:15px 0 23px}.login-card{padding:34px}.feature-row{display:flex;gap:20px;font-size:12px;font-weight:600;color:#477482;padding-top:30px}.art-preview{height:120px;border-radius:8px;background:#e8f2f4;display:flex;justify-content:center;align-items:center;margin-bottom:20px;overflow:hidden}.art-preview img{width:100%;height:100%;object-fit:contain}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start}.editor-controls label{margin-bottom:16px}.editor-controls h2{margin-bottom:22px}.stage-wrap{overflow:auto;padding:25px 10px;background:repeating-conic-gradient(#f0f3f5 0% 25%,#f8fafb 0% 50%) 50% / 20px 20px;border-radius:8px}#stage{position:relative;width:100%;min-width:350px;background:#e8f2f4 center/contain no-repeat;outline:1px solid #cad9df;overflow:hidden}.field{position:absolute;border:1px dashed #5e8c9c;cursor:move;touch-action:none;white-space:nowrap;overflow:hidden;font-family:TicketSans,system-ui;color:#173b4e;user-select:none}.field.selected{outline:2px solid #13a4a9;background:#ffffff55}.field.off{opacity:.3}.field.qr{background:white;display:grid;place-items:center;color:black;font-size:34px}.field.qr::before{content:'▦';font-size:clamp(22px,6vw,60px)}.check{display:flex;align-items:center;gap:8px}hr{border:0;border-top:1px solid #dce6ec;margin:20px 0}.scanner-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:24px;max-width:1100px;margin:auto}.camera{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:4/3;background:#112c39;display:flex;align-items:center;justify-content:center;color:#d3e3eb}.camera video{width:100%;height:100%;object-fit:cover}.camera p{position:absolute;left:20px;right:20px;text-align:center;bottom:5px;font-size:12px;z-index:2}.viewfinder{position:absolute;inset:20%;border:2px solid #b4e8e3;border-radius:15px;pointer-events:none}.scan-result{text-align:center;padding:35px 25px;min-height:270px;border:2px solid #cfdee5}.result-icon{font-size:54px;display:block;line-height:1.3;margin-bottom:15px}.scan-result h2{font-size:25px}.scan-result.accepted{background:#dcf5e6;border-color:#76c798}.scan-result.used{background:#fff1d7;border-color:#e2b663}.scan-result.invalid,.scan-result.canceled,.scan-result.wrong_event,.scan-result.error{background:#ffe6e2;border-color:#e49d94;color:#a13430}.scan-result button{margin:8px}.pdf-frame{width:100%;height:75vh;border:1px solid #cad7df;background:#fff;border-radius:8px}footer{text-align:center;color:#8b9da6;font-size:11px;padding:20px}form{margin:0}[hidden]{display:none!important}@media(max-width:1100px){.topbar{gap:20px;padding:16px 24px;flex-wrap:wrap}.topbar nav{order:3;flex-basis:100%}.account{margin-left:auto}.split{grid-template-columns:1fr}.split>aside{max-width:none}.section-heading{flex-wrap:wrap}.reservation-meta{grid-template-columns:1fr 1fr}.editor-grid{grid-template-columns:minmax(0,1fr) 285px}}@media(max-width:700px){main{padding:22px 14px 40px}.topbar{padding:13px 16px;gap:10px}.topbar nav{font-size:12px;gap:1px;overflow-x:auto}.topbar nav a{padding:8px 9px;white-space:nowrap}.brand{font-size:21px}.brand small{display:none}.page-heading{align-items:flex-start;flex-direction:column;gap:15px}h1{font-size:27px}.card{padding:18px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stats>div{padding:13px 18px}.stats strong{font-size:27px}.event-grid{grid-template-columns:1fr}.login-layout{display:flex;flex-direction:column;gap:25px;margin:20px auto}.login-layout h1{font-size:34px}.feature-row{padding-top:5px;gap:15px}.login-card{width:100%;max-width:450px}.print-toolbar{align-items:stretch;flex-direction:column}.print-toolbar .actions button{flex:1}.reservation-meta{grid-template-columns:1fr}.editor-grid,.scanner-grid{grid-template-columns:1fr}.editor-controls{order:2}.scanner-grid .camera{aspect-ratio:1}.scan-result{min-height:210px}.camera p{font-size:11px}.search{width:100%}.search input{max-width:none}td,th{padding:10px}.actions{gap:7px}.button,button{padding:9px 12px;font-size:12px}}
/* Keep wide editor canvases and tables inside the mobile viewport. */
.card{min-width:0}.stage-wrap{min-width:0}.topbar nav{scrollbar-width:thin}.editor-grid>*,.scanner-grid>*{min-width:0}
@media(max-width:700px){.editor-grid,.scanner-grid{grid-template-columns:minmax(0,1fr)}.topbar nav::-webkit-scrollbar{height:3px}.topbar nav::-webkit-scrollbar-thumb{background:#6b8d9b}.topbar nav::-webkit-scrollbar-track{background:transparent}}

/* Keep the result visible while a phone is aimed at the ticket. */
@media(max-width:700px){
 .topbar nav{scrollbar-width:none}.topbar nav::-webkit-scrollbar{display:none}
 .scanner-grid>aside{display:contents}
 #scan-result{order:-1;position:sticky;top:8px;z-index:20;align-self:start;min-height:0;padding:14px;display:grid;grid-template-columns:36px minmax(0,1fr);gap:2px 10px;text-align:left;box-shadow:0 5px 16px #18334316}
 #scan-result .result-icon{grid-column:1;grid-row:1 / span 2;font-size:30px;margin:0;align-self:center}
 #result-title{grid-column:2;font-size:18px;margin:0}
 #result-detail{grid-column:2;font-size:11px;margin:3px 0}
 #scan-result button{grid-column:2;justify-self:start;margin:4px 0 0;padding:7px 11px;font-size:11px}
 .scanner-grid .camera{aspect-ratio:4/3}
}
