/* TopGreen planner demo: one shared stylesheet (tokens and components from design/topgreen-planner-demo-neww.html) */

/* Tokens and components follow design/topgreen-planner-demo-neww.html */
:root{color-scheme:light;
  --ink:#121A21;--ink-2:#344054;--dim:#5D6B79;--faint:#98A2B3;
  --paper:#F3F5F7;--card:#fff;--line:#E1E5EA;--line-2:#CBD2D9;--surface-2:#EEF1F4;
  --moss:#1f4a2a;--moss-2:#2f5a3a;--moss-soft:#E7F2EB;--moss-ink:#1f4a2a;--card-2:#FAFBFC;--glass:rgba(255,255,255,.95);
  --lime:#62d100;--lime-ink:#2F7A12;--lime-soft:#EAF6E3;
  --amber:#D98B1F;--amber-soft:#FDF1DC;--amber-ink:#8A5410;
  --red:#D24B3F;--red-soft:#FCE6E3;--blue:#2F6FD1;--blue-soft:#E4EDFB;
  --svc-mow:#6cbf3a;--svc-spray:#2f6fd1;
  --sans:'Albert Sans',system-ui,-apple-system,"Segoe UI",sans-serif;
  --sh-1:0 1px 2px rgba(16,24,40,.05),0 4px 12px -6px rgba(16,24,40,.12);
  --sh-2:0 2px 4px rgba(16,24,40,.06),0 16px 36px -14px rgba(16,24,40,.24)}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--paper);color:var(--ink);font:14px/1.5 var(--sans);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
button,select,input{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.shell{display:grid;grid-template-columns:228px minmax(0,1fr);height:100vh}
/* sidebar */
.side{background:var(--card);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:16px 10px;gap:2px;overflow:auto}
.side .brand{padding:2px 8px 12px}
.side .brand img{height:30px;display:block;mix-blend-mode:multiply}
.bcard{border:1px solid var(--line);border-radius:12px;padding:10px;margin:0 0 10px;background:var(--card-2)}
.bcard .r{display:flex;gap:10px;align-items:center}
.bcard .av{width:32px;height:32px;border-radius:9px;background:var(--moss-soft);color:var(--moss-ink);font-weight:700;font-size:12px;display:grid;place-items:center;flex:none}
.bcard b{display:block;font-size:13.5px;line-height:1.2}
.bcard span{display:block;font-size:12px;color:var(--dim)}
.bcard .pick{display:flex;gap:6px;margin-top:10px}
.bcard select{flex:1;min-width:0;font-size:12px;border:1px solid var(--line-2);border-radius:8px;padding:5px 6px;background:var(--card)}
.navh{font-size:11.5px;color:var(--faint);padding:12px 10px 4px;font-weight:500}
.nav{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;border:0;background:none;width:100%;text-align:left;color:var(--ink-2);font-size:13.5px;font-weight:500}
.nav:hover{background:var(--paper)}
.nav.on{background:var(--moss-soft);color:var(--moss-ink);font-weight:600}
.nav:disabled{opacity:.45;cursor:default}.nav:disabled:hover{background:none}
.nav svg{flex:none;opacity:.85}
.side .sp{flex:1}
.side .foot{font-size:11px;color:var(--faint);padding:8px 10px}
/* buttons */
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:10px;padding:8px 14px;border:1px solid var(--line-2);background:var(--card);font-weight:550;white-space:nowrap}
.btn:hover{background:var(--surface-2)}
.btn.primary{background:var(--moss);border-color:var(--moss-ink);color:#fff}
.btn.primary:hover{background:var(--moss-2)}
.btn.sm{padding:5px 10px;font-size:12.5px;border-radius:8px}
.btn:disabled{opacity:.45;cursor:not-allowed}
/* main */
.main{min-width:0;overflow:auto;position:relative}
.view{display:none}.view.on{display:block}
.s2{padding:18px 24px 28px}
.s2-top{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.s2-t h1{margin:0;font-size:24px;line-height:1.1}
.s2-t span{font-size:12.5px;color:var(--dim)}
.s2-stats{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--dim);padding-left:14px;border-left:1px solid var(--line);white-space:nowrap}
.s2-stats b{color:var(--ink);font-weight:700}
.s2-room{border:1px solid #CDE7C9;background:var(--lime-soft);border-radius:8px;padding:4px 10px;font-size:13px;font-weight:700;color:var(--lime-ink)}
.s2-top .spacer{flex:1}
.status{font-size:12.5px;color:var(--dim);margin:-6px 0 10px}
.err{background:var(--red-soft);color:var(--red);padding:12px 14px;border-radius:8px;white-space:pre-wrap;font-size:12.5px;max-height:300px;overflow:auto}
.summary{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:0 0 12px;font-size:13.5px;color:var(--ink-2)}
.note{background:var(--lime-soft);border-radius:8px;padding:10px 12px;margin:0 0 12px;font-size:13px}
.note.ask{background:var(--blue-soft)}
.note ul{margin:4px 0 0;padding-left:18px}
/* board */
.board{background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:auto;max-height:calc(100vh - 170px)}
.grid{display:grid}
.dh{position:sticky;top:0;z-index:3;background:var(--card);border-left:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px 10px}
.dh.corner{left:0;z-index:4;border-left:0}
.dh .r1{display:flex;align-items:center;justify-content:space-between;gap:6px}
.dh .r1 b{font-size:13px}
.dh .r1 span{display:flex;gap:3px;align-items:center;font-size:11.5px;color:var(--dim)}
.dh .fillb{height:4px;border-radius:9px;background:var(--lime-soft);margin:6px 0 4px;overflow:hidden}
.dh .fillb i{display:block;height:100%;background:var(--moss)}
.dh em{font-style:normal;font-size:11.5px;font-weight:700;color:var(--lime-ink)}
.dh em.f{color:var(--faint)}
.risk{display:block;margin-top:4px;font-size:10.5px;line-height:1.3;padding:2px 6px;border-radius:5px;background:var(--amber-soft);color:var(--amber-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:help}
.risk.high{background:var(--red-soft);color:var(--red)}
.crew{position:sticky;left:0;z-index:2;display:flex;gap:9px;align-items:flex-start;padding:12px 10px;background:var(--card-2);border-bottom:1px solid var(--line)}
.ini{width:28px;height:28px;border-radius:8px;color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center;flex:none}
.crew b{display:block;font-size:13.5px;font-weight:600;line-height:1.2}
.crew div span{display:block;font-size:11.5px;color:var(--dim);margin-top:2px}
.cal{position:relative;border-left:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 6px 24px;min-height:112px;display:flex;flex-direction:column;gap:5px;background:var(--card)}
.cal.wet{background:var(--amber-soft)}
.vc{position:relative;border:1px solid var(--line);border-radius:7px;padding:5px 18px 5px 10px;background:var(--card);font-size:12.5px;line-height:1.3}
.vc::before{content:"";position:absolute;left:4px;top:5px;bottom:5px;width:3px;border-radius:2px;background:var(--svc-mow)}
.vc.spray::before{background:var(--svc-spray)}
.vc b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vc span{font-size:11.5px;color:var(--dim)}
.vc .dot{position:absolute;right:7px;top:50%;width:7px;height:7px;margin-top:-3px;border-radius:50%;background:var(--amber);cursor:help}
.vc.chg{border-color:#efc47c;box-shadow:0 0 0 1px #efc47c}
.cal .back{position:absolute;left:8px;bottom:5px;font-size:11px;color:var(--faint)}
.cal .room{position:absolute;right:8px;bottom:5px;font-size:11px;font-weight:700;color:var(--lime-ink)}
.cal .none{color:var(--faint);font-size:12px;margin:auto}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--dim);padding:10px 2px 0;align-items:center}
.legend i{display:inline-block;width:12px;height:9px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.empty{max-width:520px;margin:12vh auto;text-align:center;color:var(--dim)}
/* drawer */
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:var(--card);border-left:1px solid var(--line);z-index:1000;transform:translateX(100%);transition:transform .25s ease,visibility .25s;visibility:hidden;display:flex;flex-direction:column}
.drawer.on{transform:none;visibility:visible;box-shadow:-10px 0 40px rgba(0,0,0,.12)}
.drawer header{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line)}
.drawer header b{font-size:15px}
.drawer header button{margin-left:auto;border:0;background:none;font-size:18px;color:var(--dim)}
.drawer .body{flex:1;overflow:auto;padding:12px 16px}
.drawer .days{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.drawer .days .risk{white-space:normal;font-size:12px;padding:5px 8px}
.ch{border-top:1px solid var(--line);padding:10px 0;font-size:13px}
.ch:first-of-type{border-top:0}
.ch .k{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}
.ch .m{display:block;font-size:11.5px;color:var(--dim);margin-top:2px}
.ch .a{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.drawer footer{border-top:1px solid var(--line);padding:10px 16px;display:flex;gap:8px;align-items:center;font-size:12px;color:var(--dim)}
.modal{position:fixed;inset:0;background:rgba(18,26,33,.35);display:none;place-items:center;z-index:1100}
.modal.on{display:grid}
.modal div{background:var(--card);border-radius:12px;padding:20px 22px;max-width:380px;box-shadow:var(--sh-2)}
.modal h3{margin:0 0 6px;font-size:16px}
.modal p{margin:0 0 14px;color:var(--dim);font-size:13.5px}
/* workspace */
.ws{position:relative;height:100vh}
#map{position:absolute;inset:0;background:var(--card-2)}
.ov{position:absolute;z-index:500}
.search{top:14px;left:14px;width:min(320px,40%)}
.search input{width:100%;border:0;border-radius:10px;padding:10px 12px;box-shadow:var(--sh-1);background:var(--card)}
.layers{top:14px;right:14px;display:flex;align-items:center;gap:2px;background:var(--card);border-radius:10px;box-shadow:var(--sh-1);padding:3px}
.layers .lh{font-size:11.5px;color:var(--faint);padding:0 8px 0 6px;font-weight:600}
.layers button{border:0;background:none;height:32px;padding:0 10px;border-radius:8px;display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:550;color:var(--ink-2)}
.layers button:hover{background:var(--paper)}
.layers button.on{background:var(--moss-soft);color:var(--moss-ink);font-weight:600}
.layers .ck{width:14px;height:14px;border-radius:4px;border:1.5px solid var(--line-2);display:grid;place-items:center;background:var(--card);font-size:10px;line-height:1}
.layers button.on .ck{background:var(--moss);border-color:var(--moss-ink);color:#fff}
.rpanel{top:62px;right:14px;width:290px;max-height:calc(100% - 150px);overflow:auto;background:var(--card);border-radius:12px;box-shadow:var(--sh-2)}
.rpanel h4{margin:0;padding:10px 14px;font-size:12.5px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;position:sticky;top:0;background:var(--card)}
.rpanel h4 button{border:1px solid var(--line);background:var(--card);border-radius:7px;font-size:11.5px;padding:1px 8px}
.rc{display:flex;gap:10px;align-items:flex-start;padding:9px 14px;border-bottom:1px solid var(--line);cursor:pointer}
.rc:hover{background:var(--card-2)}.rc.on{background:var(--lime-soft)}
.rc i{width:9px;height:9px;border-radius:50%;margin-top:6px;flex:none}
.rc .t{flex:1}.rc b{display:block;font-size:13px}.rc span{font-size:11.5px;color:var(--dim)}
.rc .bk{text-align:right;font-size:13px;font-weight:600}.rc .bk span{display:block;font-weight:400}
.daybar{bottom:14px;left:50%;transform:translateX(-50%);display:flex;gap:4px;background:var(--card);border-radius:14px;box-shadow:var(--sh-2);padding:6px;max-width:calc(100% - 28px);overflow-x:auto}
.daybar button{border:1px solid transparent;background:none;border-radius:10px;padding:6px 12px;text-align:left;min-width:108px}
.daybar button b{display:block;font-size:13px}
.daybar button span{font-size:11.5px;color:var(--dim);white-space:nowrap}
.daybar button.on{border-color:var(--lime-ink);background:var(--lime-soft)}
.daybar button.medium{background:var(--amber-soft)}.daybar button.high{background:var(--red-soft)}
.daybar button.on.medium,.daybar button.on.high{border-color:var(--amber)}
.lite{filter:grayscale(.85) brightness(1.06) contrast(.88)}
.layers button:not(.on) .ck{color:transparent}
.yard-ic{background:var(--ink);color:#fff;font-size:11.5px;font-weight:600;padding:4px 8px;border-radius:7px;white-space:nowrap;box-shadow:var(--sh-1);transform:translate(-50%,-50%);display:inline-block}
/* Google map overlay (OverlayView, no Map ID): property dots, numbered stops, label cards, yard pill, stop card */
.pin{position:absolute;transform:translate(-50%,-50%);cursor:pointer}
.pin .dot{display:block;width:8px;height:8px;border-radius:50%;background:#9AA5B1;border:1.5px solid #fff;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.pin .num{display:grid;place-items:center;min-width:20px;height:20px;padding:0 4px;border-radius:10px;color:#fff;font-size:11px;font-weight:700;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.35)}
.pin.dim{opacity:.2}.pin.hide{display:none}
.pin.chg .dot,.pin.chg .num{box-shadow:0 0 0 3px var(--amber)}
.pin.risk .dot,.pin.risk .num{box-shadow:0 0 0 3px var(--red)}
.pin .card{display:none;position:absolute;left:50%;bottom:13px;transform:translateX(-50%);background:var(--card);border-radius:8px;padding:4px 9px;box-shadow:var(--sh-1);white-space:nowrap;font-size:12px;line-height:1.25;pointer-events:none}
.pin.stop .card{bottom:17px}
.pin .card::after{content:"";position:absolute;left:50%;bottom:-4px;width:8px;height:8px;background:var(--card);transform:translateX(-50%) rotate(45deg)}
.pin .card b{font-weight:600}.pin .card span{color:var(--dim);font-size:11px}
.pin.lbl:not(.nolbl) .card,.pin:hover .card{display:block}.pin:hover{z-index:900!important}
.yardtag{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:5px;background:var(--ink);color:#fff;font-size:11.5px;font-weight:600;padding:4px 9px 4px 7px;border-radius:99px;white-space:nowrap;box-shadow:var(--sh-2)}
.pop{position:absolute;transform:translate(-50%,calc(-100% - 18px));background:var(--card);border-radius:10px;box-shadow:var(--sh-2);padding:10px 12px;width:250px;font-size:12.5px;line-height:1.4;cursor:default}
.pop::after{content:"";position:absolute;left:50%;bottom:-5px;width:10px;height:10px;background:var(--card);transform:translateX(-50%) rotate(45deg)}
.pop b{display:block;font-size:13.5px;padding-right:16px}.pop .x{position:absolute;right:8px;top:6px;border:0;background:none;font-size:16px;color:var(--dim)}
.pop dl{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:6px 0 0}.pop dt{color:var(--faint)}.pop dd{margin:0}
.pop .rk{margin-top:6px;color:var(--red);font-size:12px}
.needs{border-top:1px solid var(--line)}
.needs h5{margin:0;padding:8px 14px;font-size:12px}
.needs div{padding:6px 14px;border-top:1px solid var(--line);font-size:12px}.needs span{color:var(--dim);display:block}
.steps li{cursor:pointer;border-radius:4px;padding:1px 3px}.steps li:hover{background:var(--lime-soft)}
.steps .lg{cursor:pointer}
.mapmsg{position:absolute;inset:0;display:grid;place-items:center;text-align:center;color:var(--dim);padding:24px}
.mapmsg b{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}
.notice{top:62px;left:14px;max-width:380px;background:var(--amber-soft);color:var(--amber-ink);font-size:12px;padding:6px 10px;border-radius:8px;box-shadow:var(--sh-1)}
.needs{bottom:86px;left:14px;width:260px;max-height:40%;overflow:auto;background:var(--card);border-radius:10px;box-shadow:var(--sh-1);font-size:12px}
.needs h5{margin:0;padding:8px 12px;border-bottom:1px solid var(--line);font-size:12px}
.needs div{padding:6px 12px;border-bottom:1px solid var(--line)}.needs span{color:var(--dim);display:block}
.steps{padding:4px 14px 10px 33px;font-size:11.5px;color:var(--ink-2);max-height:260px;overflow:auto;border-bottom:1px solid var(--line);background:var(--card-2)}
.steps ol{margin:0;padding-left:16px}.steps li{margin:2px 0}.steps .lg{color:var(--faint);font-weight:600;margin-top:6px}
.eng{font-size:11.5px;color:var(--dim);padding:6px 10px}
.eng summary{cursor:pointer;color:var(--ink-2)}
.eng table{width:100%;border-collapse:collapse;margin-top:6px}.eng td{padding:2px 0}.eng td+td{text-align:right;font-variant-numeric:tabular-nums}
.ws .hint{bottom:86px;left:14px;font-size:11.5px;color:var(--dim);background:var(--glass);padding:4px 8px;border-radius:7px}
/* ---------- schedule review (compare with current schedule) */
.rv{padding:18px 24px 40px;max-width:1240px}
.rv .back{border:0;background:none;color:var(--dim);font-size:13px;padding:0;margin-bottom:10px}
.prog{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 18px;max-width:640px}
.prog h2{margin:0 0 10px;font-size:16px}
.ps{display:flex;gap:10px;align-items:flex-start;padding:7px 0;font-size:13.5px}
.ps i{width:18px;height:18px;border-radius:50%;flex:none;display:grid;place-items:center;font-style:normal;font-size:11px;margin-top:1px;border:1.5px solid var(--line-2);color:transparent}
.ps.done i{background:var(--moss);border-color:var(--moss-ink);color:#fff}
.ps.running i{border-color:var(--moss-ink);border-top-color:transparent;animation:spin .8s linear infinite}
.ps.waiting{color:var(--faint)}
.ps span{display:block;font-size:12px;color:var(--dim)}.ps em{font-style:normal;color:var(--faint);font-size:11.5px;margin-left:auto;white-space:nowrap}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.ps.running i{animation:none}}
.pv{margin-top:16px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 18px}
.pv h3{margin:0 0 8px;font-size:14.5px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.chip{font-size:12px;padding:3px 9px;border-radius:99px;background:var(--surface-2);color:var(--ink-2)}
.chip.ok{background:var(--lime-soft);color:var(--lime-ink)}.chip.warn{background:var(--amber-soft);color:var(--amber-ink)}
.mt{width:100%;border-collapse:collapse;font-size:13px}
.mt th,.mt td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--line)}
.mt th{font-size:11.5px;color:var(--faint);font-weight:600}
.mt td.n{text-align:right;font-variant-numeric:tabular-nums}
.pv details{margin-top:10px;font-size:13px}.pv summary{cursor:pointer;color:var(--ink-2)}
.hero{background:linear-gradient(135deg,#F4FAF1,#fff 60%);border:1px solid #D6E9CF;border-radius:14px;padding:18px 22px;margin-bottom:16px}
.hero .kick{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12.5px;color:var(--dim)}
.badge2{display:inline-flex;gap:6px;align-items:center;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:99px;background:var(--moss);color:#fff}
.hero h1{margin:8px 0 4px;font-size:22px;line-height:1.25}
.hero .big{display:flex;gap:28px;flex-wrap:wrap;margin-top:12px}
.hero .big div b{display:block;font-size:26px;line-height:1.1;font-variant-numeric:tabular-nums}
.hero .big div span{font-size:12px;color:var(--dim)}
.ins{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;margin-bottom:18px}
.ic{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:6px}
.ic.strength{border-color:#CDE7C9;background:var(--card-2)}
.ic .top{display:flex;gap:10px;align-items:center}
.ic .ico{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--moss-soft);color:var(--moss-ink);flex:none}
.ic h3{margin:0;font-size:14.5px;line-height:1.25}
.ic .hv{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.ic p{margin:0;font-size:13.5px;color:var(--ink-2)}
.ic .imp{display:flex;gap:6px;flex-wrap:wrap}
.ic .imp span{font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:99px;background:var(--lime-soft);color:var(--lime-ink)}
.ic .imp span.cf{background:var(--surface-2);color:var(--ink-2);font-weight:500}
.ic .row{display:flex;gap:8px;align-items:center;margin-top:auto;padding-top:4px}
.ic .ev{font-size:12px;color:var(--dim);background:var(--paper);border-radius:8px;padding:6px 9px}
.lnk{border:0;background:none;color:var(--blue);font-size:12.5px;padding:0;cursor:pointer}
.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:14px;margin-bottom:18px}
.cc{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.cc h3{margin:0 0 2px;font-size:14px}.cc .sub{font-size:12px;color:var(--dim);margin:0 0 8px}
.lg{display:flex;gap:14px;font-size:12px;color:var(--dim);margin-bottom:6px}.lg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.cc svg text{font:11px var(--sans);fill:var(--dim)}.cc svg .v{fill:var(--ink-2);font-weight:600}
.cc svg rect:hover{opacity:.8}
.two{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:14px;margin-bottom:18px}
.box{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.box h3{margin:0 0 8px;font-size:14px}
.box ul{margin:0;padding-left:18px;font-size:13px;color:var(--ink-2)}.box li{margin-bottom:5px}
.assume{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--dim);margin:8px 0 0}
.assume label{flex-direction:row;align-items:center;gap:6px;color:var(--dim)}
.assume input{width:70px;font:inherit;font-size:12.5px;border:1px solid var(--line-2);border-radius:6px;padding:3px 6px}
.offers{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.dlg{position:fixed;inset:0;background:rgba(18,26,33,.35);display:none;place-items:center;z-index:1100}
.dlg.on{display:grid}
.dlg>div{background:var(--card);border-radius:14px;padding:20px 22px;width:min(460px,92vw);box-shadow:var(--sh-2)}
.dlg h3{margin:0 0 6px;font-size:16px}.dlg p{margin:0 0 12px;color:var(--dim);font-size:13px}
.drop{border:1.5px dashed var(--line-2);border-radius:10px;padding:18px;text-align:center;color:var(--dim);font-size:13px;margin-bottom:12px}
/* review banner (Schedule / Workspace opened from a route review) */
.rvbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:7px 16px;background:var(--moss);color:#fff;font-size:13px;min-height:44px}
.rvbar b{font-weight:600}.rvbar .sp{flex:1}
.rvbar .seg2{display:flex;background:rgba(255,255,255,.14);border-radius:8px;padding:2px;gap:2px}
.rvbar .seg2 button,.rvbar .bb{border:0;background:none;color:#fff;font:inherit;font-size:12.5px;height:28px;padding:0 10px;border-radius:6px}
.rvbar .seg2 button.on{background:var(--card);color:var(--moss-ink);font-weight:600}
.rvbar .bb{border:1px solid rgba(255,255,255,.45)}.rvbar .bb:hover{background:rgba(255,255,255,.12)}
.rvbar[hidden]{display:none}   /* display:flex above would otherwise override the hidden attribute */
.main.withbar .ws{height:calc(100vh - var(--barh,44px))}
.rpins{padding:12px 14px;border-bottom:1px solid var(--line);background:var(--card-2)}
.rpins .k{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--lime-ink)}
.rpins h5{margin:2px 0;font-size:13.5px}.rpins .hv{font-size:20px;font-weight:700}.rpins p{margin:4px 0;font-size:12.5px;color:var(--ink-2)}
.rpins .imp span{font-size:11px;font-weight:600;padding:1px 7px;border-radius:99px;background:var(--lime-soft);color:var(--lime-ink);margin-right:4px}
.rvhead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}.rvhead h1{margin:0;font-size:24px}.rvhead .sp{flex:1}
.rvprev{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:16px;font-size:13px}
.rvprev summary{cursor:pointer;color:var(--ink-2)}.rvprev a{color:var(--ink);text-decoration:none;display:flex;gap:10px;padding:6px 0;border-top:1px solid var(--line)}
.rvprev a:hover{color:var(--moss-ink)}.rvprev a.cur{font-weight:600}.rvprev a span{color:var(--dim);margin-left:auto}
.ic.hl{box-shadow:0 0 0 3px var(--lime-soft),0 0 0 1px var(--lime-ink)}
.rvempty{max-width:560px;margin:10vh auto;text-align:center;color:var(--dim)}.rvempty h2{color:var(--ink);font-size:20px;margin:0 0 6px}
/* ---------- route review v2: hero, KPIs, opportunities, data health, Ask Claude */
.hero2{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px 24px;margin-bottom:14px;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:24px;align-items:center}
.hero2 .kick{font-size:12.5px;color:var(--dim)}
.hero2 h1{margin:6px 0 14px;font-size:22px;line-height:1.25}
.bars2{display:flex;flex-direction:column;gap:10px}
.bar2 .lb{display:flex;justify-content:space-between;font-size:12.5px;color:var(--dim);margin-bottom:3px}.bar2 .lb b{color:var(--ink);font-size:15px}
.bar2 .tr{height:14px;border-radius:7px;background:var(--surface-2);overflow:hidden}.bar2 .tr i{display:block;height:100%;border-radius:7px;transition:width .6s ease}
.money2{text-align:right}.money2 .big{font-size:44px;font-weight:700;line-height:1;color:var(--lime-ink);font-variant-numeric:tabular-nums}
.money2 .sub{font-size:13px;color:var(--dim);margin-top:6px}.money2 .per{font-size:14px;color:var(--ink-2);margin-top:2px}
.assumebtn{position:relative;display:inline-block;margin-top:10px}
.pop2{position:absolute;right:0;top:34px;z-index:30;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-2);padding:12px 14px;width:300px;text-align:left}
.pop2 label{display:grid;grid-template-columns:1fr 80px;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2);margin:6px 0}
.pop2 label small{grid-column:1/-1;color:var(--faint);font-size:11.5px;margin-top:-4px}
.pop2 input{font:inherit;font-size:13px;border:1px solid var(--line-2);border-radius:6px;padding:4px 6px;width:80px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.kpi span{font-size:12px;color:var(--dim)}.kpi b{display:block;font-size:20px;margin-top:4px;font-variant-numeric:tabular-nums}
.howwrap{position:relative;display:inline-block;margin-top:4px}
.howbtn{border:0;background:none;padding:0;font:inherit;font-size:11.5px;color:var(--blue);border-bottom:1px dotted var(--blue);cursor:pointer}
.howpop{position:absolute;left:0;top:22px;z-index:40;width:min(340px,80vw);background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-2);padding:12px 14px;font-size:12.5px;line-height:1.45;color:var(--ink-2);text-align:left;font-weight:400}
.howpop p{margin:0 0 6px}.howpop p:last-child{margin:0;color:var(--dim)}.howpop b{color:var(--ink)}
.kpi:last-child .howpop{left:auto;right:0}
.kpi em{font-style:normal;font-size:12px;font-weight:600;margin-left:6px}.kpi em.good{color:var(--lime-ink)}.kpi em.bad{color:var(--red)}
.strip{display:flex;align-items:center;gap:14px;background:var(--moss-soft);border-radius:10px;padding:9px 14px;margin-bottom:12px;font-size:13.5px;color:var(--moss-ink)}
.strip .pb{flex:1;height:8px;border-radius:4px;background:var(--card);overflow:hidden}.strip .pb i{display:block;height:100%;background:var(--lime-ink);transition:width .5s}
.sec{margin:18px 0 10px;display:flex;align-items:center;gap:10px}.sec h2{margin:0;font-size:16px}.sec .sp{flex:1}
.ops{display:flex;flex-direction:column;gap:10px}
.op{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px;display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:12px;align-items:start}
.op.applied{border-color:#BFE0B5;background:var(--card-2)}.op.dismissed{opacity:.55}.op.hl{box-shadow:0 0 0 3px var(--lime-soft),0 0 0 1px var(--lime-ink)}
.op .ico{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--moss-soft);color:var(--moss-ink)}
.op h3{margin:0;font-size:14.5px}.op .hv{font-size:20px;font-weight:700;margin:2px 0}.op p{margin:2px 0 6px;font-size:13.5px;color:var(--ink-2)}
.op .val{text-align:right;min-width:120px}.op .val b{display:block;font-size:18px;color:var(--lime-ink)}.op .val span{font-size:12px;color:var(--dim)}
.op .acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.st{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:1px 7px;border-radius:99px;background:var(--surface-2);color:var(--dim);margin-left:6px;vertical-align:2px}
.st.applied{background:var(--lime-soft);color:var(--lime-ink)}.st.dismissed{background:var(--surface-2);color:var(--faint)}
.chipz{display:flex;gap:6px;flex-wrap:wrap}.chipz span{font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:99px;background:var(--lime-soft);color:var(--lime-ink)}
.chipz span.cf{background:var(--surface-2);color:var(--ink-2);font-weight:500}
.more{font-size:12.5px;color:var(--dim);background:var(--paper);border-radius:8px;padding:8px 10px;margin-top:6px}
.good2{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.good2 .g{background:linear-gradient(135deg,#F1FAEC,#fff);border:1px solid #CDE7C9;border-radius:12px;padding:12px 14px}
.good2 .g h3{margin:0 0 4px;font-size:14px;color:var(--lime-ink)}.good2 .g p{margin:0;font-size:13px;color:var(--ink-2)}
.seg3{display:inline-flex;background:var(--surface-2);border-radius:9px;padding:3px;gap:2px}.seg3 button{border:0;background:none;font:inherit;font-size:12.5px;padding:5px 10px;border-radius:7px;color:var(--ink-2)}
.seg3 button.on{background:var(--card);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.checklist{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-top:10px}
.checklist label{display:flex;gap:10px;align-items:center;padding:5px 0;border-top:1px solid var(--line);font-size:13px}.checklist label span{margin-left:auto;color:var(--dim);font-size:12px}
.applist{font-size:13px}.applist div{display:flex;gap:8px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}.applist div span{flex:1}
.actbar{position:sticky;bottom:0;z-index:20;display:flex;gap:10px;align-items:center;justify-content:flex-end;background:var(--glass);border-top:1px solid var(--line);padding:10px 24px;margin:18px -24px -40px;backdrop-filter:blur(4px)}
.actbar .note{margin-right:auto;font-size:12.5px;color:var(--dim)}
.cc svg rect.click{cursor:pointer}.cc svg rect.click:hover{opacity:.75}
.askp{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:var(--card);border-left:1px solid var(--line);z-index:1050;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s;visibility:hidden}
.askp.on{transform:none;visibility:visible;box-shadow:-10px 0 40px rgba(0,0,0,.12)}
.askp header{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line)}.askp header b{font-size:15px}.askp header button{margin-left:auto;border:0;background:none;font-size:18px;color:var(--dim)}
.askp .ctx{font-size:12px;color:var(--moss-ink);background:var(--moss-soft);padding:6px 16px}
.askp .log{flex:1;overflow:auto;padding:12px 16px;display:flex;flex-direction:column;gap:10px}
.msg{font-size:13.5px;line-height:1.45;padding:9px 12px;border-radius:12px;max-width:92%}.msg.u{align-self:flex-end;background:var(--moss);color:#fff}.msg.a{background:var(--paper);color:var(--ink)}
.msg.a b.num{font-variant-numeric:tabular-nums;color:var(--moss-ink)}
.scn{border:1px solid #CDE7C9;border-radius:12px;padding:10px 12px;background:var(--card-2);font-size:13px}.scn h4{margin:0 0 6px;font-size:13.5px}
.scn table{width:100%;font-size:12.5px;border-collapse:collapse}.scn td{padding:2px 0}.scn td+td{text-align:right}
.askp .sugg{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 8px}.askp .sugg button{font:inherit;font-size:12px;border:1px solid var(--line);background:var(--card);border-radius:99px;padding:4px 10px;cursor:pointer}
.askp form{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--line)}.askp textarea{flex:1;font:inherit;font-size:13.5px;border:1px solid var(--line-2);border-radius:8px;padding:8px;resize:none;height:44px}
.thinking{font-size:12.5px;color:var(--dim)}
.dh .day-hl{box-shadow:inset 0 -3px 0 var(--lime-ink);background:var(--lime-soft)!important}
@media (max-width:1100px){.hero2{grid-template-columns:1fr}.money2{text-align:left}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* ---------- two areas: AI schedule (violet) / Your routes (blue); Home; hints */
:root{--ai:#6D4AE0;--ai-soft:#F1EDFD;--rt:#2F6FD1;--rt-soft:#E4EDFB}
.ab3{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;letter-spacing:.02em;border-radius:99px;padding:2px 9px}
.ab3{align-self:flex-start;white-space:nowrap}.ab3.ai{background:var(--ai-soft);color:var(--ai)}.ab3.rt{background:var(--rt-soft);color:var(--rt)}
.navh{display:flex;flex-direction:column;gap:2px;padding-top:16px}.navh small{font-size:11px;color:var(--faint);font-weight:400;padding-left:2px}
.srcbar3{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px}.srcbar3:empty{display:none}
.mapbar3{position:absolute;left:12px;top:64px;z-index:5;display:flex;gap:8px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:6px 8px;box-shadow:var(--sh-1)}.mapbar3:empty{display:none}
.hint3{display:flex;align-items:center;gap:12px;background:var(--surface-2);color:var(--ink-2);font-size:13px;border-radius:10px;padding:8px 12px;margin:14px 24px 0}.hint3[hidden]{display:none}
.hint3 button{border:0;background:none;font-size:16px;color:var(--dim);cursor:pointer;margin-left:auto}
.home3{max-width:980px;padding:28px 28px 40px}.home3 h1{font-size:26px;margin:0 0 6px}.home3 .lead{color:var(--dim);margin:0 0 22px}
.cards4{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin-bottom:22px}
.card4{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px 22px;display:flex;flex-direction:column;gap:12px}
.card4 .nums{display:flex;gap:22px;flex-wrap:wrap}.card4 .nums div{display:flex;flex-direction:column}.card4 .nums b{font-size:22px}.card4 .nums span{font-size:12px;color:var(--dim)}
.card4 .money{font-size:28px;font-weight:700;color:var(--lime-ink)}.card4 .act{margin-top:auto}
.gs3{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 22px}.gs3 h2{font-size:16px;margin:0 0 10px}
.gs3 a{display:flex;align-items:center;gap:12px;padding:9px 4px;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;font-size:14px}.gs3 a:last-of-type{border-bottom:0}
.gs3 .tk{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line-2);display:grid;place-items:center;font-size:12px;flex:none}
.gs3 a.done .tk{background:var(--lime-ink);border-color:var(--lime-ink);color:#fff}.gs3 a.done span.t{color:var(--dim);text-decoration:line-through}
.empty3{max-width:520px;margin:12vh auto 0;text-align:center;padding:0 24px}.empty3 h1{font-size:24px;margin:12px 0 8px}.empty3 p{color:var(--dim);margin:0 0 20px}
.vc .town3{color:var(--dim)}
body.full3 .side{display:none}body.full3 .shell{grid-template-columns:minmax(0,1fr)}body.full3 #rv{max-width:1100px;margin:0 auto}
.stage3{font-size:13.5px;color:var(--ink-2)}.um3{display:inline-block;font-size:13px}.um3 summary{cursor:pointer;color:var(--ink-2)}.um3 p{max-width:640px;font-size:12.5px;color:var(--dim)}.lnk3{color:var(--blue);text-decoration:none;font-weight:600}.lnk3:hover{text-decoration:underline}
.learn3{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 18px;margin:0 0 12px}
.learn3 h3{margin:0 0 6px;font-size:15px}.learn3 ul{margin:0;padding-left:18px;font-size:13px;color:var(--ink-2);line-height:1.6}.learn3 .acts{display:flex;flex-direction:column;gap:6px;margin-left:auto}
.dim3{font-size:12.5px;color:var(--dim);margin:6px 0 0}
.menu3{position:relative}.menu3 summary{list-style:none;cursor:pointer;padding:2px 8px;border-radius:6px;color:var(--dim)}.menu3 summary::-webkit-details-marker{display:none}
.menu3>div{position:absolute;right:0;top:100%;background:var(--card);border:1px solid var(--line-2);border-radius:8px;padding:8px 10px;box-shadow:var(--sh-2);white-space:nowrap;z-index:20}
.lm3{display:inline-block;margin-left:4px;font-size:11px;color:var(--rt);font-weight:700;cursor:help}
.main4{margin-bottom:18px;max-width:640px}.main4 .stage3{margin:0}
.steps3{list-style:none;padding:0;margin:0 0 16px;display:flex;gap:10px;flex-wrap:wrap;max-width:760px}
.steps3 li{flex:1;min-width:150px;display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--card)}
.steps3 li small{display:block;font-size:12px;color:var(--dim)}.steps3 .tk{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line-2);display:grid;place-items:center;font-size:12px;flex:none}
.steps3 li.cur{border-color:var(--moss-ink);box-shadow:0 0 0 1px var(--moss)}.steps3 li.done .tk{background:var(--lime-ink);border-color:var(--lime-ink);color:#fff}
.next3{margin-bottom:14px}.save3{font-size:14px;color:var(--ink-2)}.save3 b{color:var(--lime-ink)}
.home3{max-width:760px;margin:0 auto;padding:48px 28px 60px}.hm3 .hd3{color:var(--dim);font-size:14px;margin:0 0 6px}.hm3 h1{font-size:32px;margin:0 0 6px}
.hm3 .st3{font-size:16px;color:var(--ink-2);margin:0 0 26px}
.ab4{display:flex;gap:8px;background:var(--card);border:1px solid var(--line-2);border-radius:14px;padding:6px 6px 6px 16px;box-shadow:var(--sh-1)}
.ab4 input{flex:1;border:0;outline:0;font:inherit;font-size:16px;background:none;min-width:0;padding:10px 0}
.chips4{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 0}.chips4 button{border:1px solid var(--line-2);background:var(--card);border-radius:99px;padding:6px 12px;font:inherit;font-size:13px;color:var(--ink-2);cursor:pointer}
.chips4 button:hover{border-color:var(--ink-2)}
.fh3{font-size:13px;font-weight:600;color:var(--dim);text-transform:uppercase;letter-spacing:.04em;margin:40px 0 6px}
.feed3 .fr3{display:flex;align-items:center;gap:14px;padding:16px 2px;border-bottom:1px solid var(--line)}.feed3 .fr3:last-child{border-bottom:0}
.fi3{width:34px;height:34px;border-radius:10px;background:var(--surface-2);display:grid;place-items:center;color:var(--ink-2);flex:none}
.ft4{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.ft4 b{font-size:15px}.ft4 span{font-size:13px;color:var(--dim)}
.lnkb3{border:0;background:none;font:inherit;font-size:13.5px;cursor:pointer;white-space:nowrap}
.dot3{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--amber);margin-left:5px;vertical-align:1px;cursor:help}
.amb3{display:inline-flex;gap:4px;align-items:center;background:var(--amber-soft);color:var(--amber-ink);border-radius:8px;padding:4px 10px;font-size:13px;margin-right:8px}
.amb3 .lnk{color:var(--amber-ink);font-weight:600}
.dh em.hrs3{color:var(--dim);font-style:normal}.dh em.over3{color:var(--red);font-style:normal;font-weight:600}
.wxline3{font-size:13px;color:var(--ink-2);margin:0 0 10px}.wxline3 .lnk{font-size:13px}
.mlist3{display:flex;flex-direction:column;gap:6px;align-items:flex-start}.menu3 summary{font-size:13px;color:var(--ink-2);border:1px solid var(--line-2);border-radius:8px;padding:4px 10px}
.glance3{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:8px 0 6px}.glance3 button{border:0;background:none;text-align:left;font:inherit;cursor:pointer;padding:6px 4px;border-radius:8px}
.glance3 button:hover{background:var(--surface-2)}.glance3 .b{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden;margin:6px 0}.glance3 .b i{display:block;height:100%;background:var(--moss-2)}
.glance3 .b.over i{background:var(--red)}.glance3 small{font-size:12px;color:var(--dim)}
.nums3{display:flex;gap:28px;flex-wrap:wrap;margin:10px 0 0}.nums3 div{display:flex;flex-direction:column}.nums3 b{font-size:20px}.nums3 span{font-size:12px;color:var(--dim)}
.pipe3{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:13px;margin:6px 0}.pipe3 a{color:var(--ink-2);text-decoration:none;padding:4px 10px;border-radius:99px;border:1px solid var(--line)}
.pipe3 a.done{color:var(--lime-ink);border-color:#CDE7C9;background:var(--lime-soft)}.pipe3 a.next{border-color:var(--moss-ink);color:var(--moss-ink);font-weight:600}.pipe3 .ar{color:var(--faint)}
.print3 h2{margin:22px 0 4px;font-size:18px}.print3 h3{margin:10px 0 4px;font-size:14px}
@media print{.side,.noprint,.rvbar,.hint3{display:none!important}.shell{display:block}.main{overflow:visible}}
.ladder3{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 20px;margin-bottom:14px}
.ladder3 h2{font-size:16px;margin:0 0 10px}
.ladder3 .rg{display:grid;grid-template-columns:28px minmax(0,1.6fr) repeat(3,minmax(0,1fr));gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line);font-size:13.5px}
.ladder3 .rg:first-of-type{border-top:0}.ladder3 .n3{width:24px;height:24px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;font-size:12px;font-weight:700}
.ladder3 .sv{color:var(--lime-ink);font-weight:700}.ladder3 .dim{color:var(--dim)}.ladder3 details summary{cursor:pointer;color:var(--ink-2);font-size:13px;padding-top:8px}
/* ---------- Schedule: crew-day footer, drag and drop, pins */
#updsched[hidden]{display:none}
.summary.clamp3{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}
.src3{font-size:13.5px;color:var(--ink-2);margin:-4px 0 10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.src3 b{color:var(--ink)}
.aa3{color:#9b2f25;font-weight:600}.vc .aab3{display:inline-block;font-size:9.5px;font-weight:700;text-transform:uppercase;color:#9b2f25;background:var(--red-soft);border-radius:99px;padding:0 5px;margin-left:4px;vertical-align:1px}
.vc .x3{position:absolute;right:4px;top:3px;border:0;background:none;font-size:15px;line-height:1;color:var(--dim);cursor:pointer;padding:2px 4px}
.cal.ft3{padding-bottom:54px}
.dayft{position:absolute;left:8px;right:8px;bottom:6px;font-size:10.5px;color:var(--dim)}.dayft .t{display:block;line-height:1.35}
.dayft .fb{height:3px;border-radius:2px;background:var(--surface-2);margin-top:4px;overflow:hidden}.dayft .fb i{display:block;height:100%;background:var(--moss-2);border-radius:2px}
.dayft.over .t{color:var(--red);font-weight:600}.dayft.over .fb i{background:var(--red)}
#v-sched .vc[draggable="true"]{cursor:grab}
.vc.leaving{opacity:.35}.vc .lv{display:block;font-size:10.5px;color:var(--dim)}
.vc.pend{border:1.5px dashed var(--moss-2);background:var(--moss-soft)}.vc.pend.ovr{border-color:var(--red);background:var(--red-soft)}
.vc.pend .pn{display:block;font-size:10.5px;color:var(--moss-ink);white-space:normal}.vc.pend.ovr .pn{color:#9b2f25}
.vc .pin{position:absolute;right:6px;top:5px;color:var(--moss-ink);display:flex}
.vc .mvb{display:inline-block;font-size:9.5px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--lime-ink);background:var(--lime-soft);border-radius:99px;padding:0 5px;margin-left:4px;vertical-align:1px}
.cal.dz-ok{outline:2px solid var(--lime-ink);outline-offset:-2px;background:var(--lime-soft)}.cal.dz-bad{outline:2px solid var(--red);outline-offset:-2px;background:var(--red-soft)}.cal.dz-wait{outline:2px dashed var(--line-2);outline-offset:-2px}
.dragtip{position:fixed;z-index:1300;max-width:330px;background:var(--card);border:1px solid var(--line-2);border-radius:10px;box-shadow:var(--sh-2);padding:8px 11px;font-size:12.5px;line-height:1.45;pointer-events:none}
.dragtip .h{font-weight:700}.dragtip.ok .h{color:var(--lime-ink)}.dragtip.bad .h{color:var(--red)}.dragtip ul{margin:3px 0 2px;padding-left:16px}.dragtip .e{color:var(--ink-2)}
.vc.sel3,.cal.sel3{box-shadow:0 0 0 2px var(--blue)}
.s2-t .lnk{font-size:12.5px}
.ovr3 .rs{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.chgl3{position:absolute;z-index:30;top:100%;left:0;margin-top:6px;background:var(--card);border:1px solid var(--line-2);border-radius:10px;box-shadow:var(--sh-2);width:min(560px,90vw);max-height:360px;overflow:auto;padding:6px}
.chgl3 button{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1.5fr) minmax(0,1fr);gap:8px;width:100%;text-align:left;border:0;background:none;font:inherit;font-size:12.5px;padding:6px 8px;border-radius:6px;cursor:pointer;color:var(--ink)}
.chgl3 button:hover{background:var(--surface-2)}.chgl3 .w{color:var(--dim)}
.chip3{border:1px solid var(--line-2);background:var(--card);border-radius:99px;padding:4px 12px;font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.vc.flash3{animation:fl3 1.4s ease}@keyframes fl3{0%,60%{box-shadow:0 0 0 3px var(--blue)}100%{box-shadow:none}}
/* ---------- route review: Overview / Details (simplified) */
.tabs3{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 0 16px}
.tabs3 button{border:0;background:none;font:inherit;font-size:14px;font-weight:600;color:var(--dim);padding:8px 12px;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs3 button.on{color:var(--ink);border-bottom-color:var(--moss-ink)}
.hero3{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px 26px 26px;margin-bottom:14px;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:28px;align-items:center}
.hero3 h1{margin:0 0 16px;font-size:23px;line-height:1.25}
.bar3{margin-bottom:14px}.bar3 .lb{display:flex;justify-content:space-between;font-size:13px;color:var(--dim);margin-bottom:4px}.bar3 .lb b{color:var(--ink);font-size:15px}
.bar3 .tr{position:relative;height:14px;border-radius:7px;background:var(--surface-2)}.bar3 .tr i{display:block;height:100%;border-radius:7px;transition:width .6s ease}
.bar3 .mk{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink)}.bar3 .mkl{position:absolute;top:18px;transform:translateX(-50%);font-size:11px;color:var(--dim);white-space:nowrap}
.money3{text-align:right}.money3 .big{font-size:46px;font-weight:700;line-height:1;color:var(--lime-ink);font-variant-numeric:tabular-nums}
.money3 .per{font-size:14px;color:var(--ink-2);margin-top:4px}
.rec3{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 20px;margin:14px 0}
.rec3 .top{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.rec3 h2{margin:0;font-size:17px}.rec3 .sub{font-size:13px;color:var(--dim);margin-top:2px}
.rec3 .sp{flex:1}.rec3 .done{font-weight:600;color:var(--lime-ink)}
.cl3{margin-top:14px;border-top:1px solid var(--line)}
.cl3 label{display:grid;grid-template-columns:22px minmax(0,1.3fr) minmax(0,1.6fr) auto 28px;gap:10px;align-items:center;padding:8px 2px;border-bottom:1px solid var(--line);font-size:13.5px;cursor:pointer;color:var(--ink)}
.cl3 label .ft3{color:var(--dim);font-size:12.5px}.cl3 label .sv{color:var(--lime-ink);font-weight:600;font-size:12.5px;white-space:nowrap}
.cl3 label.ap{color:var(--dim)}.cl3 label.ap .sv{color:var(--dim);font-weight:400}
.cl3 .tot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 2px 2px;font-size:13.5px}.cl3 .tot .sp{flex:1}
.mapi3{border:0;background:none;padding:4px;border-radius:6px;color:var(--dim);cursor:pointer;display:grid;place-items:center}.mapi3:hover{background:var(--surface-2);color:var(--ink)}
.cl3 .undo3,.rec3 .undo3{border:0;background:none;padding:0;font:inherit;font-weight:600;color:var(--ink);text-decoration:underline;cursor:pointer}
.hero3 .acts3{display:flex;gap:12px;justify-content:flex-end;align-items:center;margin-top:12px}
.actlog3 div{display:flex;gap:10px;font-size:13px;padding:6px 0;border-bottom:1px solid var(--line)}.actlog3 time{color:var(--dim);min-width:86px}.actlog3 .u{color:var(--dim);text-decoration:line-through}
.allch3{margin-top:10px;font-size:13px}.allch3 summary{cursor:pointer;color:var(--ink-2);padding:4px 0}
.allch3 .row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1.6fr);gap:10px;padding:5px 2px;border-bottom:1px solid var(--line);font-size:12.5px;color:var(--ink-2)}
.notice3 h2{margin:18px 0 10px;font-size:16px}
.cards3{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.c3{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:12px 14px;text-align:left;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:6px;color:var(--ink)}
.c3:hover{border-color:var(--line-2);box-shadow:var(--sh-1)}
.c3 .ico{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:var(--surface-2);color:var(--ink-2)}
.c3 b{font-size:13.5px;line-height:1.3}.c3 .n{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}
.c3.good{background:linear-gradient(135deg,#F1FAEC,#fff);border-color:#CDE7C9}.c3.good .ico{background:var(--lime-soft);color:var(--lime-ink)}
.drw3 h3{margin:0;font-size:16px}.drw3 p{font-size:14px;line-height:1.5;color:var(--ink-2);margin:0 0 14px}.drw3 .n{font-size:26px;font-weight:700;margin:4px 0 10px}
.toast3{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:1200;background:var(--ink);color:#fff;border-radius:10px;padding:10px 14px;font-size:13.5px;display:flex;gap:14px;align-items:center;box-shadow:var(--sh-2)}
.toast3[hidden]{display:none}
.toast3 button{border:0;background:none;color:#9FE07A;font:inherit;font-weight:700;cursor:pointer}
.out3{display:block;font-size:11px;color:var(--faint);padding:2px 4px}
.details3 .box{margin-bottom:14px}
.rvtop .view3{display:inline-flex;align-items:center;gap:6px;margin-left:8px}.rvtop .view3 .lbl{font-size:12.5px;color:var(--dim)}
.sum3{font-size:14.5px;line-height:1.55;color:var(--ink-2);margin:-2px 2px 18px}.sum3 b{color:var(--ink)}.sum3 .howwrap{margin-left:6px}
.c3 .row1{display:flex;align-items:center;gap:8px}.dot{width:9px;height:9px;border-radius:50%;flex:none}
.dot.red{background:var(--red)}.dot.amber{background:var(--amber)}.dot.green{background:var(--lime-ink)}
.c3 .tk{font-size:12.5px;color:var(--ink-2);line-height:1.4}.c3 .go{margin-left:auto;color:var(--faint)}.c3:hover .go{color:var(--ink)}
.more3{border:1px dashed var(--line-2);background:none;border-radius:12px;font:inherit;font-size:13px;color:var(--ink-2);cursor:pointer;padding:12px}
.chev3{border:0;background:none;font:inherit;font-size:13px;font-weight:600;color:var(--ink-2);display:inline-flex;align-items:center;gap:4px;cursor:pointer;padding:6px 4px}
.chev3 svg{transition:transform .2s}.chev3[aria-expanded="true"] svg{transform:rotate(180deg)}
.rec3 .top .btn.primary{white-space:nowrap}
.cl3wrap{margin-top:12px;border-top:1px solid var(--line);max-height:430px;overflow:auto;position:relative}
.cl3wrap .selbar{display:flex;gap:12px;font-size:12.5px;color:var(--dim);padding:8px 2px;position:sticky;top:0;background:var(--card);z-index:1;border-bottom:1px solid var(--line)}
.cl3wrap .selbar button{border:0;background:none;padding:0;font:inherit;color:var(--ink-2);text-decoration:underline;cursor:pointer}
.cl3wrap .cl3{margin-top:0;border-top:0}
.foot3{position:sticky;bottom:0;background:var(--card);border-top:1px solid var(--line);padding:10px 2px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;z-index:1}
.typing3{display:inline-flex;gap:4px;padding:10px 12px;background:var(--surface-2);border-radius:12px;margin:4px 0}.typing3 i{width:6px;height:6px;border-radius:50%;background:var(--dim);animation:tp3 1s infinite}
.typing3 i:nth-child(2){animation-delay:.15s}.typing3 i:nth-child(3){animation-delay:.3s}@keyframes tp3{0%,80%,100%{opacity:.25}40%{opacity:1}}
.acts4{display:flex;gap:6px;flex-wrap:wrap;margin:-2px 0 10px}
/* ---------- Schedule comparison mode (opened from a route review) */
.cmpbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 10px}
.cmpstrip{display:flex;gap:14px;flex-wrap:wrap;align-items:center;background:var(--moss-soft);color:var(--moss-ink);border-radius:10px;padding:8px 14px;margin:0 0 10px;font-size:13.5px}
.cmpstrip b{font-weight:700}
.vc.in{border-color:#9CD18F}.vc.in::before{background:var(--lime-ink)!important;width:4px}
.vc .from{display:block;font-size:11px;color:var(--lime-ink);font-weight:600}
.vc.ghost{background:transparent;border-style:dashed;opacity:.6}.vc.ghost::before{background:var(--faint)!important}
.vc.ghost .to{display:block;font-size:11px;color:var(--dim)}
.vc .applied{font-size:10px;font-weight:700;color:var(--lime-ink);margin-left:4px}
.cal.over{background:var(--red-soft)}
.cal .fixed{position:absolute;right:6px;top:6px;font-size:10.5px;font-weight:700;color:var(--lime-ink);background:var(--lime-soft);border-radius:99px;padding:0 6px}
.cal .foot2{position:absolute;left:8px;right:8px;bottom:5px;font-size:10.5px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.better{color:var(--lime-ink);font-weight:600}.worse{color:var(--red);font-weight:600}
.dh .dd{display:block;font-size:11px;margin-top:3px;color:var(--dim)}
.crew .wd{display:block;font-size:11px;margin-top:2px}
.optag{display:inline-block;margin:3px 0 0;border:0;font:inherit;font-size:10px;font-weight:700;letter-spacing:.02em;padding:1px 6px;border-radius:5px;background:var(--blue-soft);color:var(--blue);cursor:pointer}
.optag:hover{background:var(--blue-soft)}
.cmpchanges .vc.same{display:none}
/* ---------- route review v3: verdict, opportunities + detail, savings tray, tabs */
.rv3{padding-bottom:0}
.rvtop{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.rvtop h1{margin:0;font-size:24px;line-height:1.1}.rvtop .meta{font-size:12.5px;color:var(--dim)}.rvtop .sp{flex:1}
.rvtop details{position:relative;font-size:13px}.rvtop summary{cursor:pointer;list-style:none;border:1px solid var(--line-2);border-radius:8px;padding:5px 10px;background:var(--card);font-weight:550;font-size:12.5px}
.rvtop details[open] .prevl{position:absolute;right:0;top:34px;z-index:40;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-2);padding:6px 12px;width:min(460px,80vw)}
.prevl a{color:var(--ink);text-decoration:none;display:flex;gap:10px;padding:7px 0;border-top:1px solid var(--line);font-size:12.5px}.prevl a:first-child{border-top:0}.prevl a span{color:var(--dim);margin-left:auto}.prevl a.cur{font-weight:600}
.vd{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 22px;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:center;margin-bottom:12px}
.vd .kick{font-size:12px;color:var(--dim)}
.vd h2{margin:6px 0 0;font-size:19px;line-height:1.35;font-weight:600;color:var(--ink)}
.vd h2 .big{display:block;font-size:40px;line-height:1.05;font-weight:700;color:var(--lime-ink);margin-bottom:4px;letter-spacing:-.01em}
.vd .also{font-size:13px;color:var(--dim);margin:6px 0 0}
.proof{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.pchip{display:inline-flex;align-items:baseline;gap:6px;border:1px solid var(--line);border-radius:8px;padding:5px 10px;font-size:12.5px;color:var(--dim);background:var(--card-2)}
.pchip b{font-size:14px;color:var(--ink);font-weight:700}.pchip .bad{color:var(--red)}.pchip .good{color:var(--lime-ink)}
.trust{display:inline-flex;align-items:center;gap:6px;margin-top:10px;border:0;background:none;padding:0;font:inherit;font-size:12.5px;color:var(--ink-2);cursor:pointer}
.trust i{font-style:normal;width:16px;height:16px;border-radius:50%;display:grid;place-items:center;font-size:10px;background:var(--lime-soft);color:var(--lime-ink)}
.trust i.n{background:var(--surface-2);color:var(--dim)}
.trust u{text-decoration:none;border-bottom:1px dotted var(--line-2)}
.meter .lb{display:flex;justify-content:space-between;font-size:12px;color:var(--dim);margin-bottom:6px}.meter .lb b{color:var(--ink);font-size:13px}
.mtr{position:relative;height:16px;border-radius:6px;background:var(--surface-2);overflow:hidden}
.mtr i{position:absolute;top:0;bottom:0;right:0;transition:width .35s ease}
.mtr .pot{border-left:2px dashed var(--lime-ink);background:transparent}
.mtr .ghost{background:repeating-linear-gradient(135deg,rgba(47,122,18,.28) 0 5px,rgba(47,122,18,.12) 5px 10px)}
.mtr .cap{background:var(--lime-ink)}
.meter .ml{display:flex;flex-direction:column;gap:3px;margin-top:8px;font-size:12px;color:var(--dim)}
.meter .ml span{display:flex;align-items:center;gap:6px}.meter .ml em{font-style:normal;margin-left:auto;color:var(--ink);font-weight:600}
.meter .ml i{width:10px;height:10px;border-radius:3px;flex:none}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:0 0 12px}
.tabs button{border:0;background:none;font:inherit;font-size:13.5px;font-weight:550;color:var(--dim);padding:8px 12px;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--moss-ink);font-weight:600}
.tabs button:hover{color:var(--ink)}
.work{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:12px;align-items:start}
.olist{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;position:sticky;top:8px}
.olist h3{margin:0;padding:10px 14px 6px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);display:flex;justify-content:space-between}
.olist h3 span{font-weight:500;letter-spacing:0;text-transform:none}
.olist .gx{padding:2px 14px 10px;font-size:12px;color:var(--dim)}
.orow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;width:100%;text-align:left;border:0;border-top:1px solid var(--line);background:none;padding:10px 14px;font:inherit;color:inherit;position:relative}
.orow:hover{background:var(--card-2)}.orow[aria-current="true"]{background:var(--moss-soft)}
.orow[aria-current="true"]::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--moss)}
.orow b{font-size:13.5px;font-weight:600;line-height:1.3}
.orow .v{font-size:14px;font-weight:700;color:var(--lime-ink);text-align:right;white-space:nowrap}
.orow .v.n{color:var(--faint);font-weight:500;font-size:12px}
.orow .m{grid-column:1/-1;display:flex;gap:8px;align-items:center;font-size:12px;color:var(--dim);flex-wrap:wrap}
.orow.dismissed b,.orow.dismissed .v{color:var(--faint)}
.stt{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:1px 7px;border-radius:99px;background:var(--surface-2);color:var(--dim)}
.stt.applied{background:var(--lime-soft);color:var(--lime-ink)}.stt.dismissed{color:var(--faint)}
.olist .foot{border-top:1px solid var(--line);padding:10px 14px;display:flex;flex-direction:column;gap:6px;align-items:flex-start;background:var(--card-2)}
.allrev{margin:10px 14px;padding:8px 10px;border-radius:8px;background:var(--lime-soft);color:var(--lime-ink);font-size:12.5px;font-weight:600}
.odet{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px;min-width:0}
.odet .hd{display:flex;gap:12px;align-items:flex-start}
.odet .hd .ico{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--moss-soft);color:var(--moss-ink);flex:none}
.odet h2{margin:0;font-size:17px;line-height:1.3}
.odet .why{margin:6px 0 0;font-size:13.5px;color:var(--ink-2)}
.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.odet .ev{font-size:12.5px;color:var(--dim);background:var(--paper);border-radius:8px;padding:8px 10px;margin-top:6px}
.imp3{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:14px 0 4px;padding:10px 12px;border-radius:10px;background:var(--card-2);border:1px solid #D6E9CF}
.imp3 b{font-size:22px;color:var(--lime-ink);font-weight:700}.imp3 span{font-size:13px;color:var(--ink-2)}.imp3 em{font-style:normal;font-size:11.5px;color:var(--faint);margin-left:auto}
.imp3.zero{background:var(--paper);border-color:var(--line)}.imp3.zero b{color:var(--faint)}
.impw{display:flex;gap:12px;align-items:center;margin:14px 0 4px}.impw .imp3{flex:1;margin:0;min-width:0}.impw>.btn{flex:none}
@media (max-width:1180px){.impw{flex-wrap:wrap}.impw .imp3{flex-basis:100%}}
.sh{display:flex;align-items:center;gap:8px;margin:14px 0 6px}.sh h4{margin:0;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}.sh .sp{flex:1}.sh span{font-size:12px;color:var(--dim)}
.mcal{position:relative;overflow:auto;max-height:280px;border:1px solid var(--line);border-radius:10px}
.mcal .g{display:grid;min-width:0}
.mcal .hdr{position:sticky;top:0;z-index:2;background:var(--card-2);border-bottom:1px solid var(--line);padding:6px 8px;font-size:12px;font-weight:600}
.mcal .cr{position:sticky;left:0;z-index:1;background:var(--card-2);border-bottom:1px solid var(--line);padding:6px 8px;display:flex;gap:6px;align-items:center;font-size:12px;font-weight:600;min-width:0}
.mcal .cr span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mcal .cr .ini{width:22px;height:22px;font-size:10px;border-radius:6px}
.mcal .c{border-left:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px 8px;font-size:11.5px;line-height:1.45;color:var(--ink-2)}
.mcal .c.off{background:repeating-linear-gradient(135deg,#FBFCFD 0 6px,#F3F5F7 6px 12px)}
.mcal .c.over{background:var(--red-soft)}
.mcal .c .ok{font-weight:700;color:var(--lime-ink)}
.mcal .bad{color:var(--red);font-weight:600}.mcal .good{color:var(--lime-ink);font-weight:600}
.mv{max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:10px}
.mv label{display:flex;gap:10px;align-items:center;padding:7px 10px;border-top:1px solid var(--line);font-size:13px;cursor:pointer}
.mv label:first-child{border-top:0}.mv label:hover{background:var(--card-2)}
.mv label .p{flex:1;min-width:0}.mv label .p b{font-weight:600}.mv label .p span{display:block;font-size:12px;color:var(--dim)}
.mv label.off .p{opacity:.5}
.tagd{font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:5px;background:var(--surface-2);color:var(--ink-2)}
.tagd.ok{background:var(--lime-soft);color:var(--lime-ink)}
.acts3{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.acts3 select.btn{padding-right:8px}
.tray{position:sticky;bottom:0;z-index:20;display:flex;gap:10px 12px;align-items:center;flex-wrap:wrap;background:var(--glass);border-top:1px solid var(--line);padding:10px 24px;margin:16px -24px 0;backdrop-filter:blur(4px);box-shadow:0 -6px 16px -12px rgba(16,24,40,.25)}
.tray .cap{display:flex;flex-direction:column;gap:3px}
.tray .cap div{font-size:13px;color:var(--dim)}.tray .cap b{font-size:17px;color:var(--lime-ink)}
.tray .pb{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden;width:120px}.tray .pbr{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--dim)}.tray .pb i{display:block;height:100%;background:var(--lime-ink);transition:width .4s}
.tray .cnt{font-size:13px;color:var(--ink-2)}.tray .cnt b{font-weight:700}
.tray .sp{flex:1}.tray .note3{font-size:12px;color:var(--dim);max-width:220px}.tray .note3:empty{display:none}
.actlog{position:absolute;bottom:52px;left:24px;z-index:30;width:min(420px,90vw);max-height:320px;overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-2);padding:8px 14px}
.actlog h4{margin:4px 0 6px;font-size:13px}.actlog div{display:flex;gap:10px;padding:6px 0;border-top:1px solid var(--line);font-size:12.5px}
.actlog div time{color:var(--faint);white-space:nowrap}.actlog div span{flex:1}.actlog div.undone span{text-decoration:line-through;color:var(--faint)}.actlog div em{font-style:normal;color:var(--lime-ink);font-weight:600;white-space:nowrap}
.empty3{padding:28px 18px;text-align:center;color:var(--dim);font-size:13.5px}.empty3 b{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}
.calf{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--moss-soft);color:var(--moss-ink);border-radius:10px;padding:8px 14px;margin:0 0 10px;font-size:13.5px}
.cal.dimc{opacity:.35}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.rvtop details:not([open]) .prevl{display:none}
@media (max-width:1180px){.vd{grid-template-columns:1fr}.work{grid-template-columns:minmax(250px,300px) minmax(0,1fr)}}
@media (max-width:1000px){.work{grid-template-columns:1fr}.olist{position:static}.olist [data-keep="olist"]{max-height:none!important}}
@media print{.tray,.tabs,.acts3,.rvtop details,.rvtop .btn,.mv input{display:none!important}.work{grid-template-columns:1fr}.olist{position:static}.mcal,.mv{max-height:none;overflow:visible}}
@media print{.actbar,.askp,.op .acts{display:none!important}}
@media print{.side,.s2-top,.rv .back,.ic .row,.offers,.assume,#v-sched,#v-ws,.drawer{display:none!important}
  .shell{display:block;height:auto}.main{overflow:visible}#v-review{display:block!important}.rv{padding:0}
  .ins{grid-template-columns:1fr 1fr}.ic,.cc,.box,.hero{break-inside:avoid}body{background:var(--card)}}
@media (max-width:1100px){.shell{grid-template-columns:200px minmax(0,1fr)}.s2{padding:14px 16px}}

/* ===================== components (v4): use these everywhere ===================== */
body{font-variant-numeric:tabular-nums}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:6px}
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:10px;padding:8px 16px;border:1px solid var(--line-2);background:var(--card);font:inherit;font-size:13.5px;font-weight:600;color:var(--ink);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s;white-space:nowrap;text-decoration:none}
.btn:hover{border-color:var(--ink-2);background:var(--card-2)}
.btn.primary{background:var(--moss);border-color:var(--moss-ink);color:#fff}.btn.primary:hover{background:var(--moss-2);border-color:var(--moss-2)}
.btn.ghost{border-color:transparent;background:none}.btn.ghost:hover{background:var(--surface-2)}
.btn.sm{padding:5px 11px;font-size:12.5px;border-radius:8px}
.btn:disabled{opacity:.5;cursor:default}
/* page header: title + one quiet context line left, one primary + "…" right */
.ph4{display:flex;align-items:flex-start;gap:16px;margin:0 0 12px}.ph4-l{flex:1;min-width:0}.ph4-l h1{margin:0;font-size:24px;line-height:1.2}
.ctx4{display:flex;gap:10px;align-items:center;flex-wrap:wrap;color:var(--dim);font-size:13px;margin-top:4px}.ctx4 .s2-stats{display:flex;gap:10px}.ctx4 .s2-stats span{color:var(--dim)}.ctx4 .s2-stats b{color:var(--ink)}
.ph4-r{display:flex;gap:8px;align-items:center}
.chip4{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:12.5px;font-weight:600;color:var(--moss-ink);background:var(--moss-soft);border:0;border-radius:999px;padding:4px 10px;cursor:pointer}.chip4:hover{filter:brightness(.97)}
.chip4.plain{color:var(--ink-2);background:var(--surface-2);cursor:default}
/* toolbar row */
.tb4{display:flex;align-items:center;gap:8px;margin:0 0 12px;flex-wrap:wrap}.tb4 .spacer{flex:1}
.wk4{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:10px;background:var(--card);padding:2px}
.wk4 button{border:0;background:none;width:28px;height:30px;border-radius:8px;color:var(--dim);cursor:pointer}.wk4 button:disabled{color:var(--line-2);cursor:default}.wk4 button:not(:disabled):hover{background:var(--surface-2)}
.wk4 span{font-size:13px;font-weight:600;padding:0 6px}
/* dropdown menu (details) */
.dd4{position:relative}.dd4>summary{list-style:none}.dd4>summary::-webkit-details-marker{display:none}
.dd4>.mlist4{position:absolute;top:calc(100% + 6px);left:0;z-index:40;min-width:240px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-2);padding:6px}
.dd4.right>.mlist4{left:auto;right:0}
.mlist4 button,.mlist4 a{display:flex;gap:10px;align-items:center;width:100%;text-align:left;border:0;background:none;font:inherit;font-size:13.5px;color:var(--ink);padding:8px 10px;border-radius:8px;cursor:pointer;text-decoration:none}
.mlist4 button:hover,.mlist4 a:hover{background:var(--surface-2)}.mlist4 .ck{width:16px;color:var(--moss-ink);font-weight:700}.mlist4 hr{border:0;border-top:1px solid var(--line);margin:6px 4px}
/* floating assistant pill */
.fab4{position:fixed;right:22px;bottom:22px;z-index:900;display:inline-flex;align-items:center;gap:8px;background:var(--moss);color:#fff;border:0;border-radius:999px;padding:12px 20px;font:inherit;font-size:14px;font-weight:600;box-shadow:var(--sh-2);cursor:pointer}
.fab4:hover{background:var(--moss-2)}.askp.on~.fab4,.fab4.hide{display:none}
/* cards, KPIs, mini bars */
.card5{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:var(--sh-1)}
.kpis5{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.kpi5{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.kpi5 b{display:block;font-size:22px;line-height:1.2}.kpi5 span{font-size:12px;color:var(--dim)}
.bars5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;align-items:end;height:150px;padding:8px 4px 0}
.bars5 button{border:0;background:none;font:inherit;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;cursor:pointer;border-radius:10px;padding:4px}
.bars5 button:hover{background:var(--surface-2)}.bars5 .col{flex:1;width:34px;background:var(--surface-2);border-radius:8px;position:relative;overflow:hidden;display:flex;align-items:flex-end}
.bars5 .col i{display:block;width:100%;background:var(--moss-2);border-radius:8px}.bars5 .col.over i{background:var(--red)}
.bars5 small{font-size:11.5px;color:var(--dim)}.bars5 b{font-size:12.5px}
/* stepper with a progress line */
.step5{display:flex;align-items:flex-start;gap:0;margin:6px 0 10px}.step5 a{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;text-decoration:none;color:var(--dim);font-size:12px;position:relative}
.step5 a::before{content:"";position:absolute;top:11px;left:-50%;right:50%;height:2px;background:var(--line-2)}.step5 a:first-child::before{display:none}
.step5 a.done::before,.step5 a.cur::before{background:var(--moss-2)}
.step5 .tk{position:relative;z-index:1;width:24px;height:24px;border-radius:50%;background:var(--card);border:2px solid var(--line-2);display:grid;place-items:center;font-size:11px;font-weight:700;color:var(--dim)}
.step5 a.done .tk{background:var(--moss-2);border-color:var(--moss-2);color:#fff}.step5 a.cur .tk{border-color:var(--moss-ink);color:var(--moss-ink);box-shadow:0 0 0 4px var(--moss-soft)}
.step5 a.cur{color:var(--ink);font-weight:600}.step5 b{font-size:12px;color:inherit;font-weight:inherit}
/* feed cards */
.feed5{display:flex;flex-direction:column;gap:10px}.fc5{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.it5{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none}.it5.g{background:var(--moss-soft);color:var(--moss-ink)}.it5.b{background:var(--blue-soft);color:var(--blue)}.it5.a{background:var(--amber-soft);color:var(--amber-ink)}.it5.r{background:var(--red-soft);color:var(--red)}.it5.n{background:var(--surface-2);color:var(--ink-2)}
.fc5 .ft4 b{font-size:14.5px}
/* weather card */
.wx5{display:flex;align-items:center;gap:12px}.wx5 .ic{width:40px;height:40px;border-radius:12px;background:var(--blue-soft);display:grid;place-items:center}.wx5 b{font-size:20px}.wx5 span{font-size:12.5px;color:var(--dim);display:block}
/* reports grid */
.rgrid5{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.rgrid5 .card5{display:flex;flex-direction:column;gap:10px}
.rgrid5 h3{margin:0;font-size:15px}.big5{font-size:30px;font-weight:700;color:var(--lime-ink);line-height:1.1}.mb5{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--dim)}
.mb5 .tr{height:8px;border-radius:4px;background:var(--surface-2)}.mb5 .tr i{display:block;height:100%;border-radius:4px}
.sev5{display:flex;gap:8px;flex-wrap:wrap}.sev5 span{font-size:12.5px;border-radius:999px;padding:3px 10px;font-weight:600}.sev5 .r{background:var(--red-soft);color:#9b2f25}.sev5 .a{background:var(--amber-soft);color:var(--amber-ink)}.sev5 .g{background:var(--moss-soft);color:var(--moss-ink)}
.prev5{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:11.5px;color:var(--dim);line-height:1.5;background:var(--card-2)}
.tbl5{width:100%;border-collapse:collapse;font-size:13px}.tbl5 th{text-align:left;color:var(--dim);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line)}.tbl5 td{padding:8px;border-bottom:1px solid var(--line)}
/* empty state + skeleton */
.empty3{max-width:520px;margin:12vh auto 0;text-align:center;padding:0 24px}.empty3 .ei{width:56px;height:56px;border-radius:16px;background:var(--surface-2);display:grid;place-items:center;margin:0 auto 6px;color:var(--ink-2)}
.skel5{background:linear-gradient(90deg,var(--surface-2),#F7F9FA,var(--surface-2));background-size:200% 100%;animation:sk5 1.2s infinite;border-radius:10px;min-height:14px}@keyframes sk5{to{background-position:-200% 0}}
/* map toolbar next to search */
.mapbar3{position:absolute;left:12px;top:64px;z-index:6;display:flex;gap:8px;align-items:center;background:transparent;border:0;box-shadow:none;padding:0}
.h5{font-size:13px;font-weight:600;color:var(--dim);text-transform:uppercase;letter-spacing:.04em;margin:28px 0 10px}
#sask,[data-mapask3]{display:none!important}   /* the floating pill is the one Ask assistant */

/* ---------- v6: one workflow (tabs, savings line, suggestion note, scope choice, savings empty state) */
.tabrow6{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 10px}
.tabs6 button{font-size:13px;padding:6px 12px}
.savl6{font-size:13px;color:var(--ink-2)}.savl6:empty{display:none}.savl6 b{color:var(--ink)}
.sugn6{display:flex;flex-direction:column;gap:8px;margin:0 0 10px}.sugn6:empty{display:none}
.sug6{display:flex;align-items:center;gap:10px;background:var(--amber-soft);border:1px solid #F1D9A6;border-radius:12px;padding:8px 10px 8px 12px;font-size:13.5px}
.sug6 .sp{flex:1}.sug6 .ic6{display:grid;place-items:center}
.chip6{align-self:flex-start;border:1px solid var(--line-2);background:var(--card);border-radius:999px;padding:4px 12px;font:inherit;font-size:12.5px;color:var(--ink-2);cursor:pointer}
.chip6:hover{border-color:var(--ink-2)}.chip6 u{text-decoration:none;color:var(--moss-ink);font-weight:600}
.tag6{display:inline-block;margin-right:5px;font-size:10px;font-weight:600;line-height:1;padding:2px 5px;border-radius:5px;background:var(--surface-2);color:var(--ink-2);vertical-align:1px;text-transform:none}
.vc.wk6{box-shadow:inset 0 0 0 1.5px #C9B98A}.vc.ev6 .tag6{background:var(--moss-soft);color:var(--moss-ink)}
.scope6{display:flex;flex-direction:column;gap:6px}
.scope6 label{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line-2);border-radius:10px;padding:8px 10px;cursor:pointer}
.scope6 label:has(input:checked){border-color:var(--moss-ink);background:var(--moss-soft)}
.scope6 b{display:block;font-size:13.5px}.scope6 small{display:block;color:var(--dim);font-size:12px}
.imp6{width:100%;font-size:12.5px}.imp6 td,.imp6 th{padding:4px 6px}
.how6{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 12px}.how6 div{background:var(--surface-2);border-radius:10px;padding:8px 10px}
.how6 b{display:block;font-size:18px}.how6 span{font-size:11.5px;color:var(--dim)}.how6 .bad6 b{color:var(--red)}
.calm6{text-align:center;color:var(--dim);font-size:14px}
.sv6{display:flex;align-items:center;gap:18px}.sv6>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.sv6 h3{margin:0;font-size:16px}
.se6{max-width:560px;margin:24px auto 0;text-align:center;padding:28px 28px 24px}.se6 h2{margin:10px 0 10px;font-size:20px}
.se6 .ei{width:56px;height:56px;border-radius:16px;background:var(--surface-2);display:grid;place-items:center;margin:0 auto;color:var(--moss-ink)}
.se6 ul{text-align:left;display:inline-block;margin:0 0 18px;padding-left:18px;color:var(--ink-2);font-size:14px;line-height:1.8}
.acts6{display:flex;gap:14px;align-items:center;justify-content:center;flex-wrap:wrap}
.tip6{position:relative;font-size:13px;color:var(--dim);text-decoration:underline dotted;cursor:help}
.tip6 [role=tooltip]{display:none;position:absolute;left:50%;top:calc(100% + 6px);transform:translateX(-50%);width:260px;background:var(--ink);color:#fff;font-size:12.5px;line-height:1.45;padding:8px 10px;border-radius:8px;text-align:left;z-index:20;text-decoration:none}
.tip6:hover [role=tooltip],.tip6:focus [role=tooltip]{display:block}
#reports3>.ph4{margin-bottom:4px}
.tbl5 tr.cur6 td{font-weight:600}
.engb6{display:flex;flex-direction:column;gap:6px;margin:0 0 10px}.engb6 .btn{justify-content:center}
.mapbar3{top:14px;left:calc(14px + min(320px,40%) + 10px)}
.mapbar3 .seg3{background:var(--card);box-shadow:var(--sh-1)}
#stats{display:none!important}
#eng .foot{padding:8px 0 0;font-size:11px}

/* ---------- v7: brand themes (fresh / forest / mint) and dark mode. Contrast checked (WCAG AA) for every pair. */
:root[data-theme=fresh]{--moss:#17803B;--moss-2:#126B31;--moss-soft:#E6F5E9;--moss-ink:#146F34;--paper:#F6F8F7;--card:#fff;--card-2:#FAFCFB;--surface-2:#EEF3F0;--lime-soft:#E9F7E4;--line:#E1E7E3}
:root[data-theme=forest]{--moss:#1f4a2a;--moss-2:#2f5a3a;--moss-soft:#E7F0E9;--moss-ink:#1f4a2a;--paper:#F3F5F2;--card:#fff;--card-2:#FAFBF9;--surface-2:#ECF0EB;--lime-soft:#EDF3EA}
:root[data-theme=mint]{--moss:#1B7350;--moss-2:#155F42;--moss-soft:#DDF2E7;--moss-ink:#1B7350;--paper:#EEF6F2;--card:#FAFDFB;--card-2:#F4FAF7;--surface-2:#E4F0EA;--line:#D9E7E0;--line-2:#C3D6CC;--lime-soft:#E2F4E8;--ink:#12201A;--dim:#566A61}
:root[data-mode=dark]{color-scheme:dark;
  --ink:#E6EDE9;--ink-2:#C5D0CA;--dim:#9DABA4;--faint:#748279;
  --paper:#0F1513;--card:#171F1C;--card-2:#1B2421;--line:#2A3531;--line-2:#3A4742;--surface-2:#222C28;--glass:rgba(23,31,28,.95);
  --moss:#1F7F3E;--moss-2:#26904A;--moss-soft:#1D3324;--moss-ink:#7DD992;
  --lime-ink:#8BD96B;--lime-soft:#1E3220;--amber-soft:#3A2E17;--amber-ink:#F0B45C;--red-soft:#3D201D;--blue-soft:#1A2940;--rt-soft:#1A2940;
  --sh-1:0 1px 2px rgba(0,0,0,.4),0 4px 12px -6px rgba(0,0,0,.5);--sh-2:0 2px 4px rgba(0,0,0,.4),0 16px 36px -14px rgba(0,0,0,.7)}
:root[data-mode=dark][data-theme=forest]{--moss:#2A6B3C;--moss-2:#317A46;--moss-soft:#1E2E23;--moss-ink:#9CCFA8;--paper:#0F1412;--card:#161D1A}
:root[data-mode=dark][data-theme=mint]{--moss:#1D7A57;--moss-2:#238A63;--moss-soft:#173129;--moss-ink:#86D9B4;--paper:#0E1614;--card:#15201D;--card-2:#192521;--surface-2:#1F2C28}
:root[data-mode=dark] .side .brand img{mix-blend-mode:normal;background:#fff;border-radius:8px;padding:3px 6px}
:root[data-mode=dark] .sug6{border-color:#5A4720}
:root[data-mode=dark] .dlg{background:rgba(0,0,0,.55)}
:root[data-mode=dark] .vc.wk6{box-shadow:inset 0 0 0 1.5px #7A6A3A}
:root[data-mode=dark] .tip6 [role=tooltip]{background:#E6EDE9;color:#121A21}
:root[data-mode=dark] input,:root[data-mode=dark] select,:root[data-mode=dark] textarea{background:var(--card-2);color:var(--ink);border-color:var(--line-2)}
:root[data-mode=dark] .mapmsg,:root[data-mode=dark] .gm-style .gm-style-iw-c{background:var(--card);color:var(--ink)}
.navh7{font-size:11.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;padding:14px 12px 4px}
.sfoot7{display:flex;align-items:center;gap:8px;padding:6px 8px 2px}.sfoot7 .eng{flex:1;padding:0}
.modeb7{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--card);display:grid;place-items:center;color:var(--ink-2);flex:none}
.modeb7:hover{border-color:var(--line-2)}
.eng select{width:100%;margin:4px 0 8px}
/* v7 components */
.side{color:var(--ink)}
.wxl7{display:flex;align-items:center;gap:8px}.wx7{flex:none;color:var(--amber)}.wx7.cloud{color:var(--dim)}.wx7.rain,.wx7.storm{color:var(--blue)}.wx7.wind{color:var(--ink-2)}
.feed7{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh-1);overflow:hidden}
.fr7{display:flex;align-items:center;gap:14px;padding:12px 16px}.fr7+.fr7{border-top:1px solid var(--line)}
.ic7{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none}
.ic7.weather{background:var(--blue-soft);color:var(--blue)}.ic7.changes{background:var(--moss-soft);color:var(--moss-ink)}
.ic7.data{background:var(--amber-soft);color:var(--amber-ink)}.ic7.room{background:var(--lime-soft);color:var(--lime-ink)}
.ft7{flex:1;min-width:0;display:flex;flex-direction:column}.ft7 b{font-size:14.5px}.ft7 span{font-size:12.5px;color:var(--dim)}
.lnk7{border:0;background:none;font:inherit;font-size:13.5px;font-weight:600;color:var(--moss-ink);padding:6px 4px;white-space:nowrap;cursor:pointer}.lnk7:hover{text-decoration:underline}
.btn.sm{padding:6px 12px;font-size:13px}
.ws.noroutes7 #rpanel,.ws.noroutes7 #daybar{display:none!important}
.mapempty7{inset:0;display:grid;place-items:center;background:color-mix(in srgb,var(--paper) 70%,transparent);z-index:600}.mapempty7[hidden]{display:none}
.mapempty7 .se6{margin:0}
.ye7{margin-top:8px}
.rgrid7{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}
.rep7{display:flex;flex-direction:column;gap:10px}.rep7 h3{margin:0;font-size:26px;line-height:1.15}.rep7 p{margin:0}
.k7{font-size:12px;font-weight:600;color:var(--dim);text-transform:uppercase;letter-spacing:.05em}
.lad7{display:flex;flex-direction:column;gap:6px;font-size:12.5px}.lad7>div{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) 52px;gap:8px;align-items:center}
.lad7 .tr{height:8px;border-radius:4px;background:var(--surface-2)}.lad7 .tr i{display:block;height:100%;border-radius:4px;background:var(--moss)}
.lad7>div:first-child .tr i{background:#2F6FD1}
.lad7 b{text-align:right;font-weight:600}
.ou7{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ou7>div{border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.ou7 .o{background:var(--amber-soft)}.ou7 .u{background:var(--blue-soft)}.ou7 b{font-size:16px}.ou7 span{font-size:12.5px;color:var(--ink-2)}
.vs7{margin-top:16px}.vs7 h2{margin:0 0 4px;font-size:18px}.vs7 h3{font-size:14px;margin:14px 0 6px}
.tiles7{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0}.tiles7>div{background:var(--surface-2);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column}
.tiles7 span{font-size:12px;color:var(--dim)}.tiles7 b{font-size:20px}.tiles7 small{font-size:12px;color:var(--dim)}
.two7{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.var7 td,.var7 th{padding:4px 6px;font-size:12.5px}.var7 small{color:var(--dim)}
.bar7{width:70px}.bar7 i{display:block;height:8px;border-radius:4px}.bar7 i.o{background:var(--amber)}.bar7 i.u{background:var(--blue)}
.hd7{display:flex;align-items:center;justify-content:space-between;gap:10px}
.lnk3.back7,.ph4-l>.lnk3{display:inline-block;font-size:13px;margin-bottom:4px}
.ph4-r{position:relative}
.ns7{position:absolute;right:28px;top:76px;z-index:900;width:360px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh-2);padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.ns7[hidden]{display:none}.s2{position:relative}
.nsh7{display:flex;justify-content:space-between;align-items:center}.nsh7 b{font-size:15px}
.x7{border:0;background:none;font-size:20px;line-height:1;color:var(--dim);cursor:pointer}
.nsf7{display:grid;grid-template-columns:1fr 1.4fr;gap:10px}.nsf7 label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--dim)}
.nsf7 input,.nsf7 select{border:1px solid var(--line-2);border-radius:8px;padding:6px 8px;background:var(--card);color:var(--ink);font-size:13.5px}
.ck7{display:flex;gap:8px;align-items:center;font-size:13.5px}
.nsr7{border-radius:10px;padding:10px 12px;background:var(--moss-soft)}.nsr7.bad{background:var(--red-soft)}.nsr7>b{display:block;font-size:16px;margin:2px 0}
.nsr7 ul{margin:4px 0 8px;padding-left:18px;font-size:13px}.bad7{color:var(--red)}
.price7{display:flex;flex-direction:column}.price7 b{font-size:15px}.price7 small{font-size:12px;color:var(--dim)}
.ns7n{font-size:12px;margin:0}
.vc.ns7card{border:2px dashed var(--moss);background:var(--moss-soft);cursor:grab}.vc.ns7card.bad{border-color:var(--red);background:var(--red-soft)}
.vc.ns7card .pr7{font-size:11.5px;color:var(--moss-ink);font-weight:600}
.nav[hidden]{display:none!important}
/* themes: distinct surfaces (same text contrast) */
.side{background:var(--side,var(--card))}
:root[data-theme=fresh]{--side:#fff;--paper:#F5F8F6;--lime-soft:#E3F5DA;--moss-soft:#E3F4E6}
:root[data-theme=fresh] .dh .fillb i{background:#3FA54F}
:root[data-theme=forest]{--side:#F3F6F1;--paper:#EEF1EC;--moss-soft:#DFE9E0;--lime-soft:#E4ECE2;--surface-2:#E7ECE5;--line:#DCE2D9}
:root[data-theme=forest] .dh .fillb i{background:#5E8A68}
:root[data-theme=mint]{--side:#EFF8F3;--paper:#E6F3EC;--card:#FCFEFD;--card-2:#F3FAF6;--moss-soft:#D3EEDF;--lime-soft:#D9F1E3;--surface-2:#DDEEE5;--line:#CFE4D8}
:root[data-theme=mint] .dh .fillb i{background:#2E9A6E}
:root[data-mode=dark]{--side:#131A17}
:root[data-mode=dark] .dh .fillb i{background:var(--moss-ink)}
/* dark mode always wins over a theme's light surfaces */
:root[data-mode=dark][data-theme]{--paper:#0F1513;--card:#171F1C;--card-2:#1B2421;--side:#131A17;--line:#2A3531;--line-2:#3A4742;--surface-2:#222C28;
  --ink:#E6EDE9;--ink-2:#C5D0CA;--dim:#9DABA4;--moss:#1F7F3E;--moss-2:#26904A;--moss-soft:#1D3324;--moss-ink:#7DD992;--lime-soft:#1E3220}
:root[data-mode=dark][data-theme=forest]{--moss:#2A6B3C;--moss-2:#317A46;--moss-soft:#1E2E23;--moss-ink:#9CCFA8;--paper:#0F1412;--card:#161D1A}
:root[data-mode=dark][data-theme=mint]{--moss:#1D7A57;--moss-2:#238A63;--moss-soft:#173129;--moss-ink:#86D9B4;--paper:#0E1614;--card:#15201D;--card-2:#192521;--surface-2:#1F2C28}
:root[data-mode=dark][data-theme] .dh .fillb i{background:var(--moss-ink)}
:root[data-mode=dark][data-theme]{--faint:#8C9991}
:root[data-mode=dark] .lnk3{color:var(--moss-ink)}
:root[data-mode=dark] .dayft.over .t,:root[data-mode=dark] .over3{color:#F2907F}
.navh7{color:var(--dim)}
:root[data-mode=dark] .lnk,:root[data-mode=dark] .howbtn{color:var(--moss-ink)}
.mt th{color:var(--dim)}
.side .foot,#eng .foot{color:var(--dim)}
.dayft .t{color:var(--ink-2)}
.eng .btn{color:var(--ink);background:var(--card)}
.nt7 *,.nt7 *::before,.nt7 *::after{transition:none!important}
:root:not([data-mode=dark]) .lnk3,:root:not([data-mode=dark]) .lnk,:root:not([data-mode=dark]) .howbtn{color:#2459B0}
:root:not([data-mode=dark]) .dayft.over .t{color:#B3372D}
/* ---------- v8: three more light palettes (contrast checked: buttons >= 5.0, text >= 5.0) */
:root[data-theme=sage]{--moss:#3D6A4A;--moss-2:#335C40;--moss-soft:#E1EAE3;--moss-ink:#2F5A3B;--paper:#EEF2EE;--card:#fff;--card-2:#F7F9F7;--side:#F4F7F4;--surface-2:#E6ECE7;--line:#D8E0DA;--line-2:#C4CEC7;--lime-soft:#E5EDE6;--dim:#5A6B60}
:root[data-theme=sage] .dh .fillb i{background:#6E9478}
:root[data-theme=lime]{--moss:#3F7D0F;--moss-2:#356B0C;--moss-soft:#EDF7DC;--moss-ink:#3A7210;--paper:#F7F9F4;--card:#fff;--card-2:#FBFCF8;--side:#fff;--surface-2:#F0F4E8;--lime-soft:#EEF8DF;--line:#E2E8D8}
:root[data-theme=lime] .dh .fillb i{background:#7CC520}
:root[data-theme=teal]{--moss:#0F766E;--moss-2:#0C6560;--moss-soft:#DCF2EE;--moss-ink:#0D6A63;--paper:#F2F8F7;--card:#fff;--card-2:#F8FCFB;--side:#F7FBFA;--surface-2:#E7F2F0;--line:#D7E7E4;--lime-soft:#DFF2EE;--dim:#56696A}
:root[data-theme=teal] .dh .fillb i{background:#2BA197}
/* quieter map: small stop dots, numbers only for the selected crew */
.pin .sdot{display:block;width:9px;height:9px;border-radius:50%;border:1.5px solid var(--card);box-shadow:0 0 0 .5px rgba(0,0,0,.3)}
.pin.stop .card{bottom:12px}.pin.stop:has(.num) .card{bottom:17px}
.pin.risk .dot,.pin.risk .num,.pin.risk .sdot{box-shadow:0 0 0 3px #F08A24}
.pin .card .rk8{display:block;color:#B4560B;font-size:11px;margin-top:2px;white-space:normal;max-width:240px}
:root[data-mode=dark] .pin .card .rk8{color:#F2A35E}
/* invite tab */
.tabs6 .inv8{border:0;background:none;font:inherit;font-size:13px;padding:6px 12px;border-radius:7px;color:var(--moss-ink);font-weight:600;cursor:pointer}
.tabs6 .inv8:hover{background:var(--card)}.tabs6 .inv8 span{color:var(--amber)}
/* weather layer */
.wxb8{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:5px;background:var(--glass);border:1px solid var(--line);border-radius:999px;padding:3px 9px 3px 7px;font-size:11.5px;box-shadow:var(--sh-1);white-space:nowrap;pointer-events:none}
.wxb8 b{font-weight:700}.wxb8 span{color:var(--dim)}.wxb8 em{font-style:normal;color:var(--ink-2);font-weight:600;margin-left:2px}
.wxb8.risk{border-color:#E07B2E}.wxb8.risk svg{color:#C8641E}.wxb8.watch{border-color:#D9A21F}.wxb8.watch svg{color:#B07E12}.wxb8.none svg{color:var(--moss-ink)}
.wxcard8{top:62px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-2);padding:8px 10px 8px 12px;max-width:min(620px,70%);z-index:700}
.wxcard8[hidden]{display:none}.wxcard8>div{display:flex;flex-direction:column;flex:1;min-width:0}.wxcard8 b{font-size:13.5px}.wxcard8 span{font-size:12px;color:var(--dim)}
.ic8{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:none}.ic8.r{background:#FDE8D6;color:#B4560B}.ic8.w{background:var(--amber-soft);color:var(--amber-ink)}.ic8.n{background:var(--moss-soft);color:var(--moss-ink)}
:root[data-mode=dark] .ic8.r{background:#3E2716;color:#F2A35E}
.wxleg8{top:52px;right:14px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--sh-1);padding:8px 10px;display:flex;flex-direction:column;gap:4px;font-size:12px;max-width:230px;z-index:650}
.wxleg8[hidden]{display:none}.wxleg8 span{display:flex;align-items:center;gap:7px;color:var(--ink-2)}.wxleg8 small{color:var(--dim);font-size:11px}
.wxleg8 .c{width:12px;height:12px;border-radius:50%;border:1.5px solid}.wxleg8 .c.none{background:rgba(95,167,119,.15);border-color:#5FA777}.wxleg8 .c.watch{background:rgba(217,162,31,.2);border-color:#D9A21F}.wxleg8 .c.risk{background:rgba(224,123,46,.22);border-color:#E07B2E}
.wxleg8 .ring{width:10px;height:10px;border-radius:50%;background:#9AA5B1;box-shadow:0 0 0 2.5px #F08A24}.wxleg8 .dash{width:16px;border-top:2.5px dashed #C8641E}
.ws.noroutes7 .wxleg8{top:52px}
.layers{flex-wrap:wrap}
.layers .wxleg8{position:static;flex-basis:100%;box-shadow:none;border:0;border-top:1px solid var(--line);border-radius:0;padding:8px 2px 2px;margin-top:4px;max-width:none;display:grid;grid-template-columns:1fr 1fr;gap:4px 12px}
.layers .wxleg8[hidden]{display:none}.layers .wxleg8 b,.layers .wxleg8 small{grid-column:1/-1}
.ws.wx8 .rpanel{top:150px;max-height:calc(100% - 240px)}
.layers{max-width:262px}
.layers .wxleg8{grid-template-columns:1fr 1fr;font-size:11.5px}
.wxcard8{left:14px;transform:none;top:62px;max-width:min(520px,calc(100% - 340px))}
.layers{max-width:300px}.layers .wxleg8 span{white-space:nowrap}
:root[data-mode=dark] .yardtag{background:#E6EDE9;color:#0F1513}
/* ---------- v9: settings, room popover */
.bcard.click9{cursor:pointer}.bcard.click9:hover{border-color:var(--line-2)}
.set9{display:grid;grid-template-columns:190px minmax(0,1fr);gap:16px;align-items:start}
.tabs9{display:flex;flex-direction:column;gap:2px}.tabs9 button{border:0;background:none;text-align:left;font:inherit;font-size:14px;padding:9px 12px;border-radius:9px;color:var(--ink-2);cursor:pointer}
.tabs9 button:hover{background:var(--surface-2)}.tabs9 button.on{background:var(--moss-soft);color:var(--moss-ink);font-weight:600}
.sbody9 h2{margin:0 0 14px;font-size:18px}.sbody9 .dim3{font-size:12.5px;margin:12px 0 0}
.fg9{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}
.fg9 label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--dim)}
.fg9 input,.nm9{border:1px solid var(--line-2);border-radius:9px;padding:8px 10px;font:inherit;font-size:14px;background:var(--card);color:var(--ink)}
.wd9{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:14px}.wd9>span{font-size:12.5px;color:var(--dim);margin-right:6px}
.wd9 label{border:1px solid var(--line-2);border-radius:8px;padding:5px 10px;font-size:13px;cursor:pointer;display:flex;gap:6px;align-items:center}
.wd9 label.on{background:var(--moss-soft);border-color:var(--moss);color:var(--moss-ink);font-weight:600}.wd9 input{accent-color:var(--moss)}
.sug9{display:flex;flex-wrap:wrap;gap:10px;align-items:center;background:var(--lime-soft);border-radius:10px;padding:10px 12px;margin:0 0 14px;font-size:13.5px}.sug9>span{flex:1;min-width:260px}
.crl9{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.cr9{display:grid;grid-template-columns:24px minmax(0,1fr) auto 36px 30px;gap:10px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:6px 8px 6px 10px}
.ix9{font-size:12px;color:var(--dim);text-align:right}
.st9{display:inline-flex;align-items:center;gap:6px;font-size:13px}.st9 span{color:var(--dim);min-width:46px}
.st9 button{width:28px;height:28px;border-radius:8px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);font-size:15px;cursor:pointer}.st9 button:disabled{opacity:.4;cursor:default}
.cr9 input[type=color]{width:32px;height:28px;border:1px solid var(--line-2);border-radius:7px;padding:2px;background:var(--card);cursor:pointer}
.lg9{display:flex;gap:10px}.lg9 label{border:1px solid var(--line-2);border-radius:10px;padding:10px 16px;cursor:pointer;font-size:14px;display:flex;gap:8px;align-items:center}
.lg9 label.on{border-color:var(--moss);background:var(--moss-soft);font-weight:600}
.sbar9{position:sticky;bottom:0;display:flex;gap:10px;align-items:center;margin-top:16px;padding:12px 16px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-2)}.sbar9 .sp{flex:1}
.lnk9{color:inherit;text-decoration:underline dotted;text-underline-offset:3px}.lnk9:hover{color:var(--moss-ink)}
.fr7{position:relative}
.pop9{position:absolute;right:16px;top:calc(100% - 6px);z-index:60;width:min(440px,90%);background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-2);padding:12px 14px}
.pop9 .x7{position:absolute;right:8px;top:6px}.pop9>b{display:block;font-size:14px;margin-bottom:8px}
.pop9 dl{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:0;font-size:13px}.pop9 dt{color:var(--dim)}.pop9 dd{margin:0;font-weight:600}
.pop9 dd.n9{grid-column:2;font-weight:400;color:var(--dim);font-size:12px;margin-bottom:4px}.pop9 p{margin:10px 0 0;font-size:12.5px}.pop9 a{color:var(--moss-ink)}
.feed7{overflow:visible}.feed7 .fr7:first-child{border-radius:14px 14px 0 0}.feed7 .fr7:last-child{border-radius:0 0 14px 14px}
.pop9{left:16px;right:16px;width:auto;max-width:460px;margin-left:auto}
.pop9 dl{grid-template-columns:minmax(110px,auto) 1fr}
.pop9 dl{display:block}.pop9 dt{margin-top:8px;font-size:12px}.pop9 dd.n9{margin:1px 0 0}
.cr9{display:flex;flex-wrap:wrap;gap:8px 10px}.cr9 .nm9{flex:1 1 180px;min-width:0}.cr9 .ix9{width:18px}
.sbar9{flex-wrap:wrap}.sbar9 #sstat9{flex:1 1 200px}
@media (max-width:980px){.set9{grid-template-columns:1fr}.tabs9{flex-direction:row;flex-wrap:wrap}.fg9{grid-template-columns:1fr}.sug9>span{min-width:0;flex-basis:100%}}
.ph4{flex-wrap:wrap}.ph4-l{min-width:220px}

/* ---------- Setup · Add properties (static/onboarding.js; layout from design/ "Add properties", app tokens) */
.ob{--ob-r:12px;--ob-red-ink:#B4362B;--ob-blue-ink:#2556A8;--ob-amber-ink:var(--amber-ink);--ob-ok-ink:var(--moss-ink);font-size:14px;color:var(--ink)}
:root[data-mode=dark] .ob{--ob-red-ink:#F2867B;--ob-blue-ink:#8DB6F5}
.ob-page{max-width:1180px;margin:0 auto;padding:18px 24px 40px}
.ob-tm .ob-page{max-width:1080px}
.ob-top{display:flex;align-items:center;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.ob-crumb{font-size:12.5px;color:var(--dim);font-weight:500;min-width:0;flex:1 1 200px}
.ob-topr{flex:1 1 120px;display:flex;justify-content:flex-end}
.ob h1{font-size:26px;letter-spacing:-.02em;margin:0 0 6px;font-weight:650;color:var(--ink);line-height:1.2}
.ob-sub{color:var(--dim);margin:0 0 24px;max-width:640px}
.ob-card{background:var(--card);border:1px solid var(--line);border-radius:var(--ob-r);box-shadow:var(--sh-1)}
.ob-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:10px;padding:9px 16px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);font-weight:550;text-decoration:none;white-space:nowrap;cursor:pointer}
.ob-btn:hover{background:var(--surface-2)}
.ob-btn.primary{background:var(--moss);border-color:var(--moss);color:#fff}
.ob-btn.primary:hover{background:var(--moss-2);border-color:var(--moss-2)}
.ob-btn.ghost{border-color:transparent;background:none}
.ob-btn.ghost:hover{background:var(--surface-2)}
.ob-btn.sm{padding:6px 11px;font-size:13px;border-radius:8px}
.ob-btn.wide{width:100%;margin-top:10px}
.ob-btn.primary.wide{margin-top:18px}
.ob-btn:disabled{opacity:.45;cursor:not-allowed}
.ob-linkbtn{border:0;background:none;padding:0;color:var(--moss-ink);font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.ob-a{color:var(--moss-ink);font-weight:600}
.ob-row{display:flex;align-items:center;gap:12px}
.ob-spacer{flex:1}
.ob-muted{color:var(--dim)} .ob-faint{color:var(--faint)}
.ob-mono{font-family:ui-monospace,"JetBrains Mono",Menlo,monospace;font-size:11.5px}
.ob .hidden{display:none!important}
/* stepper */
.ob-stepper{display:flex;gap:4px;flex-wrap:wrap}
.ob-step{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;border:0;background:none;color:var(--faint);font-size:13px;cursor:pointer}
.ob-step .n{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:600;border:1px solid var(--line-2)}
.ob-step.done{color:var(--dim)} .ob-step.done .n{background:var(--moss-soft);border-color:transparent;color:var(--moss-ink)}
.ob-step.cur{color:var(--ink);background:var(--surface-2);font-weight:600} .ob-step.cur .n{background:var(--moss);border-color:transparent;color:#fff}
.ob-step:disabled{cursor:default}
/* pills + callouts */
.ob-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap}
.ob-pill .dot{width:7px;height:7px;border-radius:50%;background:currentColor}
.ob-pill.ok{background:var(--moss-soft);color:var(--moss-ink)}
.ob-pill.need{background:var(--amber-soft);color:var(--amber-ink)}
.ob-pill.assigned{background:var(--blue-soft);color:var(--ob-blue-ink)}
.ob-pill.skip{background:var(--surface-2);color:var(--dim)}
.ob-pill.ask{background:var(--red-soft);color:var(--ob-red-ink)}
.ob-callout{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:10px;background:var(--red-soft);color:var(--ink);margin-top:10px;font-size:13px}
.ob-callout.info{background:var(--blue-soft)}
.ob-callout.ok{background:var(--moss-soft)}
.ob-callout>div:first-child:not(:last-child){flex:none;display:flex}
.ob-callout>div:last-child{flex:1;min-width:0}
.ob-callout .act{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
/* upload */
.ob-upload-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;align-items:start}
.ob-drop{border:1.5px dashed var(--line-2);border-radius:var(--ob-r);padding:44px 24px;text-align:center;background:var(--card);transition:border-color .15s,background .15s}
.ob-drop.over{border-color:var(--moss);background:var(--moss-soft)}
.ob-drop .ico{width:48px;height:48px;border-radius:12px;background:var(--moss-soft);color:var(--moss-ink);display:grid;place-items:center;margin:0 auto 14px}
.ob-drop h3{margin:0 0 4px;font-size:16px}
.ob-formats{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin:14px 0 18px}
.ob-fmt{font-size:11.5px;padding:2px 8px;border-radius:6px;background:var(--surface-2);color:var(--dim)}
.ob-tips{padding:20px}
.ob-tips h4{margin:0 0 12px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint)}
.ob-tip{display:flex;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.ob-tip:first-of-type{border-top:0}
.ob-tip .b{width:28px;height:28px;flex:none;border-radius:8px;background:var(--surface-2);display:grid;place-items:center;color:var(--dim)}
.ob-tip strong{display:block;font-weight:600}
.ob-tip span{color:var(--dim);font-size:13px}
.ob-progress{margin-top:20px;padding:18px 20px}
.ob-pl{display:flex;align-items:center;gap:12px;padding:8px 0;color:var(--faint);transition:color .2s}
.ob-pl.on,.ob-pl.run{color:var(--ink)} .ob-pl .c{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-2);display:grid;place-items:center;flex:none}
.ob-pl.on .c{border-color:var(--moss);background:var(--moss);color:#fff}
.ob-pl.run .c{border-color:var(--moss);border-top-color:transparent;animation:obspin .8s linear infinite}
.ob-pl em{font-style:normal;color:var(--dim);margin-left:auto;font-size:13px;text-align:right}
@keyframes obspin{to{transform:rotate(360deg)}}
.ob-spin{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid var(--moss);border-top-color:transparent;animation:obspin .8s linear infinite;vertical-align:-2px}
.ob-resume{margin-top:20px;padding:6px 0}
.ob-resume-h{display:flex;justify-content:space-between;align-items:baseline;padding:10px 18px 8px;font-size:13px}
.ob-rrow{display:flex;align-items:center;gap:8px;padding:10px 18px;border-top:1px solid var(--line)}
.ob-rrow .t{flex:1;min-width:0}.ob-rrow .t b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ob-rrow .t span{font-size:12.5px;color:var(--dim)}
.ob-jobbar{font-size:13px;color:var(--dim);margin:-12px 0 14px;min-height:0}
.ob-jobbar:empty{display:none}
/* review */
.ob-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
.ob-stat{padding:16px 18px}
.ob-stat b{display:block;font-size:24px;letter-spacing:-.02em;font-weight:650}
.ob-stat b.t-ok{color:var(--moss-ink)} .ob-stat b.t-need{color:var(--amber-ink)} .ob-stat b.t-ask{color:var(--ob-red-ink)}
.ob-stat span{color:var(--dim);font-size:13px}
.ob-maptable{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px}
.ob-mapchip{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:6px 10px;border-radius:8px;background:var(--card);border:1px solid var(--line);color:var(--ink);cursor:pointer}
.ob-mapchip:hover{border-color:var(--line-2);background:var(--surface-2)}
.ob-mapchip .arr{color:var(--faint)} .ob-mapchip b{font-weight:600}
.ob-mapchip.off b{color:var(--faint);font-weight:500}
.ob-mapchip.ai::after{content:"✦";color:var(--moss-ink);font-size:11px}
.ob-menu{position:absolute;z-index:80;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--sh-2);padding:6px;width:230px;max-height:340px;overflow:auto}
.ob-menu-h{font-size:12px;color:var(--dim);padding:6px 8px}
.ob-menu button{display:block;width:100%;text-align:left;border:0;background:none;padding:7px 8px;border-radius:7px;font-size:13px;color:var(--ink);cursor:pointer}
.ob-menu button:hover{background:var(--surface-2)} .ob-menu button.on{background:var(--moss-soft);color:var(--moss-ink);font-weight:600}
.ob-tablewrap{overflow-x:auto}
.ob-table{width:100%;border-collapse:collapse}
.ob-table th{text-align:left;font-size:12px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;padding:12px 16px;border-bottom:1px solid var(--line)}
.ob-table td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:top}
.ob-table tr:last-child td{border-bottom:0}
.ob-pname{font-weight:600}
.ob-svc{display:block;color:var(--dim);font-size:13px}
/* boundaries */
.ob-studio{display:grid;grid-template-columns:340px minmax(0,1fr);gap:16px;align-items:start}
.ob-plist{overflow:hidden;position:sticky;top:12px}
.ob-plist-head{padding:16px 16px 14px;border-bottom:1px solid var(--line)}
.ob-plist-items{max-height:520px;overflow:auto}
.ob-bar{height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden;margin:10px 0 6px}
.ob-bar i{display:block;height:100%;background:var(--moss);border-radius:99px;transition:width .5s ease}
.ob-pitem{display:flex;gap:12px;align-items:center;padding:12px 16px;border:0;border-bottom:1px solid var(--line);cursor:pointer;background:none;width:100%;text-align:left;color:var(--ink)}
.ob-pitem:hover{background:var(--surface-2)} .ob-pitem.sel{background:var(--moss-soft)} .ob-pitem:last-child{border-bottom:0}
.ob-sicon{width:26px;height:26px;border-radius:50%;flex:none;display:grid;place-items:center;font-size:13px;font-weight:700}
.ob-sicon.ok{background:var(--moss);color:#fff}
.ob-sicon.need{border:1.5px dashed var(--amber)}
.ob-sicon.ask{background:var(--red-soft);color:var(--ob-red-ink)}
.ob-sicon.assigned{background:var(--blue-soft);color:var(--ob-blue-ink)}
.ob-sicon.skip{background:var(--surface-2);color:var(--faint)}
.ob-pitem .t{min-width:0;flex:1}
.ob-pitem .t b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ob-pitem .t span{display:block;font-size:12.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ob-bulk{margin:12px 16px 16px;padding:12px;border-radius:10px;background:var(--surface-2);font-size:13px;display:flex;gap:10px;align-items:center}
.ob-panel{overflow:hidden}
.ob-panel-head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:flex-start}
.ob-panel-head h2{margin:0;font-size:18px;letter-spacing:-.01em}
.ob-panel-head .addr{color:var(--dim);font-size:13px}
.ob-ways{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:16px 20px;border-bottom:1px solid var(--line)}
.ob-way{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--card);text-align:left;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s}
.ob-way:hover{border-color:var(--line-2);background:var(--surface-2)}
.ob-way.on{border-color:var(--moss);background:var(--moss-soft)}
.ob-way b{display:flex;align-items:center;gap:8px;font-weight:600}
.ob-way span{display:block;color:var(--dim);font-size:12.5px;margin-top:2px}
.ob-linkbox{display:flex;gap:8px;padding:14px 20px;border-bottom:1px solid var(--line);align-items:center}
.ob-linkbox input{flex:1;min-width:0;border:1px solid var(--line-2);border-radius:10px;padding:9px 12px;background:var(--card);color:var(--ink);outline:none}
.ob-linkbox input:focus{border-color:var(--moss);box-shadow:0 0 0 3px var(--moss-soft)}
.ob-msg{padding:0 20px 14px;font-size:13px}
.ob-msg:empty{display:none}
.ob-msg .ob-callout{margin-top:0}
.ob-mapwrap{position:relative;background:#2b3326;height:520px}
.ob-map,.ob-gmap{position:absolute;inset:0}
.ob-mapmsg{position:absolute;inset:0;display:grid;place-items:center;color:#e8ece9;text-align:center;padding:24px;font-size:13px}
.ob-mapmsg b{display:block;font-size:15px;margin-bottom:4px}
.ob-pin{position:absolute;transform:translate(-50%,-100%);pointer-events:none}
.ob-pin svg{display:block}
.ob-tools{position:absolute;top:12px;left:12px;display:flex;flex-direction:column;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:4px;box-shadow:var(--sh-1);z-index:3}
.ob-tool{width:36px;height:36px;border-radius:8px;border:0;background:none;display:grid;place-items:center;color:var(--dim);position:relative;cursor:pointer}
.ob-tool:hover{background:var(--surface-2);color:var(--ink)}
.ob-tool.on{background:var(--moss);color:#fff}
.ob-tool[data-tip]:hover::after{content:attr(data-tip);position:absolute;left:44px;top:50%;transform:translateY(-50%);background:var(--ink);color:var(--card);font-size:12px;padding:4px 8px;border-radius:6px;white-space:nowrap;pointer-events:none}
.ob-tools .sep{height:1px;background:var(--line);margin:2px 4px}
.ob-hud{position:absolute;top:12px;right:12px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 14px;box-shadow:var(--sh-1);min-width:170px;z-index:3}
.ob-hud b{font-size:20px;letter-spacing:-.02em;font-weight:650;display:block}
.ob-hud span{font-size:12px;color:var(--dim)}
.ob-hint{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);background:rgba(20,24,21,.82);color:#f1f3ef;font-size:12.5px;padding:7px 12px;border-radius:8px;white-space:nowrap;pointer-events:none;z-index:3;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis}
.ob-hint:empty{display:none}
.ob-loading{position:absolute;inset:0;display:none;place-items:center;background:rgba(20,24,21,.35);z-index:4}
.ob-loading.on{display:grid}
.ob-loading .box{background:var(--card);padding:14px 18px;border-radius:10px;display:flex;gap:10px;align-items:center;box-shadow:var(--sh-1)}
.ob-loading .ob-spin{width:16px;height:16px}
.ob-panel-foot{display:flex;gap:10px;align-items:center;padding:14px 20px;border-top:1px solid var(--line);flex-wrap:wrap}
.ob-legend{display:flex;gap:14px;font-size:12px;color:var(--dim);flex-wrap:wrap}
.ob-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
/* modal */
.ob-scrim{position:fixed;inset:0;background:rgba(15,18,16,.45);display:none;place-items:center;z-index:90;padding:16px}
.ob-scrim.on{display:grid}
.ob-modal{width:min(560px,100%);background:var(--card);color:var(--ink);border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.25);overflow:hidden}
.ob-modal-h{padding:18px 20px 6px}
.ob-modal-h h3{margin:0;font-size:17px}
.ob-modal-b{padding:8px 20px 16px}
.ob-scroll{max-height:56vh;overflow:auto}
.ob-modal-f{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;align-items:center;gap:8px;flex-wrap:wrap}
.ob-match{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);cursor:pointer}
.ob-match:last-child{border-bottom:0}
.ob-match .from{flex:1;min-width:0}
.ob-match .from b{display:block;font-weight:600}
.ob-match .from span{font-size:12.5px;color:var(--dim)}
.ob-conf{font-size:12px;color:var(--moss-ink);font-weight:600;white-space:nowrap}
.ob-conf.low{color:var(--amber-ink)}
.ob-field{display:block;margin:10px 0}
.ob-field span{display:block;font-size:12.5px;color:var(--dim);margin-bottom:5px}
.ob-field input,.ob-field textarea{width:100%;border:1px solid var(--line-2);border-radius:10px;padding:9px 12px;background:var(--card);outline:none;font:inherit;color:inherit}
.ob-field textarea{min-height:72px;resize:vertical}
.ob-check{width:18px;height:18px;accent-color:var(--moss);flex:none}
/* send */
.ob-sgrid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
.ob-bignum{font-size:34px;font-weight:650;letter-spacing:-.02em;margin:2px 0}
.ob-bignum span{font-size:15px;color:var(--dim);font-weight:500}
.ob-hr{height:1px;background:var(--line);margin:16px 0}
.ob-sumline{display:flex;justify-content:space-between;font-size:13px;color:var(--dim);padding:2px 0}.ob-sumline b{color:var(--ink)}
.ob-toast{position:fixed;bottom:20px;right:20px;transform:translateY(10px);opacity:0;background:var(--ink);color:var(--card);padding:10px 16px;border-radius:10px;font-size:13px;transition:all .25s;z-index:95;pointer-events:none;max-width:calc(100vw - 40px)}
.ob-toast.on{opacity:1;transform:translateY(0)}
/* teammate page */
.ob-tm{min-height:100vh;background:var(--paper)}
.ob-tmhead{padding:4px 0 18px}
.ob-tmlogo{height:30px;display:block}
@media (max-width:980px){.ob-upload-grid,.ob-studio,.ob-sgrid{grid-template-columns:1fr}.ob-summary{grid-template-columns:repeat(2,1fr)}.ob-plist{position:static}.ob-plist-items{max-height:260px}}
@media (max-width:600px){.ob-page{padding:14px 16px 32px}.ob-ways{grid-template-columns:1fr}.ob-mapwrap{height:420px}.ob-top{gap:8px}.ob-stepper .lbl{display:none}.ob-step.cur .lbl{display:inline}}
body:has(#v-setup.on) #fab4{display:none}   /* the Schedule assistant has no place on the standalone Setup pages */
/* Add properties: sorting, filters, area selection, check mode */
.ob-filters{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.ob-fchip{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:5px 12px;font-size:13px;cursor:pointer}
.ob-fchip b{font-weight:650;margin-left:2px;color:var(--dim)}
.ob-fchip:hover{background:var(--surface-2)}
.ob-fchip.on{background:var(--moss);border-color:var(--moss);color:#fff}.ob-fchip.on b{color:#fff}
.ob-pill.bad{background:var(--red-soft);color:var(--ob-red-ink)}
.ob-pill.check{background:var(--blue-soft);color:var(--ob-blue-ink)}
.ob-sicon.bad{background:var(--red-soft);color:var(--ob-red-ink)}
.ob-sicon.auto{background:var(--blue-soft);color:var(--ob-blue-ink)}
.ob-lgroup{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px 16px 6px;font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);background:var(--card-2);border-bottom:1px solid var(--line)}
.ob-lgroup .ob-linkbtn{text-transform:none;letter-spacing:0;font-size:12.5px}
.ob-choose{display:block}
.ob-mini{position:relative;height:190px;border-radius:8px;overflow:hidden;margin:10px 0 6px;background:#2b3326;border:1px solid var(--line)}
.ob-minimap{position:absolute;inset:0}
.ob-mini-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--dim)}
.ob-mini-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.ob-mini-legend i.best{background:#f2b544}.ob-mini-legend i.alt{background:#4aa3ff}.ob-mini-legend i.adr{background:#e2584a;border-radius:50%}
.ob-maplabel{position:absolute;transform:translate(-50%,-50%);background:rgba(20,24,21,.82);color:#fff;font-size:11.5px;font-weight:650;padding:3px 7px;border-radius:6px;white-space:nowrap;pointer-events:none;line-height:1.25;text-align:center}
.ob-maplabel span{display:block;font-weight:500;font-size:10.5px;opacity:.85}
.ob-maplabel.best{background:#f2b544;color:#1b1406}.ob-maplabel.alt{background:#2f6fd1}.ob-maplabel.ex{background:#b4362b}
.ob-checkbar{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--dim);margin-bottom:6px}
.ob-checkbar b{color:var(--ink)}.ob-checkbar .ob-bar{flex:1;max-width:180px;margin:0}
.ob-maplabel.best,.ob-maplabel.alt{transform:translate(-50%,calc(-100% - 14px))}   /* letters sit above their areas, not on them */
/* Add properties: traced from site plans */
.ob-pill.traced{background:var(--amber-soft);color:var(--amber-ink)}
.ob-sicon.traced{background:var(--amber-soft);color:var(--amber-ink)}.ob-sicon.traced svg{width:13px;height:13px}
.ob-tracebar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:12px 20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--card-2)}
.ob-seg{display:inline-flex;border:1px solid var(--line-2);border-radius:9px;overflow:hidden}
.ob-seg button{display:inline-flex;align-items:center;gap:6px;border:0;background:var(--card);color:var(--ink);padding:6px 10px;font-size:12.5px;cursor:pointer;border-right:1px solid var(--line)}
.ob-seg button:last-child{border-right:0}.ob-seg button svg{width:14px;height:14px}
.ob-seg button.on{background:var(--moss);color:#fff}
.ob-sl{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--dim)}
.ob-sl input{width:150px;accent-color:var(--moss)}
.ob-sl input#ob-op{width:110px}
.ob-planimg{position:absolute;left:0;top:0;transform-origin:0 0;pointer-events:none;max-width:none;image-rendering:auto}
.ob-tracenote{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:13px;color:var(--dim);margin:-6px 0 12px}
.ob-tracenote b{color:var(--ink)}
/* ---------- v10: selectable ladder steps and the step panel */
.ladder3 .rg.sel10{cursor:pointer;border-radius:10px;transition:background .12s}.ladder3 .rg.sel10:hover{background:var(--surface-2)}
.ladder3 .rg.sel10.on{background:var(--moss-soft);box-shadow:inset 3px 0 0 var(--moss)}.ladder3 .rg.sel10:focus-visible{outline:2px solid var(--blue)}
.panel10{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh-1);padding:14px 16px;margin:-6px 0 18px}
.ph10{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:10px}.ph10 h2{margin:2px 0;font-size:17px}.ph10 .dim3{font-size:12.5px}
.ol10 details{border-top:1px solid var(--line);padding:6px 0}.ol10 summary{display:flex;gap:10px;align-items:center;cursor:pointer;font-size:13.5px}.ol10 summary b{flex:1;font-weight:600}
.sv10{color:var(--moss-ink);font-size:12.5px;font-weight:600}
.tag10{display:inline-block;font-size:11px;font-weight:600;padding:2px 7px;border-radius:999px;background:var(--surface-2);color:var(--ink-2)}
.tag10.ord{background:var(--blue-soft);color:var(--blue)}.tag10.day{background:var(--amber-soft);color:var(--amber-ink)}.tag10.prev{background:var(--surface-2);color:var(--ink-2)}
.seq10{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:12.5px;padding:6px 0 4px 4px}.seq10 ol{margin:4px 0 0;padding-left:18px}
.ord10{margin:0 0 8px}.ord10>summary{cursor:pointer;font-size:13.5px;font-weight:600}.h10{font-size:14px;margin:12px 0 6px}
.cl10{display:flex;flex-direction:column;max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:10px}
.cl10>div{display:flex;gap:10px;align-items:center;padding:6px 10px;font-size:13px}.cl10>div+div{border-top:1px solid var(--line)}.cl10>div>span:first-child{flex:1;font-weight:600}
.cl10 .dc10{background:var(--amber-soft)}.pv10{font-size:13px;margin:0 0 8px}.ok10{font-size:13px;color:var(--moss-ink);font-weight:600}
.mvb.ordb10{background:var(--blue-soft);color:var(--blue)}
:root:not([data-mode=dark]) .tag10.ord,:root:not([data-mode=dark]) .mvb.ordb10{color:#2459B0}
:root[data-mode=dark] .tag10.ord,:root[data-mode=dark] .mvb.ordb10{color:#9CC0FF}
.vc b .mvb:first-child{margin:0 4px 0 0}

/* ---------- Property panel (static/property.js; design/ openProperty / renderPropOps / planPanel).
   Left column: details or the assistant conversation. Main: tabs + replay player, map above, full-width timeline below. */
body.pp-open .ov.search,body.pp-open #fab4{display:none!important}
.pp-scrim{position:fixed;inset:0;background:rgba(15,18,16,.55);z-index:1150;display:grid;justify-items:center;align-items:start;padding:16px;overflow:auto}
.pp{width:min(1320px,100%);height:calc(100vh - 32px);background:var(--card);color:var(--ink);border-radius:16px;box-shadow:0 24px 70px rgba(0,0,0,.3);font-size:14px;display:flex;flex-direction:column;overflow:hidden}
.pp>#pp-body{flex:1;min-height:0;display:flex;flex-direction:column}
.pp-loading{padding:40px;color:var(--dim);display:flex;gap:10px;align-items:center}
.pp-cols{flex:1;min-height:0;display:grid;grid-template-columns:320px minmax(0,1fr)}
/* left column */
.pp-l{display:flex;flex-direction:column;padding:16px;border-right:1px solid var(--line);background:var(--card-2);min-width:0;min-height:0;overflow:auto}
.pp-l.convo{overflow:hidden}
.pp-h{display:flex;gap:12px;align-items:flex-start}
.pp-hn{min-width:0;flex:1}
.pp-h h2{margin:0;font-size:18px;letter-spacing:-.01em;line-height:1.25}
.pp-a{color:var(--dim);font-size:12.5px;margin-top:2px}
.pp-thumb{width:52px;height:52px;flex:none;border-radius:10px;background:var(--card);border:1px solid var(--line);display:grid;place-items:center;overflow:hidden}
.pp-acts-row{display:flex;gap:6px;margin-top:12px}.pp-acts-row .ob-btn{flex:1;justify-content:center}
.pp-acts-row .pp-askbtn{flex:none;width:34px;padding:0;color:var(--moss-ink)}.pp-askbtn.on{background:var(--moss-soft);border-color:var(--moss)}
.pp-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}
.pp-mono{font-family:ui-monospace,Menlo,monospace;font-size:11.5px;color:var(--dim)}
.pp-faint{color:var(--faint);font-size:12.5px}
.pp-st{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:650;padding:2px 8px;border-radius:999px;white-space:nowrap}
.pp-st.ok{background:var(--moss-soft);color:var(--moss-ink)}
.pp-st.off{background:var(--surface-2);color:var(--dim)}
.pp-st.none{background:var(--amber-soft);color:var(--amber-ink)}
.pp-st.auto{background:var(--blue-soft);color:var(--ob-blue-ink,#2556A8)}
:root[data-mode=dark] .pp-st.auto{color:#8DB6F5}
.pp-sect{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--faint);margin:16px 0 8px}
.pp-week{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border-radius:10px;background:var(--card);border:1px solid var(--line);font-size:12.5px;color:var(--ink-2)}
.pp-week em{font-style:normal;color:var(--dim)}
.pp-inl{display:flex;align-items:center;gap:8px;margin-top:14px;border:1px solid var(--line-2);border-radius:10px;padding:7px 10px;background:var(--card)}
.pp-inl:focus-within{border-color:var(--moss)}
.pp-inl-ic{color:var(--moss-ink);display:grid}
.pp-inl input{flex:1;min-width:0;border:0;outline:0;background:none;font-size:13px;color:var(--ink)}
.pp-chipsq{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.pp-chipsq:empty{display:none}
.pp-sq{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:4px 10px;font-size:12px;color:var(--ink-2);cursor:pointer;text-align:left}.pp-sq:hover{border-color:var(--moss)}
.pp-plist{display:flex;flex-direction:column;gap:6px}
.pp-pi{display:flex;gap:10px;align-items:center;text-align:left;border:1px solid var(--line);background:var(--card);border-radius:10px;padding:9px 10px;cursor:pointer;color:var(--ink);width:100%}
.pp-pi:hover{border-color:var(--line-2)}.pp-pi.on{border-color:var(--moss);background:var(--moss-soft)}
.pp-pi.off{opacity:.6}
.pp-ic{width:28px;height:28px;flex:none;border-radius:8px;background:var(--surface-2);display:grid;place-items:center;color:var(--dim)}
.pp-pt{flex:1;min-width:0}.pp-pt b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pp-pt span{font-size:12px;color:var(--dim)}
.pp-badges{display:flex;flex-direction:column;gap:3px;align-items:flex-end}
.pp-empty{padding:28px 10px;text-align:center;color:var(--dim)}.pp-empty h3{margin:0 0 6px;color:var(--ink);font-size:16px}.pp-empty p{margin:0 auto;max-width:420px;font-size:13px}
.pp-empty.sm{padding:12px;text-align:left;border:1px dashed var(--line-2);border-radius:10px;display:flex;flex-direction:column;gap:2px;font-size:12.5px}.pp-empty.sm b{color:var(--ink)}
.pp-empty.off{opacity:.75}
/* conversation (left column) */
.pp-convo{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.pp-convo-top{display:flex;align-items:center;gap:8px}
.pp-ctxw{position:relative;min-width:0}
.pp-ctx{display:inline-flex;align-items:center;max-width:100%;font-size:12px;font-weight:600;background:var(--surface-2);color:var(--ink-2);border-radius:999px}
.pp-ctxpick{display:inline-flex;align-items:center;gap:4px;border:0;background:none;color:inherit;font:inherit;padding:4px 6px 4px 10px;cursor:pointer;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp-ctxx{border:0;background:none;color:var(--dim);cursor:pointer;font-size:15px;line-height:1;padding:2px 8px 2px 2px}.pp-ctxx:hover{color:var(--ink)}
.pp-ctxmenu{position:absolute;z-index:20;top:calc(100% + 4px);left:0;width:260px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--sh-2);padding:4px;max-height:300px;overflow:auto}
.pp-ctxmenu button{display:block;width:100%;text-align:left;border:0;background:none;padding:7px 9px;border-radius:7px;cursor:pointer;color:var(--ink)}
.pp-ctxmenu button:hover{background:var(--surface-2)}.pp-ctxmenu button[aria-selected=true]{background:var(--moss-soft)}
.pp-ctxmenu button.off{opacity:.6}.pp-ctxmenu b{display:block;font-size:13px}.pp-ctxmenu span{font-size:11.5px;color:var(--dim)}
.pp-thread{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:8px;padding-right:2px}
.pp-msg{font-size:13px;line-height:1.45;padding:8px 11px;border-radius:12px;max-width:94%}
.pp-msg.assistant{background:var(--card);border:1px solid var(--line);align-self:flex-start;color:var(--ink-2)}
.pp-msg.user{background:var(--moss-soft);color:var(--moss-ink);align-self:flex-end}
.pp-fact{font-weight:650;color:var(--ink)}
.pp-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}
.pp-est{display:inline-block;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:10px;background:var(--amber-soft);color:var(--amber-ink)}
.pp-convo .pp-chipsq{margin:0}
.pp-composer{display:flex;align-items:center;gap:8px;border:1px solid var(--line-2);border-radius:12px;padding:5px 5px 5px 10px;background:var(--card);flex:none}
.pp-composer:focus-within{border-color:var(--moss)}
.pp-composer input{flex:1;min-width:0;border:0;outline:0;background:none;font-size:13.5px;color:var(--ink)}
/* main area */
.pp-m{display:flex;flex-direction:column;min-width:0;min-height:0;padding:12px 16px 14px}
.pp-top{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex:none;min-width:0}
.pp-seg{display:inline-flex;background:var(--surface-2);border-radius:10px;padding:3px;flex:none}
.pp-seg button{border:0;background:none;padding:6px 14px;border-radius:8px;font-size:13px;font-weight:550;color:var(--dim);cursor:pointer}
.pp-seg button.on{background:var(--card);color:var(--ink);box-shadow:var(--sh-1)}
.pp-x{border:0;background:none;color:var(--dim);cursor:pointer;width:32px;height:32px;border-radius:8px;display:grid;place-items:center;flex:none}.pp-x:hover{background:var(--surface-2);color:var(--ink)}
.pp-player{display:flex;align-items:center;gap:8px;flex:1 1 320px;min-width:0;max-width:440px;padding:3px 6px 3px 3px;border:1px solid var(--line);border-radius:999px}
.pp-play{width:28px;height:28px;border-radius:50%;border:0;background:var(--moss);color:#fff;display:grid;place-items:center;cursor:pointer;flex:none}
.pp-player input[type=range]{flex:1;min-width:50px;accent-color:var(--moss)}
.pp-clockt{font-size:12px;font-variant-numeric:tabular-nums;color:var(--ink-2);min-width:56px}
.pp-speed{display:inline-flex;background:var(--surface-2);border-radius:999px;padding:2px;flex:none}
.pp-speed button{border:0;background:none;font-size:11.5px;padding:3px 7px;border-radius:999px;color:var(--dim);cursor:pointer}
.pp-speed button.on{background:var(--card);color:var(--ink);box-shadow:var(--sh-1)}
.pp-searchtop{position:relative;width:220px;flex:0 1 220px;min-width:120px}
.pp-search{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:9px;padding:6px 9px;background:var(--card);color:var(--dim);margin:0 0 8px}
.pp-searchtop .pp-search{margin:0}
.pp-search input{border:0;outline:0;background:none;flex:1;min-width:0;font-size:13px;color:var(--ink)}
.pp-search:focus-within{border-color:var(--moss)}
.pp-res{position:absolute;z-index:60;left:10px;right:10px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--sh-2);max-height:340px;overflow:auto}
.pp-searchtop .pp-res{left:auto;right:0;width:320px;max-width:80vw;top:calc(100% + 4px)}
.pp-res button{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 10px;cursor:pointer;color:var(--ink)}
.pp-res button:hover{background:var(--surface-2)}.pp-res b{display:block;font-size:13px}.pp-res span{font-size:11.5px;color:var(--dim)}
.pp-searchwrap{position:relative}
.vc .pp-ib{position:absolute;top:3px;right:3px;width:18px;height:18px;border-radius:50%;border:0;background:var(--card);color:var(--dim);display:none;place-items:center;cursor:pointer;box-shadow:var(--sh-1);padding:0}
.vc:hover .pp-ib,.vc.sel3 .pp-ib,.vc .pp-ib:focus{display:grid}
.pp-tabbody{flex:1;min-height:0;overflow:auto}
.pp-tabbody.plan{display:flex;flex-direction:column;overflow:hidden}
.pp-sum{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px;color:var(--ink-2);margin-bottom:8px;flex:none}
.pp-sum>b{font-size:15px;color:var(--ink)}.pp-sum b{color:var(--ink);font-weight:650}
.pp-sum .pp-faint{margin-left:auto;font-size:12px}
.pp-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;flex:none}
.pp-chipw{position:relative;display:inline-flex}
.pp-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:4px 10px;font-size:12.5px;color:var(--dim);cursor:pointer}
.pp-chip i{width:9px;height:9px;border-radius:50%;opacity:.35}
.pp-chip b{font-weight:600;color:inherit}.pp-chip em{font-style:normal;color:var(--faint);font-size:11.5px}
.pp-chip.on{color:var(--ink);border-color:var(--line-2);background:var(--card-2)}.pp-chip.on i{opacity:1}
.pp-chip.ctl{font-weight:600;color:var(--ink-2)}
.pp-spark{width:20px;height:20px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--moss-ink);display:grid;place-items:center;cursor:pointer;padding:0;opacity:0;transition:opacity .12s;flex:none}
.pp-chipw .pp-spark{position:absolute;top:-8px;right:-8px;box-shadow:var(--sh-1)}
.pp-chipw:hover .pp-spark,.pp-trow:hover .pp-spark,.pp-spark:focus-visible{opacity:1}
.pp-mapwrap{position:relative;flex:1;min-height:220px;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:#2b3326}
.pp-map{position:absolute;inset:0}
.pp-gmap{position:absolute;inset:0}
.pp-mapbtn{position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:8px;border:0;background:rgba(255,255,255,.92);color:#222;display:grid;place-items:center;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.pp-maplegend{position:absolute;left:8px;bottom:8px;max-width:calc(100% - 16px);background:rgba(20,24,20,.78);color:#fff;font-size:12px;padding:5px 10px;border-radius:8px}
.pp-maplegend .pp-linkbtn{color:#bfe3c8}
.pp-linkbtn{border:0;background:none;padding:0;color:var(--moss-ink);font-size:12px;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.pp-tabbody.big .pp-tl{display:none}
/* timeline: full width, label | track | totals; the playhead spans all rows */
.pp-tl{flex:none;max-height:42%;overflow:auto;margin-top:10px;border:1px solid var(--line);border-radius:10px;padding:6px 10px 6px;background:var(--card)}
.pp-tlrows{--lbl:160px;--tot:156px;--gap:10px;position:relative}
.pp-trow{display:grid;grid-template-columns:var(--lbl) minmax(0,1fr) var(--tot);gap:var(--gap);align-items:center;padding:4px 0;border-top:1px solid var(--line)}
.pp-trow.head{border-top:0;padding:0 0 2px}
.pp-tlbl{display:flex;align-items:center;gap:4px;min-width:0}
.pp-mbtn{display:grid;grid-template-columns:9px minmax(0,1fr);column-gap:6px;align-items:center;border:0;background:none;padding:3px 5px;margin:-3px 0 -3px -5px;border-radius:6px;cursor:pointer;color:var(--ink);text-align:left;min-width:0;flex:1}
.pp-mbtn:hover{background:var(--surface-2)}.pp-trow.sel .pp-mbtn{background:var(--moss-soft)}
.pp-mbtn i{width:9px;height:9px;border-radius:50%}
.pp-mbtn span{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-mbtn em{grid-column:2;font-style:normal;font-size:11px;color:var(--dim);line-height:1.1}
.pp-trow.fade .pp-ttrack,.pp-trow.fade .pp-mbtn,.pp-trow.fade .pp-ttot{opacity:.3}
.pp-ttrack{position:relative;height:22px;background:var(--surface-2);border-radius:6px;overflow:hidden}
.pp-trow.head .pp-ttrack{background:none;height:16px;overflow:visible}
.pp-tick{position:absolute;top:0;transform:translateX(-50%);font-size:10.5px;color:var(--faint);white-space:nowrap}
.pp-tick:first-child{transform:none}
.pp-gl{position:absolute;top:0;bottom:0;width:1px;background:var(--line)}
.pp-bar{position:absolute;top:3px;bottom:3px;border-radius:3px;min-width:2px;cursor:pointer;transition:opacity .12s}
.pp-bar.off{opacity:.12}
.pp-bar.hl{box-shadow:0 0 0 2px var(--ink);z-index:2}
.pp-bar.act{box-shadow:0 0 0 2px #fff,0 0 0 3px var(--ink);z-index:3}
.pp-thin{position:absolute;top:9px;height:4px;border-radius:2px;background:var(--faint);opacity:.75;min-width:1px}
.pp-thin.truck{background:var(--dim)}.pp-thin.wait{background:var(--amber);top:8px;height:6px}
.pp-ttot{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;font-size:11.5px;text-align:right;font-variant-numeric:tabular-nums}
.pp-ttot span{color:var(--faint);font-size:10.5px}.pp-ttot b{font-weight:600}
.pp-ph{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--red,#d0543f);z-index:4;pointer-events:none;
  left:calc(var(--lbl) + var(--gap) + (100% - var(--lbl) - var(--tot) - 2 * var(--gap)) * var(--f,0))}
.pp-tkey{display:flex;gap:14px;font-size:11.5px;color:var(--dim);padding-top:6px}
.pp-tkey i{display:inline-block;width:14px;height:4px;border-radius:2px;margin-right:5px;vertical-align:2px;background:var(--faint)}
.pp-tkey i.k-work{height:9px;vertical-align:-1px;background:var(--moss)}.pp-tkey i.k-truck{background:var(--dim)}
.pp-dot{position:absolute;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.5);pointer-events:none;transition:opacity .15s}
/* map area popover */
.pp-pop{font:13px/1.4 system-ui,-apple-system,sans-serif;color:var(--ink);min-width:220px;max-width:280px;padding:2px 2px 4px}
.gm-style .gm-style-iw-d:has(.pp-pop){overflow:hidden!important}
.pp-pop-h{display:flex;align-items:center;gap:7px;margin-bottom:6px}.pp-pop-h i,.pp-pop-r i{width:10px;height:10px;border-radius:50%;flex:none}.pp-pop-h span{margin-left:auto;color:var(--dim)}
.pp-pop-r{display:grid;grid-template-columns:12px 1fr;column-gap:6px;padding:5px 0;border-top:1px solid var(--line);align-items:center}
.pp-pop-r span{grid-column:2;font-size:12px;color:var(--dim)}
.pp-popask{display:inline-flex;align-items:center;gap:5px;margin-top:6px;border:1px solid var(--line);background:var(--card-2);color:var(--moss-ink);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;cursor:pointer}
/* notes / week / data health */
.pp-note{white-space:pre-wrap;font-size:13.5px;line-height:1.5;padding:12px 14px;border-radius:10px;background:var(--card-2);border:1px solid var(--line)}
.pp-eq{display:flex;flex-wrap:wrap;gap:6px}.pp-eq span{font-size:12.5px;padding:4px 9px;border-radius:8px;background:var(--surface-2)}
.pp-tbl{width:100%;border-collapse:collapse;font-size:13px}.pp-tbl th{text-align:left;font-size:11.5px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:1px solid var(--line)}
.pp-tbl td{padding:9px 10px;border-bottom:1px solid var(--line)}
.pp-health{padding:20px 22px;overflow:auto}
@media (max-width:1180px){.pp-cols{grid-template-columns:280px minmax(0,1fr)}.pp-tlrows{--lbl:150px;--tot:132px}.pp-searchtop{flex-basis:170px}}
@media (max-width:900px){
 .pp{height:auto;min-height:calc(100vh - 16px);overflow:visible}.pp-scrim{padding:8px}
 .pp-cols{grid-template-columns:1fr}.pp-l{border-right:0;border-bottom:1px solid var(--line);overflow:visible}
 .pp-l.convo{overflow:visible}.pp-thread{max-height:50vh}
 .pp-top{flex-wrap:wrap}.pp-player{order:5;flex-basis:100%;max-width:none}.pp-searchtop{flex:1}
 .pp-tabbody,.pp-tabbody.plan{overflow:visible}.pp-mapwrap{flex:none;height:320px}.pp-tl{max-height:none}
 .pp-tlrows{--lbl:142px;--tot:0px;--gap:8px}.pp-ttot{display:none}
 .pp-sum .pp-faint{margin-left:0}
 .pp-spark{opacity:1}
}
.pp:focus{outline:none}
#pp-toast{z-index:1250}

/* ---------- Settings > Integrations (static/integrations.js, demo build) */
.in9-demo{display:inline-flex;align-items:center;font-size:11px;font-weight:650;letter-spacing:.02em;padding:2px 8px;border-radius:999px;background:var(--amber-soft);color:var(--amber-ink);vertical-align:3px;margin-left:8px}
.in9-note{margin:-4px 0 14px}
.in9-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.in9-card{border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--card);display:flex;flex-direction:column;gap:12px;transition:box-shadow .3s}
.in9-card.flash{box-shadow:0 0 0 3px var(--moss)}
.in9-h{display:flex;gap:12px;align-items:flex-start}.in9-h h3{margin:0;font-size:16px}.in9-h p{margin:2px 0 0;color:var(--dim);font-size:13px}
.in9-logo{width:36px;height:36px;flex:none;border-radius:9px;display:grid;place-items:center;font-weight:750;font-size:16px;color:#fff;background:#2556A8}
.in9-logo.siterecon{background:#2f8f5b}
.in9-status{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.in9-st{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:650;padding:3px 9px;border-radius:999px}
.in9-st.off{background:var(--surface-2);color:var(--dim)}.in9-st.req{background:var(--amber-soft);color:var(--amber-ink)}.in9-st.ok{background:var(--moss-soft);color:var(--moss-ink)}
.in9-faint{color:var(--faint);font-size:12px}
.in9-sync b{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--faint)}
.in9-sync ul,.in9-next ul{margin:6px 0 0;padding-left:18px;font-size:13px;color:var(--ink-2);display:grid;gap:3px}
.in9-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:auto}
.in9-acts .btn{display:inline-flex;align-items:center;gap:6px}
.in9-lnk{border:0;background:none;padding:0;cursor:pointer;font-size:12.5px}
.in9-scrim{position:fixed;inset:0;z-index:1160;background:rgba(15,18,16,.5);display:flex}
.in9-scrim.in9-side{justify-content:flex-end}.in9-scrim.in9-modal{align-items:center;justify-content:center;padding:16px}
.in9-box{background:var(--card);color:var(--ink);display:flex;flex-direction:column;box-shadow:0 24px 70px rgba(0,0,0,.3);outline:none}
.in9-side .in9-box{width:min(440px,100%);height:100%}
.in9-modal .in9-box{width:min(620px,100%);max-height:calc(100vh - 32px);border-radius:14px}
.in9-sh{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line)}.in9-sh h3{margin:0;font-size:16px;flex:1}
.in9-sh .in9-demo{margin:0;vertical-align:0}
.in9-x{border:0;background:none;color:var(--dim);cursor:pointer;width:32px;height:32px;border-radius:8px;display:grid;place-items:center}.in9-x:hover{background:var(--surface-2);color:var(--ink)}
.in9-sb{flex:1;overflow:auto;padding:16px 18px;display:flex;flex-direction:column;gap:12px}
.in9-sf{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line)}
.in9-steps{margin:0;padding-left:20px;font-size:13.5px;display:grid;gap:6px;color:var(--ink-2)}
.in9-fields{display:grid;gap:10px}
.in9-fields label,.in9-full{display:grid;gap:4px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.in9-fields input,.in9-fields select,.in9-full input,.in9-full textarea{font:inherit;font-size:13.5px;font-weight:400;color:var(--ink);background:var(--card);border:1px solid var(--line-2);border-radius:8px;padding:8px 10px}
.in9-full textarea{resize:vertical;line-height:1.45;font-family:inherit}
.in9-fields input:focus,.in9-full input:focus,.in9-full textarea:focus,.in9-fields select:focus{outline:0;border-color:var(--moss)}
.in9-callout,.in9-hint{margin:0;font-size:13px;padding:10px 12px;border-radius:10px;background:var(--card-2);border:1px solid var(--line);color:var(--ink-2)}
.in9-err{margin:0;color:var(--red-ink,#b3402f);font-size:13px}
.in9-ok{display:grid;gap:3px;padding:10px 12px;border-radius:10px;background:var(--moss-soft);color:var(--moss-ink)}.in9-ok b{display:flex;align-items:center;gap:6px}
.in9-next b{font-size:13px}
.in9-who{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.in9-who label{display:grid;gap:2px;border:1px solid var(--line);border-radius:10px;padding:9px 11px;cursor:pointer;font-size:13px}
.in9-who label.on{border-color:var(--moss);background:var(--moss-soft)}.in9-who input{position:absolute;opacity:0;pointer-events:none}
.in9-who span{font-size:12px;color:var(--dim)}
.in9-who label:focus-within{box-shadow:0 0 0 2px var(--moss)}
@media (max-width:560px){.in9-who{grid-template-columns:1fr}}
/* Add properties · services and areas (below the map, boundary ready) */
.ob-svchead{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}
.ob-svchead>b{font-size:13.5px}
.ob-bar.svc i{background:var(--ob-blue-ink)}
.ob-sicon.flag{background:var(--amber-soft);color:var(--amber-ink)}
.ob-svcp{padding:14px 20px 4px;border-top:1px solid var(--line)}
.ob-svcp-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.ob-svcp-h>b{font-size:15px}
.ob-svcline{font-size:13px;color:var(--dim)}.ob-svcline b{color:var(--ink);font-weight:650}
.ob-svcrows{display:grid;gap:8px;margin-bottom:12px}
.ob-svcrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.ob-svcchip{flex:1;min-width:180px}.ob-svcchip b{display:block;font-weight:600}.ob-svcchip span{font-size:12.5px;color:var(--dim)}
.ob-svcac{min-width:64px;text-align:right;font-weight:650;font-variant-numeric:tabular-nums}
.ob-areas{display:grid;gap:6px;padding-bottom:12px}
.ob-arow{display:flex;align-items:center;gap:10px;padding:6px 2px;font-size:13px}
.ob-arow.sel{background:var(--surface-2);border-radius:8px}
.ob-arow .t{flex:1;min-width:0}.ob-arow .t b{display:block;font-weight:600}.ob-arow .t span{display:block;color:var(--dim);font-size:12.5px}
.ob-sw{display:inline-block;width:14px;height:14px;border-radius:3px;flex:none;vertical-align:-2px}
.ob-sw.ex{background:repeating-linear-gradient(45deg,#e2584a 0 2px,rgba(226,88,74,.18) 2px 6px);border:1.5px solid #e2584a}
.ob-sw.in{background:rgba(63,174,106,.35);border:1.5px solid #3fae6a}
.ob-legend i.ob-sw{width:11px;height:11px;margin-right:6px}
.ob-newarea{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--dim);padding-top:6px;border-top:1px dashed var(--line);margin-top:4px}
.ob-newarea label,.ob-selctl label{display:inline-flex;align-items:center;gap:6px}
.ob-newarea select,.ob-selctl select{font:inherit;font-size:12.5px;padding:4px 6px;border:1px solid var(--line-2);border-radius:7px;background:var(--card);color:var(--ink)}
.ob-selarea{border:1px solid var(--line-2);border-radius:10px;padding:10px 12px;background:var(--surface-2);display:grid;gap:8px}
.ob-selarea .t b{display:block;font-weight:600}.ob-selarea .t span{font-size:12.5px;color:var(--dim)}
.ob-selctl{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px}
.ob-callout.ob-flag{background:var(--amber-soft)}
.ob-flagic{width:22px;height:22px;border-radius:50%;background:var(--amber-ink);color:#fff;display:grid!important;place-items:center;font-weight:700;font-size:13px}
.ob-flaglist{margin:6px 0 0;padding-left:18px;display:grid;gap:3px}
.ob-keepq{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:8px}.ob-keepq span{font-weight:600;margin-right:4px}
.ob-tool.excl{color:#e2584a}.ob-tool.incl{color:#3fae6a}
.ob-tool.excl.on{background:#e2584a;color:#fff}.ob-tool.incl.on{background:#3fae6a;color:#fff}
.ob-hatch{position:absolute;overflow:visible;pointer-events:none}
.ob-maplabel.in{background:#2e7d4f}
.ob-keys{font-size:12px;color:var(--faint)}
.ob-svctile{margin-top:12px;padding:10px 12px;border-radius:10px;background:var(--surface-2)}
.ob-svctile b{font-size:22px;font-weight:650;letter-spacing:-.02em;display:block}.ob-svctile b span{font-size:13px;color:var(--dim);font-weight:500}
.ob-svctile>span{font-size:12.5px;color:var(--dim)}
.ob-toast.act{pointer-events:auto;display:flex;align-items:center;gap:12px}
.ob-toast button{border:0;background:none;color:inherit;font:inherit;font-weight:700;text-decoration:underline;cursor:pointer;padding:0}
/* Add properties · scope decision (Review) and portfolio checks */
.ob-flabel{font-size:12px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;margin-right:2px;align-self:center}
.ob-bulkbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 14px;margin:0 0 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);font-size:13px}
.ob-bulkbar.on{border-color:var(--moss);background:var(--moss-soft);box-shadow:var(--sh-1)}
.ob-ckc{width:34px;text-align:center}
.ob-rtable tr.selrow td{background:var(--moss-soft)}
.ob-seg.sm button{padding:4px 8px;font-size:12px}
.ob-note{display:block;width:100%;margin-top:6px;font:inherit;font-size:12.5px;padding:5px 8px;border:1px solid var(--line-2);border-radius:7px;background:var(--card);color:var(--ink)}
.ob-sline{font-size:12px;color:var(--dim);margin-top:5px}
.ob-prefl{font-size:12px;color:var(--amber-ink);margin-top:5px;line-height:1.35}
.ob-svc i{font-style:normal;font-size:10.5px;font-weight:600;color:var(--amber-ink);background:var(--amber-soft);border-radius:999px;padding:1px 6px;margin-left:4px}
.ob-svc.sugg{cursor:pointer;border:1px dashed var(--line-2);background:none;color:var(--moss-ink);font:inherit;font-size:12.5px}
.ob-svc.sugg:hover{background:var(--moss-soft)}
.ob-x{border:0;background:none;color:var(--faint);cursor:pointer;padding:0 0 0 4px;font-size:14px;line-height:1}
.ob-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);border-radius:999px;padding:5px 11px;background:var(--card);color:var(--ink);font:inherit;font-size:13px;cursor:pointer}
.ob-chip.on{border-color:var(--moss);background:var(--moss);color:#fff}
.ob-chips{display:flex;flex-wrap:wrap;gap:8px}
.ob-callout.ob-svcq{background:var(--amber-soft)}
.ob-progline{font-size:13px;color:var(--dim);margin:2px 0 4px}.ob-progline b{color:var(--ink)}
.ob-benchnote{font-size:12px;color:var(--dim);margin-top:10px;line-height:1.5}.ob-benchnote>span:first-child{font-weight:600}
.ob-noteov{position:absolute;top:12px;left:64px;max-width:min(420px,55%);background:var(--card);border:1px solid var(--line);border-left:3px solid var(--amber);border-radius:10px;padding:8px 12px;font-size:13px;box-shadow:var(--sh-1);z-index:3}
.ob-noteov span{display:block;font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}
/* Add properties · exclusions only (green = serviceable, red = excluded) and Review missing data */
.ob-svcline b.ob-red{color:#e2584a}.ob-svcline b.ob-green{color:#3fae6a}
.ob-autotag{font-size:10.5px;font-weight:600;color:var(--ob-blue-ink);background:var(--blue-soft);border-radius:999px;padding:1px 6px}
.ob-exr{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--dim)}
.ob-exr select{font:inherit;font-size:12.5px;padding:4px 6px;border:1px solid var(--line-2);border-radius:7px;background:var(--card);color:var(--ink)}
.ob-mcell{min-width:220px}
.ob-mchips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.ob-mchip{font-size:11.5px;font-weight:600;color:var(--amber-ink);background:var(--amber-soft);border-radius:999px;padding:2px 8px}
.ob-mfields{display:flex;flex-wrap:wrap;gap:6px}
.ob-mfield{display:grid;gap:2px;flex:1 1 90px}.ob-mfield.wide{flex-basis:100%}.ob-mfield.narrow{flex:0 1 70px}
.ob-mfield span{font-size:11px;color:var(--faint)}
.ob-mfield input{font:inherit;font-size:12.5px;padding:5px 8px;border:1px solid var(--line-2);border-radius:7px;background:var(--card);color:var(--ink);min-width:0}
.ob-arow .t .ob-autotag{display:inline;font-size:10.5px}
/* Add properties · Service area on every property: green boundary and red exclude tools side by side */
.ob-toolpair{display:flex;gap:4px}
.ob-tool.grn{color:#3fae6a}.ob-tool.grn.on{background:#3fae6a;color:#fff}
.ob-tools:has(.ob-toolpair){align-items:stretch}
.ob-svcchips{display:flex;flex-wrap:wrap;gap:6px;margin:-2px 0 10px}
.ob-chip.sm{padding:3px 9px;font-size:12px;cursor:default}
/* Add properties · map search, list search, bulk selection */
.ob-msearch{position:absolute;top:12px;left:50%;transform:translateX(-50%);width:min(380px,calc(100% - 330px));min-width:220px;display:flex;gap:6px;z-index:4}
.ob-msearch input{flex:1;min-width:0;font:inherit;font-size:13px;padding:7px 11px;border:1px solid var(--line-2);border-radius:9px;background:var(--card);color:var(--ink);box-shadow:var(--sh-1)}
.ob-msres{position:absolute;top:52px;left:50%;transform:translateX(-50%);width:min(380px,calc(100% - 330px));min-width:220px;display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:12.5px;box-shadow:var(--sh-1);z-index:4}
.ob-msres span{flex:1;min-width:0}
.ob-approx{position:absolute;top:52px;left:50%;transform:translateX(-50%);background:var(--amber-soft);color:var(--amber-ink);border-radius:999px;padding:4px 12px;font-size:12px;font-weight:600;z-index:3;white-space:nowrap}
.ob-msres:not(.hidden)~.ob-approx{display:none}
.ob-msearch.hidden,.ob-msres.hidden,.ob-approx.hidden{display:none}
.ob-lsearch{position:relative;margin-top:12px}
.ob-lsearch input{width:100%;font:inherit;font-size:13px;padding:7px 30px 7px 10px;border:1px solid var(--line-2);border-radius:9px;background:var(--card);color:var(--ink)}
.ob-lsearch kbd{position:absolute;right:8px;top:50%;transform:translateY(-50%);font:inherit;font-size:11px;color:var(--faint);border:1px solid var(--line-2);border-radius:5px;padding:0 5px}
.ob-lsrow{margin-top:6px}
.ob-pitemw{display:flex;align-items:center;border-bottom:1px solid var(--line)}
.ob-pitemw .ob-pitem{border-bottom:0;padding-left:10px}
.ob-pitemw.sel{background:var(--moss-soft)}.ob-pitemw.picked{background:var(--blue-soft)}
.ob-pck{margin-left:14px;cursor:pointer}
.ob-floatbar{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line-2);border-radius:12px;padding:10px 14px;box-shadow:0 10px 30px rgba(0,0,0,.28);z-index:60;font-size:13px}
.ob-floatbar b{margin-right:4px}
.ob-tmg .ob-page{max-width:1280px}
.ob-pitemw .ob-pitem{width:auto;flex:1;min-width:0}.ob-plist-items{overflow-x:hidden}
/* Add properties · map search suggestions, bulk teammate names */
.ob-mssug{position:absolute;top:calc(100% + 4px);left:0;right:0;margin:0;padding:4px;list-style:none;background:var(--card);border:1px solid var(--line-2);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.25);z-index:6}
.ob-mssug li{padding:7px 9px;border-radius:7px;cursor:pointer;font-size:12.5px;line-height:1.3}
.ob-mssug li b{display:block;font-weight:600;color:var(--ink)}.ob-mssug li span{color:var(--dim);font-size:12px}
.ob-mssug li.hi,.ob-mssug li:hover{background:var(--moss-soft)}
.ob-mssug li.ob-msnote{cursor:default;color:var(--dim)}.ob-mssug li.ob-msnote:hover{background:none}
.ob-msearch{position:absolute}
.ob-tmnames{max-height:160px;overflow:auto;border:1px solid var(--line);border-radius:9px;padding:6px 10px;font-size:13px;display:grid;gap:3px}
/* Add properties · left pane tabs */
.ob-lsearchrow{display:flex;align-items:center;gap:8px;margin-top:12px}.ob-lsearchrow .ob-lsearch{flex:1;margin-top:0}
.ob-linkicon{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line-2);background:var(--card);color:var(--moss-ink);border-radius:9px;padding:6px 8px;cursor:pointer;font-size:12px}
.ob-linkicon svg{width:14px;height:14px}
.ob-tabs{display:flex;gap:2px;margin-top:12px;border-bottom:1px solid var(--line)}
.ob-tab{flex:1;border:0;background:none;color:var(--dim);font:inherit;font-size:12.5px;padding:8px 4px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.ob-tab b{color:var(--ink)}.ob-tab.on{color:var(--ink);font-weight:600;border-bottom-color:var(--moss)}
.ob-tab:hover{color:var(--ink)}
.ob-lsrow{margin-top:8px;gap:8px;flex-wrap:wrap}
.ob-selall{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--dim);cursor:pointer}
.ob-fchip.sm{padding:3px 9px;font-size:12px}
.ob-lgtoggle{width:100%;border:0;border-bottom:1px solid var(--line);cursor:pointer;text-align:left;font:inherit}
.ob-lgtoggle span{font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}
.ob-tabempty{display:grid;justify-items:center;gap:8px;padding:40px 16px;text-align:center;color:var(--dim);font-size:13px}
.ob-tabempty b{color:var(--ink);font-size:15px}
.ob-tmbadge{font-style:normal;font-size:10.5px;font-weight:600;color:var(--ob-blue-ink);background:var(--blue-soft);border-radius:999px;padding:1px 6px;margin-right:4px}
.ob-rowact{display:flex;gap:4px;padding-right:10px}.ob-rowact .ob-btn{padding:4px 7px}.ob-rowact svg{width:13px;height:13px}
.ob-callout.ob-checkcall{background:var(--blue-soft)}
/* Add properties · summary line on Boundaries, missing-data form */
.ob-sumtop{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:13px;color:var(--dim);margin:-2px 0 6px}.ob-sumtop b{color:var(--ink)}
.ob-mform{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;margin-top:8px}
.ob-mform label{display:grid;gap:3px;font-size:12px;color:var(--dim);flex:1 1 180px}
.ob-mform input{font:inherit;font-size:13px;padding:6px 9px;border:1px solid var(--line-2);border-radius:8px;background:var(--card);color:var(--ink)}
/* Add properties · Send step */
.ob-notinc{font-size:13px;border-bottom:1px dashed var(--line);padding:4px 0}
.ob-notinc summary{display:flex;justify-content:space-between;cursor:pointer;color:var(--dim);list-style:none}
.ob-notinc summary::-webkit-details-marker{display:none}.ob-notinc summary b{color:var(--ink)}
.ob-notinc div{font-size:12px;color:var(--faint);padding:4px 0 2px;line-height:1.45}
.ob-sgrid .ob-seg button{flex:1}.ob-sgrid .ob-seg{display:flex}

/* Add properties · company + branch before upload (Property IDs), teammate link states and expiry */
.ob-cb{padding:14px 16px;margin-bottom:12px}
.ob-cbh{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-size:13px}
.ob-cbh b{font-size:14px}
.ob-cbrow{display:flex;flex-wrap:wrap;gap:0 12px;align-items:flex-end}
.ob-cbrow .ob-field{flex:1 1 180px;margin:8px 0 0}
.ob-cbrow .ob-codef{flex:0 1 150px}
.ob-field select{width:100%;border:1px solid var(--line-2);border-radius:10px;padding:8px 10px;background:var(--card);color:inherit;font:inherit}
.ob-field select:disabled,.ob-field input:disabled{opacity:.6}
.ob-cbedit{display:flex;gap:6px;padding-top:8px}
.ob-cbform{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.ob-drop.off{opacity:.55}
.ob-linkicon.req{border-color:var(--amber);position:relative}
.ob-reqdot{font-style:normal;font-size:10.5px;font-weight:700;background:var(--amber);color:#fff;border-radius:999px;padding:0 5px;margin-left:2px}
.ob-lrow{align-items:flex-start;flex-wrap:wrap;gap:8px}
.ob-lrow .t{display:flex;flex-direction:column;gap:3px;min-width:200px;flex:1}
.ob-lrow.expired .t b,.ob-lrow.revoked .t b{color:var(--dim)}
.ob-lacts{display:flex;flex-wrap:wrap;gap:6px}
.ob-lstate{font-size:12px;font-weight:600}
.ob-lstate.on{color:var(--moss-ink)}.ob-lstate.exp{color:var(--amber-ink)}.ob-lstate.rev{color:var(--dim)}
.ob-lask{font-size:12px;color:var(--amber-ink);background:var(--amber-soft);border-radius:999px;padding:1px 8px;align-self:flex-start}
.ob-tmexp{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:4px 10px;margin-bottom:10px}
.ob-tmexp svg{width:14px;height:14px}
.ob-tmexp.soon{color:var(--amber-ink);background:var(--amber-soft);border-color:transparent}
.ob-tmgone{max-width:520px}
.ob-pid{font-size:11px;color:var(--faint)}

/* ---------- TOPGreen Contour: sign-in, who did what, test mode, archive, conflicts */
.ct-signin{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:var(--paper)}
.ct-signcard{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh-1);padding:28px 26px 22px}
.ct-signcard h1{font-size:22px;font-weight:600;margin:14px 0 4px}.ct-signcard h1 span{color:var(--moss-ink)}
.ct-signcard .ob-muted{margin:0 0 10px;font-size:13.5px}
.ct-signerr{background:var(--red-soft);color:var(--ink);border-radius:10px;padding:9px 12px;font-size:13px;margin:4px 0 10px}
.ct-signcard .ob-btn.wide{width:100%;margin-top:6px}
.ct-signnote{font-size:12px;margin:14px 0 0;text-align:center}
.ob-testbadge{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.06em;color:#fff;background:var(--red);border-radius:6px;padding:2px 7px;margin-right:8px;vertical-align:1px}
.ob-istest .ob-page{box-shadow:inset 0 4px 0 var(--red)}
.ob-tmhead .ob-testbadge{margin-left:10px}
.ob-testmode{display:flex;gap:10px;align-items:flex-start;margin-top:12px;padding:10px 12px;border:1px dashed var(--line-2);border-radius:10px;font-size:12.5px;color:var(--dim);cursor:pointer}
.ob-testmode input{margin-top:2px}.ob-testmode b{color:var(--ink)}
.ob-banner{display:flex;gap:12px;align-items:center;padding:12px 14px;border-radius:10px;background:var(--blue-soft);color:var(--ink);margin:0 0 16px;font-size:13px}
.ob-banner>div:nth-child(2){flex:1}.ob-banner.warn{background:var(--amber-soft)}
.ob-byline{font-size:12.5px;color:var(--dim);margin:-12px 0 16px}
.ob-hfilters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:4px 18px 12px}
.ob-hfilters select{border:1px solid var(--line-2);border-radius:9px;background:var(--card);color:inherit;font:inherit;font-size:12.5px;padding:6px 8px;max-width:100%}
.ob-rrow .t span b.ob-who{display:inline;font-weight:600;color:var(--ink)}
.ob-actlist{max-height:52vh;overflow:auto;border-top:1px solid var(--line)}
.ob-act{display:flex;gap:12px;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.ob-act .w{min-width:0}.ob-act .d{display:block;font-size:12px;color:var(--dim);margin-top:2px}
.ob-act .by{text-align:right;flex:none;max-width:45%}.ob-act .by b{display:block;font-weight:600;font-size:12.5px}.ob-act .by span{font-size:11.5px;color:var(--dim)}
.ob-field select{width:100%;border:1px solid var(--line-2);border-radius:10px;padding:9px 12px;background:var(--card);font:inherit;color:inherit}
@media (max-width:600px){.ob-act{flex-direction:column;gap:4px}.ob-act .by{text-align:left;max-width:none}}

/* ---------- TOPGreen Contour top bar (replaces the sidebar): dark green in light and dark mode, fixed at the top.
   The page scrolls under it (.main), so sticky bars inside the page keep working. Safe areas: notch and home bar. */
:root{--topbar:#0E1A14;--topbar-2:#1A2A21;--topbar-line:#22332A;--topbar-ink:#E6EDE9;--topbar-dim:#9DB3A6;--topbar-accent:#7DD992}
.ct-shell{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);height:100vh;height:100dvh}
.ct-shell .main{padding-bottom:env(safe-area-inset-bottom)}
.ct-top{position:sticky;top:0;z-index:50;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;
  min-height:58px;box-sizing:border-box;background:var(--topbar);color:var(--topbar-ink);border-bottom:1px solid var(--topbar-line);
  padding:max(8px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) 8px max(20px,env(safe-area-inset-left))}
.ct-brand{display:flex;align-items:center;gap:12px;min-width:0;color:inherit;text-decoration:none}
.ct-tag{font-size:11.5px;color:var(--topbar-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct-mid{display:flex;justify-content:center;min-width:0}
.ct-right{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}
.ct-mode{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:9px;border:1px solid var(--topbar-line);background:transparent;color:var(--topbar-ink);cursor:pointer}
.ct-mode:hover,.ct-signout:hover{background:var(--topbar-2)}
.ct-uname{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;min-width:0}
.ct-signout{flex:none;border:1px solid var(--topbar-line);background:transparent;color:var(--topbar-ink);border-radius:9px;padding:7px 12px;font:inherit;font-size:13px;font-weight:550;cursor:pointer}
.ct-top .ob-stepper{flex-wrap:nowrap}
.ct-top .ob-step{color:var(--topbar-dim)}.ct-top .ob-step .n{border-color:#3A4D42}
.ct-top .ob-step.done{color:#C5D0CA}.ct-top .ob-step.done .n{background:#1D3324;color:var(--topbar-accent)}
.ct-top .ob-step.cur{color:#fff;background:var(--topbar-2)}.ct-top .ob-step.cur .n{background:#1F7F3E;color:#fff}
.ct-top .ob-step:focus-visible,.ct-mode:focus-visible,.ct-signout:focus-visible{outline:2px solid var(--topbar-accent);outline-offset:2px}
.ob-top.empty:not(:has(.ob-topr *)){display:none}
.ct-top-tm{grid-template-columns:minmax(0,1fr) auto}
.ct-top-tm .ct-mid{display:none}
/* narrow: the tagline goes first, then the step labels become numbers, then the product name (the logo stays) */
@media (max-width:1200px){.ct-tag{display:none}}
@media (max-width:900px){.ct-top .ob-step .lbl,.ct-top .ob-step.cur .lbl{display:none}.ct-top .ob-step{padding:6px 7px}}
@media (max-width:620px){.ct-top{gap:8px;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
  .ct-uname{max-width:96px}.ct-right{gap:6px}.ct-signout{padding:6px 9px}.ct-logo{height:24px}}
@media (max-width:420px){.ct-uname{display:none}.ct-top .ob-step{padding:6px 4px}}   /* the name stays in Sign out's tooltip */
/* narrow screens: one column that can shrink below its widest child */
@media (max-width:980px){.ob-upload-grid,.ob-studio,.ob-sgrid{grid-template-columns:minmax(0,1fr)}}
.ob-upload-grid>*,.ob-cbrow .ob-field{min-width:0}
.ob-cbh .ob-mono{overflow-wrap:anywhere}
@media (max-width:600px){.ob-drop{padding:32px 16px}.ob-drop .ob-row{flex-wrap:wrap}.ob-resume-h{flex-wrap:wrap;gap:4px}}

/* ---------- Home: welcome, three numbers, the shared list; first-run invitation */
.ob-home{max-width:980px}
.ob-homeact{gap:10px;margin:4px 0 22px}
.ob-hstats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:6px}
.ob-hstat{background:var(--card);border:1px solid var(--line);border-radius:var(--ob-r);padding:14px 16px;display:flex;flex-direction:column;gap:2px;min-width:0}
.ob-hstat b{font-size:24px;font-weight:650;letter-spacing:-.01em}.ob-hstat span{font-size:12.5px;color:var(--dim)}
.ob-empty{margin-top:20px;padding:32px 24px;text-align:center}
.ob-empty h2{margin:0 0 6px;font-size:20px;font-weight:600}.ob-empty p{margin:0 0 18px}
.ob-home .ob-row{flex-wrap:wrap}
@media (max-width:600px){.ob-hstats{grid-template-columns:minmax(0,1fr)}.ob-hstat{flex-direction:row;align-items:baseline;gap:10px}.ob-hstat b{font-size:20px}}
/* ---------- Upload: one centred card */
.ob-upwrap{max-width:640px;margin:0 auto}
.ob-back{display:inline-block;font-size:13px;color:var(--dim);text-decoration:none;margin-bottom:8px}.ob-back:hover{color:var(--ink)}
.ob-upwrap h1{margin-bottom:16px}
.ob-upcard{padding:18px 20px 16px}
.ob-cbrow2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.ob-cbrow2 .ob-field{margin:0;min-width:0}
.ob-lab{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:5px}
.ob-lab span{margin:0!important;font-size:12.5px;color:var(--dim)}.ob-lab .ob-linkbtn{font-size:12px}
.ob-idline{display:flex;justify-content:space-between;align-items:center;gap:8px 16px;flex-wrap:wrap;margin:10px 0 0;font-size:12.5px}
.ob-idline .ob-mono{overflow-wrap:anywhere}
.ob-testmode2{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:550;cursor:pointer;white-space:nowrap}
.ob-testnote{font-size:12px;color:var(--dim);margin-top:6px;text-align:right}
.ob-upcard .ob-drop{margin-top:14px;padding:28px 18px}
.ob-upcard .ob-drop h3{margin:8px 0 4px}
.ob-tmpl{display:inline-block;font-size:12.5px;margin-top:10px}
.ob-tips3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px;font-size:12.5px;color:var(--dim)}
.ob-tips3 span{display:flex;gap:7px;align-items:flex-start;min-width:0}.ob-tips3 svg{flex:none;margin-top:1px;color:var(--moss-ink)}
.ob-upwrap .ob-progress{margin-top:16px}
@media (max-width:600px){.ob-cbrow2,.ob-tips3{grid-template-columns:minmax(0,1fr)}.ob-testnote{text-align:left}.ob-upcard{padding:16px 14px}}

/* ---------- the TOPGreen Contour logo (static/brand, used as supplied): one per mode, swapped by CSS so the
   light/dark toggle changes it at once. The top bar follows the mode, so each logo sits on the background it's made for. */
:root[data-mode=dark] .ct-on-light,:root:not([data-mode=dark]) .ct-on-dark{display:none!important}
.ct-logo{height:32px;width:auto;flex:none;display:block}
.ct-brand .ct-tag{font-size:11px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ct-signlogo{display:flex;justify-content:center;margin:6px 0 10px}.ct-signlogo img{height:40px;width:auto;display:block}
.ct-signtag{text-align:center;margin:0 0 18px!important}
.ct-signcard h1{margin:0 0 4px;font-size:20px}
@media (max-width:420px){.ct-logo{height:22px}}
/* ---------- Home: room above the greeting; By company */
.ob-home{padding-top:48px}
.ob-home h1{margin-bottom:10px}.ob-home>.ob-sub{margin-bottom:28px}.ob-home .ob-homeact{margin:0 0 32px}
.ob-bycomp{margin-top:20px;padding:6px 0 4px}
.ob-bch{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 18px 10px;flex-wrap:wrap}
.ob-bch b{font-size:14px}
.ob-bctable{width:100%;border-collapse:collapse;font-size:13px}
.ob-bctable th{text-align:left;font-weight:600;font-size:11.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.04em;padding:8px 18px;border-top:1px solid var(--line)}
.ob-bctable td{padding:10px 18px;border-top:1px solid var(--line)}
.ob-bctable .num{text-align:right;font-variant-numeric:tabular-nums}
.ob-bcnone{padding:10px 18px 14px;font-size:13px;color:var(--dim);border-top:1px solid var(--line)}
@media (max-width:600px){.ob-home{padding-top:28px}.ob-bctable th,.ob-bctable td{padding:8px 10px}.ob-bctable .last{display:none}}

/* ---------- top bar: one height on every page, everything centred */
.ct-top{height:calc(60px + env(safe-area-inset-top));min-height:0;padding-top:env(safe-area-inset-top);padding-bottom:0}
.ct-top>*{align-self:center}.ct-brand{gap:14px}.ct-top .ob-stepper{align-items:center}
/* ---------- list header (Boundaries and the other steps): file · who, then the heading and counts */
.ob-page:has(.ob-top:not(.empty)){padding-top:24px}
.ob-top{margin-bottom:16px;gap:8px 16px;align-items:baseline}
.ob-crumb{flex:1 1 420px;font-size:13px;line-height:1.5}
.ob-crumb .ob-file{color:var(--ink);font-weight:550}.ob-crumb .ob-by{color:var(--dim);font-size:12.5px}
.ob-topr{flex:0 0 auto;gap:4px}
.ob h1.ob-bh{margin:0 0 8px}
.ob-bh+.ob-sumtop{margin:0 0 6px}
.ob-oneline{margin:0 0 24px!important}
@media (max-width:720px){.ob-topr{flex-basis:100%;justify-content:flex-start;margin-left:-10px}}
/* ---------- Home: list first, then Reports */
.ob-home #ob-resume .ob-resume{margin-top:0}
.ob-divider{border:0;border-top:1px solid var(--line);margin:32px 0 24px}
.ob-sech{font-size:16px;font-weight:600;margin:0 0 14px;color:var(--ink)}

/* ---------- Upload locked once the list is read (hover / focus shows why; a tap shows it as a toast) */
.ob-step.locked{cursor:default;position:relative}
.ob-step.locked:hover::after,.ob-step.locked:focus-visible::after{content:attr(data-tip);position:absolute;top:calc(100% + 8px);left:0;z-index:60;
  width:260px;white-space:normal;text-align:left;font-size:12px;font-weight:500;line-height:1.4;padding:8px 10px;border-radius:8px;
  background:var(--ink);color:var(--card);box-shadow:var(--sh-2)}
/* ---------- Send: one option */
.ob-splitck{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;margin-top:2px}
.ob-splithint{font-size:12px;color:var(--dim);margin:2px 0 14px 24px}

/* ---------- Light mode: the Sage palette. Every rule below is scoped to light mode (:root:not([data-mode=dark])), one
   rule per line; dark mode is untouched. The top bar keeps its dark-mode colours and logo in both modes. */
:root:not([data-mode=dark]){--paper:#EDF1EB;--card:#F9FBF7;--card-2:#F9FBF7;--surface-2:#E2E8DF;--line:#D5DDD2;--line-2:#C9D3C6;--glass:rgba(249,251,247,.96);--ink:#17241C;--ink-2:#2C3B31;--dim:#5E6E64;--faint:#68776D;--moss:#2F6B3F;--moss-2:#26593A;--moss-soft:#DCE9DD;--moss-ink:#24563A;--lime-ink:#24563A;--lime-soft:#DCE9DD;--amber:#B7791F;--amber-soft:#F6EAD2;--amber-ink:#7A4E0E;--red:#B03A2E;--red-soft:#F7E1DC;--blue-soft:#E1EAF3;--sh-1:none;--sage-divider:#E2E8DF;--sage-input:#FFFFFF;--sage-input-line:#C9D3C6;--sage-placeholder:#7D8B82;--sage-progress:#EEF1DC;--sage-progress-ink:#5F6E2B}
:root:not([data-mode=dark]) .ob{--ob-red-ink:#9E2F23;--ob-blue-ink:#284F7A;--ob-ok-ink:#24563A}
:root:not([data-mode=dark]) .ct-top{--ink:#E6EDE9;--ink-2:#C5D0CA;--dim:#9DABA4;--faint:#748279;--card:#171F1C;--line:#2A3531;--line-2:#3A4742;--surface-2:#222C28;--moss:#1F7F3E;--moss-2:#26904A;--moss-soft:#1D3324;--moss-ink:#7DD992}
:root:not([data-mode=dark]) .ct-top .ct-on-dark{display:block!important}
:root:not([data-mode=dark]) .ct-top .ct-on-light{display:none!important}
:root:not([data-mode=dark]) .ob input:not([type=checkbox]):not([type=radio]):not([type=range]),:root:not([data-mode=dark]) .ob select,:root:not([data-mode=dark]) .ob textarea,:root:not([data-mode=dark]) .ct-signcard input{background:var(--sage-input);border-color:var(--sage-input-line);color:var(--ink)}
:root:not([data-mode=dark]) .ob input:not([type=checkbox]):not([type=radio]):not([type=range]):focus,:root:not([data-mode=dark]) .ob select:focus,:root:not([data-mode=dark]) .ob textarea:focus,:root:not([data-mode=dark]) .ct-signcard input:focus{outline:none;border-color:var(--moss);box-shadow:0 0 0 3px rgba(47,107,63,.25)}
:root:not([data-mode=dark]) .ob ::placeholder,:root:not([data-mode=dark]) .ct-signcard ::placeholder{color:var(--sage-placeholder);opacity:1}
:root:not([data-mode=dark]) .ob input[type=checkbox],:root:not([data-mode=dark]) .ob input[type=radio]{accent-color:var(--moss)}
:root:not([data-mode=dark]) .ob-rrow,:root:not([data-mode=dark]) .ob-table th,:root:not([data-mode=dark]) .ob-table td,:root:not([data-mode=dark]) .ob-bctable th,:root:not([data-mode=dark]) .ob-bctable td,:root:not([data-mode=dark]) .ob-bcnone,:root:not([data-mode=dark]) .ob-act,:root:not([data-mode=dark]) .ob-actlist,:root:not([data-mode=dark]) .ob-pitem,:root:not([data-mode=dark]) .ob-pitemw,:root:not([data-mode=dark]) .ob-tabs,:root:not([data-mode=dark]) .ob-notinc{border-color:var(--sage-divider)}
:root:not([data-mode=dark]) .ob-hr,:root:not([data-mode=dark]) .ob-tools .sep{background:var(--sage-divider)}
:root:not([data-mode=dark]) .ob-seg button{background:var(--card);color:var(--ink)}
:root:not([data-mode=dark]) .ob-seg button.on{background:var(--moss-soft);color:var(--moss-ink);font-weight:600}
:root:not([data-mode=dark]) .ob-tab.on{color:var(--moss-ink)}
:root:not([data-mode=dark]) .ob-pitem.sel,:root:not([data-mode=dark]) .ob-pitemw.sel{background:var(--moss-soft)}
:root:not([data-mode=dark]) .ob-pitem.sel .t b{color:var(--moss-ink)}
:root:not([data-mode=dark]) .ob-hstat b,:root:not([data-mode=dark]) .ob-bignum{color:var(--moss)}
:root:not([data-mode=dark]) .ob-rst.progress{background:var(--sage-progress);color:var(--sage-progress-ink);border-radius:4px;box-shadow:0 0 0 3px var(--sage-progress)}
:root:not([data-mode=dark]) .ob-rst.done{background:var(--moss-soft);color:var(--moss-ink);border-radius:4px;box-shadow:0 0 0 3px var(--moss-soft)}
:root:not([data-mode=dark]) .ob-mapmsg{background:var(--card);color:var(--ink)}
:root:not([data-mode=dark]) .ob-sicon.ok{background:var(--moss-soft);color:var(--moss-ink)}
/* ---------- Light mode: top bar #1F3A2B, test lists in slate, status colours (green done, amber needs action, slate
   information and test, red errors only). One light-only rule per line. */
:root:not([data-mode=dark]){--blue-soft:#E3E9EE}
:root:not([data-mode=dark]) .ob{--ob-blue-ink:#3B5163}
:root:not([data-mode=dark]) .ct-top{--topbar:#1F3A2B;--topbar-ink:#F2F5F3;--topbar-dim:#A9BDB1;--topbar-accent:#4ADE80;border-bottom-color:#1F3A2B;box-shadow:none}
:root:not([data-mode=dark]) .ct-top .ob-step,:root:not([data-mode=dark]) .ct-top .ob-step.done,:root:not([data-mode=dark]) .ct-top .ob-step.cur{color:#F2F5F3}
:root:not([data-mode=dark]) .ct-top .ob-step.cur{background:rgba(255,255,255,.10)}
:root:not([data-mode=dark]) .ct-top .ob-step:not(:disabled):not(.locked):hover{background:rgba(255,255,255,.16)}
:root:not([data-mode=dark]) .ct-top .ob-step.done .n{color:#4ADE80}
:root:not([data-mode=dark]) .ct-top .ct-mode,:root:not([data-mode=dark]) .ct-top .ct-signout{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.18);color:#F2F5F3}
:root:not([data-mode=dark]) .ct-top .ct-mode:hover,:root:not([data-mode=dark]) .ct-top .ct-signout:hover{background:rgba(255,255,255,.16)}
:root:not([data-mode=dark]) .ob-pill.ask,:root:not([data-mode=dark]) .ob-sicon.ask,:root:not([data-mode=dark]) .ob-pill.check,:root:not([data-mode=dark]) .ob-sicon.auto{background:var(--amber-soft);color:var(--amber-ink)}
:root:not([data-mode=dark]) .ob-stat b.t-ask{color:var(--amber-ink)}
:root:not([data-mode=dark]) .ob-callout.ask,:root:not([data-mode=dark]) .ob-callout.ob-choose{background:var(--amber-soft)}
:root:not([data-mode=dark]) .ob-callout.info:not(.ok),:root:not([data-mode=dark]) .ob-banner:not(.warn){background:#E3E9EE;color:#2E4252}
:root:not([data-mode=dark]) .ob-callout.info:not(.ok)>div:first-child,:root:not([data-mode=dark]) .ob-banner:not(.warn)>div:first-child{color:#3B5163}
:root:not([data-mode=dark]) .ob-pitemw.picked{background:var(--moss-soft)}
:root:not([data-mode=dark]) .ob-svcline b.ob-red{color:#9E2F23}
:root:not([data-mode=dark]) .ob-svcline b.ob-green{color:#24563A}
:root:not([data-mode=dark]) .ob-reqdot{background:var(--amber-ink)}
:root:not([data-mode=dark]) .ob-pill.skip,:root:not([data-mode=dark]) .ob-sicon.skip{color:#52625A}
:root:not([data-mode=dark]) .ob-rst.done,:root:not([data-mode=dark]) .ob-rst.progress{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.3;box-shadow:none;white-space:nowrap}
:root:not([data-mode=dark]) .ob-testbadge{background:#E3E9EE;color:#3B5163;font-size:12px;font-weight:600;letter-spacing:0;padding:3px 9px;border-radius:999px;vertical-align:baseline}
:root:not([data-mode=dark]) .ob-testbar{background:#E3E9EE;color:#3B5163}
/* ---------- Test lists, both modes (item 5): a slim slate bar under the top bar instead of the red line; dark slate badge */
.ob-istest .ob-page{box-shadow:none}
.ob-testbar{padding:7px max(16px,env(safe-area-inset-left));font-size:12.5px;line-height:18px;font-weight:500;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root[data-mode=dark] .ob-testbadge{background:#26313A;color:#C5D2DC;text-transform:uppercase}
:root[data-mode=dark] .ob-testbar{background:#26313A;color:#C5D2DC}

/* ---- Help menu and product tour (static/tour.js); the /help manual page (manual.py) */
.ct-helpwrap{position:relative;display:flex}
.ct-helpmenu{position:absolute;top:calc(100% + 8px);right:0;z-index:1300;min-width:220px;background:var(--card);color:var(--ink);border:1px solid var(--line);
  border-radius:12px;box-shadow:var(--sh-2);padding:6px;display:flex;flex-direction:column}
.ct-helpmenu[hidden]{display:none}
.ct-helpmenu button,.ct-helpmenu a{all:unset;cursor:pointer;padding:9px 12px;border-radius:8px;font-size:14px;color:var(--ink)}
.ct-helpmenu button:hover,.ct-helpmenu a:hover,.ct-helpmenu :focus-visible{background:var(--surface-2)}
.ct-tour-box{position:fixed;z-index:1250;border-radius:12px;box-shadow:0 0 0 3px var(--moss),0 0 0 9999px rgba(8,14,11,.55);pointer-events:none;transition:all .18s ease}
.ct-tour-pop{position:fixed;z-index:1260;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh-2);padding:16px 18px 14px;box-sizing:border-box}
.ct-tour-pop h3{margin:2px 0 6px;font-size:16px;font-weight:650}
.ct-tour-pop p{margin:0 0 14px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.ct-tour-n{font-size:12px;color:var(--dim)}
.ct-tour-act{display:flex;align-items:center;gap:8px}.ct-tour-act span{flex:1}
.ct-tour-skip{all:unset;cursor:pointer;font-size:13px;color:var(--dim)}.ct-tour-skip:hover{color:var(--ink);text-decoration:underline}
:root[data-mode=dark] .ct-tour-box{box-shadow:0 0 0 3px var(--moss-ink),0 0 0 9999px rgba(0,0,0,.62)}

.ct-help{max-width:1080px;margin:0 auto;padding:28px 24px 64px;display:grid;grid-template-columns:240px 1fr;gap:36px;align-items:start}
.ct-help nav{position:sticky;top:18px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 10px;font-size:14px}
.ct-help nav b{display:block;padding:0 10px 8px;font-size:12px;color:var(--dim);text-transform:uppercase;letter-spacing:.06em}
.ct-help nav a{display:block;padding:6px 10px;border-radius:8px;color:var(--ink);text-decoration:none}.ct-help nav a:hover{background:var(--surface-2)}
.ct-help nav .pdf{margin-top:8px;border-top:1px solid var(--line);padding-top:10px;color:var(--moss-ink);font-weight:600}
.ct-man{color:var(--ink);line-height:1.6;font-size:15.5px;min-width:0}
.ct-man h1{font-size:30px;margin:0 0 6px}.ct-man h2{font-size:22px;margin:40px 0 10px;padding-top:6px;border-top:1px solid var(--line)}
.ct-man h3{font-size:17px;margin:24px 0 6px}.ct-man p,.ct-man li{color:var(--ink-2)}.ct-man li{margin:4px 0}
.ct-man img{display:block;max-width:100%;border:1px solid var(--line);border-radius:12px;margin:12px 0 18px;box-shadow:var(--sh-1)}
.ct-man code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13.5px;background:var(--surface-2);padding:1px 5px;border-radius:5px}
.ct-man table{border-collapse:collapse;width:100%;margin:10px 0 18px;font-size:14px}
.ct-man th,.ct-man td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}.ct-man th{color:var(--dim);font-weight:600}
.ct-man a{color:var(--moss-ink)}
@media (max-width:820px){.ct-help{grid-template-columns:1fr;padding:18px 16px 48px}.ct-help nav{position:static}}

/* ---- admin screen (/admin, admin.py) */
.ad-main{max-width:1080px;margin:0 auto;padding:28px 24px 64px;color:var(--ink)}
.ad-lock{max-width:420px;margin:56px auto 0;padding:26px 26px 22px}.ad-lock h1{margin:0 0 4px;font-size:24px}
.ad-err{color:var(--red,#C0392B);font-size:13.5px;margin:6px 0 10px}
.ad-head{display:flex;align-items:baseline;gap:14px;margin-bottom:14px}.ad-head h1{margin:0;font-size:26px}
.ad-card{padding:0;margin-bottom:18px;overflow:hidden}.ad-card h2{font-size:17px;margin:0;padding:16px 18px 6px}.ad-card>p{padding:0 18px 16px}
.ad-table{width:100%}.ad-table td,.ad-table th{padding:11px 14px;vertical-align:middle}
.ad-act{text-align:right;white-space:nowrap}
.ad-st{font-size:12.5px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--moss-soft);color:var(--moss-ink)}
.ad-st.disabled{background:var(--surface-2);color:var(--dim)}
.ad-inline{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.ad-inline input{width:190px}
.ad-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;padding:4px 18px 18px}
.ad-addf{grid-column:1/-1;display:flex;align-items:center;gap:12px;justify-content:space-between;margin-top:6px}
@media (max-width:760px){.ad-grid{grid-template-columns:1fr}.ad-table{font-size:13px}}
