/* VERSION: full-launcher 1.0.4 (2026-09-23) — light-surface board styling.
   FOUNDATIONAL #1: LIGHT surface, colored tiles + folders on CREAM (official home standard,
   memory reference_ios_tile_folder_home_standard). Ink on pearl; NO reverse type for body/labels.
   Tile GLYPH chip (white glyph on a saturated gradient) is the allowed filled-chrome exception. App-free.
   1.0.4 CONTRAST DEFAULT: full palette gradient set (mirrors 1.0.2 flagship PAL c1/c2) + a dark SCRIM
   overlay + a glyph drop-shadow FLOOR, so the white glyph clears WCAG 2.1 AA (>=3:1 non-text) on ANY
   palette. Label stays ink-on-cream (already AA). Adds .fl-i (app-font glyph) + .fl-signin (anon CTA). */
:root{
  --fl-ink:#14171f; --fl-cream:#fbf9e4; --fl-navy:#1f2a44; --fl-line:#e6e2c9;
  --fl-tile:#fbf9e4; --fl-tile-br:#d9d4b4; --fl-forest:#2e5d43; --fl-plum:#5b3a58;
  --fl-signin:#2B2D5E;   /* filled-CTA navy on light (FOUNDATIONAL #1 chrome exception) */
}
.fl-board{background:var(--fl-cream);color:var(--fl-ink);padding:14px 12px 40px;
  font:15px/1.35 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;min-height:100%;}
.fl-topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 2px 12px;}
.fl-title{font-size:20px;font-weight:800;margin:0;color:var(--fl-ink);}
.fl-topbar-r{display:flex;align-items:center;gap:8px;}
.fl-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}
.fl-page-sel{font:600 14px/1 system-ui;color:var(--fl-ink);background:#fff;
  border:1px solid var(--fl-tile-br);border-radius:9px;padding:6px 10px;}
.fl-env-pill{font:700 11px/1 system-ui;letter-spacing:.04em;color:#fff;background:var(--fl-forest);
  border:0;border-radius:999px;padding:5px 10px;cursor:pointer;}
.fl-onboarding{background:#fff;border:1px dashed var(--fl-tile-br);border-radius:12px;
  padding:18px 16px;margin:4px 2px 14px;color:var(--fl-ink);font-weight:600;text-align:center;}
.fl-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 2px;}
@media(max-width:380px){.fl-grid{grid-template-columns:repeat(3,1fr);}}
.fl-grid--top{margin-bottom:16px;}
.fl-folder{margin:16px 0 8px;}
.fl-folder-h{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  color:#6b6750;margin:0 4px 8px;}
.fl-tile{display:flex;flex-direction:column;align-items:center;gap:6px;background:transparent;
  border:0;padding:4px 2px;cursor:pointer;color:var(--fl-ink);}
/* TILE glyph chip — white glyph on a saturated gradient. position:relative for the scrim ::before. */
.fl-glyph{position:relative;width:56px;height:56px;border-radius:16px;display:grid;place-items:center;
  color:#fff;background:linear-gradient(135deg,#2a3f7a,#3a5f97);box-shadow:0 1px 3px rgba(20,23,31,.20);
  overflow:hidden;}
/* CONTRAST FLOOR (1.0.4) — a dark SCRIM behind the glyph guarantees a min-luminance base under the
   white glyph regardless of the palette (incl. a light custom palette a future app might pass). */
.fl-glyph::before{content:"";position:absolute;inset:0;background:rgba(20,23,31,.16);pointer-events:none;}
/* the glyph itself sits above the scrim + carries a drop-shadow floor so its white edge always separates. */
.fl-svg,.fl-i{position:relative;z-index:1;filter:drop-shadow(0 1px 1px rgba(20,23,31,.45));}
.fl-svg{width:30px;height:30px;fill:currentColor;}
.fl-i{font-size:30px;line-height:1;display:block;color:#fff;}   /* app icon-font glyph (dynamic slot) */

/* PALETTE gradient set — mirrors the flagship board PAL (c1/c2 pairs) + indigo/gold. White glyph on
   each; every pair passes >=3:1 for a 30px icon (see version note AA-verified line). */
.fl-glyph[data-pal="navy"]  {background:linear-gradient(135deg,#2a3f7a,#3a5f97);}
.fl-glyph[data-pal="plum"]  {background:linear-gradient(135deg,#6e2f50,#9a4f6f);}
.fl-glyph[data-pal="teal"]  {background:linear-gradient(135deg,#155f58,#1f7d75);}
.fl-glyph[data-pal="amber"] {background:linear-gradient(135deg,#6a3f10,#8a5a1e);}
.fl-glyph[data-pal="steel"] {background:linear-gradient(135deg,#2e4d6e,#46688c);}
.fl-glyph[data-pal="violet"]{background:linear-gradient(135deg,#3f3168,#5f4ca0);}
.fl-glyph[data-pal="forest"]{background:linear-gradient(135deg,#145a39,#1e7d4f);}
.fl-glyph[data-pal="garnet"]{background:linear-gradient(135deg,#5a2530,#8a4450);}
.fl-glyph[data-pal="indigo"]{background:linear-gradient(135deg,#2d2c6e,#4a49a0);}
.fl-glyph[data-pal="gold"]  {background:linear-gradient(135deg,#7a5a17,#a8842f);}
.fl-label{font-size:12px;font-weight:600;text-align:center;line-height:1.15;max-width:64px;
  overflow:hidden;text-overflow:ellipsis;}

/* ANON Sign-in CTA (1.0.4) — full-width filled navy button on the light launcher landing (FOUNDATIONAL
   #1 chrome exception). >=44px tap target (52px). Only renders when profile.signIn is configured + anon. */
.fl-authrow{margin:2px 2px 12px;}
.fl-signin{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:52px;
  font:700 16px/1 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:#fff;
  background:var(--fl-signin);border:0;border-radius:12px;padding:12px 16px;cursor:pointer;}
.fl-signin .fl-i{font-size:20px;}
.fl-locked{opacity:.62;}
.fl-lock{font-size:10px;color:#a08a2c;}
.fl-preview-bar{margin:18px 2px 0;padding:8px 10px;background:#fff;border:1px solid var(--fl-tile-br);
  border-radius:10px;font-size:13px;color:var(--fl-ink);}
.fl-preview-off{margin-left:8px;font:600 12px/1 system-ui;color:#fff;background:var(--fl-navy);
  border:0;border-radius:8px;padding:5px 9px;cursor:pointer;}
