/* Reputation Analyzer. Tokens from the design handoff tokens.css (v1, light).
   Screen styles live inline in app.js templates, copied from the approved
   .dc.html screens; this file holds the tokens and the shared classes those
   screens define in their own <style> blocks. */

:root {
  --font-sans: "Geist", -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, sans-serif;
  --font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --ink-900: #0B0D12;
  --blue-600: #0A5CFF;
  --blue-800: #0838B8;
  --blue-400: #4D8DFF;
  --blue-100: #C9DBFF;
  --blue-50: #EAF1FF;
  --white: #FFFFFF;
  --cloud-50: #F4F6F9;
  --hairline: #E4E7EC;
  --divider: #EEF0F3;
  --gray-300: #C5CBD4;
  --gray-500: #6A7280;
  --gray-600: #4A515C;
  --gray-700: #3A404B;
  --star: #F2A007;
  --positive: #087A55;
  --critical: #D92D20;
  --sample-bg: #FFF4DB; --sample-fg: #7A4B00;
  --hypo-bg: #EDE8FF; --hypo-fg: #4B2BB8;
  --focus-ring: 0 0 0 4px rgba(10,92,255,.16);
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--cloud-50); color: var(--ink-900); font-family: var(--font-sans); -webkit-font-smoothing: antialiased; }
a { color: var(--blue-600); }
a:hover { color: var(--blue-800); }
button { cursor: pointer; color: inherit; }
button:disabled { cursor: default; opacity: .6; }
img { max-width: 100%; }
.mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.h1 { text-wrap: balance; }
@media (min-width: 1100px) { .h1-one { white-space: nowrap; } }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Visible focus everywhere (handoff: focus ring + 1px blue border). */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible {
  outline: 1px solid var(--blue-600); outline-offset: 2px; box-shadow: var(--focus-ring);
}

/* Desktop shared classes (Desktop03-06) */
.pgd .lbl { font-size: 14px; font-weight: 500; color: var(--gray-500); }
.pgd .kpi { border-radius: 24px; background: #FFFFFF; border: 1px solid var(--hairline); padding: 24px; box-shadow: 0 1px 2px rgba(11,13,18,.04), 0 8px 24px rgba(11,13,18,.04); }
.pgd .panel { border-radius: 24px; background: #FFFFFF; border: 1px solid var(--hairline); box-shadow: 0 1px 2px rgba(11,13,18,.04), 0 8px 24px rgba(11,13,18,.04); }
.pgd .panel-lg { border-radius: 28px; background: #FFFFFF; border: 1px solid var(--hairline); box-shadow: 0 1px 2px rgba(11,13,18,.04), 0 12px 32px rgba(11,13,18,.06); }
.pgd input[type=checkbox] { width: 20px; height: 20px; accent-color: var(--blue-600); margin: 0; }
.pgd .num { display: flex; align-items: center; height: 60px; border-radius: 16px; border: 1px solid var(--hairline); background: #FFFFFF; padding: 0 16px; margin-top: 12px; }
.pgd .num input, .pgd .num select { flex: 1; min-width: 0; border: 0; outline: none; background: transparent; font-family: var(--font-mono); font-size: 24px; font-weight: 500; color: var(--ink-900); }
.pgd .num select { font-family: var(--font-sans); font-size: 20px; }
.pgd .num:focus-within { border-color: var(--blue-600); box-shadow: 0 0 0 4px rgba(10,92,255,.14); }
.pgd input[type=range] { width: 100%; accent-color: var(--blue-600); height: 28px; margin: 0; }
.pgd .flbl { font-size: 14px; font-weight: 600; color: var(--ink-900); }
.pgd .fld { display: block; width: 100%; height: 52px; border-radius: 14px; border: 1px solid var(--hairline); background: #FFFFFF; padding: 0 16px; font: inherit; font-size: 17px; color: var(--ink-900); outline: none; margin-top: 8px; }
.pgd .fld:focus { border-color: var(--blue-600); box-shadow: 0 0 0 4px rgba(10,92,255,.14); }

/* Mobile shared classes (Mobile03-06) */
.pgm .lbl { font-size: 13px; font-weight: 500; color: var(--gray-500); }
.pgm .num { display: flex; align-items: center; height: 54px; border-radius: 14px; border: 1px solid var(--hairline); background: #F7F8FA; padding: 0 14px; margin-top: 10px; }
.pgm .num input, .pgm .num select { flex: 1; min-width: 0; border: 0; outline: none; background: transparent; font-family: var(--font-mono); font-size: 22px; font-weight: 500; color: var(--ink-900); }
.pgm .num select { font-family: var(--font-sans); font-size: 18px; }
.pgm .num:focus-within { border-color: var(--blue-600); background: #FFFFFF; box-shadow: 0 0 0 4px rgba(10,92,255,.14); }
.pgm input[type=range] { width: 100%; accent-color: var(--blue-600); height: 32px; margin: 0; }
.pgm .q { font-size: 16px; font-weight: 600; line-height: 1.35; display: block; color: var(--ink-900); }
.pgm .flbl { font-size: 14px; font-weight: 600; color: var(--ink-900); }
.pgm .fld { display: block; width: 100%; height: 50px; border-radius: 14px; border: 1px solid var(--hairline); background: #FFFFFF; padding: 0 14px; font: inherit; font-size: 17px; color: var(--ink-900); outline: none; margin-top: 6px; }
.pgm .fld:focus { border-color: var(--blue-600); box-shadow: 0 0 0 4px rgba(10,92,255,.14); }
.pgm input[type=checkbox] { width: 20px; height: 20px; accent-color: var(--blue-600); margin: 0; }

/* Mobile screens are full-width, not the 390px artboard. Room for the tab bar. */
.pgm { min-height: 100vh; min-height: 100dvh; background: var(--cloud-50); color: var(--ink-900); font-family: var(--font-sans); position: relative; }
.pgm.has-tabs { padding-bottom: calc(110px + env(safe-area-inset-bottom)); }
.tabbar { position: fixed; left: 16px; right: 16px; bottom: calc(20px + env(safe-area-inset-bottom)); height: 64px; border-radius: 22px; background: rgba(255,255,255,.82); -webkit-backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%); border: 1px solid rgba(228,231,236,.9); box-shadow: 0 10px 30px rgba(11,13,18,.12); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 0 6px; z-index: 20; max-width: 520px; margin: 0 auto; }
.tabbar a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; color: var(--gray-500); text-decoration: none; font-size: 11px; font-weight: 500; min-height: 44px; }
.tabbar a[aria-current="page"] { color: var(--blue-600); font-weight: 600; }

/* Mobile confirm sheet */
.sheet { position: fixed; left: 0; right: 0; bottom: 0; border-radius: 32px 32px 0 0; background: #FFFFFF; box-shadow: 0 -12px 40px rgba(11,13,18,.16); padding: 10px 20px calc(28px + env(safe-area-inset-bottom)); z-index: 30; max-width: 640px; margin: 0 auto; }

/* Loading skeleton bars */
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: .5; } }
.skel { animation: pulse 1.4s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) { .skel { animation: none; } }
