/* dragonfinn.net — generated palette. DO NOT EDIT.
 *
 * Produced by web/tools/palette.py from two anchor hues:
 *   blue              200 deg HSL
 *   amber             48 deg HSL
 *   neutrals          blue + 4 deg = 204 deg, low saturation
 *
 * Regenerate:  python web/tools/palette.py
 * Verify:      python web/tools/palette.py --check
 *
 * Values are plain sRGB: hex for opaque colours, rgba() for the translucent
 * glass.  Hue is held at the anchors above, lightness steps are perceptual
 * (OKLab L), and saturation holds at the peak across the middle of each ramp
 * before tapering at the ends — so the hsl() hue column should stay put, L
 * should march evenly, and S% should stay near its peak until the extremes.
 */

:root {
    color-scheme: light;

    /* --- blue ramp: primary ----------------------------------------------- */
    --blue-50: #f1f8fc;  /* hsl(200.0 60.2% 96.6%) · rgb(241 248 252) · L 97.5 */
    --blue-100: #dff0f8;  /* hsl(200.0 64.8% 92.5%) · rgb(223 240 248) · L 94.5 */
    --blue-200: #b9e0f4;  /* hsl(200.0 72.0% 84.0%) · rgb(185 224 244) · L 88.5 */
    --blue-300: #7dc9ee;  /* hsl(200.0 77.4% 71.4%) · rgb(125 201 238) · L 80.0 */
    --blue-400: #33aae6;  /* hsl(200.0 78.0% 55.0%) · rgb(51 170 230) · L 70.0 */
    --blue-500: #1889c2;  /* hsl(200.0 78.0% 42.8%) · rgb(24 137 194) · L 60.0 */
    --blue-600: #14719f;  /* hsl(200.0 78.0% 35.1%) · rgb(20 113 159) · L 52.0 */
    --blue-700: #0f577c;  /* hsl(200.0 78.0% 27.2%) · rgb(15 87 124) · L 43.5 */
    --blue-800: #0b3f59;  /* hsl(200.0 78.0% 19.7%) · rgb(11 63 89) · L 35.0 */
    --blue-900: #082a3b;  /* hsl(200.0 74.9% 13.2%) · rgb(8 42 59) · L 27.0 */
    --blue-950: #071c27;  /* hsl(200.0 69.9% 8.9%) · rgb(7 28 39) · L 21.5 */

    /* --- amber ramp: secondary / signal ----------------------------------- */
    --amber-50: #fef7de;  /* hsl(48.0 92.0% 93.2%) · rgb(254 247 222) · L 97.5 */
    --amber-100: #fcedb3;  /* hsl(48.0 92.0% 84.6%) · rgb(252 237 179) · L 94.5 */
    --amber-200: #f8d856;  /* hsl(48.0 92.0% 65.5%) · rgb(248 216 86) · L 88.5 */
    --amber-300: #e4b80a;  /* hsl(48.0 92.0% 46.6%) · rgb(228 184 10) · L 80.0 */
    --amber-400: #bf9a08;  /* hsl(48.0 92.0% 38.9%) · rgb(191 154 8) · L 70.0 */
    --amber-500: #9a7d07;  /* hsl(48.0 91.9% 31.6%) · rgb(154 125 7) · L 60.0 */
    --amber-600: #7e6608;  /* hsl(48.0 88.3% 26.2%) · rgb(126 102 8) · L 52.0 */
    --amber-700: #61500b;  /* hsl(48.0 79.4% 21.1%) · rgb(97 80 11) · L 43.5 */
    --amber-800: #453a0e;  /* hsl(48.0 65.2% 16.3%) · rgb(69 58 14) · L 35.0 */
    --amber-900: #2d260c;  /* hsl(48.0 57.0% 11.2%) · rgb(45 38 12) · L 27.0 */
    --amber-950: #1e1908;  /* hsl(48.0 57.0% 7.4%) · rgb(30 25 8) · L 21.5 */

    /* --- neutral ramp: derived · 204 deg · cool-tinted -------------------- */
    --neutral-50: #f6f7f7;  /* hsl(204.0 2.1% 96.7%) · rgb(246 247 247) · L 97.5 */
    --neutral-100: #eceded;  /* hsl(204.0 2.3% 92.8%) · rgb(236 237 237) · L 94.5 */
    --neutral-200: #d8d9da;  /* hsl(204.0 2.6% 85.1%) · rgb(216 217 218) · L 88.5 */
    --neutral-300: #bcbec0;  /* hsl(204.0 3.0% 74.3%) · rgb(188 190 192) · L 80.0 */
    --neutral-400: #9b9fa2;  /* hsl(204.0 3.5% 62.1%) · rgb(155 159 162) · L 70.0 */
    --neutral-500: #7b8185;  /* hsl(204.0 4.0% 50.3%) · rgb(123 129 133) · L 60.0 */
    --neutral-600: #646a6d;  /* hsl(204.0 4.4% 41.1%) · rgb(100 106 109) · L 52.0 */
    --neutral-700: #4d5255;  /* hsl(204.0 4.8% 31.8%) · rgb(77 82 85) · L 43.5 */
    --neutral-800: #373b3e;  /* hsl(204.0 5.3% 22.9%) · rgb(55 59 62) · L 35.0 */
    --neutral-900: #242729;  /* hsl(204.0 5.6% 15.1%) · rgb(36 39 41) · L 27.0 */
    --neutral-950: #181a1b;  /* hsl(204.0 5.9% 10.0%) · rgb(24 26 27) · L 21.5 */

    /* --- semantic assignments --------------------------------------------------- */
    --white:           #ffffff;   /* the one literal: surfaces that must not be tinted */
    --canvas:            var(--neutral-50);
    --surface:           var(--neutral-100);
    --surface-raised:    var(--white);
    --ink:               var(--neutral-900);
    --ink-muted:         var(--neutral-600);
    --ink-subtle:        var(--neutral-500);
    --rule:              var(--neutral-200);
    --accent:            var(--blue-600);
    --accent-strong:     var(--blue-700);
    --accent-soft:       var(--blue-100);
    --signal:            var(--amber-300);
    --signal-strong:     var(--amber-500);
    --signal-soft:       var(--amber-100);
    --focus:             var(--blue-600);

    /* --- frosted glass ---------------------------------------------------------- */
    --glass-tint:        rgba(251, 251, 252, 0.52);
    --glass-tint-strong: rgba(251, 251, 252, 0.72);
    --glass-border:      rgba(255, 255, 255, 0.7);
    --glass-highlight:   rgba(255, 255, 255, 0.55);
    --glass-shadow-near: rgba(54, 75, 89, 0.16);
    --glass-shadow-far:  rgba(54, 75, 89, 0.28);
    --glass-blur:        18px;
    --glass-saturate:    1.35;
    --glass-shadow:      0 1px 0 0 var(--glass-highlight) inset,
                         0 10px 30px -12px var(--glass-shadow-near);
    --glass-shadow-lg:   0 1px 0 0 var(--glass-highlight) inset,
                         0 24px 60px -24px var(--glass-shadow-far);
}
