/* (c) schober24.com Deutschland | Schober, Thorsten */
/* Shared customer-facing shell. Tenant identity always comes from the verified context. */
body.portal-shared{--portal-ink:#283341;--portal-muted:#647184;--portal-line:#dde2e8;--portal-bg:#f3f4f6;--portal-radius:12px;margin:0;background:var(--portal-bg);color:var(--portal-ink);font:15px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}
.portal-shared *{box-sizing:border-box}.portal-shared [hidden]{display:none!important}
body.portal-shared main,body.portal-shared main.portal-content,body.portal-shared main.case-reader{width:100%;max-width:none;min-width:0;margin:0 auto;padding:28px 24px 48px;min-height:0}
.portal-shared .public-brand{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 0 28px;margin:0;border:0;background:transparent;position:static;height:auto;width:auto;color:var(--portal-ink)}
.portal-shared>.public-brand{max-width:none;margin:0 auto;padding:28px 24px 0}.portal-shared .public-brand-identity{display:flex;align-items:center;gap:16px;min-width:0}.portal-shared .public-brand img{width:88px;height:56px;object-fit:contain;display:block;flex:none;margin:0}.portal-shared .public-brand strong{font-size:16px;display:block;line-height:1.35}.portal-shared .public-brand small{display:block;font-size:12px;color:var(--portal-muted);margin:3px 0 0}.portal-shared .public-brand>a{color:var(--portal-muted);text-decoration:none;padding:10px 0;min-height:44px;font-size:13px}.public-brand-mark{display:grid;place-items:center;flex:none;width:52px;height:52px;border-radius:12px;background:#283341;color:white;font-size:25px;font-weight:700}
.portal-shared h1{font-size:28px;line-height:1.25;margin:0 0 16px;overflow-wrap:anywhere}.portal-shared h2{font-size:19px;line-height:1.4}.portal-shared .eyebrow{font-size:11px;letter-spacing:.08em;color:var(--portal-muted);text-transform:uppercase;font-weight:600;margin:0 0 8px}
.portal-shared .public-card,.portal-shared main>article,.portal-shared .booking-card,.portal-shared .appointment-card,.portal-shared .portal-surface,.portal-shared .card{border:1px solid var(--portal-line);border-radius:var(--portal-radius);background:#fff;padding:24px;box-shadow:0 2px 5px #18253604;min-width:0}
.portal-shared :is(button,.button,.booking-button,.public-button){min-height:44px;padding:11px 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #283341;border-radius:7px;background:#283341;color:#fff;font:600 14px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;text-decoration:none;cursor:pointer;text-align:center;white-space:normal}
.portal-shared :is(button,.button,.booking-button,.public-button).secondary{color:#37475c;border-color:var(--portal-line);background:white}.portal-shared button:disabled{opacity:.5;cursor:not-allowed}.portal-shared :is(a,button,input,select,textarea):focus-visible{outline:3px solid #6884a9;outline-offset:3px}
.portal-shared :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=hidden]){max-width:100%;min-width:0;min-height:44px;padding:10px 12px;border:1px solid #cbd3de;border-radius:7px;background:white;color:var(--portal-ink);font:inherit}.portal-shared textarea{width:100%}.portal-shared input[type=checkbox],.portal-shared input[type=radio]{width:18px;height:18px;flex:none;accent-color:#283341;vertical-align:middle}.portal-shared label{font-size:13px;font-weight:600}.portal-shared .public-actions{display:flex;flex-wrap:wrap;gap:10px}
.portal-shared .public-contact{display:block;max-width:none;margin:28px auto 0;padding:24px 0 0;border-top:1px solid var(--portal-line);color:var(--portal-muted);font-size:13px;background:transparent;position:static}.portal-shared>.public-contact{margin:0 auto 32px;width:calc(100% - 48px)}.portal-shared .public-contact h2{font-size:17px;color:var(--portal-ink);margin:0 0 8px}.portal-shared .public-contact p{margin:8px 0 14px}.portal-shared .public-contact .public-address,.portal-shared .public-note{font-size:12px;margin-top:18px;overflow-wrap:anywhere}
.portal-shared .portal-navigation{position:static;display:flex;flex-direction:row;flex-wrap:nowrap;max-width:none;width:calc(100% - 48px);margin:22px auto 0;padding:0 0 8px;gap:4px;overflow-x:auto;background:transparent;border-bottom:1px solid var(--portal-line);color:var(--portal-ink)}.portal-shared .portal-navigation a{flex:none;white-space:nowrap;margin:0;padding:11px 14px;min-height:44px;color:#526277;text-decoration:none;border-radius:7px;font-size:13px;font-weight:600}.portal-shared .portal-navigation a[aria-current=page]{background:#283341;color:white}.portal-shared .portal-navigation a:last-child{margin-left:auto}.portal-shared .portal-content>header{display:block;padding:0;margin:0 0 24px}
.portal-shared .portal-confirm{max-width:none;background:transparent;border:0;border-radius:0}.portal-shared .public-login label{display:grid;gap:6px;margin:18px 0}.portal-shared .public-login{max-width:480px;margin:0 auto}.portal-shared .public-login button{width:100%}.portal-shared .table-wrap,.portal-shared .portal-table-scroll{overflow-x:auto;max-width:100%}.portal-shared table{border-collapse:collapse;width:100%;text-align:left}.portal-shared th{background:#f5f6f7;color:#455367}.portal-shared td,.portal-shared th{border-bottom:1px solid var(--portal-line);padding:12px 10px}.portal-shared .booking-view-tabs button{min-height:44px}.portal-shared .booking-slot{min-height:40px;padding:9px;background:#edf4f9;color:#28516b;border-color:#c5d8e6}.portal-shared .booking-slot.is-selected{background:#283341;color:#fff}.portal-shared .booking-step.is-active{color:#283341}
@media(max-width:700px){body.portal-shared main,body.portal-shared main.portal-content,body.portal-shared main.case-reader{padding:20px 16px 32px}.portal-shared>.public-brand{padding:20px 16px 0}.portal-shared .public-brand{gap:12px;padding-bottom:22px}.portal-shared .public-brand-identity{gap:10px}.portal-shared .public-brand img{width:65px;height:44px}.portal-shared .public-brand strong{font-size:14px}.portal-shared .public-brand small{font-size:11px}.portal-shared h1{font-size:24px}.portal-shared .public-card,.portal-shared main>article,.portal-shared .booking-card,.portal-shared .appointment-card,.portal-shared .portal-surface,.portal-shared .card{padding:18px}.portal-shared .portal-navigation{width:calc(100% - 32px);margin-top:18px}.portal-shared>.public-contact{width:calc(100% - 32px)}.portal-shared :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=hidden]){font-size:16px}.portal-shared .public-actions>*{flex:1}.portal-shared .public-contact .public-button{font-size:13px}}
.portal-shared .offer-dialog{width:calc(100% - 32px);max-width:640px;max-height:calc(100dvh - 40px);overflow:auto;border:1px solid var(--portal-line);border-radius:12px;background:#fff;color:var(--portal-ink);padding:24px;box-shadow:0 20px 80px #0003}.portal-shared .offer-dialog::backdrop{background:#17233488}.portal-shared .offer-dialog header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0;margin:0 0 16px}.portal-shared .offer-dialog h2{margin:0}.portal-shared .offer-dialog label{display:block;margin:16px 0 6px}.portal-shared .offer-dialog label input:not([type=checkbox]){display:block;width:100%;margin-top:6px}.portal-shared .offer-dialog .offer-review{display:flex;align-items:flex-start;gap:10px;font-weight:400}.portal-shared .offer-review input{margin:3px 0 0}.portal-shared .offer-dialog canvas{width:100%;height:170px;touch-action:none;border:1px solid #cbd3de;border-radius:8px;background:#fafbfc}.portal-shared .offer-dialog [role=alert]{color:#a01e35}.portal-shared .offer-dialog .public-actions{margin-top:20px}.offer-signature{display:block;width:100%;max-width:450px;height:auto;max-height:120px;border:1px solid #dde2e8;border-radius:8px;background:white;color:#1e2937}.portal-shared .offer-dialog section{margin:0;border:0;padding:0}
.portal-shared a.button:not(.secondary),.portal-shared .button:not(.secondary),.portal-shared button:not(.secondary){color:#fff;background:#262c36}.portal-shared .button.secondary,.portal-shared button.secondary{color:#262c36;background:#fff;border:1px solid #cbd0d8}.public-dialog{border:1px solid #d9dde4;border-radius:12px;padding:24px;width:min(680px,calc(100vw - 32px));max-height:calc(100dvh - 48px);overflow:auto;color:#263242;background:white}.public-dialog::backdrop{background:#161b26a8}.public-dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.public-dialog label{display:block;margin:16px 0}.public-dialog input,.public-dialog textarea{display:block;width:100%;box-sizing:border-box}.public-dialog input[type=file]{min-height:44px}.portal-shared .timeline .button{margin-top:4px}.portal-shared .invoice-table td,.portal-shared .invoice-table th{padding:9px 10px}.portal-shared .invoice-table p{margin:4px 0 0;font-size:12px}.portal-shared .invoice-table .number{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.portal-shared .invoice-table .date-heading td{background:#eee;font-weight:600;padding:6px 10px}.portal-invoice-totals{margin:18px 0 0 auto;width:min(360px,100%)}.portal-invoice-totals>div{display:flex;justify-content:space-between;gap:24px;padding:5px 0}.portal-invoice-totals>div:last-child{font-weight:700;border-top:1px solid #ccc}.portal-overdue{background:#fff3f3}.portal-shared .portal-status.status-overdue{color:#a00924;background:#fde5e8;font-weight:700}.portal-shared .invoice-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}

.portal-shared [data-sort-table] th button{color:#526277;background:transparent;border:0;padding:4px 0;min-height:44px;text-align:left;justify-content:flex-start}.portal-payment-grid{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap}.portal-bank-details{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px 24px;flex:1;min-width:240px}.portal-bank-details dt{color:var(--portal-muted)}.portal-bank-details dd{margin:0;overflow-wrap:anywhere;font-weight:600}.portal-payment-qr{margin:12px 0;max-width:220px;text-align:center;font-size:12px}.portal-payment-qr svg{width:200px;max-width:100%;display:block}.portal-shared .portal-overdue td:first-child{border-left:3px solid #b31432}.portal-shared .invoice-table{font-size:13px;line-height:1.4}.portal-shared .invoice-table th:first-child{width:40%}@media(max-width:600px){.portal-bank-details{grid-template-columns:1fr;gap:4px}.portal-bank-details dd{margin-bottom:12px}}

/* Staff context follows the same page edges as identity, navigation and content. */
.portal-shared .portal-staff-notice{display:flex;align-items:center;flex-wrap:wrap;gap:8px 24px;margin:20px 24px 0;padding:12px 16px;background:#fff;border:1px solid var(--portal-line);border-left:3px solid #596d89;border-radius:8px;font-size:13px;overflow-wrap:anywhere}
.portal-shared .portal-staff-notice a{margin-left:auto;color:var(--portal-ink);min-height:44px;display:inline-flex;align-items:center}
.portal-shared .public-actions{margin-top:16px}
@media(max-width:700px){.portal-shared .portal-staff-notice{margin:16px 16px 0}.portal-shared .portal-staff-notice a{margin-left:0}}

.public-brand a.public-brand-identity{color:inherit;text-decoration:none}.public-brand a.public-brand-identity:focus-visible{outline:2px solid currentColor;outline-offset:6px}

.portal-shared dialog>header{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:16px;text-align:left}.portal-shared dialog>header h2{margin:0;min-width:0}.portal-shared dialog>header>button{flex:0 0 auto;min-width:44px}

/* The appointment selection and its single committing action remain together. */
.booking-calendar-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.booking-selected-card{padding:16px 18px;border:1px solid #9fc9bb;border-left:4px solid #187257;border-radius:8px;background:linear-gradient(110deg,#e7f5ef,#f6fbf9);color:#214b3c;box-shadow:0 2px 6px #193c3210;margin:16px 0}
.booking-selected-card>.booking-selection{margin:5px 0 0;padding:0;background:transparent;color:#173c2e;font-size:17px;font-weight:650}
.booking-public button.booking-confirm-button,.portal-shared button.booking-confirm-button{background:linear-gradient(#218366,#126248);border-color:#126248;color:white;box-shadow:0 2px 5px #12624825;min-height:44px}
.booking-public button.booking-confirm-button:hover:not(:disabled){background:#0d543c}
.booking-public .booking-slot[aria-pressed=true]{background:#167256!important;border-color:#0c513a!important;color:#fff!important;outline:2px solid #9bcebb;outline-offset:1px}
@media(max-width:700px){.booking-calendar-actions{width:100%;justify-content:space-between}.booking-calendar-actions>.booking-confirm-button{width:100%}.booking-section-head{flex-wrap:wrap}.booking-selected-card>.booking-selection{font-size:16px}}

.public-header-contact{text-align:right;min-width:0}.public-header-contact>span{font-size:13px;color:#526881}.public-header-contact .form-actions{margin-top:8px;justify-content:flex-end;flex-wrap:wrap}.portal-welcome{margin:20px 0 12px}.portal-welcome h2{font-size:22px;margin:0 0 4px}.portal-welcome p{margin:0;color:#526881}.public-app-footer{text-align:center;border-top:1px solid #d1dce9;padding:20px 12px;margin-top:28px;color:#68717b;font-size:12px}.public-app-footer p{margin:5px}.public-app-footer a{color:inherit;text-decoration:underline}@media(max-width:600px){.public-brand{align-items:flex-start;gap:16px;flex-wrap:wrap}.public-header-contact{text-align:left;width:100%}.public-header-contact .form-actions{justify-content:flex-start}.public-header-contact .public-button{min-height:44px}.portal-welcome h2{font-size:20px}}

/* Shared public footer: legal line followed by release line. */
.public-app-footer{padding:12px;margin-top:20px}.public-footer-main{display:flex;justify-content:center;align-items:baseline;flex-wrap:wrap;gap:4px 16px}.public-app-footer>small{display:block;margin-top:4px}.public-footer-main a{display:inline-flex;align-items:center;min-height:44px}
/* Document verification: bounded inputs beside contextual guidance. */
.public-verification-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:16px;align-items:start}.public-verification-grid>.public-card{min-width:0;margin:0}.public-verification-fields{display:grid;gap:16px}.public-verification-fields>label{display:grid;gap:6px;margin:0;min-width:0}.public-verification-fields input{width:100%;box-sizing:border-box}body.portal-shared .public-verification-fields>label input[name=document_id]:not([type=hidden]){max-width:38ch}body.portal-shared .public-verification-fields>label input[name=zip]:not([type=hidden]){max-width:14ch}.public-verification-help{display:grid;grid-template-columns:minmax(160px,0.8fr) minmax(0,1.2fr);gap:16px;align-items:start}.public-verification-help figure{margin:0}.public-verification-help img{display:block;width:100%;max-height:290px}.public-verification-help ol{margin:0;padding-left:20px}.public-verification-help li+li{margin-top:8px}@media(max-width:1100px){.public-verification-help{grid-template-columns:1fr}.public-verification-help img{max-height:230px}}@media(max-width:700px){.public-verification-grid{grid-template-columns:1fr}}

.portal-payment-workspace{display:grid;grid-template-columns:minmax(280px,0.85fr) minmax(0,1.6fr);gap:20px;align-items:start}.portal-payment-workspace>.ui-form-stack{min-width:0}.portal-payment-workspace .ui-payment-entry{max-width:760px}.portal-payment-page .portal-welcome{display:none}.portal-payment-page .portal-content>header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}.portal-payment-page .portal-content>header h1{margin:0}body.portal-shared.portal-payment-page main.portal-content{padding-top:16px;padding-bottom:16px}.portal-payment-page .ui-form-stack>.public-actions{margin-top:0}.portal-payment-page .ui-payment-entry>.form-actions{margin-top:0}.portal-payment-page .ui-payment-status:empty{display:none}@media(max-width:800px){.portal-payment-workspace{grid-template-columns:1fr}}

.ui-payment-entry-actions{align-items:end}.ui-payment-entry-actions>label{display:grid;gap:6px;flex:1;min-width:180px;margin:0 auto 0 0}.ui-payment-entry-actions>strong{align-self:end;min-height:44px;display:flex;align-items:center}
body.portal-shared .portal-content>header.ui-form-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}body.portal-shared .ui-payment-entry-actions{align-items:flex-end}

/* Payment identification shared by individual and combined payments. */
.portal-shared .payment-method-icon{display:inline-block;width:38px;height:24px;object-fit:contain;flex:0 0 38px;vertical-align:middle;margin-right:8px}
.portal-shared .payment-method-choices{display:flex;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:16px 0;min-width:0}
.portal-shared .payment-method-choices legend{font-weight:600;margin-bottom:8px}
.portal-shared .payment-method-choices label{display:flex;align-items:center;gap:8px;min-height:44px;box-sizing:border-box;margin:0;padding:8px 12px;border:1px solid var(--ui-border,#cbd5e1);border-radius:6px;background:#fff;cursor:pointer;max-width:100%}
.portal-shared .payment-method-choices label:has(:checked){outline:2px solid #35648b;background:#eaf2fa}
.portal-shared .payment-method-choices input[type=radio]{width:18px;min-width:18px;height:18px;min-height:0;margin:0;accent-color:#35648b}
.portal-shared .payment-method-choices .payment-method-icon{margin:0}
/* Expanded contractual usage stays inside its column; nested ledgers scroll independently. */
.portal-shared table[data-list-key="portal-subscriptions"]{table-layout:fixed;min-width:720px}
.portal-shared table[data-list-key="portal-subscriptions"]>thead>tr>th:nth-child(1){width:28%}
.portal-shared table[data-list-key="portal-subscriptions"]>thead>tr>th:nth-child(2){width:17%}
.portal-shared table[data-list-key="portal-subscriptions"]>thead>tr>th:nth-child(3){width:23%}
.portal-shared table[data-list-key="portal-subscriptions"]>thead>tr>th:nth-child(4){width:32%}
.portal-shared table[data-list-key="portal-subscriptions"] td{overflow-wrap:anywhere}
.portal-shared table[data-list-key="portal-subscriptions"] td .portal-surface{width:100%;min-width:0;padding:12px}
.portal-shared table[data-list-key="portal-subscriptions"] td .portal-table-scroll{width:100%;min-width:0}

/* Verified public issuer palettes reuse the common shell; no request-supplied colours. */
body.portal-shared[data-issuer-palette] :is(button,.button,.public-button):not(.secondary){background:var(--theme-primary,#283341);color:var(--theme-primary-text,#ffffff);border-color:var(--theme-primary,#283341)}
body.portal-shared[data-issuer-palette] .public-brand-mark{background:var(--theme-primary,#283341);color:var(--theme-primary-text,#ffffff)}
