/* ============================================================
   THE PROMPT LIBRARY - editorial index
   Cool paper, near-black ink, condensed display type. Mono only for prompt text.
   Every group owns a colour; each page is tinted with its own.
   ============================================================ */
/* Two themes. The per-page accent arrives on <html> as --a-light / --a-dark
   (set inline by the build), and each theme picks the one it needs. Card and
   section colours work the same way with --cc-l / --cc-d. */
:root{
  color-scheme:light;
  --paper:#F3F4F7;
  --card:#FFFFFF;
  --ink:#0E1013;
  --ink-2:#3C414B;
  --mute:#636975;
  --mute-2:#9AA0AB;
  --line:#E3E6EC;
  --line-2:#CDD2DB;
  --bar-bg:rgba(243,244,247,.88);
  --res-bg:rgba(243,244,247,.97);
  --shot-bg:#EDEFF3;
  --chip-bg:rgba(255,255,255,.92);
  --shadow:0 6px 22px rgba(16,20,30,.07);
  --shadow-lg:0 24px 60px rgba(16,20,30,.22);
  --invert:#FFFFFF;
  --veil:rgba(243,244,247,.96);
  --veil-soft:rgba(243,244,247,.55);
  --accent:var(--a-light,#1F6FEB);
  --tint:var(--t-light,rgba(31,111,235,.07));
  --accent-ink:#FFFFFF;
  --accent-text:color-mix(in srgb,var(--accent) 80%,#000);
  --r:10px;
  --barh:58px;
  --display:"Bahnschrift","Segoe UI Semibold","Franklin Gothic Medium","Arial Narrow",system-ui,sans-serif;
  --body:"Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;
  --mono:"Cascadia Mono",Consolas,"SF Mono",Menlo,monospace;
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --paper:#0E1116;
  --card:#161A22;
  --ink:#E9EBF0;
  --ink-2:#B6BDC9;
  --mute:#868D9C;
  --mute-2:#636A79;
  --line:#232935;
  --line-2:#333A4A;
  --bar-bg:rgba(14,17,22,.88);
  --res-bg:rgba(14,17,22,.97);
  --shot-bg:#1C212B;
  --chip-bg:rgba(14,17,22,.86);
  --shadow:0 6px 22px rgba(0,0,0,.42);
  --shadow-lg:0 24px 60px rgba(0,0,0,.55);
  --invert:#0E1116;
  --veil:rgba(14,17,22,.96);
  --veil-soft:rgba(14,17,22,.58);
  --accent:var(--a-dark,#6EA8FF);
  --tint:var(--t-dark,rgba(110,168,255,.13));
  --accent-ink:#0E1116;
  --accent-text:var(--accent);
}
*{box-sizing:border-box}
body,.card,.gcard,.btn,.s-a,.tool,.bar,.res{transition:background-color .18s,border-color .18s,color .18s}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);
  font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;text-align:left}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
::selection{background:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--ink)}
html{scrollbar-color:var(--line-2) var(--paper)}
input,textarea,select{caret-color:var(--accent)}
/* the up-right arrow on links that open a website */
a.tool::after,.ov-links a::after{content:"";width:9px;height:9px;flex:none;background:currentColor;opacity:.55;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 2.5h5v5M9.5 2.5L2.5 9.5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 2.5h5v5M9.5 2.5L2.5 9.5'/%3E%3C/svg%3E") center/contain no-repeat}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- small label ---------- */
.micro{font-size:12.5px;font-weight:600;color:var(--ink-2)}

/* ---------- top bar ---------- */
.bar{position:sticky;top:0;z-index:60;height:var(--barh);background:var(--bar-bg);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.bar-in{max-width:1680px;margin:0 auto;padding:0 22px;height:100%;display:flex;gap:18px;align-items:center}
.brand{display:flex;align-items:baseline;gap:9px;text-decoration:none;white-space:nowrap}
.brand b{font-family:var(--display);font-weight:700;font-size:15px;letter-spacing:.02em;text-transform:uppercase}
.brand span{font-size:13px;color:var(--mute)}
.find{position:relative;flex:1 1 auto;max-width:540px}
.find input{width:100%;background:var(--card);border:1px solid var(--line-2);border-radius:8px;
  padding:9px 14px 9px 36px;color:var(--ink);font-size:14px;font-family:var(--body)}
.find input::placeholder{color:var(--mute)}
.find input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--tint)}
.find svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:15px;height:15px;
  stroke:var(--mute);fill:none;stroke-width:2}
.find kbd{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-family:var(--mono);
  font-size:10px;color:var(--mute-2);border:1px solid var(--line-2);border-radius:4px;padding:1px 5px}
.bar .count{font-size:12.5px;color:var(--mute);font-variant-numeric:tabular-nums;
  white-space:nowrap;margin-inline-start:auto}
.tbtn{width:34px;height:34px;flex:none;border:1px solid var(--line-2);border-radius:8px;
  background:var(--card);display:grid;place-items:center;transition:.14s}
.tbtn:hover{border-color:var(--accent);color:var(--accent)}
.tbtn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;
  stroke-linecap:round;stroke-linejoin:round}
.tbtn .moon{display:none}
:root[data-theme="dark"] .tbtn .sun{display:none}
:root[data-theme="dark"] .tbtn .moon{display:block}

/* ---------- search results panel ---------- */
.res{position:fixed;inset:var(--barh) 0 0 0;z-index:55;background:var(--res-bg);
  backdrop-filter:blur(8px);overflow-y:auto;display:none}
.res.on{display:block}
.res-in{max-width:920px;margin:0 auto;padding:34px 22px 80px}
.res h2{font-size:13px;font-weight:600;color:var(--mute);margin:30px 0 12px}
.res h2:first-child{margin-top:0}
.res a{display:flex;align-items:center;gap:14px;padding:12px 16px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r);margin-bottom:7px;text-decoration:none;transition:.14s}
.res a:hover{border-color:var(--accent);transform:translateX(2px)}
.res a i{width:8px;height:8px;border-radius:2px;flex:none}
.res a b{font-family:var(--display);font-weight:600;font-size:16px;flex:1;min-width:0}
.res a em{font-style:normal;font-size:12.5px;color:var(--mute)}
.res .none{color:var(--mute);padding:50px 0;text-align:center}

/* ---------- shell ---------- */
.shell{max-width:1680px;margin:0 auto;display:grid;grid-template-columns:282px minmax(0,1fr);align-items:start}
.side{position:sticky;top:var(--barh);max-height:calc(100vh - var(--barh));overflow-y:auto;
  padding:22px 14px 40px;border-inline-end:1px solid var(--line);scrollbar-width:thin}
/* three blocks, one job each: where you can go, what is on this page, tools */
.s-block+.s-block{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.s-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--mute);margin:0 0 8px;padding:0 10px}
.s-here-h{color:var(--accent-text);font-weight:600}
.s-a{display:flex;align-items:center;gap:9px;width:100%;padding:6px 10px;border-radius:7px;font-size:13.5px;
  color:var(--ink-2);text-decoration:none;transition:.14s;line-height:1.3;text-align:start}
.s-a:hover{background:var(--card);color:var(--ink)}
.s-a i{width:7px;height:7px;border-radius:2px;flex:none;background:var(--mute-2)}
/* a label never wraps: a long one ends in ... and shows in full on hover */
.s-a span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* the count: one small pill, always on its label's line */
.s-a em{flex:none;min-width:24px;padding:1px 6px;border-radius:999px;background:var(--paper);
  border:1px solid var(--line);font-style:normal;font-size:11px;line-height:1.45;font-variant-numeric:tabular-nums;
  color:var(--mute);text-align:center}
.s-lib .s-a{padding:5px 10px;font-size:13px}
.s-a[aria-current="page"]{background:var(--card);color:var(--ink);font-weight:600;
  box-shadow:inset 3px 0 0 var(--accent)}
.s-a[aria-current="page"] em{color:var(--accent-text);border-color:var(--accent)}
.s-cat[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);font-weight:600}
.s-cat[aria-pressed="true"] em{color:var(--accent);background:var(--accent-ink);border-color:transparent}
/* everything / starred, side by side */
.s-pair{display:flex;gap:6px;margin-bottom:8px}
.s-pair .s-a{flex:1;width:auto;min-width:0}
/* a subgroup: a chevron that folds it, then its name; categories indented under a guide line */
.s-row{display:flex;align-items:center;gap:2px}
.s-row .s-a{flex:1;width:auto;min-width:0}
.s-tog,.s-gap{flex:none;width:22px;height:28px;display:grid;place-items:center;border-radius:6px;color:var(--mute)}
.s-tog:hover{background:var(--card);color:var(--ink)}
.s-tog svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;
  stroke-linejoin:round;transition:transform .16s}
.s-node.open>.s-row .s-tog svg{transform:rotate(90deg)}
.s-node+.s-node{margin-top:2px}
.s-top{font-weight:500;color:var(--ink)}
.s-kids{display:none;margin:2px 0 8px;margin-inline-start:22px;padding-inline-start:6px;
  border-inline-start:1px solid var(--line-2)}
.s-node.open>.s-kids{display:block}
.s-sub{font-size:13px;padding:5px 9px}

.wrap{padding:30px 24px 90px;min-width:0}

/* ---------- page head ---------- */
.phead{margin:0 0 30px;padding-bottom:22px;border-bottom:1px solid var(--line-2)}
.phead-t{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 16px;margin:0 0 12px}
.phead-t h1{margin:0}
.pcount{font-size:14px;color:var(--mute);font-variant-numeric:tabular-nums;white-space:nowrap}
.pcount b{color:var(--accent-text);font-weight:600}
.phead h1{font-family:var(--display);font-weight:700;font-size:clamp(2rem,5vw,3.4rem);
  letter-spacing:-.02em;line-height:1;margin:0 0 12px;text-transform:uppercase}
.phead p{margin:0;color:var(--ink-2);max-width:62ch;font-size:16px}

/* ---------- card grid ---------- */
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:stretch}
@media(max-width:1480px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.grid{grid-template-columns:minmax(0,1fr)}}
@media(min-width:1900px){.grid{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* ---------- section > subgroup > category headings ---------- */
.node-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;
  margin:56px 0 0;padding-top:26px;border-top:1px solid var(--line-2)}
.board>.node-head:first-child,.board>.cat-head:first-child{margin-top:0;padding-top:0;border-top:0}
.node-head h2{font-family:var(--display);font-weight:700;font-size:clamp(1.35rem,2.4vw,1.8rem);
  letter-spacing:-.01em;line-height:1.1;margin:0}
.node-head em{font-style:normal;font-size:13px;font-weight:600;color:var(--accent-text);font-variant-numeric:tabular-nums}
.node-head p{flex:0 0 100%;margin:3px 0 0;color:var(--mute);font-size:14px;line-height:1.5}
.node-head+.grid{margin-top:18px}
.cat-head{--cc:var(--cc-l,#5B6070);display:flex;align-items:baseline;flex-wrap:wrap;gap:3px 9px;margin:30px 0 13px}
:root[data-theme="dark"] .cat-head{--cc:var(--cc-d,#8A90A0)}
.node-head+.cat-head{margin-top:20px}
.cat-head i{width:8px;height:8px;border-radius:2px;background:var(--cc);flex:none;align-self:center}
.cat-head h3{font-family:var(--display);font-weight:600;font-size:16.5px;margin:0;line-height:1.2;color:var(--ink)}
.cat-head em{font-style:normal;font-size:12px;color:var(--mute);font-variant-numeric:tabular-nums}
.cat-head p{flex-basis:100%;margin:0;padding-inline-start:17px;color:var(--mute);font-size:13px;line-height:1.45}

.card,.gcard,.ov-box{--cc:var(--cc-l,#5B6070)}
:root[data-theme="dark"] .card,:root[data-theme="dark"] .gcard,:root[data-theme="dark"] .ov-box{--cc:var(--cc-d,#8A90A0)}
.card{position:relative;display:flex;flex-direction:column;margin:0;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;transition:.18s}
.card:hover{border-color:var(--line-2);box-shadow:var(--shadow);transform:translateY(-2px)}
.shot{display:block;position:relative;width:100%;background:var(--shot-bg);cursor:pointer}
.shot img{width:100%;height:auto}
.card .shot{flex:none;aspect-ratio:5/4;max-height:300px;overflow:hidden;display:flex;flex-direction:column}
.card .shot>img{width:100%;height:100%;object-fit:cover}
/* the points sit together in the middle of the box */
.card .shot>.gives{flex:1;display:flex;flex-direction:column;justify-content:center;gap:11px;
  background:color-mix(in srgb,var(--cc) 4%,var(--card))}
.card .shot>.gives li{margin-bottom:0}
.card .pair{flex:1;min-height:0}
.card .pair figure{overflow:hidden;min-height:0}
.card .pair img{width:100%;height:100%;object-fit:contain}
.card .pair.stack{grid-template-columns:1fr;grid-template-rows:1fr 1fr}
.card .pair-note{flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.star{position:absolute;top:9px;inset-inline-end:9px;width:28px;height:28px;border-radius:6px;
  background:var(--chip-bg);border:1px solid var(--line);display:grid;place-items:center;
  opacity:0;transition:.16s;z-index:4}
.card:hover .star,.star[aria-pressed="true"]{opacity:1}
.star svg{width:14px;height:14px;fill:none;stroke:var(--ink-2);stroke-width:1.8}
.star[aria-pressed="true"] svg{fill:var(--cc);stroke:var(--cc)}
.body{padding:14px 16px 16px;flex:1;display:flex;flex-direction:column}
.meta{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap;
  font-size:12px;color:var(--mute);font-variant-numeric:tabular-nums}
.meta .cat{color:var(--cc);font-weight:600}
.meta .sep{width:1px;height:9px;background:var(--line-2)}
.card h3{font-family:var(--display);font-weight:600;font-size:18px;letter-spacing:-.005em;
  margin:0 0 6px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.excerpt{font-family:var(--mono);font-size:11px;line-height:1.6;color:var(--mute);margin:0 0 13px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.what{margin:0 0 13px;font-size:13.5px;line-height:1.5;color:var(--ink-2);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.acts{display:flex;gap:7px;margin-top:auto}
.btn{border:1px solid var(--line-2);border-radius:7px;padding:8px 13px;font-size:12.5px;
  color:var(--ink-2);transition:.14s;display:flex;align-items:center;gap:7px;text-decoration:none}
.btn:hover{border-color:var(--ink-2);background:var(--paper)}
.btn-main{flex:1;justify-content:center;background:var(--ink);color:var(--invert);border-color:var(--ink)}
.btn-main:hover{background:var(--cc);border-color:var(--cc);color:var(--invert)}
.btn svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.9}
/* on a card the copy button takes the card's colour, quietly: a page of
   solid slabs shouted louder than the pictures */
.card .btn-main{background:color-mix(in srgb,var(--cc) 15%,var(--card));color:var(--ink);
  border-color:color-mix(in srgb,var(--cc) 32%,var(--card));font-weight:600}
.card .btn-main:hover{background:var(--cc);border-color:var(--cc);color:var(--invert)}

/* which AI to paste into */
.tool{margin-inline-start:auto;display:inline-flex;align-items:center;gap:6px;
  font-size:11.5px;font-weight:500;color:var(--ink-2);background:var(--paper);
  border:1px solid var(--line-2);border-radius:999px;padding:3px 9px;white-space:nowrap;
  text-decoration:none;transition:.14s}
.tool::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--cc);flex:none}
a.tool:hover{border-color:var(--cc);color:var(--cc)}

/* what you get back */
.gives-h{display:flex;align-items:center;gap:10px;padding:10px 16px;
  background:color-mix(in srgb,var(--cc) 10%,var(--card));border-bottom:1px solid var(--line);
  font-size:12.5px;color:var(--cc);font-weight:600}
:root:not([data-theme="dark"]) .gives-h{color:color-mix(in srgb,var(--cc) 78%,#000)}
.gives-h span{margin-inline-start:auto;color:var(--mute);font-weight:400;font-size:11.5px;white-space:nowrap}
.gives{margin:0;padding:14px 16px;list-style:none;background:var(--card)}
.gives li{position:relative;padding-inline-start:23px;margin-bottom:9px;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.gives li:last-child{margin-bottom:0}
.gives li::before{content:"";position:absolute;inset-inline-start:2px;top:5px;width:9px;height:5px;
  border-left:2px solid var(--cc);border-bottom:2px solid var(--cc);transform:rotate(-45deg)}

/* before / after */
.pair{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-2)}
.pair figure{position:relative;margin:0;background:var(--shot-bg)}
.pair img{width:100%;height:auto}
.pair figcaption{position:absolute;inset-inline-start:7px;top:7px;font-size:11px;font-weight:600;
  background:var(--chip-bg);color:var(--ink);padding:2px 8px;border-radius:5px}
.pair-note{font-size:11.5px;color:var(--mute);padding:7px 16px;border-top:1px solid var(--line);background:var(--paper)}

.empty{text-align:center;padding:80px 20px;color:var(--mute)}
.empty h2{font-family:var(--display);font-size:21px;color:var(--ink);margin:0 0 8px;font-weight:600}

/* ---------- moving header (index only) ----------
   Each row is ONE wide image tiled with background-repeat and slid sideways.
   Three decodes for the whole effect, instead of hundreds of <img> tags -
   which is exactly what used to get the page killed on a phone. */
.hero{position:relative;overflow:hidden;background:var(--paper);border-bottom:1px solid var(--line)}
.strips{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;gap:10px;opacity:.42}
.strip{height:150px;background-repeat:repeat-x;background-size:auto 150px}
.strip-1{background-image:url("strip-1.jpg");animation:slideL 150s linear infinite}
.strip-2{background-image:url("strip-2.jpg");animation:slideR 195s linear infinite}
.strip-3{background-image:url("strip-3.jpg");animation:slideL 240s linear infinite}
@keyframes slideL{from{background-position-x:0}to{background-position-x:-4680px}}
@keyframes slideR{from{background-position-x:-4680px}to{background-position-x:0}}
/* the headline is left-aligned, so the veil is heaviest on the left and lets
   the pictures breathe on the right */
.hero-veil{position:absolute;inset:0;z-index:1;background:
  linear-gradient(to right, var(--veil) 0%, var(--veil) 40%, var(--veil-soft) 72%, transparent 100%),
  linear-gradient(to bottom, var(--paper) 0%, transparent 20%, transparent 80%, var(--paper) 100%)}
@media(max-width:1100px){
  .hero-veil{background:
    linear-gradient(to right, var(--veil) 0%, var(--veil) 62%, var(--veil-soft) 100%),
    linear-gradient(to bottom, var(--paper) 0%, transparent 20%, transparent 80%, var(--paper) 100%)}
}
.hero-in{position:relative;z-index:2;max-width:1180px;margin:0 auto;padding:88px 24px 76px}
@media(max-width:900px){
  .strips{display:none}          /* never fetched, so phones stay light */
  .hero-in{padding:52px 18px 44px}
}
/* ---------- landing ---------- */
.land{max-width:1180px;margin:0 auto;padding:44px 24px 90px}
.land-head{margin-bottom:56px}
.land-head .micro{color:var(--mute);margin-bottom:16px}
.hero-h1,.land-head h1{font-family:var(--display);font-weight:700;font-size:clamp(2.6rem,8vw,5.6rem);
  line-height:.94;letter-spacing:-.025em;text-transform:uppercase;margin:0 0 20px}
.hero-h1 em,.land-head h1 em{font-style:normal;display:block;color:var(--mute);font-weight:300}
.hero-p,.land-head p{margin:0;font-size:18px;color:var(--ink-2);max-width:56ch}
/* the size of the library, read as one line: 338 prompts  58 categories ... */
.land-stats{display:flex;flex-wrap:wrap;gap:8px 28px;margin-top:30px;padding-top:22px;border-top:1px solid var(--line-2)}
.land-stats div{display:flex;align-items:baseline;gap:7px}
.land-stats div b{font-family:var(--display);font-size:26px;font-weight:700;letter-spacing:-.01em;line-height:1;
  font-variant-numeric:tabular-nums}
.land-stats div span{font-size:14px;color:var(--mute)}

.groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px}
.gcard{position:relative;display:block;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:24px 24px 22px;text-decoration:none;transition:.18s;overflow:hidden}
.gcard:hover{border-color:var(--cc);box-shadow:var(--shadow);transform:translateY(-3px)}
.gcard .n{font-family:var(--display);font-weight:700;font-size:40px;line-height:1;color:var(--cc);
  letter-spacing:-.03em;margin-bottom:14px}
.gcard h2{font-family:var(--display);font-weight:600;font-size:20px;margin:0 0 7px;letter-spacing:-.005em}
.gcard p{margin:0;font-size:13.5px;color:var(--mute);line-height:1.5}
.gcard .gsubs{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:12.5px;
  line-height:1.65;color:var(--ink-2)}
.gcard .go{position:absolute;inset-inline-end:20px;top:24px;opacity:0;transition:.18s}
.gcard .go svg{width:20px;height:20px;fill:none;stroke:var(--cc);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.gcard:hover .go,.gcard:focus-visible .go{opacity:1}
.land-more{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin-top:16px}
.land-more a{display:block;background:var(--card);color:var(--ink);border:1px solid var(--line-2);
  border-radius:var(--r);padding:24px 26px;text-decoration:none;transition:.18s}
.land-more a:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-3px)}
.land-more h2{font-family:var(--display);font-weight:600;font-size:19px;margin:0 0 6px}
.land-more p{margin:0;font-size:13.5px;color:var(--mute);line-height:1.5}

/* ---------- builder ---------- */
.sect{max-width:1180px;margin:0 auto;padding:56px 24px 80px}
.sect h2{font-family:var(--display);font-weight:700;font-size:clamp(1.6rem,4vw,2.4rem);
  letter-spacing:-.02em;text-transform:uppercase;margin:0 0 12px}
.sect .lede{color:var(--ink-2);max-width:62ch;margin:0 0 32px;font-size:16px}
.bfields{display:grid;grid-template-columns:repeat(auto-fit,minmax(228px,1fr));gap:15px;margin-bottom:24px}
.bfield label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.bfield select,.bfield input{width:100%;background:var(--card);border:1px solid var(--line-2);
  border-radius:8px;padding:10px 12px;color:var(--ink);font-family:var(--body);font-size:14px}
.bfield select:focus,.bfield input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--tint)}
.bout{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden}
.bout-bar{display:flex;align-items:center;gap:10px;padding:11px 16px;border-bottom:1px solid var(--line);background:var(--paper)}
.bout-bar .micro{color:var(--mute)}
.bout-bar .acts{margin-left:auto}
.bout p{margin:0;padding:20px 22px;font-family:var(--mono);font-size:13px;line-height:1.8;
  color:var(--ink);white-space:pre-wrap;min-height:130px}
.tabs{display:flex;gap:8px;margin:0 0 28px}
.tab{border:1px solid var(--line-2);border-radius:999px;padding:8px 17px;font-size:13px;color:var(--ink-2)}
.tab:hover{border-color:var(--ink-2)}
.tab[aria-selected="true"]{background:var(--ink);color:var(--invert);border-color:var(--ink);font-weight:600}
.panel[hidden]{display:none}
/* cell lines drawn by each cell, so a short last row leaves white, not a grey block */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.step{padding:22px;border-inline-end:1px solid var(--line);
  border-bottom:1px solid var(--line);margin-inline-end:-1px;margin-bottom:-1px}
.step .k{font-size:12.5px;font-weight:600;color:var(--accent-text);margin-bottom:8px}
.step h3{font-family:var(--display);font-weight:600;font-size:17px;margin:0 0 7px}
.step p{margin:0 0 12px;color:var(--ink-2);font-size:13.5px;line-height:1.6}
.step code{display:block;font-family:var(--mono);font-size:11.5px;line-height:1.6;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);padding:9px 12px;border-radius:6px;white-space:pre-wrap}
.notes{display:grid;grid-template-columns:repeat(auto-fit,minmax(272px,1fr));gap:16px;margin-top:40px}
.note{border:1px solid var(--line);border-radius:var(--r);padding:22px;background:var(--card)}
.note h3{font-family:var(--display);font-weight:600;font-size:16px;margin:0 0 9px}
.note p{margin:0;color:var(--ink-2);font-size:13.5px}

/* ---------- detail overlay ---------- */
.ov{position:fixed;inset:0;z-index:90;display:none;background:rgba(14,16,19,.45);backdrop-filter:blur(6px)}
.ov.on{display:block}
.ov-box{position:absolute;inset:3vh 3vw;background:var(--card);border:1px solid var(--line-2);
  border-radius:14px;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(370px,.9fr);
  overflow:hidden;box-shadow:var(--shadow-lg)}
.ov-shot{background:var(--paper);display:flex;flex-direction:column;align-items:center;
  justify-content:center;overflow:auto;padding:22px;border-inline-end:1px solid var(--line);min-width:0}
.ov-shot img{max-height:100%;width:auto;border-radius:6px}
.ov-shot .wrapc{display:flex;flex-direction:column;align-items:center;max-width:100%;width:100%}
.ov-shot .gives-h,.ov-shot .gives{width:100%;border-radius:0}
.ov-shot .gives-h{border-radius:8px 8px 0 0}
.ov-shot .gives{border:1px solid var(--line);border-top:0;border-radius:0 0 8px 8px}
.varstrip{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap;justify-content:center}
.varstrip button{width:76px;height:54px;border-radius:6px;overflow:hidden;border:1px solid var(--line-2);
  padding:0;background:var(--card);transition:.14s;flex:none}
.varstrip button img{width:100%;height:100%;object-fit:cover}
.varstrip button[aria-current="true"]{border-color:var(--cc);box-shadow:0 0 0 2px var(--cc)}
.ov-side{overflow-y:auto;padding:28px 30px 32px;display:flex;flex-direction:column;min-width:0}
.ov-side h2{font-family:var(--display);font-weight:700;font-size:clamp(1.4rem,2.4vw,2rem);
  letter-spacing:-.02em;line-height:1.1;margin:0 0 14px}
.ov-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}
.ov-tags span{font-size:12px;color:var(--mute);
  border:1px solid var(--line);border-radius:999px;padding:4px 10px}
.ov-lab{font-size:13px;font-weight:600;color:var(--ink);margin:0 0 8px}
.ov-prompt{font-family:var(--mono);font-size:12.5px;line-height:1.8;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:16px 18px;
  margin:0 0 20px;white-space:pre-wrap}
.ov-tip{margin:0 0 22px;color:var(--ink-2);font-size:14px;line-height:1.6}
.ov-use{background:color-mix(in srgb,var(--cc) 9%,var(--card));border:1px solid color-mix(in srgb,var(--cc) 25%,var(--card));
  border-radius:8px;padding:13px 16px;margin:0 0 22px}
.ov-use b{display:block;font-family:var(--display);font-size:14px;font-weight:600;margin-bottom:3px}
.ov-use>div>span{font-size:13px;color:var(--ink-2);line-height:1.5}
.ov-links{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.ov-links a,.ov-links .local{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;
  border:1px solid var(--line-2);border-radius:999px;padding:5px 12px;text-decoration:none;
  background:var(--card);transition:.14s}
.ov-links a:hover{border-color:var(--cc);color:var(--cc)}
.ov-links .local{color:var(--mute);font-family:var(--mono);font-size:10.5px;border-style:dashed}
.ov-act{display:flex;gap:9px;margin-top:auto;padding-top:20px;border-top:1px solid var(--line)}
.ov-x{position:absolute;top:14px;inset-inline-end:16px;width:34px;height:34px;border-radius:8px;
  background:var(--card);border:1px solid var(--line-2);display:grid;place-items:center;z-index:5}
.ov-x svg{width:15px;height:15px;stroke:var(--ink);fill:none;stroke-width:2}
.ov-nav{position:absolute;bottom:16px;inset-inline-start:20px;display:flex;gap:8px;z-index:5}
.ov-nav button{width:34px;height:34px;border-radius:8px;background:var(--card);
  border:1px solid var(--line-2);display:grid;place-items:center}
.ov-nav svg{width:14px;height:14px;stroke:var(--ink);fill:none;stroke-width:2}

/* ---------- toast + footer ---------- */
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,18px);z-index:120;
  background:var(--ink);color:var(--invert);font-weight:600;font-size:13.5px;padding:11px 20px;
  border-radius:999px;opacity:0;pointer-events:none;transition:.2s;display:flex;align-items:center;gap:9px}
.toast.on{opacity:1;transform:translate(-50%,0)}
.toast svg{width:15px;height:15px;stroke:var(--invert);fill:none;stroke-width:2.4}
footer{border-top:1px solid var(--line);padding:30px 24px 44px;text-align:center;
  color:var(--mute);font-size:12.5px;background:var(--card)}
footer b{color:var(--ink-2);font-weight:600}
footer a{color:var(--accent-text)}

/* ---------- responsive ---------- */
@media(max-width:1040px){
  .shell{display:block}
  .side{position:sticky;top:var(--barh);z-index:45;max-height:none;overflow:visible;
    padding:9px 14px;border-inline-end:0;border-bottom:1px solid var(--line);
    background:var(--bar-bg);backdrop-filter:blur(12px)}
  .side-in{display:block}
  /* two scrolling rows: sections, then this page's groups */
  .s-block{display:flex;align-items:center;gap:7px;overflow-x:auto;scrollbar-width:none;padding:1px 0}
  .s-node.open>.s-kids{display:none}      /* an opened subgroup must not drop its list into the chip row */
  .s-block::-webkit-scrollbar{display:none}
  .s-block+.s-block{margin-top:7px;padding-top:0;border-top:0}
  .s-tools,.s-label,.s-kids,.s-tog,.s-gap{display:none}
  .s-pair,.s-node,.s-row{display:contents}
  .s-a,.s-pair .s-a,.s-row .s-a{width:auto;flex:none;white-space:nowrap;border:1px solid var(--line-2);
    border-radius:999px;padding:6px 12px;font-size:12.5px;background:var(--card)}
  .s-a span{overflow:visible}
  .s-a[aria-current="page"]{box-shadow:none;border-color:var(--accent);color:var(--accent)}
  .s-block .s-cat[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
  .wrap{padding:22px 16px 70px}
  .land{padding:44px 18px 70px}
  .sect{padding:40px 18px 70px}
}
@media(max-width:940px){
  .ov-box{inset:0;border-radius:0;grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .ov-shot{border-inline-end:0;border-bottom:1px solid var(--line);max-height:42vh;padding:14px}
  .ov-side{padding:20px}
  .ov-nav{display:none}
  .bar .count{display:none}
}
/* phones: the bar must fit 375px or the whole page scrolls sideways */
@media(max-width:600px){
  .bar-in{gap:10px;padding:0 14px}
  .brand span{display:none}
  .find{min-width:0}
  .find kbd{display:none}
  .brand b{font-size:13.5px}
  .find input{padding-right:8px;padding-left:31px}
  .find svg{left:10px}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;transition-duration:.01ms !important}
  html{scroll-behavior:auto}
}

/* ---- Arabic / RTL -------------------------------------------------------
   Only the things that actually break when the page flips: the sidebar edge,
   list bullets, and anything that was pinned to one side. The prompt body is
   forced back to LTR because it stays English.                              */
[dir="rtl"] body{font-family:"Segoe UI",Tahoma,system-ui,sans-serif}
[dir="rtl"] body *{letter-spacing:0 !important}      /* tracking breaks Arabic joins */
[dir="rtl"] .gcard .go svg{transform:scaleX(-1)}
/* the headline sits on the right, so the veil does too */
[dir="rtl"] .hero-veil{background:
  linear-gradient(to left, var(--veil) 0%, var(--veil) 40%, var(--veil-soft) 72%, transparent 100%),
  linear-gradient(to bottom, var(--paper) 0%, transparent 20%, transparent 80%, var(--paper) 100%)}
@media(max-width:1100px){[dir="rtl"] .hero-veil{background:
  linear-gradient(to left, var(--veil) 0%, var(--veil) 62%, var(--veil-soft) 100%),
  linear-gradient(to bottom, var(--paper) 0%, transparent 20%, transparent 80%, var(--paper) 100%)}}
[dir="rtl"] .find kbd{right:auto;left:10px}
[dir="rtl"] .find svg{left:auto;right:12px}
[dir="rtl"] .find input{padding-right:38px;padding-left:34px}
@media(max-width:600px){[dir="rtl"] .find input{padding-right:31px;padding-left:8px}[dir="rtl"] .find svg{right:10px}}
[dir="rtl"] .ov-prompt,[dir="rtl"] .excerpt{direction:ltr;text-align:left}
[dir="rtl"] .side-in button{text-align:right}
[dir="rtl"] .s-a[aria-current="page"]{box-shadow:inset -3px 0 0 var(--accent)}
[dir="rtl"] .s-tog svg{transform:scaleX(-1)}
@media(max-width:1040px){[dir="rtl"] .s-a[aria-current="page"]{box-shadow:none}}
[dir="rtl"] .land-stats b,[dir="rtl"] .count{direction:ltr}
#lang{font-size:12px;font-weight:800;letter-spacing:.04em}
#lang b{font-size:12px}