/* widgets-base.css */
/* Start-a-Foundation post (#91): shared base. Scoped under .fd-wrap. Palette: cocoa + leaf + teal + mustard (plan sec 0). Gold is a FILL only; text accent is --fd2 (leaf). Taxed = warn-red, exempt = leaf. Dark mode ONLY via :root[data-theme="dark"]; never an OS color-scheme media query (post-wide bug #69-#79). The only media feature used is prefers-reduced-motion (plus width/print). Reveals stay visible when JS is off (the hidden state needs html.fd-js). */
.fd-wrap{
  color-scheme:light;
  --fd:#5b3a29; --fd2:#15803d; --fd-gold:#ca8a04; --fd-green:#15803d; --fd-ink:#2a1f1a; --fd-soft:#fdf6ec; --fd-paper:#fffaf3; --fd-night:#1a120e; --fd-warn:#b91c1c; --fd-ok:#0e7490; --fd-on:#fff;
  --fd-bg:var(--card-bg,#fff); --fd-text:var(--text-primary,#2a1f1a); --fd-mu:#57463b; --fd-line:var(--border,#cbd5e1);
  --fd-red-bg:#fef2f2; --fd-red-bd:#fca5a5; --fd-red-tx:#991b1b; --fd-amb-bg:#fffbeb; --fd-amb-bd:#e5b84a; --fd-amb-tx:#78350f; --fd-ok-bg:#f0fdf4; --fd-ok-bd:#86efac; --fd-ok-tx:#14532d;
  --fd-k-official-bg:#ccfbf1; --fd-k-official-tx:#134e4a; --fd-k-statute-bg:#ede9fe; --fd-k-statute-tx:#4c1d95; --fd-k-secondary-bg:#e0f2fe; --fd-k-secondary-tx:#0c4a6e; --fd-k-modelled-bg:#fae8ff; --fd-k-modelled-tx:#701a75; --fd-k-estimate-bg:#fef3c7; --fd-k-estimate-tx:#78350f; --fd-k-illustrative-bg:#f1f5f9; --fd-k-illustrative-tx:#334155;
  --fd-s1:#5b3a29; --fd-s2:#15803d; --fd-s3:#ca8a04; --fd-s4:#0e7490; --fd-s5:#6b7280;
}
:root[data-theme="dark"] .fd-wrap{
  color-scheme:dark;
  --fd:#d6b89c; --fd2:#86efac; --fd-gold:#fde047; --fd-green:#86efac; --fd-ink:#f1e9e1; --fd-soft:#2b211b; --fd-paper:#1f1713; --fd-night:#120c09; --fd-warn:#fca5a5; --fd-ok:#67e8f9; --fd-on:#120c09;
  --fd-bg:#1f1713; --fd-text:#f1e9e1; --fd-mu:#c7b8aa; --fd-line:#4a3a30;
  --fd-red-bg:#3b1a1f; --fd-red-bd:#7f1d1d; --fd-red-tx:#fecaca; --fd-amb-bg:#3a2d12; --fd-amb-bd:#7c5a0a; --fd-amb-tx:#fde68a; --fd-ok-bg:#12301c; --fd-ok-bd:#166534; --fd-ok-tx:#bbf7d0;
  --fd-k-official-bg:#0f3a36; --fd-k-official-tx:#99f6e4; --fd-k-statute-bg:#2e2552; --fd-k-statute-tx:#ddd6fe; --fd-k-secondary-bg:#10323f; --fd-k-secondary-tx:#bae6fd; --fd-k-modelled-bg:#3b1a47; --fd-k-modelled-tx:#f5d0fe; --fd-k-estimate-bg:#3a2d12; --fd-k-estimate-tx:#fde68a; --fd-k-illustrative-bg:#26253a; --fd-k-illustrative-tx:#cbd5e1;
  --fd-s1:#d6b89c; --fd-s2:#86efac; --fd-s3:#fde047; --fd-s4:#67e8f9; --fd-s5:#d1d5db;
}
:root[data-theme="dark"] .fd-wrap input,:root[data-theme="dark"] .fd-wrap select,:root[data-theme="dark"] .fd-wrap textarea,:root[data-theme="dark"] .fd-wrap button{background-color:var(--fd-bg);color:var(--fd-text);border-color:var(--fd-line)}
:root[data-theme="dark"] .fd-wrap .fd-btn2,:root[data-theme="dark"] .fd-wrap .fd-chip.on,:root[data-theme="dark"] .fd-wrap .fd-tab.on,:root[data-theme="dark"] .fd-wrap .fd-pill.on{background-color:var(--fd);color:var(--fd-on);border-color:var(--fd)}
:root[data-theme="dark"] .fd-wrap .fd-btn2.fd-ghost{background-color:var(--fd-bg);color:var(--fd)}
:root[data-theme="dark"] .fd-wrap .fd-cta-btn{background-color:var(--fd-gold);color:#1b1626;border-color:var(--fd-gold)}
:root[data-theme="dark"] .fd-wrap [stroke="#6b21a8"]{stroke:#c4b5fd}
:root[data-theme="dark"] .fd-wrap [fill="#6b21a8"]{fill:#c4b5fd}
:root[data-theme="dark"] .fd-wrap [stroke="#166534"]{stroke:#86efac}
:root[data-theme="dark"] .fd-wrap [fill="#166534"]{fill:#86efac}
:root[data-theme="dark"] .fd-wrap [stroke="#b7791f"]{stroke:#fcd34d}
:root[data-theme="dark"] .fd-wrap [fill="#b7791f"]{fill:#fcd34d}
:root[data-theme="dark"] .fd-wrap [stroke="#d4a017"]{stroke:#fcd34d}
:root[data-theme="dark"] .fd-wrap [fill="#d4a017"]{fill:#fcd34d}
:root[data-theme="dark"] .fd-wrap [stroke="#b91c1c"]{stroke:#fca5a5}
:root[data-theme="dark"] .fd-wrap [fill="#b91c1c"]{fill:#fca5a5}
:root[data-theme="dark"] .fd-wrap [stroke="#1f1b2e"]{stroke:#ede9fe}
:root[data-theme="dark"] .fd-wrap [fill="#1f1b2e"]{fill:#ede9fe}
:root[data-theme="dark"] .fd-wrap [stroke="#1d4ed8"]{stroke:#93c5fd}
:root[data-theme="dark"] .fd-wrap [fill="#1d4ed8"]{fill:#93c5fd}
:root[data-theme="dark"] .fd-wrap [stroke="#be185d"]{stroke:#f9a8d4}
:root[data-theme="dark"] .fd-wrap [fill="#be185d"]{fill:#f9a8d4}
:root[data-theme="dark"] .fd-wrap [stroke="#5b3a29"]{stroke:#d6b89c}
:root[data-theme="dark"] .fd-wrap [fill="#5b3a29"]{fill:#d6b89c}
:root[data-theme="dark"] .fd-wrap [stroke="#15803d"]{stroke:#86efac}
:root[data-theme="dark"] .fd-wrap [fill="#15803d"]{fill:#86efac}
:root[data-theme="dark"] .fd-wrap [stroke="#ca8a04"]{stroke:#fde047}
:root[data-theme="dark"] .fd-wrap [fill="#ca8a04"]{fill:#fde047}
:root[data-theme="dark"] .fd-wrap [stroke="#0e7490"]{stroke:#67e8f9}
:root[data-theme="dark"] .fd-wrap [fill="#0e7490"]{fill:#67e8f9}
:root[data-theme="dark"] .fd-wrap [stroke="#2a1f1a"]{stroke:#f1e9e1}
:root[data-theme="dark"] .fd-wrap [fill="#2a1f1a"]{fill:#f1e9e1}
:root[data-theme="dark"] .fd-wrap [style*="background:#15803d"]:not(.fd-sw){background:#86efac !important}
:root[data-theme="dark"] .fd-wrap [style*="background:#5b3a29"]:not(.fd-sw){background:#d6b89c !important}
:root[data-theme="dark"] .fd-wrap [style*="background:#6b21a8"]:not(.fd-sw){background:#c4b5fd !important}
:root[data-theme="dark"] .fd-wrap [style*="background:#166534"]:not(.fd-sw){background:#86efac !important}
:root[data-theme="dark"] .fd-wrap [style*="background:#b7791f"]:not(.fd-sw){background:#fcd34d !important}
:root[data-theme="dark"] .fd-wrap [style*="border-color:#6b21a8"]{border-color:#c4b5fd !important}
:root[data-theme="dark"] .fd-wrap [style*="border-color:#166534"]{border-color:#86efac !important}
/* ---- layout primitives ---- */
.fd-wrap .fd-widget{margin:1.6em 0;min-height:60px}
.fd-wrap .fd-card{background:var(--fd-bg);color:var(--fd-text);border:1px solid var(--fd-line);border-radius:14px;padding:16px;box-shadow:0 1px 3px rgba(31,27,46,.08);font-size:15px;line-height:1.5;overflow:hidden;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
.fd-wrap .fd-head{margin-bottom:10px}
.fd-wrap .fd-title{margin:0 0 4px;font-size:1.12em;font-weight:700;color:var(--fd-ink);line-height:1.3}
.fd-wrap .fd-intro{margin:0;color:var(--fd-mu);font-size:.93em}
.fd-wrap .fd-foot{margin-top:12px;padding-top:10px;border-top:1px dashed var(--fd-line);font-size:.86em;color:var(--fd-mu)}
.fd-wrap .fd-foot p{margin:.2em 0}
/* disclaimer banner (S2) on every widget */
.fd-wrap .fd-disc{margin:0 0 10px;padding:8px 12px;border-radius:10px;border:1px solid var(--fd-amb-bd);border-left:4px solid var(--fd-gold);background:var(--fd-amb-bg);color:var(--fd-amb-tx);font-size:.86em;line-height:1.45}
.fd-wrap .fd-grid{display:grid;gap:10px;grid-template-columns:1fr 1fr}
.fd-wrap .fd-tile{background:var(--fd-soft);border:1px solid var(--fd-line);border-radius:10px;padding:10px 12px;min-width:0}
.fd-wrap .fd-tile .fd-k{font-size:.78em;color:var(--fd-mu);text-transform:uppercase;letter-spacing:.03em}
.fd-wrap .fd-tile .fd-v{font-size:1.45em;font-weight:700;color:var(--fd-ink);line-height:1.2;word-break:break-word}
.fd-wrap .fd-tile .fd-u{font-size:.78em;color:var(--fd-mu);font-weight:400}
.fd-wrap .fd-tile .fd-n{font-size:.8em;color:var(--fd-mu);margin-top:2px}
@media (min-width:760px){.fd-wrap .fd-grid.fd-g4{grid-template-columns:repeat(4,1fr)}.fd-wrap .fd-grid.fd-g3{grid-template-columns:repeat(3,1fr)}}
.fd-wrap .fd-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:8px 0}
.fd-wrap .fd-field{display:flex;flex-direction:column;gap:3px;min-width:130px;flex:1 1 130px}
.fd-wrap .fd-field>span{font-size:.82em;color:var(--fd-mu)}
.fd-wrap .fd-ctl,.fd-wrap input[type=number],.fd-wrap input[type=date],.fd-wrap input[type=text],.fd-wrap select{font:inherit;font-size:16px;min-height:44px;padding:6px 10px;border:1px solid var(--fd-line);border-radius:8px;background:var(--fd-bg);color:var(--fd-text);box-sizing:border-box;width:100%;max-width:100%}
.fd-wrap input[type=range]{width:100%;min-height:44px;accent-color:var(--fd)}
.fd-wrap input[type=checkbox],.fd-wrap input[type=radio]{width:22px;height:22px;accent-color:var(--fd);flex:none;margin:0}
.fd-wrap button{font:inherit;font-size:15px;cursor:pointer}
.fd-wrap .fd-chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.fd-wrap .fd-chip,.fd-wrap .fd-pill,.fd-wrap .fd-tab{min-height:44px;padding:6px 14px;border:1px solid var(--fd-line);border-radius:22px;background:var(--fd-bg);color:var(--fd-text);line-height:1.2;text-align:left}
.fd-wrap .fd-chip.on,.fd-wrap .fd-pill.on,.fd-wrap .fd-tab.on{background:var(--fd);color:var(--fd-on);border-color:var(--fd);font-weight:600}
.fd-wrap .fd-btn2{min-height:44px;padding:8px 16px;border:1px solid var(--fd);border-radius:8px;background:var(--fd);color:var(--fd-on);font-weight:600}
.fd-wrap .fd-btn2.fd-ghost{background:var(--fd-bg);color:var(--fd)}
.fd-wrap .fd-btn2[disabled]{opacity:.5;cursor:not-allowed}
/* call-to-action button (gold fill, ink text) */
.fd-wrap .fd-cta-btn,a.fd-cta-btn{display:inline-block;min-height:44px;box-sizing:border-box;padding:10px 20px;border:1px solid var(--fd-gold,#d4a017);border-radius:10px;background:var(--fd-gold,#d4a017);color:#1f1b2e;font-weight:700;text-decoration:none;line-height:1.3;text-align:center}
.fd-wrap .fd-cta-btn:hover,a.fd-cta-btn:hover{filter:brightness(1.06);text-decoration:none}
.fd-wrap .fd-chip:focus-visible,.fd-wrap .fd-btn2:focus-visible,.fd-wrap .fd-cta-btn:focus-visible,.fd-wrap .fd-ctl:focus-visible,.fd-wrap select:focus-visible,.fd-wrap input:focus-visible,.fd-wrap .fd-pill:focus-visible,.fd-wrap .fd-tab:focus-visible{outline:3px solid var(--fd2);outline-offset:2px}
.fd-wrap .fd-lg{font-size:.85em;color:var(--fd-mu)}
.fd-wrap .fd-sw{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.fd-wrap .fd-tablewrap{overflow:auto;-webkit-overflow-scrolling:touch;max-width:100%;margin:8px 0;border:1px solid var(--fd-line);border-radius:10px}
.fd-wrap .fd-tbl{border-collapse:collapse;width:100%;font-size:.9em;min-width:520px;margin:0}
.fd-wrap .fd-tbl th,.fd-wrap .fd-tbl td{padding:8px 10px;border-bottom:1px solid var(--fd-line);text-align:left;vertical-align:top;color:var(--fd-text)}
.fd-wrap .fd-tbl th{background:var(--fd-soft);color:var(--fd-ink);font-weight:700;white-space:nowrap}
.fd-wrap .fd-tbl tr:last-child td{border-bottom:0}
.fd-wrap .fd-tbl td input[type=number]{min-height:40px;width:7.5em}
.fd-wrap .fd-num{white-space:nowrap}
/* kind badges: shape and text carry meaning, not colour alone */
.fd-wrap .fd-kind{display:inline-block;font-size:.7em;font-weight:700;letter-spacing:.02em;padding:1px 7px;border-radius:9px;border:1px solid transparent;vertical-align:middle;white-space:nowrap;line-height:1.5}
.fd-wrap .fd-kind-official{background:var(--fd-k-official-bg);color:var(--fd-k-official-tx);border-width:2px;border-color:currentColor}
.fd-wrap .fd-kind-statute{background:var(--fd-k-statute-bg);color:var(--fd-k-statute-tx);border-color:currentColor}
.fd-wrap .fd-kind-secondary{background:var(--fd-k-secondary-bg);color:var(--fd-k-secondary-tx);border-style:dashed;border-color:currentColor}
.fd-wrap .fd-kind-modelled{background:var(--fd-k-modelled-bg);color:var(--fd-k-modelled-tx);border-color:currentColor;background-image:repeating-linear-gradient(135deg,transparent 0 4px,rgba(127,127,127,.18) 4px 5px)}
.fd-wrap .fd-kind-estimate{background:var(--fd-k-estimate-bg);color:var(--fd-k-estimate-tx);border-style:dotted;border-color:currentColor}
.fd-wrap .fd-kind-illustrative{background:var(--fd-k-illustrative-bg);color:var(--fd-k-illustrative-tx);border-style:dotted;border-color:currentColor}
.fd-wrap .fd-kind-study{background:var(--fd-k-secondary-bg);color:var(--fd-k-secondary-tx);border-width:2px;border-style:double;border-color:currentColor}
.fd-wrap .fd-kind-unverified{background:var(--fd-red-bg);color:var(--fd-red-tx);border-style:dashed;border-color:currentColor}
.fd-wrap .fd-kind-editorial{background:var(--fd-k-illustrative-bg);color:var(--fd-k-illustrative-tx);border-color:currentColor}
.fd-wrap .fd-kind-proposal,.fd-wrap .fd-kind-pending{background:var(--fd-amb-bg);color:var(--fd-amb-tx);border-style:dashed;border-color:currentColor}
.fd-wrap .fd-src{font-size:.72em;color:var(--fd-mu);margin-left:2px}
.fd-wrap .fd-unv{font-weight:700;color:var(--fd-warn);font-size:.9em}
.fd-wrap .fd-redbox,.fd-wrap .fd-ambbox,.fd-wrap .fd-okbox{border-radius:10px;padding:10px 12px;margin:10px 0;font-size:.92em;border:1px solid}
.fd-wrap .fd-redbox{background:var(--fd-red-bg);border-color:var(--fd-red-bd);color:var(--fd-red-tx)}
.fd-wrap .fd-ambbox{background:var(--fd-amb-bg);border-color:var(--fd-amb-bd);color:var(--fd-amb-tx)}
.fd-wrap .fd-okbox{background:var(--fd-ok-bg);border-color:var(--fd-ok-bd);color:var(--fd-ok-tx)}
.fd-wrap .fd-redbox b,.fd-wrap .fd-ambbox b,.fd-wrap .fd-okbox b{color:inherit}
.fd-wrap .fd-chipc{display:inline-block;margin:4px 6px 4px 0;padding:3px 12px;border-radius:14px;border:1px solid var(--fd-amb-bd);background:var(--fd-amb-bg);color:var(--fd-amb-tx);font-weight:700;font-size:.85em}
.fd-wrap .fd-chipc.fd-in{background:var(--fd-ok-bg);border-color:var(--fd-ok-bd);color:var(--fd-ok-tx)}
.fd-wrap .fd-chipc.fd-out{background:var(--fd-red-bg);border-color:var(--fd-red-bd);color:var(--fd-red-tx)}
.fd-wrap .fd-chipc.fd-grey{background:var(--fd-soft);border-color:var(--fd-line);color:var(--fd-mu);text-decoration:line-through}
/* fallback block shown when a widget cannot mount (hidden by the framework on success) */
.fd-wrap .fd-fb{font-size:.92em;color:var(--fd-text);background:var(--fd-paper);border:1px dashed var(--fd-line);border-radius:10px;padding:10px 12px}
.fd-wrap .fd-fb p{margin:.3em 0}
.fd-wrap .fd-fig{margin:10px 0}.fd-wrap .fd-fig img{width:100%;height:auto;display:block;border-radius:10px}.fd-wrap .fd-fig figcaption{font-size:.82em;color:var(--fd-mu);margin-top:4px}
.fd-wrap .fd-bar{position:relative;height:12px;background:var(--fd-soft);border:1px solid var(--fd-line);border-radius:6px;overflow:hidden}
.fd-wrap .fd-bar i{position:absolute;top:0;bottom:0;border-radius:5px;background:var(--fd-s1);opacity:.35}
.fd-wrap .fd-bar b{position:absolute;top:2px;bottom:2px;border-radius:3px;background:var(--fd-s1);min-width:3px}
.fd-wrap .fd-bar.fd-hatch i,.fd-wrap .fd-bar.fd-hatch b{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.55) 0 3px,transparent 3px 6px)}
.fd-wrap .fd-svg{width:100%;height:auto;display:block}
.fd-wrap .fd-svg text{fill:var(--fd-text);font-size:10px}
.fd-wrap .fd-svg .fd-grid-l{stroke:var(--fd-line);stroke-width:1}
.fd-wrap .fd-svg .fd-bar-s{fill:var(--fd-s1)}
.fd-wrap .fd-small{font-size:.85em;color:var(--fd-mu)}
.fd-wrap .fd-list{margin:6px 0;padding-left:1.2em}
.fd-wrap .fd-list li{margin:4px 0}
.fd-wrap .fd-lrow{padding:10px 0;border-bottom:1px solid var(--fd-line)}
.fd-wrap .fd-lrow:last-child{border-bottom:0}
.fd-wrap .fd-lh{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 12px;margin-bottom:4px}
.fd-wrap .fd-lh>b{flex:1 1 160px}
/* ---- reveals, progress bar, count-ups ---- */
.fd-js .fd-wrap .fd-rv{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}
.fd-js .fd-wrap .fd-rv.fd-in{opacity:1;transform:none}
.fd-js .fd-wrap .fd-stagger>*{opacity:0;transform:translateY(12px);transition:opacity .5s ease,transform .5s ease}
.fd-js .fd-wrap .fd-stagger.fd-in>*{opacity:1;transform:none}
.fd-progress{position:fixed;left:0;top:0;height:3px;width:100%;transform:scaleX(0);transform-origin:0 50%;background:linear-gradient(90deg,#6b21a8,#d4a017);z-index:9999;pointer-events:none}
:root[data-theme="dark"] .fd-progress{background:linear-gradient(90deg,#c4b5fd,#fcd34d)}
.fd-wrap .fd-par{will-change:transform}
@keyframes fd-pop{from{transform:scale(.97);opacity:.4}to{transform:none;opacity:1}}
.fd-wrap .fd-pop{animation:fd-pop .25s ease-out}
@media (prefers-reduced-motion:reduce){
  .fd-js .fd-wrap .fd-rv,.fd-js .fd-wrap .fd-stagger>*{opacity:1;transform:none;transition:none}
  .fd-wrap .fd-par{transform:none !important}
  .fd-wrap .fd-pop{animation:none}
  .fd-wrap *{scroll-behavior:auto}
}
@media print{
  .fd-progress{display:none}
  .fd-js .fd-wrap .fd-rv,.fd-js .fd-wrap .fd-stagger>*{opacity:1;transform:none}
}

.fd-wrap .fd-tax{margin:1.2rem 0;padding:.4rem 1rem .2rem;border-left:5px solid var(--fd2);border-radius:10px;background:var(--fd-ok-bg)}
.fd-wrap .fd-taxnote{margin:.5rem 0;padding:.5rem .8rem;border:1px solid var(--fd-ok-bd);border-radius:8px;font-size:.9em;color:var(--fd-ok-tx);background:var(--fd-bg)}

/* widgets-A.css */
/* Start-a-Foundation post (#91) PART A styles (W1): chooser, checklist, gantt, budget + charts C1-C5. Tokens come from widgets-base.css; dark mode flows through :root[data-theme="dark"] .fd-wrap variables only (no OS colour-scheme media query anywhere). Everything is scoped under .fd-wrap. */
.fd-wrap .fd-widget>*,.fd-wrap .fd-grid>*{min-width:0}
.fd-wrap .fd-widget{max-width:100%}
.fd-wrap .fd-hd{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:8px}
.fd-wrap .fd-hd .fd-title{margin:0}
.fd-wrap .fd-in{margin:8px 0}
.fd-wrap .fd-out{margin:10px 0}
.fd-wrap .fd-lab{margin:.3em 0}
.fd-wrap .fd-fs{border:1px solid var(--fd-line);border-radius:10px;padding:8px 12px 10px;margin:10px 0;min-width:0}
.fd-wrap .fd-fs legend{font-weight:700;color:var(--fd-ink);padding:0 6px;font-size:.95em}
.fd-wrap .fd-radios{display:flex;flex-wrap:wrap;gap:6px 14px}
.fd-wrap .fd-radio,.fd-wrap .fd-check{display:inline-flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;color:var(--fd-text)}
.fd-wrap .fd-radio input,.fd-wrap .fd-check input{flex:none}
.fd-wrap .fd-fieldset{margin:8px 0}
.fd-wrap .fd-lbl{display:block;font-size:.9em;color:var(--fd-mu);margin-bottom:2px}
.fd-wrap .fd-rng label{display:flex;justify-content:space-between;gap:8px;font-size:.88em;color:var(--fd-mu)}
.fd-wrap .fd-rng output{font-weight:700;color:var(--fd-ink)}
.fd-wrap .fd-field label{font-size:.88em;color:var(--fd-mu)}
.fd-wrap .fd-field input[type=month],.fd-wrap .fd-field input[type=text]{font:inherit;font-size:16px;min-height:44px;padding:6px 10px;border:1px solid var(--fd-line);border-radius:8px;background:var(--fd-bg);color:var(--fd-text);box-sizing:border-box;width:100%;max-width:100%}
.fd-wrap .fd-notice{margin:8px 0;padding:8px 12px;border:1px dashed var(--fd-amb-bd);border-radius:10px;background:var(--fd-amb-bg);color:var(--fd-amb-tx)}
@media (max-width:560px){.fd-wrap .fd-gin{grid-template-columns:1fr}}
/* chooser */
.fd-wrap .fd-vlist{list-style:none;margin:8px 0;padding:0;display:grid;gap:12px}
.fd-wrap .fd-vc{border:1px solid var(--fd-line);border-radius:12px;padding:12px;background:var(--fd-bg)}
.fd-wrap .fd-vc:first-child{border-color:var(--fd2);border-width:2px}
.fd-wrap .fd-dl{margin:8px 0 0;display:grid;grid-template-columns:minmax(0,9.5em) minmax(0,1fr);gap:4px 10px;font-size:.9em}
.fd-wrap .fd-dl dt{color:var(--fd-mu);font-weight:600}
.fd-wrap .fd-dl dd{margin:0;overflow-wrap:anywhere}
@media (max-width:520px){.fd-wrap .fd-dl{grid-template-columns:1fr}.fd-wrap .fd-dl dt{margin-top:4px}}
/* checklist */
.fd-wrap .fd-prog{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.fd-wrap .fd-prog progress{flex:1 1 200px;height:16px;accent-color:var(--fd2)}
.fd-wrap .fd-ph h4{margin:14px 0 6px;font-size:1em;color:var(--fd-ink)}
.fd-wrap .fd-cklist{list-style:none;margin:0;padding:0}
.fd-wrap .fd-ck{padding:8px 0;border-bottom:1px solid var(--fd-line)}
.fd-wrap .fd-ck[hidden]{display:none}
.fd-wrap .fd-ckl{display:flex;gap:10px;align-items:flex-start;min-height:44px;cursor:pointer}
.fd-wrap .fd-ckl input{margin-top:2px}
.fd-wrap .fd-ckm{margin:2px 0 0 32px;font-size:.84em;color:var(--fd-mu);display:flex;flex-wrap:wrap;gap:2px 14px}
/* gantt and charts */
.fd-wrap .fd-gscroll,.fd-wrap .fd-chartwrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;border:1px solid var(--fd-line);border-radius:10px;background:var(--fd-bg)}
.fd-wrap .fd-gscroll>svg,.fd-wrap .fd-chartwrap>svg{display:block;width:100%;height:auto}
.fd-wrap .fd-gscroll:focus-visible{outline:3px solid var(--fd2);outline-offset:2px}
.fd-wrap .fd-chart{margin:1.2em 0}
.fd-wrap .fd-data{margin:8px 0;font-size:.9em}
.fd-wrap .fd-data summary{cursor:pointer;min-height:32px;color:var(--fd-mu)}
.fd-wrap .fd-lg .fd-sw{margin-left:10px}
.fd-wrap .fd-lg .fd-sw:first-child{margin-left:0}
.fd-wrap .fd-sw.fd-f1{background:var(--fd-s1)}.fd-wrap .fd-sw.fd-f2{background:var(--fd-s2)}.fd-wrap .fd-sw.fd-f3{background:var(--fd-s3)}.fd-wrap .fd-sw.fd-f4{background:var(--fd-s4)}.fd-wrap .fd-sw.fd-f5{background:var(--fd-s5)}
.fd-wrap .fd-sw.fd-fw{background:var(--fd-warn)}.fd-wrap .fd-sw.fd-fo{background:var(--fd2)}
.fd-wrap svg .fd-t{fill:var(--fd-text);font-size:12px;font-family:inherit}
.fd-wrap svg .fd-tb{font-weight:700;fill:var(--fd-ink)}
.fd-wrap svg .fd-tm{fill:var(--fd-mu)}
.fd-wrap svg .fd-ton{fill:var(--fd-on);font-weight:700}
.fd-wrap svg .fd-f1{fill:var(--fd-s1)}.fd-wrap svg .fd-f2{fill:var(--fd-s2)}.fd-wrap svg .fd-f3{fill:var(--fd-s3)}.fd-wrap svg .fd-f4{fill:var(--fd-s4)}.fd-wrap svg .fd-f5{fill:var(--fd-s5)}
.fd-wrap svg .fd-fw{fill:var(--fd-warn)}.fd-wrap svg .fd-fo{fill:var(--fd2)}
.fd-wrap svg .fd-fb2{fill:var(--fd-soft);stroke:var(--fd-s1);stroke-width:1.5}
.fd-wrap svg .fd-s1{stroke:var(--fd-s1)}.fd-wrap svg .fd-s2{stroke:var(--fd-s2)}.fd-wrap svg .fd-s3{stroke:var(--fd-s3)}.fd-wrap svg .fd-s4{stroke:var(--fd-s4)}.fd-wrap svg .fd-s5{stroke:var(--fd-s5)}
.fd-wrap svg .fd-sw2{stroke:var(--fd-warn)}.fd-wrap svg .fd-so{stroke:var(--fd2)}
.fd-wrap svg .fd-gl{stroke:var(--fd-line);stroke-width:1}
.fd-wrap svg .fd-gb{stroke:var(--fd-line);fill:none}
.fd-wrap svg .fd-gd{fill:none;stroke:var(--fd-mu);stroke-width:1}
.fd-wrap svg .fd-fm{fill:var(--fd-mu)}
.fd-wrap svg .fd-ms{stroke:var(--fd-gold);stroke-width:2;stroke-dasharray:4 3}
.fd-wrap svg .fd-hl{stroke:var(--fd-on);stroke-opacity:.6}
.fd-wrap svg rect[data-id]:hover{filter:brightness(1.15)}
/* budget */
.fd-wrap .fd-split{margin:10px 0}
.fd-wrap .fd-bar{height:14px}
.fd-wrap .fd-noprint{margin-top:12px}
/* print: only the checklist */
@media print{
  html.fd-printing body *{visibility:hidden !important}
  html.fd-printing #fd-checklist,html.fd-printing #fd-checklist *{visibility:visible !important}
  html.fd-printing #fd-checklist{position:absolute;left:0;top:0;width:100%;border:0;box-shadow:none}
  html.fd-printing #fd-checklist .fd-noprint,html.fd-printing #fd-checklist .fd-radios{display:none !important}
  html.fd-printing #fd-checklist .fd-ck[hidden]{display:none !important}
}
.fd-wrap .fd-widget .fd-tile .fd-v{font-size:1.2em;overflow-wrap:anywhere;word-break:normal}

/* widgets-B.css */
/* Start-a-Foundation post (#91) widgets PART B (W2): property, loan, impact, investor + charts C6-C10 + margin decoration. Scoped under .fd-wrap.
   Colours come only from the tokens in widgets-base.css, which already flip under :root[data-theme="dark"]; no OS colour-scheme media query is used.
   Only prefers-reduced-motion, width and print media. */
.fd-wrap .fd-wb .fd-hd{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:8px}
.fd-wrap .fd-wb .fd-hd .fd-title{margin:0}
.fd-wrap .fd-wb form.fd-in{margin:0 0 6px}
.fd-wrap .fd-wb .fd-field.fd-f2{flex:2 1 240px}
.fd-wrap .fd-wb .fd-fchips{flex:1 1 100%;min-width:0}
.fd-wrap .fd-wb .fd-fchips>span{font-size:.82em;color:var(--fd-mu)}
.fd-wrap .fd-wb input[type=range]{padding:0}
.fd-wrap .fd-chk{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:8px 0;cursor:pointer;line-height:1.4}
.fd-wrap .fd-chk>input{margin-top:1px}
.fd-wrap .fd-chk>span{flex:1 1 auto;min-width:0}
.fd-wrap .fd-out{margin-top:10px;min-height:20px}
.fd-wrap .fd-tile.fd-hot{border-color:var(--fd2);border-width:2px}
.fd-wrap .fd-tile .fd-v .fd-chipc{font-size:.5em;vertical-align:middle}
.fd-wrap .fd-chipc.fd-chip-ok{background:var(--fd-ok-bg);border-color:var(--fd-ok-bd);color:var(--fd-ok-tx)}
.fd-wrap .fd-chipc.fd-chip-warn{background:var(--fd-amb-bg);border-color:var(--fd-amb-bd);color:var(--fd-amb-tx)}
.fd-wrap .fd-chipc.fd-chip-bad{background:var(--fd-red-bg);border-color:var(--fd-red-bd);color:var(--fd-red-tx)}
.fd-wrap .fd-card-sel .fd-sc{margin:6px 0 10px;padding:10px 12px;border:1px solid var(--fd-line);border-left:4px solid var(--fd2);border-radius:10px;background:var(--fd-soft)}
.fd-wrap .fd-card-sel .fd-sc p{margin:.4em 0}
.fd-wrap .fd-lbl-in{color:var(--fd-mu)}
.fd-wrap .fd-bblist{list-style:none;margin:10px 0;padding:0}
.fd-wrap .fd-bbrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:6px 8px;border-radius:8px;border:1px solid transparent}
.fd-wrap .fd-bbrow.on{border-color:var(--fd2);background:var(--fd-soft)}
.fd-wrap .fd-bbl{grid-column:1/-1;font-size:.88em;min-width:0;overflow-wrap:anywhere}
.fd-wrap .fd-bbt{display:block;height:12px;border:1px solid var(--fd-line);border-radius:6px;background:var(--fd-soft);overflow:hidden;align-self:center}
.fd-wrap .fd-bbt i{display:block;height:100%;background:var(--fd-s1);border-radius:5px}
.fd-wrap .fd-bbt2 i{opacity:.45}
.fd-wrap .fd-bbv{font-size:.88em;white-space:nowrap;text-align:right}
.fd-wrap .fd-bbv2{color:var(--fd-mu);font-weight:400;white-space:normal}
.fd-wrap .fd-sel-text .fd-list{margin:4px 0}
.fd-wrap .fd-warn{margin:8px 0}
.fd-wrap .fd-s4{font-weight:700;font-size:.8em;margin-left:4px}
.fd-wrap .fd-sub{margin:14px 0 6px;font-size:1em;color:var(--fd-ink)}
.fd-wrap .fd-steps{margin:6px 0;padding-left:1.4em}
.fd-wrap .fd-steps li{margin:6px 0;line-height:1.45}
.fd-wrap .fd-ddl{list-style:none;margin:6px 0;padding:0}
.fd-wrap .fd-opts{margin:10px 0;padding:6px 10px;border:1px solid var(--fd-line);border-radius:10px;background:var(--fd-soft)}
.fd-wrap .fd-opts>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600;color:var(--fd)}
.fd-wrap .fd-opts>summary:focus-visible,.fd-wrap .fd-data>summary:focus-visible{outline:3px solid var(--fd2);outline-offset:2px}
.fd-wrap .fd-lopt{margin:8px 0}
.fd-wrap .fd-notice{padding:6px 10px;border:1px dashed var(--fd-line);border-radius:8px}
.fd-wrap .fd-labels{margin-top:10px}
.fd-wrap .fd-lbl{margin:3px 0;font-size:.82em;color:var(--fd-mu);line-height:1.4}
.fd-wrap .fd-lbl b{margin-right:4px;color:var(--fd-ink)}
.fd-wrap .fd-cap{caption-side:top;text-align:left;padding:6px 10px;font-weight:700;color:var(--fd-ink)}
.fd-wrap .fd-wb .fd-tablewrap:focus-visible,.fd-wrap .fd-chartwrap:focus-visible{outline:3px solid var(--fd2);outline-offset:2px}
/* ---- SVG charts C6-C10 ---- */
.fd-wrap .fd-chartblk{margin:12px 0}
.fd-wrap .fd-chartwrap{overflow-x:auto;overflow-y:hidden;max-width:100%;-webkit-overflow-scrolling:touch;margin:8px 0;border-radius:10px}
.fd-wrap .fd-csvg{display:block;width:100%;min-width:520px;height:auto}
.fd-wrap .fd-csvg text{font-size:11px;fill:var(--fd-text)}
.fd-wrap .fd-csvg .fd-c-h{font-size:12.5px;font-weight:700;fill:var(--fd-ink)}
.fd-wrap .fd-csvg .fd-c-v{font-weight:700;fill:var(--fd-ink)}
.fd-wrap .fd-csvg .fd-c-t{fill:var(--fd-mu)}
.fd-wrap .fd-csvg .fd-c-ax{font-weight:700;fill:var(--fd-ink)}
.fd-wrap .fd-csvg .fd-c-pint{fill:var(--fd-on);font-weight:700}
.fd-wrap .fd-csvg .fd-c-grid{stroke:var(--fd-line);stroke-width:1;fill:none}
.fd-wrap .fd-csvg .fd-c-axis{stroke:var(--fd-mu);stroke-width:1.5;fill:none}
.fd-wrap .fd-csvg .fd-c-ref{stroke:var(--fd-ok);stroke-width:2;stroke-dasharray:6 4;fill:none}
.fd-wrap .fd-csvg .fd-c-ref1{stroke:var(--fd-warn);stroke-width:2;fill:none}
.fd-wrap .fd-csvg .fd-c-zone{fill:var(--fd-warn);fill-opacity:.1}
.fd-wrap .fd-csvg .fd-c-fan{stroke:var(--fd-s5);stroke-width:2;fill:none}
.fd-wrap .fd-csvg .fd-c-dot{stroke:var(--fd-bg);stroke-width:2;fill:var(--fd-s5)}
.fd-wrap .fd-csvg .fd-c-dot.fd-c-ok{fill:var(--fd-s2)}
.fd-wrap .fd-csvg .fd-c-dot.fd-c-warn{fill:var(--fd-s3)}
.fd-wrap .fd-csvg .fd-c-dot.fd-c-bad{fill:var(--fd-warn)}
.fd-wrap .fd-csvg .fd-c-s1{fill:var(--fd-s1)}
.fd-wrap .fd-csvg .fd-c-s2{fill:var(--fd-s2)}
.fd-wrap .fd-csvg .fd-c-s3{fill:var(--fd-s3)}
.fd-wrap .fd-csvg .fd-c-s4{fill:var(--fd-s4)}
.fd-wrap .fd-csvg .fd-c-s5{fill:var(--fd-s5)}
.fd-wrap .fd-csvg .fd-c-lite{fill-opacity:.4;stroke:var(--fd-mu);stroke-width:1;stroke-dasharray:3 2}
.fd-wrap .fd-csvg .fd-c-room{fill-opacity:.16;stroke-width:1.5}
.fd-wrap .fd-csvg .fd-c-room.fd-c-s1{stroke:var(--fd-s1)}
.fd-wrap .fd-csvg .fd-c-room.fd-c-s2{stroke:var(--fd-s2)}
.fd-wrap .fd-csvg .fd-c-room.fd-c-s3{stroke:var(--fd-s3)}
.fd-wrap .fd-csvg .fd-c-room.fd-c-s4{stroke:var(--fd-s4)}
.fd-wrap .fd-csvg .fd-c-track{fill:var(--fd-soft);stroke:var(--fd-line)}
.fd-wrap .fd-csvg .fd-c-band{fill:var(--fd-s3);fill-opacity:.35;stroke:none}
.fd-wrap .fd-csvg .fd-c-line{stroke:var(--fd-s1);stroke-width:2.5;fill:none}
.fd-wrap .fd-csvg .fd-c-land{fill:var(--fd-soft);stroke:var(--fd-s2);stroke-width:2;stroke-dasharray:8 5}
.fd-wrap .fd-csvg .fd-c-loop{fill:none;stroke:var(--fd-s4);stroke-width:2;stroke-dasharray:5 4}
.fd-wrap .fd-csvg .fd-c-pin{fill:var(--fd-s1)}
.fd-wrap .fd-data{margin:8px 0}
.fd-wrap .fd-data>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600;color:var(--fd)}
.fd-wrap .fd-sortbtn{background:transparent;border:0;color:inherit;font:inherit;font-weight:700;min-height:44px;padding:0 4px;cursor:pointer;text-align:left}
.fd-wrap .fd-sortbtn:focus-visible{outline:3px solid var(--fd2);outline-offset:2px}
.fd-wrap .fd-concept{margin:6px 0;padding:8px 12px;border:1px dashed var(--fd-amb-bd);border-radius:10px;background:var(--fd-amb-bg);color:var(--fd-amb-tx);font-size:.9em}
/* ---- post-level effects: progress bar colours, parallax origin, wide-screen margin decoration ---- */
.fd-wrap .fd-progress{background:linear-gradient(90deg,var(--fd-s1),var(--fd-s3))}
.fd-wrap .fd-par{transform-origin:0 0}
.fd-wrap .fd-deco{display:none}
@media (min-width:1380px){
  .fd-wrap .fd-deco{display:block;position:fixed;left:0;right:0;top:0;height:100%;overflow:hidden;pointer-events:none;z-index:0}
  .fd-wrap .fd-deco-l,.fd-wrap .fd-deco-r{position:absolute;top:60px;width:120px;opacity:.5}
  .fd-wrap .fd-deco-l{left:50%;margin-left:-640px}
  .fd-wrap .fd-deco-r{left:50%;margin-left:520px}
}
.fd-wrap .fd-deco svg{display:block}
.fd-wrap .fd-deco .fd-dc-v{fill:none;stroke:var(--fd-s2);stroke-width:2;stroke-linecap:round}
.fd-wrap .fd-deco .fd-dc-a{fill:var(--fd-s1)}
.fd-wrap .fd-deco .fd-dc-b{fill:var(--fd-s2)}
.fd-wrap .fd-deco .fd-dc-c{fill:var(--fd-s3)}
@media print{.fd-wrap .fd-deco{display:none}}
.fd-wrap .fd-fchips .fd-chip{white-space:normal;overflow-wrap:anywhere;max-width:100%}
