*{box-sizing:border-box}html{margin:0;min-height:100%;background:#eef1f4}body{margin:0;min-height:100vh;font-family:Arial,sans-serif;color:#222;background:transparent;position:relative;isolation:isolate}body::before{content:'';position:fixed;inset:0;z-index:-1;background-image:url('../assets/background.jpg');background-position:center center;background-repeat:no-repeat;background-size:cover}body::after{display:none}nav{background:rgba(18,25,32,.94);padding:1rem;display:flex;justify-content:center;gap:2.2rem;flex-wrap:wrap}nav a{color:#fff;text-decoration:none;font-size:1.05rem}nav a:hover,nav a.active{text-decoration:underline}.wrap{max-width:1250px;margin:2rem auto;padding:0 1rem}.panel{background:rgba(255,255,255,.91);border-radius:10px;box-shadow:0 3px 18px rgba(0,0,0,.12);padding:1.4rem;margin-bottom:1.2rem}h1,h2{margin-top:0}table{width:100%;border-collapse:collapse}th,td{padding:.7rem;border-bottom:1px solid #cbd2d8;text-align:left;vertical-align:top}th{background:#f2f4f6}.actions{display:flex;gap:.45rem;flex-wrap:wrap}.btn,button,input[type=submit]{display:inline-block;background:#5f6972;color:#fff;border:0;border-radius:5px;padding:.55rem .85rem;text-decoration:none;cursor:pointer;font-size:.95rem;transition:background-color .16s ease,transform .16s ease}.btn:hover,button:hover,input[type=submit]:hover{background:#4d565e}.btn:focus-visible,button:focus-visible,input[type=submit]:focus-visible{outline:2px solid #fff;outline-offset:2px;box-shadow:0 0 0 4px rgba(34,39,43,.45)}.btn.secondary{background:#5f6972}.btn.secondary:hover{background:#4d565e}.btn.danger{background:#a33232}.btn.light{background:#e4e8ec;color:#222}.badge{display:inline-block;padding:.28rem .55rem;border-radius:4px;font-weight:bold}.ok{background:#d7f0dc;color:#145c22}.expired{background:#f5d6d6;color:#812121}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem}.field label{display:block;font-weight:bold;margin-bottom:.3rem}.field input,.field select,.field textarea{width:100%;padding:.6rem;border:1px solid #aeb7bf;border-radius:5px}.notice{padding:.8rem;border-radius:5px;background:#e8f1f8;margin-bottom:1rem}.error{background:#f7dddd;color:#7c1717}.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}.photo{background:#fff;border:1px solid #ccd3d9;border-radius:7px;padding:.6rem}.photo img{width:100%;height:160px;object-fit:cover;border-radius:4px}.small{font-size:.88rem;color:#59636c}.login{max-width:420px;margin:8vh auto}.qr{max-width:220px;background:#fff;padding:.5rem;border:1px solid #bbb}.nowrap{white-space:nowrap}@media(max-width:800px){.table-scroll{overflow-x:auto}nav{justify-content:flex-start;gap:1rem}th,td{padding:.55rem}.wrap{margin:1rem auto}}.section-separator{border:0;border-top:1px solid #cbd2d8;margin:1.6rem 0}.background-settings{display:grid;grid-template-columns:minmax(260px,1fr) minmax(260px,1fr);gap:1.5rem;align-items:start}.background-preview{margin-top:.5rem;border:1px solid #aeb7bf;border-radius:7px;overflow:hidden;background:#eef1f4;max-width:480px}.background-preview img{display:block;width:100%;height:220px;object-fit:cover}@media(max-width:700px){.background-settings{grid-template-columns:1fr}.background-preview img{height:180px}}
.card-sheet{display:grid;grid-template-columns:repeat(2,85mm);gap:8mm;justify-content:center;padding:10mm}.business-card{width:85mm;height:55mm;background:#fff;border:1px solid #777;padding:6mm;display:grid;grid-template-columns:1fr 35mm;gap:4mm;align-items:center;break-inside:avoid;box-shadow:0 1px 5px rgba(0,0,0,.18)}.business-card h2{margin:0 0 3mm;font-size:18pt}.business-card p{margin:0 0 2mm;font-size:9pt}.business-card img{width:34mm;height:34mm}.card-code{font-size:14pt!important;font-weight:bold;letter-spacing:.7px}.card-number{font-size:7.5pt!important;color:#666}.print-toolbar{text-align:center;padding:1rem}.print-page{background:#e5e5e5}.print-page::before,.print-page::after{display:none}@media print{.print-toolbar{display:none}.print-page{background:#fff}.card-sheet{padding:0;gap:6mm}.business-card{box-shadow:none}}
@media(max-width:800px){.card-sheet{grid-template-columns:1fr;padding:1rem}.business-card{width:100%;max-width:85mm;margin:auto}}
.photo-delete-form{margin-top:.35rem;display:flex;justify-content:flex-end}
.photo-delete-button{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:0!important;border-radius:0;background:transparent!important;color:#6c757d;box-shadow:none!important;opacity:.72}.photo-delete-button:hover,.photo-delete-button:focus{background:transparent!important;color:#a33232;opacity:1;outline:none}.photo-delete-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.photo-delete-button svg{width:16px;height:16px;fill:currentColor;pointer-events:none}
.photo-title-input.saving{opacity:.65}
.photo-title-input.save-ok{border-color:#2f8a45;box-shadow:0 0 0 2px rgba(47,138,69,.15)}
.photo-title-input.save-error{border-color:#b83232;box-shadow:0 0 0 2px rgba(184,50,50,.15)}



/* Kompakte öffentliche Startseite */
body.home-page{display:flex;flex-direction:column;color:#fff;background:transparent}
body.home-page::after{display:block;content:'';position:fixed;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(10,12,14,.38) 0%,rgba(10,12,14,.28) 42%,rgba(10,12,14,.62) 72%,rgba(10,12,14,.78) 100%)}
.home-layout{width:min(1180px,100%);min-height:calc(100vh - 54px);margin:0 auto;padding:clamp(1.5rem,5vw,4.5rem);display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,330px);gap:clamp(2rem,6vw,6rem);align-items:center}
.home-intro{max-width:660px;text-shadow:0 2px 18px rgba(0,0,0,.5)}
.home-kicker{margin:0 0 .75rem;text-transform:uppercase;letter-spacing:.16em;font-size:.78rem;font-weight:bold;color:rgba(255,255,255,.76)}
.home-intro h1{margin:0 0 1rem;font-size:clamp(2.2rem,5vw,4.8rem);line-height:1.02;font-weight:600;letter-spacing:-.035em}
.home-description{max-width:610px;margin:0;font-size:clamp(1rem,1.4vw,1.18rem);line-height:1.65;color:rgba(255,255,255,.88)}
.home-actions{width:100%;display:grid;gap:.65rem;justify-self:end}
.home-card{width:100%;padding:.85rem .95rem;border:1px solid rgba(255,255,255,.18);border-radius:9px;background:rgba(247,248,249,.87);box-shadow:0 8px 28px rgba(0,0,0,.2);backdrop-filter:blur(8px);color:#24282c}
.home-card h2{margin:0 0 .25rem;font-size:1rem;line-height:1.25}
.home-card>p{margin:0 0 .65rem;color:#596168;font-size:.84rem;line-height:1.4}
.home-card form{display:grid;gap:.55rem}
.home-card .field label{margin-bottom:.22rem;font-size:.79rem}
.home-card .field input{padding:.46rem .55rem;background:rgba(255,255,255,.94);font-size:.88rem}
.home-card button,.home-card .btn{justify-self:start;padding:.44rem .72rem;font-size:.86rem}
.home-login-grid{display:grid;grid-template-columns:1fr;gap:.55rem}
.home-notice{margin:0 0 .65rem;padding:.55rem .65rem;font-size:.82rem}
.home-footer{min-height:54px;display:flex;align-items:center;justify-content:center;gap:1.25rem;padding:.75rem 1rem;font-size:.78rem;background:rgba(10,12,14,.48)}
.home-footer a{color:rgba(255,255,255,.76);text-decoration:none}
.home-footer a:hover,.home-footer a:focus{text-decoration:underline;color:#fff}
@media(max-width:760px){body.home-page::after{background:linear-gradient(180deg,rgba(10,12,14,.34) 0%,rgba(10,12,14,.58) 48%,rgba(10,12,14,.78) 100%)}.home-layout{min-height:auto;grid-template-columns:1fr;gap:1.6rem;padding:2rem 1rem 1.4rem;align-items:start}.home-intro{max-width:560px;margin-top:1.5rem}.home-intro h1{font-size:clamp(2rem,11vw,3.3rem)}.home-description{font-size:.98rem;line-height:1.55}.home-actions{max-width:360px;justify-self:center}.home-card{padding:.82rem .9rem}.home-footer{margin-top:auto;background:rgba(10,12,14,.66)}}
@media(max-width:420px){.home-layout{padding-left:.75rem;padding-right:.75rem}.home-intro{margin-top:.5rem}.home-card{border-radius:8px}.home-footer{min-height:48px}}

/* Editor und Ausgabe der doppelseitigen Zugangskarten */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.access-card-editor{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1.25rem;align-items:start}.access-card-main{min-width:0}.access-card-toolbar{display:flex;gap:.55rem;flex-wrap:wrap;margin-bottom:.8rem}.access-card-toolbar .btn{font-family:inherit}.access-card-stage{padding:1rem;background:#dce1e5;border:1px solid #b5bec5;border-radius:8px;overflow:auto}.access-card-stage canvas{display:block;width:100%;height:auto;aspect-ratio:85/55;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.22);touch-action:none;cursor:default}.access-card-properties{background:#f0f2f4;border:1px solid #c8cfd5;border-radius:8px;padding:1rem}.access-card-properties h2{font-size:1.05rem;margin-bottom:1rem}.access-card-properties .field{margin-bottom:.8rem}.access-card-properties input[type=color]{height:42px;padding:.2rem}.access-card-properties input[type=range]{padding:0}.access-card-property-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.access-card-selection-hint{padding:.8rem;background:#fff;border:1px dashed #b5bec5;border-radius:6px;margin-top:.8rem}.access-card-layer-buttons{display:flex;gap:.45rem;flex-wrap:wrap;margin-top:.85rem}.access-card-layer-buttons button{padding:.45rem .65rem;font-size:.86rem}.access-card-save-form{margin-top:1rem;padding-top:1rem;border-top:1px solid #cbd2d8}.access-card-downloads{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.access-card-downloads form{display:flex;flex-direction:column;align-items:flex-start;padding:1rem;border:1px solid #cbd2d8;border-radius:7px;background:rgba(244,246,247,.78)}.access-card-downloads form button{min-height:52px}.access-card-downloads form .small{margin-bottom:0}.access-card-downloads button:disabled{opacity:.5;cursor:not-allowed}.access-card-downloads button:disabled:hover{background:#5f6972}@media(max-width:950px){.access-card-editor{grid-template-columns:1fr}.access-card-properties{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1rem}.access-card-properties h2,.access-card-properties>.field,.access-card-properties>#cardNoSelection,.access-card-properties>#cardCommonProperties,.access-card-properties>#cardTextProperties,.access-card-properties>#cardImageProperties{grid-column:1/-1}.access-card-downloads{grid-template-columns:1fr}}@media(max-width:560px){.access-card-stage{padding:.45rem}.access-card-properties{display:block}.access-card-property-grid{grid-template-columns:1fr}.access-card-position-grid{grid-template-columns:1fr 1fr}.access-card-toolbar button,.access-card-toolbar .btn{width:100%;text-align:center}.access-card-downloads form button{width:100%}}


/* Öffentliche Seiten für Impressum und Datenschutz */
body.legal-page{display:flex;flex-direction:column;min-height:100vh;color:#24282c}
body.legal-page::after{display:block;content:'';position:fixed;inset:0;z-index:-1;background:rgba(10,12,14,.48)}
.legal-layout{width:min(880px,100%);margin:0 auto;padding:clamp(1rem,4vw,3rem)}
.legal-panel{background:#fff;border:1px solid rgba(24,30,36,.16);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.28);padding:clamp(1.2rem,4vw,2.6rem);line-height:1.65}
.legal-panel h1{margin:.25rem 0 .45rem;font-size:clamp(2rem,5vw,3rem);line-height:1.1}
.legal-panel h2{margin:0 0 .3rem;font-size:1.05rem;line-height:1.35}
.legal-panel section{margin-top:1.65rem}
.legal-panel p{margin:.35rem 0 0}
.legal-panel address{font-style:normal}
.legal-panel a{color:#415f73;text-underline-offset:2px}
.legal-panel a:hover,.legal-panel a:focus{color:#253d4c}
.legal-kicker{margin:1.25rem 0 0!important;text-transform:uppercase;letter-spacing:.14em;font-size:.75rem;font-weight:bold;color:#65717a}
.legal-intro{color:#4f5961}
.legal-back-link{display:inline-block;text-decoration:none;font-size:.9rem}
.legal-date{margin-top:2rem!important;text-align:right;color:#59636c}
.legal-footer{margin-top:auto;min-height:54px;display:flex;align-items:center;justify-content:center;gap:1.25rem;padding:.75rem 1rem;font-size:.78rem;background:rgba(10,12,14,.62)}
.legal-footer a{color:rgba(255,255,255,.82);text-decoration:none}
.legal-footer a:hover,.legal-footer a:focus{text-decoration:underline;color:#fff}
@media(max-width:560px){.legal-layout{padding:.75rem}.legal-panel{border-radius:8px}.legal-date{text-align:left}}

/* Öffentliche Galerie und Galerieverwaltung */
.home-gallery-link{display:inline-block;margin-top:1.4rem;padding:.62rem .9rem;border:1px solid rgba(255,255,255,.58);border-radius:5px;color:#fff;background:rgba(18,25,32,.32);text-decoration:none;font-size:.92rem;text-shadow:none;transition:background-color .16s ease,border-color .16s ease}.home-gallery-link:hover,.home-gallery-link:focus{background:rgba(18,25,32,.65);border-color:#fff}.gallery-page{display:flex;flex-direction:column;min-height:100vh;color:#222}.gallery-page::after{display:block;content:'';position:fixed;inset:0;z-index:-1;background:rgba(238,241,244,.93)}.gallery-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem clamp(1rem,4vw,3rem);background:rgba(18,25,32,.95)}.gallery-header a{color:#fff;text-decoration:none}.gallery-brand{font-size:1.1rem;font-weight:bold}.gallery-home-link{font-size:.9rem;color:rgba(255,255,255,.8)!important}.gallery-layout{width:min(1240px,100%);margin:0 auto;padding:clamp(1.2rem,4vw,3rem)}.gallery-intro{margin-bottom:1.6rem}.gallery-intro-panel{padding:clamp(1rem,2.5vw,1.5rem);border:1px solid #c6cdd3;border-radius:8px;background:rgba(224,228,232,.96);box-shadow:0 3px 14px rgba(0,0,0,.08)}.gallery-kicker{margin:0 0 .45rem;text-transform:uppercase;letter-spacing:.14em;font-size:.75rem;font-weight:bold;color:#65717a}.gallery-intro h1{margin:0 0 .65rem;font-size:clamp(2rem,5vw,3.8rem);line-height:1.08}.gallery-intro p{max-width:760px;margin:0;color:#59636c;line-height:1.6}.gallery-back{display:inline-block;margin-bottom:1rem;color:#415f73;text-decoration:none}.gallery-category-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem}.gallery-category-card{display:flex;min-height:320px;flex-direction:column;overflow:hidden;border:1px solid #c9d0d6;border-radius:9px;background:#fff;color:#222;text-decoration:none;box-shadow:0 4px 16px rgba(0,0,0,.08);transition:transform .16s ease,box-shadow .16s ease}.gallery-category-card:hover,.gallery-category-card:focus{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.14)}.gallery-category-card img{display:block;width:100%;height:220px;object-fit:cover;background:#dce1e5}.gallery-category-content{display:flex;flex:1;flex-direction:column;padding:1rem}.gallery-category-content strong{font-size:1.15rem}.gallery-category-content span{margin-top:.45rem;color:#59636c;line-height:1.45}.gallery-category-content small{margin-top:auto;padding-top:.8rem;color:#6b747c}.gallery-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.gallery-photo-card{display:block;overflow:hidden;border:1px solid #c9d0d6;border-radius:8px;background:#fff;color:#222;text-decoration:none;box-shadow:0 3px 12px rgba(0,0,0,.08);transition:transform .16s ease,box-shadow .16s ease}.gallery-photo-card:hover,.gallery-photo-card:focus{transform:translateY(-2px);box-shadow:0 7px 20px rgba(0,0,0,.14)}.gallery-photo-card img{display:block;width:100%;height:210px;object-fit:cover;background:#dce1e5}.gallery-photo-card>span{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;padding:.72rem .8rem}.gallery-photo-card strong{font-size:.95rem;font-weight:400}.gallery-photo-card small{white-space:nowrap;color:#707981}.gallery-empty{padding:2rem;border:1px dashed #aeb7bf;border-radius:8px;background:rgba(255,255,255,.72);text-align:center}.gallery-footer{margin-top:auto;display:flex;justify-content:center;gap:1.25rem;padding:1rem;background:rgba(18,25,32,.94);font-size:.8rem}.gallery-footer a{color:rgba(255,255,255,.8);text-decoration:none}.gallery-admin-heading,.gallery-image-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.gallery-admin-heading h1,.gallery-image-section-heading h2{margin-bottom:.35rem}.gallery-description-field{margin-top:1rem}.gallery-checkbox-field{display:flex;align-items:end;padding-bottom:.65rem}.gallery-checkbox-field label,.gallery-inline-check{display:flex!important;align-items:center;gap:.45rem;font-weight:normal!important}.gallery-checkbox-field input,.gallery-inline-check input{width:auto!important}.gallery-category-admin-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:1rem}.gallery-category-admin-card{padding:1rem;border:1px solid #cbd2d8;border-radius:7px;background:rgba(247,248,249,.76)}.gallery-category-admin-card.selected{border-color:#657985;box-shadow:0 0 0 2px rgba(65,95,115,.18)}.gallery-category-admin-card .field+.field{margin-top:.75rem}.gallery-category-admin-meta{display:grid;grid-template-columns:minmax(100px,140px) 1fr auto;gap:.8rem;align-items:end;margin:.8rem 0}.gallery-upload-actions{display:flex;align-items:center;gap:1rem;margin-top:.8rem}.gallery-upload-actions+progress{width:100%;margin-top:.8rem}.gallery-admin-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;margin-top:1.4rem}.gallery-admin-photo-card{padding:.8rem;border:1px solid #cbd2d8;border-radius:7px;background:#fff}.gallery-admin-photo-card>img{display:block;width:100%;height:230px;margin-bottom:.8rem;border-radius:5px;object-fit:cover;background:#dce1e5}.gallery-admin-photo-card .field{margin-bottom:.7rem}.gallery-admin-photo-meta{display:grid;grid-template-columns:1fr 1fr 100px;gap:.6rem}.gallery-admin-photo-card>.gallery-inline-check{margin:.35rem 0 .8rem}.gallery-no-images{margin:1.25rem 0 0;padding:1rem;border:1px dashed #b6bec5;border-radius:6px;text-align:center}.gallery-category-intro h1{font-size:clamp(2rem,5vw,3.3rem)}@media(max-width:760px){.gallery-header{padding:.85rem 1rem}.gallery-layout{padding:1rem}.gallery-category-grid{grid-template-columns:1fr}.gallery-category-card{min-height:0}.gallery-category-card img{height:210px}.gallery-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.gallery-photo-card img{height:42vw;max-height:220px}.gallery-photo-card>span{display:block}.gallery-photo-card small{display:block;margin-top:.25rem}.gallery-admin-heading,.gallery-image-section-heading{display:block}.gallery-admin-heading .btn,.gallery-image-section-heading .btn{margin-top:.7rem}.gallery-category-admin-meta{grid-template-columns:1fr 1fr}.gallery-category-admin-meta .small{grid-column:1/-1}.gallery-admin-photo-meta{grid-template-columns:1fr 1fr}.gallery-admin-photo-meta .field:last-child{grid-column:1/-1}.gallery-upload-actions{align-items:flex-start;flex-direction:column}}@media(max-width:430px){.gallery-photo-grid{grid-template-columns:1fr}.gallery-photo-card img{height:68vw}.gallery-category-admin-list,.gallery-admin-photo-grid{grid-template-columns:1fr}.gallery-category-admin-meta,.gallery-admin-photo-meta{grid-template-columns:1fr}}
