:root{
  --sage:#c2bf8b; --sage-d:#a8a36a;
  --slate:#333c45; --steel:#428bc7; --lightblue:#bbd6e2;
  --cream:#faf9f4; --line:#e7e4d8; --muted:#7c7c74;
  --overdue:#c0492f; --overdue-bg:#fbeae6;
  --due:#9a7d12; --due-bg:#f8f1d6;
  --ok:#3f7d57; --ok-bg:#e9f3ec;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:Raleway,Arial,sans-serif;color:var(--slate);background:var(--cream);
  -webkit-font-smoothing:antialiased;line-height:1.45}

/* ---- top bar ---- */
.portal-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:.7rem 1.2rem;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.portal-brand{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--slate)}
.portal-brand img{height:30px;width:auto}
.portal-brand span{font-family:'Cormorant Garamond',serif;font-weight:600;font-size:1.35rem;letter-spacing:.02em}
.portal-nav a{margin-left:1.1rem;text-decoration:none;color:var(--steel);font-weight:600;font-size:.92rem}
.portal-nav a.active{color:var(--slate);border-bottom:2px solid var(--sage);padding-bottom:2px}
.portal-nav a.muted{color:var(--muted);font-weight:500}

/* ---- board ---- */
.portal-main{max-width:880px;margin:0 auto;padding:1.4rem 1.1rem 4rem}
.board-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.2rem}
.board-head h1{font-family:'Cormorant Garamond',serif;font-weight:700;font-size:2.1rem;margin:0 0 .15rem}
.sub{margin:0;color:var(--muted);font-size:.95rem}
.t-overdue{color:var(--overdue)} .t-due{color:var(--due)}

.whoami-box{display:flex;align-items:center;gap:.5rem;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:.5rem .75rem}
.whoami-box label{font-weight:600;font-size:.9rem;color:var(--muted)}
.whoami-box select{font:inherit;font-weight:600;color:var(--slate);border:none;background:transparent;
  padding:.25rem;min-width:160px;cursor:pointer}
.whoami-box select:focus{outline:none}

/* ---- area sections ---- */
.area{margin-bottom:1.6rem}
.area-title{font-family:'Cormorant Garamond',serif;font-weight:600;font-size:1.3rem;
  text-transform:capitalize;margin:0 0 .55rem;padding-bottom:.3rem;border-bottom:1px solid var(--line);color:var(--slate)}
.chore-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}

/* ---- chore row ---- */
.chore{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#fff;
  border:1px solid var(--line);border-left:5px solid var(--line);border-radius:12px;padding:.75rem .9rem;
  transition:border-color .15s,box-shadow .15s}
.chore-main{min-width:0}
.chore-head{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}
.chore-name{font-weight:600;font-size:1rem}
.chore-meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-top:.25rem;font-size:.82rem;color:var(--muted)}
.pill{background:var(--cream);border:1px solid var(--line);border-radius:20px;padding:.05rem .55rem;font-weight:600}
.last{font-size:.82rem}
.muted{color:var(--muted)}

.badge{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;
  padding:.12rem .5rem;border-radius:20px;white-space:nowrap}
.badge-overdue{background:var(--overdue-bg);color:var(--overdue)}
.badge-due{background:var(--due-bg);color:var(--due)}
.badge-ok{background:var(--ok-bg);color:var(--ok)}
.badge-asneeded{background:#eee;color:var(--muted)}

.chore.status-overdue{border-left-color:var(--overdue)}
.chore.status-due{border-left-color:var(--sage-d)}
.chore.status-ok{border-left-color:var(--ok)}
.chore.needs-who{border-left-color:var(--steel);box-shadow:0 0 0 2px var(--lightblue)}

/* ---- sign-off button ---- */
.btn-signoff{flex:none;font:inherit;font-weight:700;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em;
  color:var(--slate);background:var(--sage);border:none;border-radius:24px;padding:.6rem 1.1rem;cursor:pointer;
  transition:background .15s,transform .05s}
.btn-signoff:hover{background:var(--sage-d)}
.btn-signoff:active{transform:translateY(1px)}
.btn-signoff[disabled]{opacity:.55;cursor:default}
.chore.status-ok .btn-signoff{background:var(--cream);border:1px solid var(--line)}

.flash{margin-top:.35rem;font-size:.82rem;font-weight:600;color:var(--ok)}
.flash.warn{color:var(--steel)}
.empty{color:var(--muted)}

@media (max-width:560px){
  .chore{flex-wrap:wrap}
  .btn-signoff{width:100%}
  .whoami-box{width:100%}
}

/* --- area kind tags + pick prompt (assignments update) --- */
.kindtag{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  padding:.08rem .45rem;border-radius:20px;vertical-align:middle;margin-left:.4rem;font-family:Raleway,sans-serif}
.kind-role{background:var(--lightblue);color:var(--slate)}
.kind-shared{background:var(--cream);color:var(--muted);border:1px solid var(--line)}
.pick-prompt{background:#fff;border:1px dashed var(--sage-d);border-radius:14px;padding:1.8rem;
  text-align:center;color:var(--slate);font-size:1.05rem}

/* --- staff portal header: nav + staging "view as" control --- */
.portal-right{display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap;justify-content:flex-end}
.act-as{display:flex;align-items:center;gap:.45rem;background:var(--cream);border:1px solid var(--line);border-radius:24px;padding:.3rem .65rem}
.act-as-tag{font-size:.6rem;font-weight:800;letter-spacing:.06em;color:#fff;background:var(--steel);border-radius:20px;padding:.12rem .45rem}
.act-as label{font-size:.82rem;font-weight:600;color:var(--muted)}
.act-as select{font:inherit;font-weight:700;color:var(--slate);border:none;background:transparent;cursor:pointer;padding:.15rem}
.act-as select:focus{outline:none}
@media (max-width:640px){.portal-right{width:100%}}

/* --- time-of-day grouping + completed filter + area footnote --- */
.board-controls{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.board-controls .sub{margin:0}
.filter-toggle{display:flex;align-items:center;gap:.4rem;font-size:.88rem;font-weight:600;color:var(--slate);background:#fff;border:1px solid var(--line);border-radius:24px;padding:.4rem .8rem;cursor:pointer;user-select:none}
.filter-toggle input{accent-color:var(--sage-d);width:1rem;height:1rem;cursor:pointer}
.timegroup{margin-bottom:1.7rem}
.time-title{font-family:"Cormorant Garamond",serif;font-weight:700;font-size:1.5rem;color:var(--slate);margin:0 0 .6rem;padding-bottom:.35rem;border-bottom:2px solid var(--sage)}
.time-open .time-title{border-bottom-color:var(--steel)}
.time-close .time-title{border-bottom-color:var(--slate)}
.area-foot{font-size:.74rem;color:var(--muted);border-left:2px solid var(--line);padding-left:.45rem}

/* --- portal dashboard --- */
.dash{max-width:880px;margin:0 auto}
.dash-head{margin-bottom:1.4rem}
.dash-head h1{font-family:"Cormorant Garamond",serif;font-weight:700;font-size:2.3rem;margin:0 0 .2rem}
.dash-sub{margin:0;color:var(--muted)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:1rem}
.tile{display:flex;flex-direction:column;gap:.35rem;background:#fff;border:1px solid var(--line);border-radius:16px;padding:1.2rem;text-decoration:none;color:var(--slate);transition:transform .08s,box-shadow .15s,border-color .15s;min-height:120px}
.tile-icon{font-size:1.7rem;line-height:1}
.tile-name{font-family:"Cormorant Garamond",serif;font-weight:600;font-size:1.35rem}
.tile-meta{font-size:.82rem;color:var(--muted);margin-top:auto}
.tile-live{border-left:5px solid var(--sage)}
.tile-live:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(51,60,69,.1);border-color:var(--sage)}
.tile-soon{opacity:.6;border-style:dashed;cursor:default}
.tile.owner{border-left:5px solid var(--steel)}

/* --- task weight, never-done marker, info panel --- */
.weight{font-size:.7rem;font-weight:700;color:var(--steel);background:#eaf3fa;border-radius:20px;padding:.05rem .45rem}
.new-badge{font-size:.64rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#fff;background:var(--steel);border-radius:20px;padding:.1rem .5rem}
.chore.is-new{border-left-color:var(--steel)}
.chore-main{cursor:pointer}
.chore-info{display:none;margin-top:.6rem;padding-top:.6rem;border-top:1px dashed var(--line)}
.chore.open .chore-info{display:block}
.ci-desc{margin:0 0 .4rem;color:var(--slate);font-size:.9rem}
.ci-meta{display:flex;flex-wrap:wrap;gap:.4rem .9rem;font-size:.8rem;color:var(--muted)}
.ci-meta b{color:var(--slate)}
/* --- redo form --- */
.btn-redo{flex:none;font:inherit;font-weight:700;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em;color:#fff;background:var(--steel);border:none;border-radius:24px;padding:.6rem 1.1rem;cursor:pointer}
.btn-redo:hover{background:#356fa0}
.redo-row{display:block}
.redo-form{width:100%}
.redo-q{font-weight:600;margin-bottom:.5rem}
.redo-opts{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.6rem}
.redo-opts label{display:flex;align-items:center;gap:.5rem;font-size:.9rem;cursor:pointer}
.redo-note{width:100%;font:inherit;padding:.5rem .6rem;border:1px solid var(--line);border-radius:8px;margin-bottom:.6rem}
.redo-actions{display:flex;gap:.5rem}
.btn-cancel{font:inherit;font-weight:600;color:var(--muted);background:transparent;border:1px solid var(--line);border-radius:24px;padding:.6rem 1rem;cursor:pointer}
/* --- report --- */
.report{max-width:960px;margin:0 auto}
.report-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.report-head h1{font-family:"Cormorant Garamond",serif;font-weight:700;font-size:2.1rem;margin:0}
.month-pick{display:flex;align-items:center;gap:.5rem;background:#fff;border:1px solid var(--line);border-radius:12px;padding:.4rem .7rem}
.month-pick select{font:inherit;font-weight:600;border:none;background:transparent;cursor:pointer}
.report-block{background:#fff;border:1px solid var(--line);border-radius:14px;padding:1.1rem 1.2rem;margin-bottom:1.3rem}
.report-block h2{font-family:"Cormorant Garamond",serif;font-weight:600;font-size:1.4rem;margin:0 0 .2rem}
.small{font-size:.82rem}
table.rpt{width:100%;border-collapse:collapse;margin-top:.6rem;font-size:.9rem}
table.rpt th,table.rpt td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid var(--line)}
table.rpt th{font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
table.rpt td.num,table.rpt th.num{text-align:right}
table.rpt td.good{color:var(--ok);font-weight:600}
table.rpt td.bad{color:var(--overdue);font-weight:600}

/* --- polished dashboard: today summary + grouped tiles --- */
.dash-head{margin-bottom:1rem}
.today{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;background:linear-gradient(180deg,#fff,#fbfaf4);border:1px solid var(--line);border-left:5px solid var(--sage);border-radius:16px;padding:1rem 1.3rem;margin-bottom:1.8rem}
.today.clear{border-left-color:var(--ok)}
.today-main{display:flex;align-items:center;gap:.7rem}
.today-num{font-family:"Cormorant Garamond",serif;font-weight:700;font-size:2.4rem;line-height:1;color:var(--slate)}
.today-num.ok{color:var(--ok)}
.today-lbl{font-size:1rem;color:var(--slate)}
.today-cta{flex:none;font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;color:var(--slate);background:var(--sage);border-radius:24px;padding:.6rem 1.1rem;text-decoration:none}
.today-cta:hover{background:var(--sage-d)}
.tile-group{margin-bottom:1.6rem}
.tg-title{font-family:"Cormorant Garamond",serif;font-weight:600;font-size:1.25rem;color:var(--muted);margin:0 0 .6rem;padding-bottom:.25rem;border-bottom:1px solid var(--line);text-transform:none;letter-spacing:.01em}
.owner-group .tg-title{color:var(--steel)}

/* --- payroll totals --- */
.pay-totals{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1.2rem}
.pt{flex:1;min-width:150px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:.9rem 1.1rem;display:flex;flex-direction:column;gap:.2rem}
.pt-lbl{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.pt-num{font-family:"Cormorant Garamond",serif;font-weight:700;font-size:1.7rem;color:var(--slate)}
.pt.grand{border-left:5px solid var(--sage)}
.pt.grand .pt-num{color:var(--sage-d)}
/* --- documents --- */
.doc-section{margin-bottom:1.4rem}
.doc-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.4rem}
.doc-item{display:flex;align-items:center;gap:.5rem;background:#fff;border:1px solid var(--line);border-radius:10px;padding:.55rem .8rem;font-size:.92rem}
.doc-item a{color:var(--steel);text-decoration:none;font-weight:600}
.doc-item a:hover{text-decoration:underline}
.doc-pending{color:var(--muted)}
.doc-badge{margin-left:auto;font-size:.64rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--slate);background:var(--lightblue);border-radius:20px;padding:.1rem .5rem;white-space:nowrap}

/* --- numeric cells: clean tabular figures (not Raleway/serif) --- */
table.rpt td.num,.pt-num{font-family:Arial,"Helvetica Neue",system-ui,sans-serif;font-variant-numeric:tabular-nums}
table.rpt td.num a{font-family:Arial,"Helvetica Neue",system-ui,sans-serif}

/* --- feature stub page notes --- */
.feature-notes{margin:.4rem 0 0;padding-left:1.2rem;line-height:1.6}
.feature-notes li{margin-bottom:.35rem}

/* --- login page + header user/logout --- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--cream);padding:1.5rem}
.login-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:2rem 2.2rem;width:100%;max-width:360px;text-align:center;box-shadow:0 8px 30px rgba(51,60,69,.08)}
.login-logo{width:230px;max-width:78%;height:auto;margin:0 auto .9rem;display:block}
.login-card h1{font-family:"Cormorant Garamond",serif;font-weight:700;font-size:1.8rem;margin:0 0 1.2rem}
.login-card label{display:block;text-align:left;font-size:.85rem;font-weight:600;color:var(--muted);margin-bottom:.8rem}
.login-card input{width:100%;font:inherit;padding:.6rem .7rem;border:1px solid var(--line);border-radius:9px;margin-top:.25rem}
.login-btn{width:100%;font:inherit;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--slate);background:var(--sage);border:none;border-radius:24px;padding:.7rem;cursor:pointer;margin-top:.4rem}
.login-btn:hover{background:var(--sage-d)}
.login-err{background:var(--overdue-bg);color:var(--overdue);border-radius:8px;padding:.5rem;font-size:.85rem;font-weight:600;margin:0 0 1rem}
.portal-user{font-weight:700;font-size:.9rem;color:var(--slate)}
.portal-link{text-decoration:none;font-size:1rem}
.logout-form{margin:0}
.logout-form button{font:inherit;font-size:.82rem;font-weight:600;color:var(--steel);background:transparent;border:1px solid var(--line);border-radius:20px;padding:.3rem .7rem;cursor:pointer}
.logout-form button:hover{background:var(--cream)}

/* --- API & Scripts: clean click-to-expand rows --- */
.catalog{margin-top:.5rem}
.catalog .col-h{display:grid;gap:.6rem;padding:.3rem .5rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line)}
.catalog .col-h .num{text-align:right}
.crow{border-bottom:1px solid var(--line)}
.crow>summary{list-style:none;cursor:pointer;display:grid;align-items:center;gap:.6rem;padding:.55rem .5rem}
.crow>summary::-webkit-details-marker{display:none}
.crow>summary:hover{background:var(--cream)}
.crow[open]>summary{background:var(--cream)}
.crow>summary .num{text-align:right;font-family:Arial,"Helvetica Neue",system-ui,sans-serif;font-variant-numeric:tabular-nums}
.crow .xs{font-size:.72rem}
.crow .chev{color:var(--muted);text-align:center;transition:transform .15s ease}
.crow[open] .chev{transform:rotate(90deg)}
.crow .cdetail{padding:.1rem .6rem .9rem;color:var(--slate);font-size:.9rem;line-height:1.55;max-width:74ch}
.crow .cdetail .cmeta{margin-top:.5rem;color:var(--muted);font-size:.82rem;font-weight:600}
.scripts .col-h,.scripts .crow>summary{grid-template-columns:2fr .9fr .55fr .55fr 1.1fr .9fr 1.1rem}
.hooks .col-h,.hooks .crow>summary{grid-template-columns:1.6fr .9fr .7fr 1.1fr 1.1rem}
@media(max-width:680px){
  .scripts .col-h,.hooks .col-h{display:none}
  .scripts .crow>summary{grid-template-columns:1.4fr .6fr .6fr 1rem}
  .scripts .crow>summary :nth-child(2),.scripts .crow>summary :nth-child(5){display:none}
  .hooks .crow>summary{grid-template-columns:1.4fr .8fr .6fr 1rem}
  .hooks .crow>summary :nth-child(4){display:none}
}

/* --- customers search + pager --- */
.cust-search{display:flex;gap:.5rem;align-items:center}
.cust-search input[type=search]{font:inherit;padding:.45rem .7rem;border:1px solid var(--line);border-radius:9px;min-width:230px}
.pager{display:flex;gap:1rem;align-items:center;justify-content:center;margin-top:1rem}
.pager a{color:var(--steel);text-decoration:none;font-weight:600}
