.permit-alert{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:16px 18px;border:1px solid #d7e1e8;border-radius:14px;background:#f6f9fb;margin:0 0 18px}
.permit-alert.warning{border-color:#e6bf63;background:#fff8e7}
.permit-alert.error{border-color:#df8d8d;background:#fff0f0}
.permit-alert.reserved{border-color:#8fb6d3;background:#eef7fd}
.permit-alert.active{border-color:#8cc6aa;background:#eef9f3}
.permit-alert h2,.permit-alert h3{margin:0 0 5px;font-size:1rem}
.permit-alert p{margin:0;line-height:1.45}
.permit-alert .button,.permit-alert .portal-button{flex:0 0 auto}
.permit-alert-list{display:grid;gap:10px;margin:0 0 20px}
.permit-alert-row{display:grid;grid-template-columns:minmax(170px,1fr) minmax(260px,2fr) auto;gap:14px;align-items:center;padding:13px 15px;border:1px solid #dbe4ea;border-radius:12px;background:#fff}
.permit-alert-row strong,.permit-alert-row span,.permit-alert-row small{display:block}
.permit-alert-row small{margin-top:3px;color:#5b6b76}
.permit-inline-warning{display:block;margin-top:7px;padding:7px 9px;border-radius:8px;background:#fff3d6;color:#6c4b00;font-weight:700}
.permit-inline-warning.error{background:#ffe7e7;color:#8f2525}
.permit-state{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:999px;font-size:.82rem;font-weight:800;background:#edf1f4;color:#394b58}
.permit-state.active{background:#dff3e8;color:#176642}
.permit-state.warning{background:#fff0c9;color:#795400}
.permit-state.error{background:#ffe0e0;color:#922c2c}
.permit-state.reserved{background:#e1f0fb;color:#245d85}
.permit-document-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:16px 0}
.permit-document-card{display:grid;gap:8px;padding:15px;border:1px solid #dce5eb;border-radius:13px;background:#fafcfd}
.permit-document-card header{display:flex;justify-content:space-between;gap:10px;align-items:center}
.permit-document-card strong,.permit-document-card span,.permit-document-card small{display:block}
.permit-document-card small{color:#60717d}
.permit-document-card .button{justify-self:start}
.permit-manager-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin-top:16px}
.permit-manager-actions form{padding:15px;border:1px solid #dce5eb;border-radius:13px;background:#fff}
.permit-manager-actions label{display:grid;gap:6px;margin-bottom:10px}
.permit-manager-actions input,.permit-manager-actions textarea{width:100%}
.student-data-form .form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.student-data-form .wide{grid-column:span 2}
.student-readonly-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.student-readonly-grid div{padding:12px;border:1px solid #e0e7ec;border-radius:10px;background:#fafcfd}
.student-readonly-grid span,.student-readonly-grid strong{display:block}
.student-readonly-grid span{font-size:.8rem;color:#667783;margin-bottom:3px}
.permit-upload-note{padding:11px 13px;border-radius:10px;background:#eef6fb;margin:12px 0}
@media(max-width:900px){.permit-alert-row{grid-template-columns:1fr}.permit-manager-actions,.student-data-form .form-grid,.student-readonly-grid{grid-template-columns:1fr}.student-data-form .wide{grid-column:auto}}
@media(max-width:640px){.permit-alert{display:grid}.permit-alert .button,.permit-alert .portal-button{width:100%;text-align:center}.permit-document-grid{grid-template-columns:1fr}}

/* Kompatible Darstellung früherer getrennter Innenseiten-Uploads. */
.permit-scan-form{display:grid;gap:16px;margin:18px 0;padding:18px;border:1px solid #d7e2e9;border-radius:16px;background:#f8fbfc}
.permit-manager-scan-form{margin-top:16px}
.permit-scan-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:22px}
.permit-scan-heading h3{margin:.15rem 0 0}
.permit-scan-heading>p{max-width:650px;margin:0;color:#5d707d;line-height:1.5}
.permit-scan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.permit-scan-card{position:relative;display:grid;align-content:start;gap:9px;min-width:0;padding:17px;border:2px dashed #bfd0db;border-radius:15px;background:#fff;cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}
.permit-scan-card:hover{border-color:#5b91b5;background:#f9fcfe}
.permit-scan-card.is-ready{border-style:solid;border-color:#69a985;background:#f3fbf6;box-shadow:0 0 0 3px rgba(65,145,99,.09)}
.permit-scan-card.is-pdf{border-style:solid;border-color:#7aa6c5;background:#f2f8fc}
.permit-scan-step{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#0b3558;color:#fff;font-weight:900}
.permit-scan-card>strong{font-size:1.05rem;color:#183b50}
.permit-scan-card>small{color:#607380;line-height:1.45}
.permit-scan-card input[type=file]{width:100%;max-width:100%;padding:9px;border:1px solid #d3dee5;border-radius:10px;background:#f8fafb;color:#253f50;cursor:pointer}
.permit-scan-card input[type=file]::file-selector-button{margin-right:10px;padding:8px 11px;border:0;border-radius:8px;background:#e4eef4;color:#0b3558;font-weight:850;cursor:pointer}
.permit-scan-selection{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#607380;font-size:.82rem;font-weight:750}
.permit-scan-card.is-ready .permit-scan-selection{color:#23704a}
.permit-scan-preview{width:100%;max-height:230px;object-fit:contain;border:1px solid #d7e2e8;border-radius:10px;background:#fff}
.permit-expiry-field{display:grid;gap:6px;max-width:420px;font-weight:800}
.permit-expiry-field input{width:100%}
.permit-expiry-field small{font-weight:400;color:#607380}
.permit-scan-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.permit-scan-form [data-permit-scan-submit]:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:760px){.permit-scan-grid{grid-template-columns:1fr}.permit-scan-heading{display:grid}.permit-scan-actions{display:grid}.permit-scan-actions .button,.permit-scan-actions .portal-button{width:100%}}

/* Vollständiger Lernfahrausweis-Scan mit lokaler Texterkennung und Fotoausschnitt. */
.permit-profile-heading{align-items:center}
.permit-profile-person{display:flex;align-items:center;gap:13px;min-width:0}
.permit-profile-person h2{margin:.1rem 0 0;overflow-wrap:anywhere}
.permit-profile-person small{display:block;margin-top:2px;color:#61727e}
.permit-profile-photo{display:grid;place-items:center;flex:0 0 auto;width:64px;height:80px;object-fit:cover;border:1px solid #cbd9e2;border-radius:12px;background:#eef3f6;color:#0b3558;font-weight:900;letter-spacing:.04em;box-shadow:0 2px 8px rgba(16,55,78,.08)}
.permit-profile-photo.is-empty{font-size:1.05rem}
.permit-profile-photo-large{width:82px;height:103px;border-radius:14px}
.permit-manager-identity{display:flex;align-items:center;gap:16px;margin:0 0 18px;padding:16px 18px}
.permit-manager-identity h2{margin:.1rem 0 .2rem}
.permit-manager-identity>div>span{color:#60717d;font-weight:750}
.permit-student-name-cell{display:flex;align-items:center;gap:10px;min-width:190px}
.permit-student-name-cell>span:last-child{display:grid;gap:2px}
.permit-student-name-cell small{display:block;color:#60717d}
.permit-list-photo{display:grid;place-items:center;flex:0 0 auto;width:38px;height:48px;object-fit:cover;border:1px solid #d2dde4;border-radius:8px;background:#eef3f6;color:#0b3558;font-size:.72rem;font-weight:900}

.permit-full-scan-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 13px;align-items:start;padding:18px;border:2px dashed #b9ccd8;border-radius:15px;background:#fff;cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}
.permit-full-scan-card:hover{border-color:#5b91b5;background:#f9fcfe}
.permit-full-scan-card.is-ready{border-style:solid;border-color:#69a985;background:#f3fbf6;box-shadow:0 0 0 3px rgba(65,145,99,.09)}
.permit-full-scan-card>span:nth-child(2){display:grid;gap:4px}
.permit-full-scan-card>span:nth-child(2)>strong{font-size:1.05rem;color:#183b50}
.permit-full-scan-card>span:nth-child(2)>small{color:#607380;line-height:1.45}
.permit-full-scan-card input[type=file],.permit-full-scan-card .permit-scan-selection{grid-column:2}
.permit-full-scan-card input[type=file]{width:100%;max-width:100%;padding:9px;border:1px solid #d3dee5;border-radius:10px;background:#f8fafb;color:#253f50;cursor:pointer}
.permit-full-scan-card input[type=file]::file-selector-button{margin-right:10px;padding:8px 11px;border:0;border-radius:8px;background:#e4eef4;color:#0b3558;font-weight:850;cursor:pointer}

.permit-scan-workspace{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:16px;align-items:start}
.permit-scan-preview-panel,.permit-portrait-panel,.permit-ocr-panel{display:grid;gap:12px;padding:15px;border:1px solid #d7e2e9;border-radius:14px;background:#fff;min-width:0}
.permit-scan-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.permit-scan-panel-head>div{display:flex;align-items:center;gap:9px}
.permit-scan-panel-head>div>span{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#0b3558;color:#fff;font-size:.78rem;font-weight:900}
.permit-scan-panel-head>small{max-width:360px;color:#607380;text-align:right;line-height:1.4}
.permit-full-scan-preview{display:block;width:100%;max-height:600px;object-fit:contain;border:1px solid #d9e3e9;border-radius:10px;background:#f3f6f8}

.permit-crop-stage{position:relative;width:100%;line-height:0;overflow:hidden;border:1px solid #d9e3e9;border-radius:10px;background:#eef2f4;touch-action:none;user-select:none}
.permit-crop-stage>img{display:block;width:100%;height:auto;max-height:520px;object-fit:contain}
.permit-crop-box{position:absolute;left:4.5%;top:34%;width:20%;aspect-ratio:4/5;border:3px solid #fff;border-radius:7px;box-shadow:0 0 0 2px #0b3558,0 0 0 9999px rgba(5,25,40,.38);cursor:move;touch-action:none;outline:none}
.permit-crop-box:focus{box-shadow:0 0 0 3px #f3b529,0 0 0 9999px rgba(5,25,40,.38)}
.permit-crop-handle{position:absolute;right:-9px;bottom:-9px;width:21px;height:21px;border:3px solid #fff;border-radius:50%;background:#0b3558;box-shadow:0 1px 5px rgba(0,0,0,.3);cursor:nwse-resize}
.permit-portrait-result{display:flex;align-items:center;gap:12px;padding:11px;border:1px solid #dce6eb;border-radius:11px;background:#f8fbfc}
.permit-portrait-result img{flex:0 0 auto;width:72px;height:90px;object-fit:cover;border:1px solid #c9d6de;border-radius:9px;background:#fff}
.permit-portrait-result p{margin:0;color:#607380;line-height:1.42}

.permit-ocr-panel{gap:14px}
.permit-ocr-status{padding:10px 12px;border-radius:10px;background:#eef6fb;color:#254d66;font-weight:800;line-height:1.45}
.permit-ocr-status.is-error{background:#fff2df;color:#794e00}
.permit-ocr-progress{height:7px;overflow:hidden;border-radius:999px;background:#e3ebf0}
.permit-ocr-progress>span{display:block;width:0;height:100%;border-radius:inherit;background:#1478a8;transition:width .18s ease}
.permit-ocr-privacy{margin:0;color:#607380;line-height:1.5}
.permit-extracted-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.permit-extracted-grid label{display:grid;gap:5px;font-weight:800}
.permit-extracted-grid input{width:100%}
.permit-extracted-grid .span-2{grid-column:span 2}
.permit-apply-data{padding:12px;border:1px solid #cfe0e8;border-radius:11px;background:#f4fafc}
.permit-apply-data small{display:block;margin-top:4px;color:#607380;font-weight:400;line-height:1.4}
.permit-ocr-raw{border-top:1px solid #e1e8ec;padding-top:10px}
.permit-ocr-raw summary{cursor:pointer;font-weight:850;color:#0b3558}
.permit-ocr-raw textarea{width:100%;margin-top:9px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.78rem;background:#f7f9fa}
.permit-existing-portrait{display:flex;align-items:center;gap:10px;margin:0;padding:10px 12px;border-radius:10px;background:#f0f5f8;color:#536873}
.permit-existing-portrait img{width:38px;height:48px;object-fit:cover;border-radius:6px}
.permit-saved-scan-data{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0 16px}
.permit-saved-scan-data>div{padding:10px 12px;border:1px solid #dce5ea;border-radius:10px;background:#fafcfd}
.permit-saved-scan-data span,.permit-saved-scan-data strong{display:block}
.permit-saved-scan-data span{margin-bottom:3px;color:#60717d;font-size:.76rem;font-weight:750}
.permit-saved-scan-data strong{overflow-wrap:anywhere}

/* Patch 23: Das unveränderte Upload-Original ist vor dem Ersatzformular sofort
   sichtbar und kann für die OCR-Kontrolle geöffnet oder heruntergeladen werden. */
.permit-original-review{display:grid;gap:14px;margin:16px 0 20px;padding:16px;border:1px solid #cbdde7;border-radius:15px;background:#f4f9fc}
.permit-original-review>header{display:flex;align-items:flex-start;justify-content:space-between;gap:22px}
.permit-original-review>header h3{margin:.1rem 0 0;color:#183b50}
.permit-original-review>header>p{max-width:660px;margin:0;color:#536a78;line-height:1.5}
.permit-original-review-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:14px}
.permit-original-card{display:grid;grid-template-columns:minmax(260px,1.2fr) minmax(220px,.8fr);min-width:0;overflow:hidden;border:1px solid #d3e0e7;border-radius:13px;background:#fff;box-shadow:0 3px 12px rgba(20,63,88,.06)}
.permit-original-preview{display:grid;place-items:center;min-height:230px;padding:10px;border-right:1px solid #dbe5ea;background:#edf3f6;text-decoration:none}
.permit-original-preview img{display:block;width:100%;height:100%;max-height:360px;object-fit:contain;border-radius:8px;background:#fff}
.permit-original-preview>span{display:grid;place-items:center;gap:8px;color:#0b3558;text-align:center}
.permit-original-preview>span b{display:grid;place-items:center;width:74px;height:88px;border:2px solid #86a8bb;border-radius:9px;background:#fff;font-size:1.2rem}
.permit-original-preview>span small{font-weight:800}
.permit-original-card-body{display:grid;align-content:start;gap:10px;min-width:0;padding:16px}
.permit-original-card-body>header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.permit-original-card-body>span{overflow-wrap:anywhere;color:#294a5d;font-weight:800}
.permit-original-card-body>small{color:#647986;line-height:1.45}
.permit-original-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.permit-ocr-quality-note{margin:0;padding:10px 12px;border-left:4px solid #4f8bad;border-radius:8px;background:#fff;color:#4d6573;line-height:1.5}

@media(max-width:1050px){
  .permit-scan-workspace{grid-template-columns:1fr}
  .permit-saved-scan-data{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .permit-original-review>header{display:grid}
  .permit-original-review-grid{grid-template-columns:1fr}
  .permit-original-card{grid-template-columns:1fr}
  .permit-original-preview{min-height:190px;border-right:0;border-bottom:1px solid #dbe5ea}
  .permit-original-actions{display:grid}
  .permit-original-actions .button{width:100%;text-align:center}
  .permit-full-scan-card{grid-template-columns:auto minmax(0,1fr)}
  .permit-full-scan-card input[type=file],.permit-full-scan-card .permit-scan-selection{grid-column:1/-1}
  .permit-extracted-grid,.permit-saved-scan-data{grid-template-columns:1fr}
  .permit-extracted-grid .span-2{grid-column:auto}
  .permit-scan-panel-head{display:grid}
  .permit-scan-panel-head>small{text-align:left}
  .permit-manager-identity{align-items:flex-start}
}

.permit-manager-last-login{display:block;margin-top:5px;color:#647482;font-size:.82rem}

/* Patch 24: getrennte Ausweisnummern, Referenz kopieren und OCR-Rohtext prüfen. */
.permit-value-with-copy{display:flex!important;align-items:center;gap:7px;min-width:0}
.permit-value-with-copy strong{min-width:0;overflow-wrap:anywhere}
.permit-copy-button{display:inline-grid;flex:0 0 auto;width:30px;height:30px;padding:5px;place-items:center;border:1px solid #bdd0db;border-radius:8px;background:#fff;color:#0b5f8f;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease}
.permit-copy-button:hover,.permit-copy-button:focus-visible{border-color:#4f8bad;background:#eef7fb;color:#063f61;outline:none}
.permit-copy-button:active{transform:translateY(1px)}
.permit-copy-button.is-copied{border-color:#5baf78;background:#e9f8ee;color:#17633a}
.permit-copy-button svg{display:block;width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.permit-number-editor{display:grid;gap:14px;margin:14px 0 18px;padding:16px;border:1px solid #cbdde7;border-radius:15px;background:#f8fbfd}
.permit-number-editor-head,.permit-saved-ocr-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.permit-number-editor-head h3,.permit-saved-ocr-head h3{margin:.1rem 0 0;color:#183b50}
.permit-number-editor-head>p{max-width:650px;margin:0;color:#536a78;line-height:1.5}
.permit-number-editor-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.permit-number-editor-grid label{display:grid;gap:5px;min-width:0;font-weight:800;color:#294655}
.permit-number-editor-grid input{width:100%;font-variant-numeric:tabular-nums;letter-spacing:.025em}
.permit-number-editor-grid small{color:#607380;font-weight:400;line-height:1.4}
.permit-number-editor>.button{justify-self:start}
.permit-ocr-raw-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.permit-ocr-raw [data-permit-ocr-raw-panel]{margin-top:9px}
.permit-ocr-raw textarea,.permit-saved-ocr textarea{box-sizing:border-box;width:100%;margin-top:0;padding:11px;border:1px solid #ccd9e0;border-radius:9px;background:#f7f9fa;color:#243e4d;font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace;font-size:.78rem;line-height:1.45;white-space:pre-wrap}
.permit-saved-ocr{display:grid;gap:12px;margin:14px 0 18px;padding:16px;border:1px solid #d6e2e8;border-radius:15px;background:#fff}
.permit-saved-ocr-head{align-items:center}
.permit-saved-ocr [hidden]{display:none!important}

@media(max-width:900px){
  .permit-number-editor-grid{grid-template-columns:1fr}
  .permit-number-editor-head,.permit-saved-ocr-head{display:grid}
}
@media(max-width:700px){
  .permit-ocr-raw-actions{display:grid;grid-template-columns:1fr}
  .permit-ocr-raw-actions .button{width:100%;text-align:center}
  .permit-number-editor>.button{width:100%}
}
