/* ============================================================
   AIT Capital — shared base stylesheet
   Framework-free. Tokens derived verbatim from the AIT Design
   System (ait-design-system). Dark theme is primary; a single
   warm-cream band uses [data-theme="paper"].
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@300;400;500;600;700&family=Jost:wght@300;400;500;600&family=Instrument+Serif:ital@0;1&display=swap');

:root {
  /* ---- Ink scale (near-black neutrals) ---- */
  --ink-1000:#050506; --ink-950:#0A0A0B; --ink-900:#101012; --ink-850:#161619;
  --ink-800:#1D1D21; --ink-700:#2A2A2F; --ink-600:#3A3A40; --ink-500:#54545B;
  --ink-400:#6E6E76; --ink-300:#8C8C94; --ink-200:#B4B4BB; --ink-100:#D9D9DE;

  /* ---- Paper (warm) ---- */
  --paper-0:#FFFFFF; --paper-50:#F6F4EF; --paper-100:#EDEAE2;
  --paper-200:#DED9CD; --paper-300:#C3BCAC;

  /* ---- Gold accent ---- */
  --gold-100:#F0E5CC; --gold-300:#DCC288; --gold-400:#CFAE66;
  --gold-500:#C2A052; --gold-600:#A8863C; --gold-700:#806328;

  /* ---- Semantic signals ---- */
  --signal-up:#5FA37A; --signal-down:#C2665B; --signal-info:#6C8FB8;

  /* ---- Semantic aliases (DARK default) ---- */
  --surface-base:var(--ink-950); --surface-raised:var(--ink-900);
  --surface-card:var(--ink-850); --surface-overlay:var(--ink-800);
  --surface-inverse:var(--paper-50);
  --text-strong:var(--paper-0); --text-body:var(--ink-200);
  --text-secondary:var(--ink-300); --text-tertiary:var(--ink-400);
  --text-disabled:var(--ink-500); --text-accent:var(--gold-500);
  --border-subtle:var(--ink-700); --border-strong:var(--ink-600);
  --border-accent:var(--gold-600);
  --accent:var(--gold-500); --accent-hover:var(--gold-400); --accent-press:var(--gold-600);

  /* ---- Type ---- */
  --font-sans:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --font-display:'Archivo',-apple-system,sans-serif;
  --font-label:'Jost','Archivo',sans-serif;
  --font-mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  --weight-light:300; --weight-regular:400; --weight-medium:500;
  --weight-semibold:600; --weight-bold:700;
  --text-display-xl:clamp(2.6rem,1.6rem + 3.4vw,3.9rem);
  --text-display-l:clamp(2.1rem,1.4rem + 2.8vw,3.1rem);
  --text-display-m:clamp(1.6rem,1.2rem + 1.7vw,2.25rem);
  --text-h1:2.25rem; --text-h2:1.75rem; --text-h3:1.375rem; --text-h4:1.125rem;
  --text-lg:1.0625rem; --text-base:0.9375rem; --text-sm:0.8125rem;
  --text-xs:0.75rem; --text-2xs:0.6875rem;
  --leading-tight:1.08; --leading-snug:1.25; --leading-normal:1.5; --leading-relaxed:1.65;
  --tracking-tight:-0.02em; --tracking-normal:0em; --tracking-wide:0.08em;
  --tracking-label:0.18em; --tracking-logo:0.32em;

  /* ---- Spacing / layout ---- */
  --space-1:0.25rem; --space-2:0.5rem; --space-3:0.75rem; --space-4:1rem;
  --space-5:1.5rem; --space-6:2rem; --space-7:2.5rem; --space-8:3rem;
  --space-9:4rem; --space-10:5rem; --space-11:6rem; --space-12:8rem;
  --radius-0:0; --radius-xs:8px; --radius-sm:12px; --radius-md:14px;
  --radius-lg:18px; --radius-pill:999px; --radius-circle:50%;
  --border-hairline:1px; --border-thick:2px;
  --container-max:1200px; --container-wide:1320px;
  --gutter:clamp(1.25rem,4vw,4rem);
  --nav-h:72px;

  /* ---- Effects ---- */
  --shadow-sm:0 1px 2px rgba(5,5,6,0.30);
  --shadow-md:0 6px 20px rgba(5,5,6,0.35);
  --shadow-lg:0 18px 48px rgba(5,5,6,0.45);
  --shadow-overlay:0 24px 70px rgba(0,0,0,0.60);
  --ring-accent:0 0 0 2px rgba(194,160,82,0.45);
  --glow-accent:0 0 24px rgba(194,160,82,0.20);
  --inset-hairline:inset 0 1px 0 rgba(255,255,255,0.04);
  --ease-out:cubic-bezier(0.22,1,0.36,1);
  --ease-in-out:cubic-bezier(0.65,0,0.35,1);
  --dur-fast:140ms; --dur-base:220ms; --dur-slow:420ms;
  --transition-colors:color var(--dur-fast) var(--ease-out),
    background-color var(--dur-fast) var(--ease-out),
    border-color var(--dur-fast) var(--ease-out);
  --grad-hero:linear-gradient(135deg,#16161A 0%,#0A0A0B 55%,#050506 100%);
  --grad-gold-line:linear-gradient(90deg,var(--gold-500),rgba(194,160,82,0));
}

/* ---- Paper theme scope ---- */
[data-theme="paper"]{
  --surface-base:var(--paper-50); --surface-raised:var(--paper-0);
  --surface-card:var(--paper-0); --surface-overlay:var(--paper-100);
  --surface-inverse:var(--ink-950);
  --text-strong:var(--ink-950); --text-body:#2C2C30; --text-secondary:#54545B;
  --text-tertiary:#7A746A; --text-disabled:var(--paper-300);
  --text-accent:var(--gold-700);
  --border-subtle:var(--paper-200); --border-strong:var(--paper-300);
  --border-accent:var(--gold-600);
  --accent:var(--gold-700); --accent-hover:var(--gold-600); --accent-press:var(--gold-700);
}

/* ============================================================ RESET */
*,*::before,*::after{box-sizing:border-box;}
*{margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{
  font-family:var(--font-sans);
  font-size:var(--text-base);
  line-height:var(--leading-normal);
  color:var(--text-body);
  background:var(--surface-base);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img,svg{display:block;max-width:100%;}
button,input,select{font:inherit;color:inherit;}
a{color:inherit;text-decoration:none;}
:focus-visible{outline:none;box-shadow:var(--ring-accent);border-radius:var(--radius-xs);}
::selection{background:rgba(194,160,82,0.30);color:var(--text-strong);}
[hidden]{display:none !important;}
.tnum{font-variant-numeric:tabular-nums;}
.lang-zh{font-family:var(--font-sans);}
/* CJK renders small/awkward at Latin label sizes & wide tracking — enlarge and relax spacing in Chinese only */
.lang-zh .nav__link{font-size:var(--text-base);letter-spacing:0.05em;}
.lang-zh .eyebrow{font-size:var(--text-xs);letter-spacing:0.12em;}
.lang-zh .btn{font-size:var(--text-sm);letter-spacing:0.08em;}
.lang-zh .arrow-link{font-size:var(--text-sm);letter-spacing:0.08em;}
.lang-zh .app-tab,.lang-zh .subtab{font-size:var(--text-sm);letter-spacing:0.06em;}
.lang-zh .tabbar__btn span{font-size:var(--text-xs);letter-spacing:0.04em;}
.lang-zh .field__label,.lang-zh table.data th{font-size:var(--text-xs);letter-spacing:0.08em;}
.lang-zh .cap-col__title{letter-spacing:0.04em;}
.lang-zh .tag{font-size:var(--text-xs);letter-spacing:0.04em;}
.lang-zh .kpi__label,.lang-zh .contact-card__label{font-size:var(--text-sm);letter-spacing:0.06em;}
.lang-zh .footer__nav a{font-size:var(--text-base);letter-spacing:0.05em;}

/* ============================================================ LAYOUT */
.container{width:100%;max-width:var(--container-wide);margin-inline:auto;padding-inline:var(--gutter);}
.section{padding-block:var(--space-11);}
.section-tight{padding-block:var(--space-9);}

/* ============================================================ TYPE HELPERS */
.eyebrow{
  font-family:var(--font-label);font-weight:var(--weight-medium);
  font-size:var(--text-2xs);letter-spacing:var(--tracking-label);
  text-transform:uppercase;color:var(--text-accent);
  display:inline-flex;align-items:center;gap:var(--space-3);
}
.eyebrow--muted{color:var(--text-tertiary);}
.eyebrow .acct-email{text-transform:none;font-family:var(--font-mono);letter-spacing:0.02em;color:var(--text-secondary);}
.eyebrow--rule::after{content:"";width:40px;height:1px;background:var(--border-strong);display:inline-block;}
.display{
  font-family:var(--font-display);font-weight:var(--weight-semibold);
  letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);
  color:var(--text-strong);text-wrap:balance;
}
.display-xl{font-size:var(--text-display-xl);}
.display-l{font-size:var(--text-display-l);}
.display-m{font-size:var(--text-display-m);}
.lead{font-size:var(--text-lg);line-height:var(--leading-relaxed);color:var(--text-secondary);max-width:46ch;text-wrap:pretty;}
.muted{color:var(--text-tertiary);}

/* ============================================================ LOGO */
.logo{display:inline-flex;align-items:flex-end;gap:var(--space-4);font-family:var(--font-label);line-height:1;}
.logo__mark{
  font-weight:var(--weight-bold);letter-spacing:0.12em;
  color:var(--text-strong);font-size:1.95rem;line-height:0.9;
}
.logo__rule{width:1px;align-self:stretch;background:var(--gold-500);margin-inline:var(--space-1);min-height:1.6em;}
.logo__name{
  display:grid;font-weight:var(--weight-regular);
  font-size:0.56rem;letter-spacing:0.2em;line-height:1.45;
  color:var(--ink-100);text-transform:uppercase;
}
.logo__sub{
  display:block;font-family:var(--font-label);font-weight:var(--weight-regular);
  font-size:0.5rem;letter-spacing:0.3em;text-transform:uppercase;
  color:var(--text-accent);margin-top:var(--space-2);
}
.logo--lg .logo__mark{font-size:2.7rem;}
.logo--lg .logo__name{font-size:0.6rem;}
.logo--lg .logo__sub{font-size:0.62rem;}
.logo--compact{gap:var(--space-3);}
.logo--compact .logo__mark{font-size:1.6rem;}
.logo--stack{flex-direction:column;align-items:flex-start;gap:var(--space-2);text-align:center;}

/* ============================================================ BUTTONS */
.btn{
  --btn-fg:var(--ink-1000);--btn-bg:var(--accent);--btn-bd:var(--accent);
  display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);
  font-family:var(--font-label);font-weight:var(--weight-medium);
  font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;
  padding:var(--space-3) var(--space-5);border:1px solid var(--btn-bd);
  background:var(--btn-bg);color:var(--btn-fg);border-radius:var(--radius-xs);
  cursor:pointer;transition:var(--transition-colors),transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-base);
  white-space:nowrap;
}
.btn:hover{background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:var(--glow-accent);}
.btn:active{transform:translateY(0.5px);}
.btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none;}
.btn .ico{width:16px;height:16px;transition:transform var(--dur-base) var(--ease-out);}
.btn:hover .ico--arrow{transform:translateX(4px);}
.btn--secondary{--btn-bg:transparent;--btn-fg:var(--text-strong);--btn-bd:var(--border-strong);}
.btn--secondary:hover{--btn-bd:var(--accent);background:transparent;color:var(--accent-hover);box-shadow:none;}
.btn--ghost{--btn-bg:transparent;--btn-fg:var(--text-secondary);--btn-bd:transparent;padding-inline:var(--space-2);}
.btn--ghost:hover{color:var(--accent-hover);background:transparent;box-shadow:none;}
.btn--lg{padding:var(--space-4) var(--space-6);font-size:var(--text-sm);}
.btn--sm{padding:var(--space-2) var(--space-4);}
.btn--block{width:100%;}

/* ---- Arrow link (signature CTA) ---- */
.arrow-link{
  display:inline-flex;align-items:center;gap:var(--space-3);
  font-family:var(--font-label);font-weight:var(--weight-medium);
  font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;
  color:var(--text-strong);position:relative;padding-bottom:var(--space-2);cursor:pointer;
  transition:var(--transition-colors);
}
.arrow-link::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-base) var(--ease-out);}
.arrow-link:hover{color:var(--accent-hover);}
.arrow-link:hover::after{transform:scaleX(1);}
.arrow-link .ico{width:16px;height:16px;transition:transform var(--dur-base) var(--ease-out);}
.arrow-link:hover .ico--arrow{transform:translateX(5px);}
.arrow-link--muted{color:var(--text-tertiary);}

/* ============================================================ TAG */
.tag{
  display:inline-flex;align-items:center;gap:var(--space-2);
  font-family:var(--font-label);font-weight:var(--weight-medium);
  font-size:var(--text-2xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;
  padding:var(--space-1) var(--space-3);border:1px solid var(--border-subtle);
  border-radius:var(--radius-xs);color:var(--text-secondary);
}
.tag--accent{border-color:var(--border-accent);color:var(--text-accent);}
.tag--up{border-color:rgba(95,163,122,0.4);color:var(--signal-up);background:rgba(95,163,122,0.08);}
.tag--down{border-color:rgba(194,102,91,0.4);color:var(--signal-down);background:rgba(194,102,91,0.08);}
.tag--neutral{border-color:var(--border-subtle);color:var(--text-tertiary);}
.tag--date{font-family:var(--font-mono);letter-spacing:0;text-transform:none;border:none;padding:0;color:var(--text-tertiary);}

/* ---- Visible placeholder (facts AIT supplies later) ---- */
.ph{
  display:inline-block;font-family:var(--font-mono);font-size:0.85em;
  color:var(--gold-300);border:1px dashed var(--gold-600);
  background:rgba(194,160,82,0.07);padding:0.05em 0.5em;border-radius:var(--radius-xs);
  letter-spacing:0;text-transform:none;
}

/* ============================================================ NAV */
.nav{
  position:fixed;inset:0 0 auto 0;min-height:var(--nav-h);z-index:50;
  display:flex;align-items:center;
  padding-top:env(safe-area-inset-top,0px);
  background:rgba(8,8,9,0.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--border-subtle);
}
.nav__inner{display:flex;align-items:center;justify-content:space-between;width:100%;
  max-width:var(--container-wide);margin-inline:auto;padding-inline:var(--gutter);gap:var(--space-6);}
.nav__links{display:flex;align-items:center;gap:var(--space-7);}
.nav__link{
  font-family:var(--font-label);font-weight:var(--weight-medium);
  font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;
  color:var(--text-secondary);transition:var(--transition-colors);position:relative;padding-block:var(--space-2);
}
.nav__link:hover{color:var(--text-strong);}
.nav__right{display:flex;align-items:center;gap:var(--space-5);}
.nav__toggle{display:none;background:none;border:none;cursor:pointer;padding:var(--space-2);color:var(--text-strong);position:relative;z-index:70;}
.nav__toggle .ico--close{display:none;}
.nav.is-open .nav__toggle .ico--menu{display:none;}
.nav.is-open .nav__toggle .ico--close{display:block;}
.nav__cta-mobile{display:none;}

/* ---- Language toggle ---- */
.lang{
  display:inline-flex;align-items:center;gap:0;border:1px solid var(--border-subtle);
  border-radius:var(--radius-pill);overflow:hidden;font-family:var(--font-label);
}
.lang__btn{
  background:none;border:none;cursor:pointer;padding:var(--space-2) var(--space-4);
  font-size:var(--text-2xs);letter-spacing:var(--tracking-wide);
  color:var(--text-tertiary);transition:var(--transition-colors);
}
.lang__btn[aria-pressed="true"]{color:var(--ink-1000);background:var(--accent);}
.lang__sep{color:var(--border-strong);font-size:var(--text-2xs);}

/* ============================================================ HERO */
.hero{position:relative;padding-top:calc(var(--nav-h) + var(--space-9));padding-bottom:var(--space-9);
  overflow:hidden;min-height:clamp(580px,84vh,880px);display:flex;align-items:center;}
.hero__visual{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;}
/* atmospheric sky + gold light source */
.hero__sky{position:absolute;inset:0;background:
  radial-gradient(150% 95% at 84% 2%, rgba(194,160,82,0.22), rgba(194,160,82,0) 40%),
  linear-gradient(155deg,#1a1b21 0%,#0d0d10 50%,#050506 100%);}
/* 3D glass curtain-wall tower */
.hero__scene{position:absolute;inset:0;perspective:1500px;perspective-origin:70% 24%;}
.hero__tower{position:absolute;top:-14%;left:43%;right:-12%;bottom:-16%;
  transform-style:preserve-3d;transform:rotateX(8deg) rotateY(-29deg);}
.hero__face{position:absolute;inset:0;display:grid;gap:3px;background:rgba(4,4,6,0.92);
  backface-visibility:hidden;}
.hero__face--front{grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(20,1fr);}
.hero__face--side{width:27%;left:-27%;transform-origin:right center;transform:rotateY(75deg);
  grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(20,1fr);background:rgba(2,2,3,0.96);}
.hero__pane{background:linear-gradient(158deg,rgba(255,255,255,0.075),rgba(255,255,255,0.015) 58%,rgba(255,255,255,0.045));}
.hero__pane.is-warm{background:linear-gradient(158deg,rgba(212,180,108,0.62),rgba(194,160,82,0.12));
  box-shadow:0 0 12px rgba(194,160,82,0.40);}
.hero__pane.is-cool{background:linear-gradient(158deg,rgba(150,178,208,0.34),rgba(120,150,185,0.05));}
.hero__pane.is-dim{background:rgba(255,255,255,0.012);}
.hero__face--side .hero__pane{filter:brightness(0.55);}
/* light bloom, diagonal sheen, readability vignette */
.hero__bloom{position:absolute;top:-8%;right:4%;width:46%;height:60%;
  background:radial-gradient(closest-side,rgba(194,160,82,0.32),rgba(194,160,82,0) 70%);filter:blur(12px);}
.hero__sheen{position:absolute;inset:0;background:linear-gradient(118deg,rgba(255,255,255,0.10) 0%,rgba(255,255,255,0) 32%);mix-blend-mode:screen;}
.hero__vignette{position:absolute;inset:0;background:
  linear-gradient(90deg,#0A0A0B 4%, rgba(10,10,11,0.72) 28%, rgba(10,10,11,0) 56%),
  linear-gradient(0deg,rgba(5,5,6,0.55),rgba(5,5,6,0) 38%),
  radial-gradient(120% 120% at 30% 50%, rgba(5,5,6,0) 40%, rgba(5,5,6,0.4) 100%);}
.hero__inner{position:relative;z-index:1;max-width:900px;}
.hero__eyebrow{margin-bottom:var(--space-5);}
.hero__title{margin-bottom:var(--space-7);max-width:16ch;}
.hero__sub{margin-bottom:var(--space-8);max-width:44ch;}

/* ============================================================ CAPABILITY GRID */
.cap-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--border-subtle);}
.cap-col{padding:var(--space-7) var(--space-6) var(--space-7) 0;border-right:1px solid var(--border-subtle);position:relative;}
.cap-col:last-child{border-right:none;}
.cap-col:not(:first-child){padding-left:var(--space-6);}
.cap-col__index{font-family:var(--font-label);font-size:var(--text-sm);color:var(--text-tertiary);letter-spacing:var(--tracking-wide);}
.cap-col__title{
  font-family:var(--font-label);font-weight:var(--weight-medium);
  font-size:var(--text-h4);letter-spacing:var(--tracking-wide);text-transform:uppercase;
  color:var(--text-strong);margin:var(--space-5) 0 var(--space-5);line-height:var(--leading-snug);
}
.cap-col__items{list-style:none;display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-6);}
.cap-col__items li{font-size:var(--text-base);color:var(--text-secondary);}
.cap-col__arrow{color:var(--text-tertiary);transition:var(--transition-colors);}
.cap-col:hover .cap-col__arrow{color:var(--accent);}
.cap-col:hover .cap-col__title{color:var(--gold-100);}
.cap-col__arrow .ico{width:20px;height:20px;transition:transform var(--dur-base) var(--ease-out);}
.cap-col:hover .cap-col__arrow .ico{transform:translateX(5px);}

/* ============================================================ APPROACH BAND (paper) */
.approach{position:relative;overflow:hidden;background:var(--surface-base);color:var(--text-body);}
.approach > .container{position:relative;z-index:1;}
.approach__bg{position:absolute;inset:0;z-index:0;pointer-events:none;
  background-image:
    linear-gradient(rgba(120,108,84,0.16) 1px,transparent 1px),
    linear-gradient(90deg,rgba(120,108,84,0.16) 1px,transparent 1px),
    linear-gradient(rgba(120,108,84,0.07) 1px,transparent 1px),
    linear-gradient(90deg,rgba(120,108,84,0.07) 1px,transparent 1px);
  background-size:48px 48px,48px 48px,12px 12px,12px 12px;
  -webkit-mask-image:radial-gradient(135% 115% at 50% 32%,#000 48%,transparent 100%);
  mask-image:radial-gradient(135% 115% at 50% 32%,#000 48%,transparent 100%);}
.approach__curve{position:absolute;inset:0;width:100%;height:100%;}
.approach__curve-area{fill:url(#approachCurveFill);}
.approach__curve-line{fill:none;stroke:rgba(128,99,40,0.30);stroke-width:2;stroke-dasharray:2400;stroke-dashoffset:0;}
@media (prefers-reduced-motion:no-preference){
  .approach__curve-line{animation:aitCurveDraw 1900ms var(--ease-out) 200ms both;}
}
@keyframes aitCurveDraw{from{stroke-dashoffset:2400;}to{stroke-dashoffset:0;}}
.approach__head{max-width:30ch;}
.approach__lead{font-family:var(--font-display);font-weight:var(--weight-regular);
  font-size:var(--text-display-m);line-height:var(--leading-snug);color:var(--text-strong);
  letter-spacing:var(--tracking-tight);margin-top:var(--space-5);text-wrap:balance;}
.process{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-4);margin-top:var(--space-9);align-items:start;position:relative;}
.process__track{position:absolute;top:26px;left:10%;right:10%;height:2px;z-index:0;
  background:repeating-linear-gradient(90deg,rgba(128,99,40,0.55) 0 5px,transparent 5px 13px);}
.process__pulse{position:absolute;top:22px;left:10%;width:9px;height:9px;border-radius:var(--radius-circle);z-index:0;
  background:var(--gold-600);box-shadow:0 0 12px rgba(194,160,82,0.85);opacity:0;}
@keyframes aitPulseTravel{0%{left:10%;opacity:0;}8%{opacity:1;}92%{opacity:1;}100%{left:90%;opacity:0;}}
@media (prefers-reduced-motion:no-preference){
  .process__pulse{animation:aitPulseTravel 4.8s var(--ease-in-out) 600ms infinite;}
}
.process-step{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-4);position:relative;z-index:1;}
.process-step__ring{width:52px;height:52px;border:1px solid var(--border-strong);border-radius:var(--radius-circle);
  display:grid;place-items:center;color:var(--text-strong);background:var(--surface-base);transition:var(--transition-colors);}
.process-step__ring .ico{width:22px;height:22px;}
.process-step:hover .process-step__ring{border-color:var(--accent);color:var(--accent);}
.process-step__label{font-family:var(--font-label);font-weight:var(--weight-medium);
  font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-strong);}
.process-step__desc{font-size:var(--text-sm);color:var(--text-tertiary);line-height:var(--leading-snug);max-width:18ch;}
.process-step__chevron{display:none;position:absolute;top:24px;right:calc(-1 * var(--space-2) - 6px);color:var(--border-strong);}
.process-step:last-child .process-step__chevron{display:none;}
.process-step__chevron .ico{width:16px;height:16px;}

/* ============================================================ ABOUT */
.about__grid{display:grid;grid-template-columns:minmax(0,0.8fr) minmax(0,1.6fr);gap:var(--space-9);align-items:start;}
.about__body{font-size:var(--text-lg);line-height:var(--leading-relaxed);color:var(--text-body);max-width:60ch;text-wrap:pretty;}
.about__body strong{color:var(--text-strong);font-weight:var(--weight-semibold);}

/* ============================================================ CONTACT */
.contact__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-5);margin-top:var(--space-8);}
/* portal contact: keep the block centered & narrower so it clears the engraving on the right */
#page-contact{max-width:980px;margin-inline:auto;text-align:center;
  min-height:calc(100vh - var(--nav-h) - 56px - var(--space-8) - var(--space-11));
  display:flex;flex-direction:column;justify-content:center;}
#page-contact .page-head{align-items:center;}
#page-contact .contact-card{text-align:left;}
.contact-card{
  display:flex;flex-direction:column;gap:var(--space-4);
  padding:var(--space-6);background:var(--surface-card);
  border:1px solid var(--border-subtle);border-radius:var(--radius-sm);
  box-shadow:var(--inset-hairline);transition:var(--transition-colors),box-shadow var(--dur-base);
}
.contact-card:hover{border-color:var(--border-accent);box-shadow:var(--inset-hairline),var(--glow-accent);}
.contact-card__icon{width:40px;height:40px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);
  display:grid;place-items:center;color:var(--accent);}
.contact-card__icon .ico{width:20px;height:20px;}
.contact-card__label{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-xs);
  letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-secondary);}
.contact-card__value{font-size:var(--text-base);color:var(--text-strong);}
/* landing enquiry form (replaces the WhatsApp/Telegram/Email cards) */
.enquiry{max-width:640px;margin-top:var(--space-8);}
.enquiry__form{gap:var(--space-5);}
.enquiry__form:hover{border-color:var(--border-subtle);box-shadow:var(--inset-hairline);} /* static card, not a link */
.enquiry__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5);}
.enquiry__select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:var(--space-8);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23888' stroke-width='1.5'/></svg>");
  background-repeat:no-repeat;background-position:right var(--space-4) center;}
.enquiry__select option{background:var(--surface-overlay);color:var(--text-strong);}
.enquiry__textarea{font:inherit;resize:vertical;min-height:104px;line-height:var(--leading-relaxed);}
.enquiry__hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none;}
.enquiry__foot{display:flex;align-items:center;gap:var(--space-5);flex-wrap:wrap;margin-top:var(--space-2);}
.enquiry__error{color:var(--signal-down);font-size:var(--text-sm);}
.enquiry__done-title{font-weight:var(--weight-semibold);font-size:var(--text-lg);color:var(--text-strong);}
.enquiry__done-body{color:var(--text-body);margin:0;}

/* ============================================================ FOOTER */
.footer{border-top:1px solid var(--border-subtle);background:var(--ink-1000);padding-block:var(--space-11) var(--space-8);}
.footer__top{display:flex;justify-content:space-between;align-items:center;gap:var(--space-8);flex-wrap:wrap;}
.footer__nav{display:flex;flex-wrap:wrap;gap:var(--space-4) var(--space-7);align-items:center;}
.footer__nav a{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-sm);
  letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-secondary);transition:var(--transition-colors);}
.footer__nav a:hover{color:var(--accent);}
.footer__legal{margin-top:var(--space-9);padding-top:var(--space-7);border-top:1px solid var(--border-subtle);
  display:flex;flex-direction:column;gap:var(--space-4);}
.footer__row{display:flex;justify-content:space-between;gap:var(--space-5);flex-wrap:wrap;align-items:center;}
.footer__meta{font-size:var(--text-sm);color:var(--text-secondary);}
.footer__disclaimer{font-size:var(--text-sm);color:var(--text-tertiary);line-height:var(--leading-relaxed);max-width:90ch;}

/* ============================================================ FORMS / INPUTS */
.field{display:flex;flex-direction:column;gap:var(--space-3);}
.field__label{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-xs);
  letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-secondary);}
.input{
  width:100%;background:var(--surface-overlay);border:1px solid var(--border-subtle);
  border-radius:var(--radius-xs);color:var(--text-strong);font-size:var(--text-base);
  padding:var(--space-4);transition:var(--transition-colors);
}
.input::placeholder{color:var(--text-disabled);}
.input:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring-accent);}
.input[aria-invalid="true"]{border-color:var(--signal-down);}
.form-error{font-size:var(--text-sm);color:var(--signal-down);min-height:1.2em;}
.form-hint{font-size:var(--text-sm);color:var(--text-tertiary);}

/* ---- OTP code boxes ---- */
.otp{display:flex;gap:var(--space-3);justify-content:center;width:100%;}
.otp__box{
  flex:1 1 0;min-width:0;max-width:48px;aspect-ratio:48 / 58;padding:0;
  text-align:center;font-family:var(--font-mono);
  font-size:var(--text-h3);background:var(--surface-overlay);
  border:1px solid var(--border-subtle);border-radius:var(--radius-xs);color:var(--text-strong);
  transition:var(--transition-colors);
}
.otp__box:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring-accent);}
.otp__box[data-filled="true"]{border-color:var(--border-strong);}

/* ============================================================ AUTH PAGE */
.auth{min-height:100vh;display:grid;place-items:center;padding:var(--space-6);position:relative;overflow:hidden;}
.auth__bg{position:absolute;inset:0;z-index:0;background:var(--grad-hero);}
.auth__bg::after{content:"";position:absolute;inset:0;
  background:radial-gradient(closest-side at 50% 30%,rgba(194,160,82,0.10),transparent 60%);}
.auth__card{
  position:relative;z-index:1;width:100%;max-width:440px;
  background:var(--surface-card);border:1px solid var(--border-subtle);
  border-radius:var(--radius-sm);padding:var(--space-8);
  box-shadow:var(--shadow-lg),var(--inset-hairline);
}
.auth__brand{display:flex;justify-content:center;margin-bottom:var(--space-7);}
.auth__title{font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:var(--text-h2);
  color:var(--text-strong);text-align:center;letter-spacing:var(--tracking-tight);}
.auth__subtitle{text-align:center;color:var(--text-tertiary);font-size:var(--text-sm);margin-top:var(--space-3);margin-bottom:var(--space-7);text-wrap:pretty;}
.auth__lang{position:absolute;top:var(--space-5);right:var(--space-5);z-index:2;}
.auth__demo{margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--border-subtle);
  font-size:var(--text-xs);color:var(--text-tertiary);text-align:center;line-height:var(--leading-normal);}
.auth__register{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--text-tertiary);text-align:center;}
.text-link{color:var(--accent);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px;transition:var(--transition-colors);}
.text-link:hover{color:var(--accent-hover);}
.auth__alt{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-5);font-size:var(--text-sm);}
.link-ghost{color:var(--text-tertiary);cursor:pointer;transition:var(--transition-colors);background:none;border:none;font-size:var(--text-sm);}
.link-ghost:hover{color:var(--accent-hover);}
.link-ghost[disabled]{opacity:.5;cursor:not-allowed;}

/* ============================================================ DASHBOARD SHELL */
.app{min-height:100vh;display:flex;flex-direction:column;}
.app-header{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;
  min-height:var(--nav-h);padding-inline:var(--gutter);padding-top:env(safe-area-inset-top,0px);background:rgba(8,8,9,0.82);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border-subtle);}
.app-header__right{display:flex;align-items:center;gap:var(--space-5);}
/* complete brand lockup, scaled to sit cleanly in the 72px app bar */
.app-header .logo__mark{font-size:1.5rem;}
.app-header .logo__name{font-size:0.48rem;line-height:1.38;letter-spacing:0.18em;}
.app-header .logo__rule{min-height:1.5em;}
.app-header .logo__sub{font-size:0.48rem;letter-spacing:0.26em;margin-top:var(--space-1);}
#logoutBtn{display:inline-flex;align-items:center;gap:var(--space-2);}
#logoutBtn .ico--logout{display:none;width:18px;height:18px;}   /* desktop: text label; mobile flips to icon */
/* section transition — also gives the "slide" feel when swiping between pages on mobile */
@keyframes pageIn{from{opacity:0;transform:translateX(14px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion:no-preference){
  [data-page-panel]:not([hidden]){animation:pageIn 220ms var(--ease-out);}
}
.app-tabs{display:flex;gap:var(--space-2);padding-inline:var(--gutter);border-bottom:1px solid var(--border-subtle);
  background:var(--surface-base);position:sticky;top:var(--nav-h);z-index:30;}
.app-tab{
  font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-xs);
  letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-tertiary);
  background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;
  padding:var(--space-5) var(--space-4);transition:var(--transition-colors);
}
.app-tab:hover{color:var(--text-secondary);}
.app-tab[aria-selected="true"]{color:var(--text-strong);border-bottom-color:var(--accent);}
.app-main{flex:1;padding-block:var(--space-11) var(--space-11);}
.page-head{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-8);}
/* performance has no h1 (label comes from the tab) — give the account eyebrow room below the sticky tabs */
#page-performance .page-head{margin-top:var(--space-4);margin-bottom:var(--space-6);}
.page-title{font-family:var(--font-portal-display,var(--font-display));font-weight:var(--portal-display-weight,400);
  font-size:clamp(2rem,1.4rem + 1.8vw,2.9rem);line-height:1.04;
  color:var(--text-strong);letter-spacing:var(--portal-display-tracking,-0.01em);}
/* view-switch toggle anchored to the top-right corner of the graph panel */
.perf-panel{position:relative;}
.perf-panel__bar{display:flex;justify-content:flex-end;margin-bottom:var(--space-5);}

/* ---- Sub-tabs (segmented) ---- */
.subtabs{display:inline-flex;border:1px solid var(--border-subtle);border-radius:var(--radius-pill);overflow:hidden;}
.perf-panel__bar .subtabs{margin-bottom:0;}
.subtab{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-xs);
  letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-tertiary);white-space:nowrap;
  background:none;border:none;cursor:pointer;padding:var(--space-3) var(--space-5);transition:var(--transition-colors);}
.subtab[aria-selected="true"]{background:var(--surface-overlay);color:var(--text-strong);}

/* ---- KPI / Performance hero figure ---- */
.perf-hero{margin:var(--space-6) 0 var(--space-7);}
.perf-hero[hidden]{display:none;}
/* monthly table sits flush inside the panel (panel already provides the frame) */
.perf-panel .monthly{overflow-x:auto;margin:0;}
.perf-panel .monthly-tbl{min-width:680px;}
.perf-hero__label{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-xs);
  letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-secondary);margin-bottom:var(--space-4);
  display:inline-flex;align-items:center;gap:var(--space-3);}
.perf-hero__label::before{content:"";width:24px;height:1px;background:var(--accent);}
.perf-hero__figure{display:flex;align-items:baseline;gap:var(--space-5);flex-wrap:wrap;}
.perf-hero__value{font-family:var(--font-portal-display,var(--font-display));font-weight:var(--portal-display-weight,400);
  font-size:clamp(3.4rem,2rem + 6vw,6rem);line-height:0.9;letter-spacing:-0.02em;
  color:var(--text-strong);font-variant-numeric:tabular-nums;}
.perf-hero__value.is-up{color:var(--signal-up);}
.perf-hero__value.is-down{color:var(--signal-down);}
.perf-hero__trend{display:inline-flex;align-items:center;gap:0.4em;white-space:nowrap;font-family:var(--font-label);font-weight:var(--weight-medium);
  font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;
  color:var(--signal-up);border:1px solid rgba(95,163,122,0.4);background:rgba(95,163,122,0.10);
  border-radius:var(--radius-pill);padding:0.35em 0.8em;}
.perf-hero__trend svg{width:13px;height:13px;}
.perf-hero__meta{margin-top:var(--space-5);display:flex;align-items:center;gap:var(--space-4);
  font-size:var(--text-sm);color:var(--text-tertiary);flex-wrap:wrap;}
.perf-hero__meta .dot{width:3px;height:3px;border-radius:50%;background:var(--text-disabled);}
/* legacy kpi (unused now, kept harmless) */
.kpi{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-7);}
.kpi__label{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-label);
  text-transform:uppercase;color:var(--text-secondary);}
.kpi__value{font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:clamp(2.4rem,1.5rem+3vw,3.6rem);
  letter-spacing:var(--tracking-tight);line-height:1;color:var(--text-strong);font-variant-numeric:tabular-nums;}
.kpi__value.is-up{color:var(--signal-up);} .kpi__value.is-down{color:var(--signal-down);}
.kpi__meta{display:flex;align-items:center;gap:var(--space-4);font-size:var(--text-sm);color:var(--text-tertiary);}

/* ---- KPI row (NAV per unit) — 4-up, hairline-separated ---- */
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border-subtle);
  border:1px solid var(--border-subtle);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:var(--space-6);
  box-shadow:var(--inset-hairline);}
.kpi-cell{background:var(--surface-card);padding:var(--space-5) var(--space-5) var(--space-5);display:flex;flex-direction:column;gap:var(--space-3);}
.kpi-cell__label{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-2xs);
  letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-tertiary);}
.kpi-cell__val{font-family:var(--font-portal-display,var(--font-display));font-weight:var(--portal-display-weight,600);
  font-size:clamp(1.7rem,1.1rem + 1.4vw,2.3rem);line-height:1;letter-spacing:-0.01em;
  color:var(--text-strong);font-variant-numeric:tabular-nums;}
.kpi-cell__val--gold{color:var(--accent);}
.kpi-cell__val--sm{font-size:clamp(1.3rem,1rem + 0.9vw,1.6rem);}
.kpi-cell__val.is-up{color:var(--signal-up);} .kpi-cell__val.is-down{color:var(--signal-down);}
.kpi-cell__sub{font-size:var(--text-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums;}
.kpi-cell__sub.is-up{color:var(--signal-up);} .kpi-cell__sub.is-down{color:var(--signal-down);}

/* ---- Timezone control (dashboard header) ---- */
.tz{display:inline-flex;align-items:center;gap:var(--space-2);border:1px solid var(--border-subtle);
  border-radius:var(--radius-pill);padding:0 var(--space-3) 0 var(--space-4);max-width:230px;
  transition:var(--transition-colors);}
.tz:hover{border-color:var(--border-strong);}
.tz:focus-within{border-color:var(--accent);box-shadow:var(--ring-accent);}
.tz__ico{width:15px;height:15px;color:var(--text-tertiary);flex:0 0 auto;}
.tz__select{appearance:none;-webkit-appearance:none;background:transparent;border:none;outline:none;cursor:pointer;
  font-family:var(--font-label);font-size:var(--text-2xs);letter-spacing:var(--tracking-wide);color:var(--text-secondary);
  padding:var(--space-2) var(--space-2) var(--space-2) 0;max-width:185px;text-overflow:ellipsis;}
.tz__select:hover{color:var(--text-strong);}
.tz__select option{background:var(--surface-overlay);color:var(--text-strong);}

/* ---- Chart meta / legend (NAV panel) ---- */
.chart-meta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  margin:0 var(--space-1) var(--space-5);flex-wrap:wrap;}
.chart-meta__title{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-xs);
  letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-tertiary);}
.legend{display:flex;align-items:center;gap:var(--space-5);font-size:var(--text-xs);color:var(--text-tertiary);flex-wrap:wrap;}
.legend--note{font-family:var(--font-label);letter-spacing:var(--tracking-wide);}
.legend__item{display:inline-flex;align-items:center;gap:var(--space-2);}
.legend__dot{width:9px;height:9px;border-radius:50%;display:inline-block;}
.legend__dot--gold{background:var(--accent);}
.legend__dot--up{background:var(--signal-up);}
.legend__dot--down{background:var(--signal-down);}
/* cashflow markers on the NAV line */
.chart__marker-line{stroke-width:1;stroke-opacity:0.28;stroke-dasharray:3 3;pointer-events:none;}
.chart__marker-dot{stroke:var(--surface-card);stroke-width:1.6;cursor:pointer;pointer-events:all;transition:r var(--dur-fast) var(--ease-out);}
.chart__marker-dot:hover{r:6.5;}

/* ---- Panel / card ---- */
.panel{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);
  box-shadow:var(--inset-hairline);padding:var(--space-6);}

/* ---- Chart ---- */
.chart{width:100%;}
.chart svg{width:100%;height:auto;display:block;}
.chart__grid line{stroke:var(--border-subtle);stroke-width:1;}
.chart__zero{stroke:var(--border-strong);stroke-dasharray:3 3;}
.chart__line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;}
.chart__area{fill:url(#aitAreaGrad);}
.chart__axis{fill:var(--text-tertiary);font-family:var(--font-mono);font-size:11px;}
.chart__dot{fill:var(--accent);stroke:var(--surface-card);stroke-width:2;}
.chart__cursor{stroke:var(--border-strong);stroke-width:1;}
.chart-tip{position:absolute;pointer-events:none;background:var(--surface-overlay);border:1px solid var(--border-strong);
  border-radius:var(--radius-xs);padding:var(--space-2) var(--space-3);font-size:var(--text-xs);
  color:var(--text-strong);white-space:nowrap;box-shadow:var(--shadow-md);transform:translate(-50%,-130%);opacity:0;transition:opacity var(--dur-fast);}
.chart-tip .tip-date{color:var(--text-tertiary);font-family:var(--font-mono);}

/* ============================================================ TABLES */
.table-wrap{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-card);}
table.data{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;}
table.data th{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-2xs);
  letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-tertiary);
  text-align:left;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle);background:var(--surface-raised);}
table.data td{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle);
  font-size:var(--text-base);color:var(--text-body);}
table.data tbody tr:last-child td{border-bottom:none;}
table.data tbody tr{transition:background var(--dur-fast);}
table.data tbody tr:hover{background:var(--surface-overlay);}
.num{text-align:right;font-variant-numeric:tabular-nums;}
.amount.is-pos{color:var(--signal-up);} .amount.is-neg{color:var(--signal-down);}

/* ---- Monthly returns table ---- */
.monthly{overflow-x:auto;}
table.monthly-tbl{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:760px;}
table.monthly-tbl th,table.monthly-tbl td{padding:var(--space-3) var(--space-3);text-align:right;font-size:var(--text-sm);
  border-bottom:1px solid var(--border-subtle);}
table.monthly-tbl th{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-2xs);
  letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-tertiary);}
table.monthly-tbl th:first-child,table.monthly-tbl td:first-child{text-align:left;color:var(--text-strong);font-family:var(--font-label);}
table.monthly-tbl td.cell-up{color:var(--signal-up);} table.monthly-tbl td.cell-down{color:var(--signal-down);}
table.monthly-tbl td.cell-empty{color:var(--text-disabled);}
table.monthly-tbl td.ytd,table.monthly-tbl th.ytd{border-left:1px solid var(--border-subtle);color:var(--text-strong);font-weight:var(--weight-medium);}

/* ---- Statements: initial capital line ---- */
.stmt-initial{display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4);}
.stmt-initial__label{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-accent);}
.lang-zh .stmt-initial__label{font-size:var(--text-xs);letter-spacing:0.12em;}
.stmt-initial__val{font-size:var(--text-lg);color:var(--text-strong);font-weight:var(--weight-medium);}
.stmt-initial__asof{font-size:var(--text-sm);color:var(--text-tertiary);}

/* ---- Filter bar ---- */
.filter-bar{display:flex;align-items:flex-end;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-5);}
.filter-bar .field{gap:var(--space-2);}
.input--date{padding:var(--space-3) var(--space-4);color-scheme:dark;max-width:180px;}
[data-theme] .input--date{color-scheme:dark;}

/* ---- Pagination ---- */
.pager{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-top:var(--space-5);}
.pager__info{font-size:var(--text-sm);color:var(--text-tertiary);font-variant-numeric:tabular-nums;}
.pager__btns{display:flex;gap:var(--space-3);}
/* equal-sized bold arrow buttons */
.pager-arrow{width:44px;height:44px;flex:0 0 44px;display:inline-flex;align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--border-strong);border-radius:var(--radius-pill);
  color:var(--text-strong);cursor:pointer;transition:var(--transition-colors),transform var(--dur-fast) var(--ease-out);}
.pager-arrow .ico{width:20px;height:20px;}
.pager-arrow:hover{border-color:var(--accent);color:var(--accent-hover);}
.pager-arrow:active{transform:translateY(0.5px);}
.pager-arrow[disabled]{opacity:.35;cursor:not-allowed;border-color:var(--border-subtle);color:var(--text-tertiary);}
.pager-arrow[disabled]:hover{border-color:var(--border-subtle);color:var(--text-tertiary);}
.empty-state{padding:var(--space-10) var(--space-6);text-align:center;color:var(--text-tertiary);}

/* ---- Note pill ---- */
.note-soon{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);
  color:var(--text-tertiary);font-family:var(--font-label);letter-spacing:var(--tracking-wide);}
.note-soon::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--gold-600);}

/* ============================================================ MOBILE TAB BAR (portal) */
.tabbar{display:none;position:fixed;inset:auto 0 0 0;z-index:40;background:rgba(8,8,9,0.92);
  backdrop-filter:blur(14px);border-top:1px solid var(--border-subtle);}
.tabbar__btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:none;
  cursor:pointer;padding:var(--space-3) 0 calc(var(--space-3) + env(safe-area-inset-bottom));color:var(--text-tertiary);transition:var(--transition-colors);}
.tabbar__btn .ico{width:22px;height:22px;}
.tabbar__btn span{font-family:var(--font-label);font-size:var(--text-2xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;}
.tabbar__btn[aria-selected="true"]{color:var(--accent);}

/* ============================================================ ANIMATION */
@media (prefers-reduced-motion:no-preference){
  .reveal{opacity:0;transform:translateY(16px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out);}
  .reveal.is-in{opacity:1;transform:none;}
}

/* ============================================================ RESPONSIVE */
/* landing nav collapses to a full-screen burger menu on tablet + mobile */
@media (max-width:980px){
  .nav__links{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:var(--space-6);padding:calc(env(safe-area-inset-top,0px) + var(--space-9)) var(--gutter) var(--space-9);
    background:#0a0a0b;
    opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-out),visibility 0s linear var(--dur-base);}
  .nav.is-open .nav__links{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--dur-base) var(--ease-out),visibility 0s;}
  .nav__link{font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:var(--text-h2);
    letter-spacing:var(--tracking-tight);text-transform:none;color:var(--text-strong);padding-block:var(--space-2);}
  .nav__link:hover{color:var(--accent);}
  .nav__cta-mobile{display:inline-flex;margin-top:var(--space-5);}
  .nav__toggle{display:inline-flex;}
  /* compact top bar: AIT mark only; top-bar login lives in the menu */
  .nav .logo__name{display:none;}
  .nav__right .btn--secondary{display:none;}
  /* the open overlay is position:fixed; .nav's backdrop-filter would make .nav the
     containing block (trapping the overlay inside the ~64px bar). Drop it while open
     so the full-screen overlay positions against the viewport and truly covers. */
  .nav.is-open{backdrop-filter:none;-webkit-backdrop-filter:none;}
}
@media (max-width:980px){
  .cap-grid{grid-template-columns:repeat(2,1fr);}
  .cap-col{border-right:none;border-bottom:1px solid var(--border-subtle);padding:var(--space-6) var(--space-5);}
  .cap-col:nth-child(odd){border-right:1px solid var(--border-subtle);}
  .process{grid-template-columns:repeat(2,1fr);gap:var(--space-7) var(--space-5);}
  .process__track,.process__pulse{display:none;}
  .process-step__chevron{display:none;}
  .about__grid{grid-template-columns:1fr;gap:var(--space-5);}
  .contact__grid{grid-template-columns:1fr;}
  .enquiry__row{grid-template-columns:1fr;}
}
@media (max-width:760px){
  .hero__tower{left:34%;}
  .hero__bloom{opacity:0.7;}
  .hero__inner{max-width:100%;}
  .app-tabs{display:none;}
  .tabbar{display:flex;}
  .app-main{padding-bottom:calc(var(--space-11) + 64px);}
  .footer__top{flex-direction:column;}
  .otp{gap:var(--space-2);}
  .kpi-row{grid-template-columns:repeat(2,1fr);}
  .tz{flex:0 1 132px;min-width:44px;max-width:150px;padding-left:var(--space-3);}
  .tz__select{max-width:104px;min-width:0;}
  .app-header__right{gap:var(--space-3);min-width:0;}
  /* mobile: logout becomes a compact icon button (was clipped off the cramped header) */
  #logoutBtn{flex:0 0 auto;padding-inline:var(--space-3);}
  #logoutBtn .ico--logout{display:inline-flex;}
  #logoutBtn .logout__label{display:none;}
  .chart-meta{margin-bottom:var(--space-4);}
  /* dashboard header: compact to AIT mark on mobile */
  .app-header .logo__name,.app-header .logo__sub{display:none;}
  .app-header .logo{gap:var(--space-2);}
  .app-header{gap:var(--space-3);}
  .page-title{font-size:clamp(1.7rem,1.3rem + 1.6vw,2.2rem);}
  /* statements table scrolls horizontally on small screens */
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  #stmtTable{min-width:640px;}
  .app-main{padding-bottom:calc(var(--space-11) + 64px + env(safe-area-inset-bottom,0px));}
}
@media (max-width:560px){
  .cap-grid{grid-template-columns:1fr;}
  .cap-col,.cap-col:nth-child(odd){border-right:none;}
  .process{grid-template-columns:1fr;}
  .auth__card{padding:var(--space-6);}
}

/* ============================================================
   DASHBOARD — WARM / LIGHT THEME
   公开透明 (frosted translucency) · 安全稳定 (guilloché security
   engraving) · 简洁明了 (clean, airy, light). Scoped to the portal
   dashboard via <body data-theme="paper">; landing & login stay dark.
   ============================================================ */
.app{position:relative;z-index:0;}
/* atmosphere backdrop — DARK by default, WARM under [data-theme="paper"] */
.app-bg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;transition:opacity var(--dur-slow) var(--ease-out);
  perspective:1400px;perspective-origin:50% 42%;
  background:
    radial-gradient(120% 85% at 82% -8%, rgba(194,160,82,0.12), transparent 52%),
    radial-gradient(95% 80% at 6% 110%, rgba(108,143,184,0.07), transparent 55%),
    linear-gradient(180deg,#0d0d10 0%,#08080a 60%,#050506 100%);}
[data-theme="paper"] .app-bg{
  background:
    radial-gradient(120% 85% at 82% -8%, rgba(194,160,82,0.13), transparent 52%),
    radial-gradient(95% 80% at 6% 110%, rgba(220,194,136,0.12), transparent 55%),
    linear-gradient(180deg,#FCFBF7 0%,#F6F4EF 56%,#EFECE3 100%);}
/* ---- 3D interactive guilloché engraving ---- */
.engrave{position:absolute;width:760px;height:760px;max-width:92vw;max-height:92vw;
  transform-style:preserve-3d;transition:top var(--dur-slow) var(--ease-out),right var(--dur-slow) var(--ease-out),left var(--dur-slow) var(--ease-out),bottom var(--dur-slow) var(--ease-out),width var(--dur-slow) var(--ease-out),height var(--dur-slow) var(--ease-out),opacity var(--dur-slow) var(--ease-out);}
.engrave__tilt{position:absolute;inset:0;transform-style:preserve-3d;
  transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));will-change:transform;
  transition:transform 320ms var(--ease-out);}
.engrave__spin{position:absolute;inset:0;transform-style:preserve-3d;}
.engrave__layer{position:absolute;inset:0;width:100%;height:100%;overflow:visible;}
.engrave__layer--back{transform:translateZ(-70px) scale(1.06);opacity:0.7;}
.engrave__layer--mid{transform:translateZ(0);}
.engrave__layer--front{transform:translateZ(60px) scale(0.78);opacity:0.92;}
.eng-stroke{stroke:var(--engrave-stroke,rgba(128,99,40,0.09));fill:none;}
.eng-bold{stroke:var(--engrave-stroke-bold,rgba(128,99,40,0.16));}
@media (prefers-reduced-motion:no-preference){
  .engrave__spin{animation:engSpin 90s linear infinite;}
  .engrave__layer--front{animation:engSpinRev 64s linear infinite;}
  .engrave__layer--back{animation:engSpin 120s linear infinite;}
}
@keyframes engSpin{to{transform:rotate(360deg);}}
@keyframes engSpinRev{from{transform:translateZ(60px) scale(0.78) rotate(0);}to{transform:translateZ(60px) scale(0.78) rotate(-360deg);}}

/* three relocatable placements (安全稳定) */
.engrave{top:-160px;right:-200px;}                 /* default = corner */
body[data-engrave-pos="corner"] .engrave{top:-160px;right:-200px;left:auto;bottom:auto;width:760px;height:760px;}
body[data-engrave-pos="center"] .engrave{top:46%;left:50%;right:auto;bottom:auto;width:1000px;height:1000px;transform:translate(-50%,-50%);}
body[data-engrave-pos="center"] .engrave__tilt{transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));}
body[data-engrave-pos="edge"] .engrave{top:auto;bottom:-200px;left:-220px;right:auto;width:820px;height:820px;}

/* engraving intensity (安全稳定) */
body{--engrave-stroke:rgba(194,160,82,0.12);--engrave-stroke-bold:rgba(194,160,82,0.22);}
body[data-theme="paper"]{--engrave-stroke:rgba(128,99,40,0.10);--engrave-stroke-bold:rgba(128,99,40,0.18);}
body[data-engrave="pronounced"]{--engrave-stroke:rgba(194,160,82,0.26);--engrave-stroke-bold:rgba(212,180,108,0.42);}
body[data-engrave="pronounced"][data-theme="paper"]{--engrave-stroke:rgba(128,99,40,0.22);--engrave-stroke-bold:rgba(128,99,40,0.40);}
body[data-engrave="center"] .engrave,body[data-engrave-pos="center"] .engrave{}
body[data-engrave="off"] .engrave{opacity:0;}
.app-header,.app-tabs,.app-main,.tabbar{position:relative;}
.app-main{z-index:1;}
[data-theme="paper"] .app-header{background:rgba(252,251,247,0.74);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-bottom:1px solid var(--border-subtle);box-shadow:0 1px 0 rgba(194,160,82,0.22);}
[data-theme="paper"] .app-tabs{background:rgba(246,244,239,0.82);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--border-subtle);}
[data-theme="paper"] .tabbar{background:rgba(252,251,247,0.92);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--border-subtle);}
[data-theme="paper"] .logo__name{color:var(--text-secondary);}
[data-theme="paper"] .input--date{color-scheme:light;}
[data-theme="paper"] .panel,[data-theme="paper"] .table-wrap,[data-theme="paper"] .contact-card{box-shadow:var(--shadow-sm);}
[data-theme="paper"] table.data tbody tr:hover{background:var(--paper-100);}
/* display personality (简洁明了) — editorial serif vs technical sans for portal headings & the hero figure */
body[data-display="editorial"]{--font-portal-display:'Instrument Serif',Georgia,'Times New Roman',serif;--portal-display-weight:400;--portal-display-tracking:0em;}
body[data-display="technical"]{--font-portal-display:var(--font-display);--portal-display-weight:600;--portal-display-tracking:-0.02em;}
@media (max-width:760px){
  .engrave{width:520px;height:520px;}
  body[data-engrave-pos="corner"] .engrave{top:-100px;right:-200px;width:520px;height:520px;}
  body[data-engrave-pos="center"] .engrave{width:680px;height:680px;}
  body[data-engrave-pos="edge"] .engrave{bottom:-200px;left:-200px;width:600px;height:600px;}
}

/* ============================================================
   TWEAKS PANEL (vanilla; mirrors host edit-mode protocol)
   Hidden until the host activates edit mode.
   ============================================================ */
.tweaks{position:fixed;top:84px;right:20px;z-index:90;width:288px;max-width:calc(100vw - 32px);
  background:rgba(252,251,247,0.86);backdrop-filter:blur(20px) saturate(1.1);-webkit-backdrop-filter:blur(20px) saturate(1.1);
  border:1px solid var(--paper-200);border-radius:var(--radius-lg);
  box-shadow:0 24px 70px rgba(40,32,16,0.22),inset 0 1px 0 rgba(255,255,255,0.5);
  color:#2C2C30;font-family:var(--font-sans);overflow:hidden;}
.tweaks[hidden]{display:none;}
.tweaks__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--paper-200);cursor:grab;}
.tweaks__bar:active{cursor:grabbing;}
.tweaks__title{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-xs);
  letter-spacing:var(--tracking-label);text-transform:uppercase;color:#54545B;}
.tweaks__close{background:none;border:none;cursor:pointer;color:#7A746A;line-height:0;padding:4px;border-radius:var(--radius-xs);
  transition:var(--transition-colors);}
.tweaks__close:hover{color:#2C2C30;background:var(--paper-100);}
.tweaks__close svg{width:16px;height:16px;}
.tweaks__body{padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-6);
  max-height:min(70vh,560px);overflow-y:auto;}
.tweak{display:flex;flex-direction:column;gap:var(--space-3);}
.tweak__label{font-family:var(--font-label);font-weight:var(--weight-medium);font-size:var(--text-xs);
  letter-spacing:0.06em;text-transform:uppercase;color:#54545B;}
.tweak__hint{font-size:var(--text-xs);color:#9A9388;margin-top:-2px;line-height:1.4;}
.seg{display:flex;background:var(--paper-100);border:1px solid var(--paper-200);border-radius:var(--radius-sm);padding:3px;gap:2px;}
.seg__btn{flex:1;border:none;background:none;cursor:pointer;border-radius:calc(var(--radius-sm) - 3px);
  padding:var(--space-3) var(--space-2);font-family:var(--font-label);font-weight:var(--weight-medium);
  font-size:var(--text-xs);letter-spacing:0.04em;color:#7A746A;transition:var(--transition-colors),box-shadow var(--dur-fast);}
.seg__btn:hover{color:#2C2C30;}
.seg__btn[aria-pressed="true"]{background:var(--paper-0);color:#1F1B12;box-shadow:var(--shadow-sm);}
.seg__btn[aria-pressed="true"].is-gold{color:var(--gold-700);}
