/* Swiss COA Verify — deliberately plain, official-portal look.
   System fonts, tables, 1px rules, subtle gradients, square corners.
   Responsive: wide two-column portal on desktop, single column on mobile. */

:root{
  --page:#e4e2db; --panel:#ffffff; --panel-2:#f3f1ec;
  --ink:#211f1a; --muted:#5c584f; --faint:#8b857a;
  --border:#c6c1b6; --border-dk:#a9a398;
  --navy:#1d3b57; --navy-2:#153049; --on-navy:#eef2f6;
  --red:#c62029; --red-ink:#9a141c; --red-wash:#f7e9e9;
  --pass:#2f7a36; --link:#17508f;
  --warn:#8a5f12; --warn-wash:#f6edd8;
  --sans:Arial,"Helvetica Neue",Helvetica,sans-serif;
  --serif:Georgia,"Times New Roman",Times,serif;
  --mono:"Courier New",Courier,monospace;
  color-scheme:light;
}
/* Single light theme — this is a deliberately plain institutional portal. */

*{box-sizing:border-box}
html,body{min-height:100%}
body{margin:0;background:var(--page);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
img{max-width:100%}
[hidden]{display:none!important}
a{color:var(--link)}
h1,h2,h3,h4{margin:0}
.wrap{max-width:1160px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}

/* masthead */
.mast{background:var(--navy);background-image:linear-gradient(rgba(255,255,255,.06),rgba(0,0,0,.22));color:var(--on-navy);border-bottom:3px solid var(--red)}
.mast .wrap{display:flex;align-items:center;gap:14px;padding-top:14px;padding-bottom:14px}
.cross{width:36px;height:36px;flex:none;background:var(--red);position:relative;border:1px solid rgba(0,0,0,.35)}
.cross::before,.cross::after{content:"";position:absolute;background:#fff}
.cross::before{left:50%;top:8px;bottom:8px;width:7px;transform:translateX(-50%)}
.cross::after{top:50%;left:8px;right:8px;height:7px;transform:translateY(-50%)}
.mast .tt{font-weight:700;font-size:19px;letter-spacing:.02em;line-height:1.05}
.mast .ts{font-size:11.5px;color:rgba(238,242,246,.74);margin-top:3px}
.mast .util{margin-left:auto;text-align:right;font-size:11.5px;color:rgba(238,242,246,.8);line-height:1.7}
.mast .util a{color:var(--on-navy);text-decoration:none}
.mast .util a:hover{text-decoration:underline}
.mast .util .reg{font-family:var(--mono);font-size:10.5px;color:rgba(238,242,246,.6)}

/* nav */
.navbar{background:var(--panel-2);border-bottom:2px solid var(--navy)}
.navbar .wrap{display:flex;align-items:stretch;flex-wrap:wrap}
.nav-item{font-family:var(--sans);font-weight:700;font-size:13.5px;color:var(--muted);background:none;border:0;border-right:1px solid var(--border);padding:13px 18px;cursor:pointer}
.nav-item:first-child{border-left:1px solid var(--border)}
.nav-item:hover{color:var(--ink);background:var(--panel)}
.nav-item.active{background:var(--panel);color:var(--navy);box-shadow:inset 0 -3px 0 var(--red)}
.nav-status{margin-left:auto;align-self:center;font-family:var(--mono);font-size:11px;color:var(--muted);padding:6px 0}
.nav-status .ok{color:var(--pass);font-weight:700}

main{padding-top:24px;padding-bottom:34px}
.tab[hidden]{display:none}
.tab{display:flex;flex-direction:column;gap:20px}
.layout{display:grid;grid-template-columns:minmax(0,2.05fr) minmax(290px,1fr);gap:26px;align-items:start}
.col-main{display:flex;flex-direction:column;gap:18px;min-width:0}
.col-side{display:flex;flex-direction:column;gap:16px}

.page-h{font-family:var(--serif);font-weight:700;font-size:25px;line-height:1.1;margin-bottom:4px}
.page-sub{color:var(--muted);font-size:14px;max-width:60ch}

.panel{border:1px solid var(--border);background:var(--panel)}
.block-h{font-family:var(--serif);font-weight:700;font-size:15px;border-bottom:1px solid var(--border);background:var(--panel-2);padding:10px 14px;display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.block-h .rt{font-family:var(--mono);font-size:12px;color:var(--muted);font-weight:400}
.pbody{padding:14px}
.hint{font-size:12.5px;color:var(--muted)}

.flabel{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700;display:block;margin-bottom:5px}
input[type=text],input[type=number],select{width:100%;font-family:var(--mono);font-size:15px;color:var(--ink);background:var(--panel);border:1px solid;border-color:#948f84 var(--border) var(--border) #948f84;border-radius:1px;padding:10px 11px}
input:focus,select:focus{outline:2px solid var(--red);outline-offset:-1px}
input::placeholder{color:var(--faint);font-family:var(--sans)}
select{font-family:var(--sans);font-size:14px}

.btn{font-family:var(--sans);font-weight:700;font-size:14px;border:1px solid var(--border-dk);border-radius:2px;padding:11px 18px;cursor:pointer;color:var(--ink);background:var(--panel);background-image:linear-gradient(rgba(255,255,255,.5),rgba(0,0,0,.06));display:inline-flex;align-items:center;justify-content:center;gap:8px}
.btn-red{color:#fff;border-color:var(--red-ink);background:var(--red);background-image:linear-gradient(rgba(255,255,255,.18),rgba(0,0,0,.12));text-shadow:0 1px 0 rgba(0,0,0,.3)}
.btn svg{width:16px;height:16px;flex:none}
.focusable:focus-visible{outline:2px solid var(--red);outline-offset:2px}

fieldset{border:1px solid var(--border);margin:0;padding:16px}
legend{font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--navy);padding:0 8px}
.lookup-row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.lookup-row .f-lot{flex:1 1 240px}
.lookup-row .btn{flex:0 0 auto}

.samples{font-size:12.5px;color:var(--muted);border:1px dashed var(--border-dk);background:var(--panel-2);padding:12px 14px}
.samples .cap{font-weight:700;color:var(--ink);display:block;margin-bottom:7px;font-size:11px;letter-spacing:.05em;text-transform:uppercase}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{font-family:var(--mono);font-size:12.5px;color:var(--link);background:var(--panel);border:1px solid var(--border);padding:6px 10px;cursor:pointer;border-radius:1px}
.chip:hover{border-color:var(--link)}

.readout{display:flex;flex-direction:column;gap:6px;border:1px solid var(--border);background:var(--panel-2);padding:13px 14px}
.readout .rlab{font-size:11.5px;color:var(--muted)}
.readout .rnum{font-family:var(--mono);font-weight:700;font-size:26px;color:var(--ink);letter-spacing:.08em;font-variant-numeric:tabular-nums;background:var(--panel);border:1px solid var(--border-dk);padding:5px 10px;align-self:flex-start;box-shadow:inset 1px 1px 0 rgba(0,0,0,.06)}
.steps{list-style:none;margin:0;padding:0;counter-reset:s}
.steps li{counter-increment:s;position:relative;padding:8px 0 8px 32px;font-size:13px;border-bottom:1px solid var(--border)}
.steps li:last-child{border-bottom:0}
.steps li::before{content:counter(s);position:absolute;left:0;top:7px;width:21px;height:21px;background:var(--navy);color:var(--on-navy);font-family:var(--mono);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.kv{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;padding:5px 0;border-bottom:1px dotted var(--border)}
.kv:last-child{border-bottom:0}
.kv .kk{color:var(--muted)}
.kv .vv{font-family:var(--mono);color:var(--ink)}
.kv .vv.ok{color:var(--pass);font-weight:700}

/* loading */
#v-loading{align-items:center;justify-content:center;text-align:center;min-height:300px;gap:16px;display:flex;flex-direction:column}
.ring{width:70px;height:70px}
.ring circle{fill:none;stroke-width:5;stroke-linecap:round}
.ring .track{stroke:var(--border)}
.ring .run{stroke:var(--red);stroke-dasharray:201;stroke-dashoffset:64;transform-origin:center;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.lstatus{font-family:var(--mono);font-size:14px;min-height:1.2em}
.lsub{font-size:12px;color:var(--faint)}

/* janoshik redirect */
.jano{border:1px solid var(--navy);background:var(--panel);display:flex;flex-direction:column}
.jano .jhead{background:var(--navy);background-image:linear-gradient(rgba(255,255,255,.06),rgba(0,0,0,.18));color:var(--on-navy);padding:14px 16px;display:flex;align-items:center;gap:12px}
.jano .jhead .jlogo{font-family:var(--serif);font-weight:700;font-size:16px;border:1px solid rgba(255,255,255,.5);padding:4px 9px;letter-spacing:.03em}
.jano .jbody{padding:16px;display:flex;flex-direction:column;gap:12px}
.jano .jk{display:flex;gap:10px;font-size:13px;border-bottom:1px solid var(--border);padding-bottom:8px}
.jano .jk .kk{color:var(--muted);width:120px;flex:none}
.jano .jk .vv{font-family:var(--mono);color:var(--ink)}
.jano .note{font-size:12.5px;color:var(--muted)}
.jano .jactions{display:flex;gap:10px;flex-wrap:wrap}

/* authentic */
.verdict{display:flex;align-items:center;gap:16px;border:1px solid var(--pass);background:var(--panel);padding:15px 16px}
.seal{width:88px;height:88px;flex:none}
.seal .ringtxt{font-family:var(--mono);font-size:7.6px;letter-spacing:.22em;fill:var(--red);text-transform:uppercase}
.stamp-in{animation:stampIn .5s cubic-bezier(.2,1.1,.3,1) both}
.stamp-in .rot{animation:ringrot 28s linear infinite}
@keyframes stampIn{0%{opacity:0;transform:scale(1.5) rotate(-12deg)}60%{opacity:1}100%{opacity:1;transform:scale(1) rotate(0)}}
@keyframes ringrot{to{transform:rotate(360deg)}}
.check{stroke:var(--red);stroke-width:7;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:60;stroke-dashoffset:60}
.draw .check{animation:draw .5s .2s ease forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.verdict .vtext h2{font-family:var(--sans);font-weight:800;font-size:21px;letter-spacing:.04em;text-transform:uppercase;color:var(--pass)}
.verdict .vtext .res{font-size:13px;color:var(--muted);margin-top:3px}
.verdict .vtext .res b{color:var(--pass)}

.cert-cols{display:grid;grid-template-columns:1fr 1.25fr;gap:16px;align-items:start}
.meta .mrow{display:flex;gap:10px;padding:9px 14px;border-bottom:1px solid var(--border);font-size:13px}
.meta .mrow:last-child{border-bottom:0}
.meta .mk{color:var(--muted);width:42%;flex:none}
.meta .mv{font-family:var(--mono)}
.meta .mv.big{font-family:var(--serif);font-weight:700;font-size:15px}

table.coa{width:100%;border-collapse:collapse;font-size:13px}
table.coa caption{font-family:var(--serif);font-weight:700;font-size:14px;text-align:left;padding:10px 14px;background:var(--panel-2);border:1px solid var(--border);border-bottom:0}
table.coa th,table.coa td{border:1px solid var(--border);padding:8px 11px;text-align:left;vertical-align:top}
table.coa thead th{background:var(--navy);color:var(--on-navy);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase}
table.coa tbody th{font-weight:400;color:var(--ink);width:46%}
table.coa td.r{font-family:var(--mono);font-variant-numeric:tabular-nums}
table.coa td.m{font-family:var(--mono);color:var(--muted);font-size:11.5px;white-space:nowrap}
table.coa tr:nth-child(even) td,table.coa tr:nth-child(even) th{background:var(--panel-2)}
td.r .pass{color:var(--pass);font-weight:700}
.pbar{height:7px;border:1px solid var(--border-dk);background:var(--panel);margin-top:5px;overflow:hidden}
.pbar i{display:block;height:100%;width:0;background:var(--red);transition:width 1s cubic-bezier(.3,1,.4,1)}
.jano-link{font-size:12px;margin-top:6px}

.social{border:1px solid var(--border);background:var(--red-wash);padding:14px}
.social .cnt{display:flex;flex-direction:column;gap:2px;margin-bottom:11px}
.social .num{font-family:var(--mono);font-weight:700;font-size:28px;color:var(--red-ink);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.social .lab{font-size:12.5px}
#verify-btn{width:100%;font-size:13px}
.confirmed{display:none;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--pass)}
.confirmed svg{width:16px;height:16px}
.app.vdone #verify-btn{display:none}
.app.vdone .confirmed{display:inline-flex}

.feed{border:1px solid var(--border)}
.feed .fh{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700;background:var(--panel-2);padding:8px 14px;border-bottom:1px solid var(--border)}
.fitem{display:flex;align-items:center;gap:9px;padding:9px 14px;border-bottom:1px solid var(--border);font-size:12.5px}
.fitem:last-child{border-bottom:0}
.fitem .tk{width:14px;height:14px;flex:none;color:var(--pass)}
.fitem .wh{color:var(--ink)}
.fitem .wn{margin-left:auto;color:var(--faint);font-family:var(--mono);font-size:11px}

.again{background:none;border:0;color:var(--link);font-family:var(--sans);font-size:13px;cursor:pointer;text-decoration:underline;padding:4px;align-self:flex-start}
.coa-actions{display:flex;gap:10px;flex-wrap:wrap}

.errbox{border:1px solid var(--warn);background:var(--warn-wash);padding:16px 18px;display:flex;gap:13px}
.errbox .bang{font-family:var(--serif);font-weight:700;font-size:26px;color:var(--warn);line-height:1;flex:none}
.errbox h2{font-family:var(--sans);font-size:17px;font-weight:700;margin-bottom:5px}
.errbox p{margin:0;font-size:13px}
.errbox .lotm{font-family:var(--mono)}

/* calculator */
.calc-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.unit-in{display:flex}
.unit-in input{border-right:0}
.unit-in select{width:90px;flex:none;border-color:#948f84 var(--border) var(--border) var(--border)}
.out .orow{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border);font-size:13px}
.out .orow:last-child{border-bottom:0}
.out .okk{color:var(--muted)}
.out .ov{font-family:var(--mono);font-weight:700;font-size:17px;color:var(--ink);font-variant-numeric:tabular-nums}
.out .ov.key{color:var(--red-ink);font-size:21px}
.syr-wrap{border:1px solid var(--border);background:var(--panel-2);padding:14px}
.syr-top{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:8px;font-family:var(--mono)}
.syr{width:100%;height:66px;display:block}
.calc-warn{border:1px solid var(--warn);background:var(--warn-wash);color:var(--ink);font-size:12.5px;padding:10px 13px;display:none}
.calc-warn.show{display:block}
.disclaim{font-size:11.5px;color:var(--faint);font-style:italic}

/* tests db */
.search{display:flex;gap:10px;margin-bottom:4px}
.search input{max-width:360px}
table.db{width:100%;border-collapse:collapse;font-size:13px}
table.db th,table.db td{border:1px solid var(--border);padding:9px 12px;text-align:left}
table.db thead th{background:var(--navy);color:var(--on-navy);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase}
table.db tbody tr:nth-child(even) td{background:var(--panel-2)}
table.db tbody tr:hover td{background:var(--red-wash)}
table.db td.num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
table.db .vlink{color:var(--link);background:none;border:0;font-family:var(--sans);font-size:13px;cursor:pointer;text-decoration:underline;padding:0}
table.db .pass{color:var(--pass);font-weight:700}
table.db .jflag{font-family:var(--mono);font-size:11px;color:var(--muted)}
.db-empty{padding:18px;text-align:center;color:var(--muted);border:1px solid var(--border);border-top:0}
.db-count{font-size:11.5px;color:var(--faint);font-family:var(--mono);margin-top:4px}
.tbl-scroll{overflow-x:auto}

/* footer */
.foot{border-top:3px solid var(--navy);background:var(--panel-2);margin-top:10px}
.foot .wrap{display:grid;grid-template-columns:2fr 1fr 1fr;gap:24px;padding-top:22px;padding-bottom:10px}
.foot h4{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:9px}
.foot p{margin:0 0 7px;font-size:12px;color:var(--muted)}
.foot a{font-size:12px;display:block;margin-bottom:5px;text-decoration:none}
.foot .bottom{border-top:1px solid var(--border);padding-top:10px;padding-bottom:22px}
.foot .bottom p{font-family:var(--mono);font-size:10.5px;color:var(--faint)}

/* scanner */
.scanner{position:fixed;inset:0;z-index:40;background:rgba(8,10,14,.9);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px}
.scanner[hidden]{display:none}
.scanbox{width:min(80vw,320px);position:relative}
#scan-video{width:100%;border:2px solid #fff;background:#000;aspect-ratio:1;object-fit:cover}
.scanbox .laser{position:absolute;left:6px;right:6px;height:2.5px;background:var(--red);box-shadow:0 0 12px 2px var(--red);top:6px;animation:scanln 1.6s ease-in-out infinite alternate}
@keyframes scanln{to{top:calc(100% - 8px)}}
.scanner .stxt{color:#fff;font-family:var(--mono);font-size:13px;text-align:center;max-width:320px}
.scanner .scancel{background:transparent;border:1px solid rgba(255,255,255,.5);color:#fff;padding:10px 22px;font-family:var(--sans);font-weight:700;cursor:pointer;border-radius:2px}

/* responsive */
@media (max-width:860px){.layout{grid-template-columns:1fr}}
@media (max-width:640px){.cert-cols{grid-template-columns:1fr}.foot .wrap{grid-template-columns:1fr}}
@media (max-width:560px){
  .mast .util{display:none}
  .nav-status{width:100%;margin-left:0;padding:8px 0}
  .page-h{font-size:22px}
}
@media (max-width:420px){.calc-grid{grid-template-columns:1fr}}
@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .ring .run{animation:none}
}
