/* Shared styles for every page on tools.rupeshbhandari.com.np.
   A page's own <style> block comes after this file, so it only needs its
   page-specific layout and any overrides. */

/* ── Fonts ────────────────────────────────────────────────────────
   Cascadia Code for text and Courier Prime Bold for headings (both SIL Open
   Font License, see fonts/OFL.txt and fonts/OFL-courier-prime.txt),
   self-hosted so pages make no third-party requests. Browsers only download
   the files for the scripts a page actually uses. */
@font-face{font-family:"Courier Prime";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/courier-prime-bold-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"Courier Prime";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/courier-prime-bold-latin.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"Cascadia Code";font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/cascadia-code-arabic.woff2) format("woff2");unicode-range:U+0600-06FF, U+0750-077F, U+0870-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, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC7, U+10EC9-10EEE, U+10EF0-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1}
@font-face{font-family:"Cascadia Code";font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/cascadia-code-braille.woff2) format("woff2");unicode-range:U+2800-28FF}
@font-face{font-family:"Cascadia Code";font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/cascadia-code-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:"Cascadia Code";font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/cascadia-code-cyrillic.woff2) format("woff2");unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:"Cascadia Code";font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/cascadia-code-greek.woff2) format("woff2");unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF}
@font-face{font-family:"Cascadia Code";font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/cascadia-code-hebrew.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:"Cascadia Code";font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/cascadia-code-symbols2.woff2) format("woff2");unicode-range:U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F}
@font-face{font-family:"Cascadia Code";font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/cascadia-code-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:"Cascadia Code";font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/cascadia-code-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"Cascadia Code";font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/cascadia-code-latin.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/* ── Tokens ─────────────────────────────────────────────────────────
   The Heritage palette from the Rupesh Bhandari brand guide: slate ink, sage
   accent, mint tint. Dark mode uses the neutral charcoal of rupeshbhandari.com.np
   (its Chirpy dark theme) with the brand's mint accent. light-dark() picks the first value under
   color-scheme:light and the second under color-scheme:dark. The scheme is set
   explicitly below: from the OS setting in Auto, or forced by the Light / Dark
   switch (data-theme). */
:root{
  color-scheme:light;
  --bg:light-dark(#f5f8f6,#1b1b1e);    /* surface */
  --fg:light-dark(#303b35,#cccccc);    /* ink */
  --mu:light-dark(#5a665f,#868686);    /* ink-muted */
  --ln:light-dark(#d8e1db,#2c2d2d);    /* line: decorative hairlines */
  --ln2:light-dark(#7e8c84,#6e6f72);   /* line-strong: control borders, 3:1 */
  --field:light-dark(#fff,#1e1e1e);    /* surface-raised */
  --ab:light-dark(#303b35,#cccccc);
  --af:light-dark(#f5f8f6,#1b1b1e);
  --ac:light-dark(#4c6b55,#a6ddbb);    /* accent */
  --ac-fg:light-dark(#fff,#1b1b1e);    /* on-accent */
  --soft:light-dark(#e2f2e7,#2a3f33);  /* accent-soft */
  --err:light-dark(#b3261e,#ff8a80);   /* danger */
  --ok:light-dark(#1f6f8b,#7cc7e8);    /* success: teal-blue, never brand green */
  --mono:'Cascadia Code','Cascadia Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --display:'Courier Prime','Courier New',monospace;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){color-scheme:dark}
}
:root[data-theme="dark"]{color-scheme:dark}

/* Fallback for browsers without light-dark() (released before 2024). */
@supports not (color:light-dark(#fff,#000)){
  :root{--bg:#f5f8f6;--fg:#303b35;--mu:#5a665f;--ln:#d8e1db;--ln2:#7e8c84;--field:#fff;--ab:#303b35;--af:#f5f8f6;--ac:#4c6b55;--ac-fg:#fff;--soft:#e2f2e7;--err:#b3261e;--ok:#1f6f8b;color-scheme:light}
  :root[data-theme="dark"]{--bg:#1b1b1e;--fg:#cccccc;--mu:#868686;--ln:#2c2d2d;--ln2:#6e6f72;--field:#1e1e1e;--ab:#cccccc;--af:#1b1b1e;--ac:#a6ddbb;--ac-fg:#1b1b1e;--soft:#2a3f33;--err:#ff8a80;--ok:#7cc7e8;color-scheme:dark}
  @media (prefers-color-scheme:dark){
    :root:not([data-theme="light"]){--bg:#1b1b1e;--fg:#cccccc;--mu:#868686;--ln:#2c2d2d;--ln2:#6e6f72;--field:#1e1e1e;--ab:#cccccc;--af:#1b1b1e;--ac:#a6ddbb;--ac-fg:#1b1b1e;--soft:#2a3f33;--err:#ff8a80;--ok:#7cc7e8;color-scheme:dark}
  }
}

/* ── Base ───────────────────────────────────────────────────────── */
*{box-sizing:border-box}
html,body{margin:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--fg);font-family:var(--mono);font-size:14px;line-height:1.5}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--fg);outline-offset:2px}
a{color:var(--ac)}
[hidden]{display:none !important}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.muted{color:var(--mu)}

/* ── Header bar and segmented buttons ───────────────────────────── */
.bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:12px 24px;border-bottom:1px solid var(--ln)}
.back{display:inline-flex;align-items:center;min-height:44px;color:var(--mu);text-decoration:none}
.back:hover{color:var(--fg)}
.back img{width:28px;height:28px;border-radius:50%;margin-right:10px;flex:none}
.seg{display:flex;border:1px solid var(--ln2);border-radius:8px;overflow:hidden}
.seg button{height:44px;padding:0 16px;border:0;background:transparent;color:var(--mu);font-size:12px;cursor:pointer}
.seg button.on{background:var(--ab);color:var(--af)}

/* ── Tool page frame ────────────────────────────────────────────── */
main{max-width:1100px;margin:0 auto;padding:36px 24px 48px}
h1{font-family:var(--display);font-weight:700;font-size:32px;letter-spacing:-0.01em;margin:0 0 8px}
h2{font-family:var(--display);font-weight:700;font-size:18px;margin:0 0 12px}
.sub{color:var(--mu);margin:0 0 24px}
.foot{margin-top:28px;color:var(--mu);font-size:12px}
#msg{color:var(--err);min-height:1.5em;margin-top:12px}

/* ── Controls ───────────────────────────────────────────────────── */
.controls{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:20px}
.check{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--mu);cursor:pointer}
.check input{flex:none;width:18px;height:18px;accent-color:var(--ac)}
.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.btn{min-height:44px;padding:0 20px;border:1px solid var(--ln2);border-radius:6px;background:transparent;cursor:pointer}
.btn:hover{border-color:var(--fg)}
a.btn{display:inline-flex;align-items:center;color:inherit;text-decoration:none}
.btn.primary{background:var(--ab);color:var(--af);border-color:var(--ab)}
.mini{position:relative;min-height:32px;padding:0 10px;border:1px solid var(--ln2);border-radius:6px;background:transparent;color:var(--mu);font-size:12px;cursor:pointer}
.mini:hover{border-color:var(--fg);color:var(--fg)}
.mini::after{content:"";position:absolute;inset:-6px 0} /* 44px tap area, 32px look */
input[type=text],input[type=number],input[type=datetime-local],select{min-height:44px;padding:0 12px;border:1px solid var(--ln2);border-radius:6px;background:var(--field);min-width:0}
input[type=text]:focus,input[type=number]:focus,input[type=datetime-local]:focus,select:focus{border-color:var(--fg);outline:none}

/* ── Input / output tools (two text panes) ──────────────────────── */
.layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}
.field{display:grid;gap:6px;min-width:0}
.field label{color:var(--mu);font-size:12px;letter-spacing:.04em}
textarea{width:100%;min-height:280px;padding:12px;border:1px solid var(--ln2);border-radius:6px;background:var(--field);resize:vertical;overflow-wrap:anywhere}
textarea:focus{border-color:var(--fg);outline:none}
textarea[readonly]{background:transparent}
.meta{display:flex;justify-content:space-between;gap:12px;color:var(--mu);font-size:12px}
.box{margin:0;min-height:120px;padding:12px;border:1px solid var(--ln);border-radius:6px;white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto}
.tbl{width:100%;border-collapse:collapse}
.tbl th,.tbl td{text-align:left;vertical-align:top;padding:10px 12px;border-bottom:1px solid var(--ln);overflow-wrap:anywhere}
.tbl th{color:var(--mu);font-weight:400;font-size:12px;letter-spacing:.04em;white-space:nowrap;width:1%}
.tbl td.c{width:1%;white-space:nowrap}

/* ── Calculators (form panel + results) ─────────────────────────── */
.layout.calc{grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:32px;align-items:start}
.panel{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.panel .field{gap:4px}
.panel #msg{margin-top:0}
.panel .field input,.panel .field select{width:100%;min-width:0;min-height:44px;padding:0 12px;border:1px solid var(--ln2);border-radius:6px;background:var(--field)}
.panel .field input:focus,.panel .field select:focus{border-color:var(--fg)}
.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:20px}
.stat{border:1px solid var(--ln);border-radius:10px;padding:16px;min-width:0}
.stat .k{color:var(--mu);font-size:12px}
.stat .v{font-size:20px;font-weight:700;overflow-wrap:anywhere}
.stat .n{color:var(--mu);font-size:12px}
.note{border:1px solid var(--ln);border-radius:10px;padding:12px 16px;margin-bottom:20px}
.sum{margin:0 0 20px;border:1px solid var(--ln);border-radius:10px;padding:4px 16px}
.sum div{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--ln)}
.sum div:last-child{border-bottom:0;font-weight:700}
.sum dt{color:var(--mu)}
.sum dd{margin:0;text-align:right;overflow-wrap:anywhere}
.split{display:flex;height:10px;border-radius:5px;overflow:hidden;border:1px solid var(--ln);margin:8px 0 4px}
.split i{display:block;background:var(--fg)}
.split b{display:block;flex:1;background:repeating-linear-gradient(45deg,var(--mu) 0 2px,transparent 2px 5px)}
.legend{display:flex;justify-content:space-between;gap:12px;color:var(--mu);font-size:12px;margin-bottom:20px;flex-wrap:wrap}
.chart{margin:0 0 28px}
.chart svg{display:block;width:100%;height:200px;border-bottom:1px solid var(--ln)}
.ch-line{fill:none;stroke:var(--fg);stroke-width:2;vector-effect:non-scaling-stroke}
.ch-base{fill:none;stroke:var(--mu);stroke-width:1.5;stroke-dasharray:4 4;vector-effect:non-scaling-stroke}
.ch-area{fill:var(--fg);opacity:.08}
.axis{display:flex;justify-content:space-between;gap:12px;color:var(--mu);font-size:12px}
.sched-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0 12px}
.tools{display:flex;gap:8px;flex-wrap:wrap}
.tw{overflow-x:auto;border:1px solid var(--ln);border-radius:10px}
.tw table{width:100%;border-collapse:collapse;min-width:560px;font-variant-numeric:tabular-nums}
.tw th{text-align:right;font-size:12px;letter-spacing:.04em;color:var(--mu);font-weight:400;padding:10px 12px;border-bottom:1px solid var(--fg);white-space:nowrap}
.tw td{text-align:right;padding:8px 12px;border-bottom:1px solid var(--ln);white-space:nowrap}
.tw th:first-child,.tw td:first-child{text-align:left}
.tw tr:last-child td{border-bottom:0}

/* ── App shell: sidebar pages (home, PDF tools) ─────────────────── */
.app{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}
.side{border-right:1px solid var(--ln);padding:28px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{position:relative;font-family:var(--display);font-weight:700;font-size:16px;color:var(--fg);text-decoration:none}
.brand::after{content:"";position:absolute;inset:-10px 0} /* 44px tap area */
.menu-toggle{display:none;width:44px;height:44px;border:1px solid var(--ln2);border-radius:8px;background:transparent;align-items:center;justify-content:center;cursor:pointer}
.side-body{display:flex;flex-direction:column;flex:1;min-height:0}
.nav-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.nav-links a{display:flex;justify-content:space-between;align-items:center;height:44px;padding:0 12px;border-radius:8px;color:var(--mu);text-decoration:none}
.nav-links a:hover{color:var(--fg)}
.nav-links a[aria-current="page"]{background:var(--ab);color:var(--af)}
.th{margin-top:auto;border-top:1px solid var(--ln);padding-top:12px}
.thl{font-size:11px;color:var(--mu);letter-spacing:.06em;margin:0 0 8px 4px}
.side .seg button{flex:1;padding:1px 6px}

/* ── Small screens ──────────────────────────────────────────────── */
@media (max-width:900px){
  .layout.calc{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:800px){
  .layout{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:760px){
  .app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr}
  .side{position:static;height:auto;border-right:0;border-bottom:1px solid var(--ln);padding:8px 16px}
  .menu-toggle{display:flex}
  .side-body{display:none;padding:12px 0}
  .side.open .side-body{display:flex}
  .app main{padding:24px 16px}
}
@media (max-width:560px){
  .bar{padding:8px 16px}
  main{padding:24px 16px 40px}
  h1{font-size:26px}
  textarea{font-size:16px;min-height:200px}
  /* 16px stops iOS Safari zooming in when a field is tapped */
  input[type=text],input[type=number],input[type=datetime-local],select{font-size:16px}
  .panel .field input,.panel .field select{font-size:16px}
  .stats{grid-template-columns:minmax(0,1fr)}
}
