/*
Theme Name: Public Ledger
Theme URI: https://taher.bd
Author: Md Abu Taher
Author URI: https://taher.bd
Description: A privacy-first, bilingual (Bangla/English) theme for documenting financial-dispute harassment cases after paying an official government fee — with photo/audio/video evidence, moderator review, and no IP/device data ever stored against a report.
Version: 2.8.1
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: LICENSE
Text Domain: public-ledger
Tags: custom-colors, custom-menu, translation-ready, one-column, two-columns
*/

/* ---- Self-hosted fonts (no external CDN — loads reliably even if
   fonts.googleapis.com or similar is blocked/slow on the visitor's network) ----
   English: Inter (SIL OFL). Bangla: Hind Siliguri (SIL OFL). Both bundled
   under assets/fonts/, licenses included alongside. */
@font-face{
  font-family:"Inter";
  src:url("assets/fonts/inter-400.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Inter";
  src:url("assets/fonts/inter-500.woff2") format("woff2");
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Inter";
  src:url("assets/fonts/inter-600.woff2") format("woff2");
  font-weight:600; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Inter";
  src:url("assets/fonts/inter-700.woff2") format("woff2");
  font-weight:700; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Hind Siliguri";
  src:url("assets/fonts/hind-siliguri-400.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Hind Siliguri";
  src:url("assets/fonts/hind-siliguri-500.woff2") format("woff2");
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Hind Siliguri";
  src:url("assets/fonts/hind-siliguri-600.woff2") format("woff2");
  font-weight:600; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Hind Siliguri";
  src:url("assets/fonts/hind-siliguri-700.woff2") format("woff2");
  font-weight:700; font-style:normal; font-display:swap;
}

/* Additional selectable fonts (Appearance → Customize → Ledger Fonts) */
@font-face{ font-family:"Roboto"; src:url("assets/fonts/roboto-400.woff2") format("woff2"); font-weight:400; font-style:normal; font-display:swap; }
@font-face{ font-family:"Roboto"; src:url("assets/fonts/roboto-500.woff2") format("woff2"); font-weight:500; font-style:normal; font-display:swap; }
@font-face{ font-family:"Roboto"; src:url("assets/fonts/roboto-600.woff2") format("woff2"); font-weight:600; font-style:normal; font-display:swap; }
@font-face{ font-family:"Roboto"; src:url("assets/fonts/roboto-700.woff2") format("woff2"); font-weight:700; font-style:normal; font-display:swap; }

@font-face{ font-family:"Poppins"; src:url("assets/fonts/poppins-400.woff2") format("woff2"); font-weight:400; font-style:normal; font-display:swap; }
@font-face{ font-family:"Poppins"; src:url("assets/fonts/poppins-500.woff2") format("woff2"); font-weight:500; font-style:normal; font-display:swap; }
@font-face{ font-family:"Poppins"; src:url("assets/fonts/poppins-600.woff2") format("woff2"); font-weight:600; font-style:normal; font-display:swap; }
@font-face{ font-family:"Poppins"; src:url("assets/fonts/poppins-700.woff2") format("woff2"); font-weight:700; font-style:normal; font-display:swap; }

@font-face{ font-family:"Noto Sans Bengali"; src:url("assets/fonts/noto-sans-bengali-400.woff2") format("woff2"); font-weight:400; font-style:normal; font-display:swap; }
@font-face{ font-family:"Noto Sans Bengali"; src:url("assets/fonts/noto-sans-bengali-500.woff2") format("woff2"); font-weight:500; font-style:normal; font-display:swap; }
@font-face{ font-family:"Noto Sans Bengali"; src:url("assets/fonts/noto-sans-bengali-600.woff2") format("woff2"); font-weight:600; font-style:normal; font-display:swap; }
@font-face{ font-family:"Noto Sans Bengali"; src:url("assets/fonts/noto-sans-bengali-700.woff2") format("woff2"); font-weight:700; font-style:normal; font-display:swap; }

@font-face{ font-family:"Baloo Da 2"; src:url("assets/fonts/baloo-da-2-400.woff2") format("woff2"); font-weight:400; font-style:normal; font-display:swap; }
@font-face{ font-family:"Baloo Da 2"; src:url("assets/fonts/baloo-da-2-500.woff2") format("woff2"); font-weight:500; font-style:normal; font-display:swap; }
@font-face{ font-family:"Baloo Da 2"; src:url("assets/fonts/baloo-da-2-600.woff2") format("woff2"); font-weight:600; font-style:normal; font-display:swap; }
@font-face{ font-family:"Baloo Da 2"; src:url("assets/fonts/baloo-da-2-700.woff2") format("woff2"); font-weight:700; font-style:normal; font-display:swap; }

:root{
  --pl-bg:#f6f5f1;
  --pl-fg:#17171a;
  --pl-muted:#6b6b6b;
  --pl-accent:#c1272d;
  --pl-accent-dark:#8f1c21;
  --pl-card:#ffffff;
  --pl-border:#e6e3da;
  --pl-radius:14px;
  --pl-radius-sm:9px;
  --pl-max:1100px;
  --pl-shadow:0 1px 2px rgba(20,20,20,.04), 0 8px 24px -12px rgba(20,20,20,.10);
  --pl-shadow-hover:0 4px 10px rgba(20,20,20,.06), 0 16px 32px -14px rgba(20,20,20,.16);
  --pl-transition:180ms cubic-bezier(.2,.8,.2,1);
  --pl-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Hind Siliguri", "Noto Sans Bengali", Roboto, sans-serif;
  --pl-font-bn: "Hind Siliguri", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:.001ms !important;transition-duration:.001ms !important;}
}
body{
  margin:0;
  background:var(--pl-bg);
  color:var(--pl-fg);
  font-family:var(--pl-font);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none;transition:color var(--pl-transition);}
:focus-visible{outline:2px solid var(--pl-accent);outline-offset:2px;border-radius:4px;}
.pl-container{max-width:var(--pl-max);margin:0 auto;padding:0 24px;}
.pl-page{padding-top:20px;padding-bottom:60px;}
.pl-lead{color:var(--pl-muted);font-size:1.02rem;max-width:60ch;}

/* Header */
.pl-header{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:16px 0;border-bottom:1px solid var(--pl-border);
  position:sticky;top:0;z-index:40;
  background:rgba(246,245,241,.85);
  backdrop-filter:saturate(160%) blur(10px);
  -webkit-backdrop-filter:saturate(160%) blur(10px);
}
.pl-logo{font-weight:800;font-size:1.3rem;letter-spacing:-.01em;}
.pl-logo span{color:var(--pl-accent);}
.pl-nav ul{display:flex;gap:22px;list-style:none;margin:0;padding:0;flex-wrap:wrap;}
.pl-nav a{font-size:.95rem;color:var(--pl-muted);position:relative;padding:4px 0;}
.pl-nav a:hover{color:var(--pl-fg);}
.pl-nav a::after{
  content:"";position:absolute;left:0;right:100%;bottom:-2px;height:2px;background:var(--pl-accent);
  transition:right var(--pl-transition);
}
.pl-nav a:hover::after{right:0;}

/* Language toggle */
.pl-lang-toggle{
  display:inline-flex;border:1px solid var(--pl-border);border-radius:999px;overflow:hidden;
  font-size:.85rem;
}
.pl-lang-toggle a{padding:6px 14px;color:var(--pl-muted);transition:background var(--pl-transition),color var(--pl-transition);}
.pl-lang-toggle a.active{background:var(--pl-fg);color:#fff;}

/* Hero */
.pl-hero{padding:clamp(48px,8vw,84px) 0 clamp(32px,5vw,48px);text-align:center;}
.pl-hero h1{
  font-size:clamp(1.7rem,4.4vw,2.5rem);
  line-height:1.28;margin:0 0 22px;letter-spacing:-.01em;
  max-width:22ch;margin-left:auto;margin-right:auto;
}
.pl-cta{
  display:inline-block;background:var(--pl-accent);color:#fff;
  padding:14px 28px;border-radius:999px;font-weight:600;
  box-shadow:0 10px 24px -10px rgba(193,39,45,.55);
  transition:background var(--pl-transition),transform var(--pl-transition),box-shadow var(--pl-transition);
}
.pl-cta:hover{background:var(--pl-accent-dark);transform:translateY(-1px);box-shadow:0 14px 28px -10px rgba(143,28,33,.6);}
.pl-cta:active{transform:translateY(0);}

/* Stats */
.pl-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;margin:40px 0;}
.pl-stat-card{
  background:var(--pl-card);border:1px solid var(--pl-border);border-radius:var(--pl-radius);
  padding:22px 16px;text-align:center;box-shadow:var(--pl-shadow);
  transition:transform var(--pl-transition),box-shadow var(--pl-transition);
}
.pl-stat-card:hover{transform:translateY(-2px);box-shadow:var(--pl-shadow-hover);}
.pl-stat-card .num{font-size:clamp(1.4rem,3vw,1.9rem);font-weight:800;letter-spacing:-.01em;}
.pl-stat-card .label{color:var(--pl-muted);font-size:.82rem;margin-top:6px;}

/* Ledger / report cards */
.pl-ledger-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:20px 0;}
.pl-ledger-toolbar select, .pl-ledger-toolbar input{
  padding:9px 14px;border:1px solid var(--pl-border);border-radius:999px;background:#fff;font-size:.9rem;
  transition:border-color var(--pl-transition);
}
.pl-ledger-toolbar select:hover, .pl-ledger-toolbar input:hover{border-color:#c9c6ba;}
.pl-report-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin:20px 0 60px;}
.pl-report-card{
  background:var(--pl-card);border:1px solid var(--pl-border);border-radius:var(--pl-radius);padding:20px;
  box-shadow:var(--pl-shadow);transition:transform var(--pl-transition),box-shadow var(--pl-transition);
}
.pl-report-card:hover{transform:translateY(-3px);box-shadow:var(--pl-shadow-hover);}
.pl-report-card .dept{font-weight:700;}
.pl-report-card .amount{font-size:1.3rem;font-weight:800;margin:6px 0;}
.pl-badge{display:inline-block;padding:3px 12px;border-radius:999px;font-size:.75rem;font-weight:600;}
.pl-badge.paid{background:#fdecea;color:var(--pl-accent-dark);}
.pl-badge.rejected{background:#eef1f6;color:#444;}
.pl-badge.pending{background:#fff6e0;color:#8a6300;}

/* Submit form */
.pl-form{
  max-width:640px;margin:30px auto;background:var(--pl-card);border:1px solid var(--pl-border);
  border-radius:var(--pl-radius);padding:clamp(20px,4vw,32px);box-shadow:var(--pl-shadow);
}
.pl-form label{display:block;font-weight:600;margin:18px 0 6px;font-size:.9rem;}
.pl-form select,.pl-form input,.pl-form textarea{
  width:100%;padding:11px 13px;border:1px solid var(--pl-border);border-radius:var(--pl-radius-sm);
  font-family:inherit;font-size:.95rem;background:#fff;
  transition:border-color var(--pl-transition),box-shadow var(--pl-transition);
}
.pl-form select:focus,.pl-form input:focus,.pl-form textarea:focus{
  border-color:var(--pl-accent);box-shadow:0 0 0 3px rgba(193,39,45,.12);outline:none;
}
.pl-form input[type="file"]{padding:9px;background:#fbfaf7;cursor:pointer;}
.pl-form textarea{min-height:110px;resize:vertical;}
.pl-form .pl-hint{font-size:.8rem;color:var(--pl-muted);margin-top:5px;line-height:1.5;}
.pl-form button{
  margin-top:24px;background:var(--pl-fg);color:#fff;border:none;padding:14px 20px;
  border-radius:999px;font-weight:600;cursor:pointer;width:100%;font-size:.98rem;
  transition:background var(--pl-transition),transform var(--pl-transition);
}
.pl-form button:hover{background:#000;transform:translateY(-1px);}
.pl-form button:disabled{opacity:.6;cursor:not-allowed;transform:none;}
.pl-form .pl-notice{padding:12px 16px;border-radius:var(--pl-radius-sm);margin-top:16px;font-size:.9rem;}
.pl-form .pl-notice.success{background:#eaf7ee;color:#1e7a34;}
.pl-form .pl-notice.error{background:#fdecea;color:#a3231a;}

/* Privacy note */
.pl-privacy-note{
  background:#eef1f6;border-radius:var(--pl-radius);padding:20px 24px;font-size:.92rem;color:#333;margin:32px 0;
}
.pl-privacy-note h3{margin-top:0;}

.pl-footer{border-top:1px solid var(--pl-border);padding:36px 0;color:var(--pl-muted);font-size:.85rem;text-align:center;}
.pl-footer a:hover{color:var(--pl-fg);}

[lang-bn="1"]{font-family: var(--pl-font-bn);}

/* Small-screen refinements */
@media (max-width:640px){
  .pl-header{padding:12px 0;}
  .pl-nav ul{gap:14px;}
  .pl-hero{padding-top:36px;}
  .pl-stats{grid-template-columns:repeat(2,1fr);}
  .pl-report-grid{grid-template-columns:1fr;}
}

/* Evidence media */
.pl-evidence-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:10px 0;}
.pl-evidence-photos img{width:100%;height:140px;object-fit:cover;border-radius:8px;border:1px solid var(--pl-border);}

/* Comments */
.pl-comments{margin-top:36px;padding-top:24px;border-top:1px solid var(--pl-border);}
.pl-comment-list{list-style:none;margin:16px 0;padding:0;}
.pl-comment-list li{
  background:var(--pl-card);border:1px solid var(--pl-border);border-radius:var(--pl-radius-sm);
  padding:14px 16px;margin-bottom:12px;
}
.pl-comment-list .comment-author{font-weight:700;font-size:.85rem;}
.pl-comment-list .comment-meta{font-size:.75rem;color:var(--pl-muted);margin-bottom:6px;}
#commentform{margin-top:16px;}
#commentform textarea{
  width:100%;min-height:100px;padding:11px 13px;border:1px solid var(--pl-border);
  border-radius:var(--pl-radius-sm);font-family:inherit;font-size:.95rem;resize:vertical;
}
#commentform textarea:focus{border-color:var(--pl-accent);box-shadow:0 0 0 3px rgba(193,39,45,.12);outline:none;}
.comment-form-captcha{margin:10px 0;font-size:.9rem;}
.comment-form-captcha input[type="number"]{
  padding:8px 10px;border:1px solid var(--pl-border);border-radius:var(--pl-radius-sm);margin-left:6px;
}
#commentform .form-submit input{
  margin-top:10px;background:var(--pl-fg);color:#fff;border:none;padding:12px 20px;
  border-radius:999px;font-weight:600;cursor:pointer;transition:background var(--pl-transition),transform var(--pl-transition);
}
#commentform .form-submit input:hover{background:#000;transform:translateY(-1px);}

/* Comment vote buttons */
.pl-vote-row{display:flex;gap:10px;margin-top:8px;}
.pl-vote-btn{
  background:#f4f3ef;border:1px solid var(--pl-border);border-radius:999px;
  padding:5px 12px;font-size:.85rem;cursor:pointer;
  transition:background var(--pl-transition),transform var(--pl-transition);
}
.pl-vote-btn:hover:not(:disabled){background:#eceae2;transform:translateY(-1px);}
.pl-vote-btn:disabled{opacity:.55;cursor:default;}

/* Announcement popup */
.pl-popup-overlay{
  position:fixed;inset:0;background:rgba(23,23,26,.55);z-index:200;
  display:flex;align-items:center;justify-content:center;padding:20px;
}
.pl-popup-overlay[hidden]{display:none;}
.pl-popup{
  background:var(--pl-card);border-radius:var(--pl-radius);padding:28px;
  max-width:420px;width:100%;position:relative;box-shadow:var(--pl-shadow-hover);
}
.pl-popup h2{margin-top:0;font-size:1.2rem;padding-right:20px;}
.pl-popup p{color:var(--pl-fg);line-height:1.6;}
.pl-popup-close{
  position:absolute;top:12px;right:14px;background:none;border:none;font-size:1.4rem;
  line-height:1;cursor:pointer;color:var(--pl-muted);padding:4px;
}
.pl-popup-close:hover{color:var(--pl-fg);}
.pl-popup-btn{
  display:inline-block;margin-top:10px;background:var(--pl-accent);color:#fff;
  padding:10px 20px;border-radius:999px;font-weight:600;font-size:.9rem;
  transition:background var(--pl-transition),transform var(--pl-transition);
}
.pl-popup-btn:hover{background:var(--pl-accent-dark);transform:translateY(-1px);}

/* Floating chat/support button */
.pl-float-btn{
  position:fixed;bottom:22px;right:22px;width:56px;height:56px;border-radius:50%;
  background:var(--pl-accent);color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:1.5rem;box-shadow:0 8px 20px -6px rgba(0,0,0,.35);z-index:150;
  transition:transform var(--pl-transition),box-shadow var(--pl-transition),background var(--pl-transition);
}
.pl-float-btn:hover{transform:translateY(-3px) scale(1.05);background:var(--pl-accent-dark);box-shadow:0 12px 26px -6px rgba(0,0,0,.4);}
@media (max-width:640px){
  .pl-float-btn{width:50px;height:50px;font-size:1.3rem;bottom:16px;right:16px;}
  .pl-popup{padding:22px;}
}

/* Division map */
.pl-division-map-section{margin:50px 0;}
.pl-division-map-wrap{position:relative;display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start;}
.pl-division-map{width:100%;max-width:360px;height:auto;flex-shrink:0;}
.pl-division-item{cursor:pointer;}
.pl-division-tile{
  fill:#2e8b3d;stroke:#1f6b2c;stroke-width:2;
  transition:fill var(--pl-transition),stroke var(--pl-transition),filter var(--pl-transition);
}
/* Heat tiers — relative to whichever division currently has the most
   reports (see pl_get_division_heat_tiers()), not fixed absolute counts. */
.pl-division-item.pl-heat-medium .pl-division-tile{fill:#e0a417;stroke:#a97a0f;}
.pl-division-item.pl-heat-high .pl-division-tile{fill:#c1272d;stroke:#8f1c21;}
.pl-division-item:hover .pl-division-tile{filter:brightness(1.12);}
.pl-division-item.active .pl-division-tile{fill:var(--pl-fg) !important;stroke:#000 !important;}
.pl-division-item:focus-visible .pl-division-tile{outline:none;stroke:#fff;stroke-width:3;}
.pl-division-pin path{fill:#fff;stroke:#2b2b2b;stroke-width:0.7;}
.pl-division-pin circle{fill:#2e8b3d;transition:fill var(--pl-transition);}
.pl-division-item.pl-heat-medium .pl-division-pin circle{fill:#a97a0f;}
.pl-division-item.pl-heat-high .pl-division-pin circle{fill:#8f1c21;}
.pl-division-item.active .pl-division-pin circle{fill:#000 !important;}
.pl-division-label{
  font-size:14px;font-weight:700;fill:#fff;text-anchor:middle;
  pointer-events:none;filter:url(#pl-map-label-shadow);
  /* No font-family override here — inherits from <body>/<html>, which is
     what correctly switches between Inter and Hind Siliguri based on the
     active language. Hardcoding it here would silently break that switch. */
}
.pl-division-label-sm{font-size:11px;}
.pl-division-panel{
  flex:1;min-width:240px;background:var(--pl-card);border:1px solid var(--pl-border);
  border-radius:var(--pl-radius);padding:20px;box-shadow:var(--pl-shadow);position:relative;
}
.pl-division-panel[hidden]{display:none;}
.pl-division-panel-close{position:absolute;top:10px;right:12px;background:none;border:none;font-size:1.3rem;cursor:pointer;color:var(--pl-muted);}
.pl-division-panel h3{margin:0 0 10px;}
.pl-division-panel-recent{list-style:none;margin:12px 0;padding:0;}
.pl-division-panel-recent li{padding:6px 0;border-bottom:1px solid var(--pl-border);font-size:.9rem;}
.pl-division-panel-recent a{color:var(--pl-accent-dark);}
.pl-division-panel-link{font-weight:600;font-size:.9rem;}

/* Payment status banner (UddoktaPay redirect back) */
.pl-payment-banner{
  text-align:center;padding:12px 20px;font-weight:600;font-size:.9rem;
}
.pl-payment-success{background:#eaf7ee;color:#1e7a34;}
.pl-payment-cancelled{background:#fff6e0;color:#8a6300;}
.pl-payment-unknown{background:#eef1f6;color:#444;}

/* Report translation (LibreTranslate) */
.pl-translate-block{margin:20px 0;}
.pl-translate-btn{
  background:none;border:1px solid var(--pl-border);border-radius:999px;
  padding:8px 16px;font-size:.85rem;cursor:pointer;color:var(--pl-accent-dark);
  transition:background var(--pl-transition),border-color var(--pl-transition);
}
.pl-translate-btn:hover:not(:disabled){background:#fdecea;border-color:var(--pl-accent);}
.pl-translate-btn:disabled{opacity:.6;cursor:default;}
.pl-translate-result{
  margin-top:12px;padding:14px 16px;background:#f4f3ef;border-radius:var(--pl-radius-sm);
  border:1px dashed var(--pl-border);
}
.pl-translate-disclaimer{font-size:.78rem;color:var(--pl-muted);margin:0 0 8px;}
.pl-translate-text{margin:0;line-height:1.6;}

/* District drill-down chips (inside the division panel) */
.pl-district-chips{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0;}
.pl-district-chip{
  background:#f4f3ef;border:1px solid var(--pl-border);border-radius:999px;
  padding:5px 12px;font-size:.8rem;cursor:pointer;color:var(--pl-fg);
  transition:background var(--pl-transition),border-color var(--pl-transition);
}
.pl-district-chip:hover{background:#fdecea;border-color:var(--pl-accent);}
.pl-district-chip-back{background:var(--pl-fg);color:#fff;border-color:var(--pl-fg);}
.pl-district-chip-back:hover{background:#000;}

/* Case type label on report cards */
.pl-case-type{
  display:inline-block;font-size:.75rem;color:var(--pl-accent-dark);
  background:#fdecea;padding:2px 10px;border-radius:999px;margin:4px 0;
}

/* Division map heat legend */
.pl-map-legend{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 4px;
  font-size:.82rem;color:var(--pl-muted);margin:10px 0 18px;
}
.pl-legend-swatch{
  display:inline-block;width:13px;height:13px;border-radius:3px;
  margin-left:10px;margin-right:2px;vertical-align:-2px;
}
.pl-legend-swatch:first-child{margin-left:0;}
.pl-legend-swatch.pl-heat-high{background:#c1272d;}
.pl-legend-swatch.pl-heat-medium{background:#e0a417;}
.pl-legend-swatch.pl-heat-low{background:#2e8b3d;}
