:root{
  --bg:#F6F4EF;
  --ink:#14140F;
  --muted:#57523F;
  --faint:#8C8574;
  --faint-2:#A19A87;
  --border:#E2DED4;
  --border-soft:#EFEDE6;
  --card:#fff;
  --field:#FAF9F6;
  --field-border:#D5D0C2;
  --accent:#3A34D6;
  --accent-dark:#241FA8;
  --accent-soft:#F3F2FF;
  --good:#1F8A5B;
  --good-soft:#E4F4EC;
  --warn:#B0791E;
  --bad:#C2452D;
  --header-h:60px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:'Public Sans',system-ui,-apple-system,sans-serif;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
  display:flex;
  flex-direction:column;
}
h1,h2,h3{font-family:'Bricolage Grotesque',system-ui,sans-serif}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--accent-dark)}
input,select,button{font-family:inherit;font-size:inherit}
input[type=range]{accent-color:var(--accent)}
button{cursor:pointer}
::selection{background:#DDD9FF}

/* ---------- Top bar ---------- */
.topbar{
  position:sticky;top:0;z-index:30;
  background:rgba(246,244,239,.9);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);
}
.topbar-inner{
  max-width:1180px;margin:0 auto;
  padding:14px 20px;
  display:flex;align-items:center;gap:20px;
}
.brand{display:flex;align-items:center;gap:9px;flex-shrink:0;color:var(--ink)}
.brand-mark{
  width:30px;height:30px;border-radius:9px;
  background:var(--accent);
  color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:17px;
}
.brand-name{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:19px;letter-spacing:-.02em;color:var(--ink)}
.topbar-nav{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}
.topbar-nav-link{
  display:inline-block;
  padding:7px 12px;border:none;border-radius:9px;
  background:transparent;color:var(--muted);
  font-size:14px;font-weight:600;transition:.12s;
}
.topbar-nav-link:hover{background:var(--border-soft);color:var(--ink)}
.topbar-nav-link.active{background:var(--ink);color:#fff}

/* ---------- Content ---------- */
.content{
  flex:1;
  width:100%;
  max-width:1180px;
  margin:0 auto;
  padding:0 20px 64px;
}
.page-top{padding-top:44px}

.breadcrumb{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--faint);margin-bottom:14px}
.breadcrumb a{color:var(--faint);cursor:pointer}
.breadcrumb a:hover{color:var(--ink)}

.page-title{margin:0 0 6px;font-weight:800;font-size:clamp(28px,4vw,38px);letter-spacing:-.03em;color:var(--ink)}
.page-title.lg{font-size:clamp(32px,5vw,42px)}
.page-desc{margin:0 0 26px;font-size:17px;line-height:1.55;color:var(--muted);max-width:560px;text-wrap:pretty}

/* ---------- Tool card (matches the reference calculator panel) ---------- */
.card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:18px;
  padding:26px;
}

.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px}
.field{display:flex;flex-direction:column;gap:7px}
.field span{font-size:13px;font-weight:600;color:var(--muted)}
.field input,.field select{
  padding:11px 13px;border:1px solid var(--field-border);border-radius:10px;
  font-size:16px;background:var(--field);color:var(--ink);
  transition:border-color .12s;
}
.field input:hover,.field select:hover{border-color:var(--muted)}
.field input:focus,.field select:focus{outline:none;border-color:var(--accent)}

.results{
  margin-top:24px;padding-top:22px;border-top:1px solid var(--border-soft);
  display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:18px;
}
.result-label{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin-bottom:6px}
.result-value{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:34px;letter-spacing:-.03em;color:var(--ink)}
.result-value.accent{color:var(--accent)}
.result-value.sub{font-weight:600;font-size:26px;letter-spacing:-.02em;color:var(--ink)}

.bar{margin-top:22px;display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--border-soft)}
.bar-legend{margin-top:9px;display:flex;gap:18px;font-size:13px;color:var(--muted)}

/* ---------- Home ---------- */
.hero{padding:64px 0 40px;max-width:660px}
.hero-eyebrow{margin:0 0 14px;font-size:13px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.hero h1{margin:0 0 18px;font-weight:800;font-size:clamp(38px,6vw,62px);line-height:1.02;letter-spacing:-.035em;color:var(--ink);text-wrap:balance}
.hero p{margin:0 0 28px;font-size:18px;line-height:1.55;color:var(--muted);text-wrap:pretty}
.hero-actions{display:flex;gap:10px;flex-wrap:wrap}
.btn-primary{display:inline-block;padding:13px 22px;border:none;border-radius:11px;background:var(--ink);color:#fff;font-size:15px;font-weight:600}
.btn-primary:hover{background:#000;color:#fff}
.btn-primary:disabled{background:var(--border);color:var(--faint-2);cursor:not-allowed}
.btn-primary:disabled:hover{background:var(--border)}
.btn-primary.accent{background:var(--accent)}
.btn-primary.accent:hover{background:var(--accent-dark)}
.btn-secondary{display:inline-block;padding:13px 22px;border:1px solid var(--field-border);border-radius:11px;background:#fff;color:var(--ink);font-size:15px;font-weight:600}
.btn-secondary:hover{border-color:var(--ink);color:var(--ink)}

.cat-list{display:flex;flex-direction:column;gap:40px}

/* All live tools stacked on the home page, with the sticky side ad */
.ad-block.section-ad{margin-top:48px}
.home-tools{margin-top:44px}
.home-tool-list{display:flex;flex-direction:column;gap:40px}
.home-tool{scroll-margin-top:84px}
.home-tool-cat{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.home-tool-cat .dot{width:9px;height:9px;border-radius:3px;flex-shrink:0}
.home-tool-title{margin:0 0 6px;font-weight:800;font-size:clamp(26px,3.5vw,32px);letter-spacing:-.03em;color:var(--ink)}
.cat-head{display:flex;align-items:baseline;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.cat-head h2{margin:0;font-weight:600;font-size:23px;letter-spacing:-.02em;color:var(--ink)}
.cat-head .dot{width:9px;height:9px;border-radius:3px;flex-shrink:0}
.cat-head .blurb{font-size:14px;color:var(--faint)}

.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.tool-card{
  display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;
  padding:15px 16px;border:1px solid var(--border);border-radius:14px;background:#fff;
  cursor:pointer;transition:.15s;color:var(--ink);
}
.tool-card:hover{border-color:var(--ink);transform:translateY(-2px);color:var(--ink)}
.tool-card .name{font-size:15px;font-weight:600}
.tool-card .desc{font-size:13px;color:var(--faint);line-height:1.4}
.tool-card .tag{margin-top:4px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:3px 7px;border-radius:6px;background:var(--good-soft);color:var(--good)}
.tool-card .tag.soon{background:#F1EFE8;color:var(--faint-2)}

.stub{
  background:#fff;border:1px dashed var(--field-border);border-radius:18px;
  padding:44px 26px;text-align:center;
}
.stub h3{margin:0 0 8px;font-weight:600;font-size:21px;color:var(--ink)}
.stub p{margin:0 auto 20px;max-width:380px;font-size:15px;color:var(--muted);line-height:1.5}

.siblings{margin-top:34px}
.siblings h3{margin:0 0 12px;font-weight:600;font-size:19px;color:var(--ink)}
.sibling-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.tool-card.compact .name{font-size:14px}

/* ---------- Image resizer specific ---------- */
.drop-zone{
  border:1.5px dashed var(--field-border);border-radius:14px;background:var(--field);
  padding:36px 20px;text-align:center;cursor:pointer;transition:.12s;
}
.drop-zone:hover{border-color:var(--accent)}
.drop-zone.drag{border-color:var(--accent);background:var(--accent-soft)}
.drop-zone p{margin:10px 0 0;font-size:14px;color:var(--faint)}
.resizer-body{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:22px;margin-top:22px}
@media (max-width:760px){ .resizer-body{grid-template-columns:1fr} }
.preview-frame{
  border:1px solid var(--border-soft);border-radius:14px;background:repeating-conic-gradient(#f0efe9 0% 25%, #fff 0% 50%) 0 0/16px 16px;
  display:flex;align-items:center;justify-content:center;min-height:260px;overflow:hidden;padding:10px;
}
.preview-frame img{max-width:100%;max-height:420px;display:block;border-radius:6px}
.resizer-controls{display:flex;flex-direction:column;gap:16px}
.checkbox-row{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);font-weight:600;cursor:pointer}
.checkbox-row input{cursor:pointer}
.meta-line{font-size:13px;color:var(--faint);margin-top:6px}
.range-row{display:flex;justify-content:space-between;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:6px}

/* ---------- Responsive: header nav becomes a swipeable row on phones ---------- */
@media (max-width:640px){
  .topbar-inner{flex-wrap:wrap;gap:10px 20px;padding:12px 16px}
  .topbar-nav{margin-left:0;width:100%;flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;scrollbar-width:none}
  .topbar-nav::-webkit-scrollbar{display:none}
  .topbar-nav-link{flex-shrink:0}
  .content{padding:0 16px 48px}
  .page-top{padding-top:28px}
  .card{padding:20px}
  .hero{padding:40px 0 32px}
}

/* ---------- Advertisement placeholders ---------- */
.ad-block{
  display:flex;align-items:center;justify-content:center;
  border:1px dashed var(--field-border);border-radius:14px;
  background:var(--border-soft);color:var(--faint-2);
  font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  height:96px;
}
.ad-block.home-ad{margin-bottom:48px}
.ad-block.tool-ad{margin-top:26px}
.ad-block-tall{
  width:100%;height:600px;writing-mode:vertical-rl;
}

/* ---------- Category page ---------- */
.back-link{
  display:inline-block;
  margin-bottom:18px;padding:7px 13px;
  border:1px solid var(--field-border);border-radius:8px;
  background:#fff;font-size:13px;font-weight:600;color:var(--muted);
}
.back-link:hover{border-color:var(--ink);color:var(--ink)}
.cat-head-link{
  display:inline-block;
  background:none;border:none;padding:0;margin:0;
  font-family:'Bricolage Grotesque',sans-serif;font-weight:600;font-size:23px;
  letter-spacing:-.02em;color:var(--ink);cursor:pointer;
}
.cat-head-link:hover{color:var(--accent)}
.cat-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));margin-bottom:36px}

/* ---------- Tool page layout (main + sticky aside ad) ---------- */
.tool-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:32px;align-items:start}
.tool-aside{position:sticky;top:88px}
@media (max-width:900px){
  .tool-layout{grid-template-columns:1fr}
  .tool-aside{display:none}
}

/* ---------- Length converter specific ---------- */
.len-row{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:end}
.len-swap{height:44px;width:44px;border:1px solid var(--field-border);border-radius:10px;background:#fff;font-size:16px}
.len-swap:hover{border-color:var(--ink)}
.len-result{
  padding:11px 13px;border:1px solid var(--border);border-radius:10px;font-size:16px;
  background:var(--accent-soft);font-weight:600;color:var(--accent);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.len-all-head{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin-bottom:12px}
.len-all-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.len-all-item{padding:10px 12px;border-radius:10px;background:var(--field);border:1px solid var(--border-soft)}
.len-all-item .label{font-size:12px;color:var(--faint)}
.len-all-item .value{font-size:15px;font-weight:600}
@media (max-width:560px){ .len-row{grid-template-columns:1fr} .len-swap{justify-self:center} }

/* ---------- Zakat calculator specific ---------- */
.note-box{
  margin-top:18px;padding:13px 15px;border-radius:11px;
  background:#F5F3EC;font-size:14px;color:var(--muted);line-height:1.5;
}

/* ---------- Password generator specific ---------- */
.pw-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pw-display{
  flex:1;min-width:220px;padding:15px 16px;border-radius:12px;
  background:var(--ink);color:#7CF0C0;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:19px;word-break:break-all;
}
.pw-body{margin-top:24px;display:flex;flex-direction:column;gap:16px}
.pw-opts{display:flex;gap:8px;flex-wrap:wrap}
.pw-opt{
  padding:9px 15px;border-radius:10px;font-size:14px;font-weight:600;
  border:1px solid var(--field-border);background:#fff;color:var(--muted);
}
.pw-opt.active{background:var(--accent);border-color:var(--accent);color:#fff}
.pw-strength-track{height:8px;border-radius:4px;background:var(--border-soft);overflow:hidden}
.pw-strength-fill{height:100%;width:0;transition:width .15s ease}

/* ---------- Loan amortization schedule specific ---------- */
.amort-wrap{margin-top:24px;padding-top:22px;border-top:1px solid var(--border-soft)}
.amort-head{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin-bottom:12px}
.amort-table-scroll{max-height:340px;overflow-y:auto;overflow-x:auto;border:1px solid var(--border-soft);border-radius:12px}
.amort-table{width:100%;border-collapse:collapse;font-size:14px;min-width:520px}
.amort-table th,.amort-table td{padding:10px 14px;text-align:right;white-space:nowrap}
.amort-table th:first-child,.amort-table td:first-child{text-align:left}
.amort-table tbody td{border-top:1px solid var(--border-soft)}
.amort-table thead th{position:sticky;top:0;background:var(--field);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-weight:600}
.amort-table tbody tr:hover td{background:var(--field)}

/* ---------- Tool article / SEO content ---------- */
.tool-article{margin-top:40px;padding-top:32px;border-top:1px solid var(--border-soft)}
.tool-article h2{margin:32px 0 12px;font-weight:700;font-size:21px;letter-spacing:-.01em;color:var(--ink)}
.tool-article h2:first-child{margin-top:0}
.tool-article p{margin:0 0 14px;font-size:15px;line-height:1.7;color:var(--muted);max-width:680px}
.tool-article ul{margin:0 0 14px;padding-left:20px;max-width:680px}
.tool-article li{margin-bottom:8px;font-size:15px;line-height:1.7;color:var(--muted)}
.tool-article strong{color:var(--ink)}
.tool-article .faq-item{border-top:1px solid var(--border-soft);padding:14px 0}
.tool-article .faq-item summary{cursor:pointer;font-weight:600;font-size:15px;color:var(--ink);list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px}
.tool-article .faq-item summary::-webkit-details-marker{display:none}
.tool-article .faq-item summary::after{content:'+';font-size:19px;color:var(--faint);flex-shrink:0}
.tool-article .faq-item[open] summary::after{content:'−'}
.tool-article .faq-item p{margin:10px 0 0}
.tool-article-disclaimer{margin-top:24px;font-size:13px;color:var(--faint)}

/* ---------- Percentage calculator specific ---------- */
.mode-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.mode-tab{padding:9px 15px;border-radius:10px;font-size:14px;font-weight:600;border:1px solid var(--field-border);background:#fff;color:var(--muted)}
.mode-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}

/* ---------- BMI specific ---------- */
.unit-toggle{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.bmi-badge{display:inline-block;padding:6px 14px;border-radius:999px;font-weight:700;font-size:14px}

/* ---------- Text tools specific ---------- */
.textarea{width:100%;min-height:160px;padding:13px 15px;border:1px solid var(--field-border);border-radius:12px;background:var(--field);color:var(--ink);font-size:15px;line-height:1.5;resize:vertical}
.textarea:focus{outline:none;border-color:var(--accent)}
.textarea.compact{min-height:90px}
.chip-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.chip{padding:8px 14px;border-radius:9px;font-size:13px;font-weight:600;border:1px solid var(--field-border);background:#fff;color:var(--muted)}
.chip:hover{border-color:var(--ink);color:var(--ink)}
.stat-row{display:flex;gap:22px;flex-wrap:wrap;margin-top:16px;font-size:13px;color:var(--faint)}
.stat-row b{color:var(--ink);font-size:15px;display:block;font-family:'Bricolage Grotesque',sans-serif}

/* ---------- QR generator specific ---------- */
.qr-preview{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:22px;padding-top:22px;border-top:1px solid var(--border-soft)}
.qr-preview img{border-radius:12px;border:1px solid var(--border);background:#fff}

/* ---------- Prayer times / Qibla specific ---------- */
.geo-row{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:18px}
.compass{width:180px;height:180px;border-radius:50%;border:2px solid var(--field-border);position:relative;margin:20px auto;background:var(--field)}
.compass .needle{position:absolute;left:50%;top:50%;width:3px;height:70px;background:var(--accent);transform-origin:bottom center;margin-left:-1.5px;margin-top:-70px;border-radius:2px;transition:transform .2s ease}
.compass .n-label{position:absolute;top:8px;left:50%;transform:translateX(-50%);font-size:11px;font-weight:700;color:var(--faint)}

/* ---------- Footer ---------- */
.footer{
  border-top:1px solid var(--border);
  background:var(--border-soft);
  margin-top:auto;
}
.footer-inner{
  max-width:1180px;margin:0 auto;padding:34px 20px;
  display:flex;gap:26px;flex-wrap:wrap;justify-content:space-between;align-items:center;
}
.footer-brand{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:16px;color:var(--ink)}
.footer-note{font-size:13px;color:var(--faint)}
