:root{--paper:#f4ecdd;--card:#fbf7ee;--green:#1f4a3a;--green-2:#173a2d;--gold:#c9a44c;--clay:#a94f34;--text:#1c1a16;--muted:#5f5a50;--rule:#e2d8c3;
  --display:'Gloock',Georgia,serif;--serif:'Instrument Serif',Georgia,serif;--sans:'Hanken Grotesk',system-ui,sans-serif;--mono:'IBM Plex Mono',ui-monospace,monospace}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html{background:var(--paper)}
body{background:var(--paper);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.5}
a{color:var(--green)}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.top{display:flex;align-items:center;gap:clamp(12px,3vw,28px);padding:12px clamp(16px,4vw,40px);background:var(--green);color:var(--paper);border-bottom:3px solid var(--gold)}
.brand{font-family:var(--display);font-size:22px;color:inherit;text-decoration:none;white-space:nowrap}
.brand em{font-family:var(--serif);font-size:18px;opacity:.75}
.tabs{display:flex;gap:2px;margin-right:auto}
.tabs button{background:transparent;border:0;color:var(--paper);opacity:.72;padding:8px 14px;border-radius:999px;font-size:15px}
.tabs button[aria-selected=true]{background:rgba(244,236,221,.14);opacity:1}
#logout{margin-left:auto}
.shell{max-width:1120px;margin:0 auto;padding:clamp(20px,4vw,36px) clamp(16px,4vw,40px) 70px}
h1{font-family:var(--display);font-weight:400;font-size:clamp(30px,5vw,44px);line-height:1.05}
.card{background:var(--card);border:1px solid var(--rule);border-radius:12px}
.login{max-width:420px;margin:8vh auto 0;padding:28px}
.login h1{margin-bottom:20px}
label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
input,select,textarea{font:inherit;font-size:16px;border:1.5px solid #cdbfa4;border-radius:8px;background:#fff;color:var(--text);padding:9px 11px}
#password{display:block;width:100%;margin-bottom:14px}
button{font:inherit;cursor:pointer;border-radius:999px;padding:9px 16px}
.primary{background:var(--green);color:var(--paper);border:0;font-weight:500}
.primary:hover{background:var(--green-2)}
.ghost{background:transparent;color:var(--text);border:1px solid #b9ad96}
.ghost.lt{color:var(--paper);border-color:rgba(244,236,221,.5)}
button[disabled]{opacity:.6;cursor:default}
.status{min-height:1.5em;font-size:15px;color:var(--clay);margin-top:6px}
.bar{display:flex;flex-wrap:wrap;gap:12px 16px;justify-content:space-between;align-items:center;margin-bottom:14px}
.tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
#search{min-width:min(280px,100%)}
.stages,.ranges{display:flex;flex-wrap:wrap;gap:6px}
.stages button,.ranges button{background:transparent;border:1px solid #b9ad96;color:var(--text);padding:7px 14px;font-size:15px}
.stages button.on,.ranges button.on{background:var(--green);border-color:var(--green);color:var(--paper)}
.stages b{font-family:var(--mono);font-weight:500;margin-left:4px}

/* leads */
.list{display:grid;gap:8px}
.lead-head{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) auto auto auto;gap:6px 16px;align-items:center;padding:12px 16px}
.lead-toggle{background:none;border:0;padding:0;text-align:left;border-radius:6px;min-width:0}
.lead-name{display:block;font-family:var(--display);font-size:21px;line-height:1.15;overflow-wrap:anywhere}
.lead-sub{display:block;color:var(--muted);font-size:14px;overflow-wrap:anywhere}
.lead-source{font-family:var(--mono);font-size:12px;color:var(--muted);overflow-wrap:anywhere}
.lead-head time{font-family:var(--mono);font-size:12px;color:var(--muted);white-space:nowrap}
.lead-contact{display:flex;gap:12px;align-items:center;white-space:nowrap}
.call{font-weight:600}
.tag{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;background:var(--clay);color:#fbf3e6;padding:2px 8px;border-radius:999px;white-space:nowrap;vertical-align:2px}
.tag.due{background:var(--gold);color:#23201a}
.detail{border-top:1px solid var(--rule);padding:16px}
.controls{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;margin-bottom:16px}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px 18px}
dt{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
dd{overflow-wrap:anywhere}
.msg{margin-top:14px;padding-left:12px;border-left:3px solid var(--gold);white-space:pre-wrap;overflow-wrap:anywhere}
.note-form{margin-top:18px;display:grid;gap:6px;justify-items:start}
.note-form textarea{width:100%;resize:vertical}
.timeline{list-style:none;margin-top:16px;border-left:2px solid var(--rule);padding-left:14px;display:grid;gap:10px}
.timeline time{display:block;font-family:var(--mono);font-size:11px;color:var(--muted)}
.timeline span{white-space:pre-wrap;overflow-wrap:anywhere}
.timeline .is-stage span{color:var(--muted);font-size:14px}
.empty,.none{color:var(--muted)}
.empty{padding:40px 0;text-align:center}

/* analytics */
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
.tile{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:14px 16px;min-width:0}
.tile-l{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.tile b{display:block;font-family:var(--display);font-weight:400;font-size:34px;line-height:1.15}
.delta{font-size:12px;color:var(--muted)}
.panel{padding:16px 18px;min-width:0}
.panel.wide{margin-bottom:12px}
.panel h2{font-family:var(--display);font-weight:400;font-size:20px;margin-bottom:10px}
.panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.chart{position:relative;touch-action:pan-y}
.chart svg{display:block;width:100%;height:auto}
.chart text{font:12px var(--mono);fill:var(--muted)}
.chart .g{stroke:#e8dfcc;stroke-width:1}
.chart .l{fill:none;stroke:var(--green);stroke-width:2;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.chart .a{fill:rgba(31,74,58,.08)}
.chart .pt{fill:var(--green)}
.cross{position:absolute;top:0;bottom:24px;width:1px;background:var(--muted);pointer-events:none}
.tip{position:absolute;top:0;background:var(--text);color:var(--paper);font-size:13px;line-height:1.35;padding:6px 10px;border-radius:8px;pointer-events:none;white-space:nowrap}
.bars{list-style:none;display:grid;gap:9px}
.bars li{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) auto;gap:10px;align-items:center;font-size:14px}
.b-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-track{display:block;height:8px;background:#efe7d6;border-radius:4px;overflow:hidden}
.b-track i{display:block;height:100%;background:var(--green);border-radius:0 4px 4px 0}
.b-val{font-family:var(--mono);font-size:13px;white-space:nowrap}
.b-val small{color:var(--muted);font-size:11px;margin-left:2px}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:400;text-align:right;padding:4px 0 6px 10px}
.tbl th:first-child,.tbl td:first-child{text-align:left;padding-left:0}
.tbl td{text-align:right;padding:6px 0 6px 10px;border-top:1px solid var(--rule);font-variant-numeric:tabular-nums}
.fine{margin-top:16px;font-size:13px;color:var(--muted)}

/* login */
.login input{display:block;width:100%;margin-bottom:14px}
.hint{margin-bottom:14px;color:var(--muted)}
.login .ghost{margin-left:6px}

/* today, clients, money, documents */
.stack{display:grid;gap:12px}
.tile b small{font-family:var(--sans);font-size:15px;color:var(--muted)}
.cap{display:block;height:8px;background:#efe7d6;border-radius:4px;overflow:hidden;margin:6px 0 4px}
.cap i{display:block;height:100%;width:0;background:var(--green);border-radius:0 4px 4px 0}
.panel h2 small{font-family:var(--mono);font-size:13px;color:var(--muted)}
.today-list,.reqs,.files,.client-list{list-style:none}
.today-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px 14px;align-items:center;padding:10px 0;border-top:1px solid var(--rule)}
.today-row:first-child{border-top:0}
.linkish{background:none;border:0;padding:0;color:var(--green);text-decoration:underline;text-align:left;border-radius:4px}
.small{padding:6px 12px;font-size:14px;white-space:nowrap}
.miss{color:var(--clay);font-size:13px}
.sum{color:var(--muted);font-family:var(--mono);font-size:13px}
.filters-row{margin-bottom:12px}
.tbl-wrap{overflow-x:auto}
.tbl.clients{min-width:760px}
.tbl.clients th,.tbl.clients td{text-align:left;padding:9px 12px}
.tbl.clients th button{background:none;border:0;padding:0;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit}
.tbl .none{text-align:left;padding:14px 0}
.tbl.clients .none{padding:18px 12px}
.inline-form{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:flex-end;margin-bottom:14px}
.inline-form input,.inline-form select{display:block}
.inline-form .grow{flex:1 1 220px}
.inline-form .grow input{width:100%}
.controls input,.controls select{display:block;max-width:190px}
.wide-field input{max-width:none;width:min(340px,100%)}
.speed{margin-bottom:14px;font-size:14px;color:var(--muted)}
.speed.late{color:var(--clay);font-weight:500}
.panel.wide-2{grid-column:1/-1}
.fine a{color:var(--green)}
.docs{display:grid;grid-template-columns:260px minmax(0,1fr);gap:12px;align-items:start}
.invite{display:grid;gap:6px;margin-bottom:14px;justify-items:start}
.invite input{width:100%}
.client-list li{border-top:1px solid var(--rule)}
.client-list button{display:flex;width:100%;justify-content:space-between;align-items:center;background:none;border:0;border-radius:6px;padding:9px 8px;text-align:left}
.client-list button.on{background:rgba(31,74,58,.1)}
.client-list b{font-family:var(--mono);font-weight:500;font-size:12px;background:var(--gold);color:#23201a;border-radius:999px;padding:1px 8px}
.big2{font-family:var(--display);font-weight:400;font-size:26px;margin:0!important}
.docs-main h3{font-family:var(--mono);font-size:12px;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:20px 0 6px}
.req{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:12px 0;border-top:1px solid var(--rule)}
.req:first-child{border-top:0}
.req>div{min-width:0;flex:1}
.req p{margin-top:4px;overflow-wrap:anywhere}
.tag.st{background:#e6dcc6;color:var(--text)}
.req.answered .tag.st{background:var(--gold);color:#23201a}
.req.done{opacity:.7}
.files li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px 12px;align-items:center;padding:9px 0;border-top:1px solid var(--rule);overflow-wrap:anywhere}
.files li:first-child{border-top:0}
.files .bad{color:var(--clay)}
.log{margin-top:12px}
.log summary{cursor:pointer;font-family:var(--display);font-size:18px}
.log ul{list-style:none;margin-top:10px;font-size:14px}
.log li{padding:4px 0;overflow-wrap:anywhere}
.log time{font-family:var(--mono);font-size:12px;color:var(--muted);margin-right:6px}

.tiers{flex:1 1 100%;display:grid;gap:8px}
.tier-h{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.tier{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end}
.tier input{width:110px}
.tier .lead-source{padding-bottom:10px}

/* a client's page */
.crumb{margin-bottom:8px}
.client-head{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;margin-bottom:6px}
.client-head h1{margin-right:auto}
.client-contact{color:var(--muted);font-size:15px;margin-bottom:14px;overflow-wrap:anywhere}
.portal-box{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:12px 16px;margin-bottom:12px}
.portal-box form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.sub-tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid #d9ccb3;margin-bottom:14px}
.sub-tabs button{background:none;border:0;border-bottom:3px solid transparent;border-radius:0;padding:9px 14px;font-size:15px;color:var(--muted)}
.sub-tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--green);font-weight:500}
.sub-tabs b{font-family:var(--mono);font-size:11px;font-weight:500;background:var(--gold);color:#23201a;border-radius:999px;padding:1px 7px;margin-left:4px}
.cat-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.cat-chips button{background:transparent;border:1px solid #b9ad96;color:var(--text);padding:6px 12px;font-size:14px}
.cat-chips button.on{background:var(--green);border-color:var(--green);color:var(--paper)}
.cat-chips b{font-family:var(--mono);font-weight:500;margin-left:3px}
.doc-row{display:grid;grid-template-columns:minmax(0,1fr) 225px 88px auto;gap:6px 10px;align-items:center;padding:9px 0;border-top:1px solid var(--rule)}
.doc-row:first-child{border-top:0}
.doc-row select{font-size:14px;padding:6px 8px;width:100%}
.doc-name small{display:block;font-family:var(--mono);font-size:11px;color:var(--muted)}
.reports{list-style:none}
.reports>li{padding:12px 0;border-top:1px solid var(--rule)}
.reports>li:first-child{border-top:0}
.rep-head{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
.rep-head b{font-family:var(--display);font-weight:400;font-size:19px}
.rep-head .lead-source{margin-right:auto}
.figs{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px 16px;margin-top:8px}
.figs dd{font-variant-numeric:tabular-nums}
.report-form .fig-grid{flex:1 1 100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px 12px}
.report-form .fig-grid input,.report-form textarea{width:100%}
.report-form .full{flex:1 1 100%}
.check{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-family:var(--sans);font-size:14px;color:var(--text);padding-bottom:10px}
.add-client{margin-bottom:12px}
.add-client summary{cursor:pointer;font-family:var(--display);font-size:18px}
.add-client form{margin-top:12px}

#clients .panel+.panel,.portal .panel+.panel{margin-top:12px}
.inline-form input,.inline-form select,.inline-form textarea{font-family:var(--sans);font-size:15px}
.inline-form label{min-width:0;max-width:100%}
input[type=file]{max-width:100%;min-width:0}

/* portal */
.portal{max-width:760px}
.portal .panel{margin-bottom:12px}
.drop{display:grid;justify-items:center;gap:4px;padding:30px 16px;border:2px dashed #b9ad96;border-radius:12px;text-align:center;cursor:pointer;background:#fffdf8;text-transform:none;letter-spacing:0;font-family:var(--sans);font-size:16px;color:var(--text)}
.drop.over,.drop:hover{border-color:var(--green)}
.drop input{position:absolute;width:1px;height:1px;opacity:0}
.drop:focus-within{outline:2px solid var(--gold);outline-offset:2px}
.drop span{font-size:14px;color:var(--muted)}
#uploads li{grid-template-columns:minmax(0,1fr) 90px auto}
#uploads .cap{margin:0}

@media (max-width:860px){
  .doc-row{grid-template-columns:minmax(0,1fr) auto}
  .doc-row select{grid-column:1/-1}
  .docs{grid-template-columns:minmax(0,1fr)}
  .tabs{order:3;flex:1 1 100%;overflow-x:auto;margin:0}
  .top{flex-wrap:wrap}
  .tabs button{white-space:nowrap}
  .lead-head{grid-template-columns:minmax(0,1fr) auto}
  .lead-source{grid-column:1}
  .lead-head time{grid-column:2;grid-row:1;justify-self:end}
  .lead-contact{grid-column:1/-1}
  .tiles{grid-template-columns:repeat(2,1fr)}
  .panels{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:460px){
  .brand em{display:none}
  .tabs button{padding:7px 10px}
  .tile b{font-size:28px}
}
