/* ── Portal theme: echoes the brand, built for work ── */
:root{
  --ink:#26313B; --mut:#6B6353; --navy:#2A3B4C; --navy2:#33475E;
  --gold:#C8A96A; --gold2:#D9C08F; --cream:#FAF5EC; --cream2:#F3ECDF;
  --line:rgba(42,59,76,.14);
  --serif:"Cormorant Garamond","Cormorant",Georgia,serif;
  --body:"Cormorant",Georgia,serif;
  --shadow:0 12px 30px -16px rgba(42,59,76,.30);
}
*,*::before,*::after{ box-sizing:border-box; }
body{ margin:0; font-family:var(--body); color:var(--ink); background:var(--cream); line-height:1.5; }
.authbody{ min-height:100vh; display:grid; place-items:center; }
::selection{ background:var(--gold); color:var(--cream); }

/* ── Top nav ── */
.pnav{ background:var(--navy); color:var(--cream); }
.pnav-inner{ max-width:1180px; margin-inline:auto; padding:14px 22px; display:flex; align-items:center; gap:20px; flex-wrap:wrap; }
.pnav-brand{ font:600 21px/1 var(--serif); color:#FDF9F0; text-decoration:none; letter-spacing:.01em; }
.pnav-tag{ display:block; font:italic 400 12px/1 var(--serif); color:var(--gold2); letter-spacing:.06em; }
.pnav-links{ display:flex; align-items:center; gap:6px; margin-left:auto; }
.pnav-links a{ font:500 16px/1 var(--serif); color:rgba(253,249,240,.88); text-decoration:none; padding:.42em .8em; border-radius:999px; }
.pnav-links a:hover{ background:rgba(217,192,143,.15); color:var(--gold2); }
.pnav-user{ font:italic 500 15px/1 var(--serif); color:var(--gold2); padding-left:4px; }
.pnav-logout{ color:var(--gold2); }

.pwrap{ max-width:1180px; margin-inline:auto; padding:34px 22px; }
.pfoot{ margin-top:44px; padding:20px 0; text-align:center; font:italic 400 14px/1.6 var(--serif); color:rgba(253,249,240,.6); background:var(--navy); }
.pfoot a{ color:var(--gold2); text-decoration:none; }

/* ── Titles & notices ── */
.ptitle{ margin-bottom:22px; }
.ptitle h1{ font:600 34px/1.15 var(--serif); color:var(--ink); margin:0 0 .3em; }
.ptitle-sub{ font:400 17px/1.6 var(--body); color:var(--mut); margin:.2em 0 0; }
.pnotice{ padding:14px 18px; border-radius:14px; margin-bottom:20px; font:500 16px/1.5 var(--serif); }
.pnotice-ok{ background:#F1E7D2; color:var(--navy); border:1px solid var(--gold); }
.pnotice-err{ background:#F5E3E3; color:#8B2635; border:1px solid rgba(139,38,53,.35); }
.pcard-err{ color:#8B2635; font-weight:600; margin-top:10px; }
.pcard-ok{ color:var(--navy); font-style:italic; margin-top:10px; }

/* ── Layout ── */
.pgrid{ display:grid; grid-template-columns:2.2fr 1fr; gap:26px; align-items:start; }
.pgrid-main{ min-width:0; }
.pgrid-side{ align-self:start; }

/* ── Cards ── */
.pcard{ background:#fff; border:1px solid var(--line); border-radius:18px; padding:26px 24px; margin-bottom:20px; box-shadow:var(--shadow); }
.pcard h2{ font:600 24px/1.2 var(--serif); color:var(--ink); margin:0 0 .5em; }
.pcard h3{ font:600 20px/1.2 var(--serif); color:var(--ink); margin:0 0 .4em; }
.pcard-sub{ font:400 16px/1.6 var(--body); color:var(--mut); margin:.2em 0 .8em; }
.pcard .small{ font-size:14.5px; }
.pcard-note{ font:italic 400 15px/1.5 var(--serif); color:var(--mut); margin-top:14px; }
.pcard-hero{ background:linear-gradient(160deg,#FFF 0%,var(--cream) 100%); border-color:var(--gold); }
.pcard-hero h1{ font:600 32px/1.2 var(--serif); color:var(--navy); margin:0 0 .3em; }
.pcard-mini{ background:#fff; padding:14px 20px; }
.pmeta{ display:inline-block; margin-right:10px; font:italic 500 15.5px/1.4 var(--serif); color:var(--navy); }
.pmeta strong{ color:var(--mut); }
.pcard-actions{ padding:16px 20px; display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.no-print{ }
@media print{ .no-print{ display:none !important; } }

/* ── Auth / login ── */
.pcard-auth{ max-width:460px; margin-inline:auto; text-align:center; padding:40px 34px; }
.pcard-logo{ width:88px; margin:0 auto 18px; }
.pcard-logo img{ width:100%; height:auto; display:block; }
.pcard-auth h1{ font:600 30px/1.2 var(--serif); color:var(--navy); margin:0 0 .35em; }

/* ── Buttons ── */
.pbtn{ display:inline-block; font:600 15.5px/1 var(--serif); text-decoration:none; cursor:pointer; border:0; border-radius:999px; padding:.7em 1.4em; transition:transform .2s, background .25s; }
.pbtn-solid{ background:var(--navy); color:var(--cream); }
.pbtn-solid:hover{ background:var(--navy2); transform:translateY(-1px); }
.pbtn-ghost{ background:transparent; color:var(--navy); box-shadow:inset 0 0 0 1.4px rgba(42,59,76,.55); }
.pbtn-ghost:hover{ background:rgba(42,59,76,.08); }
.pbtn-sm{ padding:.5em 1em; font-size:14px; }
.pbtn-xs{ padding:.35em .75em; font-size:12.5px; }
.pbtn-danger{ background:transparent; color:#8B2635; box-shadow:inset 0 0 0 1.4px rgba(139,38,53,.5); }
.pbtn-block{ display:block; width:100%; }

/* ── Forms ── */
.pform{ display:flex; flex-direction:column; gap:14px; }
.pform-big{ display:block; }
.pform-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.pfield{ display:flex; flex-direction:column; gap:7px; text-align:left; }
.pcard-auth .pfield{ text-align:left; }
.pfield label{ font:italic 500 15.5px/1.3 var(--serif); color:var(--navy); }
.pfield-hint{ font:400 12.5px/1.3 var(--body); color:var(--mut); display:block; font-style:normal; }
.pfield-check{ flex-direction:row; align-items:center; gap:10px; }
.pcheck{ font:400 15px/1.4 var(--body); color:var(--mut); display:flex; gap:8px; align-items:center; cursor:pointer; margin:0; }
.pcheck input{ width:18px; height:18px; }
.pcheck span{ font:italic 400 15px/1.4 var(--serif); }
.pfield input, .pfield select, .pfield textarea{
  font:400 16.5px/1.4 var(--body); color:var(--ink);
  background:#fff; border:1px solid var(--line); border-radius:11px;
  padding:.8em 1em; width:100%;
}
.pfield input:focus, .pfield select:focus, .pfield textarea:focus{
  outline:none; border-color:var(--gold); box-shadow:0 0 0 3px rgba(201,169,106,.18);
}
.pfield textarea{ resize:vertical; min-height:92px; }
.pfieldset{ border:1px solid var(--line); border-radius:18px; padding:22px 22px; margin-bottom:18px; }
.pfieldset legend{ font:600 22px/1 var(--serif); color:var(--navy); padding:.2em .8em; }
.pfieldset-note{ font:italic 400 15px/1.6 var(--serif); color:var(--mut); margin:14px 0 18px; }
.pinput-inline{ font:500 16px/1.3 var(--serif); color:var(--navy); background:#F6F1E6; border:1px solid var(--gold); border-radius:10px; padding:.75em 1em; width:100%; }
.pform-inline{ display:inline-block; margin:0 8px; }
.plink-out{ font:italic 400 13.5px/1.3 var(--serif); color:var(--gold2); text-decoration:none; }
.plink-out:hover{ color:var(--gold); text-decoration:underline; }

/* ── Search / filters ── */
.psearch{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:16px; }
.psearch input[type=search], .psearch input[type=text]{
  font:400 16px/1.4 var(--body); color:var(--ink);
  background:#fff; border:1px solid var(--line); border-radius:11px;
  padding:.7em 1em; min-width:220px; flex:1 1 auto;
}
.psearch .psearch-cap{ min-width:0; width:110px; flex:0 1 auto; }
.psearch select{
  font:400 16px/1.4 var(--body); color:var(--ink);
  background:#fff; border:1px solid var(--line); border-radius:11px; padding:.68em 1em; cursor:pointer;
}
.pbadge.pb-on{ background:var(--gold); color:var(--navy); }
.psearch input:focus, .psearch select:focus{ outline:none; border-color:var(--gold); box-shadow:0 0 0 3px rgba(201,169,106,.18); }
.psearch .pbtn{ align-self:center; }

/* ── Tables ── */
.ptable{ width:100%; border-collapse:collapse; font:400 15.5px/1.4 var(--body); }
.ptable th{ text-align:left; font:italic 500 14.5px/1.2 var(--serif); color:var(--mut); padding:.6em .8em; border-bottom:2px solid var(--line); }
.ptable td{ padding:.75em .8em; border-bottom:1px solid var(--line); vertical-align:top; }
.ptable tr:last-child td{ border-bottom:0; }
.ptable-sub{ display:block; font:italic 400 13.5px/1.3 var(--serif); color:var(--mut); }
.ptable-num{ text-align:right; font:600 15.5px/1 var(--serif); color:var(--navy); }
.ptable-bill td:nth-child(3){ text-align:right; }
.pbadge{ display:inline-block; font:italic 500 13.5px/1 var(--serif); color:var(--gold2); background:var(--navy); padding:.28em .85em; border-radius:999px; letter-spacing:.04em; }
.pbadge + .pbadge{ margin-left:6px; }
.pbill-sum{ display:flex; justify-content:space-between; padding:.55em .8em; border-top:1px solid var(--line); font:500 16px/1 var(--serif); color:var(--mut); }
.pbill-sum strong{ color:var(--navy); font-weight:600; }
.pbill-balance{ font-weight:600; color:var(--ink); background:#F6F1E6; }
.pbill-sum:last-child{ border-radius:0 0 12px 12px; }

/* ── Lists / links / answers ── */
.plist{ margin:0; padding:0 0 0 1.1em; }
.plist li{ font:400 16px/1.6 var(--body); color:var(--mut); margin-bottom:.35em; }
.plist li strong{ color:var(--navy); }
.plink-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:18px; margin-bottom:22px; }
.plink{ background:#fff; border:1px solid var(--line); border-radius:16px; padding:20px 18px; text-decoration:none; display:flex; flex-direction:column; gap:4px; box-shadow:var(--shadow); transition:transform .2s; }
.plink:hover{ transform:translateY(-3px); border-color:var(--gold); }
.plink-k{ font:italic 400 13px/1 var(--serif); color:var(--mut); text-transform:uppercase; letter-spacing:.08em; }
.plink strong{ font:600 24px/1.15 var(--serif); color:var(--ink); }
.plink-h{ font:400 15px/1.45 var(--body); color:var(--mut); }
.panswers{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:18px; }
.pans{ background:var(--cream); border:1px solid var(--line); border-radius:12px; padding:14px 16px; }
.pans h3{ font:600 17px/1.3 var(--serif); color:var(--navy); margin:0 0 .4em; }
.pans-body{ font:400 15.5px/1.6 var(--body); color:var(--mut); }
.pscript{ background:#FFFEFA; border:1px solid var(--gold); border-radius:18px; padding:40px 34px; font:400 19px/1.85 var(--body); color:var(--ink); }
.pmono{ font-family:ui-monospace,monospace; font-size:14.5px; line-height:1.5; }

/* ── Calendar ── */
.pcard-cal{ padding:24px 22px; }
.cal-nav{ display:flex; align-items:center; gap:18px; }
.cal-nav h2{ font:600 26px/1.2 var(--serif); color:var(--navy); margin:0; }
.cal-arrows{ display:flex; gap:8px; margin-left:auto; }
.cal-chips{ display:flex; gap:8px; flex-wrap:wrap; margin:14px 0 6px; }
.cal-chip{ font:italic 500 14.5px/1 var(--serif); color:var(--mut); text-decoration:none; padding:.45em 1em; border:1px solid var(--line); border-radius:999px; }
.cal-chip-on{ background:var(--navy); color:var(--cream); border-color:var(--navy); }
.cal-chip:hover{ border-color:var(--gold); }
.cal-legend{ font:italic 400 13px/1.3 var(--serif); display:flex; gap:16px; margin:4px 0 14px; flex-wrap:wrap; }
.cal-legend span{ display:inline-flex; align-items:center; gap:6px; color:var(--mut); }
.cal-legend span::before{ content:""; width:10px; height:10px; border-radius:3px; }
.cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.cal-h{ font:italic 500 13px/1 var(--serif); color:var(--mut); text-align:center; padding:6px 0; }
.cal-cell{ min-height:92px; background:#FFFEFA; border:1px solid var(--line); border-radius:10px; padding:6px 8px; position:relative; }
.cal-out{ background:rgba(42,59,76,.05); color:rgba(38,49,59,.45); }
.cal-today{ box-shadow:inset 0 0 0 1.5px var(--gold); background:#FBF3E2; }
.cal-daynum{ position:absolute; top:5px; right:9px; font:600 13.5px/1 var(--serif); color:var(--mut); }
.cal-today .cal-daynum{ color:var(--navy); font-weight:600; }
.cal-event{ display:block; font:500 13px/1.25 var(--body); color:var(--ink); text-decoration:none; margin-top:18px; padding:2px 6px; border-radius:7px; }
.cal-event:hover{ filter:brightness(.96); }
.cal-time{ display:block; font:italic 400 11.5px/1.2 var(--serif); }
.ev-brendon{ background:#DCE7E4; color:#23503E; }
.ev-chris{ background:#EDD3E2; color:#7C4368; }
.ev-robert{ background:#F2E3C7; color:#8C6A3A; }
.ev-none{ background:#EFEFE9; color:#5D5A55; }
.cal-legend .ev-brendon::before{ background:#DCE7E4; }
.cal-legend .ev-chris::before{ background:#EDD3E2; }
.cal-legend .ev-robert::before{ background:#F2E3C7; }
@media (max-width:700px){
  .cal-grid{ overflow-x:auto; }
  .cal-cell{ min-height:64px; }
}

/* ── Bill discounts ── */
.bdl-discounts{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:6px 0 16px; }
.bdl-label{ font:italic 500 15px/1.3 var(--serif); color:var(--navy); }
.bdl-form{ display:inline-flex; align-items:center; gap:6px; }
.bdl-select{ font:500 15px/1.3 var(--serif); color:var(--ink); background:#fff; border:1px solid var(--navy); border-radius:11px; padding:.62em 1em; cursor:pointer; }
.bdl-select:focus{ outline:none; border-color:var(--gold); box-shadow:0 0 0 3px rgba(201,169,106,.18); }
.bdl-hint{ font:italic 400 13.5px/1.3 var(--serif); color:var(--mut); }

/* ── Finance ── */
.fin-cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:16px; margin-bottom:22px; }
.fin-card{ background:#fff; border:1px solid var(--line); border-radius:16px; padding:18px 16px; box-shadow:var(--shadow); }
.fin-card span{ font:italic 500 12.5px/1.2 var(--serif); color:var(--mut); text-transform:uppercase; letter-spacing:.06em; display:block; }
.fin-card strong{ display:block; font:600 26px/1.1 var(--serif); color:var(--navy); margin-top:6px; }
.fin-card small{ font:italic 400 12.5px/1.3 var(--serif); color:var(--mut); display:block; }
.fin-net{ background:linear-gradient(160deg,#FFF 0%,#F1E7D2 100%); border-color:var(--gold); }
.fin-net strong{ color:#8C6A3A; }

@media (max-width:860px){
  .pgrid{ grid-template-columns:1fr; }
  .pform-row{ grid-template-columns:1fr; }
  .ptable{ display:block; overflow-x:auto; }
}
@media (max-width:560px){
  .pnav-inner{ flex-wrap:wrap; }
}