/* Exodi site — shared by index, get and 404.
   Colour tokens are written by exodi.js (one :root rule, theme v4 generator at the lab's build 20).
   The values below are only the fallback for a page without JavaScript (exodi.js's own output for
   Garnet, or Travertine when the system prefers light; Apricot, the Default feel): regenerate them
   when the generator changes. */
:root{
  color-scheme:dark;
  --bg0:#3a2a2c;
  --bg1:#221517;
  --bg2:#301f1d;
  --bg3:#3b2826;
  --bg4:#291916;
  --key:#723a26;
  --t1:#dacfc7;
  --t2:#bdb2ab;
  --t3:#a69b94;
  --t4:#817670;
  --ac:#de8a4a;
  --ac2:#b66520;
  --onac:#fff9f5;
  --acfill:linear-gradient(180deg,#e89951 0%,#e3914d 25%,#de8a4a 50%,#d98347 75%,#d37b44 100%);
  --acfill-p:linear-gradient(180deg,#d37b44 0%,#d98347 25%,#de8a4a 50%,#e3914d 75%,#e89951 100%);
  --ok:#33ac5a;
  --idle:#eab526;
  --dg:#e24947;
  --strm:#8557c8;
  --gold:#d4a43e;
  --slv:#aeb6c2;
  --brz:#c17e50;
  --ink:#0b0304;
  --ground:radial-gradient(150% 115% at 76.2% -6.2%,#723a26 0.0%,#6e3626 6.9%,#693226 13.8%,#642f27 20.6%,#5e2c28 27.5%,#582a29 34.4%,#522829 41.3%,#4b2629 48.1%,#442428 55.0%);
  --rail:rgba(34,21,23,0.94);
  --paper:rgba(48,31,29,0.94);
  --card-shadow:0 2px 5px -1px rgba(11,3,4,0.105),0 10px 24px -6px rgba(11,3,4,0.158);
  --inner-shadow:0 2px 5px -1px rgba(11,3,4,0.105),0 10px 24px -6px rgba(11,3,4,0.158);
  --lift-shadow:0 2px 5px -1px rgba(11,3,4,0.21),0 10px 24px -6px rgba(11,3,4,0.315);
  --rcard:5px;
  --rnest:8px;
  --gap:5px;
  --tile-rail:linear-gradient(180deg,#33221e 0%,#32211d 25%,#301f1d 50%,#2f1d1c 75%,#2d1c1b 100%);
  --tile-rail-p:linear-gradient(180deg,#2d1c1b 0%,#2f1d1c 25%,#301f1d 50%,#32211d 75%,#33221e 100%);
  --tile-rail-h:linear-gradient(180deg,#392824 0%,#382623 25%,#362522 50%,#352321 75%,#332220 100%);
  --tile-rail-c:#301f1d;
  --tile-rail-hc:#362522;
  --tile-paper:linear-gradient(180deg,#44322e 0%,#43312d 25%,#412f2c 50%,#402d2b 75%,#3e2c2a 100%);
  --tile-paper-p:linear-gradient(180deg,#3e2c2a 0%,#402d2b 25%,#412f2c 50%,#43312d 75%,#44322e 100%);
  --tile-paper-h:linear-gradient(180deg,#4b3834 0%,#493733 25%,#483532 50%,#463331 75%,#443230 100%);
  --tile-paper-c:#412f2c;
  --tile-paper-hc:#483532;
  --well-rail:linear-gradient(180deg,#160a0c 0%,#170b0d 25%,#190d0e 50%,#1a0e0f 75%,#1c0f10 100%);
  --well-rail-c:#190d0e;
  --well-paper:linear-gradient(180deg,#231312 0%,#251413 25%,#261613 50%,#281714 75%,#291915 100%);
  --well-paper-c:#261613;
  --rowhov-rail:#1b0f11;
  --rowhov-paper:#291916;
  --sel:linear-gradient(180deg,#332628 0%,#342729 25%,#36292a 50%,#382b2b 75%,#392c2c 100%);
  --sel-c:#36292a;
  --hov:color-mix(in srgb,var(--t1) 7%,transparent);
  --act:color-mix(in srgb,var(--t1) 11%,transparent);
  --bd:color-mix(in srgb,var(--t1) 16%,transparent);
  --actint:color-mix(in srgb,var(--ac) 16%,transparent);
  --acink:color-mix(in srgb,var(--ac) 32%,var(--t1));
  --dgt:color-mix(in srgb,var(--dg) 15%,transparent);
  --off:var(--t3);
  --scrim:rgba(11,3,4,0.62);
  --dim:rgba(11,3,4,0.34);
  --gtex:none;
}
@media (prefers-color-scheme:light){:root{
  color-scheme:light;
  --bg0:#cbbdbd;
  --bg1:#e5dcd5;
  --bg2:#f2e9e2;
  --bg3:#fcf3ed;
  --bg4:#fffdfb;
  --key:#fcbaa9;
  --t1:#332821;
  --t2:#463b34;
  --t3:#594d46;
  --t4:#74675f;
  --ac:#bb7642;
  --ac2:#95531b;
  --onac:#fff9f5;
  --acfill:linear-gradient(180deg,#c68449 0%,#c17d46 25%,#bb7642 50%,#b66f3f 75%,#b0683b 100%);
  --acfill-p:linear-gradient(180deg,#b0683b 0%,#b66f3f 25%,#bb7642 50%,#c17d46 75%,#c68449 100%);
  --ok:#33ac5a;
  --idle:#eab526;
  --dg:#e24947;
  --strm:#8557c8;
  --gold:#d4a43e;
  --slv:#89919c;
  --brz:#c17e50;
  --ink:#3b3029;
  --ground:radial-gradient(150% 115% at 76.2% -6.2%,#fcbaa9 0.0%,#fab9aa 8.5%,#f7b7ab 17.0%,#f4b7ad 25.5%,#f0b6ae 34.0%,#ebb6b0 42.5%,#e6b6b2 51.0%,#e0b7b4 59.5%,#dab7b6 68.0%);
  --rail:rgba(229,220,213,0.94);
  --paper:rgba(242,233,226,0.94);
  --card-shadow:0 2px 5px -1px rgba(59,48,41,0.105),0 10px 24px -6px rgba(59,48,41,0.158);
  --inner-shadow:0 2px 5px -1px rgba(59,48,41,0.105),0 10px 24px -6px rgba(59,48,41,0.158);
  --lift-shadow:0 2px 5px -1px rgba(59,48,41,0.21),0 10px 24px -6px rgba(59,48,41,0.315);
  --rcard:5px;
  --rnest:8px;
  --gap:5px;
  --tile-rail:linear-gradient(180deg,#f4ece4 0%,#f3ebe3 25%,#f2e9e2 50%,#f1e8e1 75%,#f0e7e0 100%);
  --tile-rail-p:linear-gradient(180deg,#f0e7e0 0%,#f1e8e1 25%,#f2e9e2 50%,#f3ebe3 75%,#f4ece4 100%);
  --tile-rail-h:linear-gradient(180deg,#fdf5ed 0%,#fcf4ec 25%,#fbf2eb 50%,#faf1ea 75%,#f9f0e9 100%);
  --tile-rail-c:#f2e9e2;
  --tile-rail-hc:#fbf2eb;
  --tile-paper:linear-gradient(180deg,#fffffe 0%,#fffefe 25%,#fffdfb 50%,#fffbf9 75%,#fffaf6 100%);
  --tile-paper-p:linear-gradient(180deg,#fffaf6 0%,#fffbf9 25%,#fffdfb 50%,#fffefe 75%,#fffffe 100%);
  --tile-paper-h:linear-gradient(180deg,#fffffe 0%,#fffefe 25%,#fffdfb 50%,#fffbf9 75%,#fffaf6 100%);
  --tile-paper-c:#fffdfb;
  --tile-paper-hc:#fffdfb;
  --well-rail:linear-gradient(180deg,#f2e8e1 0%,#f3eae2 25%,#f4ebe3 50%,#f5ece5 75%,#f6eee6 100%);
  --well-rail-c:#f4ebe3;
  --well-paper:linear-gradient(180deg,#fff6ef 0%,#fff7f2 25%,#fff9f4 50%,#fffaf7 75%,#fffcf9 100%);
  --well-paper-c:#fff9f4;
  --rowhov-rail:#fffdfb;
  --rowhov-paper:#fffdfb;
  --sel:linear-gradient(180deg,#d1c7c1 0%,#d2c9c2 25%,#d3cac3 50%,#d4cbc4 75%,#d5cdc5 100%);
  --sel-c:#d3cac3;
  --hov:color-mix(in srgb,var(--t1) 6%,transparent);
  --act:color-mix(in srgb,var(--t1) 10%,transparent);
  --bd:color-mix(in srgb,var(--t1) 20%,transparent);
  --actint:color-mix(in srgb,var(--ac) 14%,transparent);
  --acink:color-mix(in srgb,var(--ac) 42%,var(--t1));
  --dgt:color-mix(in srgb,var(--dg) 15%,transparent);
  --off:var(--t3);
  --scrim:rgba(59,48,41,0.4);
  --dim:rgba(59,48,41,0.16);
}}

/* ---- faces: the app's own bundled fonts (app/assets/fonts), self-hosted, nothing from a third party ---- */
@font-face{font-family:'Outfit';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/Outfit/Outfit-Regular.woff') format('woff')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/Outfit/Outfit-Medium.woff') format('woff')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/Outfit/Outfit-SemiBold.woff') format('woff')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/Outfit/Outfit-Bold.woff') format('woff')}
@font-face{font-family:'Literata';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/Literata/Literata-Regular.woff') format('woff')}
@font-face{font-family:'Literata';font-style:italic;font-weight:400;font-display:swap;src:url('fonts/Literata/Literata-Italic.woff') format('woff')}
@font-face{font-family:'Literata';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/Literata/Literata-SemiBold.woff') format('woff')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/JetBrainsMono/JetBrainsMono-Regular.woff') format('woff')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/JetBrainsMono/JetBrainsMono-Medium.woff') format('woff')}
@font-face{font-family:'Commissioner';font-style:normal;font-weight:200;font-display:swap;src:url('fonts/Commissioner/Commissioner-ExtraLight.woff') format('woff')}
@font-face{font-family:'Commissioner';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/Commissioner/Commissioner-Light.woff') format('woff')}
/* icons: the app's own glyphs, as the app draws them (Solar Bold, else Linear at stroke 2), inline as
   <svg class="i"><use href="#i-XXXX"/></svg>; the symbols are generated by website/build_icons.py. Sized by font-size, coloured by color. */
.i{font-size:18px;width:1em;height:1em;display:inline-block;vertical-align:middle;flex:none;fill:currentColor;overflow:visible;user-select:none}

/* ---- the fixed tokens: brand, type, shape (Severe feel) ---- */
:root{
  --crimson:#C94064;--brand-gold:#D4A43E; /* logo and wordmark only */
  --ui:'Outfit',system-ui,-apple-system,'Segoe UI',sans-serif;
  --prose:'Literata',Georgia,'Times New Roman',serif;
  --mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace;
  /* ΕΞΟΔΟΣ is set in Literata, as in the app (auth backdrop, splash) */
  --greek:'Literata',Georgia,serif;
  --rcard:5px;--rnest:8px;--rover:10px;--gap:5px;
  /* Side columns: the approved site's 290 | 280, narrowing on smaller windows. Drag the gaps to resize (200-420, remembered per browser, like the app). */
  --col-l:clamp(240px,20vw,290px);
  --col-r:clamp(240px,19.5vw,280px);
}

/* ---- motion v2 (design/v3/motion-lab.html, the Everything profile: speed 1, bounce .3) ----
   curves by slot: enter / exit / move / hover; springs as linear() from the lab's closed form */
:root{
  --c-enter:cubic-bezier(.05,.7,.1,1);--c-exit:cubic-bezier(.3,0,1,1);--c-move:cubic-bezier(.2,0,0,1);--c-hover:ease;
  --c-spring:linear(0,.0164,.0598,.1226,.1984,.2816,.3681,.4542,.5374,.6158,.6879,.7531,.8108,.8611,.904,.9399,.9694,.9929,1.0112,1.0249,1.0346,1.041,1.0446,1.0459,1.0455,1.0438,1.0411,1.0377,1.034,1.03,1.026,1.0222,1.0185,1.0151,1.012,1.0093,1.0069,1.0049,1.0031,1.0017,1);
  --c-slideopen:linear(0,.0119,.0437,.09,.1463,.2091,.2753,.3427,.4095,.4742,.5359,.5939,.6476,.6969,.7417,.782,.8178,.8495,.8773,.9014,.9221,.9398,.9548,.9673,.9777,.9861,.9929,.9983,1.0025,1.0056,1.0079,1.0094,1.0104,1.011,1.0111,1.011,1.0106,1.0101,1.0095,1.0088,1);
  /* role durations, in / out */
  --d-hover-in:90ms;--d-hover-out:130ms;--d-press-in:50ms;--d-press-out:150ms;--d-micro-in:120ms;--d-micro-out:100ms;
  --d-float-in:140ms;--d-float-out:90ms;--d-modal-in:200ms;--d-modal-out:140ms;--d-takeover-in:240ms;--d-takeover-out:160ms;
  --d-layout-in:220ms;--d-layout-out:170ms;--d-swap-in:140ms;--d-swap-out:100ms;--d-toast-in:260ms;--d-toast-out:180ms;
  --d-scroll:200ms;--d-reveal:400ms;--d-pop:270ms;
  --loop-typing:1200ms;--loop-pulse:1600ms;--loop-shimmer:1500ms;
  --amb-play:running;
  /* travel and scale */
  --float-y:4px;--float-s:.96;--modal-y:8px;--modal-s:.97;--take-y:8px;--take-s:.985;
  --arrive-y:4px;--send-y:3px;--count-y:4px;--pop-from:.6;
  --press-icon:.88;--press-pill:.97;--press-tile:.98;
}
/* Reduced motion substitutes instead of removing: no travel, no scale, no bounce, durations kept;
   loops sit at their rest frame. html.rm is set by exodi.js (the site's Motion switch or the system). */
html.rm{
  --float-y:0px;--float-s:1;--modal-y:0px;--modal-s:1;--take-y:0px;--take-s:1;
  --arrive-y:0px;--send-y:0px;--count-y:0px;--pop-from:1;--press-icon:1;--press-pill:1;--press-tile:1;
  --c-spring:linear(0,.0151,.0537,.1073,.1698,.2367,.3046,.3714,.4355,.4958,.5519,.6034,.6503,.6926,.7307,.7646,.7948,.8215,.845,.8657,.8838,.8996,.9134,.9254,.9358,.9449,.9527,.9594,.9652,.9702,.9745,.9782,.9814,.9841,.9865,.9885,.9902,.9916,.9929,.994,1);
  --c-slideopen:var(--c-spring);
}
/* loops never run where nobody sees them: a hidden tab pauses them */
html.tab-hidden{--amb-play:paused}
@keyframes x-swapin{from{opacity:0}}
@keyframes x-arrive{from{opacity:0;transform:translateY(var(--arrive-y))}}
