:root{font-family:system-ui,sans-serif;color:#242a2a;background:#f7f7f3;line-height:1.5}*{box-sizing:border-box}body{margin:0}.wrap{width:min(1100px,92%);margin:auto}header{background:#153d35;color:#fff;padding:36px 0}h1,h2,p{margin:0}h1{font-size:clamp(2rem,5vw,3rem);letter-spacing:-.04em}h2{font-size:1.25rem}.eyebrow{letter-spacing:.12em;font-size:.72rem;font-weight:700;color:#c7e8b0}header p:last-child{color:#d7e6de}.notice{margin:24px 0;background:#fff5d7;border:1px solid #e5c879;border-radius:10px;padding:12px 16px;color:#674e08}.intro{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:28px 0 18px}.intro p,#hint{color:#62716a}.prices{background:#e7efe9;padding:10px 14px;border-radius:8px;font-weight:600}.layout{display:grid;grid-template-columns:2fr 1fr;gap:20px}.floor,aside{background:white;border:1px solid #dce4dd;border-radius:16px;padding:20px}.landmark{font-size:.75rem;text-align:center;letter-spacing:.16em;background:#e9eee8;color:#547166;border-radius:8px;padding:10px}.secondary{margin-top:18px}.tables{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-top:18px}.table{min-height:68px;border:2px solid #bed4c3;background:#e8f3e9;color:#164a36;border-radius:10px;cursor:pointer}.table.round{border-radius:50%}.table strong,.table small{display:block}.table strong{font-size:1.1rem}.table small{font-size:.65rem}.table:hover,.table.selected{border-color:#28764d;background:#cbe8d1}.table:focus-visible{outline:3px solid #d99c2b;outline-offset:3px}.seats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:18px}.seat{background:#e8f3e9;border-radius:8px;padding:10px;text-align:center;font-size:.85rem}.unavailable{background:#eee;color:#888}.legend{margin-top:25px;font-size:.75rem;color:#718078}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#75b98b;margin:0 4px 0 8px}.dot.busy{background:#bcbcbc}#error{margin-top:20px;color:#9e342b}@media(max-width:700px){header{padding:26px 0}.intro{align-items:flex-start;flex-direction:column}.layout{grid-template-columns:1fr}.tables{grid-template-columns:repeat(4,1fr);gap:8px}.floor,aside{padding:15px}.table{min-height:62px}}

.map-scroll{overflow-x:auto}.map-canvas{position:relative;min-width:620px;height:530px;background:#f9faf5;border:1px solid #e5ebe2;border-radius:12px}.map-canvas .landmark{position:absolute;left:0;top:27%;writing-mode:vertical-rl;transform:rotate(180deg);height:90px}.map-canvas .landmark.secondary{left:3%;top:83%;height:auto;writing-mode:initial;transform:none;margin:0}.tables{position:absolute;inset:0;margin:0;display:block}.table{position:absolute;width:65px;height:48px;min-height:0;transform:translate(-50%,-50%)}.table strong{font-size:.95rem}.table small{font-size:.58rem}.floor{overflow:hidden}.table:focus-visible{z-index:2}@media(max-width:700px){.map-canvas{height:530px}.table{min-height:0}}
.panel{margin:20px 0;background:#fff;border:1px solid #dce4dd;border-radius:16px;padding:22px}.panel p{margin:10px 0;color:#53655b}.panel form{margin:18px 0}.panel label{display:block;font-weight:600;margin:10px 0 5px}.panel input,.panel select{font:inherit;border:1px solid #b7cbbd;border-radius:7px;padding:10px;width:100%;background:#fff}.panel button{background:#195b42;color:white;border:0;border-radius:7px;padding:11px 16px;font:inherit;cursor:pointer}.inline{display:flex;gap:8px}.inline button{white-space:nowrap}.selection-row{display:flex;align-items:center;gap:12px;border-bottom:1px solid #e7ede8;padding:6px 0}.selection-row label{flex:1}.selection-row select{max-width:150px}.seat{border:0;cursor:pointer;color:#174a35;font:inherit}.seat:disabled{cursor:default}.seat.chosen{background:#aacfb0;outline:2px solid #397d50}#message{color:#174a35;font-weight:600}#payment-instructions{white-space:pre-wrap}@media(max-width:520px){.inline{flex-direction:column}.inline button{width:100%}}
.reservation-card{border-top:1px solid #dce4dd;padding:14px 0}.reservation-card h3{margin:0}.reservation-card a{display:block;margin:8px 0}.reservation-card button{margin:8px 8px 0 0}#admin-price-form label{flex:1}#admin-reservations input{margin-top:10px}#admin-content .inline{align-items:center;flex-wrap:wrap}
