/* Bondhu design system — river teal · rickshaw rose · marigold */
@font-face{font-family:"Hind Siliguri";font-weight:400;font-display:swap;src:url(../fonts/hind-siliguri-bengali-400-normal.woff2) format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0980-09FE,U+1CF7,U+200C-200D,U+20B9,U+25CC}
@font-face{font-family:"Hind Siliguri";font-weight:400;font-display:swap;src:url(../fonts/hind-siliguri-latin-400-normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Hind Siliguri";font-weight:500;font-display:swap;src:url(../fonts/hind-siliguri-bengali-500-normal.woff2) format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0980-09FE,U+1CF7,U+200C-200D,U+20B9,U+25CC}
@font-face{font-family:"Hind Siliguri";font-weight:500;font-display:swap;src:url(../fonts/hind-siliguri-latin-500-normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Hind Siliguri";font-weight:600;font-display:swap;src:url(../fonts/hind-siliguri-bengali-600-normal.woff2) format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0980-09FE,U+1CF7,U+200C-200D,U+20B9,U+25CC}
@font-face{font-family:"Hind Siliguri";font-weight:600;font-display:swap;src:url(../fonts/hind-siliguri-latin-600-normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Baloo Da 2";font-weight:700;font-display:swap;src:url(../fonts/baloo-da-2-bengali-700-normal.woff2) format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0980-09FE,U+1CF7,U+200C-200D,U+20B9,U+25CC}
@font-face{font-family:"Baloo Da 2";font-weight:700;font-display:swap;src:url(../fonts/baloo-da-2-latin-700-normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Baloo Da 2";font-weight:800;font-display:swap;src:url(../fonts/baloo-da-2-bengali-800-normal.woff2) format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0980-09FE,U+1CF7,U+200C-200D,U+20B9,U+25CC}
@font-face{font-family:"Baloo Da 2";font-weight:800;font-display:swap;src:url(../fonts/baloo-da-2-latin-800-normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --ink:#12202A;--ink-soft:#52646E;--paper:#F1F5F2;--surface:#FFFFFF;--surface-2:#F6F9F7;--line:#D9E3E0;
  --river:#0A6E6A;--river-deep:#064B48;--river-tint:#DDF0ED;--on-river:#FFFFFF;
  --rose:#C8316B;--rose-tint:#FBE4EC;--marigold:#F2A71B;--danger:#B3261E;--danger-tint:#FCE8E6;--ok:#1B7A4A;--ok-tint:#DFF3E7;--warn-tint:#FFF3D6;
  --font:"Hind Siliguri","Noto Sans Bengali","Kalpurush","Nirmala UI","Vrinda",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --display:"Baloo Da 2","Hind Siliguri","Noto Sans Bengali",system-ui,sans-serif;
  --r-lg:18px;--r-md:12px;--r-sm:8px;--shadow:0 1px 2px rgba(18,32,42,.06),0 8px 24px -12px rgba(18,32,42,.18);
  --nav-h:60px;color-scheme:light;
}
:root[data-theme="dark"]{
  --ink:#E7F0EE;--ink-soft:#97ADA8;--paper:#0A1316;--surface:#101C20;--surface-2:#142328;--line:#223439;
  --river:#43C9C0;--river-deep:#9BE8E1;--river-tint:#10302F;--on-river:#042120;
  --rose:#F26B9E;--rose-tint:#3A1626;--danger:#FF8A80;--danger-tint:#3A1B19;--ok:#6FD79F;--ok-tint:#123324;--warn-tint:#3A2F10;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 28px -12px rgba(0,0,0,.6);color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--nav-h) + 12px)}
body{margin:0;font-family:var(--font);font-size:16px;line-height:1.65;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}
img,svg{max-width:100%;display:block}
a{color:var(--river);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3{font-family:var(--display);line-height:1.25;margin:0 0 .5em;font-weight:700}
p{margin:0 0 1em}
:focus-visible{outline:3px solid var(--marigold);outline-offset:2px;border-radius:6px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:var(--surface);padding:8px 14px;border-radius:8px;z-index:100}.skip:focus{left:8px}
.muted{color:var(--ink-soft)}.small{font-size:.875rem}.center{text-align:center}.mt{margin-top:1rem}.mt-2{margin-top:2rem}.hidden{display:none!important}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:.5rem 1.2rem;border-radius:999px;border:1.5px solid transparent;font:600 1rem var(--font);cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s,transform .05s}
.btn:active{transform:translateY(1px)}.btn:hover{text-decoration:none}
.btn-primary{background:var(--river);color:var(--on-river)}.btn-primary:hover{background:var(--river-deep);color:#fff}
:root[data-theme="dark"] .btn-primary:hover{background:#6FDCD4;color:var(--on-river)}
.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink)}.btn-ghost:hover{background:var(--surface-2)}
.btn-rose{background:var(--rose);color:#fff}.btn-danger{background:var(--danger);color:#fff}
:root[data-theme="dark"] .btn-danger{color:#2a0b08}
.btn-block{width:100%}.btn-sm{min-height:36px;padding:.25rem .9rem;font-size:.9rem}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.5;pointer-events:none}
.icon-btn{width:44px;height:44px;border-radius:50%;border:0;background:transparent;color:var(--ink);display:grid;place-items:center;cursor:pointer}
.icon-btn:hover{background:var(--surface-2)}.icon-btn svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* Forms */
.field{margin-bottom:1.1rem}
.field label{display:block;font-weight:600;margin-bottom:.3rem;font-size:.95rem}
.input{width:100%;min-height:46px;padding:.55rem .9rem;border:1.5px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font:inherit}
.input:hover{border-color:color-mix(in srgb,var(--river) 40%,var(--line))}
.input:focus{outline:none;border-color:var(--river);box-shadow:0 0 0 3px color-mix(in srgb,var(--river) 25%,transparent)}
.input[aria-invalid="true"]{border-color:var(--danger)}
select.input{appearance:auto}
.hint{font-size:.85rem;color:var(--ink-soft);margin-top:.25rem}
.error-text{font-size:.875rem;color:var(--danger);margin-top:.25rem}
.check{display:flex;gap:.6rem;align-items:flex-start;font-size:.95rem}.check input{margin-top:.35rem;width:18px;height:18px;accent-color:var(--river)}
.pw-wrap{position:relative}.pw-wrap .input{padding-right:3rem}
.pw-toggle{position:absolute;right:4px;top:3px;height:40px;width:40px;border:0;background:transparent;color:var(--ink-soft);cursor:pointer;border-radius:50%}
.pw-toggle svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;margin:auto}

/* Alerts / toast */
.alert{padding:.75rem 1rem;border-radius:var(--r-md);margin-bottom:1rem;font-size:.95rem;border:1px solid transparent}
.alert-error{background:var(--danger-tint);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}
.alert-success{background:var(--ok-tint);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 30%,transparent)}
.alert-info{background:var(--river-tint);color:var(--river-deep)}
.alert-warn{background:var(--warn-tint);color:var(--ink)}
.toasts{position:fixed;z-index:200;bottom:84px;left:50%;transform:translateX(-50%);display:grid;gap:8px;width:min(92vw,420px)}
@media(min-width:900px){.toasts{bottom:24px}}
.toast{background:var(--ink);color:var(--paper);padding:.7rem 1rem;border-radius:var(--r-md);box-shadow:var(--shadow);font-size:.95rem;animation:toast-in .2s ease-out}
.toast.error{background:var(--danger);color:#fff}
@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* Brand */
.brand{display:inline-flex;align-items:center;gap:.55rem;color:var(--ink);font:800 1.55rem/1 var(--display);text-decoration:none}.brand:hover{text-decoration:none}
.brand svg{width:34px;height:34px}.brand .bm-bg{fill:var(--river)}.brand .bm-a{stroke:var(--on-river)}.brand .bm-b{stroke:var(--marigold)}

/* Guest shell */
.guest-top{display:flex;align-items:center;justify-content:space-between;padding:14px clamp(16px,4vw,48px)}
.guest-top .right{display:flex;align-items:center;gap:.25rem}
.lang-btn{min-width:44px;height:44px;border-radius:999px;border:1.5px solid var(--line);background:transparent;color:var(--ink);font:600 .9rem var(--font);cursor:pointer;padding:0 .8rem}
.lang-btn:hover{background:var(--surface-2)}
.lang-form{display:inline}

/* Landing hero */
.hero{position:relative;overflow:hidden;padding:clamp(24px,6vw,72px) clamp(16px,4vw,48px) 56px}
.hero::before{content:"";position:absolute;inset:auto -12% -30% auto;width:min(60vw,640px);aspect-ratio:1;background:url(../img/alpona.svg) center/contain no-repeat;opacity:.14;pointer-events:none}
.hero-grid{position:relative;display:grid;gap:clamp(28px,5vw,72px);max-width:1160px;margin:0 auto;grid-template-columns:1fr;align-items:center}
@media(min-width:940px){.hero-grid{grid-template-columns:1.25fr 1fr}}
.wordmark{font:800 clamp(5.5rem,17vw,12rem)/.95 var(--display);color:var(--river);margin:0 0 .15em;letter-spacing:-.01em}
.wordmark-line{display:block;width:min(100%,420px);height:14px;margin:-.35rem 0 1.4rem}
.wordmark-line path{stroke:var(--marigold);fill:none;stroke-width:6;stroke-linecap:round}
.hero h1{font-size:clamp(1.5rem,3.2vw,2.2rem);max-width:22ch;margin-bottom:.6rem}
.hero .lede{font-size:1.1rem;color:var(--ink-soft);max-width:46ch}
.feature-list{list-style:none;padding:0;margin:1.8rem 0 0;display:grid;gap:0;max-width:520px;border-top:1px solid var(--line)}
.feature-list li{display:flex;gap:.9rem;padding:.8rem 0;border-bottom:1px solid var(--line);align-items:flex-start}
.feature-list svg{flex:none;width:24px;height:24px;margin-top:3px;stroke:var(--rose);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.feature-list b{display:block;font-weight:600}.feature-list span{color:var(--ink-soft);font-size:.92rem}

/* Cards / auth */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(18px,3vw,28px);box-shadow:var(--shadow)}
.card h2{font-size:1.4rem}
.auth-wrap{display:grid;place-items:start center;padding:clamp(12px,4vw,40px) 16px 56px}
.auth-card{width:min(100%,460px)}
.divider{display:flex;align-items:center;gap:.8rem;color:var(--ink-soft);font-size:.875rem;margin:1.2rem 0}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--line)}
.row-between{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.two-col{display:grid;gap:0 1rem;grid-template-columns:1fr}@media(min-width:520px){.two-col{grid-template-columns:1fr 1fr}}

/* App shell */
.app-top{position:sticky;top:0;z-index:50;height:var(--nav-h);display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:0 clamp(12px,2.5vw,28px);background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.app-top .right{display:flex;align-items:center;gap:.2rem}
.avatar{--s:40px;width:var(--s);height:var(--s);border-radius:50%;background:var(--river-tint);color:var(--river-deep);display:inline-grid;place-items:center;font:700 calc(var(--s)*.4) var(--display);overflow:hidden;flex:none;object-fit:cover}
.avatar-lg{--s:72px}
.menu{position:relative}.menu-panel{position:absolute;right:0;top:calc(100% + 6px);min-width:230px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);padding:6px;display:none}
.menu.open .menu-panel{display:block}
.menu-panel a,.menu-panel button{display:flex;width:100%;align-items:center;gap:.6rem;padding:.6rem .8rem;border-radius:8px;background:none;border:0;color:var(--ink);font:inherit;text-align:left;cursor:pointer;text-decoration:none}
.menu-panel a:hover,.menu-panel button:hover{background:var(--surface-2);text-decoration:none}
.menu-head{padding:.6rem .8rem;border-bottom:1px solid var(--line);margin-bottom:4px}.menu-head b{display:block}
.shell{display:grid;grid-template-columns:1fr;max-width:1180px;margin:0 auto;padding:18px clamp(12px,2.5vw,28px) 96px;gap:24px}
@media(min-width:900px){.shell{grid-template-columns:240px minmax(0,1fr);padding-bottom:40px}}
.side{display:none}@media(min-width:900px){.side{display:block;position:sticky;top:calc(var(--nav-h) + 18px);align-self:start}}
.side a{display:flex;align-items:center;gap:.8rem;padding:.7rem .9rem;border-radius:var(--r-md);color:var(--ink);font-weight:500;text-decoration:none}
.side a:hover{background:var(--surface)}.side a[aria-current="page"]{background:var(--river-tint);color:var(--river-deep);font-weight:600}
.side svg,.bottom-nav svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.bottom-nav{position:fixed;z-index:60;left:0;right:0;bottom:0;display:flex;justify-content:space-around;background:var(--surface);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
@media(min-width:900px){.bottom-nav{display:none}}
.bottom-nav a{flex:1;display:grid;place-items:center;gap:2px;padding:6px 4px;color:var(--ink-soft);font-size:.72rem;text-decoration:none;border-radius:10px}
.bottom-nav a[aria-current="page"]{color:var(--river)}

.empty{display:grid;place-items:center;text-align:center;padding:48px 20px;gap:.4rem}
.empty svg{width:72px;height:72px;stroke:var(--river);fill:none;stroke-width:1.4;margin-bottom:.6rem;opacity:.85}
.empty h3{font-size:1.2rem;margin:0}

.list-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 0;border-bottom:1px solid var(--line)}.list-row:last-child{border:0}
.pill{display:inline-block;padding:.1rem .6rem;border-radius:999px;font-size:.78rem;font-weight:600;background:var(--river-tint);color:var(--river-deep)}
.pill-rose{background:var(--rose-tint);color:var(--rose)}
.tabs{display:flex;gap:.3rem;border-bottom:1px solid var(--line);margin-bottom:1.2rem;overflow-x:auto}
.tabs a{padding:.6rem 1rem;color:var(--ink-soft);font-weight:600;border-bottom:3px solid transparent;white-space:nowrap;text-decoration:none}.tabs a[aria-current="page"]{color:var(--river);border-color:var(--river)}
.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--line) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:sk 1.4s infinite;border-radius:8px;min-height:1em}
@keyframes sk{to{background-position:-200% 0}}
dialog.modal{border:0;border-radius:var(--r-lg);padding:24px;max-width:min(92vw,440px);background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
dialog.modal::backdrop{background:rgba(5,15,18,.55)}

/* Error pages */
.err{min-height:100vh;display:grid;place-items:center;text-align:center;padding:24px}
.err .code{font:800 clamp(5rem,20vw,9rem)/1 var(--display);color:var(--river)}

/* Installer */
.install{max-width:760px;margin:0 auto;padding:24px 16px 64px}
.steps{display:flex;gap:6px;margin:1rem 0 1.6rem;padding:0;list-style:none;flex-wrap:wrap}
.steps li{flex:1;min-width:70px;font-size:.78rem;color:var(--ink-soft);border-top:4px solid var(--line);padding-top:6px}
.steps li.done{border-color:var(--river);color:var(--river)}.steps li.current{border-color:var(--marigold);color:var(--ink);font-weight:600}
.req-table{width:100%;border-collapse:collapse}.req-table td{padding:.55rem .4rem;border-bottom:1px solid var(--line);vertical-align:top}
.req-ok{color:var(--ok);font-weight:600}.req-bad{color:var(--danger);font-weight:600}.req-warn{color:#9a6a00;font-weight:600}
code,.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9em;background:var(--surface-2);padding:.1rem .35rem;border-radius:5px;word-break:break-all}

@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* utility classes (replace inline styles; CSP forbids style="") */
.row-tools{display:flex;gap:.25rem;align-items:center}
.td-end{text-align:right;white-space:nowrap}
.text-left{text-align:left}
.rule{border:0;border-top:1px solid var(--line);margin:1.5rem 0}
.check input{flex:none}.check span{line-height:1.5}
.field label.check{display:flex;font-weight:400;margin:0}
:root[data-theme="dark"] .btn-rose{color:#2B0818}
:root[data-theme="dark"] .btn-rose:hover{background:#F78AB2}
