/* AQVIROX account area: sign-in / sign-up, customer portal, checkout and error pages. Builds on the tokens in site.css. */
html,body{overflow-x:clip}

/* ---------- sign-in / sign-up ---------- */
.auth{display:grid;grid-template-columns:minmax(320px,5fr) minmax(0,7fr);min-height:calc(100vh - var(--hdr-h));background:var(--bg)}
.auth-brand{display:flex;flex-direction:column;justify-content:space-between;gap:var(--s7);padding:clamp(32px,5vw,72px);background:var(--navy-950);color:#c3cee4}
.auth-brand .kicker{color:#8fb4ff}
.auth-brand h2{margin:0 0 var(--s3);color:#fff;font-size:var(--fs-h1);line-height:1.12;max-width:14ch}
.auth-brand p{margin:0;color:#b9c6e0;max-width:38ch}
.auth-points{list-style:none;margin:0;padding:0;display:grid;gap:var(--s3)}
.auth-points li{display:flex;align-items:center;gap:var(--s3);color:#dbe4f5;font-size:var(--fs-small)}
.auth-points svg{width:16px;height:16px;flex:none;color:#5fd3a4}
.auth-main{display:flex;align-items:center;justify-content:center;padding:clamp(24px,5vw,64px)}
.auth-card{width:min(440px,100%);padding:var(--s6);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}
.auth-card.wide{width:min(600px,100%)}
.auth-card h1{margin:0 0 var(--s2);font-size:1.75rem;line-height:1.2}
.auth-card .sub{margin:0 0 var(--s5);color:var(--muted)}
.auth-card p,.fieldset-t{max-width:none}
.auth .form{gap:var(--s4)}
.auth .two{gap:var(--s4)}
.auth-row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s3)}
.auth-row a{font-size:var(--fs-small);color:var(--accent);font-weight:600}.auth-row a:hover{text-decoration:underline}
.fieldset-t{margin:var(--s2) 0 calc(var(--s2)*-1);padding-top:var(--s4);border-top:1px solid var(--line);font-size:var(--fs-label);font-weight:600;color:var(--muted)}
.fieldset-t:first-child{border:0;padding-top:0;margin-top:0}
.reqs{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px var(--s4);font-size:var(--fs-label);color:var(--muted)}
.reqs li{display:inline-flex;align-items:center;gap:6px}
.reqs li::before{content:'';width:10px;height:10px;border-radius:50%;border:1.5px solid #9aa8bf;transition:.15s}
.reqs li.met{color:var(--green-700)}.reqs li.met::before{background:var(--green-600);border-color:var(--green-600)}
.auth .btn-block{margin-top:var(--s1)}
.auth-foot{margin:var(--s5) 0 0;padding-top:var(--s4);border-top:1px solid var(--line);color:var(--muted);font-size:var(--fs-small);line-height:1.9}
.auth-foot a{color:var(--accent);font-weight:600}.auth-foot a:hover{text-decoration:underline}

/* ---------- shared loading + document bits ---------- */
.sk-block{display:flex;align-items:center;justify-content:center;gap:7px;min-height:140px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}
.sk-block i{width:8px;height:8px;border-radius:50%;background:#b8c4d8;animation:aqx-pulse 1.1s ease-in-out infinite}
.sk-block i:nth-child(2){animation-delay:.12s}.sk-block i:nth-child(3){animation-delay:.24s}.sk-block i:nth-child(4){animation-delay:.36s}
@keyframes aqx-pulse{50%{opacity:.3;transform:scale(.8)}}
.back{display:inline-flex;align-items:center;gap:6px;margin-bottom:var(--s4);color:var(--muted);font-size:var(--fs-small);font-weight:600}
.back:hover{color:var(--accent)}.back svg{width:14px;height:14px}
.inv-doc{padding:var(--s6);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}
.inv-co{display:flex;justify-content:space-between;gap:var(--s5);flex-wrap:wrap;padding-bottom:var(--s5);margin-bottom:var(--s5);border-bottom:1px solid var(--line)}
.inv-co address{font-style:normal;font-size:var(--fs-small);line-height:1.6;color:var(--muted)}
.err-links{flex-wrap:wrap}
.tbl-wrap{-webkit-overflow-scrolling:touch}
@media(max-width:720px){:not(.tbl-wrap)>table.dt{display:block;max-width:100%;overflow-x:auto}}

/* ---------- error pages ---------- */
.err-page{padding:clamp(48px,8vw,104px) 0;background:var(--bg)}
.err-grid{display:grid;grid-template-columns:1fr;gap:var(--s4);max-width:640px}
.err-code{display:none}
.err-page h1{margin:0 0 var(--s3);max-width:20ch}
.err-page .lead{color:var(--muted)}
.err-page .actions{margin:var(--s5) 0 0}
.err-links{display:flex;gap:var(--s2) var(--s5);margin:var(--s6) 0 0;padding:var(--s4) 0 0;border-top:1px solid var(--line)}
.err-links a{font-size:var(--fs-small);color:var(--accent);font-weight:600}.err-links a:hover{text-decoration:underline}
.err-ref{margin:var(--s4) 0 0;font-size:var(--fs-label);color:var(--muted)}

/* ---------- customer portal ---------- */
.portal{background:var(--bg)}
.portal-shell{display:grid;grid-template-columns:248px minmax(0,1fr);max-width:1440px;margin:0 auto;min-height:calc(100svh - var(--hdr-h))}
.side{display:flex;flex-direction:column;padding:var(--s5) var(--s4);border-right:1px solid var(--line);background:var(--surface)}
.side-user{padding:0 var(--s3) var(--s4);margin-bottom:var(--s3);border-bottom:1px solid var(--line)}
.side-user small{display:block;font-size:var(--fs-micro);font-weight:600;color:var(--muted)}
.side-user strong{display:block;margin-top:2px;font-size:var(--fs-small);font-weight:600;color:var(--ink);word-break:break-all}
.side nav ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.side nav a{display:flex;align-items:center;gap:var(--s3);min-height:40px;padding:0 var(--s3);border-radius:var(--r-sm);font-size:.9375rem;font-weight:500;color:var(--text);transition:background .15s,color .15s}
.side nav a svg{width:18px;height:18px;flex:none;color:var(--muted)}
.side nav a:hover{background:var(--surface-2);color:var(--ink)}
.side nav a[aria-current=page]{background:var(--accent-soft);color:var(--accent-strong);font-weight:600;box-shadow:inset 3px 0 0 var(--accent)}
.side nav a[aria-current=page] svg{color:var(--accent)}
.side-foot{margin-top:auto;padding-top:var(--s5)}
.portal-main{padding:var(--s6) clamp(20px,3.5vw,48px) var(--s8);min-width:0}
.portal-title{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s4);flex-wrap:wrap;margin-bottom:var(--s5)}
.portal-title h1{margin:0 0 2px;font-size:var(--fs-h2);line-height:1.2}
.portal-title p{margin:0;color:var(--muted)}
.ico{width:18px;height:18px;flex:none}.arr{width:14px;height:14px;flex:none}
.portal svg{max-width:100%}
.portal .metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);margin-bottom:var(--s5);overflow:hidden}
.portal .metric{display:grid;gap:2px;padding:var(--s4) var(--s5);border-right:1px solid var(--line)}.portal .metric:last-child{border:0}
.portal .metric small{font-size:var(--fs-label);font-weight:600;color:var(--muted)}
.portal .metric strong{font-size:1.75rem;line-height:1.2;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.portal .metric span{font-size:var(--fs-label);color:var(--muted)}.portal .metric.due strong{color:var(--amber-700)}
.portal .dash-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:var(--s5);align-items:start}
.portal .stack{display:grid;gap:var(--s5)}
.portal .panel{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);overflow:hidden}
.portal .panel-h{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s3) var(--s5);border-bottom:1px solid var(--line);background:var(--surface-2)}
.portal .panel-h h2{margin:0;font-size:var(--fs-small);font-weight:650;letter-spacing:0;color:var(--ink)}
.portal .panel-b{padding:var(--s5)}.portal .panel-b h2{margin:0 0 var(--s2);font-size:1.25rem}
.portal .panel .tbl-wrap{border:0;border-radius:0}
.portal .panel .dt th{padding:var(--s3) var(--s5)}.portal .panel .dt td{padding:var(--s3) var(--s5)}
.portal .panel .dt a{color:var(--accent);font-weight:600}.portal .panel .dt a:hover{text-decoration:underline}
.portal .badge{padding:3px 10px;border-radius:var(--pill);font-size:var(--fs-micro);font-weight:600;background:#eaeef5;color:#45536b}
.portal .badge.ok,.portal .badge.good,.portal .badge.live{background:var(--green-50);color:var(--green-700)}
.portal .badge.warn,.portal .badge.due{background:var(--amber-100);color:var(--amber-700)}
.portal .badge.bad{background:var(--red-100);color:var(--red-700)}
.portal .badge.info{background:var(--blue-50);color:var(--blue-700)}
.portal .list-mini{list-style:none;margin:0;padding:var(--s2) var(--s5)}
.portal .list-mini li{display:flex;justify-content:space-between;gap:var(--s3);padding:var(--s3) 0;border-bottom:1px solid var(--line)}.portal .list-mini li:last-child{border:0}
.portal .list-mini small{display:block;color:var(--muted);font-size:var(--fs-label)}.portal .list-mini a{color:var(--accent);font-weight:600}
.portal .qa{list-style:none;margin:0;padding:var(--s2) var(--s5)}.portal .qa li{border-bottom:1px solid var(--line)}.portal .qa li:last-child{border:0}
.portal .qa a{display:flex;justify-content:space-between;align-items:center;padding:var(--s3) 0;font-weight:600;font-size:.9375rem;color:var(--ink)}
.portal .qa a:hover{color:var(--accent)}.portal .qa a svg{width:14px;height:14px;color:var(--muted)}
.portal .empty{display:grid;justify-items:start;gap:6px;padding:var(--s6) var(--s5)}
.portal .empty h3,.portal .empty strong{margin:0;font-size:1rem;color:var(--ink)}.portal .empty p{margin:0;color:var(--muted);font-size:var(--fs-small)}
.portal .empty svg{width:24px;height:24px;color:var(--muted);margin-bottom:var(--s1)}
.portal .state{display:flex;gap:var(--s4);align-items:flex-start;padding:var(--s5);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);margin:0}
.portal .state-ic{display:grid;place-items:center;width:36px;height:36px;border-radius:var(--r-sm);background:var(--blue-50);color:var(--accent);flex:none}.portal .state-ic svg{width:18px;height:18px}
.portal .state h2{margin:0 0 4px;font-size:1rem}.portal .state p{margin:0 0 var(--s3);color:var(--muted);font-size:var(--fs-small)}
.portal .state-offline,.portal .state-error{background:var(--red-100);border-color:#f3b9b3}.portal .state-offline .state-ic,.portal .state-error .state-ic{background:#fff;color:var(--red-700)}
.portal .totals{display:grid;grid-template-columns:1fr auto;gap:var(--s2) var(--s5);max-width:360px;margin:var(--s4) 0 0 auto;font-size:var(--fs-small)}
.portal .totals dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.portal .totals .strong{padding-top:var(--s3);border-top:1px solid var(--line);font-weight:700;font-size:1rem;color:var(--ink)}
.portal .kv,.portal .dl{display:grid;grid-template-columns:minmax(120px,200px) 1fr;gap:var(--s3) var(--s5);margin:0;padding:var(--s5);font-size:var(--fs-small)}
.portal .kv dt,.portal .dl dt{color:var(--muted)}.portal .kv dd,.portal .dl dd{margin:0;color:var(--ink)}
.portal .tk-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);margin:var(--s2) 0}
.portal .m,.muted{color:var(--muted);font-size:var(--fs-small)}
.portal .rate-note,.portal .cur-note,.portal .wait{color:var(--muted);font-size:var(--fs-label)}
.portal .inv-meta{display:flex;justify-content:space-between;gap:var(--s5);flex-wrap:wrap;margin-bottom:var(--s5)}
.portal .inv-bill{margin:0 0 var(--s5);font-size:var(--fs-small);line-height:1.6}
.portal .inv-bill h3{margin:0 0 4px;font-size:var(--fs-label);font-weight:600;color:var(--muted)}
.portal .inv-actions{display:flex;gap:var(--s3)}
.portal .support-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--s5);align-items:start}
.portal .thread{list-style:none;margin:0;padding:var(--s5);display:grid;gap:var(--s3)}
.portal .thread li{max-width:80%;padding:var(--s3) var(--s4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2)}
.portal .thread li.me{margin-left:auto;background:var(--blue-50);border-color:var(--blue-100)}
.portal .thread .who{display:flex;gap:var(--s3);justify-content:space-between;margin-bottom:4px;font-size:var(--fs-label);color:var(--muted)}
.portal .form{display:grid;gap:var(--s4);padding:var(--s5)}
.portal .form label{display:block;margin-bottom:6px;font-size:var(--fs-small);font-weight:600;color:var(--ink)}
.portal .form input,.portal .form select,.portal .form textarea{width:100%;min-height:44px;padding:10px var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-md);background:#fff;font:inherit;color:var(--ink)}
.portal .form textarea{min-height:120px}
.portal .form input:focus-visible,.portal .form select:focus-visible,.portal .form textarea:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--blue-100)}
.portal .welcome{margin-bottom:var(--s5);padding:var(--s5) var(--s6);border-radius:var(--r-lg);background:var(--navy-900);color:#c3cee4;display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s5)}
.portal .welcome h1{margin:0 0 4px;color:#fff;font-size:var(--fs-h2)}.portal .welcome p{margin:0;color:#b9c6e0}
.st{display:inline-flex;gap:var(--s2);align-items:center;margin-top:var(--s3);font-size:var(--fs-label);font-weight:600}.st i{width:8px;height:8px;border-radius:50%;background:#5fd3a4}

@media(max-width:1000px){
  .portal .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .portal .metric:nth-child(2){border-right:0}.portal .metric:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .portal .dash-grid,.portal .support-grid{grid-template-columns:minmax(0,1fr)}
}
/* mobile: the sidebar becomes a sticky, scrollable tab bar under the header */
@media(max-width:860px){
  .portal-shell{grid-template-columns:minmax(0,1fr)}
  .side{position:sticky;top:var(--hdr-h);z-index:50;border-right:0;border-bottom:1px solid var(--line);padding:var(--s2) var(--s3)}
  .side-user,.side-foot{display:none}
  .side nav ul{display:flex;overflow-x:auto;gap:var(--s1);scroll-snap-type:x proximity;scrollbar-width:none}
  .side nav ul::-webkit-scrollbar{display:none}
  .side nav li{flex:none;scroll-snap-align:start}
  .side nav a{white-space:nowrap;min-height:40px;box-shadow:none}
  .side nav a[aria-current=page]{box-shadow:inset 0 -3px 0 var(--accent);border-radius:var(--r-sm) var(--r-sm) 0 0}
  .portal-main{padding:var(--s5) var(--s4) var(--s8)}
}
@media(max-width:900px){.auth{grid-template-columns:1fr;min-height:0}.auth-brand{padding:var(--s5);gap:var(--s4)}.auth-brand h2{font-size:1.5rem;max-width:none}.auth-brand p,.auth-points{display:none}.auth-main{padding:var(--s5) var(--s4) var(--s7);align-items:flex-start}.auth-card{padding:var(--s5)}}
@media(max-width:560px){
  .portal .metrics{grid-template-columns:minmax(0,1fr)}.portal .metric{border-right:0;border-bottom:1px solid var(--line)}.portal .metric:last-child{border:0}
  .portal .panel .dt th,.portal .panel .dt td{padding:var(--s3)}.portal .thread li{max-width:100%}
  .portal .kv,.portal .dl{grid-template-columns:1fr;gap:2px}.portal .kv dd,.portal .dl dd{margin-bottom:var(--s3)}
  .portal .welcome{flex-direction:column;align-items:flex-start}.auth .two{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){.sk-block i{animation:none}.auth *{transition:none!important}}
@media print{.auth-brand,.noprint,.side,.hdr,.ftr{display:none}.portal-shell{display:block}}

/* =====================================================================
   Design layer v2: account pages
   ===================================================================== */
.auth{background:radial-gradient(900px 500px at 100% 0,rgba(10,98,240,.07),transparent 60%),var(--bg)}
.auth-brand{position:relative;overflow:hidden;justify-content:flex-start;gap:var(--s8);background:radial-gradient(620px 420px at 100% 0,rgba(10,98,240,.55),transparent 62%),radial-gradient(520px 420px at 0 105%,rgba(31,214,101,.28),transparent 60%),var(--navy-950)}
.auth-brand::after{content:'';position:absolute;right:-90px;bottom:-70px;width:420px;aspect-ratio:515/432;background:url('/img/brand/mark.png') center/contain no-repeat;opacity:.13;pointer-events:none}
.auth-brand>*{position:relative;z-index:1}
.auth-logo{width:min(250px,70%);height:auto;margin:0 0 var(--s8)}
.auth-brand .kicker{color:#7fe3ab}
.auth-brand h2{font-family:var(--display);font-size:clamp(1.9rem,1.3rem + 1.8vw,2.75rem);line-height:1.08;max-width:15ch;letter-spacing:-.03em}
.auth-brand p{color:#c3d0ea;font-size:1.0625rem;line-height:1.55}
.auth-points{margin-top:auto}
.auth-points li{padding:var(--s3) var(--s4);border:1px solid rgba(255,255,255,.12);border-radius:12px;background:rgba(255,255,255,.05);backdrop-filter:blur(6px)}
.auth-points svg{color:var(--green-500)}
.auth-main{align-items:center}
.auth-card{width:min(460px,100%);padding:clamp(28px,4vw,44px);border:1px solid rgba(191,203,224,.7);border-radius:22px;box-shadow:var(--shadow-2)}
.auth-card.wide{width:min(640px,100%)}
.auth-card h1{font-family:var(--display);font-size:2rem;letter-spacing:-.03em}
.auth-card .sub{font-size:1rem}
.auth .row label{font-weight:600;color:var(--ink);font-size:.875rem}
.auth input:not([type=checkbox]):not([type=radio]),.auth select{min-height:50px;border:1.5px solid var(--line-strong);border-radius:12px;background:#fff;padding:0 var(--s4);transition:border-color .15s,box-shadow .15s}
.auth input:focus,.auth select:focus{outline:none;border-color:var(--blue-600);box-shadow:0 0 0 4px var(--blue-100)}
.auth .btn-block{min-height:52px;margin-top:var(--s2);border-radius:12px;font-size:1rem}
.pw-toggle{border-radius:8px;color:var(--blue-700);font-weight:600}
.auth-foot a{color:var(--blue-600)}
@media(max-width:900px){.auth-brand::after{width:240px;right:-60px;bottom:-40px}.auth-logo{width:180px;margin:0 0 var(--s5)}.auth-brand{gap:var(--s3)}.auth-brand .kicker{display:none}.auth-card{border-radius:18px}}

/* portal + checkout polish (v2) */
.portal .welcome{position:relative;overflow:hidden;border-radius:20px;background:radial-gradient(520px 260px at 100% 0,rgba(10,98,240,.55),transparent 65%),radial-gradient(380px 220px at 0 110%,rgba(31,214,101,.22),transparent 65%),var(--navy-900)}
.portal .welcome::after{content:'';position:absolute;right:140px;bottom:-30px;width:200px;aspect-ratio:515/432;background:url('/img/brand/mark.png') center/contain no-repeat;opacity:.1;pointer-events:none}
.portal .welcome>*{position:relative;z-index:1}
.portal h1{font-family:var(--display);letter-spacing:-.03em}
.side a[aria-current=page]{background:var(--blue-50);color:var(--blue-700)}
.co-items{list-style:none;margin:0 0 var(--s5);padding:0;display:grid;gap:var(--s2)}
.co-items li{display:flex;justify-content:space-between;gap:var(--s4);padding:var(--s3) var(--s4);border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--ink);font-weight:600}
.co-totals,.co-items+*{font-variant-numeric:tabular-nums}
