/* DREAM.ONE design-system tokens and base styles (from handoff/design-system). */
/* DREAM.ONE — colour. Values transcribed verbatim from the VI manual (标志标准色规范 / 标志辅助色规范). */
:root{
  /* Standard colours — 标志标准色 */
  --do-yellow:#FFCE42;   /* R255 G206 B66  · C0 M18 Y84 K0 */
  --do-orange:#FF9C3E;   /* R255 G156 B62  · C0 M46 Y84 K0 */
  --do-ember:#EF6B00;    /* R239 G107 B0   · C0 M75 Y100 K0 */

  /* Auxiliary colours — 标志辅助色 */
  --do-sky:#60DFF6;      /* R96 G223 B246  · C58 M0 Y9 K0 */
  --do-blue:#4887FF;     /* R72 G135 B255  · C72 M49 Y0 K0 */
  --do-indigo:#2F2D97;   /* R47 G45 B151   · C96 M98 Y0 K0 */
  --do-violet:#B300FA;   /* R179 G0 B250   · C49 M84 Y0 K0 */
  --do-green:#7BC80E;    /* R123 G200 B14  · C56 M0 Y100 K0 */
  --do-paper:#FFFDF3;    /* R255 G253 B243 · C0 M0 Y4 K0 */

  /* Neutrals — drawn from the manual's own drafting greys and the navy of its diagram arrows. */
  --do-ink:#01073F;
  --do-black:#000000;
  --do-grey-900:#16193A;
  --do-grey-700:#43465C;
  --do-grey-500:#767889;
  --do-grey-400:#AEAEAE;
  --do-grey-300:#D6D6D6;
  --do-grey-200:#EDEDED;
  --do-grey-100:#F6F5F0;
  --do-white:#FFFFFF;

  /* Brand gradients — the auxiliary graphics are filled with these, fading to transparent. */
  --do-gradient-sun:linear-gradient(135deg,var(--do-yellow) 0%,var(--do-orange) 48%,var(--do-ember) 100%);
  --do-gradient-ember:linear-gradient(135deg,var(--do-orange) 0%,var(--do-ember) 45%);
  --do-gradient-sky:linear-gradient(135deg,var(--do-sky) 0%,var(--do-blue) 100%);
  --do-gradient-fade-ember:linear-gradient(135deg,var(--do-orange) 0%,var(--do-ember) 45%,rgba(239,107,0,0) 100%);
  --do-gradient-fade-yellow:linear-gradient(135deg,var(--do-yellow) 0%,rgba(255,206,66,0) 100%);

  /* Semantic aliases */
  --surface-page:var(--do-paper);
  --surface-card:var(--do-white);
  --surface-sunken:var(--do-grey-100);
  --surface-inverse:var(--do-ink);
  --surface-brand:var(--do-ember);
  --surface-brand-soft:#FFF1DF;
  --surface-accent:var(--do-blue);

  --text-heading:var(--do-ink);
  --text-body:var(--do-grey-900);
  --text-muted:var(--do-grey-500);
  --text-inverse:var(--do-white);
  --text-brand:var(--do-ember);
  --text-link:var(--do-ember);
  --text-link-hover:#C85A00;

  --border-hairline:var(--do-grey-200);
  --border-default:var(--do-grey-300);
  --border-strong:var(--do-grey-400);
  --border-brand:var(--do-ember);
  --border-focus:var(--do-blue);

  --state-success:var(--do-green);
  --state-info:var(--do-blue);
  --state-warning:var(--do-yellow);
  --state-danger:#E23A2E;
}

/* DREAM.ONE — typography, on the Ant Design type system.
   Family, sizes, line-heights and weights follow Ant Design v5's seed tokens. On Apple devices
   `-apple-system` resolves to San Francisco and, for Chinese, to PingFang SC — the face the VI
   manual is set in — so the brand's own type appears wherever the OS provides it. */
:root{
  /* Ant Design v5 `fontFamily` / `fontFamilyCode` */
  --font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Noto Sans SC","Noto Sans",sans-serif;
  --font-mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;
  /* Brand display accent — slide numerals, eyebrows, figures. Never for body copy, and never for
     the wordmark, which is artwork (assets/wordmark.svg). */
  --font-display:"Jura",var(--font-sans);

  --weight-light:300;
  --weight-regular:400;
  --weight-medium:500;
  --weight-semibold:600;   /* Ant Design fontWeightStrong */
  --weight-bold:700;

  /* Ant Design size steps */
  --size-sm:12px;
  --size-base:14px;
  --size-lg:16px;
  --size-xl:20px;
  --size-heading-1:38px;
  --size-heading-2:30px;
  --size-heading-3:24px;
  --size-heading-4:20px;
  --size-heading-5:16px;

  /* Ant Design line heights */
  --leading-base:1.5714285714285714;
  --leading-lg:1.5;
  --leading-sm:1.6666666666666667;
  --leading-heading-1:1.2105263157894737;
  --leading-heading-2:1.2666666666666666;
  --leading-heading-3:1.3333333333333333;
  --leading-heading-4:1.4;
  --leading-heading-5:1.5;

  /* Brand display scale — presentation and hero type, outside the Ant Design UI scale. */
  --size-display-1:64px;
  --size-display-2:48px;
  --leading-tight:1.12;
  --leading-snug:1.3;
  --leading-normal:var(--leading-base);
  --leading-loose:1.85;   /* Chinese body copy in the manual sits loose */

  /* Aliases kept for the component API */
  --size-title-1:var(--size-heading-1);
  --size-title-2:var(--size-heading-2);
  --size-title-3:var(--size-heading-3);
  --size-body-lg:var(--size-lg);
  --size-body:var(--size-base);
  --size-body-sm:var(--size-sm);
  --size-caption:var(--size-sm);
  --size-micro:var(--size-sm);

  /* The wordmark and its English display relatives run wide and open. */
  --tracking-display:0.14em;
  --tracking-eyebrow:0.22em;
  --tracking-normal:0;
  --tracking-cjk:0.04em;

  --text-display-1:var(--weight-medium) var(--size-display-1)/var(--leading-tight) var(--font-display);
  --text-display-2:var(--weight-medium) var(--size-display-2)/var(--leading-tight) var(--font-display);
  --text-title-1:var(--weight-semibold) var(--size-heading-1)/var(--leading-heading-1) var(--font-sans);
  --text-title-2:var(--weight-semibold) var(--size-heading-2)/var(--leading-heading-2) var(--font-sans);
  --text-title-3:var(--weight-semibold) var(--size-heading-3)/var(--leading-heading-3) var(--font-sans);
  --text-title-4:var(--weight-semibold) var(--size-heading-4)/var(--leading-heading-4) var(--font-sans);
  --text-title-5:var(--weight-semibold) var(--size-heading-5)/var(--leading-heading-5) var(--font-sans);
  --text-body-lg:var(--weight-regular) var(--size-lg)/var(--leading-lg) var(--font-sans);
  --text-body:var(--weight-regular) var(--size-base)/var(--leading-base) var(--font-sans);
  --text-body-sm:var(--weight-regular) var(--size-sm)/var(--leading-sm) var(--font-sans);
  --text-caption:var(--weight-regular) var(--size-sm)/var(--leading-sm) var(--font-sans);
  --text-eyebrow:var(--weight-semibold) var(--size-sm)/1.2 var(--font-display);
}

/* DREAM.ONE — motion. Impossible-to-possible: things resolve, they do not bounce. */
:root{
  --ease-standard:cubic-bezier(.2,0,0,1); /* @kind other */
  --ease-out:cubic-bezier(.16,1,.3,1); /* @kind other */
  --ease-in:cubic-bezier(.7,0,.84,0); /* @kind other */
  --ease-inout:cubic-bezier(.65,0,.35,1); /* @kind other */
  --duration-instant:80ms; /* @kind other */
  --duration-fast:140ms; /* @kind other */
  --duration-base:220ms; /* @kind other */
  --duration-slow:400ms; /* @kind other */
  --duration-reveal:700ms; /* @kind other */
  --transition-control:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out);
}

/* DREAM.ONE — base element defaults. Kept deliberately small. */
*,*::before,*::after{box-sizing:border-box}
body{margin:0;font:var(--text-body);color:var(--text-body);background:var(--surface-page);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4,h5,h6{margin:0;color:var(--text-heading);text-wrap:balance}
p{margin:0;text-wrap:pretty}
a{color:var(--text-link);text-decoration:none;border-bottom:1px solid rgba(239,107,0,.35);transition:var(--transition-control)}
a:hover{color:var(--text-link-hover);border-bottom-color:currentColor}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}
:lang(zh),.do-cjk{letter-spacing:var(--tracking-cjk);line-height:var(--leading-loose)}
::selection{background:var(--do-yellow);color:var(--do-ink)}
