@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url("./fonts/jetbrains-mono-regular.3a.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;src:url("./fonts/jetbrains-mono-medium.3a.woff2") format("woff2")}
@font-face{font-family:Alexandria;font-style:normal;font-weight:100 900;font-display:swap;src:url("./fonts/alexandria-arabic-wght-normal.3a.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:Alexandria;font-style:normal;font-weight:100 900;font-display:swap;src:url("./fonts/alexandria-latin-wght-normal.3a.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--logo-ground:transparent;color-scheme:light;--paper:#FAF8F3;--ink:#14161B;--ground:#eeece6;--muted:#565b61;--line:#b8bab6;--strong:#747b7d;--accent:#1F7A8C;--on-accent:#FAF8F3;--font:"JetBrains Mono",monospace;--ar:Alexandria,sans-serif;--space:24px}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;--paper:#14161B;--ink:#FAF8F3;--ground:#1b1f25;--muted:#b0b6bc;--line:#424b53;--strong:#8a939b;--accent:#4DB3C7;--on-accent:#14161B;--logo-ground:#FAF8F3}}
:root[data-theme="dark"]{color-scheme:dark;--paper:#14161B;--ink:#FAF8F3;--ground:#1b1f25;--muted:#b0b6bc;--line:#424b53;--strong:#8a939b;--accent:#4DB3C7;--on-accent:#14161B;--logo-ground:#FAF8F3}
*{box-sizing:border-box}html{scroll-padding-block-start:24px}body{margin:0;background:var(--ground);color:var(--ink);font:400 16px/1.65 var(--font);font-synthesis:none;text-rendering:optimizeLegibility}body:lang(ar){font-family:var(--ar);line-height:1.9}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-underline-offset:.22em;text-decoration-thickness:1px}a:hover{color:var(--accent)}button{font:inherit;color:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button[hidden]{display:none!important}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:5px}::selection{background:var(--accent);color:var(--on-accent)}h1,h2,h3,p,pre,figure{margin:0}h1,h2,h3,strong{font-weight:500}h2,h3{text-wrap:balance}p{text-wrap:pretty}img{max-inline-size:100%;block-size:auto;display:block}ul{padding:0;margin:0;list-style:none}.shell{inline-size:calc(100% - 32px);max-inline-size:1248px;margin-inline:auto}.sr-only{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip{position:fixed;inset-block-start:12px;inset-inline-start:16px;z-index:20;padding:12px 16px;background:var(--paper);transform:translateY(-180%)}.skip:focus{transform:none}.site-header{padding-block:24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:12px;min-block-size:44px;text-decoration:none;font:500 14px/1.4 var(--font)}.brand-mark{display:block;inline-size:44px;block-size:44px;flex:none;background:var(--logo-ground) url("./assets/ershados-logo-placeholder.3a.webp") center/34px 34px no-repeat;border-radius:50%}.brand-slash{color:var(--accent)}.site-options{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.site-options a,.site-options button{display:inline-flex;align-items:center;justify-content:center;min-block-size:44px;padding:8px 12px;border:1px solid var(--strong);background:var(--paper);text-decoration:none;font-size:14px}.site-options a:lang(ar){font-family:var(--ar)}.site-options button:hover,.site-options a:hover{background:var(--ink);color:var(--paper)}.window{border:1px solid var(--strong);background:var(--paper);min-inline-size:0}.window-bar{min-block-size:40px;display:flex;gap:12px;align-items:center;padding:8px 12px;border-block-end:1px solid var(--strong);font:400 12px/1.5 var(--font)}.window-file{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.window-file>span{color:var(--accent)}.window-detail{color:var(--muted);margin-inline-start:auto;font-size:10px;letter-spacing:.06em}.window-controls{margin-inline-start:auto;white-space:nowrap;color:var(--muted)}.window-detail:not(:empty)+.window-controls{margin-inline-start:8px}.hero-content{padding:20px 16px 32px}.hero-top{display:flex;gap:16px;justify-content:space-between;align-items:center;flex-wrap:wrap}.utility{font:400 10px/1.6 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.ascii-badge{position:relative;display:inline-block;padding:6px 12px;border-inline:2px double var(--accent);color:var(--accent);font-size:12px;line-height:1.6;white-space:nowrap}.ascii-badge::before,.ascii-badge::after{position:absolute;inset-inline:0;text-align:center;line-height:1;font:400 12px/.6 var(--font);letter-spacing:0;content:"════════════";overflow:hidden}.ascii-badge::before{inset-block-start:0}.ascii-badge::after{inset-block-end:0}.status{font-size:14px}.hero-banner{text-align:center;padding-block:28px;position:relative}.frame-line{font:400 clamp(16px,4.4vw,66px)/.7 var(--font);color:var(--accent);letter-spacing:0;white-space:pre}.hero-banner h1{font:500 clamp(42px,10.2vw,148px)/1.25 var(--font);letter-spacing:-.06em;padding-block:20px}.hero-bottom{display:flex;flex-direction:column;gap:36px}.hero-copy{max-inline-size:640px}.lead{font-size:clamp(19px,2.1vw,28px);line-height:1.5;margin-block-end:20px}.muted{color:var(--muted)}.hero-copy>.muted{max-inline-size:55ch}.cta{display:inline-flex;align-items:center;gap:24px;background:var(--accent);color:var(--on-accent);padding:12px 20px;margin-block-start:28px;min-block-size:48px;text-decoration:none;font-weight:500}.cta:hover{background:var(--ink);color:var(--paper)}.ascii-box{align-self:center}.ascii{font:400 12px/1.25 var(--font);color:var(--accent)}.section-nav{display:grid;grid-template-columns:1fr 1fr;margin-block:24px 60px;border-block:1px solid var(--strong)}.section-nav a{display:flex;gap:10px;align-items:center;padding:16px 8px;font-size:12px;text-decoration:none;min-block-size:56px}.section-nav a:hover{background:var(--paper)}.nav-number{color:var(--accent);font-family:var(--font)}.chapter{margin-block-end:64px;scroll-margin-block-start:24px}.chapter-heading{display:flex;align-items:baseline;gap:16px;margin-block-end:24px}.section-index{font:400 32px/1 var(--font);color:var(--accent)}h2{font-size:clamp(22px,3.2vw,40px);line-height:1.35}.progress{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:20px 16px;border-block-end:1px solid var(--line);font-size:12px;color:var(--muted)}.block-bar{font:400 16px/1 var(--font);letter-spacing:.04em;color:var(--accent)}.ruled>li{padding:24px 16px;display:grid;gap:12px;border-block-end:1px solid var(--line)}.ruled>li:last-child{border-block-end:0}.ruled h3{font-size:17px;line-height:1.55}.ruled p{color:var(--muted);font-size:16px;max-inline-size:58ch}.preview-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-block:40px 20px}.preview-heading h3{font-size:18px}.screenshots{display:flex;flex-direction:column;gap:24px}.shot-image{padding:12px;background:var(--ground)}.shot-image img{inline-size:100%}.shot figcaption{font-size:12px;color:var(--muted);padding:16px;border-block-start:1px solid var(--line)}.shot-3 .shot-image img{max-inline-size:280px;margin-inline:auto}.shot-3 .shot-image{padding-block:24px}.road-note{padding:24px 16px 0;font-size:14px}.planned>div{display:grid;gap:10px}.planned .tag{justify-self:start;align-self:start;font-size:12px}.market-layout{padding:24px 16px;display:grid;gap:32px}.market-stamp{display:flex;align-items:center;gap:20px;font:400 12px/1.6 var(--font);color:var(--accent)}.market-stamp>span:first-child{display:none}.market-stamp strong{font-size:72px;line-height:1}.market-stamp pre{display:none;font-family:var(--font)}.prose p+p{margin-block-start:24px}.prose{max-inline-size:70ch}.contact-body{padding:24px 16px 32px}.contact-body .ascii-badge{margin-block-end:24px}.contact a{display:inline-block;overflow-wrap:anywhere;font-family:var(--font);min-block-size:44px;padding-block:8px;color:var(--accent)}.site-footer{display:flex;gap:20px;justify-content:space-between;align-items:center;border-block-start:1px solid var(--strong);padding-block:24px 40px;font:400 12px/1.6 var(--font)}:lang(ar) h2{line-height:1.6}:lang(ar) .lead{line-height:1.8}:lang(ar) .ruled h3{line-height:1.9}:lang(ar) .ascii-badge{line-height:1.9}:lang(ar) .section-nav a{font-size:12px}:lang(ar) .hero-copy{max-inline-size:660px}
@media(min-width:640px){.site-header{padding-block:32px}.hero-content{padding:28px 32px 40px}.section-nav{grid-template-columns:repeat(4,minmax(0,1fr));margin-block-end:80px}.section-nav a{font-size:14px;padding:20px 16px}.chapter{margin-block-end:88px}.chapter-heading{gap:24px}.section-index{font-size:48px}.ruled>li{padding:28px 32px;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:32px}.ruled .planned{grid-template-columns:minmax(0,1fr) auto}.progress{padding:24px 32px}.road-note{padding:24px 32px 0}.screenshots{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.shot-0{grid-column:1/-1}.shot-2{grid-column:1;grid-row:3}.shot-3{grid-column:2;grid-row:2/span 2}.shot-3 .shot-image img{max-inline-size:320px}.market-layout{padding:40px 32px;grid-template-columns:180px minmax(0,1fr);gap:40px}.market-stamp{flex-direction:column;align-items:flex-start;gap:24px}.market-stamp>span:first-child{display:block;font-size:10px;letter-spacing:.08em}.market-stamp strong{font-size:104px}.market-stamp pre{display:block;font-size:12px}.contact-body{padding:40px 32px}.contact{font-size:clamp(18px,2.1vw,28px)}}
@media(min-width:1024px){.hero-content{padding:32px 48px 48px}.hero-bottom{flex-direction:row;align-items:center;justify-content:space-between;gap:64px}.ascii-box{flex:none}.ascii{font-size:14px}.hero-banner{padding-block:40px}.hero-banner h1{padding-block:24px}.section-nav a{font-size:16px}.section-nav a:not(:last-child){border-inline-end:1px solid var(--line)}.window-bar{padding-inline:16px}.built-window{margin-inline-end:80px}.screenshots{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 320px;gap:32px}.shot-0{grid-column:1/3;grid-row:1}.shot-1{grid-column:1/3;grid-row:2}.shot-2{grid-column:1/3;grid-row:3}.shot-3{grid-column:3;grid-row:1/4;position:sticky;inset-block-start:24px}.shot-3 .shot-image{padding:16px}.shot-image{padding:20px}.roadmap-window{margin-inline-start:80px}.market-window{margin-inline-end:80px}.market-layout{grid-template-columns:220px minmax(0,1fr);gap:64px;padding:48px}.contact-body{display:grid;grid-template-columns:200px minmax(0,1fr);gap:48px;padding:48px;align-items:start}.contact-body>.ascii-badge{justify-self:start}.contact-window{margin-inline-start:80px}.utility{font-size:12px}.window-detail{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{.site-options,.section-nav,.skip{display:none}.shell{inline-size:100%;max-inline-size:none}.window{break-inside:avoid}.shot-3{position:static}body{background:#fff;color:#14161B}.chapter{margin-block-end:32px}}

/* Character frames remain real decorative text in the DOM. */
.ascii-badge{border:0;padding:0;text-align:center}.ascii-badge::before,.ascii-badge::after{content:none}.badge-frame{display:block;font:400 12px/.8 var(--font);white-space:pre;letter-spacing:0}.badge-label{display:block;padding:3px 8px;line-height:1.6}.status .badge-label{font-size:14px}
/* Small text on the desktop background needs the neutral contrast pair. */
.nav-number{color:var(--ink)}.brand-slash{color:var(--muted)}.brand:hover{color:var(--ink);text-decoration:underline}

/* One-time motion; all HTML starts in its readable, final state. */
.terminal-line{white-space:pre;position:relative}
.terminal-line::after{content:"";display:inline-block;inline-size:.65em;block-size:1em;margin-inline-start:.4em;background:currentColor;vertical-align:-.12em;opacity:0}
.terminal-line.has-cursor::after{animation:cursor-blink 1.2s steps(1,end) infinite,cursor-travel var(--type-time) steps(var(--type-steps),end) 180ms backwards}
@keyframes cursor-blink{0%,49%{opacity:1}50%,100%{opacity:0}}
.bar-cell{display:inline-block;transform-origin:center bottom}
.fill-pending .bar-cell{opacity:.18}
.window{position:relative;isolation:isolate}
.window:focus-within{z-index:3;outline:3px solid var(--accent);outline-offset:5px}
.window-help{font-size:12px;color:var(--muted);max-inline-size:80ch;margin-block:20px 0}
.window-handle{display:inline-flex;align-items:center;min-inline-size:0;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:start}
.window-handle:disabled{cursor:default;opacity:1}
.window-tools{position:absolute;inset-block-start:48px;inset-inline-start:12px;z-index:4;display:flex;gap:8px;padding:12px;background:var(--paper);border:1px solid var(--strong)}
.window-tools[hidden],.window-help[hidden]{display:none}
.window-tools button{inline-size:44px;block-size:44px;padding:0;background:var(--paper);border:1px solid var(--strong);font:400 20px/1 var(--font)}
.window-tools button:hover{background:var(--ink);color:var(--paper)}
.can-drag .window-bar{cursor:grab;user-select:none}
.can-drag .window-handle{cursor:grab;min-block-size:28px}
.can-drag .is-dragging,.can-drag .is-dragging .window-bar,.can-drag .is-dragging .window-handle{cursor:grabbing}
.window.is-dragging{z-index:4;transition:none;transform:none}
@media(hover:hover) and (prefers-reduced-motion:no-preference){
  .window{transition:transform 150ms ease-out}
  .window:hover:not(.is-dragging):not(:focus-within){transform:translateY(-2px)}
  .site-options a,.cta{transition:transform 150ms ease-out}
  .site-options a:hover,.cta:hover{transform:translateY(-2px)}
}
@media(prefers-reduced-motion:reduce){
  .window,.bar-cell{transform:none!important;translate:none!important;opacity:1!important}
  .terminal-line span{opacity:1!important}
  .terminal-line::after{animation:none!important;opacity:0!important}
  .fill-pending .bar-cell{opacity:1}
}
@media print{.window{transform:none!important;translate:none!important;opacity:1!important}.window-help,.window-tools{display:none!important}.bar-cell,.terminal-line span{opacity:1!important}.terminal-line::after{display:none}}

@keyframes cursor-travel{from{transform:translateX(var(--type-distance))}to{transform:translateX(0)}}
/* Keep the original desktop phone preview in its sticky reading position. */
@media(min-width:1024px){.shot-3{position:sticky}}
/* Reserve the mobile options row before JS reveals the theme toggle. */
@media(max-width:639px){.site-options{flex-basis:100%}}
