/* LVJ Customer Portal 360: forest green, fresh green, white, warm neutrals, charcoal. Mobile-first. */
:root{
	--g900:#10241A;--g800:#173523;--g700:#1F4A2F;--grass:#5E9E3A;--grass2:#4E8A2F;--mint:#E9F2E0;--mint2:#DCEBCD;
	--cream:#F7F4EC;--sand:#EEE6D4;--ink:#1F241E;--body:#4B5247;--mute:#6A7163;--line:#E2DCCB;--warn:#9C5B00;--bad:#8A1F1F;
	--head:'DM Serif Display',Georgia,serif;--text:'Manrope',system-ui,-apple-system,'Segoe UI',sans-serif;
	--r:16px;--shadow:0 18px 40px -30px rgba(16,36,26,.5);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body.pbody{margin:0;background:var(--cream);color:var(--body);font:400 16px/1.6 var(--text)}
a{color:var(--g700)}
.lvj-i{width:20px;height:20px;flex:none}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pskip{position:absolute;left:-999px;top:8px;background:#fff;padding:8px 14px;border-radius:8px;z-index:99}
.pskip:focus{left:8px}
:focus-visible{outline:3px solid #9CC77E;outline-offset:2px}

/* top bar */
.ptop{background:var(--g900);color:#fff;position:sticky;top:0;z-index:40}
.ptop-in{display:flex;align-items:center;gap:12px;min-height:64px;padding:0 16px;max-width:1360px;margin:0 auto}
.pbrand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;min-width:0;margin-right:auto}
.pbrand img{max-height:42px}
.pmark{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--grass);flex:none}
.pbrand-t{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.pbrand-t strong{font:400 19px/1.1 var(--head)}
.pbrand-t small{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#B9D9A0;font-weight:700}
.ptop-r{display:flex;align-items:center;gap:10px}
.pswitch select{max-width:190px;border-radius:999px;border:1px solid rgba(255,255,255,.3);background:var(--g800);color:#fff;padding:8px 12px;font:600 14px var(--text)}
.pbell{position:relative;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;color:#fff;border:1px solid rgba(255,255,255,.25)}
.pdot{position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;border-radius:10px;background:#E8A33A;color:var(--g900);font:800 11px/20px var(--text);text-align:center;padding:0 5px}
.pdot--in{position:static;display:inline-block;margin-left:auto}
.pout{color:#fff;font-weight:700;font-size:14px;text-decoration:none;padding:9px 14px;border:1px solid rgba(255,255,255,.3);border-radius:999px}
.pmenu{display:none;align-items:center;gap:6px;background:none;border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:12px;padding:9px 12px;font:700 14px var(--text);cursor:pointer}

/* layout */
.pwrap{display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px;max-width:1360px;margin:0 auto;padding:24px 16px 40px}
.pnav{position:sticky;top:88px;align-self:start}
.pnav ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.pnav a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;text-decoration:none;color:var(--ink);font-weight:600;font-size:15px;min-height:44px}
.pnav a:hover{background:var(--mint)}
.pnav a.is-on{background:var(--g800);color:#fff}
.pnav a .lvj-i{color:var(--grass2)}
.pnav a.is-on .lvj-i{color:#B9D9A0}
.porg{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;margin:0 0 12px}
.porg strong{display:block;color:var(--ink);line-height:1.3}
.porg small{color:var(--mute)}
.phelp{margin-top:18px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;display:grid;gap:6px;font-size:14px}
.phelp strong{color:var(--ink)}
.phelp a{display:flex;align-items:center;gap:8px;text-decoration:none;font-weight:600;word-break:break-word}
.pmain{min-width:0;outline:none}

/* headings and cards */
.phead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.phead h1{margin:0;font:400 clamp(28px,4vw,38px)/1.15 var(--head);color:var(--g900)}
.peyebrow{margin:0 0 4px;text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:800;color:var(--grass2)}
.peyebrow a{text-decoration:none;color:inherit}
.plead{margin:6px 0 0;font-size:16.5px}
.pmuted{color:var(--mute);font-size:14.5px}
.pcard{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:22px;margin-bottom:18px}
.pcard h2{margin:0 0 12px;font:400 22px/1.25 var(--head);color:var(--g900)}
.pcard h2+h2,.pcard ul+h2,.pcard p+h2{margin-top:22px}
.pgrid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.pcards{list-style:none;margin:0 0 20px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}
.pcards a{display:flex;flex-direction:column;gap:2px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px;text-decoration:none;color:var(--ink);min-height:110px}
.pcards a:hover{border-color:var(--grass)}
.pcards .lvj-i{color:var(--grass2);width:24px;height:24px}
.pcards strong{font:400 32px/1.1 var(--head);color:var(--g900);margin-top:6px}
.pcards span{font-weight:600;font-size:14px}
.psec{margin-bottom:18px}
.pqa{display:flex;flex-wrap:wrap;gap:10px}
.plist{list-style:none;margin:0;padding:0}
.plist li{padding:10px 0;border-bottom:1px solid var(--line)}
.plist li:last-child{border-bottom:0}
.plist small{display:block;color:var(--mute);font-size:14px}
.pdue{margin:12px 0 0;padding:10px 12px;background:#FFF4E5;border-radius:10px}
.ptimeline{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--mint2)}
.ptimeline li{padding:4px 0 10px}
.ptimeline small{display:block;color:var(--mute);font-size:13.5px}

/* buttons, badges */
.pbtn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border-radius:999px;border:1.5px solid var(--g700);background:#fff;color:var(--g700);font:700 15px/1.2 var(--text);text-decoration:none;cursor:pointer;text-align:center}
.pbtn:hover{background:var(--mint)}
.pbtn--primary{background:var(--grass);border-color:var(--grass);color:#fff}
.pbtn--primary:hover{background:var(--grass2);border-color:var(--grass2)}
.pbtn--ghost{border-color:var(--line);color:var(--g700)}
.pbtn--big{min-height:54px;font-size:16.5px;padding:12px 22px}
.pbtn--full{width:100%}
.pbtn[disabled]{opacity:.6;cursor:not-allowed}
.pacts{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.pb{display:inline-block;border-radius:999px;font-size:12.5px;font-weight:800;padding:3px 10px;background:var(--sand);color:var(--ink);vertical-align:middle}
.pb::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:6px;vertical-align:1px;opacity:.7}
.pb--submitted,.pb--review,.pb--assessment,.pb--preparing,.pb--sent,.pb--viewed,.pb--scheduled,.pb--confirmed,.pb--pending_scheduling,.pb--issued,.pb--new,.pb--current{background:#E8F0FB;color:#1D4F91}
.pb--available,.pb--revision_requested,.pb--rescheduled,.pb--partially_paid,.pb--in_progress,.pb--overdue{background:#FFF1D6;color:#7A4A00}
.pb--approved,.pb--converted,.pb--completed,.pb--paid{background:var(--mint);color:var(--g700)}
.pb--closed,.pb--declined,.pb--expired,.pb--cancelled,.pb--revised,.pb--void,.pb--on_hold{background:#F1EEE6;color:#5D5B53}

/* lists of items */
.pitems{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.pitem{display:flex;gap:16px;align-items:center;justify-content:space-between;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.pitem h2{margin:0;font:700 17px/1.35 var(--text);color:var(--ink)}
.pitem h2 small{font-weight:600;color:var(--mute)}
.pitem p{margin:2px 0 0;font-size:14.5px;color:var(--mute)}
.pitem-r{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;text-align:right}
.pitem.is-unread{border-left:4px solid var(--grass)}
.pdate{display:grid;place-items:center;width:60px;height:60px;border-radius:14px;background:var(--mint);color:var(--g700);flex:none;line-height:1.05}
.pdate span{font-size:12px;font-weight:800;text-transform:uppercase}
.pdate strong{font:400 24px var(--head)}
.ptabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 16px}
.ptabs a{padding:9px 16px;border-radius:999px;border:1px solid var(--line);background:#fff;text-decoration:none;font-weight:700;font-size:14.5px;color:var(--ink);min-height:44px;display:inline-flex;align-items:center}
.ptabs a.is-on{background:var(--g800);border-color:var(--g800);color:#fff}
.ppager{display:flex;gap:10px;justify-content:center;margin:18px 0}

/* tables become cards on phones */
.ptable{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.ptable th{text-align:left;font-size:12.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);padding:12px 14px;border-bottom:2px solid var(--line);background:#FBFAF6}
.ptable td{padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:top}

/* properties */
.pprops{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.pprop{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column}
.pprop img,.pprop-ph{width:100%;aspect-ratio:16/9;object-fit:cover;display:grid;place-items:center;background:var(--mint);color:var(--grass2)}
.pprop-ph .lvj-i{width:44px;height:44px}
.pprop>div{padding:16px 18px}
.pprop h2{margin:0;font:400 22px/1.2 var(--head)}
.pprop h2 a{color:var(--g900);text-decoration:none}
.pprop p{margin:4px 0}

/* detail */
.pdl{margin:0;display:grid;gap:0}
.pdl div{display:grid;grid-template-columns:200px minmax(0,1fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.pdl div:last-child{border-bottom:0}
.pdl dt{font-weight:700;color:var(--ink)}
.pdl dd{margin:0}
.psteps{list-style:none;margin:0 0 18px;padding:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.psteps li{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:4px;font-size:14px}
.psteps li span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:2px solid var(--line);color:#fff}
.psteps li.is-done{border-color:#CFE3BC;background:var(--mint)}
.psteps li.is-done span{background:var(--grass);border-color:var(--grass)}
.psteps li span .lvj-i{width:16px;height:16px}
.psteps strong{color:var(--ink)}
.psteps small{color:var(--mute)}
.pgallery{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.pgallery img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;border:1px solid var(--line);display:block}
.pgallery span{display:block;font-size:13px;color:var(--mute);margin-top:4px}
.pdocs{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.pdocs li{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pdocs small{color:var(--mute)}
.pnote{display:flex;gap:10px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px}

/* messages */
.pthread{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:12px}
.pmsg{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;max-width:760px}
.pmsg--lvj{background:var(--mint);border-color:#CFE3BC;margin-left:auto}
.pmsg-who{margin:0 0 6px}
.pmsg-who small{color:var(--mute)}
.prefs a{font-weight:700}

/* forms */
.pform label{display:block;font-weight:700;color:var(--ink);margin:14px 0 6px}
.pform input[type=text],.pform input:not([type]),.pform input[type=email],.pform input[type=password],.pform input[type=tel],.pform input[type=search],.pform select,.pform textarea,.psearch input{width:100%;font:500 16px/1.4 var(--text);padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);min-height:48px}
.pform input[type=file]{width:100%;padding:12px;border:1.5px dashed var(--grass);border-radius:12px;background:var(--mint);font:600 15px var(--text)}
.pform fieldset{border:0;margin:14px 0 0;padding:0}
.pform legend{font-weight:700;color:var(--ink);margin-bottom:8px;padding:0}
.pchecks{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.pchecks label,.pcheck{display:flex!important;align-items:center;gap:10px;margin:0!important;font-weight:600!important;border:1.5px solid var(--line);border-radius:12px;padding:11px 12px;cursor:pointer;min-height:48px;background:#fff}
.pcheck{border:0;padding:0;margin-top:14px!important}
.pchecks input,.pcheck input{width:20px;height:20px;accent-color:var(--grass2);flex:none}
.pform button{margin-top:18px}
.pform .pacts button{margin-top:0}
.ptwo{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pfixed{display:flex;flex-direction:column;background:var(--cream);border-radius:12px;padding:12px 14px;margin:0}
.pfixed span{font-size:13px;font-weight:700;color:var(--mute);text-transform:uppercase;letter-spacing:.08em}
.pack{background:var(--cream);border-radius:12px;padding:14px 16px;font-weight:600;color:var(--ink)}
.psearch{display:flex;gap:10px;margin-bottom:18px}
.pflash{border-radius:14px;padding:12px 16px;margin:0 0 16px;border:1px solid}
.pflash p{margin:2px 0}
.pflash--success{background:var(--mint);border-color:#CFE3BC;color:var(--g800)}
.pflash--error{background:#FBEAEA;border-color:#EBC1C1;color:var(--bad)}
.pempty{text-align:center;background:#fff;border:1px dashed var(--line);border-radius:var(--r);padding:40px 20px}
.pempty-i{width:46px;height:46px;color:var(--grass2)}
.pempty h1,.pempty h2{margin:10px 0 6px;font:400 26px var(--head);color:var(--g900)}
.pempty p{max-width:460px;margin:0 auto 14px}
.pfoot{text-align:center;padding:20px 16px 40px;font-size:14px;color:var(--mute)}
.pfoot p{margin:4px 0}
.pfoot p:first-child{font:400 18px var(--head);color:var(--g800)}
.ppay .pbtn{width:100%;max-width:360px}

/* auth pages */
body.pbody.pauth{background:linear-gradient(180deg,var(--g900) 0,var(--g900) 230px,var(--cream) 230px)}
.pauth-wrap{min-height:100vh;display:grid;justify-items:center;padding:34px 16px 28px;gap:22px;align-content:start}
.pauth-brand{text-align:center;color:#fff}
.pauth-brand .pbrand{justify-content:center;margin:0}
.pauth-tag{margin:10px 0 0;font:400 18px var(--head);color:#CFE6BC}
.pauth-card{width:100%;max-width:460px;background:#fff;border-radius:22px;box-shadow:0 30px 60px -30px rgba(16,36,26,.55);padding:30px 28px}
.pauth-card h1{margin:0 0 6px;font:400 32px/1.15 var(--head);color:var(--g900)}
.pauth-links{display:flex;flex-direction:column;gap:6px;margin:16px 0 0;font-weight:600}
.pauth-help{margin-top:22px;padding-top:16px;border-top:1px solid var(--line);display:grid;gap:4px;font-size:14px}
.pauth-help a{display:flex;gap:8px;align-items:center;text-decoration:none;font-weight:600}

@media (max-width:1100px){
	.pgrid2{grid-template-columns:1fr}
	.psteps{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:900px){
	.pmenu{display:inline-flex}
	.pwrap{grid-template-columns:1fr;padding-top:16px}
	.js .pnav{position:fixed;inset:64px 0 0 0;z-index:30;background:var(--cream);padding:16px;overflow-y:auto;display:none}
	.js body.pnav-open .pnav,.js .pnav-open .pnav{display:block}
	.pnav{position:static}
	.pout{display:none}
	.pbrand-t strong{font-size:16px}
	.pswitch select{max-width:130px}
}
@media (max-width:680px){
	.pcard{padding:18px 16px}
	.pdl div{grid-template-columns:1fr;gap:2px}
	.pitem{flex-direction:column;align-items:flex-start}
	.pitem-r{justify-content:flex-start;text-align:left}
	.ptable thead{display:none}
	.ptable,.ptable tbody,.ptable tr,.ptable td{display:block;width:100%}
	.ptable{border:0;background:none}
	.ptable tr{background:#fff;border:1px solid var(--line);border-radius:14px;margin-bottom:10px;padding:8px 14px}
	.ptable td{border:0;padding:5px 0;display:flex;justify-content:space-between;gap:12px}
	.ptable td::before{content:attr(data-label);font-weight:700;color:var(--mute)}
	.psteps{grid-template-columns:1fr 1fr}
	.ptwo{grid-template-columns:1fr}
	.pqa .pbtn,.pacts .pbtn{flex:1 1 100%}
	.psearch{flex-direction:column}
	.pbrand-t small{display:none}
}
@media print{
	.ptop,.pnav,.pfoot,.pacts,.presp,.ppay,.pflash,.phead .pbtn,.pmenu{display:none!important}
	.pwrap{display:block;padding:0}
	body.pbody{background:#fff}
	.pcard,.lvj-est-card{box-shadow:none;border:0}
}

/* Phase 8: service feedback */
.pstars{display:flex;flex-wrap:wrap;gap:8px 18px;border:0;padding:0;margin:0 0 10px}.pstars label{display:flex;gap:6px;align-items:center;font-weight:700;min-height:44px}.pstars input{width:22px;height:22px}

/* ---- Phase 10: finance ---- */
.pb--ready,.pb--partially_refunded{background:#E8F0FB;color:#1D4F91}
.pb--written_off,.pb--refunded{background:#F1EEE6;color:#5D5B53}
.pmoney{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin:0 0 20px}
.pmoney-c{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px}
.pmoney-c span{display:block;font-weight:700;font-size:13px;color:var(--mute,#5d6b60)}
.pmoney-c strong{display:block;font:400 28px/1.15 var(--head);color:var(--g900);margin-top:4px}
.pmoney-c small{display:block;margin-top:4px;font-size:13px}
.pmoney-c.is-due{border-color:#E9C98A;background:#FFFBF1}
.pflash--info{background:#E8F0FB;border-color:#C9D8EF;color:#1D4F91}
.pfilters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin:0 0 16px}
.pfilters label{flex:1 1 160px;margin:0}
.pfilters input,.pfilters select{width:100%;min-height:44px;padding:8px 10px;border:1.5px solid var(--line);border-radius:10px;font:500 15px var(--text)}
.pfilters button{margin-top:0}

/* ---- Phase 11: feedback, referrals ---- */
.prate{border:0;margin:14px 0 0;padding:0}
.prate legend{font-weight:700;color:var(--ink);margin-bottom:8px;padding:0}
.prate-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px}
.prate-opt{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:76px;padding:10px 6px;border:1.5px solid var(--line);border-radius:14px;background:#fff;cursor:pointer;text-align:center;margin:0!important;font-weight:600!important}
.prate-opt input{position:absolute;opacity:0;width:1px;height:1px}
.prate-n{font:400 26px/1 var(--head);color:var(--g900)}
.prate-l{font-size:13px;line-height:1.25;color:var(--ink)}
.prate-opt:has(input:checked){border-color:var(--g700);background:var(--mint);box-shadow:0 0 0 2px var(--g700) inset}
.prate-opt:has(input:checked) .prate-l{font-weight:800}
.prate-opt:has(input:focus-visible){outline:3px solid #1D4F91;outline-offset:2px}
.prate--sm .prate-opt{min-height:60px}
.prate--sm .prate-n{font-size:20px}
.pcx-form textarea{width:100%;font:500 16px/1.4 var(--text);padding:12px 14px;border:1.5px solid var(--line);border-radius:12px}
.pcx .pauth-brand{display:flex;align-items:center;gap:8px;color:var(--g900);margin:0 0 12px}
.pcx-dests{display:grid;gap:10px;margin-top:14px}
.pcx-foot{margin-top:18px;text-align:center}
.pchecks .is-off{opacity:.6}
.prate .prate-opt{display:flex!important;flex-direction:column;justify-content:center}

/* ---------- Phase 19: proposals and agreements ---------- */
.pcard--accent{border:2px solid var(--grass);background:var(--mint)}
.pdoc{max-height:480px;overflow:auto;padding:14px;border:1px solid var(--line);border-radius:12px;background:#fff;font-size:15px;line-height:1.6;overflow-wrap:anywhere}
.pdl--tot{max-width:340px;margin-left:auto}
.pform--inline{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.pform--inline input[type=file]{max-width:100%;min-width:0}
details.pcard>summary{cursor:pointer}

/* Phase 24: membership portal pages */
.mbpcard .pdl{margin:0}
.pinline{display:inline-block;margin:6px 6px 0 0}
.pmbh{font-size:1.15rem;margin:22px 0 10px}
.mbpacts{align-items:start}
.mbpacts .pcard{margin:0}
.ptimeline .pdate{font-weight:700;margin-right:6px}

/* Phase 25: customer-safe site map */


/* Phase 26: portal weather notices */
.pwx{border-left:4px solid #245C8A}
.pwx form{margin:8px 0 0}