:root{--blue:#073b70;--blue2:#0c5da5;--gold:#d9aa38;--bg:#eef3f8;--ink:#142536;--muted:#65788b;--white:#fff;--shadow:0 12px 35px #16395b1c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,Arial,sans-serif}.top{background:linear-gradient(110deg,#052e59,#0871bd);color:white;display:flex;gap:14px;align-items:center;padding:18px max(20px,calc((100vw - 1500px)/2))}.logo{width:58px;height:58px;border:3px solid var(--gold);border-radius:50%;display:grid;place-items:center;font-weight:900}.top span{display:block;opacity:.82;margin-top:4px}main{max-width:1500px;margin:auto;padding:28px 20px}.hero{color:white;padding:32px;border-radius:22px;background:linear-gradient(125deg,#063b70,#0d6eb5);box-shadow:var(--shadow)}.hero h1{font-size:clamp(28px,4vw,48px);margin:7px 0}.hero p{max-width:760px;line-height:1.6}.hero small{color:#ffda74;font-weight:800;letter-spacing:.16em}.legend{display:flex;flex-wrap:wrap;gap:18px;margin:20px 0;background:white;padding:14px 20px;border-radius:14px}.legend span{display:flex;align-items:center;gap:7px}.legend i{width:14px;height:14px;border-radius:50%;display:block}.grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px}.card{background:white;border-radius:18px;box-shadow:var(--shadow);padding:22px}.section-title{display:flex;justify-content:space-between;align-items:center}.section-title span{font-size:13px;color:var(--muted)}.plan-card{overflow:auto}.stage{margin:10px auto 20px;width:320px;text-align:center;padding:12px;border-radius:30px;background:#102a43;color:white;letter-spacing:.2em}.plan{position:relative;min-width:1170px;min-height:850px;background-image:radial-gradient(#b7c4d0 1px,transparent 1px);background-size:20px 20px;border:1px solid #dbe4ec;border-radius:14px}.table{position:absolute;width:170px;height:145px}.tabletop{position:absolute;left:35px;top:35px;width:100px;height:72px;border-radius:14px;background:linear-gradient(#f7f0dc,#e7d4a0);border:3px solid #c79a32;display:grid;place-items:center;font-weight:800;box-shadow:0 5px 12px #0002}.seat{position:absolute;width:34px;height:34px;border:0;border-radius:50%;transform:translate(-50%,-50%);font-weight:800;cursor:pointer;box-shadow:0 3px 7px #0002}.seat:disabled{cursor:not-allowed}.free,.seat.free{background:#42b66a;color:white}.selected,.seat.selected{background:#f4b942!important;color:#17293b}.pending,.seat.pending{background:#f19a37;color:white}.confirmed,.seat.confirmed{background:#2384ce;color:white}.paid,.seat.paid{background:#8b5bc4;color:white}.blocked,.seat.blocked{background:#626f7b;color:white}.booking{position:sticky;top:18px;height:max-content}.booking label{display:block;margin:14px 0;font-weight:700}.booking input:not([type=checkbox]){width:100%;margin-top:6px;padding:12px;border:1px solid #cbd7e2;border-radius:10px;font:inherit}.check{display:flex!important;gap:9px;align-items:flex-start;font-size:14px;font-weight:500!important}.selection{display:flex;flex-direction:column;gap:6px;min-height:60px;color:var(--muted)}.selection span{background:#f1f5f8;padding:8px;border-radius:8px;color:var(--ink)}.total{display:flex;justify-content:space-between;border-top:1px solid #dce5ec;margin-top:15px;padding-top:15px;font-size:20px}button#reserve{width:100%;background:linear-gradient(90deg,#07599d,#0879c9);color:white;border:0;border-radius:11px;padding:14px;font-weight:800;font-size:16px}button#reserve:disabled{opacity:.45}.hint,#message{font-size:14px;line-height:1.5}#message{margin-top:12px;color:#07599d}footer{text-align:center;padding:30px;color:var(--muted)}@media(max-width:980px){.grid{grid-template-columns:1fr}.booking{position:static}}

/* Version 2: Saalplan mit fünf Plätzen pro Tischseite */
.plan{min-width:1200px;min-height:2400px;position:relative;overflow:hidden}
.table{width:104px!important;height:190px!important;position:absolute!important;transform-origin:center}
.table .table-name{position:absolute;left:30px;top:8px;width:44px;height:174px;background:#f3c74f;border:2px solid #9b7921;border-radius:4px;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;font-weight:800;font-size:13px}
.table .seat{position:absolute!important;width:25px!important;height:27px!important;margin:0!important;border-radius:7px!important;font-size:9px!important}
.table .seat.side-left{left:0}.table .seat.side-right{right:0}
@media(max-width:900px){.plan-card{overflow:auto}.plan{transform-origin:top left}}

/* Version 2.4: Besucher-Saalplan mit eigenem Scrollbereich */
.public-plan-scroll{height:72vh;min-height:560px;max-height:950px;overflow:auto;border:1px solid #dbe4ec;border-radius:14px;overscroll-behavior:contain;scrollbar-gutter:stable both-edges;background:#f8fafc}
.public-plan-scroll .plan{border:0;border-radius:0;min-height:3000px}
.plan-help{margin:8px 0 12px;color:var(--muted);font-size:14px}
@media(max-width:980px){.public-plan-scroll{height:65vh;min-height:480px}}


/* Version 3.2: Besucheransicht entspricht dem Admin-Saalplan 1:1 */
.public-stage{position:absolute;left:60px;top:18px;width:calc(100% - 120px);height:72px;background:#173760;color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:800;letter-spacing:4px;z-index:1}
.table.cat-1 .table-name{background:#d9dde0;border-color:#89939a}
.table.cat-2 .table-name{background:#ffd968;border-color:#9b7921}
.table.cat-0 .table-name{background:#f3c74f;border-color:#9b7921}
.table .seat.side-left{left:0;transform:none}
.table .seat.side-right{right:0;left:auto;transform:none}
.table .seat{display:flex;align-items:center;justify-content:center;box-shadow:none;border:1px solid #89939a}
.table .seat.free{background:#42b66a;color:#fff;border-color:#42b66a}
.table .seat.pending{background:#991b1b;color:#fff;border-color:#991b1b}
.table .seat.confirmed{background:#173760;color:#fff;border-color:#173760}
.table .seat.paid{background:#075fb8;color:#fff;border-color:#075fb8}
.table .seat.blocked{background:#626f7b;color:#fff;border-color:#626f7b}
.table .seat.selected{background:#f4b942!important;color:#17293b;border-color:#9b7921}
.event-meta{color:var(--muted);font-size:14px;margin-top:4px}.selection .chip{display:block}.table .table-name{transition:background .2s}

.legal{max-width:900px;margin:30px auto;line-height:1.65}.legal h2{margin-top:28px}.booking select,.form-grid select,.form-grid textarea,.payment-method-row input,.payment-method-row textarea{width:100%;box-sizing:border-box;padding:10px;border:1px solid #ccd3dd;border-radius:8px}.payment-method-row{display:grid;grid-template-columns:100px 1fr 2fr 90px;gap:10px;align-items:center;margin:10px 0;padding:10px;background:#f7f8fa;border-radius:10px}.payment-method-row textarea{min-height:60px}@media(max-width:800px){.payment-method-row{grid-template-columns:1fr}}

/* Version 6.5: kompakte interaktive Besucheransicht wie der Saalstatus */
.plan-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 12px;padding:10px;background:#f2f6fa;border:1px solid #dbe4ec;border-radius:12px}
.plan-toolbar>button{border:1px solid #b9c8d6;background:#fff;color:#173760;border-radius:9px;padding:9px 13px;font:inherit;font-weight:800;cursor:pointer;min-width:42px}
.plan-toolbar>button:hover{background:#e5eef6}.plan-toolbar #zoomLevel{margin-left:auto;font-weight:800;color:var(--muted);min-width:58px;text-align:right}
.table-jump{display:flex;align-items:center;gap:7px;margin-left:4px;font-size:14px;font-weight:700}.table-jump select{padding:8px 10px;border:1px solid #b9c8d6;border-radius:8px;background:#fff;min-width:150px}
.public-plan-viewport{position:relative;height:72vh;min-height:560px;max-height:900px;overflow:hidden;border:1px solid #dbe4ec;border-radius:14px;background:#f8fafc;cursor:grab;touch-action:none;user-select:none}
.public-plan-viewport.is-dragging{cursor:grabbing}.public-plan-viewport .plan{position:absolute;left:0;top:0;border:0;border-radius:0;will-change:transform;overflow:visible;min-width:0;min-height:0}
.public-plan-viewport .seat{touch-action:manipulation;user-select:none}.public-plan-viewport .table{transition:filter .15s}.public-plan-viewport .table:hover{filter:drop-shadow(0 0 7px rgba(7,59,112,.28))}
@media(max-width:980px){.public-plan-viewport{height:62vh;min-height:470px}.plan-toolbar #zoomLevel{margin-left:0}.table-jump{order:2;width:100%;margin-left:0}.table-jump select{flex:1;min-width:0}.booking{position:sticky;bottom:0;z-index:20;border-radius:18px 18px 0 0;box-shadow:0 -10px 30px #16395b28}}
@media(max-width:560px){main{padding:16px 10px}.card{padding:14px}.hero{padding:22px 18px}.legend{gap:10px;padding:11px 13px;font-size:13px}.public-plan-viewport{height:58vh;min-height:420px}.plan-toolbar>button{padding:8px 10px}.plan-help{font-size:13px}}

/* Version 6.5.1: Mobile Bedienung – Reservierungsformular überdeckt den Saalplan nicht mehr */
@media(max-width:980px){
  .booking{
    position:static!important;
    bottom:auto!important;
    z-index:auto!important;
    border-radius:18px!important;
    box-shadow:var(--shadow)!important;
  }
  .plan-card{position:relative;z-index:2;overflow:visible}
  .public-plan-viewport{z-index:3;isolation:isolate}
  .public-plan-viewport .plan{z-index:1}
  .public-plan-viewport .seat{position:absolute;z-index:5;pointer-events:auto!important;-webkit-tap-highlight-color:transparent}
}
@media(max-width:560px){
  .public-plan-viewport{height:64vh;min-height:440px}
  .public-plan-viewport .seat{min-width:25px;min-height:27px}
}

.general-ticket-box{padding:16px;border:2px solid #173760;border-radius:14px;background:#f5f8fc;margin-bottom:14px}.product-options{display:grid;gap:9px;margin:14px 0}.product-options h3{margin:0 0 4px}.product-option{display:flex!important;align-items:center;justify-content:space-between;gap:12px;padding:10px;border:1px solid #d8dee8;border-radius:10px;background:#fff}.product-option span{display:grid;gap:2px}.product-option small{color:#596579}.product-option em{font-style:normal;font-weight:700}.product-option input{width:76px!important;margin:0!important}

.is-hidden,[hidden]{display:none!important}.grid.no-seat-plan{grid-template-columns:minmax(320px,760px);justify-content:center}.grid.no-seat-plan .booking{position:static;width:100%}.product-category-heading{margin:16px 0 7px;color:#173760;font-size:15px}.product-option[data-type="food"]{border-left:5px solid #d38b2d}.product-option[data-type="drink"]{border-left:5px solid #2c88c9}.product-option[data-type="voucher"]{border-left:5px solid #8c5bb7}.product-option[data-type="merchandise"]{border-left:5px solid #3a9a68}.product-option[data-type="other"]{border-left:5px solid #7c8792}

.binding-check{margin-top:12px;padding:12px;border:1px solid #d6b46a;border-radius:12px;background:#fff9e9;align-items:flex-start!important}.binding-check input{margin-top:4px}

/* Version 7.4.6: Veranstaltungsinfos bei freier Platzwahl */
.public-event-info{margin:20px 0;padding:24px 28px;border-left:6px solid var(--gold)}
.public-event-kicker{font-size:12px;font-weight:900;letter-spacing:.14em;color:var(--blue2);margin-bottom:5px}
.public-event-info h2{font-size:clamp(24px,3vw,34px);margin:0 0 18px;color:var(--ink)}
.public-event-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.public-event-facts>div{display:flex;gap:12px;align-items:center;background:#f5f8fb;border:1px solid #dce6ef;border-radius:13px;padding:14px 16px;min-width:0}
.public-event-facts>div>span{font-size:24px}.public-event-facts small{display:block;color:var(--muted);font-size:12px;margin-bottom:3px}.public-event-facts strong{display:block;overflow-wrap:anywhere}
@media(max-width:760px){.public-event-facts{grid-template-columns:1fr}.public-event-info{padding:18px}}

.public-copyright{
  max-width:1180px;
  margin:28px auto 18px;
  padding:18px 16px;
  text-align:center;
  color:#6b7280;
  font-size:13px;
  line-height:1.5;
}
@media(max-width:600px){
  .public-copyright{margin-top:20px;font-size:12px;padding:14px 12px}
}

.preview-notice{max-width:1180px;margin:16px auto 0;padding:12px 16px;border-radius:12px;background:#fff4d6;border:1px solid #ead087;color:#6e5310}

.additional-names{margin:10px 0;padding:14px;border:1px solid #d7e2ee;border-radius:12px;background:#f8fbfe}
.additional-names-head{display:grid;gap:3px;margin-bottom:10px}
.additional-names-head strong{color:#173760}
.additional-names-head small{color:#66758a}
#additionalNamesList{display:grid;gap:10px}
#additionalNamesList label{margin:0}

.ticket-person{padding:12px;margin:8px 0;border:1px solid #dce5ef;border-radius:10px}.member-choice{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:8px}.member-truth{margin:12px 0;padding:12px;border:1px solid #e4c36b;border-radius:10px;background:#fff8df}

/* Version 7.9.0 – freie Plätze in der Besucheransicht */
.public-event-facts{grid-template-columns:repeat(4,minmax(0,1fr))}
#publicAvailabilityCard{border-color:#b9dcc6;background:#f2fbf5}
#publicAvailabilityCard #publicAvailability{color:#17652e;font-size:1.05rem}
#publicAvailabilityCard.availability-low{border-color:#ead391;background:#fff9e8}
#publicAvailabilityCard.availability-low #publicAvailability{color:#7a5a00}
#publicAvailabilityCard.availability-soldout{border-color:#efb8b8;background:#fff2f2}
#publicAvailabilityCard.availability-soldout #publicAvailability{color:#a32626}
@media(max-width:1100px){.public-event-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.public-event-facts{grid-template-columns:1fr}}
.paypal-panel{margin-top:16px;padding:16px;border:1px solid #c7d7ee;border-radius:12px;background:#f5f9ff}.paypal-panel strong{display:block;margin-bottom:5px;color:#173760}.paypal-panel p{margin:0 0 12px}.paypal-panel.is-paid{border-color:#80c99a;background:#edf9f1}.paypal-panel.is-error{border-color:#e3a2a2;background:#fff1f1}
