/* juribooks-odoo-sharp-type-v3.1.css — sharp-typography correction pass.
   Loaded LAST, after juribooks-odoo-classic-v3.css and juribooks-typography-v3.css.

   Presentation only. No ledger, billing, VAT/WHT, payroll, trust, budget,
   cash-flow, storage, auth, export or posting logic is touched.

   What this file fixes (measured against the running app, not assumed):
   1. Two fractional font-weights (650, 450) were found and corrected AT
      SOURCE in juribooks-odoo-classic-v3.css itself (nav group label,
      nav item) — the loaded weights are 400/500/600/700 only.
   2. `.kpi .l`/`.dkpi .l` labels sized via `calc(var(--fbody) * 0.78 ...)`
      in juribooks-skin-v2.css rasterised to a fractional pixel value.
      Replaced with a fixed integer size here.
   3. Form labels carried no explicit colour (fell back to a pale
      inherited tone) and inputs/selects rendered at weight 400, which
      reads as thin next to 600-weight labels. Both corrected.
   4. Placeholders had no explicit rule anywhere except one journal-cell
      selector, so most inputs used the browser's dim default.
   5. Financial figures in tables inherited the table body's 400 weight;
      the spec calls for 500 on amount cells specifically.
   6. Public pages (signup/reset-password/admin) never loaded the Odoo
      theme at all — ODOO-THEME.md's own "known limitations" said so.
      This file remaps their independent --jb-* brand tokens onto Odoo
      purple, the same bridge-token technique juribooks-brand-v2.css
      already used for the premium-ui layer. */

/* ============================================================
   1. FORM LABELS — sharp, consistent weight and contrast
   ============================================================ */
html[data-jb-theme="odoo-classic"] .pf label,
html[data-jb-theme="odoo-classic"] label{
  font-size:11px;font-weight:600;color:#434a55;letter-spacing:.025em;
}

/* ============================================================
   2. INPUT / SELECT VALUES — real weight, not thin
   ============================================================ */
html[data-jb-theme="odoo-classic"] :is(input,select,textarea,.inp){
  font-weight:500;
}
/* Placeholders: legible secondary text, not a faded browser default. */
html[data-jb-theme="odoo-classic"] :is(input,textarea,.inp)::placeholder{
  color:#7e8795;opacity:1;font-weight:400;
}

/* ============================================================
   3. FINANCIAL VALUES — amounts earn weight; plain body text does not
   ============================================================ */
html[data-jb-theme="odoo-classic"] :is(.num,.money,.amt,.mono,
  td.num,td.money,td.amt,td.r,
  .tb-tbl td.r,.tb-tbl td.num,.stmt td.r,.stmt td.num,
  .coa-tbl td.r,.coa-tbl td.num,.jtbl td.r,.jtbl td.num,
  .ppe-tbl td.r,.vat-tbl td.r,.drill-tbl td.r,.drill-tbl td.num,
  .far-tbl td.r,.recent-tbl td.r,.recent-tbl td.num){
  font-weight:500;
}
/* Subtotals/grand totals already carry 600/700 via typography-v3's
   tr.tot/tr.grand rules, which are more specific than this and win. */

/* ============================================================
   4. KPI LABELS — fixed integer size, not a fractional calc()
   Found: juribooks-skin-v2.css `.kpi .l,.dkpi .l` sizes via
   calc(var(--fbody) * 0.78 * var(--zoom,1) * var(--mult-sub,1))
   !important, which rasterises to a non-integer pixel value depending
   on zoom/density settings. Matched at higher specificity + !important
   because the competing rule is itself !important. */
html[data-jb-theme="odoo-classic"] :is(.kpi,.dkpi,.mx) .l{
  font-size:var(--text-xs)!important;
}

/* ============================================================
   5. PUBLIC PAGES (signup / reset-password / admin)
   juribooks-public-ui.css defines its OWN brand palette
   (--jb-navy/--jb-orange/--jb-green/--jb-paleblue/--jb-canvas)
   independent of the app's --navy/--ink/--line tokens that
   juribooks-odoo-classic-v3.css already remaps. Same bridge-token
   technique juribooks-brand-v2.css used for the premium-ui layer:
   redefine the tokens the public-ui layer already reads, at :root,
   so the legacy blue/orange brand resolves to Odoo purple instead.
   ============================================================ */
html[data-jb-theme="odoo-classic"]{
  --jb-navy:var(--odoo-purple,#714b67)!important;
  --jb-navy-deep:var(--odoo-purple-dark,#5b3c52)!important;
  --jb-orange:var(--odoo-purple,#714b67)!important;
  --jb-orange-strong:var(--odoo-purple-dark,#5b3c52)!important;
  --jb-orange-soft:var(--odoo-purple-soft,#f1eaf0)!important;
  --jb-green:var(--odoo-success,#2e7d5b)!important;
  --jb-green-soft:#e9f5ef!important;
  --jb-paleblue:var(--odoo-purple-pale,#f8f4f7)!important;
  --jb-canvas:var(--odoo-bg,#f5f6f8)!important;
}
/* The plan-select tick and focus rings are painted with --jb-orange
   inline math (color-mix), so they follow the remap automatically.
   Only the auth-card gradient wash needs a direct check: with
   --jb-paleblue now a near-white purple tint, the radial gradient in
   juribooks-public-ui.css stays calm rather than loud blue. */

/* ============================================================
   6. MOBILE — reinforce the 16px anti-zoom floor for the two new
   selectors this file adds weight to (no size change, so this is a
   floor guarantee, not a new rule set).
   ============================================================ */
@media (max-width:760px){
  html[data-jb-theme="odoo-classic"] body :is(input,select,textarea,.inp):not([type=checkbox]):not([type=radio]):not([type=file]){
    font-size:16px!important;
  }
}

/* ============================================================
   7. FINANCIAL REPORTS — report-list "shelf" labels + grouping
   Found on the Financial Reports screen: juribooks-views-v2.js's
   shelveReports() groups the report list into Daily/Monthly/Quarterly
   clusters (a real, deliberate feature), but the shelf-label span is
   sized inline via `calc(var(--fbody) * 0.74 * var(--zoom,1) *
   var(--mult-sub,1))` — the same fractional-calc anti-pattern as #4
   above, landing under 10px. A stylesheet !important beats that plain
   (non-important) inline style. Also: at the existing ≤900px
   breakpoint (index.html) .rlist switches from a vertical sidebar to
   a wrapping horizontal row, and at that width the shelf groups ran
   together with no visual separation — confirmed live, this is the
   width this environment's own preview renders at by default, not an
   edge case. A hairline divider between groups fixes it without
   touching the vertical (>900px) layout, where each shelf already
   wraps to its own row by content width alone. */
html[data-jb-theme="odoo-classic"] [data-jb2-shelf]{
  font-size:var(--text-xs)!important;font-weight:600!important;letter-spacing:.06em!important;
  color:var(--odoo-muted,#737b88)!important;
}
html[data-jb-theme="odoo-classic"] .rlist [data-jb2-group]{
  padding:2px 10px 2px 0;
}
html[data-jb-theme="odoo-classic"] .rlist [data-jb2-group] + [data-jb2-group]{
  border-left:1px solid var(--odoo-line,#d9dde3);padding-left:10px;margin-left:2px;
}

/* ============================================================
   8. FINANCIAL REPORTS — "sleek" pass: ghost cards and nested cards
   Found by inspecting computed styles on the running Reports screen.

   8a. Ghost card: juribooks-odoo-skin-v2.css's `.view .period-bar`
   sets a border AND a box-shadow together (`--od-e1`) — the exact
   double-elevation anti-pattern the app's own Odoo theme already
   corrected for .card/.mx (odoo-classic-v3.css sets box-shadow:none on
   those) but never got around to for .period-bar specifically. Same
   fix, same reasoning: one flat bordered surface, no permanent shadow,
   matching every other card in this theme. Radius aligned to the
   theme's own 6px (odoo-classic-v3.css .card) instead of skin-v2's
   unrelated 12px, so the filter bar reads as the same object language
   as the statement card directly below it, not a visually distinct one.

   8b. Nested cards: renderReports() (reports.js) wraps the statement
   table as .card > .frz > table.stmt. A leftover "Sage 50 chrome" skin
   (index.html, a desktop-software skin layered in before the Odoo
   theme existed) independently borders .frz AND .stmt/.tb-tbl with
   square corners in a different grey (#AEB4BD) — three boxes, three
   borders, two competing corner-radius languages, confirmed via
   computed style (.card: 6px odoo-line; .frz/.stmt: 0px #AEB4BD).
   Scoped to #view-reports only (.tb-tbl in particular is shared by
   screens outside Financial Reports that were not audited here, so a
   global change risks removing a frame that IS the only one there).
   The outer .card stays the single declared frame; the table/scroll
   layer inside it now carries no border of its own. */
html[data-jb-theme="odoo-classic"] .period-bar{
  box-shadow:none!important;border-radius:6px!important;
}
html[data-jb-theme="odoo-classic"] #view-reports .frz,
html[data-jb-theme="odoo-classic"] #view-reports .stmt,
html[data-jb-theme="odoo-classic"] #view-reports .tb-tbl{
  border:0!important;
}
