:root{--ink:#233445;--muted:#687581;--line:#dde3e8;--paper:#fff;--blue:#1766ac}
body{margin:0;background:#f4f6f8;color:var(--ink);font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.page{max-width:1500px;margin:auto;padding:0 32px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:24px 0;border-bottom:1px solid var(--line);margin-bottom:36px}.brand{font-size:25px;font-weight:700;letter-spacing:-1px;color:var(--ink)}.brand:hover{text-decoration:none}.account,.actions,.row-actions{display:flex;gap:10px;align-items:center}.account form{margin:0}.account span{color:var(--muted)}h1{font-size:30px;font-weight:650;letter-spacing:-.6px;margin-bottom:12px}h2{font-size:23px}h3{font-size:20px}h4{font-size:18px}h5,h6{font-size:16px}legend{font-size:18px;font-weight:600}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:1.7px;color:var(--muted);margin-bottom:8px}.muted{color:var(--muted)}.heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:28px}.login-panel{max-width:420px;margin:65px auto}.login-panel h1{margin-bottom:10px}.login-panel form{margin-top:28px}.form-control{border-color:#cdd6de;min-height:42px}.btn{border-radius:7px;padding:9px 16px}.btn-sm{padding:5px 10px}.btn-primary{background:var(--blue);border-color:var(--blue)}label{font-weight:600;font-size:14px}.filter-panel{padding:18px 24px;margin-bottom:24px}summary{cursor:pointer;font-weight:600}.filter-form{padding-top:22px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 22px}.filter-form .form-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.edit-panel{max-width:none}.table-wrap{border:1px solid var(--line);border-radius:14px;overflow:auto;background:#fff}.photo_sessions-table{margin:0;font-size:14px}.photo_sessions-table th{border-top:none;background:#edf1f5;font-size:12px;white-space:nowrap;color:#506171}.photo_sessions-table td{vertical-align:top;padding:17px 12px}.photo_sessions-table th{padding:14px 12px}.photo_sessions-table td:first-child{white-space:nowrap}.remarks{white-space:pre-wrap;overflow-wrap:anywhere;min-width:170px}.photo_sessions-table .remarks{max-width:320px}.status{display:inline-block;border-radius:20px;font-size:12px;padding:4px 10px;white-space:nowrap}.done{background:#e3f0e9;color:#236543}.pending{background:#fff0d5;color:#825c1f}.row-actions{flex-wrap:wrap}.delete-panel{max-width:600px;margin:48px auto}.empty{text-align:center;padding:60px 24px}footer{padding:36px 0 24px;color:#87939e;font-size:12px}.form-group{margin-bottom:20px}.actions{flex-wrap:wrap;margin-top:24px}textarea.form-control{min-height:130px}
@media(max-width:1050px){.filter-form .form-grid,.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.page{padding:0 16px}.topbar{margin-bottom:26px;padding:18px 0}.account{gap:8px}.account span{display:none}.heading{align-items:flex-start;flex-wrap:wrap}h1{font-size:27px}.panel{padding:22px}.form-grid,.filter-form .form-grid{grid-template-columns:1fr}.login-panel{margin:36px auto}.table-wrap{border:none;background:transparent;overflow:visible}.photo_sessions-table,.photo_sessions-table tbody,.photo_sessions-table tr,.photo_sessions-table td{display:block}.photo_sessions-table thead{display:none}.photo_sessions-table tr{border:1px solid var(--line);border-radius:14px;margin-bottom:16px;padding:14px;background:#fff}.photo_sessions-table td{border:none;padding:6px 0;display:grid;grid-template-columns:105px minmax(0,1fr);gap:8px;overflow-wrap:anywhere}.photo_sessions-table td:before{content:attr(data-label);font-size:12px;color:var(--muted);padding-top:3px}.photo_sessions-table td:first-child{white-space:normal}.photo_sessions-table .remarks{max-width:none;min-width:0}.status{justify-self:start}.row-actions{gap:8px}.delete-panel{margin:24px auto}}

/* Filmnummer bleibt schmal; Datum bleibt am Desktop in einer Zeile. */
@media(min-width:701px){.photo_sessions-table .film-number{width:1%;white-space:nowrap}.photo_sessions-table .photo_session-date{white-space:nowrap}}
.photo_sessions-table .film-number strong{font-variant-numeric:tabular-nums}
.paging-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:20px 0}
.page-size-form,.paging-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.page-size-form label,.paging-count{margin:0}.paging-count{color:var(--muted)}
.page-size-form select{width:90px}.page-position{padding:0 6px;white-space:nowrap;font-size:14px}
.paging-nav .btn{padding:8px 11px;min-height:42px}
@media(max-width:700px){.paging-bar{gap:12px}.paging-nav{width:100%;justify-content:center;gap:5px}.paging-nav .btn{padding:8px}.page-position{padding:0 2px;font-size:13px}}

.shots-panel{margin-top:24px}.shot-text{white-space:pre-wrap;overflow-wrap:anywhere}
.shot-dialog{border:1px solid var(--line);border-radius:16px;padding:28px;width:680px;max-width:calc(100vw - 24px);max-height:90vh;overflow:auto;color:var(--ink)}
.shot-dialog::backdrop{background:rgba(20,30,40,.5)}
@media(max-width:700px){.shot-dialog{padding:20px}.shots-panel .heading{gap:8px}}

/* Read-only notes belong to their photo_session, including on narrow screens. */
.photo_sessions-table .photo_session-shots-cell{padding:0 12px 14px;border-top:0;white-space:normal}
.photo_session-shots{border-top:1px solid var(--line);padding-top:8px}
.photo_session-shots summary{padding:8px 0;color:var(--blue);font-size:14px;min-height:40px}
.photo_session-shot-list{list-style:none;padding:0;margin:6px 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:12px}
.photo_session-shot{padding:12px 16px;background:#f4f6f8;border-radius:8px;min-width:0;overflow-wrap:anywhere}
.photo_session-shot p{margin:0}.photo_session-shot .photo_session-shot-accessories{margin-top:4px;color:var(--muted)}
.photo_session-shot .photo_session-shot-note{margin-top:6px;white-space:pre-wrap}
@media(max-width:700px){
.photo_sessions-table .photo_session-group{display:block;border:1px solid var(--line);border-radius:14px;margin-bottom:16px;padding:14px;background:#fff}
.photo_sessions-table .photo_session-group>tr{border:0;border-radius:0;margin:0;padding:0;background:transparent}
.photo_sessions-table .photo_session-group .photo_session-shots-cell{display:block;padding:8px 0 0;border:0}
.photo_sessions-table .photo_session-shots-cell:before{display:none}
.photo_session-shot-list{grid-template-columns:1fr}.photo_session-shot{padding:12px}
}

/* Module overview and administration */
.module-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)); gap:1rem; }
.module-card { display:block; color:inherit; text-decoration:none; }
.module-card:hover { border-color:#0d6efd; }
.module-card p { color:#667085; }
.module-card span { color:#0d6efd; font-weight:600; }
.user-permissions { margin:1.5rem 0; }
.user-permissions legend { font-weight:600; }
.user-permissions label { display:block; margin:.7rem 0; }
.account { flex-wrap:wrap; }

.login-help { margin-top:1.25rem; }
.reset-panel { margin-top:1.5rem; }
@media(max-width:700px) { .topbar { flex-wrap:wrap; } .account { justify-content:flex-end; } }

/* Paket B: shared module navigation and read-only workflow summaries. */
.module-nav{display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:0 0 24px}
.module-nav .btn,.heading>.btn{min-height:42px;display:inline-flex;align-items:center;justify-content:center}
.module-nav .btn[aria-current="page"]{font-weight:600}
.dashboard-counts{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-bottom:24px}
.dashboard-counts .panel{padding:20px}.dashboard-counts h2{font-size:17px;margin-bottom:8px}.dashboard-counts p{margin:0 0 8px}.dashboard-counts strong{font-size:24px}
.dashboard-sections{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:24px;align-items:start}
.dashboard-sections.dashboard-sections-single{grid-template-columns:minmax(0,1fr)}
.workflow-tasks,.activity-list{list-style:none;margin:0;padding:0}
.workflow-tasks li+li,.activity-list li+li{border-top:1px solid var(--line)}
.workflow-tasks a{display:flex;align-items:center;gap:12px;padding:13px 0;color:var(--ink)}
.workflow-tasks strong{font-size:22px;min-width:30px;color:var(--blue);font-variant-numeric:tabular-nums}
.optional-publication{border-top:1px solid var(--line);margin-top:18px;padding-top:18px}.optional-publication p{font-size:13px;margin:8px 0 0}
.activity-list li{padding:12px 0}.activity-list time{display:block;color:var(--muted);font-size:12px;margin-bottom:3px}.activity-list a,.activity-list li>div{display:block;color:var(--ink);overflow-wrap:anywhere}.activity-list strong,.activity-list li>div span,.activity-list a span{display:block}.activity-list a span,.activity-list li>div span{font-size:14px;color:var(--muted)}
.photo_session-hub{border-top:1px solid var(--line);padding:24px 0}.photo_session-hub:last-child{padding-bottom:0}.photo_session-hub h3 small{font-size:15px}
.workflow-chain{list-style:none;display:flex;flex-wrap:wrap;gap:8px 20px;margin:14px 0 20px;padding:0;font-size:13px}
.workflow-chain li{position:relative;padding:5px 9px;border-radius:7px}.workflow-chain li+li:before{content:'→';position:absolute;left:-17px;color:var(--muted)}
.workflow-chain .step-done{background:#e3f0e9;color:#236543}.workflow-chain .step-pending{background:#fff0d5;color:#825c1f}.workflow-chain .step-optional{background:#edf1f5;color:var(--muted)}.workflow-chain a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.hub-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 28px;margin:0 0 20px}.hub-facts>div{min-width:0}.hub-facts dt{font-size:12px;color:var(--muted);font-weight:500}.hub-facts dd{margin:4px 0 0;overflow-wrap:anywhere}.hub-facts ul{padding-left:18px;margin:6px 0 0}.hub-facts p{margin:4px 0}.hub-copy{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px;max-width:100%}.hub-copy>.shot-text{min-width:0;flex:0 1 auto;overflow-wrap:anywhere}.hub-copy>button{flex:0 0 auto}.hub-copy>button:not([hidden]){display:inline-flex;align-items:center;justify-content:center}.hub-copy>button>svg{display:block;flex-shrink:0}.hub-copy>[data-copy-status]{flex-basis:100%}.hub-copy>[data-copy-status]:empty{display:none}.hub-scans{margin-top:8px}.hub-scans summary{font-size:14px}.hub-scan{padding:12px 0;border-top:1px solid var(--line);margin-top:8px}
@media(max-width:850px){.dashboard-sections{grid-template-columns:1fr}}
@media(max-width:700px){.module-nav{gap:8px}.dashboard-counts{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.dashboard-counts .panel{padding:16px}.hub-facts{grid-template-columns:1fr}.workflow-chain{gap:8px 20px}.photo_session-hub h3 small{display:block;margin-top:5px}}

/* Development assignments are waiting states, not missing-data warnings. */
.status.development-waiting{background:transparent;color:var(--muted);border:1px solid var(--line)}
.workflow-tasks .workflow-waiting a,html[data-theme="dark"] .workflow-tasks .workflow-waiting a{color:var(--muted)}

/* Fluid dashboard tiles: 226px minimum, 347px maximum.
   Fewer modules cap the grid width; rows stay left-aligned.
   Preserve two columns on phones when at least two modules are available. */
.dashboard-modules{container-type:inline-size}
.dashboard-modules-count-1{max-width:347px}
.dashboard-modules-count-2{max-width:710px}
.dashboard-modules-count-3{max-width:1073px}
.dashboard-modules .dashboard-counts{grid-template-columns:repeat(auto-fit,minmax(min(100%,226px),1fr));gap:16px;justify-content:start}
.dashboard-modules .dashboard-counts .module-card{min-width:0;max-width:347px;box-sizing:border-box}
.dashboard-modules .dashboard-counts .module-card.module-card-photo{max-width:347px}
@container (width < 468px){.dashboard-modules:not(.dashboard-modules-count-1) .dashboard-counts{grid-template-columns:repeat(2,minmax(0,1fr))}}

.session-protection{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--paper);color:var(--muted)}
.row-actions form{margin:0}

/* Quick reset is only visible while an active filter panel is collapsed. */
details.filter-panel > summary .filter-reset{margin-left:12px;vertical-align:middle}
details.filter-panel[open] > summary .filter-reset{display:none}

/* Shared module switcher and dashboard return, on every module navigation. */
.module-switcher{position:relative}
.module-switcher > summary{list-style:none;white-space:nowrap;user-select:none}
.module-switcher > summary::-webkit-details-marker{display:none}
.module-switcher-links{position:absolute;right:0;top:calc(100% + 8px);z-index:100;min-width:220px;max-width:calc(100vw - 32px);padding:8px;background:var(--paper);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #0002}
.module-switcher-links a{display:block;padding:10px 12px;border-radius:6px;color:var(--ink);text-decoration:none;overflow-wrap:anywhere}
.module-switcher-links a:hover,.module-switcher-links a:focus-visible,.module-switcher-links a[aria-current]{background:var(--theme-raised,#edf1f5);color:var(--ink)}
.module-switcher-links a[aria-current]{font-weight:600;box-shadow:inset 3px 0 var(--blue)}
.module-switcher > summary:focus-visible,.module-switcher-links a:focus-visible,.dashboard-back:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.module-nav .dashboard-back{flex:0 0 44px;padding:9px;color:#237341;border-color:#43875c}
.module-nav .dashboard-back:hover,.module-nav .dashboard-back:focus{background:#237341;border-color:#237341;color:#fff}
html[data-theme="dark"] .module-nav .dashboard-back{color:var(--theme-success);border-color:#69ad82}
html[data-theme="dark"] .module-nav .dashboard-back:hover,html[data-theme="dark"] .module-nav .dashboard-back:focus{background:var(--theme-success-bg);color:var(--theme-success)}
@media(max-width:700px){.module-switcher-links{left:0;right:auto}}

/* The same note/form moves into a native modal; no duplicate text or save flow. */
.dashboard-note-actions{display:flex;align-items:stretch;justify-content:space-between;gap:12px;flex-shrink:0}
.dashboard-note-zoom{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.dashboard-note-dialog{width:min(1000px,calc(100vw - 24px));max-width:calc(100vw - 24px);height:calc(100vh - 24px);height:calc(100dvh - 24px);max-height:calc(100dvh - 24px);padding:0;border:1px solid var(--line);border-radius:16px;background:var(--paper);color:var(--ink);overflow:hidden}
.dashboard-note-dialog[open]{display:flex}
.dashboard-note-dialog::backdrop{background:rgba(10,18,28,.65)}
.dashboard-note-dialog .dashboard-note-panel{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0;margin:0!important;border:0;overflow:auto}
.dashboard-note-dialog .dashboard-note-form{display:flex;flex-direction:column;flex:1;min-height:0}
.dashboard-note-dialog .dashboard-note-field{display:flex;flex-direction:column;flex:1;min-height:0}
.dashboard-note-dialog textarea.form-control{flex:1;min-height:80px;resize:none}
html.dashboard-note-zoom-open{overflow:hidden}
@media(max-width:700px){.dashboard-note-dialog .dashboard-note-panel{padding:18px}}

/* Sieben Module: gleiche Kacheln, lesbare Beschriftungen, natürliche Umbrüche. */
.dashboard-modules-count-7 .dashboard-counts{grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr))}
.dashboard-modules .dashboard-counts .module-card h2{white-space:nowrap;overflow-wrap:normal;word-break:normal;hyphens:none}
.dashboard-modules-count-7 .dashboard-counts .module-card h2{font-size:19px}
@container (width < 468px){.dashboard-modules-count-7 .dashboard-counts{grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr))}}
@container (width < 468px){.dashboard-modules:not(.dashboard-modules-count-1) .dashboard-counts{grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr))}}

/* Eine Spalte bei 190 px Mindestbreite und 16 px Rasterabstand. */
@container (width < 396px){
 .dashboard-modules .dashboard-counts .module-card,
 .dashboard-modules .dashboard-counts .module-card.module-card-photo{width:100%;max-width:none}
 .dashboard-modules .dashboard-counts .module-card.module-card-photo{aspect-ratio:auto;height:160px}
}
