/* ============================================================
   Component + screen styles (mobile + desktop responsive)
   ============================================================ */

/* ---- mobile top bars (reused inside screens) ---- */
.home-head{display:flex;align-items:center;gap:10px;padding:6px 16px 14px}
.brand-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(150deg,var(--brand),var(--brand-dark));
  display:grid;place-items:center;box-shadow:0 6px 14px rgba(20,140,115,.32);flex-shrink:0}
.brand-mark svg{width:24px;height:24px;color:#fff}
.brand-txt{flex:1;min-width:0}.brand-txt .t1{font-size:17px;font-weight:700;letter-spacing:-.3px;line-height:1.15}
.brand-txt .t2{font-size:11.5px;color:var(--ink-2);line-height:1.2}
.topbar{display:flex;align-items:center;gap:10px;padding:6px 14px 12px}
.topbar .tb-title{flex:1;text-align:center}
.topbar .tb-title .tt1{font-size:18px;font-weight:700;letter-spacing:-.2px}
.topbar .tb-title .tt2{font-size:11.5px;color:var(--ink-2)}
.topbar.left .tb-title{text-align:left}

/* ---- banner / hero ---- */
.banner{margin:0 16px;border-radius:var(--r-lg);overflow:hidden;position:relative;color:#fff;padding:20px 18px 18px;
  background:linear-gradient(135deg,var(--banner-from),var(--banner-to));box-shadow:0 12px 28px rgba(17,110,95,.32)}
.banner::after{content:"🐾";position:absolute;right:-6px;bottom:-14px;font-size:88px;opacity:.10;transform:rotate(-18deg)}
.banner .pets{position:absolute;right:12px;top:14px;font-size:54px;filter:drop-shadow(0 6px 10px rgba(0,0,0,.18))}
.banner h1{font-size:22px;font-weight:700;line-height:1.25;letter-spacing:-.3px;max-width:64%}
.banner p{font-size:13px;opacity:.92;margin-top:6px;max-width:62%}
.banner-btns{display:flex;gap:10px;margin-top:16px;position:relative;z-index:2}
.bbtn{flex:1;border:none;cursor:pointer;font-weight:600;font-size:13.5px;padding:12px 10px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;gap:7px}
.bbtn svg{width:17px;height:17px}.bbtn.solid{background:#fff;color:var(--brand-deeper)}
.bbtn.ghost{background:rgba(255,255,255,.16);color:#fff;border:1.5px solid rgba(255,255,255,.55)}
.bbtn:active{transform:scale(.97)}

/* ---- quick menu ---- */
.quick{display:grid;grid-template-columns:repeat(3,1fr);gap:6px 4px;background:var(--surface);margin:16px;padding:18px 10px;
  border-radius:var(--r);box-shadow:var(--shadow);border:1px solid var(--line)}
.qitem{display:flex;flex-direction:column;align-items:center;gap:7px;cursor:pointer;padding:6px 2px}
.qitem .qic{width:54px;height:54px;border-radius:17px;display:grid;place-items:center;font-size:25px;transition:transform .15s}
.qitem:active .qic{transform:scale(.9)}.qitem span{font-size:12px;color:var(--ink-2);font-weight:500;text-align:center}

/* ---- maps (Leaflet) ---- */
.leafmap{position:absolute;inset:0}
.minimap{position:relative;height:184px;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow)}
.minimap .leafmap{border-radius:var(--r)}
.map-locate{position:absolute;right:12px;bottom:12px;z-index:500;width:42px;height:42px;border-radius:50%;background:#fff;
  display:grid;place-items:center;box-shadow:var(--shadow);color:var(--brand);cursor:pointer;border:none}
.map-locate svg{width:21px;height:21px}
/* custom Leaflet pins */
.pin-wrap{display:flex;flex-direction:column;align-items:center}
.pin-face{width:38px;height:38px;border-radius:50%;border:3px solid #fff;background:#fff;display:grid;place-items:center;
  font-size:19px;box-shadow:0 3px 8px rgba(0,0,0,.3);position:relative}
.pin-num{position:absolute;top:-6px;right:-8px;min-width:18px;height:18px;border-radius:9px;color:#fff;font-size:10.5px;
  font-weight:700;display:grid;place-items:center;padding:0 4px;border:1.5px solid #fff}
.pin-stem{width:3px;height:9px;margin-top:-2px;border-radius:2px}
.pin-green .pin-num,.pin-green .pin-stem{background:var(--normal)}
.pin-amber .pin-num,.pin-amber .pin-stem{background:var(--warning)}
.pin-red .pin-num,.pin-red .pin-stem{background:var(--danger)}
.pin-purple .pin-num,.pin-purple .pin-stem{background:var(--purple)}
.pin-vol .pin-face{border-color:var(--info);font-size:18px}
.pin-vol .pin-stem{background:var(--info);width:3px;height:9px;margin-top:-2px;border-radius:2px}
.leaflet-popup-content-wrapper{border-radius:14px;box-shadow:var(--shadow-lg)}
.leaflet-popup-content{margin:10px 12px;font-family:var(--ff)}
.pop{width:150px}.pop .pt{font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:5px}
.pop .ps{font-size:11.5px;color:var(--ink-2);margin:2px 0 7px}
.pop .pb{display:block;text-align:center;background:var(--brand);color:#fff;font-size:12px;font-weight:600;padding:7px;border-radius:9px;cursor:pointer}

/* ---- case cards (home) ---- */
.cases{display:flex;gap:12px;overflow-x:auto;padding:2px 16px 4px;scroll-snap-type:x mandatory}
.cases::-webkit-scrollbar{height:0}
.case{flex:0 0 200px;scroll-snap-align:start;background:var(--surface);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--line);cursor:pointer}
.case .ph{height:118px;position:relative;display:grid;place-items:center;font-size:48px}
.case .ph .tag{position:absolute;top:10px;left:10px}
.case .body{padding:11px 13px 13px}.case .body h3{font-size:15px;font-weight:600}
.case .meta{display:flex;align-items:center;gap:5px;color:var(--ink-2);font-size:12px;margin-top:5px}
.case .meta svg{width:13px;height:13px;color:var(--ink-3)}.case .meta+.meta{margin-top:3px}

/* ---- stats ---- */
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:13px 14px;display:flex;align-items:center;gap:11px;box-shadow:var(--shadow-sm)}
.stat .sic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-size:20px;flex-shrink:0}
.stat .snum{font-size:21px;font-weight:700;line-height:1;letter-spacing:-.5px}
.stat .slab{font-size:11.5px;color:var(--ink-2);margin-top:3px}

/* ---- chips / filters ---- */
.chips{display:flex;gap:8px;overflow-x:auto;padding:2px 14px 12px}
.chips::-webkit-scrollbar{height:0}
.chip{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:22px;background:var(--surface);
  border:1px solid var(--line-2);font-size:13px;font-weight:500;color:var(--ink-2);cursor:pointer}
.chip.active{background:var(--brand-pale);border-color:var(--brand);color:var(--brand-deeper);font-weight:600}
.chip.active.danger{background:var(--danger-pale);border-color:var(--danger);color:var(--danger)}
.chip svg{width:15px;height:15px}

/* ---- map screen ---- */
.bigmap{flex:1;position:relative;overflow:hidden;border-top:1px solid var(--line)}
.map-search{position:absolute;left:12px;top:12px;z-index:500;display:flex;align-items:center;gap:8px;background:#fff;border-radius:22px;padding:9px 14px;box-shadow:var(--shadow);font-size:13px;color:var(--ink-2);cursor:pointer}
.map-search svg{width:16px;height:16px;color:var(--brand)}
.map-rail{position:absolute;right:12px;top:12px;z-index:500;display:flex;flex-direction:column;gap:10px}
.map-rail .rbtn{width:50px;height:50px;border-radius:14px;background:#fff;box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--ink);font-size:9px;cursor:pointer;border:none;text-align:center;line-height:1.1}
.map-rail .rbtn svg{width:20px;height:20px}
.legend{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:500;display:flex;gap:13px;background:#fff;border-radius:18px;padding:9px 15px;box-shadow:var(--shadow);font-size:11px;color:var(--ink-2);white-space:nowrap}
.legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:middle}

.sheet{flex-shrink:0;background:var(--surface);border-radius:20px 20px 0 0;margin-top:-14px;position:relative;z-index:5;box-shadow:0 -8px 24px rgba(20,50,45,.10);padding:8px 0 10px}
.sheet .grab{width:38px;height:4px;border-radius:2px;background:var(--line-2);margin:4px auto 10px}
.sheet .sh-head{display:flex;align-items:flex-end;justify-content:space-between;padding:0 16px 10px}
.sheet .sh-head h3{font-size:16px;font-weight:600}.sheet .sh-head .upd{font-size:11px;color:var(--ink-3)}
.acards{display:flex;gap:11px;overflow-x:auto;padding:2px 16px 4px}.acards::-webkit-scrollbar{height:0}
.acard{flex:0 0 138px;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow-sm);cursor:pointer;background:var(--surface)}
.acard .ph{height:96px;display:grid;place-items:center;font-size:40px;position:relative}
.acard .ph .tag{position:absolute;top:8px;left:8px;font-size:10px;padding:2px 7px}
.acard .b{padding:9px 10px 11px}.acard .b .nm{font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:4px}
.acard .b .sub{font-size:11px;color:var(--ink-2);margin-top:2px}
.acard .b .dist{font-size:11px;color:var(--ink-3);margin-top:4px;display:flex;align-items:center;gap:3px}
.acard .b .dist svg{width:11px;height:11px}
.sex{font-size:12px}.sex.m{color:var(--info)}.sex.f{color:#d4728c}

/* ---- add pet form ---- */
.form-sec{margin:0 16px 18px}
.form-sec>.lbl{font-size:15px;font-weight:600;margin-bottom:11px;display:flex;align-items:center;gap:7px}
.form-sec>.lbl .req{color:var(--danger)}.form-sec .hint{font-size:11.5px;color:var(--ink-3);font-weight:400}
.type-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.type{border:1.5px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);cursor:pointer;padding:14px 4px 10px;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative}
.type .ic{font-size:30px}.type span{font-size:12px;color:var(--ink-2)}
.type.sel{border-color:var(--brand);background:var(--brand-pale)}.type.sel span{color:var(--brand-deeper);font-weight:600}
.type .chk{position:absolute;top:6px;right:6px;width:18px;height:18px;border-radius:50%;background:var(--brand);display:none;place-items:center}
.type .chk svg{width:12px;height:12px;color:#fff}.type.sel .chk{display:grid}
.photos{display:flex;gap:9px;flex-wrap:wrap}
.photo{width:84px;height:84px;border-radius:13px;position:relative;overflow:hidden;display:grid;place-items:center;font-size:34px}
.photo .rm{position:absolute;top:5px;right:5px;width:22px;height:22px;border-radius:50%;background:rgba(255,255,255,.92);display:grid;place-items:center;box-shadow:0 2px 5px rgba(0,0,0,.2);cursor:pointer}
.photo .rm svg{width:13px;height:13px;color:var(--ink)}
.photo.add{border:1.5px dashed var(--line-2);background:var(--surface-2);flex-direction:column;gap:5px;cursor:pointer;color:var(--ink-3)}
.photo.add svg{width:24px;height:24px}.photo.add b{font-size:11px;font-weight:500}
.loc-card{display:flex;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px;box-shadow:var(--shadow-sm)}
.loc-card .lmap{width:128px;height:104px;border-radius:12px;overflow:hidden;position:relative;flex-shrink:0}
.loc-card .linfo{flex:1;min-width:0;display:flex;flex-direction:column}
.loc-card .linfo .cur{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--brand-deeper)}
.loc-card .linfo .cur svg{width:15px;height:15px}
.loc-card .linfo .addr{font-size:12.5px;color:var(--ink-2);line-height:1.5;margin-top:5px;flex:1}
.loc-card .linfo .adj{font-size:12.5px;color:var(--brand);font-weight:500;display:flex;align-items:center;gap:5px;cursor:pointer}
.loc-card .linfo .adj svg{width:14px;height:14px}
.field{margin-bottom:13px}.field>label{font-size:13px;color:var(--ink-2);font-weight:500;display:block;margin-bottom:7px}
.seg{display:flex;gap:8px}.seg.wrap{flex-wrap:wrap}
.opt{border:1.5px solid var(--line-2);background:var(--surface);border-radius:11px;padding:10px 14px;cursor:pointer;font-size:13px;color:var(--ink-2);display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.opt .ic{font-size:15px}.opt.sel{border-color:var(--brand);background:var(--brand-pale);color:var(--brand-deeper);font-weight:600}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.selectbox,.inp,.ta{width:100%;font-family:inherit;font-size:13.5px;color:var(--ink);background:var(--surface);border:1.5px solid var(--line-2);border-radius:11px;padding:12px 13px}
.selectbox{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none' stroke='%2393A0A4' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 8l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;color:var(--ink-3)}
.inp::placeholder,.ta::placeholder{color:var(--ink-3)}.ta{resize:none;height:78px;line-height:1.5}
.ta-wrap{position:relative}.ta-count{position:absolute;right:12px;bottom:9px;font-size:11px;color:var(--ink-3)}
.cond{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.cond::-webkit-scrollbar{height:0}.cond .opt{flex-shrink:0}
.cond .opt.sel.normal{border-color:var(--normal);background:#e6f6ee;color:#1c7a4d}
.cond .opt.sel.warn{border-color:var(--warning);background:var(--warning-pale);color:#a85f12}
.submit-bar{flex-shrink:0;padding:12px 16px 14px;background:var(--surface);border-top:1px solid var(--line);box-shadow:0 -6px 18px rgba(20,50,45,.06)}
.submit{width:100%;border:none;cursor:pointer;font-weight:600;font-size:16px;color:#fff;padding:16px;border-radius:16px;display:flex;align-items:center;justify-content:center;gap:9px;background:linear-gradient(135deg,var(--brand),var(--brand-dark));box-shadow:0 10px 22px rgba(20,140,115,.34)}
.submit:active{transform:scale(.98)}.submit svg{width:19px;height:19px}.submit:disabled{opacity:.5}
.secure{display:flex;align-items:center;justify-content:center;gap:6px;font-size:11.5px;color:var(--ink-3);margin-top:9px}
.secure svg{width:13px;height:13px}

/* ---- AI triage panel ---- */
.ai-panel{margin-top:11px;border:1.5px solid var(--brand-pale-2);background:linear-gradient(180deg,#f3fbf8,#ecf7f3);border-radius:var(--r);overflow:hidden}
.ai-head{display:flex;align-items:center;gap:9px;padding:12px 14px}
.ai-head .ai-ic{width:30px;height:30px;border-radius:9px;background:linear-gradient(140deg,var(--brand),var(--brand-dark));display:grid;place-items:center;color:#fff;flex-shrink:0}
.ai-head .ai-ic svg{width:17px;height:17px}
.ai-head .ai-t{font-size:13.5px;font-weight:600}.ai-head .ai-t small{display:block;font-weight:400;font-size:11px;color:var(--ink-2)}
.ai-head .ai-spin{margin-left:auto;width:18px;height:18px;border:2.5px solid var(--brand-pale-2);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.ai-body{padding:0 14px 13px;display:none}.ai-panel.done .ai-body{display:block}.ai-panel.done .ai-spin{display:none}
.ai-tags{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.ai-tag{font-size:11.5px;font-weight:500;background:#fff;border:1px solid var(--line-2);border-radius:18px;padding:5px 11px;display:flex;align-items:center;gap:5px;opacity:0;transform:translateY(4px);animation:rise .35s forwards}
.ai-tag b{color:var(--brand-deeper)}
.ai-urg{display:flex;align-items:center;gap:8px;font-size:12.5px;background:var(--danger-pale);color:var(--danger);border-radius:11px;padding:9px 12px;font-weight:600}
.ai-urg svg{width:16px;height:16px}
.ai-apply{margin-top:10px;font-size:12.5px;color:var(--brand);font-weight:600;display:flex;align-items:center;gap:6px}

/* ---- status timeline / dispatch ---- */
.dispatch{margin:0 16px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.dispatch .dh{padding:14px 16px;display:flex;align-items:center;gap:11px;border-bottom:1px solid var(--line)}
.dispatch .dh .dhi{width:38px;height:38px;border-radius:11px;background:var(--info-pale);color:var(--info);display:grid;place-items:center;flex-shrink:0}
.dispatch .dh .dhi svg{width:20px;height:20px}
.dispatch .dh .d1{font-size:14px;font-weight:600}.dispatch .dh .d2{font-size:11.5px;color:var(--ink-2)}
.dispatch .dh .eta{margin-left:auto;text-align:right}
.dispatch .dh .eta b{font-size:18px;color:var(--brand-deeper);font-weight:700}.dispatch .dh .eta span{font-size:10px;color:var(--ink-3);display:block}
.timeline{padding:14px 16px 6px}
.tstep{display:flex;gap:12px;position:relative;padding-bottom:16px}
.tstep:last-child{padding-bottom:4px}
.tstep .tdot{width:24px;height:24px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;background:var(--line);color:var(--ink-3);z-index:1}
.tstep .tdot svg{width:13px;height:13px}
.tstep::before{content:"";position:absolute;left:11px;top:24px;bottom:0;width:2px;background:var(--line)}
.tstep:last-child::before{display:none}
.tstep.done .tdot{background:var(--normal);color:#fff}.tstep.done::before{background:var(--normal)}
.tstep.active .tdot{background:var(--brand);color:#fff;box-shadow:0 0 0 4px var(--brand-pale)}
.tstep .tx .t1{font-size:13.5px;font-weight:600}.tstep.pending .tx .t1{color:var(--ink-3);font-weight:500}
.tstep .tx .t2{font-size:11.5px;color:var(--ink-2);margin-top:1px}
.tstep .tt{margin-left:auto;font-size:10.5px;color:var(--ink-3);flex-shrink:0}

/* ---- donation / promptpay ---- */
.fund{margin:0 16px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:15px;box-shadow:var(--shadow)}
.fund .fh{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;margin-bottom:11px}
.fund .fh .fe{font-size:20px}
.bar{height:10px;border-radius:6px;background:var(--surface-2);overflow:hidden}
.bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--brand),var(--brand-dark));width:0;transition:width 1s cubic-bezier(.3,.7,.3,1)}
.fund .fmeta{display:flex;justify-content:space-between;font-size:12px;margin-top:8px}
.fund .fmeta .raised{color:var(--brand-deeper);font-weight:700}.fund .fmeta .goal{color:var(--ink-3)}
.fund .chipsrow{display:flex;gap:8px;margin-top:12px}
.fund .amt{flex:1;border:1.5px solid var(--line-2);background:var(--surface);border-radius:11px;padding:10px;font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer;text-align:center}
.fund .amt.sel{border-color:var(--brand);background:var(--brand-pale);color:var(--brand-deeper)}
.fund .donate{margin-top:12px;width:100%;border:none;cursor:pointer;font-weight:600;font-size:14.5px;color:#fff;padding:13px;border-radius:13px;display:flex;align-items:center;justify-content:center;gap:8px;background:linear-gradient(135deg,var(--brand),var(--brand-dark))}
.fund .donate svg{width:17px;height:17px}
.fund .note{font-size:11px;color:var(--ink-3);text-align:center;margin-top:8px}
/* promptpay modal */
.pp-card{text-align:center;padding:6px 4px}
.pp-card .pp-logo{font-size:13px;font-weight:700;color:#003d6a;margin-bottom:4px}
.pp-qr{width:210px;height:210px;margin:10px auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px}
.pp-qr svg,.pp-qr canvas{width:100%;height:100%}
.pp-amt{font-size:26px;font-weight:700;color:var(--ink)}.pp-amt small{font-size:14px;font-weight:500;color:var(--ink-2)}
.pp-note{font-size:12px;color:var(--ink-2);margin-top:6px}

/* ---- chat ---- */
.tabs{display:flex;gap:9px;overflow-x:auto;padding:2px 16px 12px}.tabs::-webkit-scrollbar{height:0}
.tab{flex-shrink:0;padding:8px 16px;border-radius:20px;background:var(--surface-2);border:1px solid var(--line);font-size:13px;font-weight:500;color:var(--ink-2);cursor:pointer}
.tab.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
.chat-list{padding:0 8px}
.chatrow{display:flex;gap:12px;padding:12px 10px;border-radius:14px;cursor:pointer;align-items:flex-start}
.chatrow:active{background:var(--surface-2)}.chatrow.unread{background:var(--brand-pale)}.chatrow.sel{background:var(--brand-pale)}
.avatar{width:50px;height:50px;border-radius:50%;flex-shrink:0;position:relative;display:grid;place-items:center;font-size:24px;overflow:hidden}
.avatar .on{position:absolute;right:1px;bottom:1px;width:12px;height:12px;border-radius:50%;background:var(--normal);border:2px solid var(--surface)}
.chatrow .cr-main{flex:1;min-width:0}
.chatrow .cr-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.chatrow .cr-name{font-size:14.5px;font-weight:600;display:flex;align-items:center;gap:5px;min-width:0}
.chatrow .cr-name .mute{color:var(--ink-3)}.chatrow .cr-name svg{width:14px;height:14px}
.chatrow .cr-time{font-size:11px;color:var(--ink-3);flex-shrink:0}
.chatrow .cr-msg{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:3px}
.chatrow .cr-text{font-size:12.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.45}
.chatrow .cr-badge{flex-shrink:0;min-width:20px;height:20px;border-radius:10px;background:var(--brand);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center;padding:0 6px}
.divider{height:1px;background:var(--line);margin:0 18px}
.sub-screen{position:absolute;inset:0;z-index:40;background:var(--bg);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .3s cubic-bezier(.3,.7,.3,1);visibility:hidden}
.sub-screen.open{transform:none;visibility:visible}
.cd-head{flex-shrink:0;display:flex;align-items:center;gap:11px;padding:10px 14px;background:var(--surface);border-bottom:1px solid var(--line)}
.cd-head .who{flex:1;min-width:0}.cd-head .who .nm{font-size:15px;font-weight:600}.cd-head .who .st{font-size:11.5px;color:var(--normal)}
.cd-body{flex:1;overflow-y:auto;padding:14px 14px 6px;background:linear-gradient(180deg,#eef3f2,#e9efee)}
.cd-body::-webkit-scrollbar{width:6px}.cd-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:3px}
.case-card{display:flex;gap:11px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:11px 12px;box-shadow:var(--shadow-sm);margin-bottom:14px}
.case-card .ci{width:34px;height:34px;border-radius:9px;background:var(--brand-pale);display:grid;place-items:center;color:var(--brand);flex-shrink:0}
.case-card .ci svg{width:18px;height:18px}
.case-card .cc-main{flex:1;min-width:0}.case-card .cc-main .cc1{font-size:13px;font-weight:600}.case-card .cc-main .cc2{font-size:11.5px;color:var(--ink-2);margin-top:2px}
.case-card .cc-thumb{width:40px;height:40px;border-radius:9px;display:grid;place-items:center;font-size:20px;flex-shrink:0}
.day-sep{text-align:center;margin:8px 0 14px}.day-sep span{font-size:11px;color:var(--ink-3);background:rgba(0,0,0,.05);padding:4px 12px;border-radius:12px}
.msg{max-width:78%;margin-bottom:10px;clear:both}
.msg .bub{padding:9px 13px;border-radius:16px;font-size:13.5px;line-height:1.5;position:relative}
.msg.them{float:left}.msg.them .bub{background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:5px;color:var(--ink)}
.msg.me{float:right}.msg.me .bub{background:#dcefe6;border-bottom-right-radius:5px;color:#143b30}
.msg .time{font-size:10px;color:var(--ink-3);margin-top:3px;display:flex;align-items:center;gap:3px}
.msg.me .time{justify-content:flex-end}.msg .time svg{width:13px;height:13px;color:var(--info)}
.msg .react{display:inline-block;margin-top:-4px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:1px 7px;font-size:11px;box-shadow:var(--shadow-sm)}
.cd-input{flex-shrink:0;display:flex;align-items:center;gap:9px;padding:10px 12px;background:var(--surface);border-top:1px solid var(--line)}
.cd-input .ci-add{width:38px;height:38px;border-radius:50%;background:var(--brand-pale);color:var(--brand);display:grid;place-items:center;flex-shrink:0;cursor:pointer}
.cd-input .ci-add svg{width:20px;height:20px}
.cd-input .ci-field{flex:1;display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:22px;padding:9px 14px}
.cd-input .ci-field input{flex:1;border:none;background:none;font-family:inherit;font-size:13.5px;outline:none;color:var(--ink)}
.cd-input .ci-field input::placeholder{color:var(--ink-3)}.cd-input .ci-field .emo{font-size:18px}
.cd-input .ci-mic{width:38px;height:38px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;flex-shrink:0;cursor:pointer;border:none}
.cd-input .ci-mic svg{width:19px;height:19px}

/* ---- profile ---- */
.prof-card{margin:0 16px;border-radius:var(--r-lg);overflow:hidden;box-shadow:0 12px 28px rgba(17,110,95,.28)}
.prof-top{background:linear-gradient(140deg,var(--banner-from),var(--banner-to));padding:18px;display:flex;gap:15px;align-items:center;color:#fff;position:relative}
.prof-top .ava{width:84px;height:84px;border-radius:50%;border:3px solid rgba(255,255,255,.6);position:relative;flex-shrink:0;display:grid;place-items:center;font-size:38px;background:#fff}
.prof-top .ava .cam{position:absolute;right:0;bottom:0;width:26px;height:26px;border-radius:50%;background:var(--brand-dark);border:2px solid #fff;display:grid;place-items:center}
.prof-top .ava .cam svg{width:13px;height:13px;color:#fff}
.prof-top .pmain{flex:1;min-width:0}.prof-top .pmain .pn{font-size:19px;font-weight:700;display:flex;align-items:center;gap:6px}
.prof-top .pmain .pr{font-size:12.5px;opacity:.92;margin-top:1px}
.lvl{display:inline-flex;align-items:center;gap:5px;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.4);border-radius:16px;padding:3px 11px;font-size:11.5px;font-weight:600;margin:7px 0 6px}
.prof-top .pinfo{font-size:11.5px;opacity:.92;display:flex;align-items:center;gap:5px;margin-top:3px}.prof-top .pinfo svg{width:13px;height:13px}
.prof-top .chev{position:absolute;right:14px;top:14px;opacity:.8}
.prof-stats{background:var(--brand-deeper);display:grid;grid-template-columns:repeat(4,1fr);color:#fff;padding:14px 6px}
.prof-stats .ps{text-align:center;position:relative}
.prof-stats .ps+.ps::before{content:"";position:absolute;left:0;top:14%;height:72%;width:1px;background:rgba(255,255,255,.18)}
.prof-stats .ps .ic{font-size:14px;opacity:.9}.prof-stats .ps .n{font-size:19px;font-weight:700;line-height:1.1}.prof-stats .ps .l{font-size:9.5px;opacity:.85;margin-top:1px}
.menu-card{margin:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--shadow)}
.menu-card>h3{font-size:16px;font-weight:600;margin-bottom:13px}
.menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mitem{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:13px;cursor:pointer;background:var(--surface)}
.mitem:active{background:var(--surface-2)}.mitem .mic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:17px;flex-shrink:0}
.mitem .mtx{flex:1;font-size:12.5px;font-weight:500;color:var(--ink)}.mitem .arr{color:var(--ink-3)}.mitem .arr svg{width:16px;height:16px}.mitem.full{grid-column:1/-1}
.ach{display:flex;gap:14px;overflow-x:auto;padding:2px 16px 4px}.ach::-webkit-scrollbar{height:0}
.achi{flex:0 0 84px;text-align:center}
.achi .medal{width:72px;height:72px;border-radius:50%;margin:0 auto 7px;display:grid;place-items:center;font-size:30px;box-shadow:inset 0 0 0 3px rgba(255,255,255,.7),var(--shadow)}
.achi .at{font-size:11px;font-weight:600;line-height:1.3}.achi .ad{font-size:10px;color:var(--ink-3);margin-top:2px}
.help-card{margin:6px 16px 18px;background:linear-gradient(135deg,#eef7f4,#e4f1ed);border:1px solid var(--brand-pale-2);border-radius:var(--r);padding:15px;display:flex;align-items:center;gap:13px}
.help-card .he{font-size:38px}.help-card .ht{flex:1}.help-card .ht h4{font-size:14.5px;font-weight:600}.help-card .ht p{font-size:11.5px;color:var(--ink-2);margin-top:2px}
.help-card .hb{flex-shrink:0;border:1.5px solid var(--brand);color:var(--brand-deeper);background:#fff;border-radius:13px;padding:9px 13px;font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:6px;cursor:pointer}
.help-card .hb svg{width:15px;height:15px}

/* ---- impact dashboard (desktop-leaning, works mobile) ---- */
.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:16px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:15px;box-shadow:var(--shadow-sm)}
.kpi .kt{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:6px}
.kpi .kt .ki{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:14px}
.kpi .kn{font-size:26px;font-weight:700;letter-spacing:-.5px;margin-top:8px;line-height:1}
.kpi .kd{font-size:11px;margin-top:5px;font-weight:600;color:var(--normal);display:flex;align-items:center;gap:3px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:16px;margin-bottom:16px}
.panel>h3{font-size:15px;font-weight:600;margin-bottom:13px;display:flex;align-items:center;gap:7px}
.barchart{display:flex;align-items:flex-end;gap:10px;height:130px;padding-top:8px}
.barchart .bc{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.barchart .bc i{width:100%;max-width:34px;border-radius:6px 6px 0 0;background:linear-gradient(180deg,var(--brand),var(--brand-dark));transition:height 1s cubic-bezier(.3,.7,.3,1)}
.barchart .bc span{font-size:10px;color:var(--ink-3)}

/* ---- modal / toast / demo chrome ---- */
#modalHost{position:fixed;inset:0;z-index:400;display:none;align-items:center;justify-content:center;padding:20px}
#modalHost.show{display:flex}
.jj-modal-bg{position:absolute;inset:0;background:rgba(15,30,28,.5);backdrop-filter:blur(2px);animation:fade .2s}
.jj-modal{position:relative;z-index:1;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);
  padding:20px;width:300px;max-width:100%;animation:pop .28s cubic-bezier(.2,.8,.3,1)}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0;transform:scale(.9) translateY(10px)}to{opacity:1;transform:none}}
.jj-toast{position:fixed;left:50%;bottom:104px;transform:translate(-50%,20px);z-index:500;background:rgba(20,40,38,.94);
  color:#fff;font-size:13px;font-weight:500;padding:11px 18px;border-radius:24px;box-shadow:var(--shadow-lg);
  opacity:0;transition:.3s;white-space:nowrap;max-width:88vw;text-align:center}
.jj-toast.show{opacity:1;transform:translateX(-50%)}
body.view-desktop .jj-toast{bottom:32px}
#demoBtn{position:fixed;right:22px;bottom:24px;z-index:180;border:none;cursor:pointer;font-family:var(--ff);font-weight:600;
  font-size:14px;color:#fff;padding:13px 20px;border-radius:30px;background:linear-gradient(135deg,#1F2A2E,#2c3d40);
  box-shadow:0 10px 26px rgba(15,30,28,.4);display:flex;align-items:center;gap:7px}
#demoBtn.on{background:linear-gradient(135deg,var(--danger),#c43)}
#demoBtn:active{transform:scale(.95)}
#demoCap{position:fixed;left:50%;bottom:96px;transform:translate(-50%,16px);z-index:190;background:rgba(15,105,90,.96);
  color:#fff;font-size:14px;font-weight:600;line-height:1.45;padding:13px 22px;border-radius:18px;box-shadow:var(--shadow-lg);
  max-width:min(640px,90vw);text-align:center;opacity:0;transition:.35s cubic-bezier(.2,.8,.3,1);pointer-events:none}
#demoCap.show{opacity:1;transform:translateX(-50%)}
body.view-mobile #demoCap{bottom:150px;font-size:13px;max-width:84vw}
