:root{
  --yellow:#FBE3A2; --yellow-deep:#F5D172; --yellow-soft:#FDF3DC;
  --cream:#FEFAF4; --white:#FFFFFF;
  --sage:#8FA98A; --sage-soft:#E7F0E4;
  --blue:#8AB4CE; --blue-soft:#E6F0F6;
  --blush:#F2A0A0; --blush-soft:#FBEAEA;
  --lav:#A99BD1; --lav-soft:#EDE9F7;
  --ink:#48443E; --muted:#8E887F; --line:#F0EAE0;
  --r:24px; --shadow:0 2px 16px rgba(72,68,62,.04);
}
*{box-sizing:border-box}
body{margin:0;background:var(--cream);color:var(--ink);font-family:'Quicksand','Oktah Round',system-ui,sans-serif;font-weight:500;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-weight:700;letter-spacing:-.01em;margin:0 0 12px}
h1{font-size:36px;line-height:1.2}h2{font-size:26px}h3{font-size:19px}
p{margin:0 0 14px;line-height:1.65;color:var(--muted)}
a{color:var(--sage)}
.wrap{max-width:1140px;margin:0 auto;padding:0 28px}
@media(max-width:480px){.wrap{padding:0 16px}}

/* portal switcher */
.switch{background:var(--ink);padding:10px 0}
.switch .wrap{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.switch small{color:#B9B2A7;font-size:11.5px;font-weight:700;letter-spacing:.1em;margin-right:8px}
.switch button{background:transparent;border:0;color:#D8D2C7;font:inherit;font-weight:700;font-size:12.5px;
  padding:8px 16px;border-radius:999px;cursor:pointer;transition:.25s}
.switch button:hover{background:rgba(255,255,255,.08)}
.switch button.on{background:var(--yellow);color:var(--ink)}

header{background:var(--yellow);position:sticky;top:0;z-index:60}
header.pro{background:var(--sage-soft)}
header.admin{background:var(--lav-soft)}
.nav{display:flex;align-items:center;gap:12px;height:82px;max-width:1340px;padding:0 24px;position:relative}
.logo{font-weight:700;font-size:21px;letter-spacing:.03em;cursor:pointer;line-height:1;flex:0 0 auto}
.logo i{font-style:normal}
.logo small{display:block;font-size:9.5px;letter-spacing:.34em;font-weight:700;margin-top:3px}
nav.links{display:flex;gap:1px;margin:0 auto 0 6px;flex-wrap:wrap;flex:1}
nav.links button{background:none;border:0;font:inherit;font-weight:600;font-size:12.5px;color:#7A6A3E;
  padding:9px 10px;border-radius:999px;cursor:pointer;transition:.25s;white-space:nowrap}
@media(max-width:1240px){nav.links button{font-size:12px;padding:8px 8px}}
@media(max-width:1080px){nav.links button{font-size:11.5px;padding:7px 7px}}
header.pro nav.links button{color:#5F7F5A}
header.admin nav.links button{color:#6E60A0}
nav.links button:hover{background:rgba(255,255,255,.55)}
nav.links button.on{background:var(--white);color:var(--ink)}
.acct{background:var(--white);border:0;border-radius:999px;padding:11px 18px;font:inherit;font-weight:700;font-size:13px;cursor:pointer}
.hamburger{display:none;background:none;border:0;font-size:22px;line-height:1;padding:8px;cursor:pointer;color:inherit;order:3}
@media(max-width:820px){
  .nav{height:auto;min-height:70px;padding:12px 20px;flex-wrap:wrap}
  .hamburger{display:block}
  nav.links{display:none;order:5;flex-basis:100%;flex-direction:column;gap:2px;margin:0;
    max-height:0;overflow:hidden;transition:max-height .25s ease}
  nav.links.open{display:flex;max-height:70vh;overflow-y:auto;padding-top:6px}
  nav.links button{width:100%;text-align:left;border-radius:10px;padding:12px 14px;font-size:14px}
  .acct{order:2}
}

.btn{font:inherit;font-weight:700;border:0;cursor:pointer;border-radius:999px;padding:15px 30px;
  background:var(--yellow);color:var(--ink);transition:.25s;font-size:15px}
.btn:hover{filter:brightness(.96);transform:translateY(-1px)}
.btn.pink{background:var(--blush);color:#fff}
.btn.blue{background:var(--blue);color:#fff}
.btn.green{background:var(--sage);color:#fff}
.btn.lav{background:var(--lav);color:#fff}
.btn.ghost{background:transparent;border:1.5px solid var(--yellow-deep);color:#8A7430}
.btn.ghost.n{border-color:var(--line);color:var(--muted)}
.btn.sm{padding:11px 22px;font-size:13.5px}
.btn.xs{padding:8px 16px;font-size:12.5px}
.btn.wide{width:100%}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}

.card{background:var(--white);border-radius:var(--r);padding:32px;box-shadow:var(--shadow);border:1px solid var(--line)}
@media(max-width:480px){.card{padding:20px}.stat{padding:16px}}
.card.cream{background:var(--cream)}
.card.tight{padding:24px}
.grid{display:grid;gap:22px}.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:980px){.g4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.g2,.g3,.g4{grid-template-columns:1fr}h1{font-size:28px}}

label{display:block;font-size:13px;font-weight:700;color:var(--muted);margin:0 0 8px}
label em{font-style:normal;font-weight:600;color:#B8B1A6}
input,select,textarea{width:100%;font:inherit;padding:16px 20px;border-radius:var(--r);border:1px solid var(--line);background:var(--white);color:var(--ink);outline:none;transition:.2s}
input:focus,select:focus,textarea:focus{border-color:var(--yellow-deep);box-shadow:0 0 0 4px rgba(251,227,162,.45)}
textarea{min-height:110px;resize:vertical}
.field{margin-bottom:18px}
.row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px}
@media(max-width:620px){.row,.row3{grid-template-columns:1fr}}
.check{display:flex;gap:12px;align-items:flex-start;margin-bottom:12px;font-size:14px;color:var(--muted)}
.check input{width:20px;height:20px;flex:0 0 20px;padding:0;accent-color:var(--sage)}

.badge{display:inline-block;padding:6px 15px;border-radius:999px;font-size:11.5px;font-weight:700}
.b-wait{background:var(--yellow-soft);color:#9C8438}
.b-pay{background:var(--blue-soft);color:#4A7C9B}
.b-conf{background:var(--sage-soft);color:#5F7F5A}
.b-comp{background:var(--lav-soft);color:#6E60A0}
.b-avail{background:var(--sage-soft);color:#5F7F5A}
.b-un{background:#F2EFEA;color:var(--muted)}
.b-red{background:var(--blush-soft);color:#B96B6B}
.b-prev{background:var(--lav-soft);color:#6E60A0}

.msg{border-radius:var(--r);padding:20px 26px;margin-bottom:18px;display:flex;gap:16px}
.msg .ic{width:30px;height:30px;border-radius:999px;flex:0 0 30px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:15px}
.msg strong{display:block;margin-bottom:3px;font-size:15px}
.msg p{margin:0;color:var(--ink);opacity:.7;font-size:13.5px}
.success{background:var(--sage-soft)} .success .ic{background:var(--sage)}
.info{background:var(--blue-soft)} .info .ic{background:var(--blue)}
.error{background:var(--blush-soft)} .error .ic{background:var(--blush)}
.warn{background:var(--yellow-soft)} .warn .ic{background:var(--yellow-deep);color:var(--ink)}
.lavm{background:var(--lav-soft)} .lavm .ic{background:var(--lav)}

section.page{display:none;padding:52px 0 100px;animation:fade .45s ease}
section.page.on{display:block}
@keyframes fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.eyebrow{color:var(--blush);font-weight:700;font-size:13.5px;margin-bottom:10px}

.act{background:var(--cream);border:1px solid var(--line);border-radius:var(--r);padding:30px;transition:.3s;box-shadow:var(--shadow)}
.act:hover{transform:translateY(-4px)}
.act h3{font-size:23px;line-height:1.25;margin-bottom:12px}
.act p{font-size:14px;min-height:44px}

.brow{background:var(--yellow-soft);border-radius:var(--r);padding:22px;display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.brow.n{background:var(--cream)}
.dt{background:var(--white);border-radius:18px;padding:12px 18px;text-align:center;min-width:78px}
.dt b{display:block;font-size:26px;line-height:1.1}
.dt span{font-size:11.5px;color:var(--muted);font-weight:700}
.act-item{display:flex;gap:16px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}
.act-item:last-child{border:0}
.rd{width:38px;height:38px;border-radius:999px;flex:0 0 38px}
.link{background:none;border:0;font:inherit;font-weight:700;font-size:13.5px;color:var(--sage);cursor:pointer;text-decoration:underline}

.steps{display:flex;gap:9px;margin-bottom:38px;flex-wrap:wrap}
.step{flex:1;min-width:104px;padding:13px 14px;border-radius:var(--r);background:var(--white);border:1px solid var(--line);font-size:12.5px;font-weight:700;color:var(--muted);text-align:center;transition:.3s}
.step.on{background:var(--yellow);border-color:var(--yellow);color:var(--ink)}
.step.done{background:var(--sage-soft);border-color:var(--sage-soft);color:#5F7F5A}

.pro{background:var(--cream);border:2px solid var(--line);border-radius:var(--r);padding:28px;transition:.3s;cursor:pointer}
.pro:hover{transform:translateY(-3px)}
.pro.sel{border-color:var(--yellow-deep);background:#FFFBF0}
.pro.flat{cursor:default}.pro.flat:hover{transform:none}
.av{width:60px;height:60px;border-radius:999px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:20px;color:#fff;margin-bottom:15px}
.av.lg{width:84px;height:84px;font-size:28px}
.av.sm{width:44px;height:44px;font-size:15px;margin:0}
.tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}
.tag{font-size:11.5px;padding:6px 13px;border-radius:999px;background:var(--white);color:var(--muted);font-weight:700}
.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{padding:13px 24px;border-radius:999px;background:var(--white);border:2px solid var(--line);cursor:pointer;font-weight:700;font-size:14px;transition:.25s}
.chip:hover{border-color:var(--yellow-deep)}
.chip.on{background:var(--yellow);border-color:var(--yellow-deep)}
.chip.sm{padding:9px 17px;font-size:12.5px}
.line{height:1px;background:var(--line);margin:26px 0}
.line.s{margin:16px 0}
.sum{display:flex;justify-content:space-between;gap:20px;padding:12px 0;font-size:15px}
.sum span:first-child{color:var(--muted)}.sum span:last-child{font-weight:700;text-align:right}
.hero{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
@media(max-width:820px){.hero{grid-template-columns:1fr;gap:30px}}
.feat{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:20px 24px;margin-bottom:12px}
.feat b{display:block;margin-bottom:3px;font-size:15px}.feat p{margin:0;font-size:13.5px}
.dot{width:32px;height:32px;border-radius:999px;display:inline-block;margin-bottom:10px}
.tl{border-left:2px solid var(--line);padding-left:24px;margin-left:6px}
.tl div{position:relative;padding-bottom:22px}
.tl div:last-child{padding-bottom:0}
.tl div:before{content:'';position:absolute;left:-31px;top:4px;width:12px;height:12px;border-radius:999px;background:var(--line)}
.tl div.done:before{background:var(--sage)}
.tl b{font-size:14.5px}.tl p{margin:1px 0 0;font-size:12.5px}
table{width:100%;border-collapse:collapse;font-size:14.5px}
th{text-align:left;font-size:11.5px;color:var(--muted);padding:0 0 14px;font-weight:700;letter-spacing:.04em}
td{padding:18px 0;border-top:1px solid var(--line);vertical-align:middle}
.scroll-x{overflow-x:auto}
.chat{background:var(--cream);border:1px solid var(--line);border-radius:var(--r);padding:26px;max-height:340px;overflow:auto}
.bub{max-width:78%;padding:14px 19px;border-radius:20px;margin-bottom:13px;font-size:14.5px;line-height:1.55}
.bub.them{background:var(--white);border:1px solid var(--line)}
.bub.me{background:var(--yellow);margin-left:auto}
.bub.nest{background:var(--lav-soft)}
.bub small{display:block;font-size:11px;font-weight:700;opacity:.55;margin-bottom:4px}
footer{background:var(--white);border-top:1px solid var(--line);padding:38px 0;text-align:center;color:var(--muted);font-size:13px}
.note{font-size:13px;color:var(--muted);text-align:center;margin-top:16px}
.blocks{font-size:58px;letter-spacing:6px;font-weight:700;text-align:center;line-height:1}
.blocks i{font-style:normal;display:inline-block;padding:10px 18px;border-radius:20px;margin:0 4px}

/* family profile sections */
.sec{background:var(--white);border:1px solid var(--line);border-radius:var(--r);margin-top:18px;overflow:hidden;box-shadow:var(--shadow)}
.sechead{width:100%;background:none;border:0;font:inherit;cursor:pointer;padding:26px 32px;display:flex;align-items:center;gap:16px;text-align:left;transition:.25s}
.sechead:hover{background:var(--cream)}
.sechead .h{flex:1;font-weight:700;font-size:19px;letter-spacing:-.01em}
.sechead .cv{color:var(--muted);transition:.3s;font-size:14px}
.sechead.closed .cv{transform:rotate(-90deg)}
.secbody{display:none;padding:0 32px 32px}
.secbody.open{display:block;animation:fade .35s ease}
.secbody h4{font-size:13px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:0 0 16px}
.sub{background:var(--cream);border:1px solid var(--line);border-radius:var(--r);padding:26px;margin-bottom:18px}
.subhead{display:flex;align-items:center;gap:14px;margin-bottom:20px}
.subhead b{font-size:17px;flex:1}
.rm{background:none;border:0;font:inherit;font-size:13px;font-weight:700;color:var(--blush);cursor:pointer}
.prog{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:22px 28px;margin-top:22px;display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.bar{flex:1;min-width:200px;height:10px;border-radius:999px;background:var(--cream);overflow:hidden}
.bar i{display:block;height:100%;background:var(--yellow-deep);border-radius:999px;transition:width .5s ease}
.livecard{background:var(--white);border:1.5px solid var(--sage);border-radius:var(--r);padding:26px 28px;box-shadow:var(--shadow)}
.livecard .liverow{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.livedot{width:9px;height:9px;border-radius:999px;background:var(--sage);display:inline-block;margin-right:7px;animation:livepulse 1.6s infinite}
@keyframes livepulse{0%,100%{opacity:1}50%{opacity:.35}}
.timeline{position:relative;height:8px;border-radius:999px;background:var(--cream);margin:14px 0 8px}
.timeline i{display:block;height:100%;border-radius:999px;background:var(--sage);transition:width .5s ease}
.timeline .tdot{position:absolute;top:50%;transform:translate(-50%,-50%);width:16px;height:16px;border-radius:999px;
  background:var(--white);border:3px solid var(--sage)}
.impbar{background:#2B2B2B;color:#fff;padding:11px 0;text-align:center;font-size:13.5px;position:relative;z-index:30}
.impbar .wrap{display:flex;justify-content:center;align-items:center;gap:16px;flex-wrap:wrap}
.impbar button{color:#fff;border-color:rgba(255,255,255,.5)}
.impbar button:hover{background:rgba(255,255,255,.12)}
.doc{background:var(--cream);border:1.5px dashed var(--line);border-radius:var(--r);padding:22px 24px;display:flex;align-items:center;gap:14px}
.doc b{flex:1;font-size:14.5px}

/* time scroller */
.scroller{max-height:210px;overflow-y:auto;background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:8px}
.scroller button{width:100%;text-align:left;background:none;border:0;font:inherit;font-weight:600;font-size:15px;
  padding:13px 20px;border-radius:18px;cursor:pointer;color:var(--ink);transition:.15s}
.scroller button:hover{background:var(--cream)}
.scroller button.on{background:var(--yellow);font-weight:700}
.scroller::-webkit-scrollbar{width:8px}
.scroller::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px}

/* calendar */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
.cal .hd{font-size:11.5px;font-weight:700;color:var(--muted);text-align:center;padding:6px 0}
.cal .cell{background:var(--cream);border:1px solid var(--line);border-radius:16px;min-height:74px;padding:8px;font-size:13px;font-weight:700}
.cal .cell.empty{background:transparent;border:0}
.cal .pill{display:block;font-size:10px;font-weight:700;padding:3px 7px;border-radius:999px;margin-top:5px;line-height:1.3}
@media(max-width:620px){
  .cal{gap:4px}
  .cal .hd{font-size:9px;padding:4px 0}
  .cal .cell{min-height:52px;padding:4px;border-radius:10px;font-size:11px}
  .cal .pill{font-size:8px;padding:2px 4px;margin-top:3px}
}
.locked{background:var(--cream);border:1.5px dashed var(--line);border-radius:var(--r);padding:26px;text-align:center;color:var(--muted);font-size:14px}

/* ================= LANDING PAGE ================= */
#landing{padding:0;background:var(--white)}
.landhero{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;padding:96px 44px 110px;max-width:1340px;margin:0 auto}
@media(max-width:900px){.landhero{grid-template-columns:1fr;padding:36px 20px 44px}}
.landh1{font-size:62px;line-height:1.1;letter-spacing:-.02em;margin-bottom:34px}
@media(max-width:900px){.landh1{font-size:38px}}
.landlead{font-size:17px;line-height:1.6;max-width:520px;color:var(--ink);opacity:.85;margin-bottom:40px}
.landbtns{display:flex;gap:18px;flex-wrap:wrap}
.landhero img{width:100%;display:block}
.btn.coral{background:#EE7B72;color:#fff}
.btn.coralghost{background:transparent;border:1.5px solid #EE7B72;color:#EE7B72}

.landband{background:#FBE9BF;padding:0 0}
.landwhy{display:grid;grid-template-columns:1fr 1.55fr;align-items:center;max-width:1340px;margin:0 auto}
@media(max-width:900px){.landwhy{grid-template-columns:1fr}}
.landwhy .whytext{background:var(--white);padding:90px 60px;height:100%;display:flex;align-items:center}
.landwhy h2{font-size:52px;line-height:1.12;letter-spacing:-.02em;margin:0}
@media(max-width:900px){.landwhy h2{font-size:34px}.landwhy .whytext{padding:40px 24px;justify-content:center;text-align:center}}
.landwhy img{width:100%;display:block}

.landstory{max-width:1000px;margin:0 auto;padding:110px 44px;text-align:center}
.landstory h2{font-size:52px;letter-spacing:-.02em;margin-bottom:34px}
@media(max-width:900px){.landstory h2{font-size:34px}}
.landstory p{font-size:17px;line-height:1.65;color:var(--ink);opacity:.85;margin-bottom:26px}

.landservices{padding:40px 0 100px;text-align:center}
.landservices h2{font-size:52px;letter-spacing:-.02em;margin-bottom:18px}
@media(max-width:900px){.landservices h2{font-size:34px}}
.landservices .sub{font-size:17px;line-height:1.6;max-width:640px;margin:0 auto 30px;color:var(--ink);opacity:.85;background:none;border:0;padding:0}
.landservices img,.landincludes img{width:100%;display:block;max-width:1200px;margin:0 auto}

.landincludes{padding:60px 0 100px;text-align:center}
.landincludes h2{font-size:32px;margin-bottom:26px}

.landcta{background:#F5F5F7;padding:100px 0}
.ctainner{display:flex;align-items:center;justify-content:center;gap:56px;flex-wrap:wrap}
.ctainner h2{font-size:44px;line-height:1.15;letter-spacing:-.02em;margin:0;text-align:left}
.ctadivider{width:1px;height:130px;background:#C9C9CE}
@media(max-width:700px){.ctainner{flex-direction:column;gap:24px}.ctainner h2{font-size:30px;text-align:center}.ctadivider{display:none}}

.landtesti{padding:110px 0;text-align:center}
.landtesti h2{font-size:52px;letter-spacing:-.02em;margin-bottom:26px}
@media(max-width:900px){.landtesti h2{font-size:34px}}
.landtesti>.wrap>p{font-size:16px;margin-bottom:44px}
.testigrid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;text-align:left}
@media(max-width:900px){.testigrid{grid-template-columns:1fr}}
.testicard{background:#EFEFF2;border:1px solid #2B2B2B;padding:34px 30px;display:flex;flex-direction:column}
.testicard p{font-style:italic;color:#333;font-size:16px;line-height:1.5;margin-bottom:28px}
.testicard b{display:block;font-size:16px;color:#1F1F1F;margin-bottom:16px}
.testicard button{align-self:flex-start}

.landfooter{background:var(--white);padding:70px 0 90px;text-align:center;border:0}
.footlogocircle{width:150px;height:150px;border-radius:999px;background:#F5E1A0;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0 auto 22px}
.footlogocircle b{color:#fff;font-size:26px;letter-spacing:.06em;line-height:1}
.footlogocircle span{font-size:11px;letter-spacing:.3em;font-weight:700;margin-top:4px}
.landfooter p{margin:6px 0;font-size:15px;color:var(--ink);opacity:.8}
.kv{display:grid;grid-template-columns:190px 1fr;gap:10px 22px;font-size:14.5px}
.kv b{color:var(--muted);font-weight:700;font-size:13px}
@media(max-width:620px){.kv{grid-template-columns:1fr;gap:2px 0}.kv b{margin-top:12px}}
.stat{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:24px}
.stat b{display:block;font-size:30px;line-height:1.1}
.stat span{font-size:13px;color:var(--muted);font-weight:600}
.stat.warnstat{background:var(--yellow-soft);border-color:var(--yellow-deep)}

/* ===== NEW ===== */
/* weekly calendar */
.wkbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.arw{background:var(--white);border:1px solid var(--line);border-radius:999px;width:44px;height:44px;font:inherit;font-size:17px;font-weight:700;cursor:pointer;color:var(--ink);transition:.2s}
.arw:hover{background:var(--yellow-soft);border-color:var(--yellow-deep)}
.wknav{display:flex;align-items:center;gap:12px;flex:0 0 auto}
.wkrange{font-weight:700;font-size:17px;min-width:170px;text-align:center}
.week{display:grid;grid-template-columns:repeat(7,1fr);gap:10px}
@media(max-width:900px){.week{grid-template-columns:1fr}}
.wday{background:var(--cream);border:1px solid var(--line);border-radius:18px;padding:12px;min-height:150px;display:flex;flex-direction:column;gap:7px}
.wday.today{border-color:var(--yellow-deep);background:#FFFBF0}
.wday .wh{font-size:11.5px;font-weight:700;color:var(--muted);letter-spacing:.03em}
.wday .wn{font-size:20px;font-weight:700;line-height:1;margin-bottom:2px}
.ev{border-radius:12px;padding:8px 10px;font-size:11.5px;font-weight:700;line-height:1.35;border:1px solid transparent}
.ev small{display:block;font-weight:600;opacity:.75;font-size:10.5px}
.ev.conf{background:var(--sage-soft);color:#4E6B4A}
.ev.wait{background:var(--yellow-soft);color:#8A7430}
.ev.pay{background:var(--blue-soft);color:#3F6E8B}
.ev.comp{background:var(--lav-soft);color:#6E60A0}
.ev.meet{background:var(--blush-soft);color:#B96B6B}
.ev.block{background:#F2EFEA;color:var(--muted);border-style:dashed;border-color:#DDD6CA}
.ev.rep{background:#EFECE6;color:var(--muted);border-style:dashed;border-color:#DDD6CA}
.addbtn{margin-top:auto;background:var(--white);border:1.5px dashed var(--line);border-radius:12px;color:var(--muted);
  font:inherit;font-weight:700;font-size:12px;padding:7px;cursor:pointer;transition:.2s}
.addbtn:hover{border-color:var(--yellow-deep);color:#8A7430;background:var(--yellow-soft)}
.legend{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:18px}

/* modal */
.mask{position:fixed;inset:0;background:rgba(72,68,62,.45);backdrop-filter:blur(3px);z-index:200;display:flex;align-items:center;justify-content:center;padding:22px;animation:fade .25s ease}
.modal{background:var(--white);border-radius:var(--r);padding:34px;max-width:560px;width:100%;max-height:88vh;overflow:auto;box-shadow:0 20px 60px rgba(72,68,62,.18)}
@media(max-width:480px){.mask{padding:0;align-items:flex-end}
  .modal{padding:22px 18px;border-radius:20px 20px 0 0;max-height:92vh}}
.modal h2{margin-bottom:6px}
.modal .acts{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}

/* day picker */
.days{display:flex;gap:8px;flex-wrap:wrap}
.dayb{border:2px solid var(--line);background:var(--white);border-radius:999px;width:52px;height:52px;font:inherit;font-weight:700;font-size:13px;cursor:pointer;transition:.2s;color:var(--ink)}
.dayb:hover{border-color:var(--yellow-deep)}
.dayb.on{background:var(--yellow);border-color:var(--yellow-deep)}
.dayrow{display:grid;grid-template-columns:110px 1fr 1fr;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
@media(max-width:620px){.dayrow{grid-template-columns:1fr}}
.dayrow b{font-size:14.5px}
.dayrow input{padding:12px 16px}

/* tabs */
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}
.tab{background:var(--white);border:1px solid var(--line);border-radius:999px;padding:12px 22px;font:inherit;font-weight:700;font-size:13.5px;cursor:pointer;color:var(--muted);transition:.2s}
.tab:hover{border-color:var(--yellow-deep)}
.tab.on{background:var(--ink);border-color:var(--ink);color:#fff}
.tab .n{display:inline-block;background:var(--blush);color:#fff;border-radius:999px;font-size:10.5px;padding:1px 7px;margin-left:6px}

/* display toggle */
.tgl{background:var(--white);border:1.5px solid var(--line);border-radius:999px;padding:6px 14px;font:inherit;font-weight:700;font-size:11.5px;color:var(--muted);cursor:pointer;transition:.2s;white-space:nowrap}
.tgl:hover{border-color:var(--lav);color:#6E60A0}
.tgl.on{background:var(--lav-soft);border-color:var(--lav);color:#6E60A0}
.frow{display:grid;grid-template-columns:180px 1fr auto;gap:10px 18px;align-items:center;padding:13px 0;border-top:1px solid var(--line);font-size:14.5px}
.frow:first-of-type{border-top:0}
.frow b{color:var(--muted);font-weight:700;font-size:13px}
@media(max-width:700px){.frow{grid-template-columns:1fr auto;gap:4px 12px}.frow b{grid-column:1/-1}}
.searchbar{display:grid;grid-template-columns:2fr 1fr;gap:14px;margin-bottom:18px}
@media(max-width:760px){.searchbar{grid-template-columns:1fr}}
.pcard{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:26px;box-shadow:var(--shadow)}
.pcard .top{display:flex;gap:16px;align-items:center;margin-bottom:16px}
.qa{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.mini{font-size:12.5px;color:var(--muted);font-weight:600}
.dlist{display:grid;gap:10px}
.drow{display:flex;gap:12px;align-items:center;background:var(--cream);border:1px solid var(--line);border-radius:16px;padding:14px 18px;font-size:14px}
.drow b{flex:1;font-weight:700}
.notif{background:var(--blush-soft);border-radius:var(--r);padding:18px 24px;margin-bottom:14px;display:flex;gap:14px;align-items:flex-start}
.notif b{display:block;font-size:14.5px;margin-bottom:2px}
.notif p{margin:0;font-size:13px}
/* two-pane messaging */
.mwrap{display:grid;grid-template-columns:330px 1fr;gap:20px;align-items:start}
@media(max-width:920px){.mwrap{grid-template-columns:1fr}}
.mlist{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:22px;box-shadow:var(--shadow)}
.mlist .lh{display:flex;gap:12px;align-items:center;margin-bottom:16px}
.mlist .lh b{display:block;font-size:17px}
.mlist .lh p{margin:1px 0 0;font-size:12.5px}
.msec{font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--muted);margin:22px 0 8px}
.mrow{width:100%;background:none;border:0;font:inherit;text-align:left;cursor:pointer;display:flex;gap:12px;
  align-items:center;padding:13px 14px;border-radius:16px;transition:.18s;margin-bottom:2px}
.mrow:hover{background:var(--cream)}
.mrow.on{background:var(--yellow-soft)}
.mrow .tx{flex:1;min-width:0}
.mrow .tx b{display:block;font-size:14.5px}
.mrow .tx span{display:block;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mrow .when{font-size:11.5px;color:var(--muted);font-weight:700;white-space:nowrap}
.pipclr{background:var(--blush);color:#fff;border-radius:999px;font-size:10.5px;font-weight:700;padding:2px 8px}
.mpane{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:26px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;min-height:520px}
.mhead{display:flex;gap:14px;align-items:center;padding-bottom:18px;border-bottom:1px solid var(--line)}
.mhead b{display:block;font-size:17px}
.mhead p{margin:1px 0 0;font-size:12.5px}
.mbody{flex:1;overflow-y:auto;max-height:400px;padding:18px 2px}
.divider{display:flex;align-items:center;gap:14px;color:var(--muted);font-size:11.5px;font-weight:700;margin:10px 0 16px}
.divider:before,.divider:after{content:'';flex:1;height:1px;background:var(--line)}
.bub .ts{font-size:10.5px;font-weight:700;opacity:.5;margin-left:12px}
.msend{display:flex;gap:12px;padding-top:16px;border-top:1px solid var(--line)}
.mfoot{font-size:12px;color:var(--muted);text-align:center;margin-top:14px}
.searchin{position:relative;margin-bottom:4px}
.searchin input{padding-left:44px}
.searchin i{position:absolute;left:18px;top:50%;transform:translateY(-50%);color:var(--muted);font-style:normal}
/* conversation list */
.convo{background:var(--white);border:1px solid var(--line);border-radius:var(--r);margin-bottom:14px;overflow:hidden;box-shadow:var(--shadow)}
.convohead{width:100%;background:none;border:0;font:inherit;cursor:pointer;padding:22px 26px;display:flex;align-items:center;gap:16px;text-align:left;transition:.2s}
.convohead:hover{background:var(--cream)}
.convohead .t{flex:1;font-weight:700;font-size:16px}
.convohead .cv{color:var(--muted);transition:.3s;font-size:13px}
.convohead.open .cv{transform:rotate(90deg)}
.convobody{padding:0 26px 26px;animation:fade .3s ease}
.picker{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end;margin-bottom:18px}
@media(max-width:620px){.picker{grid-template-columns:1fr}}
/* reviews */
.rev{background:var(--cream);border:1px solid var(--line);border-radius:18px;padding:18px 22px;margin-bottom:12px}
.rev .st{color:#E0A93B;font-size:15px;letter-spacing:2px}
.rev p{margin:6px 0 0;font-size:14px;color:var(--ink);opacity:.78}
.stars{display:flex;gap:6px}
.stars button{background:none;border:0;font-size:30px;line-height:1;cursor:pointer;color:var(--line);padding:0;transition:.15s}
.stars button.on{color:#E0A93B}
/* alert banner on a portal */
.alertbar{background:var(--blush-soft);border:1.5px solid var(--blush);border-radius:var(--r);padding:20px 26px;margin-bottom:18px}
.flashcard{animation:flashcard 1.6s ease-in-out 3;border:1.5px solid var(--blush)}
@keyframes flashcard{0%,100%{background:var(--white)}50%{background:var(--blush-soft)}}
.alertbar b{display:block;font-size:15px;margin-bottom:4px}
.alertbar p{margin:0;font-size:13.5px;color:var(--ink);opacity:.75}
.hoverpay{position:relative}
.hoverpay .pop{display:none;position:absolute;right:0;top:100%;z-index:40;background:var(--white);border:1px solid var(--line);
  border-radius:16px;padding:10px;box-shadow:0 10px 30px rgba(72,68,62,.12)}
.hoverpay:hover .pop,.hoverpay.show .pop{display:block}
@media(max-width:900px){
  .wday{min-height:0}
  .wday .wh,.wday .wn{display:inline-block}
  .wday .wn{font-size:17px;margin-left:6px}
  .addbtn{margin-top:4px}
}