/* claire.css — shared design tokens + primitives for clairemail.app
   Consumed by: index.html (waitlist, dark-locked) and site.html (full site, light/dark).
   Dark values are the [data-mode="dark"] block; the waitlist locks that mode. */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
color-scheme:light;
--bg:#f8f7f3;--bg-2:#f1f0ec;--art:#f6f5f2;--fill:rgba(21,23,28,.045);--card:#fff;--ink:#15171c;--ink-2:#4e5563;--ink-3:#6e7681;
--line:rgba(21,23,28,.11);--line-2:rgba(21,23,28,.07);
--accent:#2f5bd8;--accent-soft:#e7ecfb;--accent-ink:#2549b4;--red:#dc2626;
--btn-bg:#15171c;--btn-fg:#fff;--btn-bg-h:#31363f;
--glass:rgba(255,255,255,.8);
--win:#f3f2ee;--win-bar:#e8e7e1;--win-bar-ink:#8b887f;--win-border:rgba(21,23,28,.14);--win-line:rgba(21,23,28,.09);
--phone:#0f1013;
--sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",system-ui,sans-serif;
--shadow-sm:0 1px 2px rgba(21,23,28,.04),0 6px 16px -12px rgba(21,23,28,.2);
--shadow:0 1px 2px rgba(21,23,28,.05),0 20px 44px -26px rgba(21,23,28,.3);
--shadow-lg:0 2px 4px rgba(21,23,28,.06),0 52px 90px -44px rgba(21,23,28,.48);
--inset:inset 0 1px 2px rgba(21,23,28,.05);
--r-lg:24px;--r-md:18px;--wrap:1080px;
}
[data-mode="dark"]{
color-scheme:dark;
--bg:#1e2128;--bg-2:#191c22;--art:#1a1d23;--fill:rgba(255,255,255,.06);--card:#24282f;--ink:#f1f2f4;--ink-2:#b6bcc7;--ink-3:#8f97a5;
--line:rgba(255,255,255,.14);--line-2:rgba(255,255,255,.08);
--accent:#5b8af0;--accent-soft:rgba(91,138,240,.22);--accent-ink:#a9c2ff;--red:#f87171;
--btn-bg:#f1f2f4;--btn-fg:#15171c;--btn-bg-h:#dfe2e6;
--glass:rgba(36,40,47,.82);
--win:#141519;--win-bar:#1b1d22;--win-bar-ink:#7c828e;--win-border:rgba(0,0,0,.55);--win-line:rgba(255,255,255,.06);
--shadow-sm:0 1px 2px rgba(0,0,0,.4),0 6px 16px -12px rgba(0,0,0,.6);
--shadow:0 1px 2px rgba(0,0,0,.45),0 20px 44px -26px rgba(0,0,0,.75);
--shadow-lg:0 2px 6px rgba(0,0,0,.5),0 52px 90px -44px rgba(0,0,0,.95);
--inset:inset 0 1px 2px rgba(0,0,0,.3);
}

/* waitlist runs on a deeper black than the site's dark mode */
[data-surface="deep"]{--bg:#08090a;--bg-2:#0d0e11;--ink:#f7f8f8;--ink-2:#9b9ca6;--ink-3:#6e7079;--line:rgba(255,255,255,.09);--line-2:rgba(255,255,255,.055);--fill:rgba(255,255,255,.04);--glow:#5e6ad2;--ok:#68cc9a;--err:#e5686d}

html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.55;-webkit-font-smoothing:antialiased;text-wrap:pretty}
a{color:var(--ink);text-decoration:none}
a:hover{color:var(--ink-2)}
img{max-width:100%;display:block}
h1,h2,h3,h4{letter-spacing:-.03em;line-height:1.05;font-weight:600}
h1 em,h2 em{font-style:italic;font-weight:500;letter-spacing:-.02em}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}
[data-surface="deep"] :focus-visible{outline:1.5px solid rgba(255,255,255,.35)}

/* brand mark */
.mark{display:block;flex:none;background:currentColor;-webkit-mask:url(assets/claire-mark-mask.png) center/contain no-repeat;mask:url(assets/claire-mark-mask.png) center/contain no-repeat}
.brand{display:flex;align-items:center;gap:9px;font-weight:600;font-size:16.5px;letter-spacing:-.025em}

/* status LEDs — the little charge lights */
.led{width:5px;height:5px;border-radius:50%;flex:none;background:#2a2c33;box-shadow:inset 0 0 2px rgba(0,0,0,.8)}
.led.g{background:#5cf08d;box-shadow:0 0 8px 2px rgba(92,240,141,1),0 0 20px 4px rgba(92,240,141,.5),0 0 34px 8px rgba(92,240,141,.22)}
.led.b{background:#5b9dff;box-shadow:0 0 7px 1.5px rgba(91,157,255,.95),0 0 18px 3px rgba(91,157,255,.45),0 0 30px 6px rgba(91,157,255,.18)}
.led.r{background:#ff5f57;box-shadow:0 0 7px 1.5px rgba(255,95,87,.9),0 0 17px 3px rgba(255,95,87,.38)}

/* keycaps */
kbd{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:6px;background:var(--card);border:1px solid var(--line);border-bottom-width:2px;box-shadow:0 1px 0 rgba(255,255,255,.6) inset;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink-2);letter-spacing:0;vertical-align:1px}
[data-mode="dark"] kbd{box-shadow:0 1px 0 rgba(255,255,255,.06) inset}
code{font-family:var(--sans);font-weight:600;color:var(--ink);font-size:.94em}

/* embedded app shots */
.shot{position:relative;width:100%;overflow:hidden;background:var(--win)}
.shot iframe{position:absolute;top:0;left:0;border:0;transform-origin:0 0;display:block;pointer-events:none}

/* film grain, shared by both surfaces */
.grain{position:fixed;inset:0;pointer-events:none;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E")}
