:root{
 --navy:#1b2951;--navy-2:#101a35;--gold:#c99b3f;--teal:#0f7173;--ink:#17213a;--muted:#697386;--line:#e2e6ed;--surface:#fff;--surface-2:#f5f7fa;--surface-3:#eef1f5;--danger:#b42318;--danger-bg:#fff1f0;--success:#067647;--success-bg:#ecfdf3;--warning:#b54708;--warning-bg:#fffaeb;--shadow:0 12px 30px rgba(16,26,53,.08);--radius:14px;--sidebar:250px;
}
[data-theme="dark"]{--ink:#edf1f7;--muted:#aab4c5;--line:#303b50;--surface:#172137;--surface-2:#0f1728;--surface-3:#202b43;--shadow:0 12px 30px rgba(0,0,0,.25);--danger-bg:#3a1717;--success-bg:#103226;--warning-bg:#342812}
*{box-sizing:border-box}html{font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--surface-2);line-height:1.45}body{margin:0;min-height:100vh}a{color:var(--navy);text-decoration:none}[data-theme="dark"] a{color:#d9b96c}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button{cursor:pointer}img{max-width:100%}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:var(--surface-3);padding:2px 6px;border-radius:5px}.hidden{display:none!important}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.muted{color:var(--muted)}.small-text{font-size:.82rem}.eyebrow{margin:0 0 6px;text-transform:uppercase;letter-spacing:.13em;font-size:.72rem;font-weight:800;color:var(--teal)}
.app-shell{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:linear-gradient(180deg,var(--navy-2),var(--navy));color:#fff;padding:22px 14px;display:flex;flex-direction:column;z-index:40;overflow-y:auto}.brand{display:flex;align-items:center;gap:11px;color:inherit!important;text-decoration:none!important}.brand-symbol{width:42px;height:42px;border-radius:10px;background:linear-gradient(135deg,var(--gold),#e6c979);color:var(--navy-2);display:inline-grid;place-items:center;font-weight:900;letter-spacing:.04em;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}.brand-symbol.large{width:58px;height:58px;font-size:1.15rem}.brand strong{display:block;font-size:.94rem}.brand small{display:block;color:rgba(255,255,255,.66);font-size:.72rem;margin-top:1px}.nav-list{display:grid;gap:4px;margin-top:34px}.nav-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:9px;color:rgba(255,255,255,.74)!important;font-size:.9rem;font-weight:650;text-decoration:none!important;border:0;background:transparent;width:100%;text-align:left}.nav-item span{width:20px;text-align:center;font-size:1rem}.nav-item:hover{background:rgba(255,255,255,.08);color:#fff!important}.nav-item.active{background:rgba(201,155,63,.2);color:#fff!important;box-shadow:inset 3px 0 0 var(--gold)}.sidebar-logout{margin-top:auto}.nav-item.logout{margin-top:24px;border-top:1px solid rgba(255,255,255,.12);border-radius:0;padding-top:18px}.app-main{grid-column:2;min-width:0}.topbar{height:68px;position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--surface) 93%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px}.top-actions{display:flex;align-items:center;gap:10px}.user-chip{background:var(--surface-3);padding:7px 11px;border-radius:999px;font-size:.82rem;font-weight:700}.content-area{padding:30px;max-width:1700px;margin:0 auto}.mobile-menu{display:none!important}
.page-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:24px}.page-header h1{font-size:clamp(1.5rem,2vw,2.15rem);line-height:1.1;margin:0 0 8px;letter-spacing:-.035em}.page-header p:not(.eyebrow){margin:0;color:var(--muted);max-width:760px}.header-actions,.form-actions,.card-actions,.row-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.page-header>.header-actions{justify-content:flex-end}
.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;border-radius:9px;padding:10px 15px;font-weight:750;font-size:.88rem;line-height:1.15;text-decoration:none!important;transition:.15s ease}.button.primary{background:var(--navy);color:#fff!important;border-color:var(--navy)}.button.primary:hover{background:#26396c}.button.secondary{background:var(--surface);border-color:var(--line);color:var(--ink)!important}.button.secondary:hover{border-color:var(--gold);background:var(--surface-2)}.button.danger{background:var(--danger);color:#fff!important}.button.small{padding:7px 11px;font-size:.8rem}.button.wide{width:100%}.button:disabled{opacity:.5;cursor:not-allowed}.link{border:0;background:none;padding:0;color:var(--navy);font-weight:700}.link.danger{color:var(--danger)}.icon-button{border:1px solid var(--line);background:var(--surface);color:var(--ink);width:36px;height:36px;border-radius:8px;display:inline-grid;place-items:center;text-decoration:none!important}.icon-button:hover{border-color:var(--gold)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin-bottom:22px;min-width:0}.panel.narrow{max-width:820px}.panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}.panel-header h2{font-size:1.02rem;margin:0 0 4px}.panel-header p{font-size:.84rem;color:var(--muted);margin:0}.two-column{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(320px,1fr);gap:22px}.two-column.wide-left{grid-template-columns:minmax(0,2fr) minmax(290px,.72fr)}.certificate-detail-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,.8fr);gap:22px}.settings-layout{display:grid;grid-template-columns:1fr 1fr;gap:22px}.settings-layout>.panel:first-of-type{grid-column:1}.settings-layout>.panel:nth-of-type(2){grid-column:2}.settings-layout>.panel:nth-of-type(3){grid-column:1/3}.sticky-actions{grid-column:1/3;position:sticky;bottom:12px;justify-content:flex-end;background:var(--surface);border:1px solid var(--line);padding:12px 16px;border-radius:12px;box-shadow:var(--shadow);z-index:10}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.metric-grid.three{grid-template-columns:repeat(3,1fr)}.metric-card{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:19px;box-shadow:var(--shadow);display:grid;gap:6px}.metric-card span{color:var(--muted);font-size:.78rem;font-weight:750;text-transform:uppercase;letter-spacing:.05em}.metric-card strong{font-size:1.75rem;line-height:1}.metric-card small{color:var(--muted)}
.alert{border:1px solid var(--line);border-left-width:4px;border-radius:9px;padding:12px 14px;margin-bottom:16px;background:var(--surface);font-size:.9rem}.alert.success{border-left-color:var(--success);background:var(--success-bg);color:var(--success)}.alert.error,.alert.danger{border-left-color:var(--danger);background:var(--danger-bg);color:var(--danger)}.alert.warning{border-left-color:var(--warning);background:var(--warning-bg);color:var(--warning)}.notice{margin-top:16px;border:1px solid var(--line);background:var(--surface-2);border-radius:9px;padding:12px;font-size:.82rem;color:var(--muted)}.notice.danger{border-color:#f7b4ae;background:var(--danger-bg);color:var(--danger)}
.form-stack{display:grid;gap:15px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.span-2{grid-column:span 2}.span-3{grid-column:span 3}label{display:grid;gap:6px;font-size:.82rem;font-weight:750;color:var(--ink)}label small{font-weight:450;color:var(--muted)}input,select,textarea{width:100%;border:1px solid #cfd5df;background:var(--surface);color:var(--ink);border-radius:8px;padding:9px 10px;outline:none;min-height:39px}input[type=color]{padding:3px;height:42px}input[type=checkbox],input[type=radio]{width:auto;min-height:0}input:focus,select:focus,textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,113,115,.14)}textarea{resize:vertical}.inline-filter{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.inline-filter input{min-width:220px}.inline-filter select{width:auto;min-width:150px}.custom-size-fields{display:none;grid-template-columns:1fr 1fr;gap:10px}.custom-size-fields.show{display:grid}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px}table{width:100%;border-collapse:collapse;font-size:.84rem;min-width:720px}th,td{padding:11px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}th{background:var(--surface-2);color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;position:sticky;top:0;z-index:2}tr:last-child td{border-bottom:0}tbody tr:hover{background:color-mix(in srgb,var(--surface-2) 65%,transparent)}td strong{display:block}.table-sub{display:block;color:var(--muted);font-size:.73rem;margin-top:2px}.row-actions form{display:inline}.selection-bar{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 0}
.status{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:.7rem;font-weight:800;text-transform:capitalize;background:var(--surface-3);color:var(--muted);white-space:nowrap}.status.active,.status.valid,.status.completed,.status.imported{background:var(--success-bg);color:var(--success)}.status.revoked,.status.failed{background:var(--danger-bg);color:var(--danger)}.status.processing,.status.preparing,.status.ready,.status.generated{background:#eef4ff;color:#175cd3}.status.draft,.status.pending{background:var(--warning-bg);color:var(--warning)}.status.replaced,.status.partially_completed{background:#f4f3ff;color:#6938ef}
.empty-state{text-align:center;padding:50px 20px}.empty-state.compact{padding:24px}.empty-state h1,.empty-state h2,.empty-state h3{margin:10px 0 6px}.empty-state p,.compact-empty{color:var(--muted)}.empty-icon{width:58px;height:58px;margin:auto;display:grid;place-items:center;border-radius:50%;background:var(--surface-3);font-weight:900;color:var(--navy)}.compact-empty{padding:25px;text-align:center;border:1px dashed var(--line);border-radius:9px}.activity-list{display:grid}.activity-item{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:11px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line);text-decoration:none!important;color:var(--ink)!important}.activity-item:last-child{border-bottom:0}.activity-item strong{font-size:.86rem}.activity-item small{display:block;color:var(--muted);font-size:.74rem}.activity-avatar{width:36px;height:36px;border-radius:9px;background:var(--surface-3);display:grid;place-items:center;color:var(--navy);font-weight:850;font-size:.78rem}
.asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}.asset-card{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}.asset-preview{height:130px;display:grid;place-items:center;background:repeating-conic-gradient(#f4f5f7 0 25%,#fff 0 50%) 50%/18px 18px;padding:10px}.asset-preview img{max-height:100%;object-fit:contain}.asset-meta{padding:11px}.asset-meta strong{display:block;font-size:.83rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asset-meta small{display:block;color:var(--muted);font-size:.7rem;margin:3px 0 8px}
.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}.template-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface);transition:.15s}.template-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.template-thumb{height:180px;display:grid;place-items:center;background:#e9edf3;padding:14px}.template-thumb img{width:100%;height:100%;object-fit:contain}.template-placeholder{width:92%;height:90%;background:#fff;border:7px solid var(--navy);box-shadow:inset 0 0 0 3px var(--gold);display:grid;place-items:center;color:var(--navy);font-size:1.8rem;font-weight:900}.template-placeholder small{font-size:.65rem;font-weight:650}.template-info{padding:15px}.template-title{display:flex;justify-content:space-between;gap:9px;align-items:start}.template-title h3{font-size:.95rem;margin:0}.template-info p{color:var(--muted);font-size:.78rem;min-height:36px}.template-info>small{color:var(--muted);font-size:.68rem}.card-actions{margin-top:13px;border-top:1px solid var(--line);padding-top:12px}
.upload-zone{border:2px dashed #c7ced9;border-radius:12px;padding:28px;display:grid;place-items:center;text-align:center;background:var(--surface-2)}.upload-zone input[type=file]{position:absolute;opacity:0;pointer-events:none}.upload-zone label{display:grid;place-items:center;cursor:pointer}.upload-zone label strong{font-size:1rem}.upload-zone label small{color:var(--muted)}.upload-icon{font-size:2rem;color:var(--teal);margin-bottom:6px}.mapping-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.mapping-card{border:1px solid var(--line);border-radius:9px;padding:11px;display:grid;gap:7px}.mapping-card strong{font-size:.78rem}.import-table{max-height:520px}.import-table input{min-width:130px;border-color:transparent;background:transparent}.import-table input:focus{background:var(--surface);border-color:var(--teal)}
.batch-create-layout{display:grid;grid-template-columns:minmax(320px,.85fr) minmax(0,1.4fr);gap:22px}.participant-selector{border:1px solid var(--line);border-radius:9px;max-height:520px;overflow:auto}.selector-all,.participant-option{display:flex;grid-template-columns:auto 1fr;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line);cursor:pointer}.selector-all{position:sticky;top:0;background:var(--surface-2);z-index:2}.participant-option:last-child{border-bottom:0}.participant-option:hover{background:var(--surface-2)}.participant-option span{display:block}.participant-option strong{display:block;font-size:.84rem}.participant-option small{display:block;color:var(--muted);font-weight:450;font-size:.72rem}.participant-option.hidden{display:none}
.details-list,.verification-details{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:0}.details-list div,.verification-details div{padding:12px 0;border-bottom:1px solid var(--line)}.details-list div:nth-child(odd),.verification-details div:nth-child(odd){padding-right:18px}.details-list dt,.verification-details dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800}.details-list dd,.verification-details dd{margin:4px 0 0;font-weight:650}.verification-details .verification-wide{grid-column:1/-1;padding-right:0}.timeline{display:grid}.timeline-item{display:grid;grid-template-columns:18px 1fr;gap:10px}.timeline-item>span{width:10px;height:10px;border-radius:50%;background:var(--gold);margin-top:6px;position:relative}.timeline-item>span:after{content:"";position:absolute;top:10px;left:4px;width:2px;height:calc(100% + 28px);background:var(--line)}.timeline-item:last-child>span:after{display:none}.timeline-item>div{padding-bottom:25px}.timeline-item p{margin:3px 0;color:var(--muted);font-size:.84rem}.timeline-item small{color:var(--muted)}
.public-body{background:radial-gradient(circle at top left,rgba(201,155,63,.12),transparent 35%),var(--surface-2);display:flex;flex-direction:column}.public-header{height:78px;padding:0 max(24px,5vw);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--surface)}.public-header .brand{color:var(--ink)!important}.public-header .brand small{color:var(--muted)}.public-main{width:min(960px,calc(100% - 32px));margin:auto;padding:45px 0;flex:1}.public-footer{text-align:center;padding:20px;color:var(--muted);font-size:.75rem}.auth-card,.verify-hero,.verify-result,.install-shell{max-width:620px;margin:30px auto;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:34px}.auth-brand{display:flex;align-items:center;gap:16px;margin-bottom:28px}.auth-brand h1{margin:0}.auth-brand p{margin:3px 0;color:var(--muted)}.auth-note{text-align:center;color:var(--muted);font-size:.8rem;margin:18px 0 0}.verify-hero,.verify-result{text-align:center}.verify-badge,.verify-icon{width:70px;height:70px;border-radius:50%;display:grid;place-items:center;margin:0 auto 15px;background:var(--success-bg);color:var(--success);font-size:2rem;font-weight:900}.verify-result.invalid .verify-icon{background:var(--danger-bg);color:var(--danger)}.verify-hero h1,.verify-result h1{font-size:2rem;margin:4px 0 10px}.verify-hero>p:not(.eyebrow),.verify-result>p:not(.eyebrow){color:var(--muted)}.verify-form{display:flex;gap:9px;margin:24px 0}.verify-form input{font-family:ui-monospace,Consolas,monospace;text-transform:uppercase}.verify-security{font-size:.76rem;color:var(--muted);border-top:1px solid var(--line);padding-top:15px}.verification-details{text-align:left;margin:24px 0}.verification-time{display:block;color:var(--muted);margin-top:18px}.install-page{padding:30px;background:var(--surface-2)}.install-shell{max-width:700px}.install-shell>.brand-mark{display:grid;place-items:center;width:60px;height:60px;border-radius:13px;background:var(--navy);color:#fff;font-weight:900}.config-check{background:var(--surface-2);border:1px solid var(--line);padding:12px;border-radius:9px;margin:15px 0;font-family:ui-monospace,monospace;font-size:.82rem}
/* Visual editor */
.editor-page{margin:-30px;min-height:calc(100vh - 68px);display:flex;flex-direction:column;background:#dfe4eb}.editor-toolbar{height:58px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:8px 14px;gap:12px;position:sticky;top:68px;z-index:25}.toolbar-group{display:flex;align-items:center;gap:7px}.editor-mobile-toggle{display:none}.editor-name{border:0;background:transparent;font-weight:800;min-width:220px}.editor-name:focus{box-shadow:none;border-bottom:1px solid var(--teal);border-radius:0}.save-state{font-size:.7rem;color:var(--success);white-space:nowrap}.save-state.unsaved{color:var(--warning)}.editor-shell{display:grid;grid-template-columns:190px minmax(0,1fr) 300px;min-height:calc(100vh - 126px)}.editor-tools,.editor-properties{background:var(--surface);overflow:auto;max-height:calc(100vh - 126px);position:sticky;top:126px}.editor-tools{border-right:1px solid var(--line);padding:14px}.editor-properties{border-left:1px solid var(--line)}.editor-tools h2{font-size:.73rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:8px 0 10px}.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.tool-grid button{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:9px 4px;font-size:.68rem;display:grid;gap:3px;place-items:center;color:var(--ink)}.tool-grid button span{font-size:1rem;font-weight:800}.tool-grid button:hover{border-color:var(--gold)}.asset-picker{display:grid;gap:6px;max-height:280px;overflow:auto}.asset-pick{display:grid;grid-template-columns:36px 1fr;align-items:center;gap:7px;border:1px solid var(--line);border-radius:7px;background:var(--surface);padding:5px;text-align:left;color:var(--ink)}.asset-pick img{width:34px;height:30px;object-fit:contain;background:#fff}.asset-pick span{font-size:.68rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asset-pick.selected{border-color:var(--teal);box-shadow:0 0 0 2px rgba(15,113,115,.1)}.editor-tools>.button{margin-top:9px}.editor-workspace{min-width:0;display:flex;flex-direction:column;overflow:hidden}.canvas-actions{height:42px;background:#cfd5df;border-bottom:1px solid #b7c0cc;display:flex;align-items:center;justify-content:center;gap:7px;font-size:.72rem}.canvas-actions button{border:1px solid #aeb8c5;background:#fff;border-radius:6px;min-width:28px;height:27px}.canvas-actions label{display:flex;align-items:center;gap:4px;color:#303b50;font-size:.7rem}.canvas-scroller{flex:1;overflow:auto;display:grid;place-items:center;padding:28px;min-height:500px}.canvas-stage{position:relative;box-shadow:0 16px 40px rgba(10,20,40,.28);background:#fff;flex:0 0 auto}.canvas-stage.grid:after{content:"";pointer-events:none;position:absolute;inset:0;background-image:linear-gradient(rgba(15,113,115,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(15,113,115,.12) 1px,transparent 1px);background-size:20px 20px}.center-guide{position:absolute;background:#eb4d8a;z-index:8;pointer-events:none;opacity:.6}.center-guide.vertical{top:0;bottom:0;width:1px}.center-guide.horizontal{left:0;right:0;height:1px}.property-tabs{display:grid;grid-template-columns:1fr 1fr 1fr;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface);z-index:3}.property-tabs button{border:0;background:transparent;padding:12px 4px;font-size:.7rem;font-weight:800;color:var(--muted);border-bottom:2px solid transparent}.property-tabs button.active{color:var(--ink);border-bottom-color:var(--gold)}.property-panel{display:none;padding:14px}.property-panel.active{display:block}.property-form{display:grid;gap:10px}.property-form label{font-size:.7rem}.property-form input,.property-form select,.property-form textarea{padding:7px 8px;min-height:34px;font-size:.76rem}.button-row{display:flex;gap:5px}.button-row.spread{justify-content:space-between}.button-row>button:not(.button){width:32px;height:30px;border:1px solid var(--line);background:var(--surface-2);border-radius:6px}.layer-list{display:grid;gap:5px}.layer-row{display:grid;grid-template-columns:minmax(0,1fr) 28px 28px;gap:3px;border:1px solid var(--line);border-radius:7px;padding:3px}.layer-row.active{border-color:var(--teal);background:rgba(15,113,115,.06)}.layer-main{border:0;background:transparent;text-align:left;min-width:0}.layer-main span{display:block;font-size:.7rem;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-main small{display:block;font-size:.58rem;color:var(--muted)}.layer-eye,.layer-lock{border:0;background:transparent;font-size:.7rem}.modal{position:fixed;inset:0;background:rgba(5,12,26,.62);z-index:100;display:none;place-items:center;padding:20px}.modal.open{display:grid}.modal-card{width:min(600px,100%);max-height:90vh;overflow:auto;background:var(--surface);border-radius:15px;padding:20px;box-shadow:0 28px 70px rgba(0,0,0,.35)}.modal-card.wide{width:min(1000px,100%)}.modal-header{display:flex;justify-content:space-between;gap:12px}.modal-header h2{margin:0}.modal-header p{margin:4px 0;color:var(--muted)}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}
.asset-editor-notice{margin:0;padding:9px 15px;border-bottom:1px solid var(--line);font-size:.78rem;background:var(--warning-bg);color:var(--warning)}.asset-editor-notice.error{background:var(--danger-bg);color:var(--danger)}.asset-editor-notice.success{background:var(--success-bg);color:var(--success)}.asset-editor-actions{display:grid;gap:8px}.asset-editor-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.asset-editor-action-grid .button{white-space:normal;min-height:42px;padding:7px}.asset-editor-actions p{margin:2px 0 0;line-height:1.35}.image-property-actions{display:grid;gap:8px;padding:9px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}.background-asset-summary{padding:9px;border:1px dashed var(--line);border-radius:8px;color:var(--muted);font-size:.72rem;overflow-wrap:anywhere}.background-buttons{display:grid;grid-template-columns:1fr 1fr 1fr}.background-buttons .button{padding:7px 5px}.asset-picker-modal{display:grid;grid-template-rows:auto auto auto minmax(180px,1fr) auto auto;gap:14px;overflow:hidden;max-height:min(90vh,820px)}.asset-picker-controls{display:grid;grid-template-columns:minmax(220px,1fr) minmax(180px,.45fr) auto;gap:12px;align-items:end}.asset-picker-controls .button{min-height:39px}.asset-picker-status{min-height:22px;color:var(--muted);font-size:.82rem}.asset-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;overflow:auto;min-height:180px;max-height:48vh;padding:2px}.asset-option{position:relative;display:grid;grid-template-columns:74px minmax(0,1fr);gap:10px;align-items:center;text-align:left;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;padding:8px;min-height:86px}.asset-option:hover{border-color:var(--gold);background:var(--surface-2)}.asset-option.selected{border:2px solid var(--teal);padding:7px;box-shadow:0 0 0 3px rgba(15,113,115,.13)}.asset-option.unavailable{opacity:.68;border-style:dashed}.asset-option-thumb{position:relative;width:74px;height:68px;display:grid;place-items:center;border-radius:7px;overflow:hidden;background:#eef1f5}.asset-option-thumb img{width:100%;height:100%;object-fit:contain}.asset-selected-mark{display:none;position:absolute;inset:auto 3px 3px 3px;background:var(--teal);color:#fff;border-radius:5px;text-align:center;font-size:.62rem;font-weight:850;padding:3px}.asset-option.selected .asset-selected-mark{display:block}.asset-option-copy{min-width:0;display:grid;gap:3px}.asset-option-copy strong{font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asset-option-copy span,.asset-option-copy small{font-size:.67rem;color:var(--muted);overflow-wrap:anywhere}.asset-picker-empty,.asset-picker-loading,.asset-picker-error{grid-column:1/-1;display:grid;place-items:center;min-height:180px;border:1px dashed var(--line);border-radius:10px;color:var(--muted);text-align:center;padding:24px}.asset-picker-error{background:var(--danger-bg);color:var(--danger)}.asset-picker-selection{padding:9px 11px;border-radius:8px;background:var(--surface-2);border:1px solid var(--line);font-size:.78rem;font-weight:700}.asset-picker-actions{flex-wrap:wrap}.asset-picker-actions #assetPickerClearSelection{margin-right:auto}.asset-option:focus-visible,.asset-picker-modal button:focus-visible,.asset-picker-modal input:focus-visible,.asset-picker-modal select:focus-visible{outline:3px solid var(--gold);outline-offset:2px}[data-theme="dark"] .asset-option-thumb{background:#dfe4eb}[data-theme="dark"] .asset-option.selected{box-shadow:0 0 0 3px rgba(111,212,214,.22)}[data-theme="dark"] .asset-editor-notice.warning{background:var(--warning-bg);color:#f7c66a}

/* Generation */
.generation-panel{padding:0;overflow:hidden}.generation-header{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}.generation-current{display:flex;align-items:center;gap:12px}.generation-current strong,.generation-current small{display:block}.generation-current small{color:var(--muted)}.pulse-dot{width:11px;height:11px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 6px rgba(15,113,115,.12)}.progress-track{height:8px;background:var(--surface-3)}.progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--teal),var(--gold));transition:width .25s}.progress-stats{display:flex;gap:24px;padding:11px 22px;border-bottom:1px solid var(--line);font-size:.75rem;color:var(--muted)}.generation-workspace{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,.7fr);min-height:480px}.render-preview{background:#dfe4eb;padding:22px;overflow:auto;display:grid;place-items:center}.render-preview canvas{max-width:100%;height:auto!important;box-shadow:0 10px 25px rgba(0,0,0,.2);background:#fff}.generation-log{padding:18px;border-left:1px solid var(--line);overflow:auto;max-height:580px}.generation-log h2{font-size:.9rem;margin:0 0 12px}.log-list{display:grid;gap:7px}.log-item{font-size:.72rem;padding:8px;border-radius:7px;background:var(--surface-2);color:var(--muted)}.log-item.success{background:var(--success-bg);color:var(--success)}.log-item.danger{background:var(--danger-bg);color:var(--danger)}.log-item.warning{background:var(--warning-bg);color:var(--warning)}.generation-result{padding:20px;border-top:1px solid var(--line);background:var(--success-bg)}.generation-result h2{margin:0}.offscreen{position:fixed!important;left:-10000px!important;top:-10000px!important}
@media(max-width:1200px){.editor-shell{grid-template-columns:160px minmax(0,1fr) 270px}.metric-grid{grid-template-columns:repeat(2,1fr)}.settings-layout{grid-template-columns:1fr}.settings-layout>.panel{grid-column:1!important}.sticky-actions{grid-column:1}.batch-create-layout{grid-template-columns:1fr}.two-column.wide-left{grid-template-columns:1fr}}
@media(max-width:900px){.editor-mobile-toggle{display:inline-flex}:root{--sidebar:260px}.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0);box-shadow:20px 0 45px rgba(0,0,0,.25)}.app-main{grid-column:auto}.mobile-menu{display:inline-grid!important}.content-area{padding:20px}.topbar{padding:0 18px}.page-header{flex-direction:column}.page-header>.header-actions{justify-content:flex-start}.two-column,.certificate-detail-grid{grid-template-columns:1fr}.form-grid.three{grid-template-columns:repeat(2,1fr)}.span-3{grid-column:span 2}.editor-page{margin:-20px}.editor-toolbar{top:68px;overflow:auto}.editor-shell{grid-template-columns:1fr;position:relative}.editor-tools,.editor-properties{position:fixed;top:126px;bottom:0;width:270px;max-height:none;z-index:24;box-shadow:var(--shadow);transition:.2s}.editor-tools{left:0;transform:translateX(-100%)}.editor-properties{right:0;transform:translateX(100%)}.editor-tools.open,.editor-properties.open{transform:translateX(0)}.canvas-scroller{min-height:calc(100vh - 170px)}.generation-workspace{grid-template-columns:1fr}.generation-log{border-left:0;border-top:1px solid var(--line);max-height:300px}}
@media(max-width:640px){.content-area{padding:15px}.topbar{height:60px}.topbar>div:first-of-type{font-size:.86rem}.user-chip{display:none}.page-header h1{font-size:1.55rem}.panel{padding:16px;border-radius:11px}.metric-grid,.metric-grid.three{grid-template-columns:1fr 1fr;gap:10px}.metric-card{padding:14px}.metric-card strong{font-size:1.4rem}.form-grid,.form-grid.three{grid-template-columns:1fr}.span-2,.span-3{grid-column:span 1}.inline-filter{width:100%}.inline-filter input,.inline-filter select{width:100%;min-width:0}.verify-form{flex-direction:column}.auth-card,.verify-hero,.verify-result{padding:24px;margin:10px auto}.public-header{padding:0 16px}.public-header .button{display:none}.details-list,.verification-details{grid-template-columns:1fr}.details-list div:nth-child(odd),.verification-details div:nth-child(odd){padding-right:0}.settings-layout{gap:0}.asset-grid{grid-template-columns:repeat(2,1fr)}.template-grid{grid-template-columns:1fr}.editor-toolbar{height:auto;min-height:58px;align-items:flex-start;flex-direction:column}.toolbar-group{width:100%;overflow:auto}.editor-shell{min-height:calc(100vh - 190px)}.asset-picker-modal{padding:15px;max-height:94vh}.asset-picker-controls{grid-template-columns:1fr}.asset-picker-grid{grid-template-columns:1fr;max-height:43vh}.asset-picker-actions{display:grid;grid-template-columns:1fr 1fr}.asset-picker-actions #assetPickerClearSelection{margin-right:0}.asset-picker-actions .button{width:100%}.progress-stats{display:grid;grid-template-columns:1fr 1fr;gap:6px 16px}.generation-header{align-items:flex-start;gap:14px}.generation-header .button{white-space:nowrap}.selection-bar{position:sticky;bottom:0;background:var(--surface);padding:10px;border-top:1px solid var(--line)}}
@media(max-width:390px){.metric-grid,.metric-grid.three{grid-template-columns:1fr}.asset-grid{grid-template-columns:1fr}.brand strong{font-size:.8rem}.brand-symbol{width:36px;height:36px}.button{padding:9px 11px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Controlled Patch 04 — CSV import, mapping and participant validation */
.status.mapping,.status.uploaded,.status.validating{background:var(--warning-bg);color:var(--warning)}
.status.importing{background:#eef4ff;color:#175cd3}
.status.cancelled{background:var(--surface-3);color:var(--muted)}
.notice.error{background:var(--danger-bg);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 28%,var(--line))}.notice.error ul{margin:7px 0 0 20px}.notice.warning{background:var(--warning-bg);color:var(--warning)}
.csv-upload-zone{transition:border-color .15s ease,background .15s ease}.csv-upload-zone.drag-active{border-color:var(--teal);background:color-mix(in srgb,var(--teal) 10%,var(--surface-2))}
.import-start-layout,.import-result-layout,.participant-detail-layout{align-items:start}.import-notice{margin-bottom:14px}.import-summary-grid{grid-template-columns:repeat(7,minmax(0,1fr));margin-bottom:20px}.import-summary-grid .metric-card small{line-height:1.35}
.import-wizard-form{display:grid;gap:20px}.import-options-grid{display:grid;grid-template-columns:minmax(260px,1fr) minmax(300px,1fr);gap:16px;margin-bottom:18px}.import-options-grid fieldset{border:1px solid var(--line);border-radius:9px;padding:11px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.import-options-grid legend{font-size:.78rem;font-weight:800;padding:0 5px}.import-options-grid fieldset label{display:flex;align-items:center;gap:6px;font-weight:600}
.mapping-source-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:850}.mapping-card small{color:var(--muted);font-size:.68rem}.custom-field-label.hidden{display:none!important}
.import-row-tools{display:grid;grid-template-columns:minmax(260px,1fr) minmax(170px,.3fr) auto;gap:12px;align-items:end;margin-bottom:13px}.import-row-tools .status{margin-bottom:8px}
.import-table{max-height:620px}.import-table table{min-width:max-content}.import-table th{position:sticky;top:0;z-index:3;background:var(--surface-2)}.import-table textarea{min-width:145px;max-width:260px;resize:horizontal;min-height:36px;border-color:transparent;background:transparent;padding:7px 8px}.import-table textarea:focus{background:var(--surface);border-color:var(--teal)}.import-row.state-invalid{background:color-mix(in srgb,var(--danger-bg) 58%,transparent)}.import-row.state-duplicate{background:color-mix(in srgb,var(--warning-bg) 62%,transparent)}.import-row.is-excluded{opacity:.66}.import-issues-row td{padding-top:0!important}.import-issues{display:flex;gap:7px;flex-wrap:wrap;padding:0 0 8px}.issue{display:inline-flex;gap:4px;align-items:flex-start;border-radius:7px;padding:5px 7px;font-size:.7rem;line-height:1.35;background:var(--surface-3);color:var(--muted)}.issue.error{background:var(--danger-bg);color:var(--danger)}.issue.warning{background:var(--warning-bg);color:var(--warning)}
.import-final-summary{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px;margin-bottom:14px}.import-final-summary>div{border:1px solid var(--line);border-radius:9px;padding:10px;background:var(--surface-2);display:grid;gap:3px}.import-final-summary span{font-size:.68rem;color:var(--muted);font-weight:750}.import-final-summary strong{font-size:1.18rem}.import-final-summary .primary{border-color:var(--teal);background:color-mix(in srgb,var(--teal) 9%,var(--surface))}.form-actions.spread{justify-content:space-between}.import-failures{display:grid;gap:8px;margin-top:14px}.import-failures h3{margin:0}.import-failures .issue{display:grid}.mapping-result-list strong small{display:block;color:var(--muted);font-weight:500}.custom-field-details span small{display:block;margin-top:2px;color:var(--muted)}
@media(max-width:1100px){.import-summary-grid{grid-template-columns:repeat(3,1fr)}.import-final-summary{grid-template-columns:repeat(4,1fr)}}
@media(max-width:760px){.import-summary-grid{grid-template-columns:repeat(2,1fr)}.import-options-grid,.import-row-tools{grid-template-columns:1fr}.import-final-summary{grid-template-columns:repeat(2,1fr)}.form-actions.spread{align-items:stretch}.form-actions.spread,.form-actions.spread>.header-actions{display:grid;grid-template-columns:1fr}.form-actions.spread .button{width:100%}}

/* Controlled Patch 05 — certificate generation workflow */
.generation-template-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px}.generation-template-card{position:relative;display:grid;grid-template-columns:110px 1fr;gap:13px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:11px;background:var(--surface);cursor:pointer;min-height:112px}.generation-template-card:hover{border-color:var(--teal)}.generation-template-card>input{position:absolute;opacity:0;pointer-events:none}.generation-template-card:has(input:focus-visible){outline:3px solid color-mix(in srgb,var(--teal) 30%,transparent);outline-offset:2px}.generation-template-card:has(input:checked){border-color:var(--teal);box-shadow:0 0 0 2px color-mix(in srgb,var(--teal) 20%,transparent)}.generation-template-thumb{height:86px;border-radius:8px;overflow:hidden;background:var(--surface-3);display:grid;place-items:center;color:var(--muted);font-size:.72rem}.generation-template-thumb img{width:100%;height:100%;object-fit:contain}.generation-template-copy{display:grid;gap:4px;min-width:0}.generation-template-copy strong{overflow-wrap:anywhere}.generation-template-copy small{display:block;color:var(--muted);font-size:.7rem}.selection-mark{position:absolute;right:8px;top:8px;width:23px;height:23px;border-radius:50%;display:grid;place-items:center;background:var(--teal);color:white;font-weight:900;opacity:0}.generation-template-card:has(input:checked) .selection-mark{opacity:1}.format-options{border:1px solid var(--line);border-radius:9px;padding:10px 12px;display:flex;gap:20px;align-items:center}.format-options legend{font-size:.76rem;font-weight:700;padding:0 5px}.format-options label{display:flex;align-items:center;gap:7px}.generation-participant-filters{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1fr) auto;gap:12px;align-items:end;margin-bottom:12px}.participant-selection-actions{display:flex;gap:7px;padding-bottom:1px}.participant-option.hidden{display:none}.selection-bar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:14px}.selection-bar .form-actions{margin:0}.danger-text{color:var(--danger)!important}.batch-metrics{margin-bottom:18px}.batch-configuration-list code{word-break:break-all}.preflight-counts{display:flex;gap:7px}.compact-issue-list{margin:0;padding-left:16px;font-size:.75rem}.compact-issue-list li+li{margin-top:4px}.retry-selection-actions{display:flex;gap:8px;margin-bottom:12px}.retry-check-list{display:grid;gap:8px}.retry-check-list label{display:flex;gap:10px;align-items:flex-start;padding:10px;border:1px solid var(--line);border-radius:8px}.retry-check-list span{display:grid;gap:2px}.retry-check-list small{color:var(--muted)}.table-actions{display:flex;gap:9px;flex-wrap:wrap}.generation-preview-controls{display:grid;grid-template-columns:auto minmax(180px,1fr) minmax(180px,1fr) auto;gap:10px;align-items:end;padding:14px 22px;border-bottom:1px solid var(--line);background:var(--surface-2)}.generation-preview-controls label{display:grid;gap:5px;font-size:.72rem;font-weight:700}.generation-side-panel{border-left:1px solid var(--line);display:grid;grid-template-rows:auto minmax(220px,1fr);min-width:0}.generation-preflight{padding:18px;border-bottom:1px solid var(--line);max-height:300px;overflow:auto}.generation-preflight h2,.generation-log h2{font-size:.9rem;margin:0 0 12px}.generation-side-panel .generation-log{border-left:0;border-top:0}.preview-data-list{display:grid;gap:6px;margin:10px 0 0}.preview-data-list div{display:grid;grid-template-columns:90px 1fr;gap:8px;font-size:.72rem}.preview-data-list dt{color:var(--muted)}.preview-data-list dd{margin:0;overflow-wrap:anywhere}.status.prepared,.status.ready{background:var(--warning-bg);color:var(--warning)}.status.blocked,.status.failed{background:var(--danger-bg);color:var(--danger)}.status.processing{background:color-mix(in srgb,var(--teal) 15%,var(--surface));color:var(--teal)}.status.cancelled{background:var(--surface-3);color:var(--muted)}
@media(max-width:1000px){.generation-participant-filters{grid-template-columns:1fr 1fr}.participant-selection-actions{grid-column:1/-1}.generation-preview-controls{grid-template-columns:1fr 1fr}.generation-side-panel{border-left:0;border-top:1px solid var(--line)}.generation-workspace{grid-template-columns:1fr}}
@media(max-width:640px){.generation-template-grid{grid-template-columns:1fr}.generation-participant-filters,.generation-preview-controls{grid-template-columns:1fr}.participant-selection-actions,.selection-bar,.retry-selection-actions{flex-direction:column;align-items:stretch}.selection-bar .form-actions{width:100%}.format-options{align-items:flex-start;flex-direction:column}.generation-template-card{grid-template-columns:88px 1fr}.generation-preview-controls .button{width:100%}}

/* Controlled Patch 06 — public verification and certificate lifecycle */
.copy-field{display:flex;gap:8px;align-items:center}.copy-field input{font-family:ui-monospace,Consolas,monospace;min-width:0}.copy-field .button{flex:0 0 auto}.verify-actions{display:flex;justify-content:center;gap:9px;flex-wrap:wrap}.verify-result.replaced-result .verify-icon{background:#f4f3ff;color:#6938ef}.verify-result.warning-result .verify-icon{background:var(--warning-bg);color:var(--warning)}.verify-result dd{overflow-wrap:anywhere}.verification-details .status{font-size:.76rem}.public-main{overflow-x:hidden}.public-header,.public-footer{print-color-adjust:exact;-webkit-print-color-adjust:exact}
@media(max-width:640px){.copy-field{align-items:stretch;flex-direction:column}.verify-actions{display:grid;grid-template-columns:1fr}.verify-actions .button{width:100%}.public-main{width:min(100% - 24px,960px);padding:24px 0}.verify-result h1,.verify-hero h1{font-size:1.65rem}}
@media print{.public-body{background:#fff!important}.public-header,.public-footer,.verify-actions{display:none!important}.public-main{width:100%;padding:0}.verify-result{box-shadow:none;border-color:#bbb;max-width:none;margin:0;color:#111;background:#fff}.verification-details{color:#111}.status{border:1px solid currentColor}}

/* Patch 08 — professional typography controls */
.typography-controls{display:grid;gap:9px;padding:9px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.control-label{display:block;font-size:.7rem;margin-bottom:4px}.font-picker-field{position:relative}.font-picker-button{width:100%;min-height:38px;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);padding:7px 9px;text-align:left}.font-picker-popover{display:none;position:absolute;z-index:45;top:calc(100% + 5px);left:0;right:0;min-width:260px;max-height:min(58vh,520px);padding:9px;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}.font-picker-popover.open{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:6px}.font-search-label{font-size:.68rem!important;color:var(--muted)}.font-picker-popover input{width:100%}.font-picker-state{min-height:18px;font-size:.65rem;color:var(--muted)}.font-picker-state[data-state="missing"]{color:var(--danger)}.font-picker-list{overflow:auto;display:grid;gap:3px;max-height:360px}.font-picker-group{margin:7px 4px 2px;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.font-picker-option{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:38px;padding:7px 9px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--ink);text-align:left}.font-picker-option:hover,.font-picker-option.active{background:var(--surface-2);border-color:var(--line)}.font-picker-option.selected{border-color:var(--teal);padding-right:30px}.font-picker-option.selected:after{content:"✓";position:absolute;right:9px;font-family:Arial,sans-serif;font-weight:900}.font-picker-option.font-missing{border-style:dashed;opacity:.72}.font-picker-option small{font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--danger);font-size:.6rem}.font-picker-sample{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.font-picker-empty{padding:20px;text-align:center;color:var(--muted);font-size:.72rem}
.typography-primary{align-items:end}.number-stepper{display:grid;grid-template-columns:28px minmax(0,1fr) 28px}.number-stepper button{border:1px solid var(--line);background:var(--surface);color:var(--ink);min-height:34px}.number-stepper button:first-child{border-radius:6px 0 0 6px}.number-stepper button:last-child{border-radius:0 6px 6px 0}.number-stepper input{border-radius:0!important;text-align:center;border-left:0!important;border-right:0!important}.typography-segments{align-items:center;flex-wrap:wrap}.typography-segments .segment-divider{width:1px;height:24px;background:var(--line);margin:0 2px}.button-row.typography-segments>button{display:inline-flex;align-items:center;justify-content:center;color:var(--ink)}.button-row.typography-segments>button.active{border-color:var(--teal);background:rgba(15,113,115,.12);box-shadow:inset 0 0 0 1px var(--teal)}.button-row.typography-segments>[data-align="left"]{justify-content:flex-start}.button-row.typography-segments>[data-align="right"]{justify-content:flex-end}.button-row.typography-segments button:disabled{opacity:.38;cursor:not-allowed}.inline-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px}.mini-reset{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:4px 7px;font-size:.65rem}.colour-control>div{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:5px;align-items:center}.colour-control input[type="color"]{width:40px;padding:2px;height:34px}.hex-input{text-transform:uppercase}.recent-colours{display:flex!important;grid-template-columns:none!important;gap:5px!important;margin-top:5px}.recent-colour{width:24px;height:24px;border:2px solid var(--surface);outline:1px solid var(--line);border-radius:50%;padding:0}.dynamic-typography{display:grid;gap:8px;border-top:1px solid var(--line);padding-top:9px}.dynamic-status{display:grid;gap:2px;padding:8px;border-radius:7px;background:var(--surface);font-size:.66rem;color:var(--muted)}.dynamic-status strong{color:var(--ink)}.dynamic-status.overflow{background:var(--danger-bg);color:var(--danger)}.sample-preview{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.sample-preview>span{width:100%;font-size:.65rem;color:var(--muted)}.sample-preview button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:4px 6px;font-size:.62rem}.advanced-typography{border-top:1px solid var(--line);padding-top:7px}.advanced-typography summary{cursor:pointer;font-size:.7rem;font-weight:750;color:var(--muted);margin-bottom:7px}.check-label{display:flex!important;align-items:center;gap:6px}.check-label input{min-height:auto!important;width:auto!important}
.typography-controls :focus-visible,.font-picker-button:focus-visible,.font-picker-option:focus-visible,.sample-preview button:focus-visible,.recent-colour:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
[data-theme="dark"] .font-picker-option.selected,[data-theme="dark"] .button-row.typography-segments>button.active{background:rgba(111,212,214,.15)}
@media(max-width:900px){.font-picker-popover{position:fixed;left:auto;right:14px;top:150px;width:min(340px,calc(100vw - 28px));max-height:70vh}.font-picker-list{max-height:52vh}.typography-controls{padding:8px}}
@media(max-width:640px){.typography-controls{gap:8px}.typography-controls .form-grid.two{grid-template-columns:1fr 1fr}.font-picker-popover{left:14px;right:14px;width:auto;top:120px}.font-picker-option{min-height:44px}.typography-segments>button{min-width:36px;min-height:36px}.sample-preview button{min-height:34px}.advanced-typography{display:none}}

/* Patch 09 — application branding. Brand identity variables are intentionally
   separate from --surface/--ink and all light/dark appearance tokens. */
:root{--brand-primary:var(--navy);--brand-secondary:var(--gold);--brand-accent:var(--teal);--brand-success:var(--success);--brand-warning:var(--warning);--brand-error:var(--danger);--brand-on-primary:#fff;--brand-on-secondary:#000;--brand-on-accent:#fff}
.eyebrow{color:var(--brand-accent)}
.button.primary{background:var(--brand-primary);border-color:var(--brand-primary);color:var(--brand-on-primary)!important}.button.primary:hover{background:color-mix(in srgb,var(--brand-primary) 86%,#000)}
.button.secondary:hover,.icon-button:hover{border-color:var(--brand-accent)}
input:focus,select:focus,textarea:focus{border-color:var(--brand-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand-accent) 18%,transparent)}
.sidebar{background:linear-gradient(180deg,color-mix(in srgb,var(--brand-primary) 72%,#000),var(--brand-primary));color:var(--brand-on-primary)}
.sidebar .nav-item{color:color-mix(in srgb,var(--brand-on-primary) 76%,transparent)!important}.sidebar .nav-item:hover,.sidebar .nav-item.active{color:var(--brand-on-primary)!important}.sidebar .nav-item.active{background:color-mix(in srgb,var(--brand-secondary) 20%,transparent);box-shadow:inset 3px 0 0 var(--brand-secondary)}
.sidebar .brand small{color:color-mix(in srgb,var(--brand-on-primary) 70%,transparent)}
.brand-symbol{background:linear-gradient(135deg,var(--brand-secondary),color-mix(in srgb,var(--brand-secondary) 55%,#fff));color:var(--brand-on-secondary)}
.brand-logo-frame{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;max-width:var(--brand-logo-max-width,180px);max-height:var(--brand-logo-max-height,64px);border-radius:9px;background:rgba(255,255,255,.96);padding:4px 7px;overflow:hidden;border:1px solid rgba(17,17,17,.08)}.brand-logo-frame img{display:block;width:auto;height:auto;max-width:var(--brand-logo-max-width,180px);max-height:var(--brand-logo-max-height,64px);object-fit:contain}.sidebar-brand{min-width:0}.sidebar-brand .brand-copy{min-width:0}.sidebar-brand strong,.sidebar-brand small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.public-header{border-top:3px solid var(--brand-primary)}.public-header .brand-logo-frame{background:var(--surface);border-color:var(--line)}.public-body{background:radial-gradient(circle at top left,color-mix(in srgb,var(--brand-secondary) 12%,transparent),transparent 35%),var(--surface-2)}
.verify-badge{background:color-mix(in srgb,var(--brand-primary) 12%,var(--surface));color:var(--brand-primary)}
.status.active,.status.valid,.status.completed,.status.imported{background:color-mix(in srgb,var(--brand-success) 13%,var(--surface));color:var(--brand-success)}.status.revoked,.status.failed{background:color-mix(in srgb,var(--brand-error) 12%,var(--surface));color:var(--brand-error)}.status.draft,.status.pending,.status.prepared,.status.ready{background:color-mix(in srgb,var(--brand-warning) 12%,var(--surface));color:var(--brand-warning)}
:focus-visible{outline-color:var(--brand-accent)}

/* Branding settings */
.branding-settings .span-settings{grid-column:1/3}.branding-logo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.branding-logo-card{display:grid;grid-template-columns:92px minmax(0,1fr);gap:12px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:12px;background:var(--surface-2)}.branding-logo-preview{width:92px;height:68px;border:1px solid var(--line);border-radius:8px;background:var(--surface);display:grid;place-items:center;padding:6px;overflow:hidden}.branding-logo-preview img{width:100%;height:100%;object-fit:contain}.branding-logo-copy{display:grid;gap:2px;min-width:0}.branding-logo-copy strong{font-size:.84rem}.branding-logo-copy span{font-size:.75rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.branding-logo-copy small{color:var(--muted);font-size:.68rem}.branding-logo-card .row-actions{grid-column:1/3;justify-content:flex-end}.branding-logo-sizes{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.branding-colour-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.theme-token{border:1px solid var(--line);border-radius:9px;padding:10px;background:var(--surface-2)}.branding-colour-control{display:grid;grid-template-columns:46px minmax(0,1fr);gap:7px}.branding-colour-control input[type=color]{width:46px}.theme-token .contrast-note{display:block;margin-top:5px;color:var(--muted);font-size:.66rem}.theme-token .contrast-note.fail{color:var(--brand-error)}.theme-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}
.brand-preview{--p-primary:var(--brand-primary);--p-secondary:var(--brand-secondary);--p-accent:var(--brand-accent);--p-success:var(--brand-success);--p-on-primary:var(--brand-on-primary);display:grid;grid-template-columns:190px minmax(0,1fr);border:1px solid var(--line);border-radius:12px;overflow:hidden;min-height:250px;background:#f4f6fa;color:#17213a}.brand-preview[data-preview-mode=dark]{background:#0f1728;color:#edf1f7;border-color:#303b50}.brand-preview aside{padding:16px;background:linear-gradient(180deg,color-mix(in srgb,var(--p-primary) 72%,#000),var(--p-primary));color:var(--p-on-primary);display:flex;flex-direction:column;gap:7px}.brand-preview aside>small{opacity:.7}.brand-preview-logo{height:54px;display:flex;align-items:center;margin-bottom:7px}.brand-preview-logo img{max-width:150px;max-height:50px;object-fit:contain;background:#fff;border-radius:7px;padding:4px}.brand-preview-nav{padding:7px 9px;border-radius:7px;font-size:.72rem;opacity:.75}.brand-preview-nav.active{opacity:1;background:color-mix(in srgb,var(--p-secondary) 22%,transparent);box-shadow:inset 3px 0 0 var(--p-secondary)}.brand-preview main{padding:20px;display:grid;place-items:center}.brand-preview-card{width:min(520px,100%);padding:20px;border:1px solid #dfe4ec;border-radius:11px;background:#fff;color:#17213a}.brand-preview[data-preview-mode=dark] .brand-preview-card{background:#172137;color:#edf1f7;border-color:#303b50}.brand-preview-card h3{margin:4px 0 6px}.brand-preview-card p{color:#697386}.brand-preview[data-preview-mode=dark] .brand-preview-card p{color:#aab4c5}.brand-preview-primary,.brand-preview-secondary{border-radius:8px;padding:8px 11px;font:inherit;font-size:.75rem;font-weight:750}.brand-preview-primary{border:1px solid var(--p-primary);background:var(--p-primary);color:var(--p-on-primary)}.brand-preview-secondary{border:1px solid currentColor;background:transparent;color:inherit}.brand-preview-badge{padding:4px 8px;border-radius:999px;background:color-mix(in srgb,var(--p-success) 14%,transparent);color:var(--p-success);font-size:.7rem;font-weight:800}.branding-reset-form{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:4px 0 30px}.branding-asset-modal{width:min(920px,calc(100vw - 32px));max-height:min(88vh,820px);display:flex;flex-direction:column}.branding-asset-modal .asset-picker-grid{min-height:220px;max-height:52vh}.asset-picker-card.selected{border-color:var(--brand-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand-accent) 18%,transparent)}

/* Branding keeps certificate artwork independent. These rules target shell/UI only. */
.editor-toolbar .button.primary,.property-tabs button.active,.editor-tools button:focus-visible{--local-brand-accent:var(--brand-accent)}

@media(max-width:980px){.branding-logo-grid{grid-template-columns:1fr}.branding-colour-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.brand-preview{grid-template-columns:150px minmax(0,1fr)}}
@media(max-width:760px){.branding-settings.settings-layout{grid-template-columns:1fr}.branding-settings>.panel,.branding-settings .span-settings,.branding-settings .sticky-actions{grid-column:1}.branding-colour-grid{grid-template-columns:1fr 1fr}.brand-preview{grid-template-columns:1fr}.brand-preview aside{min-height:150px}.branding-logo-sizes{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.branding-colour-grid,.branding-logo-sizes{grid-template-columns:1fr}.branding-logo-card{grid-template-columns:74px minmax(0,1fr)}.branding-logo-preview{width:74px;height:58px}.branding-logo-card .row-actions{grid-column:1/3}.branding-logo-card .row-actions .button{flex:1}.brand-preview main{padding:12px}.public-header .public-brand span:last-child{display:none}.public-header{padding-inline:16px}}
/* Public verification keeps fixed semantic colours so brand customisation can
   never make Valid and Revoked visually interchangeable. */
.verify-result .status.valid{background:var(--success-bg);color:var(--success)}
.verify-result .status.revoked,.verify-result .status.failed{background:var(--danger-bg);color:var(--danger)}
.verify-result .status.replaced{background:#f4f3ff;color:#6938ef}
.brand-logo-inline-fallback{display:none;place-items:center;width:42px;height:42px;border-radius:8px;background:var(--brand-secondary);color:var(--brand-on-secondary);font-weight:900;font-size:.75rem}.brand-logo-frame.is-missing img{display:none}.brand-logo-frame.is-missing .brand-logo-inline-fallback{display:grid}
/* Visibility safeguards remain effective even when brand colours are very close
   to each other or to the current light/dark surface. */
.sidebar .nav-item.active{background:color-mix(in srgb,var(--brand-on-primary) 12%,transparent);font-weight:800}
input:focus,select:focus,textarea:focus{box-shadow:0 0 0 1px var(--ink),0 0 0 4px color-mix(in srgb,var(--brand-accent) 22%,transparent)}
:focus-visible{outline:2px solid var(--brand-accent);outline-offset:2px;box-shadow:0 0 0 1px var(--ink)}
.branding-asset-modal .asset-picker-card.selected::after{content:"Selected";position:absolute;top:7px;right:7px;border-radius:999px;padding:3px 6px;background:var(--brand-primary);color:var(--brand-on-primary);font-size:.58rem;font-weight:800}.branding-asset-modal .asset-picker-card{position:relative}

/* Controlled Patch 12 — application-wide UI/UX stabilisation.
   These rules repair component sizing and responsive flow. They intentionally
   do not hide body overflow as a substitute for fixing offending components. */
html,body,.app-shell,.app-main,.content-area{min-width:0;max-width:100%}
.app-main{width:100%}.content-area{width:100%}
.topbar,.topbar>div,.top-actions,.page-header>*,.panel-header>*,.template-info,.template-title,.activity-item>*,.branding-logo-copy{min-width:0}
.topbar>div:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.page-header h1,.page-header p,.panel-header h2,.panel-header p{overflow-wrap:anywhere}
.page-header>.header-actions{max-width:100%}
.header-actions,.form-actions,.card-actions,.row-actions,.table-actions{max-width:100%}
.button,.icon-button,.link{min-height:36px}.link{display:inline-flex;align-items:center;border-radius:6px;padding:4px 3px;color:var(--ink);background:transparent}.link:hover{background:var(--surface-3);text-decoration:none}.link.danger{color:var(--danger)}
.button.secondary{color:var(--ink)!important}.button:focus-visible,.link:focus-visible,.nav-item:focus-visible{outline:3px solid var(--brand-accent);outline-offset:2px}
.panel,.metric-card,.template-card,.asset-card{max-width:100%}
.panel-header{flex-wrap:wrap}.panel-header>.inline-filter,.panel-header>form.inline-filter{flex:1 1 420px}
.metric-grid,.metric-grid.three{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}.metric-card{min-width:0}
.two-column,.two-column.wide-left,.certificate-detail-grid,.settings-layout,.batch-create-layout,.generation-workspace{min-width:0}
.two-column>* ,.two-column.wide-left>* ,.certificate-detail-grid>* ,.settings-layout>* ,.batch-create-layout>* ,.generation-workspace>*{min-width:0}
.inline-filter{min-width:0}.inline-filter input{flex:1 1 240px;min-width:min(220px,100%)}.inline-filter select{flex:0 1 190px;min-width:min(150px,100%)}.inline-filter .button{flex:0 0 auto}
input,select,textarea{min-width:0;max-width:100%}input[type=file]{padding:5px 6px;overflow:hidden}input[type=file]::file-selector-button{border:1px solid var(--line);border-radius:7px;background:var(--surface-2);color:var(--ink);padding:7px 10px;margin-right:9px;font:inherit;font-weight:700;cursor:pointer}input[type=file]::file-selector-button:hover{border-color:var(--brand-accent)}
.table-wrap{width:100%;max-width:100%;overflow-x:auto;overflow-y:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}.table-wrap table{max-width:none}th,td{overflow-wrap:anywhere}.row-actions{min-width:max-content}
.activity-item{min-width:0}.activity-item strong,.activity-item small{overflow-wrap:anywhere}.activity-item .status{justify-self:end}
.status{max-width:100%;line-height:1.25}
.empty-state{max-width:720px;margin-inline:auto}.empty-state .header-actions{justify-content:center}
.alert,.notice,.compact-empty{overflow-wrap:anywhere}

/* Template cards use four explicit document-flow regions: thumbnail, content,
   metadata and actions. Nothing is absolutely positioned. */
.template-grid{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr))}
.template-card{display:flex;flex-direction:column;min-width:0;height:100%}.template-thumb{display:grid;flex:0 0 180px;min-width:0}.template-info{display:flex;flex:1 1 auto;flex-direction:column;gap:9px}.template-title{align-items:flex-start}.template-title h3{min-width:0;overflow-wrap:anywhere;line-height:1.35}.template-title .status{flex:0 0 auto}.template-info p{min-height:0;margin:0;overflow-wrap:anywhere}.template-info>small{display:block;overflow-wrap:anywhere}.template-card .card-actions{margin-top:auto;align-items:center}.template-card .card-actions form{display:inline-flex}.template-card .link:not(.danger){color:var(--ink)}
.template-thumb img{max-width:100%;max-height:100%}

/* Asset library columns are allowed only when both columns remain useful. */
.asset-grid{grid-template-columns:repeat(auto-fit,minmax(min(170px,100%),1fr))}.asset-preview img{width:100%;height:100%;object-fit:contain}.asset-meta{min-width:0}.asset-meta strong{max-width:100%}

/* Viewport-safe dialogs/drawers. */
.modal{padding:max(12px,2vw)}.modal-card{width:min(600px,calc(100vw - 24px));max-width:100%;max-height:calc(100dvh - 24px);overflow-y:auto;overflow-x:hidden}.modal-card.wide{width:min(1000px,calc(100vw - 24px))}.modal-header{align-items:flex-start}.modal-header>div{min-width:0}.modal-header h2,.modal-header p{overflow-wrap:anywhere}.modal-actions{flex-wrap:wrap}

/* The authenticated mobile navigation is a true drawer, not display:none. */
.sidebar-overlay{position:fixed;inset:0;background:rgba(5,12,26,.52);z-index:35;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease,visibility .2s ease}.sidebar-overlay.open{opacity:1;visibility:visible;pointer-events:auto}.app-body.nav-open{overflow:hidden}.sidebar{overscroll-behavior:contain}.sidebar .nav-item{flex:0 0 auto}.sidebar-logout{padding-bottom:max(0px,env(safe-area-inset-bottom))}

/* Public/auth layouts remain readable with long branding text. */
.public-header{min-width:0;gap:16px}.public-brand{min-width:0}.public-brand>span:last-child{min-width:0}.public-brand strong,.public-brand small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-brand>div{min-width:0}.auth-brand h1,.auth-brand p{overflow-wrap:anywhere}

/* Page-specific responsive repairs. */
@media(max-width:1180px){
 .two-column.wide-left{grid-template-columns:1fr}
 .page-header{flex-wrap:wrap}
 .page-header>.header-actions{justify-content:flex-start}
}
@media(max-width:1024px){
 .two-column,.certificate-detail-grid{grid-template-columns:1fr}
 .content-area{padding:24px}
 .template-grid{grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr))}
}
@media(max-width:900px){
 .sidebar{width:min(300px,86vw)}
 .sidebar-overlay{display:block}
 .topbar{gap:12px}
 .topbar>div:nth-child(2){flex:1 1 auto}
 .content-area{padding:20px}
}
@media(min-width:901px){.sidebar-overlay{display:none!important}}
@media(max-width:768px){
 .page-header{gap:16px}.page-header>.header-actions{width:100%}.page-header>.header-actions .button{flex:1 1 auto}
 .panel-header{gap:12px}.panel-header>.inline-filter,.panel-header>form.inline-filter{flex-basis:100%;width:100%}
 .inline-filter input,.inline-filter select,.inline-filter .button{flex:1 1 100%;width:100%}
 .form-grid,.form-grid.two,.form-grid.three{grid-template-columns:1fr}.span-2,.span-3{grid-column:1}
 .settings-layout{grid-template-columns:1fr}.settings-layout>.panel,.sticky-actions{grid-column:1!important}
 .details-list,.verification-details{grid-template-columns:1fr}
 .card-actions{gap:7px}
 .table-wrap{border-radius:9px}
 .modal-actions .button{flex:1 1 150px}
}
@media(max-width:640px){
 .content-area{padding:16px}.panel{padding:16px;margin-bottom:16px}.page-header{margin-bottom:18px}.page-header h1{font-size:clamp(1.45rem,8vw,1.85rem)}
 .button{min-height:42px}.button.small{min-height:38px}.icon-button{min-width:40px;min-height:40px}
 .metric-grid,.metric-grid.three{grid-template-columns:1fr}
 .activity-item{grid-template-columns:38px minmax(0,1fr)}.activity-item .status{grid-column:2;justify-self:start}
 .template-grid,.asset-grid{grid-template-columns:1fr}
 .template-thumb{flex-basis:160px}
 .public-header{height:auto;min-height:68px;padding-block:10px}.public-header .brand{max-width:calc(100% - 50px)}
 .auth-brand{align-items:flex-start}.auth-card,.verify-hero,.verify-result{width:100%;max-width:100%}
}
@media(max-width:420px){
 .header-actions,.form-actions,.card-actions{align-items:stretch}.header-actions .button,.form-actions>.button{width:100%}
 .template-card .card-actions{display:grid;grid-template-columns:1fr 1fr}.template-card .card-actions>a{grid-column:1/-1}.template-card .card-actions form,.template-card .card-actions form .link{width:100%;justify-content:center}
}
@media(max-height:720px) and (max-width:900px){.sidebar{padding-top:14px}.nav-list{margin-top:18px}.nav-item{padding-block:8px}.nav-item.logout{margin-top:12px;padding-top:12px}}
/* Editor shell containment follows the actual page gutter at each breakpoint. */
.editor-page{max-width:none}.editor-toolbar,.editor-toolbar>*{min-width:0}.editor-workspace,.canvas-actions,.canvas-scroller{max-width:100%;min-width:0}.public-main{overflow-x:visible}
@media(max-width:1024px) and (min-width:901px){.editor-page{margin:-24px}}
@media(max-width:900px) and (min-width:641px){.editor-page{margin:-20px}}
@media(max-width:640px){.editor-page{margin:-16px}.editor-toolbar{top:60px}.editor-tools,.editor-properties{top:60px;max-height:calc(100dvh - 60px)}.editor-properties{width:min(340px,94vw)}.editor-tools{width:min(290px,88vw)}}

/* Patch 12 final narrow-screen editor containment.
   The editor deliberately owns off-canvas tool/property drawers. Clip only that
   shell's transient drawer overflow; the canvas itself remains horizontally
   scrollable inside .canvas-scroller and no body-level overflow is hidden. */
.editor-page{overflow-x:clip}
.editor-toolbar,.editor-shell,.editor-workspace,.canvas-actions,.context-toolbar,.canvas-scroller{min-width:0;box-sizing:border-box}
.editor-toolbar,.canvas-actions,.context-toolbar{width:100%;max-width:100%}
.editor-toolbar .toolbar-group{min-width:0;max-width:100%}
@media(max-width:900px){.canvas-actions,.context-toolbar{overflow-x:auto;overflow-y:hidden}}

/* CSV import experience — simplified permissive workflow */
.import-page-header{align-items:flex-end}.import-wizard-form{display:grid;gap:18px}.import-step-heading{display:grid;grid-template-columns:34px minmax(0,1fr);gap:11px;align-items:start;margin-bottom:16px}.import-step-heading h2{margin:0;font-size:1.05rem}.import-step-heading p{margin:3px 0 0;color:var(--muted);font-size:.82rem}.import-step-number{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--brand-accent) 13%,var(--surface));border:1px solid color-mix(in srgb,var(--brand-accent) 38%,var(--line));color:var(--brand-accent);font-weight:850;font-size:.78rem}.import-file-summary{padding-bottom:18px}.import-file-line{display:flex;align-items:center;justify-content:space-between;gap:20px;border:1px solid var(--line);border-radius:10px;padding:13px 15px;background:var(--surface-2)}.import-file-copy{display:grid;gap:3px;min-width:0}.import-file-copy strong{overflow-wrap:anywhere}.import-file-copy span{font-size:.76rem;color:var(--muted)}.import-summary-inline{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.import-summary-inline>span{display:inline-flex;gap:4px;align-items:center;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 9px;font-size:.72rem;color:var(--muted);white-space:nowrap}.import-summary-inline>span strong{color:var(--ink)}.import-summary-inline>span.warning{background:var(--warning-bg);color:var(--warning);border-color:color-mix(in srgb,var(--warning) 30%,var(--line))}.import-summary-inline>span.error{background:var(--danger-bg);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,var(--line))}.import-inline-note{margin:10px 2px 0;color:var(--muted);font-size:.75rem}.import-mapping-summary{display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap;margin-bottom:13px;color:var(--muted);font-size:.78rem}.mapping-detected{color:var(--ink)}.mapping-detected:first-child,.mapping-detected:nth-child(2){font-weight:700}.import-mapping-details,.import-advanced-options{border:1px solid var(--line);border-radius:10px;background:var(--surface-2);overflow:hidden}.import-mapping-details+ .import-advanced-options{margin-top:10px}.import-mapping-details>summary,.import-advanced-options>summary{list-style:none;cursor:pointer;padding:12px 14px;font-weight:800;font-size:.8rem;display:flex;align-items:center;justify-content:space-between;gap:8px}.import-mapping-details>summary::-webkit-details-marker,.import-advanced-options>summary::-webkit-details-marker{display:none}.import-mapping-details>summary:after,.import-advanced-options>summary:after{content:'+';font-size:1.1rem;color:var(--muted)}.import-mapping-details[open]>summary:after,.import-advanced-options[open]>summary:after{content:'−'}.import-mapping-details[open]>summary,.import-advanced-options[open]>summary{border-bottom:1px solid var(--line);background:var(--surface)}.import-details-intro{margin:12px 14px 8px;color:var(--muted);font-size:.75rem}.import-mapping-table{padding:0 14px 14px;display:grid}.import-mapping-row{display:grid;grid-template-columns:minmax(180px,.85fr) minmax(230px,1fr) minmax(180px,.75fr);gap:12px;align-items:center;border-bottom:1px solid var(--line);padding:9px 0}.import-mapping-row:last-child{border-bottom:0}.import-mapping-head{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800;padding-top:5px}.import-mapping-row>div:first-child{min-width:0;display:grid;gap:2px}.import-mapping-row>div:first-child strong{font-size:.79rem;overflow-wrap:anywhere}.import-mapping-row>div:first-child small{font-size:.63rem;color:var(--muted);overflow-wrap:anywhere}.import-mapping-row select,.import-mapping-row input{min-height:36px}.custom-field-label{display:grid;gap:3px}.custom-field-label small{font-size:.62rem;color:var(--muted)}.mapping-not-custom{color:var(--muted)}.import-advanced-options{margin-top:10px}.import-advanced-grid{padding:14px;display:grid;grid-template-columns:minmax(260px,1fr) minmax(260px,1fr);gap:14px}.import-advanced-grid fieldset{border:1px solid var(--line);border-radius:9px;padding:11px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.import-advanced-grid legend{font-weight:800;font-size:.75rem;padding:0 4px}.import-advanced-grid fieldset label{display:flex;align-items:center;gap:6px;font-size:.73rem}.import-advanced-grid fieldset small{grid-column:1/-1;color:var(--muted);font-size:.67rem}.import-advanced-grid>label{display:grid;gap:5px;font-size:.75rem;font-weight:700}.import-advanced-grid>label small{font-weight:400;color:var(--muted)}.import-advanced-note{border:1px solid var(--line);border-radius:9px;padding:11px;display:grid;gap:4px;font-size:.73rem}.import-advanced-note span{color:var(--muted)}.import-advanced-actions{padding:0 14px 14px;justify-content:flex-end}.import-records-heading{grid-template-columns:34px minmax(0,1fr) auto}.import-records-heading .header-actions{align-self:center}.import-row-tools{display:grid;grid-template-columns:minmax(220px,1fr) 190px auto;gap:10px;align-items:end;margin-bottom:12px}.import-row-tools label{display:grid;gap:4px;font-size:.72rem;font-weight:750}.import-row-tools .status{margin-bottom:7px}.import-record-list{display:grid;gap:8px}.import-record{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:11px 12px;background:var(--surface);transition:opacity .15s,border-color .15s}.import-record.state-warning{border-color:color-mix(in srgb,var(--warning) 34%,var(--line));background:color-mix(in srgb,var(--warning-bg) 32%,var(--surface))}.import-record.state-error{border-color:color-mix(in srgb,var(--danger) 36%,var(--line));background:color-mix(in srgb,var(--danger-bg) 28%,var(--surface))}.import-record.is-excluded{opacity:.58}.import-record-include{display:grid;place-items:center}.import-record-include input{width:18px;height:18px}.import-record-main{min-width:0;display:grid;gap:3px}.import-record-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.import-record-title strong{font-size:.84rem;overflow-wrap:anywhere}.import-record-status{border-radius:999px;padding:3px 7px;font-size:.6rem;font-weight:850;letter-spacing:.04em}.import-record-status.ready{background:var(--success-bg);color:var(--success)}.import-record-status.warning{background:var(--warning-bg);color:var(--warning)}.import-record-status.error{background:var(--danger-bg);color:var(--danger)}.import-record-meta{font-size:.72rem;color:var(--muted);overflow-wrap:anywhere}.import-record-message{font-size:.68rem}.import-record-message.warning{color:var(--warning)}.import-record-message.error{color:var(--danger)}.import-excluded-note{color:var(--muted)}.import-record-actions{display:flex;align-items:center}.import-ready-box{margin-top:15px;border:1px solid color-mix(in srgb,var(--brand-accent) 30%,var(--line));border-radius:11px;padding:14px 15px;background:color-mix(in srgb,var(--brand-accent) 6%,var(--surface));display:flex;align-items:center;justify-content:space-between;gap:20px}.import-ready-box h3{margin:2px 0 3px;font-size:1rem}.import-ready-box p:not(.eyebrow){margin:0;color:var(--muted);font-size:.75rem}.import-ready-stats{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.import-ready-stats span{border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:7px 9px;font-size:.7rem;color:var(--muted);white-space:nowrap}.import-ready-stats strong{color:var(--ink);margin-left:3px}.import-final-actions{margin-top:14px}.import-row-modal-card{width:min(760px,100%)}.import-modal-issues{display:grid;gap:6px;margin-top:12px}.import-modal-issues:empty{display:none}.import-modal-issues .issue{display:block}.import-modal-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.import-modal-fields label{display:grid;gap:4px;font-size:.72rem;font-weight:750}.import-modal-fields input{width:100%}.import-notice{margin-bottom:12px}
[data-theme="dark"] .import-record.state-warning{background:color-mix(in srgb,var(--warning-bg) 48%,var(--surface))}[data-theme="dark"] .import-record.state-error{background:color-mix(in srgb,var(--danger-bg) 42%,var(--surface))}
@media(max-width:1024px){.import-file-line,.import-ready-box{align-items:flex-start;flex-direction:column}.import-summary-inline,.import-ready-stats{justify-content:flex-start}.import-mapping-row{grid-template-columns:minmax(160px,.75fr) minmax(210px,1fr) minmax(170px,.8fr)}.import-records-heading{grid-template-columns:34px minmax(0,1fr)}.import-records-heading .header-actions{grid-column:2;justify-content:flex-start}}
@media(max-width:768px){.import-page-header{align-items:flex-start}.import-page-header .header-actions{width:100%}.import-page-header .header-actions .button{flex:1}.import-mapping-head{display:none}.import-mapping-row{grid-template-columns:1fr;gap:7px;padding:11px 0}.import-mapping-row>div{display:grid;gap:4px}.import-mapping-row>div:nth-child(2):before{content:'Import as';font-size:.62rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800}.import-mapping-row>div:nth-child(3):before{content:'Custom label';font-size:.62rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800}.import-advanced-grid{grid-template-columns:1fr}.import-advanced-grid fieldset{grid-template-columns:1fr}.import-row-tools{grid-template-columns:1fr 1fr}.import-row-tools .status{grid-column:1/-1;margin:0}.import-record{grid-template-columns:30px minmax(0,1fr)}.import-record-actions{grid-column:2}.import-modal-fields{grid-template-columns:1fr}}
@media(max-width:520px){.import-step-heading,.import-records-heading{grid-template-columns:30px minmax(0,1fr)}.import-step-number{width:28px;height:28px}.import-file-line{padding:11px}.import-summary-inline{display:grid;grid-template-columns:1fr 1fr;width:100%}.import-summary-inline>span{justify-content:center}.import-records-heading .header-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr;width:100%}.import-records-heading .header-actions .button{width:100%}.import-row-tools{grid-template-columns:1fr}.import-row-tools .status{grid-column:auto}.import-ready-stats{display:grid;grid-template-columns:1fr;width:100%}.import-ready-stats span{text-align:center}.import-final-actions{display:grid!important;grid-template-columns:1fr}.import-final-actions .button{width:100%}}
.import-record[hidden]{display:none!important}

/* Participant Batch / generation hotfix */
.status.archived{background:var(--surface-3);color:var(--muted)}
.import-batch-name-field{margin-top:12px;max-width:680px}.import-batch-name-field label{display:grid;gap:5px;font-size:.76rem;font-weight:750}.import-batch-name-field small{font-weight:400;color:var(--muted)}
.participant-batch-actions{margin-top:14px;align-items:center;flex-wrap:wrap}.participant-batch-actions form{margin:0}.participant-batch-actions .inline-filter{display:flex;gap:8px;align-items:center}.participant-batch-actions .inline-filter input{min-width:min(320px,60vw)}
.participant-source-options{display:flex;gap:16px;align-items:center;flex-wrap:wrap;border:1px solid var(--line);border-radius:10px;padding:11px 13px;margin:0 0 12px;background:var(--surface-2)}.participant-source-options legend{font-size:.76rem;font-weight:800;padding:0 5px}.participant-source-options label{display:flex;gap:7px;align-items:center;font-size:.76rem;font-weight:750}.participant-source-options small{width:100%;color:var(--muted);font-size:.68rem}
@media(max-width:768px){.participant-source-options{display:grid;grid-template-columns:1fr}.participant-source-options small{grid-column:1}.participant-batch-actions{align-items:stretch}.participant-batch-actions .inline-filter{width:100%;display:grid;grid-template-columns:1fr}.participant-batch-actions .inline-filter input{min-width:0;width:100%}.generation-participant-filters{grid-template-columns:1fr}.participant-selection-actions{padding-bottom:0;flex-wrap:wrap}}

/* Participant Batch cards keep operational actions visible without creating a new navigation module. */
.participant-batch-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.65rem .85rem;align-items:center}
.participant-batch-card-copy{min-width:0}
.participant-batch-card-actions{grid-column:2 / -1;display:flex;flex-wrap:wrap;gap:.75rem}
@media (max-width:700px){.participant-batch-card{grid-template-columns:auto minmax(0,1fr)}.participant-batch-card>.status{grid-column:2;justify-self:start}.participant-batch-card-actions{grid-column:1 / -1}}

/* Controlled destructive data-management actions */
.danger-zone{border-color:color-mix(in srgb,var(--danger) 42%,var(--line));background:color-mix(in srgb,var(--danger-bg) 18%,var(--surface))}.deletion-options{display:grid;gap:10px}.deletion-option{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:start;border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--surface);cursor:pointer}.deletion-option:has(input:checked){border-color:var(--danger);box-shadow:0 0 0 2px color-mix(in srgb,var(--danger) 12%,transparent)}.deletion-option input{margin-top:3px}.deletion-option span{display:grid;gap:3px}.deletion-option small{color:var(--muted)}.deletion-option em{font-style:normal;color:var(--danger);font-size:.72rem;font-weight:700}.deletion-confirmation{display:grid;gap:7px}.deletion-confirmation code{color:var(--danger)}.danger-zone-compact{margin-top:18px;border-top:1px solid color-mix(in srgb,var(--danger) 35%,var(--line));padding-top:16px}.danger-zone-compact h3{color:var(--danger);margin:0 0 5px}.danger-zone-compact p{color:var(--muted);margin:0 0 12px}.bulk-delete-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.status.deleted,.status.deleted_outputs{background:var(--danger-bg);color:var(--danger)}

.storage-policy-note{align-self:center;font-size:.78rem;color:var(--muted,#8794a8);white-space:nowrap}

/* Certificate email delivery */
.email-settings .toggle-row{display:flex;align-items:center;gap:8px}.checkbox-grid{display:flex;gap:16px;flex-wrap:wrap;margin-top:16px}.checkbox-grid label{display:flex;align-items:center;gap:7px}.email-template-layout{grid-template-columns:minmax(0,1.6fr) minmax(280px,.7fr)}.email-template-layout>.panel:first-of-type{grid-column:auto}.email-template-layout>.panel:nth-of-type(2){grid-column:auto}.merge-field-panel{align-self:start;position:sticky;top:88px}.merge-field-panel h3{font-size:.78rem;margin:16px 0 8px;color:var(--muted)}.merge-field-list{display:flex;gap:6px;flex-wrap:wrap}.chip-button{border:1px solid var(--line);background:var(--surface-2);color:var(--ink);border-radius:999px;padding:6px 9px;font-size:.7rem;font-weight:700}.chip-button:hover{border-color:var(--gold)}.email-preview-grid{display:grid;grid-template-columns:minmax(300px,.65fr) minmax(0,1.35fr);gap:22px}.email-html-preview iframe{display:block;width:100%;min-height:520px;border:1px solid var(--line);border-radius:10px;background:#fff}.choice-list{display:grid;gap:10px}.choice-card{display:grid;gap:4px;border:1px solid var(--line);border-radius:10px;padding:13px;background:var(--surface);color:var(--ink)!important}.choice-card span{color:var(--muted);font-size:.78rem}.send-summary{display:flex;gap:10px;align-items:center;align-self:end;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}.send-summary strong{font-size:1.35rem}.send-summary span{color:var(--muted);font-size:.78rem}.warning-text{color:var(--warning);font-weight:700}.status.uncertain,.status.attention_required{background:var(--warning-bg);color:var(--warning)}.status.cancelled{background:var(--surface-3);color:var(--muted)}.metric-grid.five{grid-template-columns:repeat(5,1fr)}.inline-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.inline-form input,.inline-form select{width:auto;min-width:220px}.email-delivery-summary{margin-top:22px}
@media(max-width:1024px){.email-template-layout,.email-preview-grid{grid-template-columns:1fr}.merge-field-panel{position:static}.metric-grid.five{grid-template-columns:repeat(3,1fr)}}
@media(max-width:768px){.email-settings{grid-template-columns:1fr}.email-settings>.panel{grid-column:1!important}.metric-grid.five{grid-template-columns:repeat(2,1fr)}.inline-form{display:grid;grid-template-columns:1fr;width:100%}.inline-form input,.inline-form select,.inline-form .button{width:100%;min-width:0}.email-html-preview iframe{min-height:440px}}
@media(max-width:520px){.metric-grid.five{grid-template-columns:1fr}.email-template-layout textarea{min-height:220px}.merge-field-list{display:grid;grid-template-columns:1fr 1fr}.chip-button{width:100%}}

/* Public certificate self-service portal */
.portal-public{background:linear-gradient(180deg,color-mix(in srgb,var(--brand-primary,var(--navy)) 5%,var(--surface-2)) 0,var(--surface-2) 34%,var(--surface-2) 100%)}
.public-header-actions{display:flex;align-items:center;gap:14px}.public-nav{display:flex;align-items:center;gap:6px}.public-nav a{color:var(--muted)!important;font-size:.8rem;font-weight:760;padding:8px 10px;border-radius:8px;text-decoration:none!important}.public-nav a:hover,.public-nav a[aria-current="page"]{color:var(--ink)!important;background:var(--surface-3)}
.portal-public .public-main{width:min(1180px,calc(100% - 32px));padding:56px 0 64px}.certificate-access-shell{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);gap:clamp(28px,5vw,72px);align-items:center;max-width:1080px;margin:0 auto}.certificate-access-copy{padding:18px 0}.portal-kicker{display:inline-flex;align-items:center;gap:8px;margin:0 0 16px;font-size:.75rem;text-transform:uppercase;letter-spacing:.11em;font-weight:850;color:var(--brand-accent,var(--teal))}.portal-kicker:before{content:"";width:26px;height:2px;background:var(--brand-secondary,var(--gold));border-radius:99px}.certificate-access-copy h1,.certificate-access-card h1,.portal-library-header h1{font-size:clamp(2.1rem,4.3vw,4.15rem);line-height:.98;letter-spacing:-.052em;margin:0;color:var(--ink)}.certificate-access-card h1{font-size:clamp(1.75rem,3vw,2.45rem);line-height:1.02}.portal-lead{font-size:clamp(1rem,1.7vw,1.22rem);line-height:1.65;color:var(--muted);max-width:650px;margin:18px 0 0}.portal-lead.compact{font-size:.98rem;max-width:560px;margin:12px auto 0}.portal-trust-list{display:grid;gap:11px;margin-top:32px}.portal-trust-list span{display:flex;align-items:center;gap:11px;color:var(--muted);font-size:.91rem}.portal-trust-list b{display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;border-radius:50%;background:color-mix(in srgb,var(--brand-primary,var(--navy)) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--brand-primary,var(--navy)) 18%,var(--line));color:var(--brand-primary,var(--navy));font-size:.72rem}
.certificate-access-card{background:var(--surface);border:1px solid color-mix(in srgb,var(--brand-primary,var(--navy)) 10%,var(--line));border-radius:22px;box-shadow:0 24px 70px rgba(16,26,53,.11);padding:clamp(24px,4vw,38px);min-width:0}.portal-card-heading{display:flex;align-items:center;gap:14px;margin-bottom:14px}.portal-card-heading h2{margin:1px 0 0;font-size:1.28rem;letter-spacing:-.025em}.portal-icon{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:color-mix(in srgb,var(--brand-primary,var(--navy)) 8%,var(--surface));color:var(--brand-primary,var(--navy));font-size:1.25rem}.portal-card-intro{color:var(--muted);margin:0 0 20px;line-height:1.6}.portal-form{display:grid;gap:10px}.portal-form label{font-size:.8rem}.portal-form input{min-height:48px;border-radius:11px;padding:11px 13px;background:var(--surface);border-color:color-mix(in srgb,var(--ink) 16%,var(--line));font-size:1rem}.portal-form input:focus{border-color:var(--brand-accent,var(--teal));box-shadow:0 0 0 4px color-mix(in srgb,var(--brand-accent,var(--teal)) 15%,transparent)}.portal-primary{min-height:48px;margin-top:2px;border-radius:11px!important;background:var(--brand-primary,var(--navy))!important;border-color:var(--brand-primary,var(--navy))!important;color:var(--brand-on-primary,#fff)!important}.portal-primary:hover{filter:brightness(1.08)}.portal-field-error{margin:0;color:var(--danger);font-size:.78rem;font-weight:700}.portal-security-note{display:grid;grid-template-columns:20px 1fr;gap:8px;margin-top:18px;padding:13px 14px;border-radius:11px;background:color-mix(in srgb,var(--brand-accent,var(--teal)) 6%,var(--surface-2));border:1px solid color-mix(in srgb,var(--brand-accent,var(--teal)) 13%,var(--line));color:var(--muted);font-size:.77rem}.portal-security-note span{color:var(--brand-accent,var(--teal));font-size:.78rem}.portal-security-note p{margin:0;line-height:1.5}.portal-security-note strong{color:var(--ink)}.portal-secondary-link{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:.77rem;color:var(--muted)}.portal-secondary-link a{font-weight:800;color:var(--brand-primary,var(--navy))!important}.portal-help-strip{max-width:1080px;margin:34px auto 0;display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--surface) 72%,transparent);overflow:hidden}.portal-help-strip>div{padding:16px 18px;display:grid;gap:3px}.portal-help-strip>div+div{border-left:1px solid var(--line)}.portal-help-strip strong{font-size:.76rem}.portal-help-strip span{color:var(--muted);font-size:.7rem;line-height:1.45}
.certificate-access-challenge{grid-template-columns:1fr;max-width:620px}.portal-code-card{text-align:center}.portal-code-mark{display:inline-flex;align-items:center;justify-content:center;min-width:126px;height:46px;padding:0 16px;margin-bottom:16px;border-radius:999px;background:color-mix(in srgb,var(--brand-secondary,var(--gold)) 12%,var(--surface-2));border:1px solid color-mix(in srgb,var(--brand-secondary,var(--gold)) 28%,var(--line));color:var(--brand-primary,var(--navy));font-size:1rem;font-weight:900;letter-spacing:.25em}.portal-masked-email{font-weight:850;margin:9px 0 22px;overflow-wrap:anywhere}.portal-otp-form{max-width:420px;margin:0 auto}.portal-otp-input{text-align:center!important;font-family:ui-monospace,SFMono-Regular,Consolas,monospace!important;font-size:clamp(1.55rem,4vw,2.05rem)!important;font-weight:850!important;letter-spacing:.28em!important;padding-left:calc(.28em + 13px)!important}.portal-otp-form .form-help{margin:0 0 4px;color:var(--muted);font-size:.72rem;font-weight:450}.portal-code-actions{display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap;margin-top:18px}.portal-code-actions form{margin:0}.button.ghost{background:transparent;border-color:transparent;color:var(--muted)!important}.button.ghost:hover{background:var(--surface-2);color:var(--ink)!important}.portal-privacy-copy{max-width:500px;margin:22px auto 0;color:var(--muted);font-size:.72rem;line-height:1.55}
.portal-library{max-width:1100px;margin:0 auto}.portal-library-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;margin-bottom:26px}.portal-library-header h1{font-size:clamp(2rem,4vw,3.45rem)}.portal-library-header p:not(.eyebrow){margin:8px 0 0;color:var(--muted)}.portal-library-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;color:var(--muted);font-size:.78rem}.portal-library-meta strong{color:var(--ink);font-size:.95rem}.portal-certificate-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.portal-certificate-card{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:21px;box-shadow:0 11px 34px rgba(16,26,53,.065);display:flex;flex-direction:column;min-height:330px}.portal-certificate-card:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--brand-accent,var(--teal))}.portal-certificate-card.status-revoked:before{background:var(--danger)}.portal-certificate-card.status-replaced:before{background:#7f56d9}.portal-certificate-top{display:flex;justify-content:space-between;gap:12px;align-items:center}.portal-document-icon{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--surface-2);color:var(--brand-primary,var(--navy));font-size:1.15rem}.portal-certificate-copy{margin-top:18px}.portal-certificate-type{margin:0 0 4px;text-transform:uppercase;letter-spacing:.1em;font-size:.62rem;font-weight:850;color:var(--muted)}.portal-certificate-copy h2{margin:0;font-size:clamp(1.08rem,2vw,1.35rem);line-height:1.28;letter-spacing:-.02em}.portal-recipient{margin:8px 0 0;color:var(--muted);font-size:.88rem}.portal-certificate-details{display:grid;grid-template-columns:1.35fr .75fr;gap:12px;margin:20px 0}.portal-certificate-details div{min-width:0}.portal-certificate-details dt{font-size:.62rem;text-transform:uppercase;letter-spacing:.055em;color:var(--muted);font-weight:800}.portal-certificate-details dd{margin:4px 0 0;font-size:.78rem;font-weight:800;overflow-wrap:anywhere}.portal-lifecycle-note{display:grid;gap:2px;margin:0 0 14px;padding:10px 11px;border-radius:9px;background:var(--surface-2);border:1px solid var(--line);font-size:.7rem}.portal-lifecycle-note span{color:var(--muted)}.portal-lifecycle-note.warning{background:var(--warning-bg);border-color:color-mix(in srgb,var(--warning) 28%,var(--line))}.portal-lifecycle-note.warning strong{color:var(--warning)}.portal-certificate-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}.portal-certificate-actions .button{flex:1;min-width:150px}.button.disabled{opacity:.55;pointer-events:none;background:var(--surface-3);border-color:var(--line);color:var(--muted)!important}.portal-pagination{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:24px}.portal-pagination span{color:var(--muted);font-size:.78rem}.portal-empty-state{max-width:720px;margin:36px auto 0;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:clamp(30px,6vw,56px);box-shadow:var(--shadow)}.portal-empty-icon,.portal-error-icon{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;margin:0 auto 16px;background:var(--surface-2);color:var(--brand-primary,var(--navy));font-size:1.7rem;font-weight:900}.portal-empty-state h2{font-size:clamp(1.35rem,3vw,1.8rem);margin:4px auto 10px;max-width:580px}.portal-empty-state>p:not(.eyebrow){color:var(--muted);max-width:610px;margin:0 auto;line-height:1.65}.portal-empty-actions{display:flex;justify-content:center;gap:9px;flex-wrap:wrap;margin-top:20px}
.certificate-access-error{grid-template-columns:1fr;max-width:640px}.portal-error-card{text-align:center}.portal-error-icon{background:var(--danger-bg);color:var(--danger)}.portal-error-card>p:not(.eyebrow){color:var(--muted);line-height:1.6}.portal-retry-copy{font-weight:750!important;color:var(--ink)!important}.portal-support-line{font-size:.75rem!important;margin:20px 0 0!important}.portal-public .alert{max-width:780px;margin:0 auto 16px}.portal-public :is(a,button,input):focus-visible{outline:3px solid color-mix(in srgb,var(--brand-secondary,var(--gold)) 70%,#fff);outline-offset:3px}
[data-theme="dark"] .portal-public{background:linear-gradient(180deg,color-mix(in srgb,var(--brand-primary,var(--navy)) 15%,var(--surface-2)) 0,var(--surface-2) 38%)}[data-theme="dark"] .certificate-access-card,[data-theme="dark"] .portal-certificate-card,[data-theme="dark"] .portal-empty-state{box-shadow:0 24px 70px rgba(0,0,0,.24)}[data-theme="dark"] .portal-trust-list b,[data-theme="dark"] .portal-icon,[data-theme="dark"] .portal-document-icon{color:#f3d789}[data-theme="dark"] .portal-secondary-link a{color:#f3d789!important}
@media(max-width:900px){.certificate-access-shell{grid-template-columns:1fr;max-width:720px;gap:24px}.certificate-access-copy{text-align:center;padding:0 20px}.portal-lead{margin-left:auto;margin-right:auto}.portal-trust-list{max-width:500px;margin-left:auto;margin-right:auto;text-align:left}.portal-help-strip{max-width:720px;grid-template-columns:1fr}.portal-help-strip>div+div{border-left:0;border-top:1px solid var(--line)}.portal-certificate-grid{grid-template-columns:1fr}.portal-library{max-width:760px}}
@media(max-width:680px){.portal-public .public-main{width:min(100% - 24px,1180px);padding:28px 0 42px}.public-header{height:68px}.public-brand span span,.public-brand small{display:none}.public-nav a{font-size:.72rem;padding:7px 8px}.public-nav a:first-child{display:none}.public-header-actions{gap:7px}.certificate-access-copy{padding:2px 4px}.certificate-access-copy h1{font-size:clamp(2.1rem,11vw,3.25rem)}.portal-lead{font-size:.96rem;line-height:1.55}.portal-trust-list{margin-top:23px}.certificate-access-card{border-radius:17px;padding:22px 18px}.portal-card-heading{align-items:flex-start}.portal-secondary-link{align-items:flex-start;flex-direction:column;gap:5px}.portal-library-header{align-items:flex-start;flex-direction:column}.portal-library-header form,.portal-library-header .button{width:100%}.portal-library-meta{align-items:flex-start;flex-direction:column}.portal-certificate-card{padding:18px;min-height:0}.portal-certificate-details{grid-template-columns:1fr 1fr}.portal-certificate-actions{display:grid;grid-template-columns:1fr}.portal-certificate-actions .button{width:100%;min-width:0}.portal-code-actions{display:grid;grid-template-columns:1fr}.portal-code-actions form,.portal-code-actions .button{width:100%}.portal-empty-actions{display:grid}.portal-empty-actions .button{width:100%}.portal-help-strip{margin-top:22px}}
@media(max-width:380px){.portal-public .public-main{width:min(100% - 18px,1180px)}.public-header{padding:0 10px}.public-nav a{padding:6px}.certificate-access-card{padding:20px 15px}.portal-trust-list span{font-size:.82rem}.portal-certificate-details{grid-template-columns:1fr}.portal-otp-input{font-size:1.45rem!important;letter-spacing:.2em!important}.portal-card-heading h2{font-size:1.12rem}}

/* Generation Batch amendments */
.batch-manage-form .batch-roster-selector{max-height:360px;overflow:auto;border:1px solid var(--border-color,#d9deea);border-radius:12px;padding:8px;margin:12px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.batch-roster-selector label{display:flex;gap:10px;align-items:flex-start;padding:10px;border-radius:9px;background:var(--surface-soft,rgba(127,127,127,.06));cursor:pointer}
.batch-roster-selector label input{margin-top:3px}.batch-roster-selector label span{min-width:0}.batch-roster-selector label strong,.batch-roster-selector label small{display:block}.batch-roster-selector label small{opacity:.72;margin-top:3px;overflow-wrap:anywhere}
.batch-remove-controls{display:flex;gap:12px;justify-content:space-between;align-items:end;margin-top:14px;flex-wrap:wrap}.batch-remove-controls label{min-width:min(100%,420px);flex:1}.batch-template-update{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.batch-template-update label{flex:1;min-width:min(100%,360px)}
.batch-row-removed{opacity:.62}.activity-list{display:grid;gap:8px}.activity-row{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:4px 16px;padding:12px 0;border-bottom:1px solid var(--border-color,rgba(127,127,127,.18))}.activity-row small{grid-column:1/-1;opacity:.7;overflow-wrap:anywhere}
.status.not_generated,.status.pending{white-space:nowrap}
@media(max-width:768px){.batch-manage-form .batch-roster-selector{grid-template-columns:1fr}.activity-row{grid-template-columns:1fr}.activity-row small{grid-column:auto}.batch-remove-controls,.batch-template-update{align-items:stretch}.batch-remove-controls .button,.batch-template-update .button{width:100%}}
@media(max-width:520px){.batch-manage-form .table-wrap,.panel .table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.batch-roster-selector{max-height:300px}}
