/* Contain intrinsic grid widths and long user-entered content on public and portal pages. */
main,.page-content,.public-section,.panel,.history,.form,fieldset{min-width:0}
.section-intro>*,.cards>*,.two-column>*,.profile-grid>*,.help-grid>*,.contact-person>*{min-width:0}
.shooting-stats>*,.profile-address>*,.role-row>*,.member-search>*{min-width:0}
.section-intro{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}
.two-column,.profile-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}
.cards{grid-template-columns:repeat(3,minmax(0,1fr))}
.portal-cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
.contact-people{grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr))}
h1,h2,h3,p,dd,li,legend,.status,.button,.content-list a{overflow-wrap:break-word;word-break:normal}
img,video,iframe{max-width:100%}
.header-inner{gap:1rem}
.public-nav{min-width:0;flex-wrap:wrap;justify-content:flex-end;gap:.5rem .85rem}
.brand{flex-shrink:0}
footer>div{flex-wrap:wrap}
.page-heading,.profile-heading,.dashboard-welcome,.action-row,.upload-form{flex-wrap:wrap}
.button{max-width:100%;white-space:normal;text-align:center}
input:not([type=checkbox]):not([type=radio]),select,textarea{min-width:0;max-width:100%}
fieldset{margin-inline:0}
textarea{resize:vertical}
.entry-details dl{grid-template-columns:minmax(140px,210px) minmax(0,1fr)}
.entry-details dd{overflow-wrap:anywhere}
.cash-entry-form{grid-template-columns:140px minmax(0,1fr) 140px minmax(0,1fr);max-width:none}
.cash-entry-form .form-hint,.cash-entry-form>a{grid-column:2/-1;margin:0}
/* Each table owns its horizontal scrolling, so neighboring columns and the page stay fixed. */
.table-scroll{display:block;min-width:0;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;margin-block:.5rem;scrollbar-gutter:stable}
.table-scroll:focus-visible{outline:2px solid var(--green2);outline-offset:3px}
.table-scroll>table{display:table;width:100%;min-width:640px;margin:0;table-layout:auto}
th,td{overflow-wrap:break-word;word-break:normal;vertical-align:top}
.table-scroll td{max-width:30rem}
.table-scroll td:has(input),.table-scroll td:has(select){min-width:150px}
.table-scroll td:has(input[type=checkbox]:only-child){min-width:0}
.table-scroll th{white-space:nowrap;font-size:.85rem}
.table-scroll td a:not(.button):not(.asset-action),.table-scroll td small{overflow-wrap:anywhere}
.table-scroll td form{max-width:100%}
.compact-report th,.compact-report td{white-space:normal}
.cash-account-report .compact-report{table-layout:auto;min-width:1080px}
.cash-account-report .compact-report th:nth-child(n){width:auto}
.cash-account-report .compact-report th,.cash-account-report .compact-report td{padding:.75rem .6rem}
.cash-account-report .compact-report td:nth-child(2),.cash-account-report .compact-report td:nth-child(8){white-space:nowrap}
.cash-account-report .truncate{max-width:180px}
.cash-account-report .report-actions{min-width:115px;white-space:nowrap}
.donation-form{display:grid;gap:1.25rem;margin-top:1.5rem}
.donation-form fieldset{padding:1.25rem;max-width:none;align-content:start}
.donation-form legend{padding:0 .5rem;color:var(--green);font-weight:700}
.donation-form .action-row{display:flex;gap:.75rem}
.donation-cancel{margin-top:1.25rem;max-width:720px}
.donation-cancel summary{cursor:pointer;font-weight:700}
.validation-errors:has(ul){padding:1rem;color:#902b20;background:#f7e6e3;margin-block:1rem}
.validation-summary-valid{display:none}
@media(max-width:1000px){.cash-entry-form{grid-template-columns:140px minmax(0,1fr)}.cash-entry-form>a,.cash-entry-form .form-hint{grid-column:2}}
@media(max-width:900px){.entry-details dl{grid-template-columns:1fr}}
@media(max-width:800px){.section-intro,.cards:not(.portal-cards),.two-column,.profile-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:700px){
    .public-nav{align-items:stretch;justify-content:flex-start}
    .brand{min-width:0}.brand img{flex-shrink:0}
    .cash-entry-form>a,.cash-entry-form .form-hint{grid-column:1/-1}
    .cash-entry-form label:has(+textarea),.cash-entry-form label:has(+textarea)+textarea,.cash-entry-form .link-button{grid-column:1/-1}
    .table-scroll>table{min-width:620px}
    .cash-account-report .compact-report{min-width:1080px}
    .donation-form .action-row .button{flex:1 1 180px}
}

/* One layout system for all portal areas. Long content stays inside its component. */
.page-content{width:min(1280px,92vw)}
.page-content h1{font-size:clamp(2rem,4vw,3.25rem);line-height:1.15}
.page-content h2,.page-content h3{line-height:1.3}
.panel,.history,.cards article,.text-block{overflow-wrap:anywhere}
.profile-grid,.two-column{align-items:start}
.page-heading>*,.profile-heading>*,.timeline li>*,.content-list li>*{min-width:0;max-width:100%}
.page-heading h1,.profile-heading h1,.news-list h2,.news-content,.content-list,.timeline{overflow-wrap:anywhere}
.news-list{min-width:0;max-width:min(100%,800px)}
.profile-form dl,.profile-address>*{min-width:0}
.content-list li{grid-template-columns:minmax(0,1fr)}
.member-gallery article>div>*{min-width:0;max-width:100%;overflow-wrap:anywhere}
.cash-tabs button.active{color:#fff}
.form{width:100%;align-content:start}
.form label,.form input,.form select,.form textarea{min-width:0}
input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea{width:100%}
.form input[type=hidden]{display:none}
.form fieldset{display:grid;gap:.65rem}
.form .check input{width:auto}
.form .check{align-items:flex-start}
.field-validation-error,.validation-summary-errors{color:#902b20}
.input-validation-error{border-color:#a94442;box-shadow:0 0 0 1px #a94442}
.form .button{justify-self:start}
.form:has(>.cash-entry-form){max-width:none}
.action-row{gap:.65rem}
.action-row .button{flex:0 1 auto}
.asset-action{position:relative;width:36px;height:36px;background-size:24px}
.asset-action:focus-visible{outline:3px solid #287052;outline-offset:2px;border-radius:6px}
.table-scroll td:has(.asset-action){white-space:nowrap}
.table-scroll td:has(.asset-action) .button{white-space:normal}
.table-scroll{contain:inline-size}
.table-scroll .truncate{display:block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.table-scroll tbody tr:hover{background:#f2f7f3}
.table-scroll .summary-row{background:#edf6ef;font-weight:700}
.table-scroll:focus-visible{outline:3px solid #287052}
.table-scroll .check{white-space:normal}
.table-scroll.is-scrollable::before{content:"Weitere Spalten: Tabelle seitlich scrollen ↔";display:block;position:sticky;left:0;width:100%;padding:.3rem .15rem .6rem;font-size:.8rem;color:#526b5b;white-space:normal}
.skip-link{position:absolute;left:1rem;top:-80px;z-index:100;background:white;padding:.6rem 1rem;border-radius:6px}
.skip-link:focus{top:1rem}
.portal-area-nav{width:min(1280px,92vw);margin:1rem auto 0;display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
.portal-area-nav a{display:inline-flex;padding:.45rem .75rem;border-radius:8px;text-decoration:none;color:#24583e;font-size:.88rem;font-weight:700;border:1px solid #d7e5da;background:#fffefa}
.portal-area-nav a[aria-current=page]{background:#287052;color:white;border-color:#287052}
.portal-area-nav form{margin:0 0 0 auto}
.portal-area-nav .link-button{padding:.45rem .6rem;font-size:.85rem}
.portal-breadcrumb{width:min(1280px,92vw)}
.portal-breadcrumb-current{max-width:100%;overflow-wrap:anywhere}
.cash-tabs{gap:.35rem;flex-wrap:wrap;border:0;margin:1.5rem 0}
.cash-tabs button,.cash-tabs a{border:1px solid #dce3dc;border-radius:8px;padding:.65rem .8rem;line-height:1.35;background:#fffefa}
.cash-tabs .active{background:#287052;color:#fff;border-color:#287052}
.cash-tabs a:hover,.cash-tabs button:hover{border-color:#287052}
.member-gallery article,.member-gallery article>div,.dashboard-welcome>*{min-width:0}
.content-list li{min-width:0}
.content-editor{padding:1rem 0;border-bottom:1px solid var(--line)}
.content-editor summary{cursor:pointer;font-weight:700;overflow-wrap:anywhere}
.content-editor summary small{font-weight:400;color:var(--muted)}
.public-nav a[aria-current=page]{text-decoration:underline;text-underline-offset:5px}
@media(max-width:1000px){.header-inner{flex-wrap:wrap;padding-block:1rem}.public-nav{justify-content:flex-start}.role-row{grid-template-columns:minmax(0,1fr)}}
@media(max-width:700px){
    .cash-tabs{white-space:normal;overflow:visible;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
    .cash-tabs button,.cash-tabs a{min-width:0;text-align:left;font-size:.85rem;overflow-wrap:break-word}
    .portal-area-nav{flex-wrap:nowrap;overflow-x:auto;max-width:92vw;padding-bottom:.4rem}
    .portal-area-nav a,.portal-area-nav form{flex:0 0 auto;white-space:nowrap}
    .page-content,.public-section{padding-block:2rem}
    .text-block,.two-column aside{padding:1.2rem}
    .member-gallery{grid-template-columns:minmax(0,1fr)}
    .action-row .button{flex:1 1 140px}
    .table-scroll>table{min-width:640px;font-size:.9rem}
    .table-scroll th,.table-scroll td{display:table-cell;padding:.7rem .65rem}
    .table-scroll tr{display:table-row}
    .table-scroll thead{display:table-header-group}
    .table-scroll tbody{display:table-row-group}
    .cash-entry-form{grid-template-columns:minmax(0,1fr)!important}
    .cash-entry-form>*{grid-column:1/-1!important}
    .cash-entry-form .button{justify-self:stretch}
    .check{line-height:1.5}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
