/* ==========================================================================
   SafeNaijaIT design system — v6
   Mobile-first consumer & Pro journeys, web-first Business / Brand / Admin.
   Larger, high-contrast type; 48px+ touch targets; no overlapping controls.
   ========================================================================== */

@font-face{font-family:"Plus Jakarta Sans";src:url("/fonts/plus-jakarta-sans.woff2") format("woff2");font-weight:200 800;font-style:normal;font-display:swap}

:root{
  --font:"Plus Jakarta Sans",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;

  /* Colour */
  --bg:#f4f7f5;
  --bg-2:#eaf1ed;
  --surface:#ffffff;
  --surface-2:#f8faf9;
  --ink:#0c201a;
  --ink-2:#2e453d;
  --muted:#506660;
  --faint:#73867f;
  --line:#e1e9e4;
  --line-2:#cfdcd5;
  --brand:#0a6b50;
  --brand-2:#08573f;
  --brand-deep:#05352a;
  --brand-soft:#e6f3ec;
  --brand-tint:#f1f8f4;
  --accent:#c9f26e;
  --accent-ink:#173a12;
  --green:#0a6b50;
  --danger:#b42318;
  --danger-soft:#fdecea;
  --warn:#8a5a00;
  --warn-soft:#fff4d8;
  --info:#1d4f91;
  --info-soft:#e8f0fc;

  /* Shape & depth */
  --r-sm:10px;
  --r:14px;
  --r-lg:20px;
  --r-xl:28px;
  --shadow-sm:0 1px 2px rgba(12,32,26,.05);
  --shadow:0 1px 2px rgba(12,32,26,.04),0 8px 24px -6px rgba(12,32,26,.08);
  --shadow-lg:0 2px 6px rgba(12,32,26,.05),0 24px 48px -16px rgba(12,32,26,.18);
  --ring:0 0 0 4px rgba(10,107,80,.16);
  --ease:cubic-bezier(.22,1,.36,1);

  /* Type scale (generous for readability) */
  --fs-xs:13.5px;
  --fs-sm:15px;
  --fs:17px;
  --fs-lg:19px;

  --header-h:72px;
  --nav-h:76px;

  font-family:var(--font);
  font-size:16px;
  color:var(--ink);
  background:var(--bg);
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}

*,*:before,*:after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px)}
body{margin:0;font-size:var(--fs);line-height:1.6;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:hidden}
[hidden]{display:none!important}
img,video,svg{max-width:100%}
h1,h2,h3,h4{color:var(--ink);font-weight:750;letter-spacing:-.02em;line-height:1.2;overflow-wrap:anywhere}
h1{font-size:clamp(30px,3.4vw,44px);letter-spacing:-.035em;margin:8px 0 10px;line-height:1.1}
h2{font-size:clamp(22px,2vw,26px);margin:6px 0 10px}
h3{font-size:19px;margin:16px 0 8px}
p{color:var(--muted);line-height:1.65;margin:10px 0}
a{color:var(--brand);text-underline-offset:3px;text-decoration-thickness:1.5px}
a:hover{color:var(--brand-2)}
strong,b{color:inherit;font-weight:700}
small{font-size:var(--fs-xs);font-weight:500;color:var(--faint);line-height:1.5}
code{font-family:var(--mono);font-size:.88em;background:var(--bg-2);color:var(--brand-deep);padding:2px 7px;border-radius:7px;overflow-wrap:anywhere}
hr{border:0;border-top:1px solid var(--line);margin:24px 0}
::selection{background:#c9f26e88}

button,input,select,textarea{font:inherit;color:inherit}
button,a,input,select,summary,label{-webkit-tap-highlight-color:transparent}
button,a,summary{touch-action:manipulation}
button{cursor:pointer;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,transform .18s var(--ease)}
button:active:not(:disabled){transform:scale(.975)}
button:disabled{opacity:.55;cursor:wait}
:focus-visible{outline:3px solid #6fbf93;outline-offset:3px}

.ico{width:22px;height:22px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* ---------- Typography helpers ---------- */
.aside-label,.eyebrow{display:inline-block;font-size:12.5px;font-weight:750;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);line-height:1.4}
.page-head{display:flex;justify-content:space-between;gap:16px 24px;align-items:flex-end;flex-wrap:wrap;margin-bottom:28px}
.page-head>div{min-width:0;flex:1 1 320px}
.page-head p{margin:0;font-size:var(--fs-lg);max-width:62ch}
.pill,.tag{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:650;border:1px solid var(--line-2);background:var(--surface);border-radius:999px;padding:7px 14px;color:var(--ink-2);white-space:nowrap}
.tag{padding:5px 11px;font-size:12.5px;background:var(--brand-tint);border-color:#d3e7dc;color:var(--brand-2)}
.plan-badge{display:inline-flex;align-items:center;background:var(--brand-deep);color:var(--accent);border-radius:999px;padding:10px 18px;font-weight:750;font-size:var(--fs-sm);white-space:nowrap;letter-spacing:.01em}
.warning-note{font-size:var(--fs-sm);color:#7a4a00;background:var(--warn-soft);border:1px solid #f1dfae;border-radius:var(--r-sm);padding:12px 14px;line-height:1.55}
.sn-empty,.sn-muted{color:var(--muted);font-size:var(--fs-sm)}
.sn-success{background:var(--brand-soft);color:var(--brand-2);padding:14px 16px;border-radius:var(--r);font-weight:600;font-size:var(--fs-sm)}

/* ---------- Buttons ---------- */
.primary,.light,.ghost,.danger-button,.delete-check,.sn-button,.upgrade-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:12px 22px;border-radius:var(--r);font-weight:700;font-size:16px;line-height:1.25;text-align:center;text-decoration:none;border:1px solid transparent;white-space:normal}
.primary{background:var(--brand);color:#fff;box-shadow:0 1px 0 rgba(255,255,255,.15) inset,0 6px 16px -6px rgba(10,107,80,.55)}
.primary:hover{background:var(--brand-2);color:#fff}
.light{background:var(--surface);color:var(--brand-2);border-color:var(--line-2);box-shadow:var(--shadow-sm)}
.light:hover{background:var(--brand-tint);border-color:#b9d4c6}
.ghost{background:var(--surface);color:var(--ink-2);border-color:var(--line-2)}
.ghost:hover{background:var(--brand-tint)}
.small{min-height:42px;padding:8px 16px;font-size:var(--fs-sm);border-radius:999px}
.danger-button,.delete-check{background:#fff;color:var(--danger);border-color:#f1c4bf}
.danger-button:hover,.delete-check:hover{background:var(--danger-soft);border-color:#e8a59e}
.sn-button{background:var(--brand);color:#fff}
.sn-button:hover{background:var(--brand-2);color:#fff}
.text-button{border:0;background:none;color:var(--brand);font-weight:700;font-size:var(--fs-sm);padding:10px 4px;min-height:44px;text-decoration:underline;text-decoration-color:#a7cdb9;text-underline-offset:4px}
.text-button:hover{color:var(--brand-2);text-decoration-color:currentColor}
.upgrade-btn{background:var(--accent);color:var(--accent-ink);font-weight:800}

/* ---------- Form controls ---------- */
input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),select,textarea{width:100%;min-width:0;min-height:52px;border:1.5px solid var(--line-2);border-radius:var(--r);background:var(--surface);padding:12px 15px;color:var(--ink);font-size:var(--fs);line-height:1.4;transition:border-color .2s,box-shadow .2s,background-color .2s;-webkit-appearance:none;appearance:none}
textarea{min-height:auto;resize:vertical;line-height:1.55}
select{padding-right:44px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%230a6b50' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;background-size:14px}
input::placeholder,textarea::placeholder{color:#8a9a94;font-weight:400}
input:hover,select:hover,textarea:hover{border-color:#b6cbc0}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}
input[type=date]{min-height:52px}
input[type=file]{width:100%;font-size:var(--fs-sm);color:var(--muted);padding:10px;border:1.5px dashed var(--line-2);border-radius:var(--r);background:var(--surface-2)}
input[type=file]::file-selector-button{font:inherit;font-weight:700;font-size:var(--fs-sm);margin-right:12px;padding:9px 16px;border-radius:999px;border:0;background:var(--brand-soft);color:var(--brand-2);cursor:pointer}
input[type=checkbox],input[type=radio]{accent-color:var(--brand);width:22px;height:22px}

/* Password reveal */
.password-field{position:relative;display:block;width:100%}
.password-field input{width:100%;padding-right:84px!important}
.password-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;padding:8px 12px;min-height:40px;min-width:60px;color:var(--brand);font-weight:700;font-size:var(--fs-sm);border-radius:10px}
.password-toggle:hover,.password-toggle:focus-visible{background:var(--brand-soft)}
.password-toggle:active:not(:disabled){transform:translateY(-50%) scale(.96)}

/* Consent checkboxes (always visible, aligned with their text) */
.consent-row,.pro-terms{display:flex!important;flex-direction:row!important;align-items:flex-start!important;justify-content:flex-start!important;gap:12px!important;width:100%;min-height:44px;cursor:pointer;line-height:1.45;text-align:left;font-weight:500!important;color:var(--ink-2)}
.consent-row input[type=checkbox],.pro-terms input[type=checkbox]{-webkit-appearance:checkbox!important;appearance:checkbox!important;display:block!important;visibility:visible!important;opacity:1!important;position:static!important;inset:auto!important;transform:none!important;flex:0 0 24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;max-width:24px!important;margin:0!important;padding:0!important;accent-color:var(--brand);cursor:pointer}
.consent-row span,.pro-terms span{display:block!important;flex:1 1 auto;margin:0!important;padding:0!important;font-size:var(--fs-sm)}

/* ==========================================================================
   Consumer app shell
   ========================================================================== */
.app-body>header{position:sticky;top:0;z-index:20;height:var(--header-h);padding:0 max(20px,3vw);display:flex;align-items:center;gap:18px;background:rgba(255,255,255,.82);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border-bottom:1px solid rgba(207,220,213,.7)}
.brand{display:flex;align-items:center;font-size:23px;font-weight:800;letter-spacing:-.04em;text-decoration:none;color:var(--ink)}
.brand>span:last-child{color:var(--brand)}
.logo{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(150deg,#0d8a66,#05352a);color:var(--accent);margin-right:10px;box-shadow:0 6px 14px -6px rgba(5,53,42,.7)}
.logo .ico{width:22px;height:22px;stroke-width:2.2}
.country{margin-left:auto;display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-sm);font-weight:600;color:var(--muted);padding:8px 14px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line)}
#install{white-space:nowrap}

.shell{display:grid;grid-template-columns:272px minmax(0,1fr);max-width:1560px;margin:0 auto}
aside{position:sticky;top:var(--header-h);align-self:start;height:calc(100vh - var(--header-h));overflow-y:auto;padding:28px 20px;border-right:1px solid var(--line);background:linear-gradient(180deg,#fff,#fbfdfc);display:flex;flex-direction:column}
aside>.aside-label{color:var(--faint);padding:0 12px}
aside nav{display:grid;gap:4px;margin-top:14px}
aside nav button{display:flex;align-items:center;gap:14px;width:100%;min-height:52px;border:0;background:transparent;padding:12px 14px;text-align:left;border-radius:var(--r);color:var(--ink-2);font-size:16px;font-weight:600}
aside nav button:hover{background:var(--brand-tint);color:var(--brand-2)}
aside nav button .ico{color:var(--faint)}
aside nav button.active{background:var(--brand-soft);color:var(--brand-2);font-weight:750}
aside nav button.active .ico{color:var(--brand)}
.portal-links{display:grid;gap:8px;margin:28px 0 20px}
.portal-links .aside-label{color:var(--faint);padding:0 12px;margin-bottom:4px}
.portal-links a{display:flex;align-items:center;gap:12px;min-height:50px;padding:10px 14px;border:1px solid var(--line);border-radius:var(--r);text-decoration:none;color:var(--ink-2);font-size:var(--fs-sm);font-weight:650;background:var(--surface);transition:border-color .2s,background-color .2s}
.portal-links a:hover{border-color:#b9d4c6;background:var(--brand-tint);color:var(--brand-2)}
.portal-links a .ico{width:20px;height:20px;color:var(--brand)}
.side-note{margin-top:auto;position:relative;overflow:hidden;background:radial-gradient(120% 80% at 100% 0%,#0f7a5c 0%,transparent 60%),var(--brand-deep);color:#fff;padding:24px 20px;border-radius:var(--r-lg)}
.side-note h3{color:#fff;font-size:20px;line-height:1.3;margin:10px 0 8px}
.side-note p{font-size:var(--fs-sm);line-height:1.6;color:#c4ddd2;margin:0 0 12px}
.side-note .aside-label{color:var(--accent);letter-spacing:.14em;font-size:12px}
.shield{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:rgba(201,242,110,.14);color:var(--accent);font-size:22px;font-weight:800}

.app-body main{padding:40px clamp(20px,3.4vw,56px) 48px;min-width:0}
.view{animation:panel-in .3s var(--ease)}
@keyframes panel-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

footer{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;color:var(--ink-2);font-size:var(--fs-sm);font-weight:700;margin-top:48px;padding:22px 0 8px;border-top:1px solid var(--line)}
footer span{color:var(--muted);font-weight:500}
footer a{margin-left:auto;color:var(--brand);font-weight:650}

/* ---------- Check journey ---------- */
#check .work-grid{display:block;max-width:820px;margin:0 auto}
#check[data-step="capture"] #productForm,#check[data-step="capture"] .right-column,#check[data-step="review"] #captureStep,#check[data-step="review"] .right-column,#check[data-step="result"] #captureStep,#check[data-step="result"] #productForm{display:none}
#captureStep,#productForm,.right-column{animation:panel-in .3s var(--ease) both}
#check .page-head{max-width:820px;margin-left:auto;margin-right:auto}

.journey-tabs{display:flex;gap:6px;padding:6px;max-width:820px;margin:0 auto 22px;background:var(--bg-2);border:1px solid var(--line);border-radius:18px}
.journey-tabs button{flex:1;display:flex;align-items:center;justify-content:center;gap:10px;min-height:50px;border:0;background:transparent;border-radius:13px;padding:10px 8px;color:var(--muted);font-size:16px;font-weight:700}
.journey-tabs button>span{width:28px;height:28px;flex:0 0 28px;border-radius:50%;display:grid;place-items:center;background:#d5e3db;color:var(--ink-2);font-size:14px;font-weight:800}
.journey-tabs button:hover{color:var(--brand-2)}
.journey-tabs button.active{background:var(--surface);color:var(--brand-2);box-shadow:var(--shadow)}
.journey-tabs button.active>span{background:var(--brand);color:#fff}

.capture-card,.details-card,.result-card,.verify-card,.history-card,.auth-card,.portal-panel,.feature-card,.dash-card,.business-hero,.metric-grid>div,.pricing-strip>div,.price-card,.admin-kpis>div{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow)}
.capture-card{overflow:hidden}
.card-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:16px 22px;border-bottom:1px solid var(--line);font-size:13px;letter-spacing:.1em;text-transform:uppercase;font-weight:750;color:var(--ink-2)}
.card-top .text-button{text-transform:none;letter-spacing:0}

.capture-area{position:relative;text-align:center;padding:40px 28px 32px;background:radial-gradient(90% 70% at 50% 0%,#e3f4ea 0%,rgba(255,255,255,0) 70%),var(--surface)}
.scan-symbol{position:relative;margin:0 auto;width:92px;height:92px;display:grid;place-items:center;border-radius:28px;color:var(--brand);background:var(--surface);border:1px solid #cfe5d9;box-shadow:0 14px 32px -14px rgba(10,107,80,.45)}
.scan-symbol .ico{width:44px;height:44px;stroke-width:1.6}
.scan-symbol:after{content:"";position:absolute;left:22px;right:22px;top:50%;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,#22c38e,transparent);animation:scan-line 2.4s var(--ease) infinite}
@keyframes scan-line{0%,100%{transform:translateY(-16px);opacity:.2}50%{transform:translateY(16px);opacity:1}}
.capture-area h2{font-size:clamp(25px,3vw,30px);margin:22px 0 6px;letter-spacing:-.03em}
.capture-area p{font-size:var(--fs);margin:6px auto 24px;max-width:42ch}
.capture-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:12px}
.capture-actions button{flex:1 1 200px;max-width:280px;min-height:56px;font-size:17px}
.capture-area .text-button{display:inline-block;margin:14px auto 0}
.status{font-size:var(--fs-sm)!important;color:var(--muted);margin:14px auto 0!important;line-height:1.5}
#photoPreview,video{display:block;width:100%;max-height:340px;object-fit:contain;border-radius:var(--r);margin:22px auto 0;background:#0c201a}
#photoPreview{background:var(--surface-2)}
#captureLabel,#stopScan{margin-top:12px;width:100%}
.journey-next{display:flex;width:100%;margin-top:16px;min-height:58px;font-size:17px;border-radius:var(--r-lg)}

#ocrPanel{padding:20px 22px!important;margin-top:16px}
#ocrPanel p{font-size:var(--fs-sm)!important}
#ocrText{width:100%;min-height:150px;font-size:var(--fs-sm)!important;margin:6px 0 12px}
.label-transcript>summary{padding:0!important;font-size:16px!important}
.label-transcript>h3{display:none}
.scan-details{font-size:var(--fs-sm);margin-top:14px;max-height:260px;overflow:auto;overscroll-behavior:contain;padding-right:6px}
.scan-details p{margin:6px 0}
.scan-details strong{color:var(--brand-deep)}
.scan-suggestions{margin:12px 0;display:grid;gap:8px}
.scan-suggestions button{white-space:normal;text-align:left;width:100%;justify-content:flex-start}

.details-card{margin-top:20px;overflow:hidden}
#productForm{margin-top:0;overflow:visible}
#productForm>.card-top{border-radius:var(--r-lg) var(--r-lg) 0 0}
.category-select{display:flex;align-items:center;gap:16px;padding:20px 22px 4px;margin-bottom:4px;font-size:var(--fs-sm);font-weight:700;color:var(--ink-2)}
.category-select select{flex:1;background-color:var(--brand-tint);border-color:#cfe3d8;font-weight:650}
.category-tabs{display:flex;flex-wrap:wrap;gap:8px;padding:20px 22px 4px}
.category-tabs button{flex:1 1 110px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);padding:10px 8px;min-height:46px;border-radius:12px;font-size:var(--fs-sm)}
.category-tabs button.selected{background:var(--brand-soft);border-color:#86bfa2;color:var(--brand-2);font-weight:750}

.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 18px;padding:20px 22px}
.form-grid label,.observations label,.barcode-field{display:grid;gap:8px;align-content:start;font-size:var(--fs-sm);font-weight:700;color:var(--ink-2)}
.form-grid label small,.barcode-field>small{font-weight:500}
.full{grid-column:1/-1}
.barcode-field>label{display:block}
.barcode-actions{display:flex;gap:10px;flex-wrap:wrap}
.barcode-actions button{flex:1 1 160px;min-height:50px;font-size:var(--fs-sm)}
#barcode[readonly]{cursor:pointer;background:var(--brand-tint)}
#barcodeStatus:empty{display:none}
.review-scanner{padding:14px;background:var(--brand-tint);border:1px solid #cfe1d4;border-radius:var(--r);text-align:center}
.review-scanner p{font-size:var(--fs-sm);margin:0}
.review-scanner video{max-height:280px;margin:10px 0}
.review-scanner #stopScan{width:100%;margin:0}
.review-scanner #stopScan:before{content:"✕ "}

.field-group{border-top:1px solid var(--line)}
.field-group>summary,.source-findings>summary,.source-guide>summary,.label-transcript>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px;font-size:16px;font-weight:700;color:var(--ink);min-height:62px}
.field-group>summary::-webkit-details-marker,.source-findings>summary::-webkit-details-marker,.source-guide>summary::-webkit-details-marker,.label-transcript>summary::-webkit-details-marker,.source-item summary::-webkit-details-marker,.local-evidence>summary::-webkit-details-marker{display:none}
.field-group>summary:after,.source-findings>summary:after,.source-guide>summary:after,.label-transcript>summary:after{content:"";flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:var(--brand-soft) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%230a6b50' stroke-width='2.8' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/14px no-repeat;transition:transform .25s var(--ease)}
.field-group[open]>summary:after,.source-findings[open]>summary:after,.source-guide[open]>summary:after,.label-transcript[open]>summary:after{transform:rotate(45deg)}
.field-group>summary:hover{background:var(--surface-2)}
.group-count{margin-left:auto;color:var(--muted);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}
.field-group[open]{background:var(--surface-2)}
.field-group .form-grid{padding-top:4px}
.field-group[open] .form-grid{animation:panel-in .22s var(--ease)}
.observations{padding:4px 22px 22px;display:grid;gap:16px}
.observations h3{font-size:17px;margin:0}
.observations label{grid-template-columns:1fr 1.2fr;align-items:center;font-weight:600}

.review-actions{position:sticky;bottom:0;z-index:4;display:flex;gap:12px;padding:16px 22px;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--line);border-radius:0 0 var(--r-lg) var(--r-lg)}
.review-actions .submit{flex:1;margin:0;width:auto;min-height:54px;font-size:17px}
.review-actions .light{min-width:96px;min-height:54px}
.submit{width:100%}
.form-foot{font-size:var(--fs-xs);color:var(--muted);padding:4px 22px 18px;margin:0}

/* ---------- Result ---------- */
.right-column{display:block}
.result-card{position:relative;padding:28px;border-top:5px solid var(--brand);scroll-margin-top:calc(var(--header-h) + 16px)}
.empty-result{text-align:center;padding:30px 0 20px}
.empty-ring,.score-ring{height:124px;width:124px;border:10px solid var(--brand-soft);border-radius:50%;display:grid;place-content:center;margin:0 auto 22px;font-size:44px;color:#7da793;font-weight:800}
.empty-result h2{font-size:24px}
.empty-result p{font-size:var(--fs)}
.result-name{font-size:clamp(24px,3vw,30px);line-height:1.2;overflow-wrap:anywhere;margin:14px 0 6px}
.result-category{font-size:var(--fs-sm);font-weight:600;color:var(--muted)}
.verdict{padding:16px 18px;border-radius:var(--r);background:var(--warn-soft);color:#6b4500;font-weight:750;font-size:var(--fs);line-height:1.45;margin:16px 0}
.verdict.danger{background:var(--danger-soft);color:#8f1d14}
.verdict.match-green-1{background:#e8f5ec;color:#17643f;border:1px solid #cce7d5}
.verdict.match-green-2{background:#ccebd6;color:#0e5934;border:1px solid #a9d8b8}
.verdict.match-green-3{background:#86c99b;color:#073f25;border:1px solid #69b681}
.verdict.match-green-4{background:#126b3a;color:#fff;border:1px solid #0b572f;box-shadow:0 8px 20px -8px rgba(18,107,58,.5)}
.score-ring{color:var(--brand-2);border-color:#bfe0cd;font-size:38px;margin-top:22px}
.score-ring small{font-size:var(--fs-xs);color:var(--muted)}
.coverage{text-align:center;font-size:var(--fs-sm);margin-top:-8px}
.evidence-row{display:flex;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid var(--line);font-size:var(--fs-sm)}
.evidence-row span:last-child{font-size:var(--fs-xs);color:var(--muted);text-align:right}
.next-step{background:var(--brand-tint);border:1px solid #d6e9de;padding:16px 18px;border-radius:var(--r);font-size:var(--fs-sm);margin-top:16px}
.next-step p{margin:6px 0;line-height:1.55;font-size:var(--fs-sm)}
.result-card .light,.result-card .primary{width:100%;margin:8px 0}
.result-card>.warning-note{margin:12px 0}
.result-bottom{padding-top:16px;margin-top:16px;border-top:1px solid var(--line);font-size:var(--fs-xs);color:var(--muted);line-height:1.7}
.pack-state{font-size:var(--fs-sm);border:1px solid #ecdcae;background:var(--warn-soft);padding:14px 16px;border-radius:var(--r);color:#6b4a14;margin:12px 0}
.loading-check{text-align:center;padding:40px 10px}
.loading-check p{font-size:var(--fs)}
.loader{height:48px;width:48px;border:4px solid var(--brand-soft);border-top-color:var(--brand);border-radius:50%;margin:10px auto 24px;animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

.source-coverage{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:16px 18px;background:var(--brand-tint);border:1px solid #d6e9de;border-radius:var(--r);margin:16px 0;font-size:var(--fs-sm)}
.source-coverage>strong{font-size:28px;color:var(--brand-2);margin:0;letter-spacing:-.02em}
.source-coverage>span{width:100%;margin:0;font-size:var(--fs-xs);color:var(--muted)}
.source-findings{border:1px solid var(--line);border-radius:var(--r);margin:16px 0;overflow:hidden}
.source-findings>summary{padding:16px 18px;min-height:56px}
.source-findings>.warning-note{margin:0 16px 14px}
.source-item{border:1px solid var(--line);border-radius:var(--r);margin:12px 0;overflow:hidden}
.source-findings .source-item{margin:0;border:0;border-top:1px solid var(--line);border-radius:0}
.source-item summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;min-height:56px;font-size:var(--fs-sm);font-weight:700}
.source-item summary small{display:block;font-weight:500;font-size:var(--fs-xs);color:var(--muted);margin-top:4px}
.source-status{flex-shrink:0;font-size:var(--fs-xs);font-weight:650;color:#7a5300;background:var(--warn-soft);padding:6px 10px;border-radius:999px;max-width:150px;text-align:center;line-height:1.3}
.source-status.matched{color:var(--brand-2);background:var(--brand-soft)}
.source-body{padding:4px 18px 16px;border-top:1px solid var(--line)}
.source-body>p{font-size:var(--fs-sm)}
.source-time{font-size:var(--fs-xs)!important;color:var(--faint)}
.source-record{padding:14px 16px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;margin-top:12px;font-size:var(--fs-sm);overflow-wrap:anywhere}
.source-record p{font-size:var(--fs-sm)}
.record-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:var(--fs-xs)}
.record-detail span:first-child{color:var(--muted);font-weight:600}
.source-record a{display:inline-block;font-size:var(--fs-sm);font-weight:650;margin-top:12px}
.batch-note{background:var(--warn-soft);padding:12px;border-radius:10px;color:#7a4a12}
.source-error{padding:18px;border-radius:var(--r);background:#fff1e3;font-size:var(--fs-sm)}
.source-error p{margin:8px 0 0}
.local-evidence{margin:16px 0}
.local-evidence>summary{font-size:var(--fs-sm);font-weight:700;cursor:pointer;min-height:48px;display:flex;align-items:center;padding:8px 0}
.alerts{padding-left:20px;font-size:var(--fs-sm);line-height:1.6;color:#8f2d22}
.alerts small{display:block}
.evidence-layers{display:grid;gap:10px;margin:16px 0}
.evidence-layer{padding:14px 16px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-2);display:grid;grid-template-columns:1fr auto;gap:8px;font-size:var(--fs-sm)}
.evidence-layer p,.evidence-layer a{grid-column:1/-1;margin:0;font-size:var(--fs-sm)}

.source-guide{margin-top:18px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);overflow:hidden;box-shadow:var(--shadow-sm)}
.verify-card{padding:24px;background:var(--brand-tint);box-shadow:none}
.source-guide .verify-card{border:0;margin:0;border-radius:0;padding:0 22px 22px;background:transparent}
.verify-card h3{font-size:19px;margin:14px 0 8px}
.verify-card p{font-size:var(--fs-sm)}
.verify-card p strong{color:var(--ink)}
.verify-card a{font-weight:700}

/* ---------- History ---------- */
#historyList{display:grid;gap:14px}
.history-card{padding:20px 22px;display:flex;gap:18px;align-items:center;margin:0;transition:box-shadow .2s,border-color .2s}
.history-card:hover{border-color:#c9dcd2;box-shadow:var(--shadow-lg)}
.history-card h3{margin:0;font-size:19px}
.history-card p{font-size:var(--fs-sm);margin:6px 0}
.history-copy{min-width:0;flex:1}
.history-actions{margin-left:auto;display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.history-actions button{margin-left:0}
.empty-history{background:var(--surface);border:1.5px dashed var(--line-2);border-radius:var(--r-lg);padding:56px 24px;text-align:center}
.cabinet-slot:empty{display:none}
.cabinet-add{white-space:nowrap}
.cabinet-added{display:inline-flex;align-items:center;gap:6px;color:var(--brand);font-weight:700;font-size:var(--fs-sm);white-space:nowrap}

/* ---------- Guide ---------- */
.guide-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:start}
.guide-grid .details-card{padding:28px;margin:0}
.guide-grid .details-card:nth-child(2){grid-row:span 2}
.guide-grid h2{font-size:24px}
.guide-grid p{font-size:16px}
table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
th,td{text-align:left;padding:13px 0;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:750}
th:last-child,td:last-child{text-align:right}

/* ---------- Pro ---------- */
.pro-included{margin-bottom:26px}
.pro-included .eyebrow{display:block;margin-bottom:14px}
#proGateWrap:has(#proGate[hidden]){display:none}
.feature-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.feature-grid.compact{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));margin-top:20px}
.feature-card,.dash-card,.business-hero,.metric-grid>div,.pricing-strip>div{padding:20px}
.feature-card{display:grid;grid-template-columns:48px 1fr;gap:4px 14px;align-content:start;box-shadow:var(--shadow-sm)}
.feature-card b{grid-row:span 2;display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:var(--brand-soft);font-size:22px;color:var(--brand);font-weight:800}
.feature-card h3{margin:2px 0 2px;font-size:17px}
.feature-card p{font-size:var(--fs-sm);margin:0;line-height:1.5}
.auth-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;max-width:980px}
.auth-card{padding:30px}
.auth-card h1{font-size:clamp(28px,3vw,36px)}
.auth-card h2{font-size:25px}
.auth-card>p{font-size:16px}
.auth-card form{display:grid;gap:16px;margin-top:18px}
.auth-card label{display:grid;gap:8px;font-size:var(--fs-sm);font-weight:700;color:var(--ink-2)}
.auth-card .consent{grid-template-columns:auto 1fr;align-items:start;font-weight:500}
.auth-card form>.primary,.auth-card form>.light{width:100%;min-height:54px}
.security-note{margin-top:18px;padding:14px 16px;background:var(--brand-tint);border:1px solid #d6e9de;border-radius:var(--r);font-size:var(--fs-sm);color:var(--ink-2);line-height:1.55}
.security-note:empty{display:none}
.account-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:18px;padding:22px 24px;border-radius:var(--r-lg);background:radial-gradient(100% 140% at 100% 0%,#0f7a5c 0%,transparent 55%),var(--brand-deep);color:#fff}
.account-bar h2{color:#fff;margin:4px 0 0}
.account-bar .eyebrow{color:var(--accent)}
.account-bar .light{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.25);color:#fff;box-shadow:none}
.account-bar .light:hover{background:rgba(255,255,255,.18)}
.sn-plan-state{margin:0 0 8px}
.hero-upgrade{background:radial-gradient(100% 140% at 100% 0%,#13916c 0%,transparent 55%),var(--brand-deep);color:#fff;border-radius:var(--r-xl);padding:34px;display:flex;justify-content:space-between;align-items:center;gap:30px;margin-bottom:22px}
.hero-upgrade h2{color:#fff;font-size:30px;margin:8px 0}
.hero-upgrade p{color:#cfe5db;max-width:650px}
.light-eye{color:var(--accent)}

/* ---------- Tabs (Pro, Business, Admin) ---------- */
.portal-tabs{display:flex;gap:8px;margin:16px 0 22px;flex-wrap:wrap}
.portal-tabs button{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:10px 18px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-size:var(--fs-sm);font-weight:700;white-space:nowrap}
.portal-tabs button:hover{border-color:#b6cbc0;background:var(--brand-tint);color:var(--brand-2)}
.portal-tabs button.active{background:var(--brand-deep);border-color:var(--brand-deep);color:#fff;box-shadow:0 6px 16px -8px rgba(5,53,42,.7)}

/* ---------- Mobile bottom navigation ---------- */
.mobile-nav{display:none}
#toast{position:fixed;bottom:32px;left:50%;transform:translateX(-50%);z-index:60;max-width:min(92vw,520px);width:max-content;background:var(--ink);color:#fff;padding:14px 22px;border-radius:var(--r);font-size:var(--fs-sm);font-weight:600;line-height:1.45;box-shadow:var(--shadow-lg);animation:toast-in .3s var(--ease)}
@keyframes toast-in{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}

/* ==========================================================================
   Pro, Business, Brand & Admin components
   ========================================================================== */
.business-hero{display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:center}
.business-hero h2{margin:5px 0}
.verified-seal,.big-check{display:grid;place-items:center;background:linear-gradient(150deg,#0d8a66,#05352a);color:#fff;border-radius:50%;font-weight:900}
.verified-seal{width:64px;height:64px;font-size:34px}
.big-check{width:76px;height:76px;font-size:42px;margin:18px auto 8px;box-shadow:0 14px 30px -14px rgba(5,53,42,.7)}
.big-check.muted{background:#c3d1ca;box-shadow:none}

.metric-grid,.admin-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0 22px}
.metric-grid>div,.admin-kpis>div{position:relative;overflow:hidden;display:grid;gap:4px;padding:20px 22px}
.metric-grid>div:before,.admin-kpis>div:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--brand),#22c38e)}
.metric-grid strong,.admin-kpis strong{display:block;font-size:32px;font-weight:800;letter-spacing:-.03em;color:var(--ink);line-height:1.15;font-variant-numeric:tabular-nums}
.metric-grid span,.admin-kpis span{font-size:var(--fs-sm);font-weight:600;color:var(--muted)}
.dashboard-grid,.api-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.dashboard-grid>*{min-width:0}
.signal-list{display:grid;grid-template-columns:1fr auto;gap:14px;border-top:1px solid var(--line);padding-top:16px;font-size:var(--fs-sm)}
.signal-list i{font-style:normal;font-weight:800;color:var(--brand)}
.verified-product{text-align:center;background:linear-gradient(180deg,#edf8f1,#fff)}
.verified-product h2{color:var(--brand);letter-spacing:.08em}
.verify-chain{font-size:var(--fs-sm);background:var(--brand-tint);border-radius:12px;padding:14px;margin:16px 0;line-height:1.8}
.pricing-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:18px}
.pricing-strip>div{display:grid;gap:6px}
.pricing-strip span{font-size:var(--fs-sm);color:var(--muted)}
.code-card{background:#0d221c;color:#dcebe5;border-radius:var(--r-lg);overflow:hidden}
.code-card.response{background:#0b3329}
.code-top{display:flex;gap:10px;align-items:center;padding:13px 17px;border-bottom:1px solid #ffffff17}
.code-top span{background:var(--accent);color:var(--accent-ink);padding:4px 8px;border-radius:6px;font-size:12px;font-weight:800}
.code-card pre{white-space:pre-wrap;padding:18px;margin:0;font-size:14px;line-height:1.7;overflow:auto}
.prototype-note{background:var(--warn-soft);border:1px solid #ecdcae;border-radius:var(--r);padding:14px;font-size:var(--fs-sm);margin-top:18px}

.sn-chip,.status-chip{display:inline-flex;align-items:center;gap:4px;padding:5px 11px;border-radius:999px;font-size:13px;font-weight:750;text-transform:capitalize;white-space:nowrap;line-height:1.35;background:var(--brand-soft);color:var(--brand-2)}
.sn-chip.good{background:#e1f3e8;color:#05603e}
.sn-chip.info{background:var(--info-soft);color:var(--info)}
.sn-chip.warn,.status-chip.pending{background:var(--warn-soft);color:#7a5300}
.sn-chip.bad,.status-chip.suspended{background:var(--danger-soft);color:#8f1d14}
.sn-chip.muted{background:#eef1ef;color:#4d5e57}

.network-check{border:1px solid var(--line);border-radius:var(--r-lg);padding:18px;margin:14px 0;background:var(--surface-2)}
.network-check.v-VERIFIED{border-color:#8fd0ad;background:#f0faf4}
.network-check.v-RECALLED,.network-check.v-SUSPICIOUS,.network-check.v-DUPLICATE,.network-check.v-EXPIRED{border-color:#f0b8b0;background:#fff7f5}
.network-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.sn-chain{list-style:none;padding:0;margin:14px 0;display:grid;gap:10px}
.sn-chain li{display:grid;grid-template-columns:30px 1fr;gap:12px;align-items:start;font-size:var(--fs-sm)}
.sn-chain li b{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#eef1ef;color:#4d5e57;font-size:13px}
.sn-chain li span strong{display:block;font-size:var(--fs-sm);color:var(--ink)}
.sn-chain .chain-pass b{background:var(--brand);color:#fff}
.sn-chain .chain-fail b{background:var(--danger);color:#fff}
.sn-chain .chain-warn b,.sn-chain .chain-pending b{background:#d89a00;color:#fff}
.sn-risk{border-radius:var(--r);padding:14px 16px;margin:10px 0;background:var(--surface-2)}
.sn-risk strong{display:block;margin:4px 0}
.sn-risk ul{margin:6px 0;padding-left:20px;font-size:var(--fs-sm)}
.sn-risk.high{background:#ffefec}
.sn-risk.medium{background:#fff6df}
.sn-risk.low{background:#ecf7f0}
.sn-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.sn-report{margin-top:12px}
.sn-alert{border:1px solid var(--line);border-left:4px solid #9fb3a9;border-radius:var(--r);padding:14px 16px;margin:10px 0;background:var(--surface)}
.sn-alert>strong{display:block;margin-top:8px;font-size:16px}
.sn-alert p{margin:6px 0;font-size:var(--fs-sm)}
.sn-alert small{color:var(--muted)}
.sn-alert.critical{border-left-color:var(--danger)}
.sn-alert.warning{border-left-color:#d89a00}
.sn-alert.info{border-left-color:#1b6fc2}
.sn-alert.unread{background:var(--brand-tint)}
.sn-retailer{font-size:var(--fs-sm)}
.sn-timeline{padding-left:22px;font-size:var(--fs-sm);display:grid;gap:10px;color:var(--ink-2)}
.sn-code{background:#0d221c;color:#d8f3e6;border-radius:var(--r);padding:18px;overflow:auto;font-size:14px;line-height:1.6;white-space:pre}
.sn-code code{background:none;color:inherit;padding:0}
.sn-key{word-break:break-all;font-size:var(--fs-sm)}
.sn-upload{display:inline-block;cursor:pointer;color:var(--brand);font-weight:700;font-size:var(--fs-sm);text-decoration:underline}

.price-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:18px 0}
.price-card{padding:22px;display:flex;flex-direction:column;gap:6px;transition:transform .25s var(--ease),box-shadow .25s}
.price-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.price-card.current{border-color:var(--brand);box-shadow:0 0 0 3px rgba(10,107,80,.18),var(--shadow)}
.price-card h3{margin:0;font-size:18px}
.price-card>strong{font-size:28px;font-weight:800;letter-spacing:-.03em;color:var(--ink)}
.price-card>span{font-size:var(--fs-sm);color:var(--muted)}
.price-card ul{padding-left:20px;font-size:var(--fs-sm);margin:10px 0;flex:1;color:var(--ink-2);line-height:1.55}
.price-card li{margin:4px 0}
.price-card form{display:grid;gap:10px}
.price-card label{display:grid;gap:6px;font-size:var(--fs-sm);font-weight:700}
.pay-methods{border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin:16px 0}
.pay-methods legend{font-weight:800;padding:0 6px}
.pay-method-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-top:6px}
.pay-method{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);cursor:pointer;background:var(--surface)}
.pay-method:has(input:checked){border-color:var(--brand);box-shadow:0 0 0 2px rgba(10,107,80,.18)}
.pay-method input{margin-top:3px;accent-color:var(--brand)}
.pay-method span{display:grid;gap:2px}
.pay-method small{color:var(--muted);font-size:var(--fs-sm)}
.pay-method em{font-style:normal;font-size:12px;font-weight:700;color:var(--muted)}

.sn-bars{display:grid;gap:10px}
.sn-bar-row{display:grid;grid-template-columns:minmax(90px,30%) 1fr auto;gap:12px;align-items:center;font-size:var(--fs-sm)}
.sn-bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2)}
.sn-bar-track{position:relative;height:14px;background:var(--bg-2);border-radius:999px}
.sn-bar{position:absolute;left:0;top:0;height:14px;border-radius:999px;background:linear-gradient(90deg,#0a6b50,#22c38e)}
.sn-bar.alt{top:4px;height:6px;background:#c2410c}
.sn-bar-value{font-variant-numeric:tabular-nums;font-weight:750;color:var(--ink)}
.sn-bar-value small{font-weight:650;color:#c2410c}
.sn-columns{display:flex;align-items:flex-end;gap:3px;height:140px;border-bottom:1px solid var(--line);padding-top:6px}
.sn-columns span{position:relative;flex:1;height:100%;display:flex;align-items:flex-end}
.sn-columns i{display:block;width:100%;background:linear-gradient(180deg,#22c38e,#0a6b50);border-radius:4px 4px 0 0}
.sn-columns b{position:absolute;bottom:0;left:25%;width:50%;background:#c2410c;border-radius:2px 2px 0 0}
.sn-key-swatch{display:inline-block;width:11px;height:11px;border-radius:3px;background:#0b8a61;margin:0 5px 0 10px}
.sn-key-swatch.alt{background:#c2410c}
.sn-score{height:12px;border-radius:999px;background:var(--bg-2);overflow:hidden;margin:6px 0 14px}
.sn-score span{display:block;height:100%;background:linear-gradient(90deg,#0a6b50,#22c38e)}

.certificate{border:3px solid var(--brand);border-radius:var(--r-xl);padding:30px;text-align:center;max-width:480px;margin:10px auto 16px;background:radial-gradient(100% 60% at 50% 0%,#eaf6ef,#fff 70%)}
.certificate img{display:block;margin:12px auto}
.cert-mark{display:inline-block;background:var(--brand);color:#fff;font-weight:800;border-radius:999px;padding:10px 18px;margin:8px 0}
.cert-mark.off{background:#9aa9a2}
.certificate-page.is-verified{border:2px solid var(--brand)}
.verify-message{font-size:var(--fs-lg)}

/* ==========================================================================
   Portal shell (Business, Brand, Admin, Developers, Verify)
   ========================================================================== */
.portal-body{background:radial-gradient(1200px 500px at 100% -10%,#dff1e7 0%,transparent 60%),radial-gradient(900px 420px at -10% 0%,#eef6e3 0%,transparent 55%),var(--bg);background-attachment:fixed;min-height:100vh}
.portal-shell{max-width:1200px;margin:0 auto;padding:16px clamp(16px,3vw,36px) 80px}
.portal-app .portal-shell{max-width:1440px}
.portal-shell.narrow{max-width:760px}
.portal-top{position:sticky;top:12px;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:12px 20px;flex-wrap:wrap;margin-bottom:32px;padding:12px 14px 12px 20px;min-height:68px;background:rgba(255,255,255,.82);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border:1px solid rgba(207,220,213,.8);border-radius:var(--r-lg);box-shadow:var(--shadow)}
.portal-brand{display:inline-block;line-height:34px;white-space:nowrap;font-size:21px;font-weight:800;letter-spacing:-.035em;color:var(--ink);text-decoration:none}
.portal-brand:before{content:"";display:inline-block;vertical-align:middle;margin:-3px 10px 0 0;width:34px;height:34px;border-radius:11px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c9f26e' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3 5 6v5c0 4.4 3 8.3 7 9.5 4-1.2 7-5.1 7-9.5V6z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E") center/20px no-repeat,linear-gradient(150deg,#0d8a66,#05352a)}
.portal-brand span{color:var(--brand)}
.portal-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.portal-nav a,.portal-nav button{display:inline-flex;align-items:center;min-height:44px;border:1px solid transparent;background:transparent;color:var(--ink-2);padding:8px 16px;border-radius:999px;text-decoration:none;font-weight:700;font-size:var(--fs-sm);box-shadow:none}
.portal-nav a:hover,.portal-nav button:hover{background:var(--brand-tint);color:var(--brand-2)}
.portal-nav .light{border-color:var(--line-2);background:var(--surface)}
.portal-nav .sn-muted{font-size:var(--fs-sm);padding:0 6px}
.portal-login{max-width:520px;margin:48px auto}
.portal-login .auth-card{padding:clamp(24px,4vw,40px);box-shadow:var(--shadow-lg)}
.portal-login .auth-card img{border-radius:var(--r);border:1px solid var(--line);background:#fff;padding:8px}
.auth-split{max-width:1200px;display:grid;grid-template-columns:minmax(0,480px) minmax(0,1fr);gap:28px;align-items:start}
.auth-split .portal-panel{margin:0}
.auth-links{display:flex;flex-wrap:wrap;align-items:center;gap:4px 18px;margin:18px 0 0;padding-top:16px;border-top:1px solid var(--line);font-size:var(--fs-sm)}
.auth-links a{font-weight:700}
.auth-links .text-button{padding:8px 0}
.portal-panel{padding:clamp(20px,2.4vw,30px);margin-bottom:20px;min-width:0}
.portal-panel h2{margin-top:6px}
.portal-panel>p{font-size:16px}
.portal-panel>.light,.portal-panel>.primary{margin:6px 6px 6px 0}
.portal-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 18px;margin-top:14px}
.portal-form label{display:grid;gap:8px;align-content:start;font-size:var(--fs-sm);font-weight:700;color:var(--ink-2)}
.portal-form label small{font-weight:500}
.portal-form .full{grid-column:1/-1}
.portal-form>button{align-self:end}
.portal-form>p{margin:0}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);margin:12px 0}
.portal-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.portal-table th,.portal-table td{padding:14px 16px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.portal-table th{position:sticky;top:0;background:var(--surface-2);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:750;white-space:nowrap}
.portal-table th:last-child,.portal-table td:last-child{text-align:left}
.portal-table tbody tr{transition:background-color .15s}
.portal-table tbody tr:hover{background:var(--brand-tint)}
.portal-table tr:last-child td{border-bottom:0}
.portal-table .light,.portal-table .danger-button,.sn-actions .light,.sn-actions .primary,.sn-actions .danger-button{width:auto;margin:3px 4px 3px 0;min-height:42px;padding:8px 14px;font-size:var(--fs-sm);border-radius:12px}
.table-scroll>.portal-table{margin:0}

/* Web dashboard layout: sticky sidebar navigation for Business, Brand and Admin */
@media(min-width:1100px){
  #businessDashboard{display:grid;grid-template-columns:250px minmax(0,1fr);column-gap:32px;align-items:start}
  #businessDashboard>*{grid-column:2;min-width:0}
  #businessDashboard>#orgTabs{grid-column:1;grid-row:1/span 20}
  #adminApp{display:grid;grid-template-columns:250px minmax(0,1fr);column-gap:32px;align-items:start}
  #adminApp>*{grid-column:2;min-width:0}
  #adminApp>#adminNav{grid-column:1;grid-row:1/span 20}
  #orgTabs,#adminNav{position:sticky;top:104px;flex-direction:column;flex-wrap:nowrap;gap:4px;margin:0;padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);max-height:calc(100vh - 128px);overflow-y:auto}
  #orgTabs button,#adminNav button{justify-content:flex-start;width:100%;border:0;border-radius:12px;min-height:48px;padding:10px 14px;background:transparent;font-size:var(--fs-sm);white-space:normal;text-align:left;box-shadow:none}
  #orgTabs button:hover,#adminNav button:hover{background:var(--brand-tint)}
  #orgTabs button.active,#adminNav button.active{background:var(--brand-soft);color:var(--brand-2);box-shadow:inset 3px 0 0 var(--brand)}
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media(max-width:1180px){
  .shell{grid-template-columns:240px minmax(0,1fr)}
  .metric-grid,.admin-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .guide-grid{grid-template-columns:1fr}
  .guide-grid .details-card:nth-child(2){grid-row:auto}
  .auth-split{grid-template-columns:1fr;max-width:620px}
}

/* Tablet & phone: bottom navigation replaces the sidebar */
@media(max-width:1023px){
  :root{--header-h:64px}
  .app-body>header{padding:0 18px;padding-top:env(safe-area-inset-top);height:calc(var(--header-h) + env(safe-area-inset-top))}
  .country{display:none}
  #install{margin-left:auto}
  .shell{display:block}
  aside{display:none}
  .app-body main{padding:24px 20px calc(var(--nav-h) + 48px + env(safe-area-inset-bottom))}
  .mobile-nav{display:flex;position:fixed;z-index:30;left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));max-width:560px;margin:0 auto;gap:4px;padding:7px;background:rgba(255,255,255,.9);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border:1px solid rgba(207,220,213,.85);border-radius:24px;box-shadow:0 14px 34px -10px rgba(12,32,26,.28)}
  .mobile-nav button{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:60px;padding:6px 4px;border:0;border-radius:18px;background:transparent;color:var(--muted);font-weight:700}
  .mobile-nav button .ico{width:25px;height:25px}
  .mobile-nav button span{font-size:13px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .mobile-nav button.active{background:var(--brand-deep);color:#fff}
  .mobile-nav button.active .ico{color:var(--accent)}
  .review-actions{bottom:calc(var(--nav-h) + 18px + env(safe-area-inset-bottom));border-radius:0 0 var(--r-lg) var(--r-lg)}
  #toast{bottom:calc(var(--nav-h) + 26px + env(safe-area-inset-bottom))}
  .pill{display:none}
  .right-column{display:block}
}

@media(max-width:760px){
  body{font-size:var(--fs)}
  h1{font-size:30px;margin:6px 0 8px}
  h2{font-size:23px}
  .brand{font-size:21px}
  .logo{width:34px;height:34px;border-radius:11px}
  #install{min-height:40px;padding:6px 14px;font-size:14px}
  .app-body main{padding:20px 16px calc(var(--nav-h) + 44px + env(safe-area-inset-bottom))}
  .page-head{margin-bottom:20px;align-items:flex-start;gap:12px}
  .page-head>div{flex-basis:100%}
  .page-head p{font-size:16px}
  .plan-badge{font-size:14px;padding:8px 14px}
  .journey-tabs{margin-bottom:18px;border-radius:16px;padding:5px;gap:4px}
  .journey-tabs button{font-size:15px;gap:7px;padding:8px 4px;min-height:48px}
  .journey-tabs button>span{width:26px;height:26px;flex-basis:26px;font-size:13px}
  .card-top{padding:14px 18px;font-size:12.5px}
  .capture-area{padding:30px 18px 24px}
  .scan-symbol{width:80px;height:80px;border-radius:24px}
  .scan-symbol .ico{width:38px;height:38px}
  .capture-area h2{font-size:25px;margin-top:18px}
  .capture-area p{font-size:16px;margin-bottom:20px}
  .capture-actions{flex-direction:column;gap:10px}
  .capture-actions button{flex:none;width:100%;max-width:none;min-height:56px}
  #photoPreview,video{max-height:260px;margin-top:16px}
  .form-grid{grid-template-columns:1fr;padding:18px;gap:18px}
  .category-select{flex-direction:column;align-items:stretch;gap:8px;padding:18px 18px 0}
  .field-group>summary{padding:16px 18px;font-size:16px}
  .group-count{font-size:13px}
  .observations{padding:4px 18px 18px}
  .observations label{grid-template-columns:1fr;gap:8px}
  .review-actions{padding:12px 14px;gap:10px}
  .review-actions .light{min-width:84px}
  .form-foot{padding:4px 18px 16px}
  .result-card{padding:22px 18px;border-top-width:4px}
  .empty-ring{width:92px;height:92px;border-width:8px;font-size:34px;margin-bottom:16px}
  .empty-result{padding:20px 0 12px}
  .record-detail{grid-template-columns:1fr;gap:4px}
  .source-item summary{padding:14px 16px;align-items:flex-start}
  .source-status{max-width:120px}
  .history-card{flex-direction:column;align-items:stretch;padding:18px;gap:14px}
  .history-actions{width:100%;margin-left:0;display:grid;grid-template-columns:1fr auto;gap:10px}
  .history-actions .light{width:100%}
  .history-actions .cabinet-slot{grid-column:1/-1}
  .history-actions .cabinet-add{width:100%}
  .page-head #clearHistory{min-height:44px;padding:8px 16px;font-size:var(--fs-sm)}
  .empty-history{padding:36px 18px}
  .guide-grid .details-card{padding:22px 18px}
  .guide-grid p{font-size:16px}
  footer{flex-direction:column;align-items:flex-start;gap:6px;margin-top:32px}
  footer a{margin-left:0}

  .feature-grid,.feature-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .feature-card{display:block;padding:16px 14px}
  .feature-card b{width:42px;height:42px;font-size:20px;margin-bottom:10px}
  .feature-card h3{font-size:16px;line-height:1.3;margin-bottom:4px}
  .feature-card p{font-size:14px}
  .card-top .tag{display:none}
  .auth-layout{grid-template-columns:1fr}
  .auth-card{padding:22px 18px}
  .account-bar{padding:18px}
  .hero-upgrade{padding:24px;display:block}
  .hero-upgrade h2{font-size:25px}
  .upgrade-btn{width:100%}
  .business-hero{grid-template-columns:auto 1fr}
  .business-hero .primary{grid-column:1/-1}
  .dashboard-grid,.api-grid{grid-template-columns:1fr}
  .pricing-strip{grid-template-columns:1fr 1fr}
  .price-grid{grid-template-columns:1fr}
  .sn-bar-row{grid-template-columns:96px 1fr auto}

  /* Horizontally scrolling tab rail on phones */
  .portal-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin:12px -14px 20px;padding:2px 14px 6px;scroll-snap-type:x proximity}
  .portal-tabs::-webkit-scrollbar{display:none}
  .portal-tabs button{flex:0 0 auto;scroll-snap-align:start}

  .portal-shell{padding:10px 14px 60px}
  .portal-top{top:8px;margin-bottom:22px;padding:10px 12px 10px 14px;border-radius:18px}
  .portal-brand{font-size:19px}
  .portal-nav{margin-left:auto}
  .portal-nav a,.portal-nav button{padding:8px 12px}
  .portal-login{margin:20px auto}
  .portal-form{grid-template-columns:1fr}
  .portal-form>button{width:100%}
  .portal-table{min-width:640px}
  .metric-grid,.admin-kpis{gap:10px}
  .metric-grid>div,.admin-kpis>div{padding:16px 16px 16px 20px}
  .metric-grid strong,.admin-kpis strong{font-size:27px}
  .metric-grid span,.admin-kpis span{font-size:14px}
}

@media(max-width:380px){
  .mobile-nav button span{font-size:12px}
  .journey-tabs button{font-size:14px}
  .journey-tabs button>span{display:none}
}

@media(hover:none){.price-card:hover,.history-card:hover{transform:none;box-shadow:var(--shadow)}}

@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

@media print{
  header,aside,.mobile-nav,.portal-top,footer{display:none!important}
  body.print-certificate *{visibility:hidden}
  body.print-certificate #certificate,body.print-certificate #certificate *{visibility:visible}
  body.print-certificate #certificate{position:absolute;inset:0;margin:auto;border-width:4px}
}
.register-wide{max-width:820px}
.portal-login .portal-form>button.primary:last-child{grid-column:1/-1}
