:root{
  --blue:#005ca9;--blue-d:#003a6b;--blue-l:#e8f1fa;--red:#d0262c;--gold:#f2c14e;
  --ok:#1e8a4c;--warn:#d99a00;--bad:#c62828;--ink:#1d2433;--mute:#5d6778;--line:#dfe5ee;--bg:#f4f6f9;--card:#fff;
}
*{box-sizing:border-box}
html{font-size:15px}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg);line-height:1.45}
a{color:var(--blue)}
h1{font-size:1.6rem;margin:.2rem 0 1rem}
h2{font-size:1.2rem;margin:0 0 .8rem}
h3{font-size:1rem;margin:1rem 0 .5rem}
.top{display:flex;align-items:center;gap:1.5rem;background:#fff;border-bottom:3px solid var(--blue);padding:.5rem 1.2rem;position:sticky;top:0;z-index:5}
.brand{display:flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--blue);font-weight:700}
.brand img{height:38px}
.top nav{display:flex;gap:.2rem;flex-wrap:wrap;flex:1}
.top nav a{padding:.45rem .8rem;border-radius:6px;text-decoration:none;color:var(--ink);font-weight:500}
.top nav a:hover{background:var(--blue-l)}
.top nav a.active{background:var(--blue);color:#fff}
.user{display:flex;gap:.6rem;align-items:center;color:var(--mute);font-size:.9rem}
main{max-width:1280px;margin:0 auto;padding:1.4rem 1.2rem 3rem}
.foot{text-align:center;color:var(--mute);font-size:.8rem;padding:1rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:1.1rem 1.2rem;margin-bottom:1rem}
.grid{display:grid;gap:1rem}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.g2,.g3,.g4{grid-template-columns:1fr}.top{flex-wrap:wrap}}
.row{display:flex;gap:.8rem;align-items:center;flex-wrap:wrap}
.spread{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.mute{color:var(--mute)} .small{font-size:.85rem} .right{text-align:right} .nowrap{white-space:nowrap}
.pos{color:var(--ok)} .neg{color:var(--bad)}
table{width:100%;border-collapse:collapse}
th,td{padding:.45rem .55rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:var(--mute);font-weight:600;background:#fafbfd}
td.num,th.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
tr.sum td{font-weight:700;border-top:2px solid var(--ink)}
.table-wrap{overflow-x:auto}
.btn,button{display:inline-block;background:var(--blue);color:#fff;border:0;border-radius:6px;padding:.5rem .95rem;font:inherit;font-weight:600;cursor:pointer;text-decoration:none}
.btn:hover,button:hover{background:var(--blue-d)}
.btn.sec,button.sec{background:#fff;color:var(--blue);border:1px solid var(--blue)}
.btn.red,button.red{background:var(--red)}
button.link{background:none;color:var(--blue);padding:0;font-weight:500}
form.inline{display:inline}
label{display:block;font-size:.85rem;color:var(--mute);margin-bottom:.2rem;font-weight:600}
input,select,textarea{width:100%;font:inherit;padding:.45rem .55rem;border:1px solid #c7d0dc;border-radius:6px;background:#fff;color:var(--ink)}
input[type=checkbox]{width:auto}
textarea{min-height:80px}
.f{margin-bottom:.8rem}
.fr{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.flash{padding:.7rem 1rem;border-radius:8px;margin-bottom:1rem;font-weight:500}
.flash-ok{background:#e6f5ec;color:#145c34}
.flash-err{background:#fde8e8;color:#8e1c1c}
.flash-warn{background:#fff6dd;color:#7a5a00}
.badge{display:inline-block;padding:.1rem .5rem;border-radius:20px;font-size:.78rem;font-weight:600;background:#eef1f5;color:var(--mute)}
.b-definitiv,.b-verkauf{background:#e6f5ec;color:#145c34}
.b-provisorisch,.b-planung{background:#fff6dd;color:#7a5a00}
.b-storniert,.b-abgesagt{background:#fde8e8;color:#8e1c1c}
.ampel{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;font-size:.9rem}
.ampel i{width:14px;height:14px;border-radius:50%;display:inline-block;box-shadow:0 0 0 3px rgba(0,0,0,.05)}
.ampel-gruen i{background:var(--ok)} .ampel-gelb i{background:var(--warn)} .ampel-rot i{background:var(--bad)}
.ampel-gruen{color:var(--ok)} .ampel-gelb{color:#9a6c00} .ampel-rot{color:var(--bad)}
.trip{border-left:6px solid var(--line)}
.trip.a-gruen{border-left-color:var(--ok)} .trip.a-gelb{border-left-color:var(--warn)} .trip.a-rot{border-left-color:var(--bad)}
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem;margin:.8rem 0}
.kpi div{background:#f7f9fc;border-radius:8px;padding:.6rem .75rem}
.kpi b{display:block;font-size:1.25rem;font-variant-numeric:tabular-nums}
.kpi span{font-size:.78rem;color:var(--mute);text-transform:uppercase;letter-spacing:.03em}
.bar{height:10px;background:#e8edf3;border-radius:6px;overflow:hidden}
.bar span{display:block;height:100%;background:var(--blue)}
.bar.ok span{background:var(--ok)} .bar.warn span{background:var(--warn)} .bar.bad span{background:var(--bad)}
.tabs{display:flex;gap:.3rem;border-bottom:2px solid var(--line);margin-bottom:1rem;flex-wrap:wrap}
.tabs a{padding:.5rem .9rem;text-decoration:none;color:var(--mute);font-weight:600;border-bottom:3px solid transparent;margin-bottom:-2px}
.tabs a.active{color:var(--blue);border-bottom-color:var(--blue)}
.deck{margin-bottom:1.2rem}
.cabins{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:.4rem}
.cab{border:1px solid var(--line);border-radius:8px;padding:.4rem .5rem;font-size:.8rem;background:#fff;min-height:64px;text-decoration:none;color:var(--ink)}
.cab b{font-size:.95rem}
.cab.frei{background:#f0f9f3;border-color:#bfe3cc}
.cab.prov{background:#fff6dd;border-color:#f0d58a}
.cab.def{background:var(--blue-l);border-color:#a9c9e8}
.cab.inaktiv{opacity:.4}
.legend{display:flex;gap:1rem;font-size:.85rem;margin-bottom:.6rem}
.legend span::before{content:"";display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:.3rem;vertical-align:-1px}
.legend .l-frei::before{background:#f0f9f3;border:1px solid #bfe3cc}
.legend .l-prov::before{background:#fff6dd;border:1px solid #f0d58a}
.legend .l-def::before{background:var(--blue-l);border:1px solid #a9c9e8}
.login{max-width:380px;margin:8vh auto}
.login img{display:block;margin:0 auto 1rem;height:90px}
.hint{background:#f7f9fc;border-left:4px solid var(--gold);padding:.6rem .8rem;border-radius:6px;font-size:.9rem;margin:.6rem 0}
.sens{border:1px dashed var(--red);border-radius:8px;padding:.8rem;background:#fffafa}
@media print{.top,.foot,.noprint,button,.btn{display:none!important}main{padding:0}.card{border:0}}
/* Deckplan */
.ship{border:2px solid #b8c4d3;border-radius:14px 60px 60px 14px;padding:.5rem 2.5rem .5rem .5rem;background:#fff;overflow-x:auto}
.ship-row{display:flex;gap:.3rem;margin:.25rem 0;min-height:20px}
.ship .cab{flex:0 0 100px;min-width:0;max-width:100px;overflow:hidden;min-height:58px;padding:.3rem .4rem}
.cab .kc{font-size:.7rem;color:var(--mute);float:right}
.cab .nm{font-size:.78rem;line-height:1.2;margin-top:.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sw{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:.35rem}
.ship.online .ship-row{gap:2px}
.ocab{flex:0 0 34px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:3px;cursor:pointer;color:#fff;font-weight:700;font-size:.78rem;position:relative}
.ocab input{position:absolute;opacity:0;pointer-events:none}
.ocab span{writing-mode:vertical-rl;transform:rotate(180deg)}
.ocab.belegt{background:#cfd5dc;color:#8a94a1;cursor:not-allowed}
.ocab:has(input:checked){background:#a8235c!important;outline:3px solid #a8235c;outline-offset:1px}
.ocab:has(input:focus-visible){outline:3px solid var(--ink)}
.okat{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.6rem;margin:.6rem 0 1.4rem;font-size:.9rem}
.steps{display:flex;gap:0;background:#dbe8f5;border-radius:6px;overflow:hidden;margin-bottom:1.2rem;flex-wrap:wrap}
.steps span{padding:.6rem 1rem;color:var(--blue-d);font-weight:600;font-size:.9rem}
.steps span b{display:inline-flex;width:24px;height:24px;border-radius:50%;background:#fff;align-items:center;justify-content:center;margin-right:.4rem}
.steps span.on{background:#fff}
.pricet td{border:0;padding:.35rem .4rem}
.pricet tr.tot td{border-top:2px solid var(--ink);font-weight:700;font-size:1.1rem}
body.public .top{justify-content:space-between}
body.public .brand img{height:56px}
body.public .user a{font-weight:700;font-size:1.05rem;text-decoration:none}
@media(max-width:600px){.steps span:not(.on){display:none}.steps span.on{flex:1}}

/* ---------- KI ---------- */
.hidden{display:none}
.top nav a .cnt{display:inline-block;min-width:1.3em;padding:0 .35em;border-radius:10px;background:var(--red);color:#fff;font-size:.72rem;line-height:1.35;text-align:center;margin-left:.2rem}
.ki-wrap{display:grid;grid-template-columns:260px minmax(0,1fr);gap:1rem}
@media(max-width:900px){.ki-wrap{grid-template-columns:1fr}.ki-side{order:2}}
.ki-side a{display:block;padding:.4rem .5rem;border-radius:6px;text-decoration:none;color:var(--ink);font-size:.88rem}
.ki-side a:hover{background:var(--blue-l)} .ki-side a.on{background:var(--blue);color:#fff}
.ki-chat{max-height:62vh;overflow-y:auto;display:flex;flex-direction:column;gap:.7rem}
.ki-msg{padding:.7rem .9rem;border-radius:10px;max-width:88%;overflow-wrap:anywhere}
.ki-msg ul{margin:.3rem 0 .3rem 1.1rem;padding:0}
.ki-msg h3{margin:.4rem 0 .2rem}
.ki-u{align-self:flex-end;background:var(--blue);color:#fff}
.ki-a{align-self:flex-start;background:var(--blue-l)}
.ki-aktion{align-self:center;font-size:.8rem;color:#145c34;background:#e6f5ec;border-radius:20px;padding:.2rem .8rem}
.ki-vorschlaege{display:flex;flex-wrap:wrap;gap:.5rem}
.ki-vorschlaege button{font-weight:500;font-size:.85rem;text-align:left}
.ki-out ul{margin:.3rem 0 .3rem 1.2rem;padding:0}
.ki-brief{border-left:5px solid var(--blue)}
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.8rem}
/* Gäste-Chat */
body.pchat{background:#eef3f9;margin:0}
.pchat-box{max-width:520px;margin:0 auto;height:100vh;display:flex;flex-direction:column;background:#fff;box-shadow:0 0 0 1px var(--line)}
.pchat-kopf{display:flex;gap:.7rem;align-items:center;padding:.7rem .9rem;background:var(--blue);color:#fff}
.pchat-kopf img{height:34px;background:#fff;border-radius:6px;padding:2px}
.pchat-kopf span{font-size:.8rem;opacity:.85}
.pchat-log{flex:1;overflow-y:auto;padding:.9rem;display:flex;flex-direction:column;gap:.6rem}
.pmsg{padding:.6rem .8rem;border-radius:12px;max-width:85%;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.95rem}
.pmsg.a{background:var(--blue-l);align-self:flex-start;border-bottom-left-radius:3px}
.pmsg.u{background:var(--blue);color:#fff;align-self:flex-end;border-bottom-right-radius:3px}
.pmsg.u a{color:#fff}
.pmsg.tipp{opacity:.6}
.pchat-chips{display:flex;flex-wrap:wrap;gap:.4rem;padding:0 .9rem .6rem}
.pchat-chips button{background:#fff;color:var(--blue);border:1px solid var(--blue);font-size:.82rem;padding:.3rem .7rem;border-radius:20px;font-weight:500}
.pchat-form{display:flex;gap:.5rem;padding:.6rem .9rem;border-top:1px solid var(--line)}
.pchat-form input{flex:1}
.pchat-fuss{font-size:.7rem;color:var(--mute);padding:.3rem .9rem .6rem;text-align:center}
.chat-fab{position:fixed;right:18px;bottom:18px;z-index:20;border-radius:30px;padding:.75rem 1.2rem;box-shadow:0 6px 18px rgba(0,0,0,.2)}
.chat-panel{position:fixed;right:18px;bottom:76px;z-index:20;width:min(380px,calc(100vw - 36px));height:min(560px,calc(100vh - 110px));border-radius:12px;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,.25);background:#fff}
.chat-panel iframe{border:0;width:100%;height:100%}
.chat-panel[hidden]{display:none}
@media print{.chat-fab,.chat-panel{display:none}}
.rechte-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.5rem}
.recht{display:flex;gap:.6rem;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:.55rem .7rem;margin:0;color:var(--ink);font-weight:400;cursor:pointer}
.recht input{margin-top:.2rem}
/* Countdown */
.countdown{display:flex;gap:1rem;align-items:center;background:var(--blue-l);border-radius:10px;padding:.8rem 1rem;margin:.8rem 0}
.countdown .cd-zahl{font-size:2.6rem;font-weight:800;color:var(--blue);line-height:1;min-width:3.2rem;text-align:center}
.countdown.ok{background:#e6f5ec}.countdown.ok .cd-zahl{color:var(--ok)}
/* Gutscheine */
.gs-betraege{display:flex;flex-wrap:wrap;gap:.5rem}
.gs-b{margin:0;cursor:pointer}.gs-b input{position:absolute;opacity:0}
.gs-b span{display:inline-block;border:2px solid var(--blue);color:var(--blue);border-radius:8px;padding:.6rem 1.1rem;font-weight:700;font-size:1.05rem}
.gs-b input:checked+span{background:var(--blue);color:#fff}
.gs-b input:focus-visible+span{outline:3px solid var(--gold)}
body.gs-druck{background:#fff}
.gs-karte{width:190mm;min-height:130mm;margin:0 auto;border:3px solid var(--blue);border-radius:14px;padding:12mm 14mm;text-align:center;position:relative;background:linear-gradient(180deg,#fff 0%,#eef5fc 100%)}
.gs-logo{height:24mm}
.gs-titel{font-size:30pt;font-weight:800;color:var(--blue);letter-spacing:.06em;margin-top:4mm;text-transform:uppercase}
.gs-sub{font-size:13pt;color:var(--mute)}
.gs-fuer{font-size:16pt;margin-top:5mm}
.gs-wert{font-size:38pt;font-weight:800;color:var(--red);margin:4mm 0}
.gs-widmung{font-style:italic;font-size:13pt;margin:2mm 10mm 4mm}
.gs-code{display:inline-block;border:2px dashed var(--blue);border-radius:8px;padding:2mm 6mm;font-size:11pt}
.gs-code b{font-size:16pt;letter-spacing:.08em}
.gs-fuss{font-size:8.5pt;color:var(--mute);margin-top:6mm}
@media print{@page{size:A4 landscape;margin:10mm}.gs-karte{border-color:#005ca9;-webkit-print-color-adjust:exact;print-color-adjust:exact}}
/* Tischplan / Geburtstage */
.tischgruppe{border:1px solid var(--line);border-radius:8px;padding:.6rem .8rem;margin-bottom:.6rem}

/* ---------- Deckplan (SVG, Online-Buchung, Einbettung, CRM) ---------- */
.dp{margin-top:.6rem}
.dp-legende{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;font-size:.85rem;margin:.2rem 0 .8rem}
.dp-legende .sw{width:16px;height:16px}
.sw-dash{background:#fff;border:2px dashed #8a94a1;box-sizing:border-box}
.sw-frei{background:#fff;border:2px solid #8a94a1;box-sizing:border-box}
.dp-deck{margin:0 0 1.4rem}
.dp-deck h3{margin:.4rem 0 .3rem;font-size:1.05rem;color:var(--blue-d)}
.dp-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}
.dp-svg{display:block;width:100%;min-width:760px;height:auto}
.dp-intern .dp-svg{min-width:900px}
.dp-kompakt .dp-svg{min-width:700px}
.dp-hull{fill:#fbfcfe;stroke:#9aa7b8;stroke-width:2}
.dp-area{fill:#eef1f5;stroke:#d5dce5}
.dp-area-t{fill:#5d6778;font-size:13px;text-anchor:middle;dominant-baseline:central;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
.dp-nr{font-weight:700;text-anchor:middle;dominant-baseline:central;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;pointer-events:none}
a.dp-cab{cursor:pointer}
a.dp-cab rect:first-of-type{transition:filter .12s}
a.dp-cab:hover rect:first-of-type{filter:brightness(.88)}
a.dp-cab:focus{outline:none}
a.dp-cab:focus-visible rect:first-of-type{stroke:#111;stroke-width:3}
a.dp-cab.gewaehlt rect:first-of-type{stroke:#5c0f31;stroke-width:3}
.dp-cab.belegt{cursor:not-allowed}
.dp-kats{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.7rem 1.2rem;margin:.6rem 0 0;font-size:.92rem}
.dp-kat{display:flex;gap:.6rem;align-items:flex-start}
.dp-kat>.sw{flex:0 0 18px;width:18px;height:18px;margin-top:.15rem}
.dp-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem}
.dp-chip{display:inline-flex;align-items:center;justify-content:center;min-width:48px;min-height:40px;padding:0 .5rem;border-radius:6px;border:2px solid var(--c,#5b8fd6);color:var(--ink);font-weight:700;text-decoration:none;background:#fff}
.dp-chip:hover,.dp-chip:focus-visible{background:var(--c,#5b8fd6);color:#fff;outline:none}
.dp-wer{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1rem}
.dp-wer label{margin:0;font-size:1rem;color:var(--ink)}
.dp-wer select{width:auto;min-height:44px;font-size:1rem}
.auswahl{border-left:5px solid #a8235c}
body.embed{background:#fff}
body.embed main{max-width:none;padding:.6rem .8rem 1rem}
@media(max-width:600px){.dp-kats{grid-template-columns:1fr}.dp-legende{font-size:.8rem}}
@media print{.dp-scroll{overflow:visible}.dp-svg{min-width:0}}
