/* ==========================================================================
   base.css — reset, גופנים, טיפוגרפיה, רקע, עזרי פריסה.
   הכל ב-logical properties כדי שקובץ אחד ישרת RTL ו-LTR.
   ========================================================================== */

/* ---------- גופנים (מקומיים, אפס בקשות חיצוניות) ---------- */
@font-face{font-family:'Heebo';src:url('../fonts/heebo-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
  unicode-range:U+0590-05FF,U+FB1D-FB4F,U+20AA,U+200E,U+200F;}
@font-face{font-family:'Heebo';src:url('../fonts/heebo-600.woff2') format('woff2');
  font-weight:600;font-style:normal;font-display:swap;
  unicode-range:U+0590-05FF,U+FB1D-FB4F,U+20AA,U+200E,U+200F;}
@font-face{font-family:'Heebo';src:url('../fonts/heebo-800.woff2') format('woff2');
  font-weight:700 900;font-style:normal;font-display:swap;
  unicode-range:U+0590-05FF,U+FB1D-FB4F,U+20AA,U+200E,U+200F;}

@font-face{font-family:'Inter';src:url('../fonts/inter-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'Inter';src:url('../fonts/inter-600.woff2') format('woff2');
  font-weight:600;font-style:normal;font-display:swap;}
@font-face{font-family:'Inter';src:url('../fonts/inter-800.woff2') format('woff2');
  font-weight:700 900;font-style:normal;font-display:swap;}

/* קירילית — נטענת רק אם יש בעמוד תו קירילי */
@font-face{font-family:'Inter';src:url('../fonts/inter-cyr-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+2116;}
@font-face{font-family:'Inter';src:url('../fonts/inter-cyr-600.woff2') format('woff2');
  font-weight:600;font-style:normal;font-display:swap;
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+2116;}
@font-face{font-family:'Inter';src:url('../fonts/inter-cyr-800.woff2') format('woff2');
  font-weight:700 900;font-style:normal;font-display:swap;
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+2116;}

/* סינית מפושטת — מצומצם לתווים שבאמת מופיעים באתר (tools/subset-cjk.py).
   unicode-range דואג שדוברי עברית/אנגלית/רוסית לא יורידו אותו כלל. */
@font-face{font-family:'NotoSC';src:url('../fonts/notosc-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
  unicode-range:U+2E80-9FFF,U+3000-303F,U+FF00-FFEF,U+FE10-FE1F;}
@font-face{font-family:'NotoSC';src:url('../fonts/notosc-700.woff2') format('woff2');
  font-weight:600 900;font-style:normal;font-display:swap;
  unicode-range:U+2E80-9FFF,U+3000-303F,U+FF00-FFEF,U+FE10-FE1F;}

@font-face{font-family:'JBMono';src:url('../fonts/mono-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap;}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-block-start:88px}
img,svg,video{display:block;max-inline-size:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:none;cursor:pointer}
ul,ol{list-style:none}
a{color:inherit}
:where(h1,h2,h3,h4){text-wrap:balance}
:where(p,li){text-wrap:pretty}

/* ---------- גוף ---------- */
body{
  min-block-size:100vh;
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  line-height:var(--lh-body);
  color:var(--text);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
[dir="rtl"] body{ letter-spacing:0 }

/* סינית: הגופן הסיני קודם ברשימה, ושורות מרווחות יותר */
html[lang="zh-Hans"] body{
  font-family:'NotoSC','Inter',system-ui,sans-serif;
  line-height:1.85;
  letter-spacing:.01em;
}
html[lang="zh-Hans"] h1,html[lang="zh-Hans"] h2,
html[lang="zh-Hans"] h3,html[lang="zh-Hans"] .hero h1{
  letter-spacing:0;              /* tracking שלילי הורס תווים סיניים */
}
html[lang="zh-Hans"] main :where(p,ul,ol):not([class]){max-inline-size:42em}
/* רוסית ארוכה מאנגלית בכ-15% — קצת יותר מקום לשורה */
html[lang="ru"] main :where(p,ul,ol):not([class]){max-inline-size:72ch}

/* רקע mesh — CSS בלבד, ללא תמונות */
body::before{
  content:'';position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:
    radial-gradient(60rem 40rem at 12% -10%, rgba(0,229,255,.07), transparent 60%),
    radial-gradient(48rem 36rem at 92% 8%,  rgba(124,92,255,.09), transparent 62%);
}
:root[data-theme="light"] body::before{
  background:
    radial-gradient(60rem 40rem at 12% -10%, rgba(8,145,178,.10), transparent 60%),
    radial-gradient(48rem 36rem at 92% 8%,  rgba(109,58,240,.09), transparent 62%);
}
/* גרעין עדין — מונע banding בגרדיאנטים */
body::after{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
:root[data-theme="light"] body::after{opacity:.02}

/* ---------- טיפוגרפיה ---------- */
h1{font-size:var(--fs-h1);font-weight:800;line-height:1.15;letter-spacing:-.02em}
h2{font-size:var(--fs-h2);font-weight:700;line-height:1.25;letter-spacing:-.01em}
h3{font-size:var(--fs-h3);font-weight:600;line-height:1.35}
.lede{font-size:var(--fs-lede);color:var(--text-muted);line-height:1.6}
strong,b{font-weight:600}
[dir="rtl"] em{font-style:normal;font-weight:600;color:var(--accent)}
small{font-size:var(--fs-xs)}
.tnum{font-variant-numeric:tabular-nums}

main :where(p,ul,ol):not([class]){max-inline-size:68ch}
main :where(p)+:where(p){margin-block-start:var(--s-4)}

a:not([class]){
  color:var(--accent);text-decoration:none;
  text-underline-offset:.22em;text-decoration-thickness:1px;
}
a:not([class]):hover{text-decoration:underline}

/* קוד — תמיד LTR, גם בתוך משפט עברי */
code:not(pre code){
  font-family:var(--font-mono);font-size:.9em;
  direction:ltr;unicode-bidi:embed;
  padding:.12em .4em;border-radius:5px;
  background:var(--surface-hover);border:1px solid var(--border);
  overflow-wrap:break-word;
}

/* ---------- פריסה ---------- */
.wrap{max-inline-size:var(--maxw);margin-inline:auto;padding-inline:var(--s-6)}
.wrap-narrow{max-inline-size:var(--maxw-text)}
.section{padding-block:var(--s-12)}
@media (max-width:599px){ .section{padding-block:var(--s-8)} .wrap{padding-inline:var(--s-4)} }

.stack-2>*+*{margin-block-start:var(--s-2)}
.stack-4>*+*{margin-block-start:var(--s-4)}
.stack-6>*+*{margin-block-start:var(--s-6)}
.center{text-align:center}

/* ---------- אייקונים ---------- */
.icon{
  inline-size:1.25em;block-size:1.25em;flex:none;vertical-align:-.15em;
  fill:none;stroke:currentColor;stroke-width:1.75;
  stroke-linecap:round;stroke-linejoin:round;
}
.icon-sm{inline-size:1em;block-size:1em}
.icon-lg{inline-size:1.75em;block-size:1.75em}

/* ---------- מיקוד ונגישות ---------- */
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
:focus:not(:focus-visible){outline:none}

.skip-link{position:absolute;inset-inline-start:-9999px;z-index:100}
.skip-link:focus{
  inset-inline-start:var(--s-4);inset-block-start:var(--s-4);
  padding:var(--s-3) var(--s-5);border-radius:var(--radius-sm);
  background:var(--bg-elevated);border:1px solid var(--accent);
}
.visually-hidden{
  position:absolute!important;inline-size:1px;block-size:1px;
  overflow:hidden;clip-path:inset(50%);white-space:nowrap;
}

/* ---------- כניסה מדורגת ---------- */
.reveal{opacity:0;transform:translateY(8px);
        transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}
.reveal.is-in{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important;
  }
  .reveal{opacity:1!important;transform:none!important}
}

/* ---------- הדפסה ---------- */
@media print{
  body::before,body::after{display:none}
  .site-header,.site-footer,.toc,.pager,.search-hero,.cmdk,.skip-link{display:none!important}
  body{background:#fff;color:#000}
  .wrap{max-inline-size:none;padding:0}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:.85em;color:#555}
  .shot{border:1px solid #ccc;box-shadow:none;break-inside:avoid}
  .steps>li{break-inside:avoid}
}
