:root{--bg:#f3f6f8;--ink:#17212b;--nav:#173b58;--card:#fff;--line:#d9e1e7;--accent:#1577a8;--danger:#b42318;--ok:#067647}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}a{color:var(--accent)}.top{background:var(--nav);color:#fff;padding:12px max(16px,calc((100vw - 1200px)/2));display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.brand{display:flex;gap:10px;align-items:center}.brand strong{display:block;font-size:20px}.brand small{opacity:.8}.mark{font-size:36px}.top nav{display:flex;gap:12px;flex-wrap:wrap}.top nav a{color:#fff;text-decoration:none}.container{max-width:1200px;margin:22px auto;padding:0 16px}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;box-shadow:0 2px 8px #00000008}.span-4{grid-column:span 4}.span-6{grid-column:span 6}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.kpi{font-size:28px;font-weight:700}.muted{color:#65717c}.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:16px}label{display:block;font-weight:650;margin-bottom:4px}input,select,textarea,button{font:inherit}input,select,textarea{width:100%;padding:10px;border:1px solid #bfcad3;border-radius:8px;background:#fff}textarea{min-height:110px}.field{margin-bottom:12px}.btn,button{display:inline-block;border:0;border-radius:8px;padding:10px 14px;background:var(--accent);color:#fff;text-decoration:none;cursor:pointer}.btn.secondary{background:#526574}.btn.danger{background:var(--danger)}table{width:100%;border-collapse:collapse;background:#fff}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--line);vertical-align:top}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px}.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.photos img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;border:1px solid var(--line)}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 18px}.tabs a{padding:8px 10px;background:#e8eef2;border-radius:7px;text-decoration:none}.flash{padding:12px;border-radius:8px;margin-bottom:12px}.flash.success{background:#dcfae6;color:#05603a}.flash.error{background:#fee4e2;color:#912018}.badge{display:inline-block;padding:3px 8px;border-radius:999px;background:#e8eef2;font-size:12px}.login{max-width:430px;margin:60px auto}.osd-shell{max-width:900px;margin:30px auto}.public-hero{text-align:center;margin-bottom:18px}footer{text-align:center;color:#687782;padding:30px 12px}@media(max-width:800px){.span-4,.span-6,.span-8{grid-column:span 12}.photos{grid-template-columns:1fr}.top{align-items:flex-start}table{font-size:14px}}
@media print{.top,footer,.no-print,.tabs{display:none!important}body{background:#fff}.container{max-width:none;margin:0}.card{box-shadow:none;border:0}.print-sheet{font-family:Arial,sans-serif}.signature{margin-top:50px;display:grid;grid-template-columns:1fr 1fr;gap:50px}.signature div{border-top:1px solid #000;padding-top:5px}}
.span-3{grid-column:span 3}.timeline-item{padding:10px 0;border-bottom:1px solid var(--line)}.timeline-meta{font-size:12px;color:#65717c;margin-bottom:4px}.legacy-note{background:#f6f8fa;border-left:4px solid #8aa1b2;padding:12px;margin-bottom:15px}.med-card{border:1px solid var(--line);border-radius:10px;padding:12px;margin:10px 0}.med-card.overdue{border-color:#d92d20;background:#fff5f4}.inline-form{display:flex;gap:8px;align-items:center}.inline-form input{flex:1}.danger-text{background:#fff1f0}.danger-text td:first-child{color:#b42318}.due-today{background:#fff8e6}.tabs a.active{background:var(--nav);color:#fff}.print-actions{max-width:210mm;margin:10px auto}.agreement-sheet{width:210mm;min-height:297mm;margin:0 auto;background:#fff;color:#000;padding:7mm 8mm;font-family:Arial,Helvetica,sans-serif;font-size:10px}.agreement-title{text-align:center;font-size:17px;font-weight:bold;letter-spacing:2px}.agreement-subtitle{text-align:center;font-size:12px;font-weight:bold;margin:4px 0}.agreement-top{display:grid;grid-template-columns:1fr 1.2fr;gap:8px}.owner-box{height:56px;border:1px solid #000;padding:3px;margin-top:3px}.form-table{border-collapse:collapse;width:100%;font-size:10px}.form-table th,.form-table td{border:1px solid #000;padding:2px 4px}.form-table th{width:52%;font-weight:bold}.photo-label{margin-top:4px}.agreement-photos{display:grid;grid-template-columns:repeat(3,1fr);height:83px;gap:12px}.agreement-photos img{width:100%;height:80px;object-fit:contain}.agreement-data{display:grid;grid-template-columns:1.2fr 1fr;gap:8px;align-items:end}.barcode-wrap{text-align:center}.barcode{width:100%;height:65px}.remarks-label{font-size:8px;margin-top:4px}.remarks-box{height:58px;border:1px solid #000;padding:4px;overflow:hidden}.follow-box{display:grid;grid-template-columns:1.7fr .55fr .55fr .7fr;align-items:center;border-bottom:2px solid #000;padding:3px 0}.follow-box h2{margin:0;font-size:17px}.qr img{width:58px;height:58px}.mini-logo{text-align:center;font-size:8px}.heavy{border:0;border-top:2px solid #000}.center{text-align:center}.legal{font-size:10px;line-height:1.12}.tiny{font-size:8px}.pale{color:#b5b5b5}.sign-row{display:grid;grid-template-columns:1fr 1fr;gap:45px;height:75px;margin-top:8px}.sign-row>div{border-top:1px solid #000;padding-top:3px;margin-top:25px}.copyline{text-align:center;font-size:8px;margin-top:2px}.org-footer{text-align:center;font-size:7px;margin-top:7px}.bottom-barcode{width:220px;margin:auto}.bottom-barcode .barcode{height:50px}@media(max-width:800px){.span-3{grid-column:span 12}.agreement-sheet{width:100%;min-height:0;overflow:auto}.inline-form{display:block}.inline-form input{margin-bottom:8px}}@media print{@page{size:A4;margin:0}.container{padding:0}.agreement-sheet{width:210mm;height:297mm;margin:0;padding:7mm 8mm;box-shadow:none;overflow:hidden}.agreement-sheet .form-table th,.agreement-sheet .form-table td{padding:1px 3px}.agreement-sheet p{margin:6px 0}.agreement-sheet .barcode{max-height:58px}}

.btn.small{padding:6px 9px;font-size:13px}.contact-card{background:#f8fafb;border:1px solid var(--line);border-radius:8px;padding:10px}

/* v1.5: rustiger medicatiescherm */
.medication-layout{display:grid;grid-template-columns:minmax(340px,440px) minmax(0,1fr);gap:16px;align-items:start}.med-entry{grid-column:1}.med-overview{grid-column:2}.med-history{grid-column:1/-1}.med-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.med-info{white-space:pre-line;margin:0 0 12px;padding:10px;background:#f7f9fb;border-radius:8px;min-height:40px}.med-treatment{border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:12px}.med-treatment.stopped{opacity:.75}.med-treatment h3{font-size:16px;line-height:1.25;margin:7px 0 10px}.med-facts{display:grid;grid-template-columns:repeat(4,minmax(100px,1fr));gap:8px;background:#f8fafb;border-radius:8px;padding:10px;font-size:13px}.med-instructions{margin-top:10px;padding:10px;border-left:3px solid #c58a00;background:#fff9e8}.med-actions{display:flex;gap:8px;align-items:flex-end;margin-top:12px}.med-actions .inline-form{flex:1}.place-picker{position:relative}.place-results{position:absolute;z-index:20;left:0;right:0;top:72px;background:#fff;border:1px solid var(--line);box-shadow:0 8px 24px #0002;border-radius:8px;max-height:260px;overflow:auto}.place-option{display:block;width:100%;text-align:left;background:#fff;color:var(--ink);border-radius:0;border-bottom:1px solid var(--line)}.place-option:hover{background:#eef5f8}
@media(max-width:900px){.medication-layout{grid-template-columns:1fr}.med-entry,.med-overview,.med-history{grid-column:1}.med-facts{grid-template-columns:1fr 1fr}.med-actions{display:block}.med-actions form{margin-top:8px}.med-form-grid{grid-template-columns:1fr}}

/* v1.6: medicatiebeheer zonder samengedrukte tabelkolommen */
.medication-admin-add{margin-bottom:16px}.med-admin-grid,.med-admin-row{display:grid;grid-template-columns:minmax(140px,1fr) minmax(280px,2.4fr) minmax(150px,1fr) minmax(150px,1fr);gap:12px;align-items:end}.med-admin-grid .field,.med-admin-row .field{margin-bottom:0}.med-admin-info{grid-column:1/4}.med-admin-submit{align-self:end}.med-admin-list{display:flex;flex-direction:column;gap:12px}.med-admin-row{padding:14px;border:1px solid var(--line);border-radius:10px;background:#fbfcfd}.med-admin-actions{display:flex;gap:10px;align-items:center;justify-content:flex-end;grid-column:4}.check-label{display:flex;align-items:center;gap:7px;margin:0;white-space:nowrap}.check-label input{width:auto}.med-admin-row textarea,.med-admin-grid textarea{min-height:74px;resize:vertical}
@media(max-width:1000px){.med-admin-grid,.med-admin-row{grid-template-columns:1fr 1fr}.med-admin-info{grid-column:1/-1}.med-admin-actions{grid-column:1/-1;justify-content:flex-start}.med-admin-submit{grid-column:1/-1}}
@media(max-width:650px){.med-admin-grid,.med-admin-row{grid-template-columns:1fr}.med-admin-info,.med-admin-actions,.med-admin-submit{grid-column:1}.med-admin-actions{justify-content:space-between}}

/* v1.7 - beheer per regel */
.choice-admin-list{display:flex;flex-direction:column;gap:12px}
.choice-admin-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(180px,1.2fr) 110px auto;gap:12px;align-items:end;padding:14px;border:1px solid var(--border,#d9e1e7);border-radius:10px;background:#fff}
.choice-admin-row .field{margin:0;min-width:0}
.choice-admin-row input{width:100%}
.choice-admin-actions{display:flex;align-items:center;gap:12px;white-space:nowrap;padding-bottom:1px}
.choice-admin-actions .check-label{margin:0}
.med-admin-row{grid-template-columns:minmax(145px,.8fr) minmax(260px,1.8fr) minmax(150px,.8fr) minmax(150px,.8fr) minmax(260px,1.6fr) 100px auto!important}
.med-admin-sort{min-width:90px}
.med-admin-row .field{min-width:0}
.med-admin-row textarea,.med-admin-row input{width:100%}
@media(max-width:1100px){.choice-admin-row{grid-template-columns:1fr 1fr}.choice-admin-actions{grid-column:1/-1}.med-admin-row{grid-template-columns:1fr 1fr!important}.med-admin-actions{grid-column:1/-1}}
@media(max-width:700px){.choice-admin-row,.med-admin-row{grid-template-columns:1fr!important}.choice-admin-actions,.med-admin-actions{grid-column:auto;flex-wrap:wrap}}

/* v1.9 weegwizard, filters en RVO */
.wizard-steps{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.wizard-steps span{padding:8px 12px;border-radius:999px;background:#e8eef2}.wizard-steps .active{background:var(--nav);color:#fff}.wizard-card{max-width:720px}.weight-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:15px 0}.weight-summary>div{padding:16px;border:1px solid var(--line);border-radius:10px}.weight-summary span,.weight-summary small{display:block;color:var(--muted)}.weight-summary b{display:block;font-size:24px;margin-top:4px}.filter-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:10px}.filter-actions{display:flex;gap:8px;align-items:end}.report-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0}@media(max-width:900px){.filter-grid,.report-summary{grid-template-columns:1fr 1fr}}@media(max-width:600px){.filter-grid,.report-summary,.weight-summary{grid-template-columns:1fr}}

/* v1.9.4 - zoekfoto's, RVO en documenten */
.search-empty{margin-top:16px;text-align:center;padding:32px}.animal-search-table{min-width:1280px}.photo-col{min-width:245px}.search-thumbs{display:flex;gap:6px;min-width:225px}.search-thumbs a{display:block}.search-thumbs img{width:68px;height:52px;object-fit:cover;border:1px solid var(--line);border-radius:6px;transition:transform .15s ease,box-shadow .15s ease}.search-thumbs img:hover{transform:scale(1.08);box-shadow:0 3px 12px #0003}.thumb-missing{width:68px;height:52px;display:grid;place-items:center;border:1px dashed var(--line);border-radius:6px;color:var(--muted)}
.rvo-wide{width:min(1800px,calc(100vw - 32px));position:relative;left:50%;transform:translateX(-50%)}.rvo-table-wrap{overflow-x:auto}.rvo-table{min-width:1500px;table-layout:auto;font-size:13px}.rvo-table th,.rvo-table td{padding:8px;white-space:normal;overflow-wrap:anywhere;min-width:90px}.rvo-table th:nth-child(5),.rvo-table td:nth-child(5){min-width:180px}.rvo-table th:nth-child(6),.rvo-table td:nth-child(6){min-width:145px}.rvo-table th:nth-child(11),.rvo-table td:nth-child(11){min-width:125px}.rvo-table th:nth-child(12),.rvo-table td:nth-child(12){min-width:125px}
.document-layout{display:grid;grid-template-columns:minmax(320px,420px) minmax(0,1fr);gap:18px;align-items:start}.document-upload-card{position:sticky;top:14px}.document-upload-form{display:grid;gap:4px}.document-upload-actions{display:flex;justify-content:flex-start}.document-list{display:flex;flex-direction:column;gap:8px}.document-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}.document-row:last-child{border-bottom:0}.document-main{min-width:0;display:flex;flex-direction:column;gap:3px}.document-main a{overflow-wrap:anywhere}.document-row form{flex:0 0 auto;margin:0}
@media(max-width:900px){.document-layout{grid-template-columns:1fr}.document-upload-card{position:static}.document-row{align-items:flex-start}.search-thumbs img,.thumb-missing{width:60px;height:46px}}
@media(max-width:560px){.document-row{display:block}.document-row form{margin-top:8px}.document-row button{width:100%}}

/* v1.9.5 */
.search-thumbs .photo-open{border:0;background:transparent;padding:0;margin:0;cursor:zoom-in;width:auto;box-shadow:none}.search-thumbs .photo-open:hover{transform:none}.photo-modal{position:fixed;inset:0;background:#000b;z-index:2000;display:none;align-items:center;justify-content:center;padding:24px}.photo-modal.open{display:flex}.photo-modal-box{max-width:min(1100px,92vw);max-height:90vh;background:#fff;border-radius:14px;padding:14px;box-shadow:0 20px 70px #0008}.photo-modal-box img{display:block;max-width:88vw;max-height:78vh;object-fit:contain;margin:auto}.photo-modal-title{text-align:center;font-weight:700;margin:0 0 8px}.photo-modal-close{position:absolute;right:24px;top:18px;border:0;background:#fff;color:#111;border-radius:50%;width:44px;height:44px;font-size:30px;line-height:1;cursor:pointer}.wizard-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 16px}.wizard-step{background:#e9eef2;color:#233;border:1px solid var(--line);box-shadow:none}.wizard-step.active{background:var(--nav);color:#fff}.wizard-panel{display:none;max-width:1000px;margin:auto}.wizard-panel.active{display:block}.wizard-actions{display:flex;justify-content:space-between;gap:10px;margin-top:18px}.origin-choices{display:grid;grid-template-columns:1fr 1fr;gap:16px}.choice-card{border:2px solid var(--line);border-radius:12px;padding:22px;cursor:pointer;display:grid;grid-template-columns:auto 1fr;column-gap:12px;align-items:start}.choice-card input{width:auto;margin-top:4px}.choice-card strong{font-size:20px}.choice-card span{grid-column:2;color:var(--muted);margin-top:5px}.summary-box{padding:16px;border:1px solid var(--line);border-radius:10px;background:#f8fafb;line-height:1.8}
/* Maak het contract werkelijk paginavullend en geef de foto's meer ruimte. */
.agreement-sheet{padding:5mm 6mm;font-size:9.5px}.agreement-photos{height:58mm;gap:4mm}.agreement-photos>div{border:1px solid #999;display:flex;align-items:center;justify-content:center;overflow:hidden}.agreement-photos img{width:100%;height:100%;object-fit:contain}.agreement-data{margin-top:2mm}.remarks-box{height:30mm}.follow-box{min-height:25mm}.legal{font-size:9px;line-height:1.08}.sign-row{height:24mm}.org-footer{margin-top:2mm}
@media(max-width:800px){.wizard-steps{grid-template-columns:1fr 1fr}.origin-choices{grid-template-columns:1fr}.photo-modal{padding:10px}.photo-modal-close{right:12px;top:10px}}
@media print{@page{size:A4;margin:0}.agreement-sheet{width:210mm;height:297mm;min-height:297mm;padding:5mm 6mm}.agreement-photos{height:58mm}.remarks-box{height:30mm}}


/* v1.9.7 - antraciet huisstijl, dashboard en donkere modus */
:root{--bg:#f2f3f4;--ink:#26292c;--nav:#34373a;--card:#fff;--line:#d5d8db;--accent:#4e5963;--danger:#b42318;--ok:#067647;--muted:#6a7177;--soft:#f6f7f8;--input:#fff;--shadow:#0000000c}
html[data-theme="dark"]{--bg:#181a1c;--ink:#eceeef;--nav:#2b2e31;--card:#232629;--line:#3c4146;--accent:#9aa5af;--danger:#ff7b72;--ok:#4cc38a;--muted:#aab1b7;--soft:#2b2f33;--input:#1e2124;--shadow:#0007;color-scheme:dark}
body{background:var(--bg);color:var(--ink)}a{color:var(--accent)}.top{background:var(--nav);box-shadow:0 2px 10px var(--shadow)}.brand{color:#fff;text-decoration:none;min-width:260px}.brand-logo{display:block;object-fit:contain}.brand-logo-wide{width:52px;height:52px;object-position:center;flex:0 0 auto}.brand-text{display:none}.theme-toggle{margin-left:auto;background:#ffffff18;border:1px solid #ffffff35;color:#fff;width:42px;height:42px;border-radius:50%;padding:0;font-size:22px}.theme-toggle:hover{background:#ffffff2b}.card,table{background:var(--card);color:var(--ink)}.card{box-shadow:0 2px 8px var(--shadow)}.muted,.timeline-meta,footer{color:var(--muted)}input,select,textarea{background:var(--input);color:var(--ink);border-color:var(--line)}.tabs a,.badge,.wizard-steps span,.wizard-step{background:var(--soft);color:var(--ink)}.contact-card,.med-info,.med-facts,.med-admin-row,.summary-box{background:var(--soft)!important;color:var(--ink)}.place-results,.place-option{background:var(--card);color:var(--ink)}.place-option:hover{background:var(--soft)}.photo-modal-box{background:var(--card);color:var(--ink)}.photo-modal-close{background:var(--card);color:var(--ink)}
.dashboard-animal-table{min-width:1050px}.dashboard-thumbs{display:flex;gap:4px;min-width:132px}.dashboard-thumbs .photo-open{border:0;background:transparent;padding:0;width:auto;box-shadow:none}.dashboard-thumbs img{display:block;width:40px;height:32px;object-fit:cover;border-radius:5px;border:1px solid var(--line);cursor:zoom-in}.dashboard-med-table{min-width:900px}.dashboard-med-table tr.med-due-today td{background:#b42318!important;color:#fff!important;border-bottom-color:#d7655d}.dashboard-med-table tr.med-due-today a,.dashboard-med-table tr.med-due-today .muted{color:#fff!important}.dashboard-med-table tr.med-due-today .btn{background:#fff;color:#8b1a13!important}.osd-logo{width:120px;height:120px;object-fit:contain;border-radius:20px;margin:0 auto 12px;display:block;background:#34373a;padding:8px}
html[data-theme="dark"] .flash.success{background:#153c2c;color:#8fe0b7}html[data-theme="dark"] .flash.error{background:#4a201f;color:#ffb4ae}html[data-theme="dark"] .legacy-note{background:#2b3034}html[data-theme="dark"] .med-card.overdue{background:#442321}html[data-theme="dark"] .danger-text{background:#442321}html[data-theme="dark"] .due-today{background:#493b1e}html[data-theme="dark"] .med-instructions{background:#3e351f;color:var(--ink)}
@media(max-width:900px){.brand-logo-wide{width:46px;height:46px}.top nav{width:100%}.theme-toggle{position:absolute;right:14px;top:12px}.top{position:relative;padding-right:65px}}
@media(max-width:520px){.brand-logo-wide{width:42px;height:42px}.dashboard-thumbs img{width:36px;height:29px}.osd-logo{width:96px;height:96px}}
@media print{.theme-toggle{display:none!important}}

.brand{display:flex;align-items:center;gap:10px;min-width:auto}.brand-text{display:flex;flex-direction:column;line-height:1.1}.brand-text small{opacity:.78;font-size:11px;margin-top:3px}.brand-text strong{font-size:14px}.public-page .top .brand-text{display:flex}.wizard-actions button[disabled]{opacity:.65;cursor:wait}.place-results:empty{display:none}

/* v1.10.0 - logo contrast, ketenpartners en adreslookup */
.brand-logo-wide{width:70px;height:64px;object-fit:contain;object-position:center}
.osd-logo{width:150px;height:138px;object-fit:contain;border-radius:12px;margin:0 auto 12px;padding:8px;background:#fff}
.osd-logo-dark{display:none;background:#050505}
html[data-theme="dark"] .osd-logo-light{display:none}
html[data-theme="dark"] .osd-logo-dark{display:block}
.address-lookup{border:1px solid var(--line);border-radius:10px;padding:12px;margin:12px 0;background:var(--soft)}
.address-lookup h3{margin:0 0 8px}
.address-lookup-row{display:grid;grid-template-columns:minmax(130px,1fr) minmax(100px,.7fr) auto;gap:10px;align-items:end}
.address-lookup-row .field{margin:0}
.address-lookup-row button{white-space:nowrap}
@media(max-width:700px){.address-lookup-row{grid-template-columns:1fr 1fr}.address-lookup-row button{grid-column:1/-1}.brand-logo-wide{width:62px;height:58px}}
.visitor-redirect{margin:1rem 0;padding:1rem;border:1px solid var(--border,#c9ced1);border-radius:12px;background:var(--panel-soft,#f4f5f5)}
.visitor-redirect p{margin:.5rem 0}

/* v1.10.3 - V2 huisstijl en installeerbare Android/PWA */
.top{display:block;padding-top:12px;padding-bottom:10px;background:#303238}
.top-brand-row{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand-v2{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-decoration:none;min-width:0;flex:1}
.brand-header-logo{display:block;width:min(900px,100%);height:auto;max-height:116px;object-fit:contain;object-position:left center}
.system-title{color:#fff;font-size:14px;font-weight:700;letter-spacing:.025em;padding-left:2px}
.top-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.main-nav{max-width:1200px;margin:10px auto 0;display:flex;gap:12px;flex-wrap:wrap;align-items:center;border-top:1px solid #ffffff28;padding-top:9px}
.main-nav a{color:#fff;text-decoration:none}
.pwa-install-btn{background:#fff;color:#303238;border:1px solid #fff;font-weight:700;white-space:nowrap}
.pwa-install-btn[hidden]{display:none!important}
@media(max-width:850px){.brand-header-logo{max-height:92px}.top-brand-row{align-items:flex-start}.top-actions{padding-top:4px}.system-title{font-size:13px}.main-nav{gap:9px}}
@media(max-width:620px){.top{padding:8px 12px}.top-brand-row{display:grid;grid-template-columns:minmax(0,1fr) auto}.brand-header-logo{max-height:74px}.system-title{font-size:12px}.pwa-install-btn{font-size:12px;padding:8px 9px}.theme-toggle{position:static;margin:0;width:38px;height:38px}.top-actions{display:flex;flex-direction:column}.main-nav{font-size:14px;margin-top:8px}}
@media(max-width:420px){.brand-header-logo{max-height:62px}.system-title{font-size:11px}.top-actions{gap:5px}.pwa-install-btn{max-width:95px;white-space:normal;line-height:1.1}}
@media print{.pwa-install-btn{display:none!important}}

/* v1.10.4 - medicatie, dashboard, fotonavigatie en donkere-modus contrast */
.med-last-admin{margin-top:10px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--soft);color:var(--ink);font-size:13px}
.med-never-administered{font-weight:750;color:var(--danger)}
.partner-flags{display:grid;gap:8px;margin:0 0 16px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--soft);color:var(--ink)}
.partner-flags h3{margin:0 0 4px}.partner-flags .check-label{display:flex;gap:9px;align-items:center;margin:0}.partner-flags input{width:auto}
.photo-modal-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:54px;height:72px;border-radius:12px;background:#fff;color:#222;border:1px solid #ddd;font-size:48px;line-height:1;padding:0;box-shadow:0 4px 18px #0005}
.photo-modal-prev{left:24px}.photo-modal-next{right:24px}.photo-modal-nav[hidden]{display:none!important}
html[data-theme="dark"] .photo-modal-nav{background:#232629;color:#fff;border-color:#555}
/* Oudere componenten hadden nog een vaste witte achtergrond. In donker thema altijd variabelen gebruiken. */
html[data-theme="dark"] .choice-admin-row,
html[data-theme="dark"] .visitor-redirect,
html[data-theme="dark"] .weight-summary>div,
html[data-theme="dark"] .wizard-card,
html[data-theme="dark"] .address-lookup,
html[data-theme="dark"] .partner-flags,
html[data-theme="dark"] .med-last-admin{background:var(--soft)!important;color:var(--ink)!important;border-color:var(--line)!important}
html[data-theme="dark"] .choice-admin-row label,
html[data-theme="dark"] .choice-admin-actions label,
html[data-theme="dark"] .card label,
html[data-theme="dark"] .card h1,
html[data-theme="dark"] .card h2,
html[data-theme="dark"] .card h3,
html[data-theme="dark"] th,
html[data-theme="dark"] td{color:var(--ink)}
html[data-theme="dark"] input::placeholder,html[data-theme="dark"] textarea::placeholder{color:#8f979e;opacity:1}
html[data-theme="dark"] .choice-admin-row input,
html[data-theme="dark"] .choice-admin-row select,
html[data-theme="dark"] .choice-admin-row textarea{background:var(--input);color:#fff;border-color:var(--line)}
html[data-theme="dark"] .tabs a:not(.active){color:#fff}
@media(max-width:700px){.photo-modal-nav{width:44px;height:60px;font-size:40px}.photo-modal-prev{left:8px}.photo-modal-next{right:8px}.dashboard-kpis .span-3{grid-column:span 6}}
@media(max-width:440px){.dashboard-kpis .span-3{grid-column:span 12}}

/* v1.10.5 vrijwilligers */
.volunteer-intake-box{margin:20px 0;padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.volunteer-intake-box h3{margin-top:0}.volunteer-checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}.volunteer-check{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}.volunteer-check input{width:auto;margin-top:4px}.volunteer-check small{overflow-wrap:anywhere}

/* v1.10.6 */
.dashboard-collapsible > summary{cursor:pointer;padding:6px 0;font-size:1.15rem;list-style-position:inside}
.dashboard-collapsible > summary::marker{color:var(--muted)}
.dashboard-collapsible .details-content{margin-top:16px}

.volunteer-animal-list summary{cursor:pointer;white-space:nowrap}
.volunteer-animal-items{display:grid;gap:10px;margin-top:10px;min-width:360px}
.volunteer-animal-item{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--border);border-radius:10px;background:var(--panel)}
@media(max-width:700px){.volunteer-animal-items{min-width:260px}.volunteer-animal-item{align-items:flex-start;flex-direction:column}}

.medication-alarm-banner{position:sticky;top:0;z-index:70;margin:0 0 16px;padding:12px 14px;border:2px solid #ff6b6b;border-radius:12px;background:#7a1111;color:#fff;box-shadow:0 4px 18px rgba(0,0,0,.28)}
.medication-alarm-banner .btn{margin-left:10px;background:#fff;color:#7a1111;border-color:#fff}
[data-theme="dark"] .medication-alarm-banner{background:#8e1515;color:#fff}


/* v1.10.11 - subtiele lichtblauwe accenten voor Dier.ID */
html[data-theme="light"]{--accent:#3f8fb7;--accent-soft:#eaf5fb}
html[data-theme="light"] .btn:not(.secondary):not(.danger),html[data-theme="light"] button:not(.secondary):not(.danger):not(.theme-toggle):not(.photo-modal-nav):not(.photo-open){background:#3f8fb7;color:#fff;box-shadow:0 1px 2px #1e5f8026}
html[data-theme="light"] .btn:not(.secondary):not(.danger):hover,html[data-theme="light"] button:not(.secondary):not(.danger):not(.theme-toggle):not(.photo-modal-nav):not(.photo-open):hover{background:#347fa5}
html[data-theme="light"] .tabs a,html[data-theme="light"] .badge,html[data-theme="light"] .wizard-steps span,html[data-theme="light"] .wizard-step{background:var(--accent-soft);border-color:#c8e5f3}
html[data-theme="light"] input:focus,html[data-theme="light"] select:focus,html[data-theme="light"] textarea:focus{outline:2px solid #a8d4e9;outline-offset:1px;border-color:#6aaed0}
html[data-theme="dark"]{--accent:#74b5d5}
html[data-theme="dark"] .btn:not(.secondary):not(.danger),html[data-theme="dark"] button:not(.secondary):not(.danger):not(.theme-toggle):not(.photo-modal-nav):not(.photo-open){background:#337fa6;color:#fff}

/* v1.10.12 - OSD-verwijzing, ketenpartner mobiel en rustige lijniconen */
.ui-icon{width:1.15em;height:1.15em;display:inline-block;vertical-align:-.18em;fill:currentColor;flex:0 0 auto}
.osd-dashboard-callout{display:flex;align-items:center;gap:14px;margin:0 0 18px;padding:15px 17px;border:1px solid #bdddeb;border-radius:14px;background:#edf8fd;color:var(--ink)}
.osd-dashboard-callout .osd-callout-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:#d7edf8;color:#276f94;flex:0 0 auto}.osd-dashboard-callout .osd-callout-icon .ui-icon{width:25px;height:25px}
.osd-dashboard-callout div:nth-child(2){display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.osd-dashboard-callout span{color:var(--muted);font-size:14px}.osd-callout-btn{white-space:nowrap}
html[data-theme="dark"] .osd-dashboard-callout{background:#1b303b;border-color:#315668}html[data-theme="dark"] .osd-dashboard-callout .osd-callout-icon{background:#244657;color:#9cd3ed}
.medication-alarm-banner strong{display:inline-flex;align-items:center;gap:5px}.medication-alarm-banner .ui-icon{width:18px;height:18px}
.login-public-links{display:grid;gap:10px;margin-top:14px}.login-osd-link{display:flex;align-items:center;gap:11px;padding:13px;border:1px solid #bdddeb;border-radius:12px;background:#edf8fd;text-decoration:none;color:var(--ink)}.login-osd-link:hover{border-color:#7ebbd7}.login-osd-link .ui-icon{width:25px;height:25px;color:#2f82aa}.login-osd-link span{display:flex;flex-direction:column}.login-osd-link small{color:var(--muted);margin-top:2px}html[data-theme="dark"] .login-osd-link{background:#1b303b;border-color:#315668}
.partner-mail-optin{display:flex!important;align-items:flex-start;gap:10px;margin:2px 0 18px;padding:13px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}.partner-mail-optin input{width:auto!important;margin-top:3px}.partner-mail-optin span{display:flex;flex-direction:column;gap:3px}.partner-mail-optin small{color:var(--muted);font-weight:400;line-height:1.4}
.partner-detail-table{width:100%;table-layout:auto}.partner-detail-table th{width:42%;white-space:normal}.partner-detail-table td{overflow-wrap:anywhere;word-break:break-word}
@media(max-width:700px){.osd-dashboard-callout{align-items:flex-start;flex-wrap:wrap}.osd-callout-btn{width:100%;text-align:center}.partner-detail-card{grid-column:span 12}.partner-detail-table,.partner-detail-table tbody,.partner-detail-table tr,.partner-detail-table th,.partner-detail-table td{display:block;width:100%}.partner-detail-table tr{padding:10px 0;border-bottom:1px solid var(--line)}.partner-detail-table tr:last-child{border-bottom:0}.partner-detail-table th{padding:0 0 3px;border:0;font-size:12px;color:var(--muted)!important;text-transform:uppercase;letter-spacing:.02em}.partner-detail-table td{padding:0;border:0}.toolbar{align-items:flex-start}.toolbar h1{min-width:0;overflow-wrap:anywhere;flex-basis:100%}}
/* v1.10.13 — Dier.ID, iconen en robuuste ketenpartnerdetailweergave */
.main-nav a{display:inline-flex;align-items:center;gap:6px}.main-nav .ui-icon{width:16px;height:16px;flex:0 0 auto;opacity:.9}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn .ui-icon{width:17px;height:17px;flex:0 0 auto}.partner-detail-list{display:grid;gap:0}.partner-detail-row{display:grid;grid-template-columns:minmax(145px,38%) minmax(0,1fr);gap:14px;padding:10px 0;border-bottom:1px solid var(--line);align-items:start}.partner-detail-row:last-child{border-bottom:0}.partner-detail-label{font-weight:700;min-width:0}.partner-detail-value{min-width:0;overflow-wrap:anywhere;word-break:break-word}.partner-detail-value a{overflow-wrap:anywhere;word-break:break-all}.partner-detail-card{min-width:0}.grid>section{min-width:0}
@media(max-width:850px){.partner-detail-row{grid-template-columns:1fr;gap:3px}.partner-detail-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}}

/* v1.10.14 — herstel ketenpartnerdetail: expliciete 5/7 kolombreedte op desktop */
.span-5{grid-column:span 5}
.span-7{grid-column:span 7}
.partner-detail-card,.partner-animals-card{width:100%;max-width:100%;min-width:0}
.partner-detail-list{width:100%}
.partner-detail-row{width:100%}
.partner-detail-value{max-width:100%}
.partner-detail-value a{white-space:normal}
@media(max-width:900px){.span-5,.span-7{grid-column:span 12}}
/* Dier.ID 1.10.15 - geinstalleerde app */
.pwa-app-menu{position:relative}.pwa-app-menu-toggle{display:inline-flex;align-items:center;gap:.4rem;border:1px solid rgba(255,255,255,.4);border-radius:7px;background:rgba(255,255,255,.08);color:#fff;padding:.55rem .75rem;font-weight:700;cursor:pointer}.pwa-app-menu-panel{position:absolute;z-index:90;right:0;top:calc(100% + .45rem);min-width:210px;padding:.35rem;background:var(--card,#fff);border:1px solid var(--line,#d7dee3);border-radius:10px;box-shadow:0 12px 30px rgba(0,0,0,.22)}.pwa-app-menu-panel a{display:flex;align-items:center;gap:.55rem;padding:.7rem .75rem;border-radius:7px;color:var(--ink,#222);text-decoration:none;white-space:nowrap}.pwa-app-menu-panel a:hover{background:var(--soft-blue,#e9f5fc)}.pwa-app-menu-panel .ui-icon{width:18px;height:18px}.pwa-update-notice{position:fixed;z-index:120;left:50%;bottom:18px;transform:translateX(-50%);display:flex;align-items:center;gap:14px;max-width:calc(100vw - 24px);padding:10px 12px 10px 16px;border:1px solid #9fcce6;border-radius:10px;background:#eef8fe;color:#18394c;box-shadow:0 8px 28px rgba(0,0,0,.18);font-weight:650}html[data-theme="dark"] .pwa-update-notice{background:#21333e;color:#eaf7ff;border-color:#4f7d96}html[data-theme="dark"] .pwa-app-menu-panel a:hover{background:#243b49}@media(max-width:620px){.pwa-app-menu-panel{position:fixed;top:78px;left:12px;right:12px;min-width:0}.pwa-update-notice{width:calc(100vw - 24px);box-sizing:border-box;justify-content:space-between}}

/* v1.10.16 — voormeldingen */
.prereg-public{max-width:920px}.prereg-portal-callout{max-width:760px;margin:0 auto 20px}.prereg-portal-callout h2{display:flex;align-items:center;gap:8px}.prereg-success{text-align:center;max-width:720px;margin:0 auto}.prereg-success h2{display:flex;justify-content:center;align-items:center;gap:8px}.prereg-code{display:inline-block;margin:10px auto 18px;padding:16px 24px;border:2px solid #8fc4de;border-radius:14px;background:#edf8fd;font-size:36px;font-weight:900;letter-spacing:8px;font-variant-numeric:tabular-nums;color:#174d68}.prereg-preview{margin:12px 0}.prereg-preview img,.prereg-edit-photo{display:block;max-width:min(100%,420px);max-height:420px;object-fit:contain;border:1px solid var(--line);border-radius:12px;background:var(--soft);padding:6px}.prereg-status-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.prereg-status-tabs a{display:inline-flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);text-decoration:none}.prereg-status-tabs a.active{background:#e5f4fb;border-color:#8fc4de;color:#205d7b}.prereg-search{display:flex;align-items:end;gap:10px}.prereg-search .field{flex:1;margin:0}.prereg-thumb{width:90px;height:70px;object-fit:cover;border-radius:9px;border:1px solid var(--line);background:var(--soft)}.prereg-code-small{font-size:21px;font-weight:850;letter-spacing:2px;font-variant-numeric:tabular-nums}.prereg-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.prereg-actions form{margin:0}.prereg-status-open{background:#e6f5fc;color:#23647f}.prereg-status-converted{background:#eaf5ea;color:#2c6b37}.prereg-status-deleted{background:#f1f1f1;color:#666}.prereg-loaded-banner{display:flex;align-items:center;gap:12px;margin:0 0 16px;padding:13px 15px;border:1px solid #9bcbe1;border-radius:12px;background:#edf8fd}.prereg-loaded-banner>.ui-icon{width:28px;height:28px;color:#2f82aa}.prereg-loaded-banner>div{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.prereg-loaded-banner span{color:var(--muted);font-size:14px}.prereg-history-grid{display:grid;gap:14px}.prereg-history-card{display:grid;grid-template-columns:minmax(180px,280px) minmax(0,1fr);gap:18px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}.prereg-history-card img{width:100%;max-height:260px;object-fit:contain;border-radius:10px;background:var(--card)}.prereg-history-card h3{margin-top:0}.prereg-kpi a{font-size:13px}.prereg-table td{vertical-align:top}
html[data-theme="dark"] .prereg-code,html[data-theme="dark"] .prereg-status-tabs a.active,html[data-theme="dark"] .prereg-loaded-banner{background:#1c3542;border-color:#477a93;color:#dff4ff}html[data-theme="dark"] .prereg-status-open{background:#203d4b;color:#bfe9fb}html[data-theme="dark"] .prereg-status-converted{background:#263d2b;color:#cceacd}html[data-theme="dark"] .prereg-status-deleted{background:#303236;color:#d2d5d7}
@media(max-width:760px){.prereg-history-card{grid-template-columns:1fr}.prereg-search{align-items:stretch;flex-direction:column}.prereg-search button{width:100%}.prereg-loaded-banner{align-items:flex-start;flex-wrap:wrap}.prereg-loaded-banner a{width:100%}.prereg-table .prereg-thumb{width:72px;height:58px}}

/* v1.10.17 — uitgebreide voormelding */
.prereg-verified{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 auto 16px;max-width:920px}.prereg-verified .btn{margin-left:auto}.prereg-photo-open{display:block!important;width:auto!important;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important;cursor:zoom-in}.prereg-photo-open:hover{transform:none!important}.soft-box{margin:10px 0 14px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}.checkline{display:flex!important;align-items:flex-start;gap:8px;margin:8px 0 12px}.checkline input{width:auto!important;margin-top:3px}
@media(max-width:620px){.prereg-verified .btn{margin-left:0;width:100%}}


/* v1.10.19 — externe voormelding, uploadstatus en mobiele fotokeuze */
.prereg-new-line{margin-top:6px;font-size:.88rem;color:#287a48}
.prereg-new-alert{border-color:#55a66e!important;box-shadow:0 0 0 2px rgba(72,158,98,.14);animation:preregGreenPulse 1.7s ease-in-out infinite}
@keyframes preregGreenPulse{0%,100%{background:var(--card);box-shadow:0 0 0 2px rgba(72,158,98,.10)}50%{background:rgba(99,190,125,.13);box-shadow:0 0 0 5px rgba(72,158,98,.16)}}
[data-theme="dark"] .prereg-new-alert{background:#26372d}
[data-theme="dark"] .prereg-new-line{color:#9bd8ad}
.submit-spinner{display:inline-block;width:17px;height:17px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-3px;margin-right:8px;animation:submitSpin .75s linear infinite}
.submit-spinner.large{width:34px;height:34px;border-width:3px;margin:0 0 10px}
@keyframes submitSpin{to{transform:rotate(360deg)}}
.prereg-upload-overlay{position:fixed;inset:0;z-index:10050;background:rgba(24,29,33,.62);display:grid;place-items:center;padding:20px}
.prereg-upload-box{width:min(390px,100%);background:var(--card);color:var(--ink);border-radius:16px;padding:26px;box-shadow:0 18px 55px rgba(0,0,0,.28);display:flex;flex-direction:column;align-items:center;text-align:center;gap:5px}
.prereg-upload-box strong{font-size:1.08rem}
.prereg-upload-box span:last-child{color:var(--muted)}
button.is-loading{cursor:wait;opacity:.88}
@media (prefers-reduced-motion:reduce){.prereg-new-alert,.submit-spinner{animation:none}}

.upload-gear{display:inline-flex;vertical-align:middle;margin-right:5px;animation:gearTurn 1.25s linear infinite}.upload-gear[hidden]{display:none}.upload-gear .ui-icon{width:18px;height:18px}.prereg-unseen-badge{background:#e7f7ec;color:#216b3c;border:1px solid #8fc8a0}[data-theme="dark"] .prereg-unseen-badge{background:#23412e;color:#b8e8c6;border-color:#477c58}@keyframes gearTurn{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.upload-gear{animation:none}}


/* v1.10.20: duidelijke camera/galerij-keuze en memo's */
.photo-source-buttons{display:flex;gap:.65rem;flex-wrap:wrap;margin:.35rem 0 .55rem}.photo-source-btn{display:inline-flex;align-items:center;gap:.4rem}.visually-hidden-file{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}.photo-file-status{padding:.35rem 0}.memo-list{display:grid;gap:.65rem}.memo-list-item{display:block;padding:.8rem .9rem;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--ink);background:var(--card)}.memo-list-item:hover{border-color:#83b9da;background:color-mix(in srgb,var(--card) 92%,#dff3ff)}.memo-list-item.memo-unread{box-shadow:inset 4px 0 0 #72b5dc}.memo-list-item.memo-prio1{border-color:#c08a8a}.memo-prio-check{display:block;padding:.75rem;border:1px solid #c58f8f;border-radius:9px;margin:.5rem 0}.memo-prio-banner,.memo-prio-dashboard{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.memo-prio-banner{padding:.8rem;border-radius:9px;background:#fff2f2;border:1px solid #d8aaaa;margin-bottom:1rem;color:#752a2a}.memo-message{font-size:1.05rem;line-height:1.55;padding:1rem 0;white-space:normal}.memo-archive-form{margin-top:1.2rem}.memo-prio-dashboard{padding:.7rem .9rem;margin:0 0 1rem;border-radius:10px;border:1px solid #d79b9b;background:#fff5f5}.memo-prio-button,.memo-toolbar-alert{animation:memoPrioPulse 1.15s ease-in-out infinite}.memo-toolbar-alert{box-shadow:0 0 0 0 rgba(194,58,58,.45)}@keyframes memoPrioPulse{0%,100%{filter:none;box-shadow:0 0 0 0 rgba(194,58,58,.15)}50%{filter:brightness(1.08);box-shadow:0 0 0 5px rgba(194,58,58,.16)}}
html[data-theme="dark"] .memo-prio-banner,html[data-theme="dark"] .memo-prio-dashboard{background:#3a2527;color:#fff;border-color:#7d4c50}
@media(max-width:640px){.photo-source-buttons{display:grid;grid-template-columns:1fr}.photo-source-btn{justify-content:center;width:100%}.memo-prio-dashboard{align-items:flex-start;flex-direction:column}.memo-prio-button{width:100%;justify-content:center}}

.choice-admin-row{grid-template-columns:minmax(220px,1fr) 110px auto}.choice-admin-row .choice-name{min-width:220px}

/* v1.10.22 zwerfdierverklaringen */
.prereg-documents{margin-top:18px}.prereg-document-slot{padding:12px 0;border-top:1px solid var(--line,#d7dde3)}.prereg-document-slot:first-of-type{border-top:0}.prereg-document-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:10px 0}.prereg-document-grid img{display:block;width:100%;max-height:180px;object-fit:cover;border-radius:10px;border:1px solid var(--line,#d7dde3);background:var(--surface,#fff)}.prereg-document-existing{display:flex;flex-direction:column;gap:6px;font-weight:normal}.prereg-document-existing span{font-size:.9rem}.prereg-history-docs{margin:10px 0}

/* v1.10.23 — publieke links en vrijwilligersportaal */
.public-logo-link{display:inline-block;line-height:0;text-decoration:none}
.login-volunteer-link{margin-top:14px}
.volunteer-portal-btn{background:#f6d6d6!important;border-color:#dca7a7!important;color:#6d2525!important}
.volunteer-portal-btn:hover{background:#efc3c3!important;border-color:#cd8f8f!important;color:#5a1f1f!important}
html[data-theme="dark"] .volunteer-portal-btn{background:#6a3434!important;border-color:#9c5f5f!important;color:#fff!important}


/* v1.10.24 — vrijwilligersportaal overzicht en OSD-fotolijst */
.volunteer-portal-shell{max-width:1040px}.volunteer-portal-card,.volunteer-login-card{max-width:680px;margin:0 auto 22px;text-align:center}.volunteer-login-card form{text-align:left;max-width:460px;margin:0 auto}.volunteer-login-card>p{max-width:560px;margin:12px auto 0}.volunteer-results{margin-top:30px}.volunteer-results-heading{text-align:center;max-width:760px;margin:0 auto 18px}.volunteer-results-heading h2{margin-bottom:5px}.volunteer-animal-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(390px,1fr));gap:16px}.volunteer-animal-card{min-width:0}.volunteer-animal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}.volunteer-animal-head h3{margin:6px 0 0;font-size:1.2rem}.volunteer-osd-btn{white-space:nowrap}.volunteer-animal-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 14px}.volunteer-animal-meta>div{padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:color-mix(in srgb,var(--card) 94%,#dff3ff)}.volunteer-animal-meta dt{font-size:.78rem;font-weight:700;color:var(--muted);margin-bottom:2px}.volunteer-animal-meta dd{margin:0;overflow-wrap:anywhere}.volunteer-animal-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.volunteer-animal-photos a{display:block;min-width:0}.volunteer-animal-photos img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:9px;border:1px solid var(--line);background:var(--card)}.volunteer-animal-photos img:hover{filter:brightness(.96)}.volunteer-no-photo{grid-column:1/-1;text-align:center;padding:20px;border:1px dashed var(--line);border-radius:9px}.visitor-redirect .btn.secondary{overflow-wrap:anywhere}
html[data-theme="dark"] .volunteer-animal-meta>div{background:color-mix(in srgb,var(--card) 92%,#173b58)}
@media(max-width:620px){.volunteer-portal-shell{margin-top:16px}.volunteer-portal-card,.volunteer-login-card{text-align:left}.volunteer-animal-cards{grid-template-columns:1fr}.volunteer-animal-head{display:block}.volunteer-osd-btn{display:flex;justify-content:center;width:100%;margin-top:12px}.volunteer-animal-meta{grid-template-columns:1fr}.volunteer-animal-photos{gap:5px}.volunteer-results-heading{text-align:left}}

/* v1.10.25 — vrijwilligersportaal: strakke uitlijning op desktop en mobiel */
.volunteer-portal-shell{width:min(100%,900px);margin:24px auto}
.volunteer-portal-shell .public-hero{max-width:720px;margin:0 auto 24px}
.volunteer-portal-shell .public-hero h1{margin-top:18px;margin-bottom:10px}
.volunteer-portal-card,.volunteer-login-card{width:min(100%,680px);max-width:680px;margin:0 auto 22px;padding:24px;text-align:center}
.volunteer-portal-card h2{display:flex;align-items:center;justify-content:center;gap:9px;margin:0 0 12px}
.volunteer-portal-card h2 .ui-icon{flex:0 0 auto}
.volunteer-portal-card p{max-width:570px;margin:0 auto 18px;line-height:1.5}
.volunteer-portal-card>.btn{display:inline-flex;align-items:center;justify-content:center;min-width:230px}
.volunteer-login-card form{width:min(100%,460px);max-width:460px;margin:0 auto;text-align:left}
.volunteer-login-card .field{margin-bottom:12px}
.volunteer-login-card form button{display:flex;width:100%;align-items:center;justify-content:center;margin:0}
.volunteer-login-card>p{max-width:520px;margin:14px auto 0;line-height:1.45;text-align:center}
.volunteer-login-card .flash{max-width:520px;margin:14px auto 0;text-align:left}
.volunteer-results{width:100%}
.volunteer-results-heading{padding:0 10px}
.volunteer-animal-card{overflow:hidden}
.volunteer-animal-head>div{min-width:0}
@media(max-width:620px){
  .volunteer-portal-shell{margin:12px auto 24px}
  .volunteer-portal-shell .public-hero{margin-bottom:18px}
  .volunteer-portal-card,.volunteer-login-card{padding:18px 16px;text-align:center}
  .volunteer-portal-card h2{justify-content:center;font-size:1.25rem}
  .volunteer-portal-card>.btn{display:flex;width:100%;min-width:0}
  .volunteer-login-card form,.volunteer-login-card>p{width:100%;max-width:none}
  .volunteer-login-card>p{text-align:center}
  .volunteer-results-heading{text-align:center;padding:0}
  .volunteer-animal-head{text-align:left}
}

/* v1.10.26: prioriteitslabels berichten */
.memo-prio-banner.memo-prio-normal{background:color-mix(in srgb,var(--card) 92%,#dff3ff);border-color:#9fc9df;color:var(--ink)}
html[data-theme="dark"] .memo-prio-banner.memo-prio-normal{background:#23323a;border-color:#496b7c;color:#fff}

/* v1.10.31 — compacte barcode en QR-code in basisgegevens */
.animal-code-inline-white{background:#fff;border:1px solid #d7dee5;border-radius:9px;padding:8px;max-width:520px;color:#111}.animal-code-compact{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.animal-code-compact-item{display:flex;align-items:center;gap:7px;min-width:0}.animal-code-compact-label{font-size:11px;font-weight:750;color:#475569;white-space:nowrap}.animal-barcode{background:#fff;overflow:hidden;line-height:0}.animal-barcode .barcode{display:block;width:210px;height:48px;max-width:100%}.animal-qr-box img{display:block;width:72px;height:72px;object-fit:contain;background:#fff}.animal-code-print{margin-left:auto;white-space:nowrap}html[data-theme="dark"] .animal-code-inline-white{background:#fff;color:#111;border-color:#cbd5e1}@media(max-width:680px){.animal-code-inline-white{max-width:100%}.animal-code-compact{align-items:flex-start}.animal-code-compact-item:first-child{width:100%}.animal-barcode .barcode{width:190px;height:44px}.animal-qr-box img{width:68px;height:68px}.animal-code-print{margin-left:0}}


/* v1.10.33 - compact A4 agreement branding and clearer typography */
.agreement-brand{display:grid;grid-template-columns:31mm 1fr;align-items:center;gap:4mm;margin-bottom:2mm;min-height:25mm}
.agreement-brand>img{display:block;width:29mm;max-height:25mm;object-fit:contain;object-position:left center}
.agreement-brand .agreement-title{text-align:center;font-size:18px;line-height:1.1}
.agreement-brand .agreement-subtitle{text-align:center;font-size:13px;margin-top:1mm}
.agreement-sheet{font-size:10.5px}
.agreement-sheet .form-table{font-size:10.5px}
.agreement-sheet .remarks-label{font-size:9px}
.agreement-sheet .legal{font-size:9.6px;line-height:1.09}
.agreement-sheet .tiny{font-size:8.5px}
.agreement-sheet .org-footer{font-size:7.5px}
.agreement-photos{height:50mm}
.remarks-box{height:25mm}
.follow-box{grid-template-columns:1fr 22mm;gap:4mm;min-height:20mm;padding:2mm 0}
.follow-box h2{font-size:16px}
.follow-box .qr{text-align:right}
.follow-box .qr img{width:19mm;height:19mm;display:inline-block}
.sign-row{height:20mm;margin-top:5px}
@media(max-width:800px){.agreement-brand{grid-template-columns:25mm 1fr}.agreement-brand>img{width:24mm}.agreement-brand .agreement-title{font-size:16px}.agreement-brand .agreement-subtitle{font-size:11px}}
@media print{
  .agreement-sheet{font-size:10.2px}
  .agreement-brand{min-height:23mm;margin-bottom:1mm}
  .agreement-brand>img{width:27mm;max-height:23mm}
  .agreement-photos{height:49mm}
  .remarks-box{height:24mm}
  .follow-box{min-height:19mm}
  .sign-row{height:19mm}
}

/* v1.10.34 A4 agreement refinements */
.agreement-brand-centered{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5mm;min-height:42mm;margin-bottom:2mm;text-align:center}
.agreement-brand-centered>img{display:block;width:30mm;height:30mm;max-height:none;object-fit:contain;object-position:center center;margin:0 auto}
.agreement-brand-centered .agreement-title{font-size:18px;line-height:1.05;text-align:center}
.agreement-brand-centered .agreement-subtitle{font-size:12.5px;line-height:1.05;text-align:center;margin:0}
.agreement-sheet{font-size:10.8px}
.agreement-sheet .form-table{font-size:10.8px}
.agreement-sheet .remarks-label{font-size:9.3px}
.agreement-sheet .remarks-box{height:12mm;min-height:12mm}
.agreement-sheet .legal{font-size:9.8px;line-height:1.09}
.agreement-sheet .tiny{font-size:8.8px}
.sign-row-stamp{height:28mm;gap:12mm;margin-top:2mm}
.sign-row-stamp>div{position:relative;border:1px solid #777;margin-top:0;padding:2mm;display:flex;flex-direction:column;justify-content:space-between}
.sign-row-stamp .stamp-hint{align-self:center;color:#777;font-size:8px;font-style:italic;margin-top:4mm}
.agreement-sheet .copyline{font-size:8.3px;margin-top:1mm}
.agreement-sheet .org-footer{font-size:7.6px;margin-top:1.5mm}
@media(max-width:800px){.agreement-brand-centered>img{width:30mm;height:30mm}.agreement-brand-centered{min-height:22mm}.sign-row-stamp{grid-template-columns:1fr;gap:4mm;height:auto}.sign-row-stamp>div{min-height:24mm}}
@media print{
  .agreement-sheet{font-size:10.6px;padding:4mm 6mm}
  .agreement-brand-centered{min-height:38mm;margin-bottom:1mm}
  .agreement-brand-centered>img{width:30mm;height:30mm;max-height:none}
  .agreement-brand-centered .agreement-title{font-size:17px}
  .agreement-brand-centered .agreement-subtitle{font-size:12px}
  .agreement-photos{height:46mm}
  .agreement-sheet .remarks-box{height:11mm;min-height:11mm}
  .agreement-sheet .follow-box{min-height:18mm}
  /* Forceer bij A4-print altijd twee handtekeningvakken naast elkaar.
     De mobiele regel stapelde ze onder elkaar, terwijl de printregel nog
     een vaste hoogte hield. Daardoor kwamen footer en barcode door het
     tweede handtekeningvak te staan. */
  .sign-row-stamp{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12mm;height:27mm;margin-top:1mm}
  .sign-row-stamp>div{min-height:0}
  .agreement-sheet .copyline{clear:both;margin-top:2mm}
  .agreement-sheet .org-footer{position:static;margin-top:1.5mm}
  .agreement-sheet .bottom-barcode{position:static;margin:1mm auto 0}
  .agreement-sheet p{margin:4px 0}
}

/* v1.10.50: voormelden bestandsvalidatie zonder formulierverlies */
.photo-file-status.file-error{color:#b42318!important;font-weight:700;background:rgba(180,35,24,.08);border:1px solid rgba(180,35,24,.35);padding:8px 10px;border-radius:8px;margin-top:6px}

/* v1.10.68 - Meldkamer */
.meldkamer-kpis .card{display:flex;justify-content:space-between;align-items:center;text-decoration:none;color:inherit;min-height:86px}.meldkamer-kpis strong{font-size:2rem}.meldkamer-intake{display:grid;gap:16px}.meldkamer-step{display:grid;grid-template-columns:58px 1fr;gap:16px;align-items:start}.meldkamer-step-number{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#1565c0;color:#fff;font-size:1.35rem;font-weight:800}.meldkamer-step-body{min-width:0}.meldkamer-step-body h2{margin-top:4px}.meldkamer-submit{display:flex;justify-content:space-between;gap:18px;align-items:center;position:sticky;bottom:12px;z-index:12;box-shadow:0 8px 28px rgba(0,0,0,.2)}.meldkamer-submit .btn{font-size:1.05rem;padding:12px 20px}.meldkamer-map{min-height:390px;border:1px solid var(--border);border-radius:12px;overflow:hidden;position:relative;background:var(--surface-2,#eef1f4)}.meldkamer-map iframe{border:0;width:100%;height:390px;display:block}.meldkamer-map-empty{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:28px;color:var(--muted)}.meldkamer-detail-map{width:100%;height:330px;border:1px solid var(--border);border-radius:10px}.meldkamer-summary{display:grid;grid-template-columns:2fr 1fr 2fr;gap:14px;padding:14px 16px;border-radius:12px;margin-bottom:16px;background:var(--card);border-left:6px solid #1976d2}.meldkamer-summary.spoed{border-left-color:#f57c00}.meldkamer-summary.acuut{border-left-color:#d32f2f}.meldkamer-summary>div{padding:4px 8px}.timeline{display:grid;gap:10px}.timeline-item{border-left:3px solid var(--border);padding:6px 0 6px 12px}.assignment-choice[hidden],#pickup-extra[hidden],#pickup-block[hidden]{display:none!important}
@media(max-width:760px){.meldkamer-step{grid-template-columns:42px 1fr;gap:10px}.meldkamer-step-number{width:38px;height:38px;font-size:1.05rem}.meldkamer-map,.meldkamer-map iframe{min-height:300px;height:300px}.meldkamer-summary{grid-template-columns:1fr}.meldkamer-submit{position:static;align-items:stretch;flex-direction:column}.meldkamer-submit .btn{width:100%}}
.pt-map{position:relative;overflow:hidden;min-height:440px;border:1px solid var(--border);border-radius:12px;background:#dbe5e9;touch-action:none;cursor:grab}.pt-map.dragging{cursor:grabbing}.pt-map-tiles,.pt-map-markers{position:absolute;inset:0}.pt-map-tiles img{position:absolute;width:256px;height:256px;user-select:none;pointer-events:none}.pt-map-markers{pointer-events:none}.pt-marker{position:absolute;transform:translate(-50%,-100%);border:0;background:transparent;padding:0;pointer-events:auto;cursor:pointer;z-index:4}.pt-marker-icon{display:block;width:24px;height:32px;background:#1976d2;border:3px solid #fff;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 2px 7px rgba(0,0,0,.45)}.pt-marker.report .pt-marker-icon{background:#1565c0}.pt-marker.volunteer .pt-marker-icon{background:#d71920;border-radius:3px;clip-path:polygon(50% 100%,0 20%,32% 20%,32% 0,68% 0,68% 20%,100% 20%);transform:none;width:25px;height:32px}.pt-marker-label{position:absolute;left:50%;top:5px;transform:translate(-50%,-100%);white-space:nowrap;background:rgba(20,25,28,.92);color:#fff;padding:3px 6px;border-radius:5px;font-size:.78rem;font-weight:700}.pt-map-controls{position:absolute;z-index:6;left:10px;top:10px;display:grid;box-shadow:0 2px 8px rgba(0,0,0,.25)}.pt-map-controls button{width:40px;height:40px;border-radius:0;border:1px solid #777;background:#fff;color:#111;font-size:1.45rem;line-height:1}.pt-map-controls button:first-child{border-radius:8px 8px 0 0}.pt-map-controls button:last-child{border-radius:0 0 8px 8px}.meldkamer-map-large{min-height:62vh}.meldkamer-map-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:8px 0}.report-row.in-progress{animation:soft-green-pulse 2.1s ease-in-out infinite}.report-row.normal-open{background:rgba(46,160,67,.14)}.report-row.urgent-soon{animation:orange-pulse 1.65s ease-in-out infinite}.report-row.urgent{animation:red-pulse 1.35s ease-in-out infinite}.report-row.urgent.in-progress{animation:red-pulse 1.35s ease-in-out infinite}@keyframes normal-green-pulse{0%,100%{background:rgba(46,160,67,.03)}50%{background:rgba(46,160,67,.20)}}@keyframes orange-pulse{0%,100%{background:rgba(245,145,25,.04)}50%{background:rgba(245,145,25,.30)}}@keyframes soft-green-pulse{0%,100%{background:transparent}50%{background:rgba(46,160,67,.18)}}@keyframes red-pulse{0%,100%{background:rgba(210,35,35,.03)}50%{background:rgba(220,38,38,.28)}}.report-status-icon{font-size:1.15rem;margin-right:5px}.availability-response{max-width:640px;margin:40px auto}.availability-buttons{display:grid;grid-template-columns:1fr 1fr;gap:16px}.availability-buttons button{font-size:1.2rem;padding:18px}.request-history .yes{border-left-color:#2e9d50}.request-history .no{border-left-color:#c73535}
@media(max-width:760px){.pt-map{min-height:360px}.meldkamer-map-large{min-height:70vh}.availability-buttons{grid-template-columns:1fr}}
.pt-map.fullscreen{position:fixed!important;inset:10px!important;width:auto!important;height:auto!important;min-height:0!important;z-index:9999;border:2px solid #fff;box-shadow:0 0 0 100vmax rgba(0,0,0,.65)}body.map-fullscreen-open{overflow:hidden}.pt-map.fullscreen .pt-map-controls button{width:48px;height:48px;font-size:1.6rem}

/* Meldkamer: live JA/NEE-reacties */
.meldkamer-response-notices{position:fixed;right:18px;top:18px;z-index:9999;display:grid;gap:10px;width:min(430px,calc(100vw - 36px));pointer-events:none}.meldkamer-response-notice{pointer-events:auto;display:grid;gap:4px;padding:14px 16px;border-radius:12px;background:var(--card);color:var(--text);text-decoration:none;border:2px solid var(--border);box-shadow:0 10px 32px rgba(0,0,0,.28);animation:response-notice-in .25s ease-out}.meldkamer-response-notice.yes{border-color:#2e9d50}.meldkamer-response-notice.no{border-color:#c73535}.meldkamer-response-notice strong{font-size:1.05rem}.meldkamer-response-notice.yes strong{color:#238044}.meldkamer-response-notice.no strong{color:#b42e2e}.meldkamer-response-notice span{font-weight:750}.meldkamer-response-notice small{color:var(--muted)}@keyframes response-notice-in{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}.request-response-row{display:flex;gap:16px;align-items:center;justify-content:space-between}.request-assign-form{flex:0 0 auto;margin:0}.request-history .yes{background:rgba(46,157,80,.07);border-radius:0 8px 8px 0}.request-history .no{background:rgba(199,53,53,.05);border-radius:0 8px 8px 0}@media(max-width:760px){.meldkamer-response-notices{right:10px;top:10px;width:calc(100vw - 20px)}.request-response-row{align-items:stretch;flex-direction:column}.request-assign-form .btn{width:100%}}

/* v1.10.76: JA-reactie blijft zichtbaar en pulseren tot toewijzing + uitzetmail */
.meldkamer-response-notice.persistent-yes{border-width:3px;border-color:#249447;background:color-mix(in srgb,var(--card) 88%,#36c56a 12%);animation:meldkamer-yes-alert 1.15s ease-in-out infinite;box-shadow:0 0 0 0 rgba(36,148,71,.35),0 12px 36px rgba(0,0,0,.32)}
.meldkamer-response-notice.persistent-yes strong{font-size:1.12rem;color:#167536}.meldkamer-response-notice.persistent-yes small{font-weight:700}
@keyframes meldkamer-yes-alert{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(36,148,71,.35),0 12px 36px rgba(0,0,0,.32)}50%{transform:scale(1.025);box-shadow:0 0 0 8px rgba(36,148,71,.10),0 14px 40px rgba(0,0,0,.36)}}
@media(prefers-reduced-motion:reduce){.meldkamer-response-notice.persistent-yes{animation:none}}

/* v1.10.79 zichtmeldingen */
.meldkamer-list-section{margin-top:22px}.sighting-section{margin-top:30px}.sighting-heading{background:rgba(73,170,220,.16);border:1px solid rgba(73,170,220,.38);border-radius:12px;padding:12px 14px}.report-row.sighting-row{background:rgba(91,192,235,.18)!important}.report-row.sighting-row:hover{background:rgba(91,192,235,.28)!important}.report-row.sighting-row.in-progress{animation:none;background:rgba(91,192,235,.22)!important}.report-row.sighting-row.urgent-soon{animation:orange-pulse 1.65s ease-in-out infinite}.report-row.sighting-row.urgent{animation:red-pulse 1.35s ease-in-out infinite}

/* v1.10.81 — zichtmeldingen als aparte werkstroom */
.sighting-nav-btn{background:#e3f5ff!important;border-color:#8fcbea!important;color:#155f83!important}.sighting-kpi,.sighting-intake-note,.sighting-detail-note,.sighting-help{background:#eaf7ff;border-color:#9bd3ef}.sighting-table-wrap{border:1px solid #9bd3ef;border-radius:12px;overflow:hidden}.sighting-table-wrap thead th{background:#d9f1fd}.sighting-table-wrap .sighting-row{background:#edf9ff!important;animation:none!important}.sighting-table-wrap .sighting-row:hover{background:#dff4ff!important}.sighting-status-badge{background:#ccecff;color:#155f83}.toolbar-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}html[data-theme="dark"] .sighting-nav-btn,html[data-theme="dark"] .sighting-kpi,html[data-theme="dark"] .sighting-intake-note,html[data-theme="dark"] .sighting-detail-note,html[data-theme="dark"] .sighting-help{background:#173847!important;border-color:#356d87!important;color:#d9f3ff!important}html[data-theme="dark"] .sighting-table-wrap .sighting-row{background:#163746!important}html[data-theme="dark"] .sighting-table-wrap thead th{background:#214b5e}
.route-distance-list{display:grid;gap:8px}.route-distance-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--card)}.route-distance-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.route-result{min-width:185px;text-align:right}.route-result b{color:var(--text)}@media(max-width:800px){.route-distance-row{align-items:stretch;flex-direction:column}.route-distance-actions{justify-content:flex-start}.route-result{text-align:left;min-width:0;width:100%}}
.pt-marker.contact .pt-marker-icon{background:#7b1fa2;border-radius:50% 50% 50% 0;transform:rotate(-45deg)}
.nearby-help{margin-top:10px;border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--card)}
.nearby-help-list{margin:8px 0;display:grid;gap:5px}.nearby-help-list>div{display:flex;justify-content:space-between;gap:12px;padding:6px 8px;border-radius:7px;background:rgba(127,127,127,.08)}

/* v1.10.87 - Meldkamer is een desktopwerkplek: PDOK-resultaten blijven bij het zoekveld. */
.meldkamer-intake .meldkamer-place-picker,.meldkamer-intake .place-picker{position:relative}
.meldkamer-intake .meldkamer-place-picker .place-results,.meldkamer-intake .place-picker .place-results{top:calc(100% + 4px);left:0;right:0;width:auto;max-height:320px;z-index:120;overflow-y:auto;border-radius:10px}
.meldkamer-intake .meldkamer-place-picker .place-option,.meldkamer-intake .place-picker .place-option{padding:10px 12px;line-height:1.25;font-size:14px}
@media(min-width:1100px){.meldkamer-intake{max-width:1180px;margin-inline:auto}.meldkamer-intake .meldkamer-step{overflow:visible}.meldkamer-intake .meldkamer-step-body{overflow:visible}}

/* v1.10.88 - Desktop hoverkaart met contactgegevens bij dichtstbijzijnde hulp. */
.nearby-hover-hint{margin:4px 0 8px}
.nearby-help-list{overflow:visible}
.nearby-help-row{position:relative;cursor:default;align-items:center;outline:none}
.nearby-help-row:hover,.nearby-help-row:focus{background:rgba(50,160,210,.18)}
.nearby-contact-card{display:none;position:absolute;z-index:2500;left:22px;bottom:calc(100% + 7px);min-width:330px;max-width:430px;padding:13px 15px;border:1px solid var(--border);border-radius:10px;background:var(--card);box-shadow:0 14px 38px rgba(0,0,0,.38);font-size:14px;line-height:1.45}
.nearby-contact-card strong{display:block;font-size:17px;margin-bottom:1px}.nearby-contact-card>span{display:block}.nearby-contact-card hr{border:0;border-top:1px solid var(--border);margin:8px 0}.nearby-contact-card a{font-weight:700}
.nearby-help-row:hover .nearby-contact-card,.nearby-help-row:focus .nearby-contact-card{display:block}
.nearby-help-row:nth-child(-n+2) .nearby-contact-card{bottom:auto;top:calc(100% + 7px)}

/* v1.10.90 meldkamerkaart: herkenbare hulp-iconen */
.pt-marker.volunteer .pt-marker-icon,.pt-marker.contact .pt-marker-icon{display:flex!important;align-items:center;justify-content:center;width:34px!important;height:34px!important;border:3px solid #fff!important;border-radius:50%!important;clip-path:none!important;transform:none!important;font-size:21px;line-height:1;box-shadow:0 2px 8px rgba(0,0,0,.42)}
.pt-marker.volunteer .pt-marker-icon{background:#2e9d50!important}
.pt-marker.contact .pt-marker-icon{background:#ef8b24!important;filter:none!important}
.pt-marker.volunteer,.pt-marker.contact{transform:translate(-50%,-50%)!important}

/* v1.10.94: vrijwilliger- en ketenpartnermarkers zijn informatief, niet aanklikbaar */
.pt-marker.volunteer,.pt-marker.contact{cursor:default!important}

/* v1.10.94 Meldkamer: contactgegevens op kaart via hover, markers blijven niet-aanklikbaar */
.pt-marker.volunteer,.pt-marker.contact{cursor:default!important}
.pt-marker-contact{display:none;position:absolute;z-index:40;left:50%;bottom:44px;transform:translateX(-50%);width:max-content;min-width:280px;max-width:390px;padding:11px 13px;border-radius:9px;background:rgba(20,25,28,.97);color:#fff;text-align:left;font-size:13px;line-height:1.45;white-space:normal;box-shadow:0 7px 24px rgba(0,0,0,.38);pointer-events:none}
.pt-marker-contact strong{display:block;font-size:14px;margin-bottom:6px}.pt-marker-contact div{display:block}.pt-marker-contact b{font-weight:700}.pt-marker.volunteer:hover .pt-marker-contact,.pt-marker.contact:hover .pt-marker-contact,.pt-marker.volunteer:focus .pt-marker-contact,.pt-marker.contact:focus .pt-marker-contact{display:block}.pt-marker:hover,.pt-marker:focus{z-index:30}.pt-marker:focus{outline:none}

/* v1.10.95 Meldkamer: rustige labels bij landelijke/kleine kaartweergave. */
.pt-map[data-zoom="5"] .pt-marker-label,.pt-map[data-zoom="6"] .pt-marker-label{font-size:.58rem;padding:1px 3px;line-height:1.15}
.pt-map[data-zoom="7"] .pt-marker-label{font-size:.64rem;padding:2px 4px;line-height:1.15}
.pt-map[data-zoom="8"] .pt-marker-label{font-size:.70rem;padding:2px 4px;line-height:1.2}
.pt-map[data-zoom="5"] .pt-marker.volunteer .pt-marker-icon,.pt-map[data-zoom="5"] .pt-marker.contact .pt-marker-icon,.pt-map[data-zoom="6"] .pt-marker.volunteer .pt-marker-icon,.pt-map[data-zoom="6"] .pt-marker.contact .pt-marker-icon{width:25px!important;height:25px!important;font-size:15px}
.pt-map[data-zoom="7"] .pt-marker.volunteer .pt-marker-icon,.pt-map[data-zoom="7"] .pt-marker.contact .pt-marker-icon{width:28px!important;height:28px!important;font-size:17px}
.pt-marker-label-collapsed{display:none!important}
.pt-marker:hover .pt-marker-label-collapsed,.pt-marker:focus .pt-marker-label-collapsed{display:block!important;font-size:.72rem!important;padding:3px 5px!important;z-index:35}

/* v1.10.96 - afspraken / agenda */
.appointment-public-shell{max-width:1080px;margin:22px auto}.appointment-steps{display:flex;justify-content:flex-end;gap:8px;margin:0 0 18px}.appointment-steps span{padding:8px 12px;border-radius:999px;border:1px solid var(--line);color:var(--muted);background:var(--card)}.appointment-steps span.active{background:#e8f6fb;border-color:#93cfe4;color:#155b76;font-weight:700}.appointment-public-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.8fr);gap:18px}.appointment-calendar-head{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;text-align:center;margin-bottom:14px}.appointment-calendar-head h2{margin:0}.appointment-calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.appointment-calendar.weekdays{margin-bottom:8px;text-align:center}.appointment-calendar.weekdays b{font-size:.9rem}.appointment-day{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:14px;text-decoration:none;border:1px solid transparent;color:var(--ink);font-weight:650}.appointment-day.available{border-color:#b9deea;background:#f0fbff;color:#11708f}.appointment-day.available:hover{background:#dff5fc;border-color:#78c4dc}.appointment-day.selected{background:#1186a3;color:#fff;border-color:#1186a3}.appointment-day.unavailable{opacity:.28;cursor:default}.appointment-times{display:flex;flex-wrap:wrap;gap:10px}.appointment-times .btn{min-width:88px;text-align:center}.appointment-book-form{margin-top:18px}.appointment-book-form h3{margin-top:22px}.appointment-selected-slot{padding:12px 14px;border-radius:10px;background:#eef8fc;border:1px solid #c5e4ef}.radio-row{display:flex;flex-wrap:wrap;gap:10px 18px;padding:9px 0}.radio-row label{font-weight:500;margin:0}.radio-row input{width:auto}.appointment-address-action{display:flex;flex-direction:column;justify-content:flex-end}.appointment-location-summary{margin-top:18px;padding:14px;border-left:4px solid #55a9c9;background:#eef8fc;border-radius:8px}.appointment-thanks{max-width:680px;margin:60px auto}.appointment-share-link{margin-bottom:16px}.copy-row{display:flex;gap:8px;margin-top:8px}.copy-row input{flex:1}.appointment-status{display:inline-block;padding:4px 9px;border-radius:999px;font-weight:700}.appointment-status.warning,.appointment-row.warning td{background:#fff8db}.appointment-status.success{background:#dcfae6;color:#05603a}.appointment-status.danger{background:#fee4e2;color:#912018}.appointment-rule-form{display:grid;grid-template-columns:1.2fr 1fr 1fr auto;gap:8px;align-items:end;margin-top:15px}.appointment-rule-form .field{margin:0}.appointment-row.success td{background:#f1fbf4}
html[data-theme="dark"] .appointment-steps span.active,html[data-theme="dark"] .appointment-selected-slot,html[data-theme="dark"] .appointment-location-summary{background:#17303a;border-color:#315b69;color:#e7f8ff}html[data-theme="dark"] .appointment-day.available{background:#192f37;border-color:#315a68;color:#d5f4ff}html[data-theme="dark"] .appointment-day.selected{background:#1788a7;color:#fff}html[data-theme="dark"] .appointment-row.warning td{background:#3a351c}html[data-theme="dark"] .appointment-row.success td{background:#173322}
@media(max-width:820px){.appointment-public-grid{grid-template-columns:1fr}.appointment-steps{justify-content:center;flex-wrap:wrap}.appointment-day{min-height:44px}.appointment-rule-form{grid-template-columns:1fr 1fr}.copy-row{flex-direction:column}}
.admin-appointment-calendar-card{margin-bottom:18px}.admin-appointment-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.admin-appointment-calendar.weekdays{text-align:center;margin-bottom:7px}.admin-appointment-day,.admin-appointment-calendar .blank{min-height:112px;border:1px solid var(--line);border-radius:9px;padding:7px;background:var(--card)}.admin-appointment-day.today{outline:2px solid #52a9c8}.appointment-chip{display:block;margin-top:5px;padding:5px 6px;border-radius:6px;text-decoration:none;font-size:.82rem;line-height:1.25;background:#e8eef2;color:var(--ink);overflow:hidden;text-overflow:ellipsis}.appointment-chip.warning{background:#fff3c4}.appointment-chip.success{background:#dff7e6}.appointment-chip span{font-weight:800}.appointment-rule-form button{white-space:nowrap}@media(max-width:900px){.admin-appointment-day{min-height:85px}.appointment-chip{font-size:.72rem}}
html[data-theme="dark"] .appointment-chip{background:#28343b;color:#fff}html[data-theme="dark"] .appointment-chip.warning{background:#4a401d}html[data-theme="dark"] .appointment-chip.success{background:#183b27}

/* Afspraken: gegevens per schildpad en oorspronkelijke inzending. */
.appointment-animal-card{min-width:0;padding:20px;margin:24px 0;border:1px solid var(--line,#a9b7b0);border-radius:14px;background:var(--card,#fff)}
.appointment-animal-card legend{font-size:1.25rem;font-weight:700;padding:0 10px}
.appointment-animal-card[hidden]{display:none!important}
.appointment-animal-card .grid{align-items:start}
.appointment-photo-box{border-top:1px solid var(--line,#a9b7b0);padding-top:12px;margin-top:12px}
.appointment-photo-box [data-preview]{max-width:100%;width:260px;max-height:260px;object-fit:contain;border-radius:8px}
.photo-picker{position:relative;overflow:hidden;cursor:pointer}
.photo-picker input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.photo-picker:focus-within{outline:2px solid currentColor;outline-offset:3px}
.appointment-details{display:grid;grid-template-columns:minmax(130px,1fr) minmax(0,2fr);gap:6px 16px}
.appointment-details dt,.appointment-details dd{overflow-wrap:anywhere;margin:0!important;padding:4px 0}
.appointment-book-form input[name="animal_count"]{max-width:150px}
@media(max-width:650px){.appointment-animal-card{padding:12px}.appointment-details{display:block}.appointment-details dd{margin-bottom:10px!important}.appointment-photo-box .toolbar{flex-wrap:wrap}.appointment-animal-card .span-6{grid-column:span 12}}
.appointment-photo-box [data-remove-photo][hidden],.appointment-photo-box [data-preview][hidden]{display:none!important}

/* v1.10.98: datumacties, gesloten dagen en HTML-mailbeheer. */
.appointment-closed,.admin-appointment-day.appointment-closed{background:#b4232d!important;border:1px solid #8c1520!important;color:#fff!important;opacity:1!important}
.appointment-closed small,.appointment-closed strong,.appointment-closed .calendar-date-action{color:#fff!important}
.appointment-day.appointment-closed{display:flex;flex-direction:column;gap:3px;padding:6px 3px;align-items:center;justify-content:flex-start;overflow-wrap:anywhere}
.appointment-day.appointment-closed small{font-size:.62rem;line-height:1.15}
.calendar-date-action{display:flex;flex-direction:column;gap:5px;text-decoration:none;color:inherit;min-height:54px;padding:3px;overflow-wrap:anywhere}
.calendar-date-action span{font-size:.72rem}.calendar-date-action strong{font-size:1rem}.calendar-date-action:focus-visible{outline:3px solid currentColor;outline-offset:2px}
.appointment-day-closed-panel{border:2px solid #b4232d}
.html-editor{border:1px solid var(--border,#c8d1d9);border-radius:10px;overflow:hidden;margin:10px 0}
.html-toolbar{display:flex;flex-wrap:wrap;gap:6px;padding:10px;background:var(--bg,#f4f6f8);border-bottom:1px solid var(--border,#c8d1d9)}
.html-toolbar button{font-size:.85rem;padding:6px 10px;min-height:34px}
.html-visual{padding:16px;min-height:180px;outline:none;overflow-wrap:anywhere;background:var(--card,#fff);color:var(--text,#172b36)}
.html-visual:focus{box-shadow:inset 0 0 0 2px #087a95}.html-visual a{color:var(--link,#087a95);text-decoration:underline}
.html-source{width:100%;font-family:monospace;padding:14px;min-height:220px}
.html-source[hidden],.html-visual[hidden]{display:none!important}.mail-preview{overflow-wrap:anywhere;border:1px solid var(--border,#c8d1d9);padding:20px;margin:16px 0;border-radius:10px}.mail-preview img{max-width:100%}
.support-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.support-options .card{margin:0 0 20px}
@media(max-width:760px){.support-options{grid-template-columns:1fr}.html-toolbar{gap:4px;padding:7px}.html-toolbar button{font-size:.8rem}.mail-preview{padding:12px}.admin-appointment-day{padding:3px}.calendar-date-action span{font-size:.63rem}.calendar-date-action small{font-size:.6rem}}
@media(max-width:600px){
 .admin-appointment-calendar-card .appointment-calendar-head h2,.appointment-calendar-card .appointment-calendar-head h2{font-size:1.05rem;white-space:normal;text-align:center;margin:0}
 .admin-appointment-calendar-card .appointment-calendar-head{gap:6px}
 .admin-appointment-day{min-height:84px;padding:5px 3px}
 .admin-appointment-day:not(.appointment-closed) .calendar-date-action>span{display:none}
 .calendar-date-action>span{font-size:8px;word-break:normal;overflow-wrap:normal}
 .calendar-date-action>small{font-size:9px;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
 .admin-appointment-day .appointment-chip{font-size:9px;padding:3px 2px}
 .appointment-day.appointment-closed small{font-size:8px;line-height:1.15;max-height:28px;overflow:hidden}
}

/* v1.10.99: focus per intakestap, compacte agenda-acties en leesbaar thema. */
.wizard-panel h2,.wizard-panel input,.wizard-panel select,.wizard-panel textarea{scroll-margin:24px}
.wizard-panel h2:focus{outline:2px solid var(--accent);outline-offset:6px;border-radius:2px}
.appointment-source>summary,.appointment-history-entry>summary{cursor:pointer;font-weight:700;padding:10px 0;color:var(--ink)}
.appointment-source>summary:focus-visible,.appointment-history-entry>summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.appointment-source[open]>summary{margin-bottom:14px;border-bottom:1px solid var(--line)}
.appointment-history-entry{border:1px solid var(--line);border-radius:10px;margin:14px 0;padding:4px 14px;background:var(--card)}
.appointment-history-entry>summary small{display:block;font-weight:400;margin:6px 0 0 20px;color:var(--muted)}
.appointment-history-content{border-top:1px solid var(--line);padding:12px 0}
.appointment-history-events li{margin:8px 0}.appointment-history-content .appointment-source{padding:8px 14px;border:1px solid var(--line);border-radius:8px}
.appointment-icon{display:inline-block;width:20px;height:20px;vertical-align:middle;flex:0 0 auto}
.appointment-admin .btn,.appointment-admin button,.appointment-google{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.appointment-icon-button{display:inline-flex;align-items:center;justify-content:center;min-width:30px;min-height:30px;padding:5px;border:1px solid var(--line);border-radius:6px;background:var(--soft);color:var(--ink);text-decoration:none;cursor:pointer;box-sizing:border-box}
.appointment-icon-button:hover{filter:brightness(.9)}.appointment-icon-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.calendar-quick-actions{display:flex;flex-wrap:wrap;gap:4px;margin:5px 0}.calendar-quick-actions form{display:inline-flex;margin:0}
.calendar-date-action{min-height:0;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap}
.calendar-date-action small{flex:1 0 100%}.calendar-manage-icon .appointment-icon{width:16px;height:16px}
.appointment-calendar-help{line-height:1.8;font-size:.9rem}.appointment-calendar-help .appointment-icon{width:17px;height:17px}
.html-visual{color:var(--ink);background:var(--card)}.html-visual a{color:var(--accent)}
.html-editor,.mail-preview{border-color:var(--line)}
.appointment-admin input::placeholder,.appointment-public-shell input::placeholder{color:var(--muted);opacity:1}
html[data-theme="dark"] .appointment-admin .tabs a.active{background:#235064;color:#fff;border-color:#73b7d0}
html[data-theme="dark"] .appointment-status.warning{background:#493d16;color:#ffecab}
html[data-theme="dark"] .appointment-status.success{background:#18422b;color:#acf2c6}
html[data-theme="dark"] .appointment-status.danger{background:#502322;color:#ffc0ba}
html[data-theme="dark"] .appointment-admin .badge{background:#493d16;color:#ffecab}
html[data-theme="dark"] .appointment-day.unavailable{opacity:1;color:#aab1b7;background:#25292d}
html[data-theme="dark"] .appointment-day.available:hover{background:#294956;color:#fff}
html[data-theme="dark"] .appointment-admin :is(button,.btn),html[data-theme="dark"] .appointment-public-shell :is(button,.btn){background:#235064!important;color:#fff!important;border-color:#467b91!important}
html[data-theme="dark"] .appointment-admin :is(button.secondary,.btn.secondary),html[data-theme="dark"] .appointment-public-shell :is(button.secondary,.btn.secondary){background:#343f49!important;color:#f1f5f8!important;border-color:#657783!important}
html[data-theme="dark"] .appointment-admin :is(button.danger,.btn.danger){background:#692b2a!important;color:#fff!important;border-color:#d98179!important}
html[data-theme="dark"] .appointment-admin .appointment-icon-button{background:#343f49!important;color:#f1f5f8!important;border-color:#657783!important}
html[data-theme="dark"] :is(.appointment-admin,.appointment-public-shell,.appointment-source) :is(.html-visual,.mail-preview,.appointment-html-content),html[data-theme="dark"] :is(.appointment-admin,.appointment-public-shell,.appointment-source) :is(.html-visual,.mail-preview,.appointment-html-content) *{color:#eceeef!important;background-color:#232629!important;border-color:#56616b!important}
html[data-theme="dark"] :is(.appointment-admin,.appointment-public-shell,.appointment-source) :is(.html-visual,.mail-preview,.appointment-html-content) a{color:#9edaff!important;text-decoration:underline}
html[data-theme="dark"] .appointment-closed,html[data-theme="dark"] .admin-appointment-day.appointment-closed{background:#b4232d!important;color:#fff!important}
@media(max-width:600px){
 .admin-appointment-day:not(.appointment-closed) .calendar-date-action>.calendar-manage-icon{display:none}
 .calendar-quick-actions{gap:4px;flex-direction:column;align-items:center}
 .calendar-quick-actions .appointment-icon-button{min-width:28px;min-height:28px;padding:4px}
 .calendar-quick-actions .appointment-icon{width:16px;height:16px}
 .appointment-history-entry{padding:4px 10px}.appointment-history-entry .appointment-status{margin-top:6px}
}
.appointment-admin .tabs a.active{background:#235064;color:#fff}
#intake-wizard .wizard-step{background:var(--soft);color:var(--ink);border:1px solid var(--line)}
#intake-wizard .wizard-step.active{background:#235064;color:#fff;border-color:#73b7d0}
html[data-theme="dark"] #intake-wizard button{background:#235064;color:#fff;border-color:#467b91}
html[data-theme="dark"] #intake-wizard .wizard-step:not(.active),html[data-theme="dark"] #intake-wizard button.secondary{background:#343f49;color:#f1f5f8}
/* v1.12.01: compacte agenda-iconen en betalen na bevestiging. */
.calendar-quick-actions{flex-direction:row;gap:2px;align-items:center}
.calendar-quick-actions .appointment-icon-button{width:22px;min-width:22px;height:22px;min-height:22px;padding:3px;background:transparent!important;border:0;color:inherit!important}
.calendar-quick-actions .appointment-icon{width:16px;height:16px}
.payment-choice{display:flex;align-items:flex-start;gap:10px;margin:14px 0}.payment-choice input{width:auto;flex:0 0 auto;margin-top:4px}
.payment-paid{padding:12px;background:#dff7e6;color:#075b32;border:1px solid #5fae7b;border-radius:8px}
html[data-theme="dark"] .payment-paid{background:#18422b;color:#acf2c6}
.appointment-payment-summary{overflow-wrap:anywhere}.appointment-payment-summary h2{margin-top:0}
@media(max-width:600px){.calendar-quick-actions{flex-direction:row;justify-content:center;gap:0}.calendar-quick-actions .appointment-icon-button{width:20px;min-width:20px;height:22px;min-height:22px;padding:2px}}
html[data-theme] .appointment-admin .calendar-quick-actions .appointment-icon-button{background:transparent!important;color:inherit!important;border:0}
@media(max-width:600px){.calendar-date-action>span:not(.calendar-manage-icon){flex:1 0 100%;max-width:100%;overflow-wrap:anywhere;line-height:1.15}}
.appointment-urgent{display:inline-block;border-radius:5px;padding:3px 7px;background:#fff0d4;color:#64370b;font-size:.8rem;font-weight:750}
.appointment-urgency-box{overflow-wrap:anywhere}
html[data-theme="dark"] .appointment-urgent,html[data-theme="dark"] .appointment-urgency-box{background:#49341a!important;color:#ffe1ad!important;border-color:#997547!important}
.appointment-urgency-form{border:1px solid var(--line);border-radius:10px;margin:20px 0;padding:16px}
#request-urgent-reason[hidden]{display:none!important}

.appointment-attention{background:#fff1cf;color:#523500;border:2px solid #ba8015;border-left-width:8px;border-radius:10px;padding:18px;margin:0 0 22px}.appointment-attention[hidden]{display:none!important}.appointment-attention h2{font-size:1.3rem;margin:0}.appointment-attention a:not(.btn){color:inherit;text-decoration:underline}.appointment-attention li{margin:8px 0}.appointment-attention ul{padding-left:20px}html[data-theme="dark"] .appointment-attention{background:#3c301a;color:#ffe0a0;border-color:#d3a54c}

/* Pushberichten: keep all controls visible on phones. */
.push-channel-table{table-layout:fixed;min-width:0}.push-channel-table th:first-child{width:46%}.push-channel-table th,.push-channel-table td{white-space:normal;overflow-wrap:anywhere}.push-channel-table label{font-weight:400}
@media(max-width:600px){.push-channel-table th,.push-channel-table td{padding:8px 5px;font-size:12px}.push-channel-table label{display:flex;align-items:center;gap:4px}.push-channel-table input{flex:none;margin:0}}

/* Categorieën hoofdmenu en appmenu — 2.2.8 */
.top .main-nav{gap:4px;align-items:flex-start}
.main-nav>a,.nav-category>summary{padding:10px 12px;border-radius:8px;min-height:42px}
.nav-category{position:relative;color:inherit}
.nav-category>summary{display:flex;align-items:center;gap:7px;cursor:pointer;list-style:none;font-weight:600}
.nav-category>summary::-webkit-details-marker{display:none}
.nav-category>summary::after{content:"";width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);margin:0 3px 4px 7px}
.nav-category[open]>summary::after{transform:rotate(225deg);margin-top:5px}
.main-nav>a:hover,.main-nav .nav-category>summary:hover,.main-nav .nav-category[open]>summary{background:#ffffff18}
.nav-category-links{position:absolute;top:100%;left:0;z-index:95;width:280px;max-width:calc(100vw - 24px);max-height:65vh;overflow:auto;padding:6px;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px #0003}
.top .main-nav .nav-category-links a,.pwa-app-menu-panel .nav-category-links a{display:flex;gap:8px;align-items:center;padding:10px;border-radius:6px;color:var(--ink);white-space:normal;min-height:42px}
.top .main-nav .nav-category-links a:hover,.pwa-app-menu-panel .nav-category-links a:hover{background:var(--soft)}
.main-nav a:focus-visible,.nav-category>summary:focus-visible,.pwa-app-menu-panel a:focus-visible{outline:2px solid #76c8ff;outline-offset:2px}
.pwa-app-menu-panel{max-height:calc(100dvh - 100px);overflow:auto;width:300px;max-width:calc(100vw - 24px)}
.pwa-app-menu-panel .nav-category-links{position:static;width:100%;max-height:none;border:0;border-left:2px solid var(--line);border-radius:0;box-shadow:none;padding:0 0 0 8px;margin:2px 0 8px}
.pwa-app-menu-panel .nav-category>summary:hover{background:var(--soft)}
@media(max-width:760px){.top .main-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.main-nav .nav-category[open]{grid-column:1/-1}.main-nav .nav-category-links{position:static;width:100%;max-width:none;max-height:none;margin:4px 0 8px;box-shadow:none}.main-nav .nav-category>summary{font-size:14px}.pwa-app-menu-panel{width:auto}}
@media print{.main-nav,.pwa-app-menu{display:none!important}}

/* Meldkamer: fotoweergave en bronvermelding */
.pt-map-controls select{width:auto;max-width:180px;padding:7px;font-size:13px;background:var(--card);color:var(--ink)}
.pt-map-credit{position:absolute;right:4px;bottom:4px;z-index:15;background:#ffffffe8;color:#17212b;padding:3px 6px;font-size:11px;max-width:95%;text-decoration:none}
@media(max-width:600px){.map-brand{font-size:12px!important;left:8px!important;top:8px!important;max-width:52%;}.map-place{bottom:30px!important;left:8px!important;font-size:12px!important;}.map-screen .pt-map-controls{top:70px!important;right:8px!important;}.map-screen #refresh-map{left:8px!important;top:70px!important;}}
.pt-map-controls{grid-template-columns:repeat(3,1fr);width:180px}.pt-map-controls select{grid-column:1/-1;width:100%;max-width:none}.pt-map-controls button{width:100%}.map-screen .pt-map-controls{left:auto!important;z-index:25}

/* Meldingsfoto's 2.2.19 */
.report-photo-grid{display:flex;flex-wrap:wrap;gap:12px}.report-photo-grid img{width:160px;height:140px;object-fit:contain;border-radius:8px;background:#eee}#report-photo-dialog{max-width:94vw;max-height:94vh;padding:14px;border:0;border-radius:12px}#report-photo-dialog img{display:block;max-width:88vw;max-height:78vh;object-fit:contain;margin-top:10px}#report-photo-dialog::backdrop{background:#000b}

/* 2.2.26: berichtmeldingen blijven los van de instelbare snelkoppelingen bestaan. */
#memo-unread-dashboard[hidden],#memo-prio-dashboard[hidden]{display:none!important}.memo-unread-dashboard{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:1rem}

/* 2.2.47: afdrukformulieren blijven wit, onafhankelijk van het beheerthema. */
html[data-theme] .agreement-sheet,
html[data-theme] .agreement-sheet :is(table,thead,tbody,tfoot,tr,th,td){background:#fff!important;color:#000!important;color-scheme:light}
html[data-theme] .agreement-sheet :is(h1,h2,h3,p,b,strong,i,small,span,a,div){color:#000!important}
html[data-theme] .agreement-sheet .form-table :is(th,td){border-color:#000!important}
.agreement-sheet .follow-box{grid-template-columns:max-content 22mm;justify-content:start;align-items:center;gap:6mm}
.agreement-sheet .follow-box .qr{text-align:left}

/* 2.2.60 Vrijwilligersoverzicht: rustige kaarten en monochrome lijniconen. */
.volunteer-portal-refresh .ui-icon{fill:none;stroke:currentColor;stroke-width:1.6;vertical-align:middle;flex-shrink:0}
.volunteer-portal-refresh .ui-icon path{fill:none;stroke:currentColor;stroke-linejoin:round;stroke-linecap:round}
.volunteer-portal-refresh .volunteer-login-card{padding:32px;border-radius:18px;box-shadow:0 8px 24px #0000000a}
.volunteer-portal-refresh .volunteer-login-symbol{display:flex;align-items:center;justify-content:center;width:60px;height:60px;margin:0 auto 16px;border:1px solid var(--line);border-radius:50%;color:var(--text);background:var(--card)}
.volunteer-portal-refresh .volunteer-login-symbol .ui-icon{width:30px;height:30px}
.volunteer-login-steps{display:flex;justify-content:center;flex-wrap:wrap;gap:12px 24px;margin:22px 0;color:var(--muted);font-size:.9rem}
.volunteer-login-steps span{display:flex;align-items:center;gap:8px}
.volunteer-portal-refresh .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px}
.volunteer-portal-refresh .volunteer-results>h2{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.volunteer-portal-refresh .volunteer-animal-card{border-radius:16px;padding:22px}
.volunteer-portal-refresh .volunteer-animal-head .btn{flex-shrink:0}
.volunteer-portal-refresh .prereg-portal-callout{border-radius:16px;padding:24px}
@media(max-width:620px){.volunteer-portal-refresh .volunteer-login-card{padding:22px}.volunteer-portal-refresh .volunteer-login-symbol{margin-left:0}.volunteer-login-steps{justify-content:flex-start}.volunteer-portal-refresh .volunteer-animal-head .btn{width:100%;margin-top:12px}.volunteer-portal-refresh .volunteer-login-card strong{overflow-wrap:anywhere}}
.volunteer-portal-refresh .public-hero h1{font-size:clamp(1.5rem,4vw,2rem);line-height:1.2;overflow-wrap:anywhere}

/* 2.2.67: zelfstandige blokken scheiden; brede tabellen binnen hun kolom houden. */
body.staff-page .grid>*{min-width:0}
body.staff-page .table-wrap{max-width:100%;min-width:0}
body.staff-page .grid + .card,body.staff-page .grid + .table-wrap,
body.staff-page .card + .card,body.staff-page .card + .table-wrap,
body.staff-page .table-wrap + .card,body.staff-page .table-wrap + .grid,
body.staff-page .card + .grid,body.staff-page .table-wrap + .table-wrap{margin-top:16px}
body.staff-page .grid > .card,body.staff-page .grid > .table-wrap{margin-top:0}

.appointment-sort-heading{display:inline-flex;gap:6px;align-items:center;color:inherit;text-decoration:none}.appointment-sort-heading:hover{text-decoration:underline}.appointment-sort-heading:focus-visible{outline:2px solid currentColor}

/* 2.2.75: compacte afsprakenbediening en afzonderlijke statuskleuren. */
.appointment-admin .toolbar-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.appointment-admin .toolbar-actions>.btn,.appointment-admin [data-appointment-results] td:last-child>.btn,.appointment-admin #copy-appointment-link{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:6px}
.appointment-admin .tabs a{display:inline-flex;align-items:center;gap:4px;padding:6px 9px;font-size:.85rem}
.appointment-admin .appointment-share-link{padding:10px 12px;font-size:.85rem}.appointment-admin .copy-row{margin-top:4px}.appointment-admin .copy-row input{padding:5px 8px;min-width:0}
.appointment-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.state-requested{--status-color:#2168b0}.state-invited{--status-color:#8851bd}.state-pending{--status-color:#9b7600}.state-confirmed{--status-color:#238240}.state-completed{--status-color:#087f87}.state-rejected{--status-color:#b33376}.state-cancelled{--status-color:#64717e}
.appointment-status[class*="state-"]{color:var(--ink);background:color-mix(in srgb,var(--status-color) 20%,var(--card));border:1px solid var(--status-color)}
.appointment-row[class*="state-"]>td{background:color-mix(in srgb,var(--status-color) 9%,var(--card))}.appointment-row[class*="state-"]>td:first-child{border-left:4px solid var(--status-color)}
.appointment-row.priority-high>td{background:color-mix(in srgb,#d52a2a 15%,var(--card))}.appointment-row.priority-high>td:first-child{border-left-color:#d52a2a}
.appointment-urgent,html[data-theme="dark"] .appointment-urgent{background:#b42318!important;color:#fff!important;border-color:#b42318!important}
.appointment-urgency-box,html[data-theme="dark"] .appointment-urgency-box{background:color-mix(in srgb,#d52a2a 15%,var(--card))!important;color:var(--ink)!important;border-color:#d52a2a!important}
.google-already-opened{opacity:.45;cursor:default!important}.google-opened-note{display:inline-flex;align-items:center;gap:4px;max-width:160px;vertical-align:middle}.google-opened-note[hidden]{display:none!important}.google-opened-note small{font-size:11px;line-height:1.2}.google-opened-reset{padding:2px 5px;background:transparent;color:var(--ink);border:1px solid var(--line);font-size:14px}

/* 2.2.81: gedeelde Google-registratie en compact afsprakenzoekvenster. */
.appointment-google-control{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px;vertical-align:middle;max-width:100%}
.appointment-google:disabled{opacity:.45;cursor:default!important}
.google-action-message{display:block;max-width:280px;font-size:12px;line-height:1.4;color:var(--ink)}
.google-action-message:empty{display:none}
.appointment-search label{display:block;font-weight:600;margin-bottom:8px}
.appointment-search-row{display:flex;align-items:center;gap:8px}
.appointment-search-row input{flex:1;min-width:0;width:auto}
.appointment-search-row button,.appointment-search-row .btn{flex:0 0 auto}
.appointment-search-summary{margin:8px 0 0;overflow-wrap:anywhere}
.appointment-search>small{display:block;margin-top:6px}

/* 2.2.82: openbare aanvraagmelding, ook in donkere weergave duidelijk rood. */
.appointment-request-banner{box-sizing:border-box;width:100%;margin:0 0 24px;padding:24px 28px;background:#b91c1c;color:#fff;border:2px solid #991b1b;border-radius:12px;box-shadow:0 4px 16px #7f1d1d26;overflow-wrap:anywhere}
.appointment-request-banner strong{display:block;font-size:clamp(24px,4vw,30px);line-height:1.2;margin-bottom:8px;color:#fff}
.appointment-request-banner div{font-size:clamp(18px,3vw,22px);font-weight:600;line-height:1.5;white-space:normal;color:#fff}
@media(max-width:600px){.appointment-request-banner{padding:20px;margin-bottom:18px}}

/* 2.2.84: verplicht akkoord bij de eerste opvangaanvraag. */
.appointment-terms{margin:20px 0;padding:18px;border:1px solid var(--line);border-radius:10px}
.appointment-terms label{display:flex;align-items:flex-start;gap:12px;cursor:pointer;line-height:1.5}
.appointment-terms input[type="checkbox"]{width:20px;height:20px;flex:0 0 20px;margin:3px 0 0}
.appointment-terms p{margin:10px 0 0 32px;line-height:1.5}
.appointment-terms a,.appointment-terms-confirmation a{text-decoration:underline}

.appointment-request-costs{margin:20px 0;padding:18px;border:1px solid var(--line);border-radius:10px}
.appointment-request-costs h3{margin:0 0 12px}.appointment-request-costs dl{margin:0}
.appointment-request-costs dl>div{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 18px;padding:8px 0;border-bottom:1px solid var(--line)}
.appointment-request-costs dd{margin:0;font-weight:700}.appointment-request-costs p{line-height:1.5}
