.app-theme{--app-bg:#1a1b1e;--app-bg-subtle:#202124;--app-surface:#27282c;--app-surface-hover:#313238;--app-surface-active:#3a3b42;--app-border:#3a3b42;--app-border-bright:#4a4b54;--app-text:#e8e8ec;--app-text-muted:#9a9ba4;--app-text-dim:#6a6b74;--app-accent:#6ea8d9;--app-accent-fg:#06121c;--app-accent-hover:#5b96c8;--app-success:#7bc88a;--app-danger:#d98a8a;--app-warning:#d9c36e;--app-info:#7cacd4;--app-rare:#b58ad9;--app-font-display:"Inter", "Segoe UI", system-ui, sans-serif;--app-font-body:"Inter", "Segoe UI", system-ui, sans-serif;--app-font-mono:"JetBrains Mono", "Cascadia Code", ui-monospace, monospace;--app-radius:12px;--app-radius-sm:8px;--app-radius-lg:18px;--app-shadow:0 4px 24px #0000004d;--app-shadow-sm:0 1px 3px #0000003d;--app-duration-fast:.12s;--app-duration:.2s;--app-duration-slow:.32s;--app-ease:cubic-bezier(.32, .72, 0, 1);--app-density-gap:.5rem;--app-density-padding:.75rem;--app-density-text:.875rem;--app-scrollbar-size:8px;--app-glass-blur:12px;--app-safe-top:env(safe-area-inset-top,0px);--app-safe-right:env(safe-area-inset-right,0px);--app-safe-bottom:env(safe-area-inset-bottom,0px);--app-safe-left:env(safe-area-inset-left,0px);--app-accent-dim:#6ea8d91f;--app-success-dim:#7bc88a1f;--app-danger-dim:#d98a8a1f;--app-warning-dim:#d9c36e1f;--app-info-dim:#7cacd41f;--app-rare-dim:#b58ad91f;--app-toast-bg:#2a2b30;--app-glass-bg:#27282cd9;--app-scrim:#0009}@supports (color:color-mix(in srgb, red 50%, blue)){.app-theme{--app-accent-dim:color-mix(in srgb, var(--app-accent) 12%, transparent);--app-success-dim:color-mix(in srgb, var(--app-success) 12%, transparent);--app-danger-dim:color-mix(in srgb, var(--app-danger) 12%, transparent);--app-warning-dim:color-mix(in srgb, var(--app-warning) 12%, transparent);--app-info-dim:color-mix(in srgb, var(--app-info) 12%, transparent);--app-rare-dim:color-mix(in srgb, var(--app-rare) 12%, transparent);--app-toast-bg:color-mix(in srgb, var(--app-surface) 92%, var(--app-text));--app-glass-bg:color-mix(in srgb, var(--app-surface) 85%, transparent);--app-scrim:color-mix(in srgb, var(--app-bg) 72%, transparent)}}.app-theme.app-light{--app-bg:#f5f5f7;--app-bg-subtle:#ededf0;--app-surface:#fff;--app-surface-hover:#f0f0f4;--app-surface-active:#e6e6ec;--app-border:#d4d4da;--app-border-bright:#bfbfc8;--app-text:#2a2b30;--app-text-muted:#6a6b74;--app-text-dim:#9a9ba4;--app-shadow:0 4px 24px #0000000f;--app-shadow-sm:0 1px 3px #00000014;--app-toast-bg:#fff;--app-glass-bg:#ffffffd9;--app-scrim:#0006}@supports (color:color-mix(in srgb, red 50%, blue)){.app-theme.app-light{--app-accent-dim:color-mix(in srgb, var(--app-accent) 9%, transparent);--app-success-dim:color-mix(in srgb, var(--app-success) 9%, transparent);--app-danger-dim:color-mix(in srgb, var(--app-danger) 9%, transparent);--app-warning-dim:color-mix(in srgb, var(--app-warning) 9%, transparent);--app-info-dim:color-mix(in srgb, var(--app-info) 9%, transparent);--app-rare-dim:color-mix(in srgb, var(--app-rare) 9%, transparent);--app-toast-bg:#fff}}.app-theme.app-high-contrast{--app-bg:#000;--app-bg-subtle:#0a0a0a;--app-surface:#1a1a1a;--app-surface-hover:#2a2a2a;--app-surface-active:#3a3a3a;--app-border:#555;--app-border-bright:#777;--app-text:#fff;--app-text-muted:#ccc;--app-text-dim:#999;--app-success:#4cff7c;--app-danger:#ff6b6b;--app-warning:#ffd93d;--app-info:#6bc5ff;--app-rare:#d99bff;--app-shadow:0 4px 24px #0009;--app-toast-bg:#1a1a1a;--app-glass-bg:#1a1a1a;--app-scrim:#000000db;--app-focus-width:3px}@supports (color:color-mix(in srgb, red 50%, blue)){.app-theme.app-high-contrast{--app-accent-dim:color-mix(in srgb, var(--app-accent) 22%, transparent);--app-success-dim:color-mix(in srgb, var(--app-success) 22%, transparent);--app-danger-dim:color-mix(in srgb, var(--app-danger) 22%, transparent);--app-warning-dim:color-mix(in srgb, var(--app-warning) 22%, transparent);--app-info-dim:color-mix(in srgb, var(--app-info) 22%, transparent);--app-rare-dim:color-mix(in srgb, var(--app-rare) 22%, transparent);--app-glass-bg:#1a1a1a}}.app-compact{--app-density-gap:.25rem;--app-density-padding:.5rem;--app-density-text:.8125rem}.app-spacious{--app-density-gap:.75rem;--app-density-padding:1rem;--app-density-text:.9375rem}.app-theme{background-color:var(--app-bg);color:var(--app-text);font-family:var(--app-font-body);-webkit-text-size-adjust:100%;text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100dvh;accent-color:var(--app-accent);color-scheme:dark}.app-theme.app-light{color-scheme:light}.app-theme{scrollbar-width:thin;scrollbar-color:var(--app-border-bright) var(--app-bg-subtle);--sb-thumb-hover:var(--app-accent)}.app-theme ::-webkit-scrollbar{width:var(--app-scrollbar-size);height:var(--app-scrollbar-size)}.app-theme ::-webkit-scrollbar-track{background:var(--app-bg-subtle);border-radius:calc(var(--app-scrollbar-size) / 2)}.app-theme ::-webkit-scrollbar-thumb{background:var(--app-border-bright);border-radius:calc(var(--app-scrollbar-size) / 2);transition:background var(--app-duration-fast) linear}.app-theme ::-webkit-scrollbar-corner{background:var(--app-bg-subtle)}.app-theme ::selection{background:var(--app-accent);color:var(--app-accent-fg)}.app-theme ::selection{background:var(--app-accent);color:var(--app-accent-fg)}.app-theme :focus-visible{outline:var(--app-focus-width,2px) solid var(--app-accent);outline-offset:2px}.app-theme ::-moz-focus-inner{border:0}.app-theme :-moz-ui-invalid{box-shadow:none}.app-theme ::placeholder{color:var(--app-text-dim);opacity:1}.app-theme button:not(:disabled),.app-theme [role=button]:not([aria-disabled=true]){cursor:pointer}.app-theme button:disabled,.app-theme [aria-disabled=true]{cursor:not-allowed}.app-theme{-webkit-tap-highlight-color:transparent}.app-theme button,.app-theme [role=button],.app-theme a,.app-theme label,.app-theme summary{touch-action:manipulation}@media (width<=640px){.app-theme input,.app-theme select,.app-theme textarea{font-size:max(16px,1em)}}@keyframes app-toast-in{0%{opacity:0;transform:translateY(-12px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes app-toast-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-12px)scale(.96)}}@keyframes app-fade-in{0%{opacity:0}to{opacity:1}}@keyframes app-slide-up{0%{opacity:0;transform:translateY(16px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes app-sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes app-skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}@keyframes app-spin{to{transform:rotate(360deg)}}.app-toast-enter{animation:app-toast-in var(--app-duration,.2s) var(--app-ease) forwards}.app-toast-exit{animation:app-toast-out var(--app-duration-fast,.12s) ease-in forwards}.app-overlay{animation:app-fade-in var(--app-duration,.2s) ease-out}.app-modal{animation:app-slide-up var(--app-duration,.2s) var(--app-ease)}.app-sheet{animation:app-sheet-up var(--app-duration,.2s) var(--app-ease)}.app-spin{animation:.8s linear infinite app-spin}.app-glass{background:var(--app-surface)}@supports (backdrop-filter:blur(1px)){.app-glass{background:var(--app-glass-bg);backdrop-filter:blur(var(--app-glass-blur)) saturate(1.4)}}.app-scrim{background:var(--app-scrim)}.app-skeleton{background:var(--app-surface-hover);border-radius:var(--app-radius-sm);animation:1.5s ease-in-out infinite app-skeleton-pulse}.app-skeleton-text{border-radius:4px;height:.875rem;margin-bottom:.375rem}.app-skeleton-avatar{border-radius:9999px;width:2rem;height:2rem}.app-skeleton-thumbnail{border-radius:4px;width:4rem;height:2.25rem}@media (prefers-reduced-transparency:reduce){.app-theme .app-glass{background:var(--app-surface);backdrop-filter:none}}.app-theme.app-high-contrast .app-glass{background:var(--app-surface);backdrop-filter:none}@media (prefers-reduced-motion:reduce){.app-theme *,.app-theme :before,.app-theme :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.app-toast-enter,.app-toast-exit,.app-overlay,.app-modal,.app-sheet{animation:none!important}.app-skeleton{opacity:.5;animation:none!important}.app-spin{animation:1.6s linear infinite app-spin!important}}@media (forced-colors:active){.app-theme .app-glass,.app-theme .app-skeleton{backdrop-filter:none;background:canvas;border:1px solid canvastext}.app-theme :focus-visible{outline:2px solid highlight}.app-theme [data-app-state]{border:1px solid canvastext}}@media print{.app-theme{color:#000;background:#fff}.app-theme .app-glass{backdrop-filter:none}}.gabriels-horn-theme{--app-bg:#0d0b14;--app-bg-subtle:#131020;--app-surface:#1a1628;--app-surface-hover:#221d33;--app-surface-active:#2b2440;--app-border:#2b2440;--app-border-bright:#3d3358;--app-text:#f0ecf7;--app-text-muted:#a196bd;--app-text-dim:#8a80a8;--app-accent:#e0b155;--app-accent-fg:#241a05;--app-accent-hover:#cc9d41;--app-success:#6fcf97;--app-danger:#e0736e;--app-warning:#e0b155;--app-info:#7fa8e0;--app-shadow:0 8px 32px #00000080;--gh-tint:#261f3c9e;--gh-tint-strong:#2c2446db;--gh-rim:#ffffff8c;--gh-glint:.4;--gh-blur:18px;--gh-saturate:170%;--gh-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");--gh-azure:#4f9bd9;--gh-azure-fg:#04121f;--gh-crimson:#d95f5f;--gh-crimson-fg:#200606;--gh-verdant:#5fbf87;--gh-verdant-fg:#04180e;--gh-amber:#d9a441;--gh-amber-fg:#201503;--gh-swap:#c58ae0;--gh-swap-fg:#1c0a24}.gabriels-horn-theme.app-light{--app-bg:#f6f3fb;--app-bg-subtle:#ece7f5;--app-surface:#fff;--app-surface-hover:#f3eefa;--app-surface-active:#e7dff5;--app-border:#ded4ee;--app-border-bright:#c4b5e0;--app-text:#241d33;--app-text-muted:#665b80;--app-text-dim:#6b6280;--app-accent:#8a6414;--app-accent-fg:#fff;--app-accent-hover:#6f5010;--app-success:#157a45;--app-danger:#b32d28;--app-warning:#8a6414;--app-info:#1d5aa8;--app-shadow:0 8px 32px #241d331a;--gh-tint:#ffffffa8;--gh-tint-strong:#ffffffe6;--gh-rim:#ffffffe6;--gh-glint:.7;--gh-azure:#1d5aa8;--gh-azure-fg:#fff;--gh-crimson:#b32d28;--gh-crimson-fg:#fff;--gh-verdant:#157a45;--gh-verdant-fg:#fff;--gh-amber:#8a6414;--gh-amber-fg:#fff;--gh-swap:#6b3a8a;--gh-swap-fg:#fff}.gabriels-horn-theme.app-high-contrast{--gh-azure:#4db8ff;--gh-azure-fg:#000;--gh-crimson:#ff6b6b;--gh-crimson-fg:#000;--gh-verdant:#4dff9e;--gh-verdant-fg:#000;--gh-amber:#ffd24d;--gh-amber-fg:#000;--gh-swap:#e0a3ff;--gh-swap-fg:#000}.gh-scene{isolation:isolate;background-color:var(--app-bg);position:relative}.gh-scene:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(70rem 50rem at 50% -10%, color-mix(in srgb, var(--app-accent) 13%, transparent), transparent 60%), radial-gradient(55rem 45rem at 10% 105%, color-mix(in srgb, var(--gh-swap) 12%, transparent), transparent 62%), radial-gradient(45rem 40rem at 95% 60%, color-mix(in srgb, var(--gh-azure) 9%, transparent), transparent 60%);position:fixed;inset:0}.gh-fill{background-color:var(--gh-tint);background-image:var(--gh-noise), radial-gradient(20rem circle at 50% -5%, color-mix(in srgb, var(--gh-rim) calc(var(--gh-glint) * 45%), transparent), transparent 65%);border:1px solid var(--app-border);border-radius:var(--app-radius);box-shadow:var(--app-shadow-sm);position:relative}.gh-pane{background-color:var(--gh-tint);background-image:var(--gh-noise), radial-gradient(26rem circle at 50% -8%, color-mix(in srgb, var(--gh-rim) calc(var(--gh-glint) * 55%), transparent), transparent 62%);border-radius:var(--app-radius-lg);box-shadow:var(--app-shadow-sm), inset 0 1px 0 0 color-mix(in srgb, var(--gh-rim) 22%, transparent);border:1px solid #0000;position:relative}@supports (backdrop-filter:blur(1px)){.gh-pane{backdrop-filter:blur(var(--gh-blur)) saturate(var(--gh-saturate))}}.gh-pane:before{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(180deg, color-mix(in srgb, var(--gh-rim) 42%, transparent), color-mix(in srgb, var(--gh-rim) 6%, transparent) 40%, transparent 70%);-webkit-mask-composite:xor;padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;mask-composite:exclude;mask-mode:match-source,match-source}.gh-overlay{background-color:var(--gh-tint-strong);background-image:var(--gh-noise), radial-gradient(32rem circle at 50% -6%, color-mix(in srgb, var(--gh-rim) calc(var(--gh-glint) * 60%), transparent), transparent 60%);border:1px solid color-mix(in srgb, var(--gh-rim) 16%, transparent);border-radius:var(--app-radius-lg);box-shadow:var(--app-shadow), inset 0 1px 0 0 color-mix(in srgb, var(--gh-rim) 28%, transparent);position:relative}@supports (backdrop-filter:blur(1px)){.gh-overlay{backdrop-filter:blur(28px) saturate(var(--gh-saturate))}}.gh-inset{background-color:color-mix(in srgb, var(--app-bg) 55%, transparent);border:1px solid var(--app-border);border-radius:var(--app-radius-sm);box-shadow:inset 0 1px 2px #00000040}.gh-card{aspect-ratio:5/7;border:1px solid color-mix(in srgb, var(--gh-card,var(--app-border)) 45%, transparent);color:var(--app-text);isolation:isolate;transition:transform var(--app-duration) var(--app-ease), box-shadow var(--app-duration) var(--app-ease), border-color var(--app-duration-fast) var(--app-ease);background-color:color-mix(in srgb, var(--gh-card,var(--app-surface)) 16%, var(--app-surface));background-image:var(--gh-noise), radial-gradient(120% 80% at 50% -20%, color-mix(in srgb, var(--gh-rim) 30%, transparent), transparent 62%), linear-gradient(165deg, color-mix(in srgb, var(--gh-card,transparent) 22%, transparent), transparent 55%);box-shadow:var(--app-shadow-sm), inset 0 1px 0 0 color-mix(in srgb, var(--gh-rim) 26%, transparent);border-radius:.75rem;flex-direction:column;justify-content:space-between;padding:.45rem .5rem;display:flex;position:relative;overflow:hidden}.gh-card[data-swap=true]{border-color:color-mix(in srgb, var(--gh-swap) 75%, transparent);box-shadow:var(--app-shadow-sm), inset 0 0 0 1px color-mix(in srgb, var(--gh-swap) 40%, transparent), inset 0 -1.5rem 2rem -1rem color-mix(in srgb, var(--gh-swap) 30%, transparent)}.gh-card[data-selected=true]{border-color:var(--app-accent);box-shadow:0 .75rem 1.5rem -.5rem #00000073, 0 0 0 2px var(--app-accent), inset 0 1px 0 0 color-mix(in srgb, var(--gh-rim) 45%, transparent);transform:translateY(-.45rem)}button.gh-card:not(:disabled){cursor:pointer}button.gh-card:not(:disabled):hover{border-color:color-mix(in srgb, var(--gh-card,var(--app-border-bright)) 80%, transparent);transform:translateY(-.2rem)}button.gh-card:not(:disabled):active{transform:translateY(-.1rem)scale(.985)}button.gh-card[data-selected=true]:not(:disabled):hover{transform:translateY(-.55rem)}.gh-pip{background:var(--gh-card,var(--app-text-dim));block-size:.55rem;inline-size:.55rem;box-shadow:inset 0 1px 0 0 color-mix(in srgb, var(--gh-rim) 45%, transparent);border-radius:999px;display:inline-block}.gh-hand{overscroll-behavior:contain;grid-template-columns:repeat(auto-fill,minmax(4rem,1fr));gap:.5rem;max-height:15rem;padding-top:.6rem;display:grid;overflow-y:auto}.gh-die{border:1px solid color-mix(in srgb, var(--gh-rim) 16%, transparent);background-color:color-mix(in srgb, var(--app-text) 92%, var(--app-accent));background-image:radial-gradient(140% 100% at 30% -20%,#fffffff2,#fff0 58%),linear-gradient(170deg,#ffffff80,#00000024);border-radius:.9rem;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:.1rem;block-size:3.25rem;inline-size:3.25rem;padding:.45rem;display:grid;position:relative;box-shadow:0 .5rem 1rem -.35rem #0000008c,inset 0 -.35rem .6rem -.3rem #00000038,inset 0 1px #ffffffe6}.gh-pip-dot{background:radial-gradient(circle at 40% 35%,#2b2440,#0d0b14);border-radius:999px;place-self:center;block-size:.5rem;inline-size:.5rem;box-shadow:inset 0 1px 1px #0009,0 1px #ffffff8c}.gh-die[data-hidden=true]{border:1px dashed color-mix(in srgb, var(--app-text-dim) 70%, transparent);background-color:color-mix(in srgb, var(--app-bg) 70%, transparent);background-image:radial-gradient(120% 90% at 50% -15%, color-mix(in srgb, var(--gh-rim) 12%, transparent), transparent 60%);color:var(--app-text-dim);font-family:var(--app-font-mono);box-shadow:inset 0 1px 0 0 color-mix(in srgb, var(--gh-rim) 10%, transparent);grid-template-rows:1fr;grid-template-columns:1fr;place-items:center;font-size:1.35rem;font-weight:700;display:grid}.gh-orb{isolation:isolate;flex-direction:column;align-items:center;gap:.6rem;padding:1.1rem 1rem .9rem;display:flex;position:relative}.gh-orb:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(circle at 50% 22%, color-mix(in srgb, var(--gh-rim) 12%, transparent), transparent 42%), radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--app-accent) 14%, transparent), color-mix(in srgb, var(--gh-swap) 8%, transparent) 55%, transparent 72%);border-radius:999px;block-size:15rem;inline-size:15rem;position:absolute;inset-block-start:-.5rem;inset-inline:50%;translate:-50%}@media (prefers-reduced-transparency:reduce){.gabriels-horn-theme .gh-pane,.gabriels-horn-theme .gh-overlay,.gabriels-horn-theme .gh-fill{background-color:var(--app-surface);backdrop-filter:none;background-image:none}.gabriels-horn-theme .gh-scene:before,.gabriels-horn-theme .gh-orb:before,.gabriels-horn-theme .gh-pane:before{display:none}}.gabriels-horn-theme.app-high-contrast .gh-pane,.gabriels-horn-theme.app-high-contrast .gh-overlay,.gabriels-horn-theme.app-high-contrast .gh-fill{background-color:var(--app-surface);border-color:var(--app-border-bright);backdrop-filter:none;background-image:none}.gabriels-horn-theme.app-high-contrast .gh-scene:before,.gabriels-horn-theme.app-high-contrast .gh-orb:before,.gabriels-horn-theme.app-high-contrast .gh-pane:before{display:none}.gabriels-horn-theme.app-high-contrast .gh-card{border-width:2px;border-color:var(--gh-card,var(--app-border-bright));background-image:none}@media (prefers-reduced-motion:reduce){.gh-card{transition:none}.gh-card[data-selected=true],button.gh-card:not(:disabled):hover,button.gh-card:not(:disabled):active{transform:none}}@media (forced-colors:active){.gh-card,.gh-die,.gh-fill,.gh-pane,.gh-overlay{backdrop-filter:none;background-image:none}.gh-pip-dot{background:canvastext}}
