/* NG design system v2. Render-blocking on public documents only; fixed-palette
   consoles and games deliberately do not load this stylesheet.
   Layout belongs to components; palettes never change component dimensions. */
:root {
  --font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  --font-xs:12px;--font-sm:13px;--font-body:14px;--font-md:16px;--font-title:18px;--font-lg:20px;--font-xl:24px;
  --spacing-4:4px;--spacing-8:8px;--spacing-12:12px;--spacing-16:16px;--spacing-20:20px;--spacing-24:24px;--spacing-32:32px;
  --radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-dialog:20px;
  --shadow-sm:0 1px 3px rgb(20 35 60 / .05);--shadow-md:0 8px 24px rgb(20 35 60 / .1);--shadow-dialog:0 20px 60px rgb(0 10 30 / .2);
  --duration-press:120ms;--duration-control:180ms;--duration-panel:240ms;
  --content-max:1180px;--admin-content-max:1440px;--control-height:44px;
  --color-primary:var(--admin-accent,var(--ng-accent,#245fce));
  --color-secondary:var(--admin-accent-soft,var(--ng-soft,#edf3fb));
  --color-bg:var(--admin-page,var(--ng-page,#f5f7fb));
  --color-surface:var(--admin-surface,var(--ng-panel-solid,#fff));
  --color-border:var(--admin-border,var(--ng-line,#dce3ef));
  --color-text:var(--admin-text,var(--ng-ink,#172438));
  --color-muted:var(--admin-text-soft,var(--ng-muted,#52647d));
  --color-on-primary:var(--admin-on-accent,var(--ng-on-accent,#fff));
  --color-success:#087557;--color-warning:#865c0a;--color-error:#b32943;--color-info:#245fce;
}
html[data-theme="dark"] {--shadow-sm:0 1px 3px rgb(0 0 0 / .14);--shadow-md:0 8px 24px rgb(0 0 0 / .2);--shadow-dialog:0 20px 60px rgb(0 0 0 / .4);--color-success:#6dd2ae;--color-warning:#e8be70;--color-error:#ff8d9f;--color-info:#97b8ff;}
html[data-ui-theme][data-theme] {
  --ng-accent:#245fce;--ng-accent-2:#16828a;--ng-accent-rgb:36,95,206;--ng-on-accent:#fff;
  --ng-page:#f5f7fb;--ng-page-deep:#edf1f7;--ng-panel:#fff;--ng-panel-solid:#fff;--ng-ink:#172438;--ng-muted:#52647d;--ng-line:#dce3ef;
  --ng-theme-color:var(--ng-page);--ng-radius:var(--radius-lg);--ng-radius-small:var(--radius-md);--ng-control-radius:var(--radius-md);
  --ng-shadow:var(--shadow-sm);--ng-blur:0px;--ng-button:var(--ng-accent);--ng-modal-head:var(--ng-accent);
  --ng-button-shadow:none;--ng-button-decoration:none;--ng-button-edge:var(--ng-line);--ng-float-shadow:var(--shadow-md);--ng-float-decoration:none;
  --ng-soft:color-mix(in srgb,var(--ng-accent) 7%,var(--ng-panel-solid));--ng-control:var(--ng-soft);--ng-control-hover:color-mix(in srgb,var(--ng-accent) 13%,var(--ng-panel-solid));
  --ng-success:var(--color-success);--ng-warning:var(--color-warning);--ng-danger:var(--color-error);--ng-focus-ring:color-mix(in srgb,var(--ng-accent) 25%,transparent);
  --ng-shell-action-text:var(--ng-on-accent);--ng-shell-content-max:var(--content-max);--ng-shell-radius:var(--radius-lg);--ng-shell-radius-small:var(--radius-md);
  --ng-shell-shadow:var(--shadow-sm);--ng-shell-card-bg:var(--ng-panel-solid);--ng-shell-card-decor:none;
  --ui-shadow-card:var(--shadow-sm);--ui-shadow-hover:var(--shadow-md);--ui-content-max:var(--content-max);--ui-section-max:var(--content-max);
  --ui-card-radius:var(--radius-lg);--ui-control-radius:var(--radius-md);--ui-font-sans:var(--font-sans);
  --primary:var(--ng-accent);--accent:var(--ng-accent-2);--card:var(--ng-panel-solid);--text:var(--ng-ink);--muted:var(--ng-muted);--line:var(--ng-line);--border:var(--ng-line);
}
html[data-ui-theme][data-theme="dark"] {--ng-accent:#94b7ff;--ng-accent-2:#74cacc;--ng-accent-rgb:148,183,255;--ng-on-accent:#142039;--ng-page:#101827;--ng-page-deep:#0b1320;--ng-panel:#192538;--ng-panel-solid:#192538;--ng-ink:#edf2fa;--ng-muted:#b0bfd4;--ng-line:#34455f;}
html[data-ui-theme="cosmic"][data-theme="light"] {--ng-accent:#6550ce;--ng-accent-2:#337fab;--ng-accent-rgb:101,80,206;--ng-page:#f6f5fc;--ng-page-deep:#eeecf8;--ng-ink:#252443;--ng-muted:#625d7d;--ng-line:#ddd9ee;}
html[data-ui-theme="cosmic"][data-theme="dark"] {--ng-accent:#b5a6ff;--ng-accent-2:#8bcde6;--ng-accent-rgb:181,166,255;--ng-page:#151529;--ng-page-deep:#101021;--ng-panel:#22223d;--ng-panel-solid:#22223d;--ng-ink:#f1eefc;--ng-muted:#c0b9db;--ng-line:#41405f;}
html[data-ui-theme="aurora"][data-theme="light"] {--ng-accent:#137866;--ng-accent-2:#5e69aa;--ng-accent-rgb:19,120,102;--ng-page:#f2f8f6;--ng-page-deep:#e6f1ed;--ng-ink:#183830;--ng-muted:#4e6a63;--ng-line:#d3e3dd;}
html[data-ui-theme="aurora"][data-theme="dark"] {--ng-accent:#8dd8bf;--ng-accent-2:#b1baf1;--ng-accent-rgb:141,216,191;--ng-page:#10221f;--ng-page-deep:#0c1c1a;--ng-panel:#1b342e;--ng-panel-solid:#1b342e;--ng-ink:#eaf7f2;--ng-muted:#accdc1;--ng-line:#34564b;}
html[data-ui-theme="particles"][data-theme="light"] {--ng-accent:#126c91;--ng-accent-2:#267f77;--ng-accent-rgb:18,108,145;--ng-page:#f1f7fa;--ng-page-deep:#e5eef3;--ng-ink:#183445;--ng-muted:#526a79;--ng-line:#d1e0e8;}
html[data-ui-theme="particles"][data-theme="dark"] {--ng-accent:#8bcfe9;--ng-accent-2:#87d6bf;--ng-accent-rgb:139,207,233;--ng-page:#11212b;--ng-page-deep:#0c1a22;--ng-panel:#1b303d;--ng-panel-solid:#1b303d;--ng-ink:#e7f3fa;--ng-muted:#abc6d5;--ng-line:#355262;}
html[data-ui-theme="esports"][data-theme="light"] {--ng-accent:#b02652;--ng-accent-2:#6354a5;--ng-accent-rgb:176,38,82;--ng-page:#fcf5f8;--ng-page-deep:#f3e9ef;--ng-ink:#392331;--ng-muted:#76576a;--ng-line:#ead5e0;}
html[data-ui-theme="esports"][data-theme="dark"] {--ng-accent:#f3a1be;--ng-accent-2:#c6b3f0;--ng-accent-rgb:243,161,190;--ng-page:#261823;--ng-page-deep:#1d111a;--ng-panel:#382535;--ng-panel-solid:#382535;--ng-ink:#f9edf5;--ng-muted:#d5b8ca;--ng-line:#5a3d51;}
html[data-ui-theme="arcade"][data-theme="light"] {--ng-accent:#7149ac;--ng-accent-2:#a26334;--ng-accent-rgb:113,73,172;--ng-page:#f9f5fc;--ng-page-deep:#f0e9f7;--ng-ink:#362743;--ng-muted:#6c587b;--ng-line:#e4d8ed;}
html[data-ui-theme="arcade"][data-theme="dark"] {--ng-accent:#c9a8ed;--ng-accent-2:#e7bd93;--ng-accent-rgb:201,168,237;--ng-page:#221a2c;--ng-page-deep:#191320;--ng-panel:#33283f;--ng-panel-solid:#33283f;--ng-ink:#f4eefb;--ng-muted:#cbbbdb;--ng-line:#514361;}
html[data-ui-theme="gold"][data-theme="light"] {--ng-accent:#806025;--ng-accent-2:#87724c;--ng-accent-rgb:128,96,37;--ng-page:#f9f7f2;--ng-page-deep:#f0ebe0;--ng-ink:#362e21;--ng-muted:#72634d;--ng-line:#e5ddcd;}
html[data-ui-theme="gold"][data-theme="dark"] {--ng-accent:#dfc18b;--ng-accent-2:#bdb598;--ng-accent-rgb:223,193,139;--ng-page:#221f18;--ng-page-deep:#19170f;--ng-panel:#332d22;--ng-panel-solid:#332d22;--ng-ink:#f6f0e4;--ng-muted:#cfc2a9;--ng-line:#554a37;}

/* Low-specificity shared controls; component geometry and game canvases stay local. */
body {font-family:var(--font-sans);font-synthesis:none;}
html[data-ui-theme][data-theme]:not([data-ui-layout="game"]) body {color:var(--color-text);background:var(--color-bg);}
:where(button,input,textarea,select) {font:inherit;}
:where(button,a,input,textarea,select,summary,[tabindex]):focus-visible {outline:2px solid var(--color-primary);outline-offset:3px;}
:where(input,textarea,select) {accent-color:var(--color-primary);}
:where(input,textarea)::placeholder {color:var(--color-muted);opacity:1;}
:where(button,a) {touch-action:manipulation;}
:where(button)[aria-busy="true"] {cursor:wait;}
:where(time,td,.stat-value,.ng-admin-stat strong) {font-variant-numeric:tabular-nums;}
:where(h1,h2,h3,p,td,th,label) {overflow-wrap:anywhere;}
:where(dialog,[role="dialog"]) {overscroll-behavior:contain;}
dialog[open],.ng-auth-card,.ng-confirm-card {max-height:calc(var(--ui-viewport-height,100dvh) - 24px);overflow-y:auto;}
