/* NCCK design tokens — PUBLIC-SITE-DESIGN-SPEC §1 (released and frozen by the S0 supervisor)
   Shared foundational resource: D1/D2 may only consume variables and must not redefine/override any token in this file.
   Prohibited items: gradients, purple, glow, dark mode, and Google Fonts.
   The only visible logo is the transparent PNG ncck-logo-option1-header(@2x).png (placeholder SVGs must not be visibly used). */
:root {
  /* Palette */
  --ncck-rail: #071b42;        /* Deep blue: client-area sidebar/dark footer region */
  --ncck-primary: #0f5cff;     /* Primary blue: primary buttons/links/selected state */
  --ncck-primary-hover: #0b49cc;
  --ncck-bg: #f5f7fa;          /* Light gray page background */
  --ncck-surface: #ffffff;     /* Card surface */
  --ncck-border: #e3e8ef;
  --ncck-text: #1a2333;
  --ncck-text-muted: #5b6b83;
  --ncck-accent-orange: #f7941d;  /* Brand K orange, for the logo/very sparse emphasis only */
  --ncck-success: #1a9e5c; --ncck-warning: #c98a06; --ncck-danger: #c93030;
  /* Geometry */
  --ncck-radius: 8px;          /* Default radius; small controls use 6px */
  --ncck-radius-sm: 6px;
  --ncck-container: 1440px;    /* Content-container maximum (boss specification 2026-07-24: lower bound of 1440–1600) */
  --ncck-toolbar-h: 32px;      /* Utility row */
  --ncck-nav-h: 84px;          /* Main navigation row (boss specification: midpoint of header 80–88) */
  /* Typography: system stack, with zero external font requests (hard header-spec constraint) */
  --ncck-font: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,
               "PingFang SC","Microsoft YaHei",sans-serif;

  /* ── Visual-system extensions (P1 · 2026-07-20 · foundation for homepage-fidelity refactoring) ─────────────────
     Additions only; do not change/override the frozen values above. All prohibitions are observed:
       · shadow = low-opacity neutral near-black (not colored glow)   · dotted background = tiled single-dot data-URI SVG (not a gradient)
       · monospace = system stack (not Google Fonts)                  · no purple/no dark mode
     These are the single sources consumed by sections such as hardware/products/lines/steps/stats/locations;
     literal-value overrides inside those sections are forbidden (continuing this file's "consume only, do not redefine" discipline). */
  --ncck-radius-lg: 16px;         /* Large radius for feature/data-center cards. [2026-07-22 live final-ruling rollback G27]
                                     The register inferred 18px from static --nk-radius, but live w8 measurements show a mix:
                                     18(products is-boxed)/16(feature-lg hardware card)/0(nlc).
                                     A blanket 18 token was therefore wrong; revert to 16 (= the live truth frozen in the manifest),
                                     with a separate ticket to map 18px components individually from live. .ncn-stat keeps its independent literal 16. */
  --ncck-radius-md: 10px;         /* Radius of the hero np-node city badge (w8 theme-custom.css:4454 truth,
                                     not one of the existing two radius tiers; added for the direct D2 hero adaptation). */
  --ncck-shadow-sm:   0 2px 16px rgba(16, 24, 40, 0.06);  /* Resting card state */
  --ncck-shadow-base: 0 4px 24px rgba(16, 24, 40, 0.08);
  --ncck-shadow-lg:   0 14px 40px rgba(16, 24, 40, 0.10); /* Hover lift */
  --ncck-ring: 0 0 0 1px rgba(15, 92, 255, 0.35);         /* Selected/hover blue ring (solid 1px edge, not glow) */
  --ncck-heading: #17191c;        /* Near-black heading (darker than body copy) */
  --ncck-text-body: #4b4f58;      /* Body copy, slightly lighter than --ncck-text */
  --ncck-dot: rgba(26, 35, 51, 0.05);  /* Dotted-background dot color (reference value) */
  /* Dotted background texture: a tiled 24px single-dot data-URI SVG, avoiding the gradient prohibition (not a gradient).
     Light regions consume background-image:var(--ncck-dot-bg)+background-size:24px. */
  --ncck-dot-bg: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%3E%3Ccircle%20cx='2'%20cy='2'%20r='1'%20fill='%23222a3a'%20fill-opacity='0.06'/%3E%3C/svg%3E");
  --ncck-cta-bg: #003cb2;         /* Flat blue CTA-band background (deeper than primary, high-contrast AA for white text/white buttons) */
  --ncck-stat-accent: #9cc3ff;    /* Ice-blue numbers on the dark stats band */
  --ncck-stat-desc: #8fa3c4;      /* Labels on the dark stats band */
  --ncck-font-mono: ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,
                    "Liberation Mono",monospace;  /* System-stack monospace for stats numbers */

  /* ── Homepage parity token section (boss authorized exception 2026-07-21 · whmcs8 parity) ──────────────
     The boss explicitly ruled on 2026-07-21 to overturn the default "no gradient/glow/dark mode" rule solely for the homepage,
     allowing gradients / glow / CTA two-layer depth. Every new value goes in this section (marked whmcs8 parity) for
     ncck-public.css to consume through var(), with no literal hex values scattered through sections.
     The discipline remains: ① frozen foundational tokens above (--ncck-primary #0f5cff / --ncck-rail #071b42
     / --ncck-cta-bg #003cb2, etc.) must never change or be overridden; this section is a coexisting new color-scale source.
     ② These exceptions were only for the homepage scope (body.ncck-public.page-homepage) + homepage-specific classes;
     public pages (network/locations/servers/location-detail) could not consume them, preventing spillover. Values came from
     read-only production whmcs8 CSS (theme-custom.css) and are reimplemented as NCCK-owned tokens, independent of Lagom
     (without copying its classes/implementation).
     ★Batch 5 addition (2026-07-21): the boss's overall ruling to "align strictly 1:1 with whmcs8" voids the ②
     "homepage scope only" consumption restriction—the consumption surface expands to the network/locations/
     location-detail/servers/legal public pages (see the "Public-page whmcs8 PARITY Batch 5" section at the end of
     ncck-public.css and each page-specific component section for scope-expansion rules); the discipline of leaving
     ① frozen foundational tokens untouched and making zero rollback from homepage parity remains unchanged. */
  --ncck-grad-blue: #0656ff;   /* whmcs8 parity blue (for gradient/glow color stops only; frozen solid UI blue --ncck-primary #0f5cff remains unchanged and coexists) */
  --ncck-grad-cyan: #00b3ff;   /* whmcs8 parity cyan (gradient/accent-bar ending color; rgba(0,179,255,*) form is used for halos) */
  /* Three-layer light hero background with dual-color halos (replaces the current flat --ncck-bg) */
  --ncck-grad-hero:
      radial-gradient(900px 460px at 12% -8%, rgba(6,86,255,.10), transparent 60%),
      radial-gradient(760px 420px at 88% 4%, rgba(0,179,255,.12), transparent 58%),
      linear-gradient(180deg, #fbfdff 0%, #ffffff 100%);
  /* Blue-tinted hero ::before dot field (background-size:26px 26px; bluer and more focused than global --ncck-dot-bg) */
  --ncck-hero-dotglow: radial-gradient(rgba(6,86,255,.18) 1.2px, transparent 1.6px);
  /* Hero dot-field mask-image (focused at upper left and fading outward) */
  --ncck-hero-dotmask: radial-gradient(700px 420px at 30% 8%, #000 20%, transparent 72%);
  /* Dark navy stats-band background with two radial glows (#0b1220 ≠ frozen rail #071b42, hence consumed only by the homepage section) */
  --ncck-grad-statband:
      radial-gradient(800px 300px at 20% 0%, rgba(6,86,255,.35), transparent 60%),
      radial-gradient(700px 320px at 85% 110%, rgba(0,179,255,.25), transparent 55%),
      #0b1220;
  /* Two-halo inner navy CTA card (original whmcs8 .ncck-cta .section-box value; core of the two-layer CTA) */
  --ncck-grad-cta-card:
      radial-gradient(700px 300px at 15% 10%, rgba(0,179,255,.28), transparent 55%),
      radial-gradient(700px 300px at 85% 90%, rgba(6,86,255,.4), transparent 55%),
      linear-gradient(135deg, #0a1a4a 0%, #0b1220 100%);
  /* Outer blue gradient CTA band. Live whmcs8 getComputedStyle calibrated truth (not an estimate):
     .ncck-cta background-image = 90deg #0443c4→#0656ff */
  --ncck-grad-cta-band: linear-gradient(90deg, #0443c4 0%, #0656ff 100%);
  /* 3px bottom accent bar on product/route/data-center card hover (original whmcs8 ::after value) */
  --ncck-grad-accent-bar: linear-gradient(90deg, #0656ff, #00b3ff);
  /* Blue feature-card hover glow (= whmcs8 --nk-glow; replaces neutral --ncck-shadow-lg, with resting state changed to none) */
  --ncck-glow-card: 0 0 0 1px rgba(6,86,255,.18), 0 14px 40px rgba(6,86,255,.10);
  /* Blue hero np-panel/np-chip glow (= whmcs8 --nk-shadow; replaces neutral 0 18px 42px rgba(15,23,42,.10)) */
  --ncck-glow-panel: 0 2px 6px rgba(15,23,42,.06), 0 16px 40px rgba(6,86,255,.10);
  /* Vertical gradient scrim over data-center photo-card covers. Live/static calibrated truth: whmcs8 .nlc-cover::after
     = 180deg rgba(2,8,23,.08) 30% → rgba(2,8,23,.55) 100% (not transparent 32%) */
  --ncck-grad-cover-scrim: linear-gradient(180deg, rgba(2,8,23,.08) 30%, rgba(2,8,23,.55) 100%);
  /* Inner CTA-card subtitle. Live whmcs8 = rgba(255,255,255,.72) (not the estimated #9db1d6) */
  --ncck-cta-subtitle: rgba(255,255,255,.72);
  /* Dark text on the white CTA button (whmcs8 .ncck-cta .btn:not(.btn-outline) color) */
  --ncck-cta-btn-ink: #0443c4;
  /* Slate hero-subtitle text. Live whmcs8 .banner-subtitle color = #64748b (24px/lh1.7) */
  --ncck-hero-sub-ink: #64748b;
  /* Colored city badges in the hero panel—[SUPERSEDED by manager's live retest on 2026-07-22]. The old three values
     were solid fills sampled from screenshots; live truth is a light gradient fill + dark ink (confirmed by hero rejection F6).
     Old tokens remain for the record only; consumers have switched to the -grad/-ink pairs below. */
  --ncck-node-hkg: #14b8a6;
  --ncck-node-sel: #8b7cf6;
  --ncck-node-lax: #4aa3f0;
  /* Live truth for hero city badges (direct w8 getComputedStyle capture on 2026-07-22): gradient fill + dark ink */
  --ncck-node-hkg-grad: linear-gradient(135deg, #1fc492, #22d3ee);
  --ncck-node-hkg-ink: #06261c;
  --ncck-node-sel-grad: linear-gradient(135deg, #7c66e8, #a78bfa);
  --ncck-node-sel-ink: #120b2e;
  --ncck-node-lax-grad: linear-gradient(135deg, #3d9de0, #6fc7ff);
  --ncck-node-lax-ink: #06263c;
  /* Hero-consumption alias for w8 --nk-line2 #d5dded (panel edge/chip edge/foot dashed line; captured directly from live) */
  --ncck-w8-line2: #d5dded;
  /* Live truth for the hero trust check: rgb(22,163,74) (bare green check, not a blue circle; ≠ existing --ncck-success #1a9e5c) */
  --ncck-trust-check: #16a34a;
  /* Note: --ncck-glow-cta-card was removed after live calibration—whmcs8 inner CTA card has box-shadow:none;
     the dual radial gradients supply its depth, with no extra floating shadow (strictly 1:1). */

  /* ── Public-page parity tokens (Batch 5 · boss's overall "strictly 1:1" ruling on 2026-07-21) ──────────
     New values from the shortcut-audit CSS parity batch (M3/M8/L2/M10/U2/U3), all marked with whmcs8 truth line numbers
     (w8 = scratchpad whmcs8/theme-custom.css). */
  /* M3 dark-background caption pill (w8:3071 original .ncck-statband .section-caption fill/edge values) */
  --ncck-statcap-bg: rgba(156, 195, 255, 0.10);
  --ncck-statcap-border: rgba(156, 195, 255, 0.22);
  /* M8 cyan photo-hero eyebrow (w8:4219 v60 caption color). AA review: #7dd3fc on
     a photo under the rgba(2,8,23,.52+) dark scrim ≈7.9:1, passes */
  --ncck-caption-cyan: #7dd3fc;
  /* L2 darkening gradient layer for city-detail hero (w8:3713 original .ncck-dch-* value, .55→.72) */
  --ncck-grad-hero-scrim: linear-gradient(180deg, rgba(4, 10, 24, 0.55), rgba(4, 10, 24, 0.72));
  /* U3/M10 three-layer light backdrop for interior pages (w8:3334-3339 original .ncck-pagehero value;
     consumed by servers/legal heroes; final #fbfdff→#fff layer also serves as the background-shorthand fallback color) */
  --ncck-grad-pagehero-light:
      radial-gradient(800px 360px at 10% -10%, rgba(6, 86, 255, 0.10), transparent 60%),
      radial-gradient(700px 360px at 90% 0%, rgba(0, 179, 255, 0.10), transparent 58%),
      linear-gradient(180deg, #fbfdff 0%, #ffffff 100%);
  /* U2 three-tier ltag text colors (w8:3362-3363). AA review documented accurately (values corrected by supervisor review):
     --ncck-dia-sky #0284c7 on rgba(2,132,199,.08)-over-white ≈3.7:1 <4.5,
     fails AA—the boss's strict 1:1 ruling retains the original whmcs8 value (w8:3362);
     --ncck-slate-ink #475569 on #f6f8fb ≈7.1:1, passes */
  --ncck-dia-sky: #0284c7;
  --ncck-slate-ink: #475569;
  /* U2 GLOBAL-tier fill/edge = w8 --nk-soft #f6f8fb / --nk-line2 #d5dded (w8:3223;
     ≈ existing --ncck-bg #f5f7fa / --ncck-border #e3e8ef but not identical, so the 1:1 ruling lists them separately) */
  --ncck-ltag-glob-bg: #f6f8fb;
  --ncck-ltag-glob-border: #d5dded;
  /* Batch 6 residual ticket for chip np-ico base (implemented by the manager on 2026-07-21 under the overall strict 1:1 ruling; w8 live
     getComputedStyle:26×26/8px/bg #eef4ff/svg 15px #0656ff) */
  --ncck-chip-ico-bg: #eef4ff;
  /* Hero np-route row-card fill/edge (w8 theme-custom.css:3161-3186 truth; added by the direct D2 hero adaptation—
     np-route previously had no card-like fill/edge, one root cause of the "route row-card styling is wrong" complaint) */
  --ncck-route-bg: #fafbfe;
  --ncck-route-border: #e6eaf2;

  /* D2.3-R5 (2026-07-22 live getComputedStyle review of the whmcs8 /locations hero at every breakpoint,
     overturning the mistaken "light non-photo at every breakpoint" inference): body.ncck-loc-index's fixed 560px height/dark
     photo/white-text override is enclosed only within @media(min-width:992px) (w8 inline CSS note "PC phase");
     <992 has no such override and falls back to the base .ncck-pagehero state (light three-layer halo background + dark text),
     with the caption changed to primary blue. The hero therefore needs two breakpoint-dependent states, not one color scheme. */
  --ncck-locidx-title-ink: #0f172a;      /* w8 live:<992 .banner-title color */
  --ncck-locidx-caption-photo: #bcd6ff;  /* w8 live: ≥992 (dark photo state) .banner-caption color */
  /* Data-center-card description text color (w8 theme-custom.css:4199 live --nk-ink2 value, dedicated to .nlc-desc) */
  --ncck-loccard-desc-ink: #334155;

  /* ── Directly adapted font-weight token (2026-07-22 site-wide font-weight leverage ticket · live evidence) ──────────────────
     Root cause: w8 --font-weight-light:300 (theme-custom.css:108) is consumed through a family of tokens such as
     --feature-desc-font-weight, then inherited from the .feature-desc ancestor by text descendants such as card descriptions/
     list items/stats explanations/footer copy that "do not explicitly declare font weight"; the corresponding NCCK elements
     lack that token and fall back through an unset body value → UA default 400. Puppeteer getComputedStyle captured both w8/
     whmcs10 live for each role (static inference prohibited): all 13 roles are consistently 300 on w8 and 400 on whmcs10
     (sample text was checked one by one for equality, ruling out selector mismatches). Once confirmed, this numeric token was
     added for ncck-public.css to consume (H5: numeric rather than hex, compliant). Headings/buttons/navigation checked in the
     same live review were all non-300 (w8 measured range 400~900), so by discipline they were excluded from this token's scope. */
  --ncck-fw-light: 300;

  /* ── Unified client-area button-base texture (W0·#4 · solid + inner highlight, no gradient) ──────────────────────
     S0 establishes only the base for the new unified .ncck-ca-btn component in ncck-client.css to consume; it is purely additive
     and changes no frozen/extended token above. Texture definition: solid blue fill + 1px inner highlight (inset highlight);
     gradients/glow are strictly forbidden—independent from and mutually unconsumed with the gradient exception in the homepage
     parity section above (that section is only for homepage/public-page parity scenarios; the client area does not read it). */
  --ncck-btn-primary-bg: var(--ncck-primary);              /* Solid primary-button fill */
  --ncck-btn-primary-bg-hover: var(--ncck-primary-hover);  /* Solid primary-button hover fill */
  --ncck-btn-inset-hi: inset 0 1px 0 rgba(255, 255, 255, .18); /* Inner highlight, not a gradient/glow */

  /* ── Client-area card/table geometry base (W0·cardtable · boss specification 2026-07-24) ────────────
     S0 establishes only the base for the two "card base / table base" selector groups in ncck-client.css to consume;
     purely additive, changing/overriding none of the frozen values above. Boss-specified values:
       card radius 8 / border 1px / only one very light shadow tier / padding 20–24 / section gap 24
       table row 48 / header 40
     Discipline remains: each CSS family only consumes this section through var(); scattered literal geometry values are forbidden. */
  --ncck-card-pad-y: 22px;                     /* Midpoint of 20–24 */
  --ncck-card-pad-x: 24px;
  --ncck-card-shadow: var(--ncck-shadow-sm);   /* The site's only card-surface shadow tier */
  --ncck-card-gap: 24px;                       /* Section spacing */
  --ncck-card-title-mb: 16px;                  /* Spacing below an in-card heading without a divider */
  --ncck-tbl-row-h: 48px;
  --ncck-tbl-head-h: 40px;
  --ncck-tbl-pad-x: 16px;                      /* Horizontal padding for internal columns */
  --ncck-tbl-pad-edge: 24px;                   /* First/last-column padding when the table sits directly against the card edge */
  --ncck-tbl-head-fs: 13.5px;                  /* Existing accepted value from services/invoices/tickets */
  --ncck-tbl-head-fw: 500;

  /* ── Icon system (W0·icon · boss audit Batch 3 on 2026-07-24) ──────────────────────
     Boss-specified container: width/height 40px · border-radius 10px · centered inline-flex.
     Radius 10 is deliberately an independent literal, not var(--ncck-radius-md): the latter means the hero np-node city badge
     (comment at :38 in this file). Their current equality is coincidence; coupling them would let one change break the other.
     Shape responsibilities (the three-piece set does not overlap and is distinguishable at a glance):
       button .ncck-ca-btn  → 6px (--ncck-radius-sm)  interactive
       badge .ncck-badge    → fully rounded 999px     noninteractive state
       icon shell .ncck-ico → 10px                    purely decorative carrier
     ------------------------------------------------------------------------ */
  --ncck-ico-size:   40px;                 /* Boss's verbatim specification */
  --ncck-ico-radius: 10px;                 /* Boss's verbatim specification */
  --ncck-ico-glyph:  22px;                 /* Lower bound of boss's Dashboard tier 22–24; occupies 55% of the 40 container */
  --ncck-ico-bg:     color-mix(in srgb, var(--ncck-primary) 8%, var(--ncck-surface));
  --ncck-ico-ink:    var(--ncck-primary);

  /* Bare-glyph tiers: these are the only seven across the client area; each CSS family consumes only through var(),
     and scattered literals are forbidden. Before consolidation, measurement found 19 scattered tiers (11→52px),
     the quantified root cause of the boss's "inconsistent sizing" complaint. */
  --ncck-glyph-nav:    20px;  /* Left navigation — boss's verbatim specification */
  --ncck-glyph-util:   18px;  /* Top-bar notifications/cart/account/back-to-admin/hamburger — lower bound of boss's 18–20 */
  --ncck-glyph-btn:    16px;  /* Inside buttons — lower bound of boss's 16–18 (already-compliant gap 8px remains unchanged) */
  --ncck-glyph-btn-sm: 14px;  /* Inside 32px compact buttons, scaled down by the 16/36≈14/32 ratio */
  --ncck-glyph-status: 16px;  /* Alert bar/banner/flash — upper bound of boss's 14–16 */
  --ncck-glyph-row:    14px;  /* Table rows/lists/search boxes — lower bound of boss's 14–16 */
  --ncck-glyph-micro:  12px;  /* Caret / chevron / list-tail arrow, the sole micro tier */
  /* The empty-state glyph deliberately has no token: .ncck-empty-ico's current 44px is within the boss's 40–48 specification,
     Batch 2 already accepted it, and this block is governed by byte-identical dual-shell discipline; changing it is pure risk with no benefit. */
}
