@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-vietnamese-wdth-normal-rJmnGBSt.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-ext-wdth-normal-7khWdh9v.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-wdth-normal-DY7AcnAa.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible Mono Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/atkinson-hyperlegible-mono-latin-ext-wght-normal-CXgNM06D.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Mono Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/atkinson-hyperlegible-mono-latin-wght-normal-CoA7y8X5.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--mat: #1e5446;--mat-line: rgba(255, 255, 255, .055);--mat-line-major: rgba(255, 255, 255, .11);--mat-ink: #eaf2ee;--mat-muted: #a8c4b9;--stock: #fcfcf9;--stock-2: #f0f2ee;--liner: #e7ebe5;--ink: #121614;--ink-muted: #535d58;--rule: #d3d9d3;--rule-strong: #121614;--marker: #f3c63f;--marker-ink: #121614;--void: #b8322a;--pass: #1d7a4e;--hold: #8f5c00;--band-pass: #1d7a4e;--band-void: #b8322a;--tray: #121614;--tray-ink: #eef1ee;--tray-muted: #a3aea8;--lift: 0 1px 0 rgba(0, 0, 0, .22), 0 16px 30px -20px rgba(0, 0, 0, .65);--focus: var(--marker);--font-display: "Archivo Variable", "Arial Narrow", "Noto Sans Arabic", sans-serif;--font-body: "Atkinson Hyperlegible Next Variable", "Segoe UI", "Noto Sans Arabic", system-ui, sans-serif;--font-mono: "Atkinson Hyperlegible Mono Variable", ui-monospace, "Cascadia Mono", monospace;--mat-surface: linear-gradient(var(--mat-line-major) 1px, transparent 1px) 0 0 / 120px 120px, linear-gradient(90deg, var(--mat-line-major) 1px, transparent 1px) 0 0 / 120px 120px, linear-gradient(var(--mat-line) 1px, transparent 1px) 0 0 / 24px 24px, linear-gradient(90deg, var(--mat-line) 1px, transparent 1px) 0 0 / 24px 24px, var(--mat);color-scheme:light}@media(prefers-color-scheme:dark){:root{--mat: #0e2b24;--mat-line: rgba(255, 255, 255, .04);--mat-line-major: rgba(255, 255, 255, .08);--mat-ink: #e3ece8;--mat-muted: #8fb0a4;--stock: #18201d;--stock-2: #212b27;--liner: #131a17;--ink: #e6ece8;--ink-muted: #a2b0a9;--rule: #2f3b36;--rule-strong: #e6ece8;--void: #f08a80;--pass: #72d49e;--hold: #f0b860;--tray: #080c0a;--lift: 0 1px 0 rgba(0, 0, 0, .5), 0 18px 34px -18px rgba(0, 0, 0, .9);color-scheme:dark}}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--mat-surface);background-attachment:fixed;color:var(--ink);font-family:var(--font-body);font-size:15.5px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.18em}a:hover{text-decoration-thickness:2px}h1,h2,h3,h4{font-family:var(--font-display);font-stretch:62%;font-weight:800;text-transform:uppercase;letter-spacing:.01em;line-height:1}h2{margin:0;font-size:1.6rem}h3{margin:1.4rem 0 .6rem;font-size:1.15rem;font-weight:750;letter-spacing:.03em}h4{margin:1.2rem 0 .5rem;font-size:.95rem;font-weight:700;letter-spacing:.06em}.mono,code{font-family:var(--font-mono);font-size:.92em}:where(button,a,input,select,textarea,summary):focus-visible{outline:2.5px solid var(--focus);outline-offset:2px}.app-shell{max-width:1180px;margin:0 auto;padding:0 1.25rem 7.5rem}.top-nav{position:sticky;top:0;z-index:5;margin:0 -1.25rem 1.25rem;padding:1.1rem 1.25rem 1rem;background:var(--mat-surface);background-attachment:fixed;border-bottom:1px solid var(--mat-line-major);color:var(--mat-ink)}.masthead{display:flex;align-items:center;justify-content:space-between;gap:.75rem 1.5rem;flex-wrap:wrap}.brand{margin:0;font-size:clamp(1.6rem,1.1rem + 1.6vw,2.4rem)}.session-controls{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.session-role{margin-right:.35rem;color:var(--mat-muted);font-size:.85rem}.session-role strong{color:var(--mat-ink);font-family:var(--font-mono);font-weight:600}.mat-notice{margin:.75rem 0 0;color:var(--marker);font-size:.9rem}.tabs{display:flex;gap:.25rem;width:fit-content;max-width:100%;margin-top:1rem;padding:.3rem;overflow-x:auto;border-radius:10px;background:#0000003d}.tab{padding:.6rem 1.05rem;border:0;border-radius:7px;background:transparent;color:var(--mat-ink);font-family:var(--font-display);font-stretch:75%;font-size:1rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;cursor:pointer}.tab:hover{background:#ffffff14}.tab[aria-pressed=true]{background:#fcfcf9;color:#121614;box-shadow:0 1px #00000059}.content{display:grid;gap:1.25rem;min-width:0}.card{--focus: var(--ink);min-width:0;padding:1.25rem;border:1px solid rgba(0,0,0,.18);border-radius:12px;background:var(--stock);box-shadow:var(--lift)}.card-head{margin:-1.25rem -1.25rem 1.25rem;padding:1.1rem 1.25rem .9rem;border-bottom:3px solid var(--rule-strong)}.card-head .help-text{margin:.55rem 0 0;max-width:70ch}.card-head h1{margin:0;font-size:clamp(1.8rem,1.4rem + 1.4vw,2.4rem)}.help-text{color:var(--ink-muted);font-size:.9rem;line-height:1.5}.empty{margin:0;padding:1.75rem 1rem;border:1px dashed var(--rule);border-radius:8px;color:var(--ink-muted);text-align:center}.form-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.85rem;min-width:0;margin:0 0 1rem;padding:0;border:0}.qr-form{grid-template-columns:1fr 2fr .6fr}.certificate-form{grid-template-columns:repeat(3,minmax(0,1fr))}.certificate-fields{min-width:0;margin:0 0 1rem;padding:0;border:0}.label{display:block;color:var(--ink-muted);font-family:var(--font-display);font-stretch:75%;font-size:.8rem;font-weight:650;letter-spacing:.07em;text-transform:uppercase}.input,.select,.textarea,.number{width:100%;margin-top:.35rem;padding:.55rem .65rem;border:1px solid var(--rule);border-bottom-color:var(--ink-muted);border-radius:6px;background:var(--stock-2);color:var(--ink);font-family:var(--font-body);font-size:.95rem;line-height:1.3}.input:focus-visible,.select:focus-visible,.textarea:focus-visible,.number:focus-visible{border-color:var(--ink);background:var(--stock)}.input.mono,.textarea{font-family:var(--font-mono)}.textarea{min-height:120px;font-size:.85rem;resize:vertical}input[type=checkbox]{width:1.05rem;height:1.05rem;accent-color:var(--mat);vertical-align:middle}input[type=file]{display:block;max-width:100%;margin-top:.45rem;color:var(--ink-muted);font-family:var(--font-body);font-size:.88rem;text-transform:none;letter-spacing:normal}input[type=file]::file-selector-button{margin-right:.75rem;padding:.5rem .85rem;border:1.5px solid var(--ink);border-radius:7px;background:transparent;color:var(--ink);font:700 .88rem var(--font-body);cursor:pointer}.extra-field-row{display:grid;grid-template-columns:1fr 2fr auto;align-items:end;gap:.85rem;margin-bottom:.85rem}.check-row{display:flex;align-items:flex-start;gap:.55rem;margin:.75rem 0 0}.validation-error{color:var(--void)}.actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:2.5rem;padding:.55rem 1rem;border:1.5px solid var(--ink);border-radius:7px;background:transparent;color:var(--ink);font-family:var(--font-body);font-size:.92rem;font-weight:700;line-height:1.1;white-space:nowrap;cursor:pointer}.btn.ghost:hover:not(:disabled){background:var(--stock-2)}.btn.primary{border-color:#121614;background:var(--marker);color:var(--marker-ink);box-shadow:0 2px #121614}.btn.primary:hover:not(:disabled){background:#f7d35e}.btn.primary:active:not(:disabled){transform:translateY(2px);box-shadow:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.on-mat{border-color:#eaf2ee66;color:var(--mat-ink);font-size:.86rem;min-height:2.25rem}.btn.on-mat:hover:not(:disabled){border-color:var(--mat-ink);background:#ffffff14}.close-btn{padding:.25rem;border:0;background:transparent;color:var(--ink);font-family:var(--font-display);font-stretch:75%;font-weight:700;letter-spacing:.06em;text-transform:uppercase;text-decoration:underline;text-underline-offset:.2em;cursor:pointer}.table-wrap{min-width:0;overflow-x:auto;border:1px solid var(--rule);border-radius:8px}.actions+.table-wrap{margin-top:.9rem}.table{width:100%;min-width:900px;border-collapse:separate;border-spacing:0;font-size:.92rem}.table th{padding:.6rem .65rem;border-bottom:2px solid var(--rule-strong);background:var(--liner);color:var(--ink-muted);font-family:var(--font-display);font-stretch:75%;font-size:.78rem;font-weight:700;letter-spacing:.08em;text-align:left;text-transform:uppercase;white-space:nowrap}.table td{padding:.55rem .65rem;border-bottom:1px solid var(--rule);text-align:left;vertical-align:middle}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:color-mix(in srgb,var(--marker) 7%,transparent)}.table .input,.table .select,.table .number{margin-top:0;padding:.42rem .55rem}.table .number{width:5.5rem}.table .select{min-width:7rem}.table .input{min-width:7.5rem}.table td.empty-row{padding:2rem 1rem;color:var(--ink-muted);text-align:center}.cell-sub{display:block;margin-top:.15rem;color:var(--ink-muted);font-size:.84rem}.review-table{min-width:650px}.import-review td{overflow-wrap:anywhere}.certificate-register{min-width:1000px}.certificate-id{display:inline-block;max-width:240px;margin-top:.2rem;color:var(--ink-muted);font-family:var(--font-mono);font-size:.76rem;overflow-wrap:anywhere}.pagination{justify-content:space-between;margin-top:1rem}.page-count{color:var(--ink-muted);font-family:var(--font-mono);font-size:.85rem}.status-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.28rem .5rem;border:1px solid currentColor;border-radius:4px;color:var(--ink-muted);font-family:var(--font-mono);font-size:.72rem;font-weight:600;letter-spacing:.04em;line-height:1;text-transform:uppercase;white-space:nowrap}.status-chip:before{content:"";width:.5rem;height:.5rem;border-radius:1px;background:currentColor}.status-chip.valid{color:var(--pass)}.status-chip.pending{color:var(--hold)}.status-chip.expired,.status-chip.revoked,.status-chip.superseded{color:var(--void)}.status-line{margin:.9rem 0 .6rem;color:var(--ink-muted);font-family:var(--font-mono);font-size:.85rem}.spinner{width:16px;height:16px;border:2px solid color-mix(in srgb,var(--ink) 25%,transparent);border-top-color:var(--ink);border-radius:50%;animation:spin .75s linear infinite}.printable{--mark: var(--ink-muted);--mark-len: 12px;display:grid;place-items:center;padding:14px;background:linear-gradient(var(--mark),var(--mark)) left top / var(--mark-len) 1px,linear-gradient(var(--mark),var(--mark)) left top / 1px var(--mark-len),linear-gradient(var(--mark),var(--mark)) right top / var(--mark-len) 1px,linear-gradient(var(--mark),var(--mark)) right top / 1px var(--mark-len),linear-gradient(var(--mark),var(--mark)) left bottom / var(--mark-len) 1px,linear-gradient(var(--mark),var(--mark)) left bottom / 1px var(--mark-len),linear-gradient(var(--mark),var(--mark)) right bottom / var(--mark-len) 1px,linear-gradient(var(--mark),var(--mark)) right bottom / 1px var(--mark-len);background-repeat:no-repeat;color:var(--ink-muted)}.printable img{display:block;background:#fff;animation:feed .48s steps(14,end) both}.printable.small{--mark-len: 7px;width:fit-content;padding:6px}.thumb{width:150px;height:50px;object-fit:contain}.encoded-value{display:block;margin-top:.25rem;color:var(--ink-muted);font-size:.78rem;overflow-wrap:anywhere}.qr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:1rem}.qr-card{display:grid;align-content:start;gap:.75rem;min-width:0;padding:1rem;border:1px solid var(--rule);border-radius:10px}.qr-card h3{margin:0;overflow-wrap:anywhere}.qr-card p{margin:0}.qr-preview{min-height:250px;font-family:var(--font-mono);font-size:.8rem}.qr-preview img{width:220px;max-width:100%;height:auto;aspect-ratio:1;image-rendering:pixelated}.certificate-url{font-family:var(--font-mono);font-size:.8rem;overflow-wrap:anywhere}.bulk-section,.import-review{margin-top:1.5rem}.card .bulk-section:not(.certificate-card):not(.qr-grid){padding-top:.4rem;border-top:1px dashed var(--rule)}.import-review .btn{margin-top:.85rem}.file-actions{align-items:end;margin-bottom:.9rem}.csv-review-button{margin-top:.75rem}.certificate-card{min-width:0;padding:1rem 1.1rem;border:1px solid var(--rule);border-radius:10px}.certificate-card+.certificate-card{margin-top:1rem}.certificate-card>h3:first-child{margin-top:0}h3 .status-chip{margin-left:.6rem;vertical-align:.15em}.certificate-summary{display:grid;grid-template-columns:minmax(120px,1fr) 3fr;margin:0}.certificate-summary dt,.certificate-summary dd{padding:.55rem 0;border-bottom:1px solid var(--rule)}.certificate-summary dt{padding-right:1rem;color:var(--ink-muted);font-family:var(--font-display);font-stretch:75%;font-size:.8rem;font-weight:650;letter-spacing:.07em;text-transform:uppercase}.certificate-summary dd{margin:0;overflow-wrap:anywhere}.history{margin:0;padding:0;list-style:none}.history li{padding:.4rem 0;font-size:.9rem}.history li+li{border-top:1px dashed var(--rule)}.history time{margin-right:.5rem;color:var(--ink-muted);font-family:var(--font-mono);font-size:.8rem}.duplicate-review{margin:1rem 0;padding:1rem;border:2px dashed var(--hold);border-radius:8px;background:color-mix(in srgb,var(--marker) 9%,transparent);overflow-wrap:anywhere}.duplicate-review h3{margin-top:0}.notice{margin:.9rem 0 0;padding:.6rem .8rem;border-left:4px solid var(--pass);background:var(--stock-2);font-size:.92rem}.preview-bar{--focus: var(--marker);position:fixed;right:0;bottom:0;left:0;z-index:10;padding:.8rem 1.25rem;border-top:3px solid var(--marker);background:var(--tray);color:var(--tray-ink)}.preview-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.8rem;max-width:1180px;margin:0 auto}.metrics{display:flex;gap:1.5rem;color:var(--tray-muted);font-size:.9rem}.metrics b{margin-right:.3rem;color:var(--tray-ink);font-family:var(--font-mono);font-size:1.15rem;font-weight:600}.preview-bar .btn.ghost{border-color:#eef1ee73;color:var(--tray-ink)}.preview-bar .btn.ghost:hover:not(:disabled){border-color:var(--tray-ink);background:#ffffff14}.error-toast{--focus: var(--ink);position:fixed;top:1rem;right:1rem;z-index:20;display:flex;align-items:flex-start;gap:.9rem;max-width:420px;padding:.85rem 1rem;border:1px solid var(--rule);border-left:6px solid var(--void);border-radius:8px;background:var(--stock);color:var(--ink);box-shadow:var(--lift)}.staff-gate{display:grid;place-items:center;min-height:100vh}.staff-gate .gate-input,.staff-gate .gate-input:focus-visible{width:12rem;margin:0;border-color:transparent;background:transparent;box-shadow:none;outline:none;color:var(--mat-ink);caret-color:var(--marker);font-family:var(--font-mono);font-size:1.6rem;letter-spacing:.3em;text-align:center}.staff-gate .gate-input.rejected{border-color:var(--band-void);box-shadow:0 0 0 2px var(--band-void)}.login-page{display:grid;place-items:center;min-height:100vh;padding:2rem 0}.login-card{width:min(100%,440px)}.login-form{display:grid;gap:1rem}.login-form .btn{margin-top:.25rem}.verification-page{display:grid;place-items:center;min-height:100vh;padding:2rem 0 3rem}.verification-card{width:min(100%,640px);padding:0;overflow:hidden}.verification-header{padding:1.5rem 1.5rem 1.1rem;text-align:center}.verification-header h1{margin:0;color:var(--ink-muted);font-size:.95rem;font-weight:700;font-stretch:75%;letter-spacing:.16em}.verification-logo{display:block;width:auto;height:auto;max-width:min(100%,240px);max-height:110px;margin:0 auto 1.1rem;object-fit:contain}.status-banner{margin:0;padding:1.1rem 1.5rem;border-top:3px solid var(--rule-strong);border-bottom:3px solid var(--rule-strong);background:var(--liner);color:var(--ink);font-family:var(--font-display);font-stretch:62%;font-size:clamp(2.4rem,1.6rem + 4vw,3.8rem);font-weight:800;line-height:.95;text-transform:uppercase}.status-banner.valid{background:var(--band-pass);color:#fff}.status-banner.pending{background:var(--marker);color:#121614}.status-banner.expired,.status-banner.revoked,.status-banner.superseded{background:var(--band-void);color:#fff}.status-banner.checking,.status-banner.unavailable{font-size:clamp(1.4rem,1.1rem + 1.6vw,2rem)}.verification-body{padding:1.1rem 1.5rem 1.5rem}.status-note{margin:0 0 1rem}.verification-body .btn{margin-top:1.25rem}@keyframes spin{to{transform:rotate(360deg)}}@keyframes feed{0%{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}@media(prefers-reduced-motion:reduce){.printable img{animation:none}.spinner{animation-duration:2.4s}.btn.primary:active:not(:disabled){transform:none}}@media(max-width:940px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.app-shell{padding:0 .75rem 9rem}.top-nav{position:static;margin:0 -.75rem 1rem;padding:.85rem .75rem .8rem}.session-role{flex-basis:100%}.card{padding:1rem}.card-head{margin:-1rem -1rem 1rem;padding:.9rem 1rem .8rem}.form-grid,.extra-field-row,.certificate-summary{grid-template-columns:1fr}.certificate-summary dt{padding-bottom:0;border-bottom:0}.preview-bar{padding:.7rem .75rem}.preview-bar .actions{width:100%}.preview-bar .btn{flex:1 1 auto}.error-toast{right:.75rem;left:.75rem;max-width:none}.verification-header,.status-banner,.verification-body{padding-right:1rem;padding-left:1rem}}
