:root{
  --bg:#eef2f0; --white:#fff; --card-border:#dbe4df;
  --green-dark:#235943; --green:#2f8f68; --green-light:#7cc6a6;
  --ink:#1d2b25; --muted:#6c7a73; --sidebar:#f4f7f5; --active:#e3efe9;
  --red:#c0392b; --orange:#e08e3c; --grey:#9aa4a0; --blue:#2e6fb0;
  --hl:#eef5f1;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  background:var(--bg); color:var(--ink);
  font-family:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif; font-size:14px;
}
button{font-family:inherit;cursor:pointer}
a{color:var(--blue)}
.hidden{display:none !important}

/* ---- header ---- */
header.topbar{
  background:var(--green-dark); color:#fff; height:56px;
  display:flex; align-items:center; padding:0 20px; gap:16px;
}
header.topbar .title{font-weight:600;font-size:16px;letter-spacing:.5px}
header.topbar .prop-name{color:#cdeede;margin-left:auto;font-size:14px}
header.topbar .badge{
  font-size:11px;background:#1c4636;color:#bfe3d0;padding:3px 8px;border-radius:10px;
}

/* ---- layout ---- */
.workspace{display:flex;height:calc(100vh - 56px)}
.sidebar{
  width:190px;background:var(--sidebar);border-right:1px solid var(--card-border);
  display:flex;flex-direction:column;padding:8px 0;flex:none;
}
.sidebar .nav{padding:11px 18px;color:var(--ink);cursor:pointer;font-size:15px;border-left:3px solid transparent}
.sidebar .nav:hover{background:#eaf1ed}
.sidebar .nav.active{background:var(--active);color:var(--green-dark);font-weight:600;border-left-color:var(--green)}
.sidebar .spacer{flex:1}
.sidebar .side-btn{margin:4px 12px}
.content{flex:1;overflow:auto;padding:16px}
.status{font-size:12px;color:var(--muted);padding:8px 16px}

/* ---- cards ---- */
.card{background:var(--white);border:1px solid var(--card-border);border-radius:6px;margin-bottom:14px}
.card > .card-head{display:flex;align-items:center;border-left:4px solid var(--green);border-radius:6px 6px 0 0}
.card > .card-head h3{margin:0;padding:9px 12px;color:var(--green-dark);font-size:15px;font-weight:600}
.card > .card-head .head-extra{margin-left:auto;padding-right:10px;color:var(--muted);font-size:12px}
.card .card-body{padding:10px 14px 14px}

/* two-column workspace: inputs left, results right */
.split{display:grid;grid-template-columns:360px 1fr;gap:14px;align-items:start}
.split.wide-left{grid-template-columns:400px 1fr}

/* ---- forms ---- */
.field{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:6px;padding:3px 0}
.field label{color:var(--ink);font-size:13px}
.field input,.field select{
  width:120px;padding:4px 6px;border:1px solid #cdd8d2;border-radius:4px;font-size:13px;background:#fff;
  justify-self:end;
}
.field input[type=checkbox]{width:auto}
.field .info{
  color:var(--blue);cursor:help;font-size:13px;user-select:none;width:16px;text-align:center;
}
.field.section-note{grid-template-columns:1fr;color:var(--muted);font-size:12px;padding-bottom:4px}

/* ---- tables ---- */
table.grid{border-collapse:collapse;width:100%;font-size:13px}
table.grid th,table.grid td{padding:5px 8px;border-bottom:1px solid #eef2f0;text-align:right}
table.grid th:first-child,table.grid td:first-child{text-align:left}
table.grid thead th{color:var(--muted);font-weight:600;border-bottom:1px solid var(--card-border)}
table.grid tr.bo td{background:var(--hl);font-weight:600}
table.grid tr.bind td{color:var(--muted);font-style:italic}
table.grid tr.total td{font-weight:600}
table.grid tr.subtotal td{font-style:italic}
table.grid tr.noncash td,table.grid tr.info td{color:var(--grey)}
table.grid tr.head td{background:#e8efeb;font-weight:600}
.pos{color:var(--green-dark)} .neg{color:var(--red)}

/* ---- buttons ---- */
.btn{border:1px solid var(--green);background:#fff;color:var(--green-dark);padding:7px 14px;border-radius:5px;font-size:14px}
.btn:hover{background:#f0f7f3}
.btn.primary{background:var(--green);color:#fff;border-color:var(--green)}
.btn.primary:hover{background:#2b8460}
.btn.ghost{border-color:#cdd8d2;color:var(--ink)}
.btn.danger{border-color:var(--red);color:var(--red)}
.btn.small{padding:4px 9px;font-size:12px}
.btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* ---- home / library ---- */
.home-wrap{max-width:820px;margin:36px auto}
.lib-list{width:100%;border-collapse:collapse;font-size:14px}
.lib-list th{ text-align:left;color:var(--muted);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--card-border)}
.lib-list td{padding:8px;border-bottom:1px solid #eef2f0;cursor:pointer}
.lib-list tr.selected td{background:var(--active)}
.lib-list tr:hover td{background:#f3f8f5}
.muted{color:var(--muted)}
.small{font-size:12px}

/* ---- toggles / segmented ---- */
.seg{display:inline-flex;border:1px solid #cdd8d2;border-radius:5px;overflow:hidden}
.seg button{border:0;background:#fff;padding:5px 12px;font-size:13px;color:var(--ink)}
.seg button.on{background:var(--green);color:#fff}

/* ---- charts ---- */
.chart-wrap{position:relative;height:280px}
.chart-wrap.tall{height:340px}

/* ---- warning banner ---- */
.warn{background:#fdecea;border:1px solid #f5c6c0;color:var(--red);padding:8px 12px;border-radius:5px;font-size:13px;font-weight:600;margin-bottom:10px}
.note{background:#eef5f1;border:1px solid var(--card-border);padding:8px 12px;border-radius:5px;font-size:13px;margin-bottom:10px}

/* ---- modal ---- */
.modal-back{position:fixed;inset:0;background:rgba(20,30,25,.45);display:flex;align-items:center;justify-content:center;z-index:50}
.modal{background:#fff;border-radius:8px;max-width:640px;width:90%;max-height:88vh;overflow:auto;padding:20px}
.modal h2{margin:0 0 8px;color:var(--green-dark)}

/* ---- assumptions ---- */
.assump h3{color:var(--green-dark);margin:14px 0 4px}
.assump ul{margin:0 0 8px 18px;padding:0}
.assump li{margin:3px 0;color:#2a3a33}

/* cashflow rows (with std tickbox + source links) */
.cf-field{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:4px 0}
.cf-field > input[type=checkbox]{flex:none;margin:0;width:auto}
.cf-field .cf-nobox{width:13px;flex:none}
.cf-field .cf-label{flex:1 1 130px;min-width:110px;font-size:13px}
.cf-field input:not([type=checkbox]),.cf-field select{width:120px;padding:4px 6px;border:1px solid #cdd8d2;border-radius:4px;font-size:13px;background:#fff}
.cf-field input.auto-filled{background:#f0f3f1;color:var(--muted)}
.cf-link{font-size:12px;white-space:nowrap;text-decoration:none;color:var(--blue)}
.cf-link:hover{text-decoration:underline}
.std-all{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:4px;cursor:pointer}
.cf-controls{display:flex;flex-wrap:wrap;gap:8px}
.council-row{display:flex;justify-content:space-between;gap:10px;padding:10px 8px;border-bottom:1px solid #eef2f0;text-decoration:none;color:var(--ink)}
.council-row:hover{background:#f3f8f5}

/* watchlist (spotted properties) */
.wl-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wl-in{flex:1 1 150px;min-width:120px;padding:7px 8px;border:1px solid #cdd8d2;border-radius:4px;font-size:14px}
.wl-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid #eef2f0}
.wl-name{flex:1;min-width:0}
.wl-name a{font-weight:600;text-decoration:none}
.wl-name a:hover{text-decoration:underline}

/* horizontal-scroll wrapper so wide tables never break the layout */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* tap-popover for the ⓘ help (mobile, where hover titles don't show) */
.info-pop{
  position:absolute;z-index:80;max-width:280px;background:#fffbe6;border:1px solid var(--card-border);
  border-radius:6px;padding:8px 10px;font-size:13px;color:var(--ink);box-shadow:0 4px 14px rgba(0,0,0,.15);line-height:1.35;
}

/* ---- Due Diligence ---- */
.dd-nav .dd-inp,.dd-inp{width:100%;padding:6px;border:1px solid #cdd8d2;border-radius:4px;font-size:13px;background:#fff}
.dd-list{margin-top:8px;border-top:1px solid var(--card-border)}
.dd-item,.dd-cat,.dd-step{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 6px;border-bottom:1px solid #eef2f0;cursor:pointer;font-size:13px}
.dd-item:hover,.dd-cat:hover,.dd-step:hover{background:#f3f8f5}
.dd-item.active,.dd-cat.active,.dd-step.active{background:var(--active)}
.dd-cat{font-weight:600;color:var(--green-dark);background:#f4f7f5;margin-top:2px}
.dd-step{padding-left:10px}
.dd-step .dd-g{flex:none;width:18px;text-align:center}
.dd-step-t{flex:1}
.dd-srow{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.dd-l{display:block;font-weight:600;font-size:12px;margin-bottom:2px}
.dd-text{width:100%;padding:6px 8px;border:1px solid #cdd8d2;border-radius:4px;font:inherit;font-size:13px;resize:vertical}
.dd-check{display:flex;gap:8px;align-items:flex-start;padding:4px 0;font-size:13px;line-height:1.35;cursor:pointer}
.dd-check input{margin-top:3px;flex:none}
.dd-bullet{padding:2px 0;font-size:13px;line-height:1.35;color:#2a3a33}

/* ==========================================================================
   RESPONSIVE  —  phone (Galaxy A55 ~393px) & tablet (Tab S7)
   ========================================================================== */

/* tablet portrait & phone: single-column panes */
@media (max-width:900px){
  .split,.split.wide-left,.dd-srow{grid-template-columns:1fr}
  .dd-srow{gap:6px}
}

/* phone: turn the left sidebar into a scrollable top tab bar, bigger touch UI */
@media (max-width:640px){
  header.topbar{height:auto;min-height:50px;padding:8px 12px;flex-wrap:wrap;gap:6px}
  header.topbar .title{font-size:13px;letter-spacing:.2px}
  header.topbar .prop-name{font-size:13px;width:100%;margin:0;order:3}
  .workspace{flex-direction:column;height:auto}
  .content{height:auto;padding:12px}
  .sidebar{
    width:100%;flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--card-border);padding:0;
  }
  .sidebar .nav{border-left:0;border-bottom:3px solid transparent;white-space:nowrap;padding:11px 14px}
  .sidebar .nav.active{border-left:0;border-bottom-color:var(--green)}
  .sidebar .spacer{display:none}
  .sidebar .side-btn{margin:6px 8px;flex:none}

  /* touch-friendly inputs (min 40px tall, 16px font to stop iOS/Android zoom) */
  .field{grid-template-columns:1fr auto auto;gap:8px}
  .field input,.field select{width:120px;font-size:16px;padding:8px}
  .field label{font-size:14px}
  .cf-field input:not([type=checkbox]),.cf-field select{font-size:16px;padding:8px}
  .cf-field .cf-label{font-size:14px}
  .dd-inp,.dd-text,.dd-check{font-size:16px}
  .btn{padding:9px 14px}
  .btn.small{padding:7px 11px;font-size:13px}
  table.grid th,table.grid td{padding:7px 8px}

  .home-wrap{margin:14px auto}
  .lib-list th,.lib-list td{padding:10px 8px}
  .modal{width:94%;padding:16px}
  .chart-wrap{height:240px}
}

/* very narrow: stack each field's label above its input */
@media (max-width:430px){
  .field{grid-template-columns:1fr auto;row-gap:2px}
  .field label{grid-column:1 / -1}
  .field input,.field select{width:100%;justify-self:stretch;grid-column:1}
  .field .info{grid-column:2;grid-row:2;justify-self:end}
}
