@font-face{font-family:'Frank Ruhl Libre';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/frank-ruhl-libre-hebrew-400.woff2) format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F}
@font-face{font-family:'Frank Ruhl Libre';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/frank-ruhl-libre-hebrew-700.woff2) format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F}
@font-face{font-family:'Frank Ruhl Libre';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/frank-ruhl-libre-latin-400.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Assistant';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/assistant-hebrew-400.woff2) format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F}
@font-face{font-family:'Assistant';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/assistant-hebrew-600.woff2) format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F}
@font-face{font-family:'Assistant';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/assistant-hebrew-700.woff2) format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F}
@font-face{font-family:'Assistant';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/assistant-latin-400.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Assistant';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/assistant-latin-600.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Assistant';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/assistant-latin-700.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
:root{
  --bg:#f4eee1; --paper:#fffdf7; --ink:#1e2430; --muted:#6c6556; --line:#e2d7c0; --line2:#d3c4a3;
  --navy:#1c2f4f; --navy2:#2a4677; --navy-soft:#e7ebf3; --gold:#b38b3f; --gold-soft:#f3e8cc;
  --red:#a8382c;  --ok:#2f6b45; --ok-soft:#e6f1e9;
  --serif:'Frank Ruhl Libre','David Libre','David',Georgia,serif;
  --sans:'Assistant','Heebo','Segoe UI',Arial,sans-serif;
  --r:16px; --dockh:220px; --shadow:0 1px 2px rgba(40,30,10,.06),0 4px 14px rgba(40,30,10,.06);
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.55}
.wrap{max-width:900px;margin:0 auto;padding:18px 16px 60px}
header.top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
header.top a.brand{font-family:var(--serif);font-size:1.5rem;color:var(--navy);text-decoration:none;font-weight:700}
header.top nav a{color:var(--navy2);margin-inline-start:12px;font-size:.95rem}
h1{font-family:var(--serif);color:var(--navy);font-size:1.9rem;margin:.4em 0 .2em}
h2{font-family:var(--serif);color:var(--navy);font-size:1.3rem;margin:1.2em 0 .3em}
.muted{color:var(--muted)}
.he{direction:rtl;font-family:var(--serif)}
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:18px;margin:12px 0}
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin:16px 0}
.plan{display:flex;flex-direction:column}
.plan h2{margin-top:0}
.plan .price{font-size:2rem;font-weight:700;color:var(--navy)}
.plan .price small{font-size:.9rem;font-weight:400;color:var(--muted)}
.plan ul{padding-inline-start:1.1em;margin:.6em 0 1em;flex:1}
.plan.featured{border-top:4px solid var(--gold)}
.plan .badge{display:inline-block;align-self:flex-start;margin:.2em 0 .1em;padding:.2em .7em;border-radius:10px;background:#fff4d6;border:1px solid var(--gold);color:var(--navy);font-size:.85rem;font-weight:600;line-height:1.5}
.plan .badge .he{display:block;font-weight:600;font-size:.82rem}
.btn{display:inline-block;border:1px solid var(--line2);background:#fff;color:var(--navy);border-radius:12px;padding:10px 16px;font-size:1rem;font-family:inherit;cursor:pointer;text-decoration:none;text-align:center}
.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}
.btn:disabled{opacity:.55;cursor:default}
.btn.small{padding:6px 10px;font-size:.9rem}
.note{background:var(--gold-soft);border-radius:12px;padding:10px 14px;margin:12px 0}
.ok{background:var(--ok-soft);color:var(--ok);border-radius:12px;padding:10px 14px}
footer{margin-top:30px;font-size:.9rem;color:var(--muted);text-align:center}
footer a{color:inherit}
input,select,textarea{font:inherit;padding:8px 10px;border:1px solid var(--line2);border-radius:10px;background:#fff;max-width:100%}
label{display:block;margin:.4em 0}
table{border-collapse:collapse;width:100%;font-size:.92rem}
th,td{border-bottom:1px solid var(--line);padding:6px 6px;text-align:start;vertical-align:top}
th{color:var(--muted);font-weight:600}
.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.msg{white-space:pre-line;min-height:1.2em}
.err{color:var(--red)}
.pill{display:inline-block;border-radius:999px;padding:1px 8px;font-size:.8rem;background:var(--navy-soft);color:var(--navy)}
.pill.comp{background:var(--ok-soft);color:var(--ok)}
.pill.off{background:#f6e3e0;color:var(--red)}
.secret{font-family:ui-monospace,Menlo,Consolas,monospace}
.once{background:#fff7d6;border:1px dashed var(--gold);border-radius:10px;padding:10px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1.1rem;word-break:break-all}
dialog{border:1px solid var(--line);border-radius:16px;max-width:min(520px,94vw);padding:18px}
@media (max-width:520px){.wrap{padding:12px 12px 50px} h1{font-size:1.6rem} td,th{padding:5px 4px}}

/* Kol Kesav letter mark (self-hosted font, no images) */
.kkmark{display:inline-block;width:1.55em;height:1.55em;margin-inline-end:.45em;vertical-align:-.35em;border-radius:.34em;object-fit:cover;background:#f6e7c3;box-shadow:0 0 0 1px rgba(120,84,20,.28),0 1px 3px rgba(0,0,0,.15)}
header.top a.brand{display:inline-flex;align-items:center}

/* Stripe section (admin) */
.small{font-size:.9rem}
.stripebtns{gap:10px;flex-wrap:wrap;margin:10px 0 4px}
.stripebtns .btn{min-height:44px}
.stripestate{margin:10px 0}
.stripestate .kv{display:flex;gap:8px;flex-wrap:wrap;margin:3px 0}
.stripestate .kv b{min-width:9.5em}
.pill.live{background:#f6e3e0;color:var(--red)}
.pill.test{background:var(--gold-soft);color:#7a5a17}
.pill.on{background:var(--ok-soft);color:var(--ok)}
.striperesult{margin-top:8px}
.striperesult ul{list-style:none;padding:0;margin:6px 0}
.striperesult li{display:flex;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.striperesult li .ic{flex:0 0 1.3em;text-align:center;font-weight:700}
.striperesult li.created .ic,.striperesult li.reused .ic,.striperesult li.updated .ic,.striperesult li.done .ic{color:var(--ok)}
.striperesult li.failed{color:var(--red)} .striperesult li.warn .ic{color:#9a6a00}
.striperesult li.done{font-weight:700}
.striperesult .msgbox{border-radius:12px;padding:10px 14px;margin:8px 0}
.striperesult .msgbox.bad{background:#f6e3e0;color:var(--red)}
.striperesult .msgbox.good{background:var(--ok-soft);color:var(--ok)}
#stripeCard [hidden]{display:none!important}

/* Oct 29: Upgrade button busy state + checkout error box */
.btn.busy{opacity:.85}
.spin{display:inline-block;width:1em;height:1em;vertical-align:-.15em;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:kkspin .8s linear infinite}
@keyframes kkspin{to{transform:rotate(360deg)}}
.payerr{background:#fbe9e6;border:1px solid #e6b8b0;color:#7a2a20}
.payerr p{margin:4px 0}
.payerr p:first-child{font-weight:600}
.payerr .btn{margin-top:8px}
#unlimited{margin:12px 0}

/* Oct 29: admin, forgot-password requests */
#pwReqCard.hasreq{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold-soft)}
.pwreq{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:8px 0;background:#fff;overflow-wrap:anywhere}
.pwreq .pwnote{white-space:pre-line;unicode-bidi:plaintext;background:var(--navy-soft);border-radius:8px;padding:6px 8px;margin-top:4px}
.rowbtns{display:flex;flex-wrap:wrap;gap:6px}
#tempPw{flex:1 1 auto;min-width:10em;font-size:1.4rem;letter-spacing:.06em;user-select:all;-webkit-user-select:all}
/* v32: "Why early bird?" side note (Nick 11:39 AM: AI prices doubling, almost no profit) */
.why-eb{background:#fffaf0;border:1px solid var(--gold);font-size:.92rem}
.why-eb h2{font-size:1.05rem;margin:0 0 .4em}
.why-eb p{margin:.4em 0;overflow-wrap:anywhere}
.why-eb p.he{font-size:.98rem;line-height:1.6}
.plan .eb-why{align-self:flex-start;font-size:.82rem;color:var(--navy2);margin:0 0 .3em}
