/* WasteNet public site. Temporary home: dashboard.wastenetinc.com/site/ until it moves to
   wastenetinc.com. Colors are the dashboard's (index.html :root): the rail greens for the
   dark bands, the logo green for actions. Every link between pages is relative, so the
   folder moves to its own domain unchanged. */
:root{
  --green:#5CAA16; --green-dark:#3B6D11; --green-darker:#27500A;
  --green-label:#468011;   /* labels and titles: the logo green's hue, deep enough for small text (4.6:1 on the page, 4.8:1 on white) */
  --green-tint:#EAF3DE; --green-tint-2:#F4FAEC; --green-border:#C0DD97;
  --amber:#EF9F27;
  /* Text on the light sections is the rail's dark green, never black (owner, 2026-10-30);
     the two lighter greens keep 6:1 contrast or better on every light background. */
  --ink:#153a22; --ink-2:#3f5e49; --ink-3:#4a6a55;
  --line:#E4E7E0; --line-strong:#CFD4CA;
  --card:#FFFFFF; --page:#FAFBF8;
  --rail:#153a22; --rail-deep:#102c19; --rail-panel:#1c4a2c; --rail-line:#265c39; --rail-line-2:#2f6b44;
  --sage:#a9cbb4; --sage-dim:#8fbf9c; --on-rail:#EAF3EE;
  --display:Archivo,Inter,-apple-system,"Segoe UI",Roboto,sans-serif;
  --body:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --r-input:6px; --r-ctl:8px; --r-card:12px; --r-big:16px; --r-pill:999px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
/* The header stays at the top (as on heylobey.com), so a jump to #section lands below it. */
[id]{scroll-margin-top:140px}
@media (max-width:720px){[id]{scroll-margin-top:150px}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}
body{margin:0;font-family:var(--body);color:var(--ink);background:var(--page);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto}
a{color:var(--green-dark)}a:hover{color:var(--green-darker)}
h1,h2,h3{font-family:var(--display);line-height:1.08;margin:0;letter-spacing:-.01em}
h1{font-weight:900;font-size:clamp(40px,6vw,68px);letter-spacing:-.02em}
h2{font-weight:800;font-size:clamp(30px,4vw,46px)}
h3{font-weight:700;font-size:21px}
p{margin:0}
.wrap{max-width:1200px;margin:0 auto;padding:0 24px}
.section{padding-top:96px;padding-bottom:96px}
.section.tight{padding-top:64px;padding-bottom:64px}
.eyebrow{font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--green-label)}
.lede{font-size:clamp(18px,2vw,20px);line-height:1.55;color:var(--ink-2);max-width:620px}
.muted{color:var(--ink-2)}
.stack-12>*+*{margin-top:12px}.stack-16>*+*{margin-top:16px}.stack-24>*+*{margin-top:24px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:14px 24px;border-radius:var(--r-ctl);font-weight:700;font-size:16px;text-decoration:none;border:0;cursor:pointer;font-family:inherit;line-height:1.2}
.btn-go{background:var(--green);color:var(--rail-deep)}.btn-go:hover{background:#6bbd22;color:var(--rail-deep)}
.btn-dark{background:var(--rail);color:#fff}.btn-dark:hover{background:var(--rail-panel);color:#fff}
.btn-line{border:1px solid var(--rail-line-2);color:var(--on-rail);background:transparent}.btn-line:hover{background:var(--rail-panel);color:#fff}
.btn-row{display:flex;flex-wrap:wrap;gap:12px}

/* dark bands */
.dark{background:var(--rail);color:var(--on-rail)}
.dark h1,.dark h2,.dark h3{color:#fff}
.dark .lede,.dark .muted{color:var(--sage)}
.dark .eyebrow{color:var(--sage-dim)}
.dark a:not(.btn){color:var(--green-border)}
.deep{background:var(--rail-deep);color:var(--on-rail)}

/* header */
/* No shadow at the top of the page, where the header and the first band are the same green and a
   shadow reads as a stray line; it appears once the page scrolls (site.js adds .scrolled). */
.site-head{position:sticky;top:0;z-index:60;transition:box-shadow .2s;border-bottom:1px solid rgba(92,170,22,.45)}   /* a thin logo-green line so the header never merges with a dark green section below it (owner, 2026-11-02) */
.site-head.scrolled{box-shadow:0 2px 16px rgba(5,25,12,.28)}
.site-head .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:14px 28px;padding-top:14px;padding-bottom:14px}
/* Logo and slogan: upright Outfit in near-white as on the business card, set 20% larger than the
   card's proportion and tucked close under the wordmark (owner, 2026-10-30). */
.site-head .logo{display:flex;flex-direction:column;align-items:center;gap:6px;text-decoration:none}
.site-head .logo img{height:82px;width:auto;display:block}   /* the swaying logo leaves room above the leaves */
.site-head .logo picture{display:block}
@media (prefers-reduced-motion: reduce){.site-head .logo img{height:72px}}   /* the still logo has no room above the leaves */
.site-head .logo{margin-right:28px}   /* room between the logo and the menu (owner, 2026-10-30) */
.site-head .slogan,.site-foot .slogan{font-family:Outfit,var(--body);font-weight:600;font-size:13px;line-height:1;color:#F4F6F1;white-space:nowrap}
@media (max-width:720px){.site-head .logo img{height:64px}.site-head .logo{gap:4px}.site-head .slogan,.site-foot .slogan{font-size:12px}}
.site-nav{display:flex;flex-wrap:wrap;gap:6px 24px;flex:1 1 420px}
.site-head .site-nav a{color:#fff;text-decoration:none;font-size:15px;font-weight:500;padding:6px 0;border-bottom:2px solid transparent}
.site-head .site-nav a:hover{color:#fff;border-bottom-color:var(--rail-line-2)}
.site-head .site-nav a[aria-current="page"]{color:#fff;border-bottom-color:var(--green)}
.site-head a.phone{color:#fff;text-decoration:none;font-weight:600;font-size:15px}
.site-head .btn{min-height:44px;padding:11px 18px;font-size:15px}
/* Phones: the header stays short enough to keep at the top - logo, then the menu on one line that
   scrolls sideways; the estimate button is left to the page itself. */
@media (max-width:720px){
  .site-head .wrap{gap:8px 20px;padding-top:10px;padding-bottom:6px}
  .site-head a.phone,.site-head .btn{display:none}
  .site-nav{order:3;flex:1 1 100%;flex-wrap:nowrap;overflow-x:auto;gap:22px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .site-nav::-webkit-scrollbar{display:none}
  .site-head .site-nav a{white-space:nowrap;padding:8px 0}
}

/* hero */
.hero{display:flex;flex-wrap:wrap;gap:48px;align-items:center;padding-top:64px;padding-bottom:96px}
.hero>.copy{flex:1 1 520px;min-width:0}
.hero>.side{flex:1 1 380px;min-width:0}
.pill{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--rail-line-2);border-radius:var(--r-pill);padding:6px 14px;font-size:13px;font-weight:600;color:var(--sage);letter-spacing:.02em}
.page-hero{padding-top:56px;padding-bottom:72px}
.page-hero h1{font-size:clamp(36px,5vw,58px);max-width:880px}

/* scan card */
.scan{background:var(--rail-panel);border:1px solid var(--rail-line);border-radius:var(--r-big);padding:28px}
.scan-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.scan-head b{font-family:var(--display);font-size:18px;color:#fff}
.scan-head span{font-size:13px;color:var(--sage-dim)}
.meter{margin-top:18px}
.meter .top{display:flex;justify-content:space-between;gap:12px;font-size:15px}
.meter .top span:first-child{color:var(--on-rail);font-weight:500}
.meter .top span:last-child{font-weight:700}
.meter .bar{height:10px;background:var(--rail);border-radius:var(--r-pill);margin-top:8px;overflow:hidden}
.meter .bar i{display:block;height:10px;border-radius:var(--r-pill)}
.meter .note{font-size:13px;color:var(--sage-dim);margin-top:6px}
.meter.full .top span:last-child{color:var(--amber)}.meter.full .bar i{background:var(--amber)}
.meter.ok .top span:last-child{color:#8BC34A}.meter.ok .bar i{background:#8BC34A}
.scan-foot{border-top:1px solid var(--rail-line);margin-top:24px;padding-top:16px;font-size:14px;color:var(--sage)}

/* stats strip */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:24px 48px;padding-top:36px;padding-bottom:36px}
.stat b{display:block;font-family:var(--display);font-weight:900;font-size:44px;line-height:1.1;color:var(--green)}
.stat span{font-size:15px;color:var(--sage)}

/* cards + grids */
.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--min,260px)),1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:28px}
.card p{color:var(--ink-2);font-size:16px;line-height:1.55;margin-top:8px}
.card .ico{width:44px;height:44px;border-radius:10px;background:var(--green-tint);display:flex;align-items:center;justify-content:center;margin-bottom:20px}
.card .ico svg{width:22px;height:22px;stroke:var(--green-dark);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tint{background:var(--green-tint-2);border-top:1px solid var(--green-border);border-bottom:1px solid var(--green-border)}
.step{border-top:4px solid var(--green);padding-top:24px}
.step .n{font-family:var(--display);font-weight:900;font-size:56px;color:var(--green-border);line-height:1}
.step h3{font-size:24px;margin-top:16px}
.step p{color:var(--ink-2);margin-top:10px}
.split{display:flex;flex-wrap:wrap;gap:48px;align-items:center}
.split>*{flex:1 1 440px;min-width:0}
.split.top{align-items:flex-start}
.ticks{list-style:none;padding:0;margin:0;display:grid;gap:20px}
/* .ticks{margin:0} came after the .stack-* rules and cancelled their gap above a list, so a
   heading sat right on its first item ("Nothing changes for your team"). */
.stack-12>*+.ticks{margin-top:12px}.stack-16>*+.ticks{margin-top:20px}.stack-24>*+.ticks{margin-top:24px}
.ticks li{display:flex;gap:12px;align-items:flex-start}
.ticks li svg{flex:none;width:22px;height:22px;margin-top:2px;stroke:var(--green-dark);fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.dark .ticks li svg{stroke:var(--green)}
.ticks b{display:block;margin-bottom:3px}
.ticks span{color:var(--ink-2)}
.dark .ticks span{color:var(--sage)}
.band{display:flex;flex-wrap:wrap;gap:24px 32px;align-items:center;justify-content:space-between;padding-top:72px;padding-bottom:72px}
.band>div{flex:1 1 520px;min-width:0}
.person{display:flex;gap:24px;align-items:flex-start}
.person>div{min-width:0}   /* the text column may shrink, so a long title (ADMINISTRATIVE) wraps instead of widening the card */
.person .role{overflow-wrap:anywhere}
/* Phones: the photo above the text, so the bio and email get the card's full width (the distributors' small cards stay side by side). */
@media (max-width:480px){.person:not(.agent){flex-direction:column;align-items:flex-start}}
/* About: each person's round photo (initials until there is one), as in mockup A (owner, 2026-10-30). */
.person .face{flex:none;width:168px;height:168px;border-radius:var(--r-pill);background:var(--rail);color:var(--green-border);display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:800;font-size:40px}
.person img.face{object-fit:cover;border:4px solid var(--green);background:var(--green-tint)}   /* bold ring in the logo green #5CAA16 (owner, 2026-10-30) */
@media (max-width:480px){.person img.face{border-width:3px}}
/* People's names one step lighter than the header green, so they read as green rather than black (the rail's
   panel green #1C4A2C, 10:1 on white; owner chose it over #265C39, 2026-10-30). */
.person h3,.person h4{font-family:var(--display);font-weight:700;font-size:21px;line-height:1.1;margin:6px 0 0;color:var(--rail-panel)}
/* About: the people in one list of cards (each card carries the title), then Distributors as their own group (owner, 2026-10-30). */
.team-group{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;padding-top:24px}
.team-group .grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--min,260px)),1fr))}   /* a group of one keeps the card size */
.team-group>h3{font-family:var(--body);font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--green-label);padding-bottom:10px;border-bottom:1px solid var(--line)}
/* About: the agents, in smaller cards (name and role; initials until a photo is sent). */
.person.agent{align-items:center;padding:22px 24px}
.person.agent .face{width:168px;height:168px;font-size:52px}   /* distributors the same size as the team (owner 2026-11-02) */
.person.agent h4{margin-top:0;font-size:20px}
.person.agent img.face{border-width:3px}   /* the small agent photos get a thinner ring */
@media (max-width:480px){.person{gap:16px}.person .face{width:120px;height:120px;font-size:36px}.person.agent .face{width:120px;height:120px;font-size:36px}}
.person .role{font-size:14px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--green-label);margin-top:4px}
.ind h3{font-size:22px}
.ind .eg{font-size:14px;color:var(--ink-3);margin-top:12px}

/* forms */
.field label{display:block;font-size:14px;font-weight:600;color:var(--ink-2)}
.field input,.field select,.field textarea{display:block;width:100%;margin-top:6px;min-height:48px;border:1px solid var(--line-strong);border-radius:var(--r-input);padding:10px 14px;font-size:16px;font-family:inherit;background:#fff;color:var(--ink)}
.field textarea{min-height:120px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px}
.form .full{grid-column:1/-1}
.form-note{font-size:15px;border-radius:var(--r-ctl);padding:14px 16px;background:var(--green-tint);color:var(--green-darker)}
.form-note[hidden]{display:none}
.result{background:var(--green-tint);border-radius:var(--r-card);padding:20px 24px;margin-top:24px}
.result .lbl{font-size:14px;color:var(--green-darker);font-weight:600}
.result .big{font-family:var(--display);font-weight:900;font-size:44px;color:var(--green-darker);line-height:1.15}
.result .sub{font-size:15px;color:var(--green-darker)}

/* footer */
.site-foot .wrap{display:flex;flex-wrap:wrap;gap:32px 56px;padding-top:56px;padding-bottom:40px}
.site-foot .col{flex:1 1 180px;min-width:0;font-size:15px}
.site-foot .col.brand{flex:2 1 280px}
.site-foot img{height:82px;width:auto;display:block}   /* same size as the header logo (owner, 2026-10-30) */
.site-foot picture{display:block}
@media (prefers-reduced-motion: reduce){.site-foot img{height:72px}}
@media (max-width:720px){.site-foot img{height:64px}}
@media (max-width:720px) and (prefers-reduced-motion: reduce){.site-foot img{height:56px}}
.site-foot .foot-logo{display:inline-flex;flex-direction:column;align-items:center;gap:6px}   /* logo + slogan, as in the header */
@media (max-width:720px){.site-foot .foot-logo{gap:4px}}
.site-foot h4{margin:0 0 12px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--sage-dim)}
.site-foot a{color:var(--sage);text-decoration:none;display:block;padding:4px 0}
.site-foot a:hover{color:#fff}
.site-foot .legal{border-top:1px solid var(--rail-line);flex-basis:100%;padding-top:20px;font-size:14px;color:var(--sage-dim);display:flex;flex-wrap:wrap;gap:8px 24px}
.site-foot .legal a{display:inline;padding:0}
/* the forms' hidden field: people never see it; a bot that fills it in is ignored */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-note.err{background:#FCEBEB;color:#791F1F}

/* Home hero: the example scan cycles through kinds of site, as heylobey.com's hero does -
   a label and dots above the card, the bars growing in as each one shows. */
.rotator{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:16px}
.rot-label{font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--sage)}
.dots{display:flex;gap:4px}
.dot{width:24px;height:24px;padding:0;border:0;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center}
.dot::before{content:"";width:9px;height:9px;border-radius:var(--r-pill);border:1.5px solid var(--sage-dim);transition:background .2s,border-color .2s}
.dot[aria-pressed="true"]::before{background:var(--green);border-color:var(--green)}
.dot:hover::before{border-color:#fff}

/* Home hero on the light page background (owner chose mockup option 1, 2026-10-30): dark green
   text, the example scan as the one dark card. */
.hero-light{background:var(--page)}
.hero-light .pill{border-color:var(--green-border);background:var(--green-tint-2);color:var(--green-dark)}
.hero-light .btn-line{border:1.5px solid var(--ink);color:var(--ink)}
.hero-light .btn-line:hover{background:var(--green-tint);color:var(--ink)}
.hero-light .rot-label{color:var(--green-label)}
.hero-light .dot::before{border-color:var(--ink-3)}
.hero-light .dot:hover::before{border-color:var(--ink)}
.hero-light .scan{background:var(--rail);border-color:var(--rail);box-shadow:0 18px 40px rgba(21,58,34,.18)}
.hero-light .meter .bar{background:var(--rail-deep)}
/* Inside pages open the same way (owner, 2026-10-30), with a line where the opening meets the
   next light section. */
.page-top{border-bottom:1px solid var(--line)}
.dot:focus-visible{outline:2px solid var(--green);outline-offset:1px;border-radius:var(--r-pill)}
.meter .bar i{transition:width .9s cubic-bezier(.2,.7,.2,1)}
#scanRows{transition:opacity .25s}
#scanRows.fading{opacity:0}

/* About: one list of people cards; a last card on its own keeps the normal width. */
.grid.team{grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--min,260px)),1fr));padding-top:8px}

/* About: each person's email under the bio (email only, no phone numbers; owner 2026-10-31). */
.person .contact{display:grid;gap:6px;margin-top:14px;font-size:15px;font-weight:600}
.person .contact a{display:inline-flex;align-items:center;gap:8px;color:var(--green-label);text-decoration:none;justify-self:start;max-width:100%;min-width:0;overflow-wrap:anywhere}
.person .contact a:hover{text-decoration:underline}
.person .contact svg{flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* How it works: bridging animation (bridging.js) */
.br-player{margin-top:32px;width:100%;box-shadow:0 18px 40px rgba(21,58,34,.10);background:var(--card);border:1px solid var(--line);border-radius:var(--r-big);overflow:hidden}
.br-stage{display:block;width:100%;height:auto;background:#EEF3E8}
.br-cap{min-height:96px;padding:14px 20px 10px;border-top:1px solid var(--line)}
.br-new{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:var(--r-pill);background:var(--green-tint);letter-spacing:.02em}
.br-cap p{margin:6px 0 0;font-size:17px;line-height:1.5;color:var(--ink)}
.br-bar{display:flex;align-items:center;gap:8px;padding:10px 14px 14px;flex-wrap:wrap}
.br-btn{font:600 14px var(--body);border:1px solid var(--line-strong);background:var(--card);color:var(--ink);border-radius:var(--r-ctl);padding:8px 14px;cursor:pointer;min-height:40px}
.br-btn:hover{border-color:var(--green)}
.br-btn.go{background:var(--green);border-color:var(--green);color:var(--rail-deep);min-width:84px}
.br-prog{flex:1;min-width:120px;height:6px;background:var(--line);border-radius:var(--r-pill);overflow:hidden;cursor:pointer}
.br-prog i{display:block;height:100%;width:0;background:var(--green)}
.br-time{font-size:12px;color:var(--ink-3,#6b8574);font-variant-numeric:tabular-nums;min-width:76px;text-align:right}
@media (max-width:600px){.br-cap p{font-size:15px}.br-time{display:none}}

/* Who we serve: logos scroll right to left (site.js copies them to fill the row and starts it) */
.ws{padding:56px 0 64px;background:#fff;border-bottom:1px solid var(--line)}
.ws .eyebrow,.ws h2{text-align:center}
.ws h2{font-size:clamp(24px,2.6vw,30px);margin:8px 0 34px}
.ws-view{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.ws-track{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;row-gap:28px}
.ws-track img{height:calc(var(--h,56px) * .85);width:auto;flex:none;margin:0 44px}
.ws-track.run{justify-content:flex-start;flex-wrap:nowrap;width:max-content;animation:wsRun var(--ws-dur,20s) linear infinite}
.ws-view:hover .ws-track.run{animation-play-state:paused}
.ws-track+.ws-track{margin-top:30px}
.ws-track.rev.run{animation-direction:reverse}
@keyframes wsRun{to{transform:translateX(-50%)}}
@media (max-width:600px){.ws{padding:44px 0 48px}.ws-track img{height:calc(var(--h,56px) * .66);margin:0 28px}.ws-track+.ws-track{margin-top:22px}}
@media (max-width:720px) and (prefers-reduced-motion: reduce){.site-head .logo img{height:56px}}

/* ---- How it works: the technology (owner 2026-11-02: hardware flow H1, dashboard window A) ---- */
.tflow{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin-top:32px}
.tnode{position:relative;padding:22px 20px 22px;background:var(--rail-panel);border:1px solid var(--rail-line);border-radius:14px}
.tnode .ic{width:54px;height:54px;border-radius:12px;background:rgba(92,170,22,.16);display:flex;align-items:center;justify-content:center;margin-bottom:14px}
.tnode .ic svg{width:30px;height:30px;stroke:#9fd36b;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tnode .k{font:700 11px var(--body);letter-spacing:.1em;text-transform:uppercase;color:var(--sage-dim)}
.tnode h3{color:#fff;font-size:18px;margin-top:2px}
.tnode p{color:var(--sage);font-size:15px;line-height:1.5;margin-top:6px}
.tnode:not(:last-child)::after{content:'';position:absolute;right:-21px;top:46px;width:13px;height:13px;border-top:3px solid var(--green);border-right:3px solid var(--green);transform:rotate(45deg)}
@media (max-width:980px){.tflow{grid-template-columns:repeat(2,1fr)}.tnode::after{display:none}}
@media (max-width:560px){.tflow{grid-template-columns:1fr;gap:14px}}

.tdash{background:var(--rail-deep);border:1px solid var(--rail-line);border-radius:18px;overflow:hidden;box-shadow:0 18px 40px rgba(16,44,25,.25)}
.tdash-top{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--rail-line);color:#fff;flex-wrap:wrap}
.tdash-top .dots{display:flex;gap:6px}.tdash-top .dots i{width:10px;height:10px;border-radius:50%;background:#2f6b44;display:block}
.tdash-top b{font-family:var(--display);font-size:16px}.tdash-top span{color:var(--sage-dim);font-size:13px;margin-left:auto}
.ttabs{display:flex;gap:6px;padding:14px 20px 0;flex-wrap:wrap}
.ttabs button{font:600 13.5px var(--body);color:var(--sage);background:transparent;padding:8px 14px;border-radius:999px;border:1px solid var(--rail-line);cursor:pointer}
.ttabs button:hover{color:#fff;border-color:var(--rail-line-2)}
.ttabs button[aria-selected="true"]{background:var(--green);color:var(--rail-deep);border-color:var(--green)}
.ttabs button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.tdash-body{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:18px;padding:18px 20px 20px}
.tpanel{background:var(--rail-panel);border:1px solid var(--rail-line);border-radius:12px;padding:14px 10px 10px}
.tpanel[hidden]{display:none}
.tpanel .cap{color:var(--sage);font-size:13.5px;line-height:1.5;padding:4px 8px 0}
.tpanel svg{display:block;width:100%;height:auto}
.tpanel svg text{font-family:var(--body)}
.tkpis{display:flex;flex-direction:column;gap:10px}
.tkpi{background:var(--rail-panel);border:1px solid var(--rail-line);border-radius:12px;padding:12px 14px}
.tkpi .l{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--sage-dim)}
.tkpi .v{font-family:var(--display);font-size:26px;font-weight:800;color:#fff;line-height:1.15}
.tkpi .v small{font-size:14px;color:var(--sage);font-weight:600}
.tpill{display:inline-flex;align-items:center;gap:6px;font:700 12.5px var(--body);padding:4px 10px;border-radius:999px;background:rgba(92,170,22,.18);color:#bfe39a;margin-top:6px}
.ttip{position:fixed;z-index:200;pointer-events:none;background:#fff;color:var(--ink);border-radius:8px;padding:6px 10px;font:600 13px var(--body);box-shadow:0 6px 18px rgba(0,0,0,.25);display:none;white-space:nowrap}
@media (max-width:860px){.tdash-body{grid-template-columns:1fr}.tkpis{display:grid;grid-template-columns:1fr 1fr}}

.twf{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin-top:32px;position:relative}
.twf::before{content:'';position:absolute;left:4%;right:4%;top:27px;height:3px;background:var(--green-border)}
.twf .st{position:relative;text-align:center}
.twf .wdot{width:56px;height:56px;margin:0 auto;border-radius:50%;background:#fff;border:3px solid var(--green);display:flex;align-items:center;justify-content:center}
.twf .wdot svg{width:26px;height:26px;stroke:var(--green-dark);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.twf h3{font-size:16px;margin:12px 0 4px}
.twf p{font-size:14px;color:var(--ink-2);line-height:1.45}
.twf .who{display:inline-block;margin-top:6px;font:700 10.5px var(--body);letter-spacing:.08em;text-transform:uppercase;color:var(--green-label)}
.tlog{margin-top:28px;display:flex;align-items:center;gap:12px;background:#fff;border:1px dashed var(--green-border);border-radius:12px;padding:14px 18px;font-size:15px;color:var(--ink-2)}
.tlog svg{flex:none;width:22px;height:22px;fill:none;stroke:var(--green-label);stroke-width:2}
@media (max-width:980px){
  .twf{grid-template-columns:1fr;gap:0}
  .twf::before{left:27px;right:auto;top:28px;bottom:28px;width:3px;height:auto}
  .twf .st{display:grid;grid-template-columns:56px 1fr;column-gap:16px;text-align:left;padding-bottom:18px}
  .twf .wdot{margin:0;grid-row:1 / span 3}
  .twf h3{margin-top:4px}
}

/* Home hero card: two weeks of one compactor, hauled on a calendar vs. when it is full
   (owner's pick, option B on dark green, 2026-11-02). On phones the row labels go above
   their rows so all 14 days fit. */
.hcal{background:var(--rail);border-radius:20px;padding:26px 26px 22px;box-shadow:0 18px 40px rgba(21,58,34,.22);color:#fff}
.hcal-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.hcal-head b{font-family:var(--display);font-weight:800;font-size:19px}
.hcal-head span{font-size:13px;color:var(--sage-dim)}
.hcal-sub{font-size:13.5px;color:var(--sage);margin-top:2px}
.hcal-grid{display:grid;grid-template-columns:96px repeat(14,1fr);gap:4px 3px;margin-top:20px;align-items:center}
.hcal-grid .d{font-size:11px;font-weight:700;color:var(--sage-dim);text-align:center}
.hcal-grid .wk{grid-column:span 7;font-size:11px;color:var(--sage-dim);text-align:center;border-bottom:1px solid var(--rail-line);padding-bottom:3px}
.hcal-grid .rl{font-size:13px;font-weight:700;line-height:1.2}
.hcal-grid .rl small{display:block;font-weight:500;color:var(--sage-dim);font-size:11.5px}
.hcal .cell{height:62px;border-radius:8px;background:var(--rail-panel);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.hcal .cell svg{width:24px;height:16px}
.hcal .cell b{font-size:11px}
.hcal .cell.g{background:#2a4f37}.hcal .cell.g svg{fill:#86a690}.hcal .cell.g b{color:#a3bcab}
.hcal .cell.w{background:#2f6a1c;box-shadow:inset 0 0 0 1.5px var(--green)}.hcal .cell.w svg{fill:#b9e08e}.hcal .cell.w b{color:#d8efc0}
.hcal-tot{display:flex;gap:14px;align-items:center;margin-top:20px;padding-top:16px;border-top:1px solid var(--rail-line)}
.hcal-tot s,.hcal-tot b{font-family:var(--display);font-weight:900;font-size:34px;line-height:1}
.hcal-tot s{color:#6f8f79;text-decoration-thickness:3px}.hcal-tot b{color:#9fd36b}
.hcal-tot span{font-size:14px;color:var(--sage)}
@media (max-width:560px){
  .hcal{padding:20px 16px 18px}
  .hcal-grid{grid-template-columns:repeat(14,1fr);gap:3px 2px}
  .hcal-grid .sp{display:none}
  .hcal-grid .rl{grid-column:1/-1;margin-top:8px}
  .hcal .cell{height:48px;border-radius:6px}
  .hcal .cell svg{width:17px;height:11px}
  .hcal .cell b{font-size:9.5px;letter-spacing:-.02em}
}

/* Home hero card, two tabs (owner 2026-11-02): "Fixed schedule" and "Pressure gauge" - sites
   that call the hauler when the compactor's pressure gauge reads full, which can be a false
   alarm (amber). site.js switches the tabs every few seconds until someone picks one. */
.hero-easy{font-weight:600;color:var(--green-label);font-size:16px}
.htabs{display:flex;gap:6px;margin-top:16px;flex-wrap:wrap}
.htabs button{font:600 13.5px var(--body);padding:7px 14px;border-radius:var(--r-pill);border:1px solid var(--rail-line-2);background:transparent;color:var(--sage);cursor:pointer}
.htabs button:hover{color:#fff;border-color:var(--sage-dim)}
.htabs button[aria-selected=true]{background:var(--green);border-color:var(--green);color:#0f2a12}
.htabs button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.hcal .cell.f{background:#4a3a14;box-shadow:inset 0 0 0 1.5px var(--amber)}.hcal .cell.f svg{fill:#f2b65a}.hcal .cell.f b{color:#ffd79a}
.hcal-note{display:flex;gap:8px;align-items:center;font-size:12.5px;color:var(--sage);margin-top:12px}
.hcal-note i{width:12px;height:12px;border-radius:3px;background:#4a3a14;box-shadow:inset 0 0 0 1.5px var(--amber);flex:0 0 auto}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.hpanels{display:grid}.hpanel{grid-area:1/1}
.hpanel[hidden]{display:block;visibility:hidden}  /* both panels keep their space, so the card does not jump when the tabs switch */
.hcal-grid:has(.rl){grid-template-columns:repeat(14,minmax(0,1fr))}
.hcal-grid .sp{display:none}.hcal-grid .rl{grid-column:1/-1;margin-top:10px}
.hcal-grid .rl small{display:inline;margin-left:8px}
.hcal .cell b{letter-spacing:-.03em}
@media (max-width:560px){.hcal-grid:has(.rl){grid-template-columns:repeat(14,minmax(0,1fr))}}

/* Home hero: the card stands as tall as the text beside it (owner 2026-11-02). The week rows
   take the extra height; on narrow screens (stacked) it is its natural size. */
.hero-cal .copy>.hero-why{margin-top:6px;font-size:15px}.hero-why a{color:var(--green-dark);font-weight:600}
.hcal-note a{color:#cfe8b0;font-weight:600;white-space:nowrap}
@media (min-width:1100px){
  .hero.hero-cal{align-items:center}
  .hero-cal>.copy{display:flex;flex-direction:column;align-items:flex-start}
  .hero-cal>.side{display:flex;flex-direction:column}
  .hero-cal .hcal{display:flex;flex-direction:column;padding:32px 32px 26px}
  .hero-cal .hcal-head b{font-size:22px}
  .hero-cal .hcal-sub{font-size:14.5px}
  .hero-cal .hpanels{flex:1}
  .hero-cal .hpanel{display:flex;flex-direction:column}
  .hero-cal .hpanel[hidden]{display:flex}
  .hero-cal .hcal-grid{grid-template-rows:auto auto auto 50px auto 50px;align-content:start;row-gap:8px;column-gap:5px}
  .hero-cal .hcal .cell{height:auto;align-self:stretch;gap:6px}
  .hero-cal .hcal .cell svg{width:28px;height:19px}
  .hero-cal .hcal .cell b{font-size:12px}
  .hero-cal .hcal-grid .rl{font-size:14px}
  .hero-cal .hcal-tot s,.hero-cal .hcal-tot b{font-size:40px}
  .hero-cal .hcal-tot span{font-size:15px}
}
/* the % sign is smaller so "61%" fits the narrow day columns */
.hcal .cell b{white-space:nowrap;letter-spacing:-.02em}.hcal .cell b{text-align:center;line-height:1.05}.hcal .cell b small{display:block;font-size:.8em;font-weight:700}
.hcal .cell svg{width:20px;height:13px}.hcal .cell b{font-size:10.5px}
@media (min-width:1100px){.hero-cal .hcal .cell svg{width:21px;height:14px}.hero-cal .hcal .cell b{font-size:13px}.hero-cal .hcal-grid{column-gap:4px}}
@media (max-width:400px){.hcal .cell svg{width:16px;height:11px}.hcal .cell b{font-size:9.5px}}
/* Home hero, compact (owner's pick "A", 2026-11-02): smaller headline, less padding, and the card at
   its natural height so the section uses less of the screen. */
.hero.hero-cal{padding-top:36px;padding-bottom:48px;gap:40px}
.hero-cal h1{font-size:clamp(36px,4.4vw,56px)}
.hero-cal .lede{font-size:18px}
.hero-cal .copy.stack-24>*+*{margin-top:18px}
.hero-cal .copy>.hero-why{margin-top:10px}
.hcal-note i.cal{background:#2a4f37;box-shadow:inset 0 0 0 1.5px #86a690}
/* Home: "Same waste. Fewer trips." (owner's pick B, 2026-11-02). The trips Wastenet saves are drawn as
   the favicon's leaves, so the logo's meaning is shown, not said. */
.road{background:var(--rail);color:#fff}
.road .wrap{display:flex;gap:48px;align-items:center;flex-wrap:wrap}
.road-txt{flex:1 1 420px}.road h2{color:#fff}.road .lede{color:var(--sage)}.road .eyebrow{color:#9fd36b}
.road-lane{flex:1 1 520px;background:var(--rail-panel);border:1px solid var(--rail-line);border-radius:20px;padding:26px}
.road-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:6px}
.road-head b{font-family:var(--display);font-size:18px}.road-head span{font-size:13px;color:var(--sage-dim)}
.road-row{display:flex;gap:14px;align-items:center;margin-top:14px}
.road-row .lab{flex:0 0 120px;font-size:13px;font-weight:700}.road-row .lab small{display:block;font-weight:500;color:var(--sage-dim)}
.road-row .icons{display:flex;gap:14px;align-items:center}
.road-row svg{width:64px;height:40px;flex:none}
.road-row.cal svg{fill:#86a690}.road-row.wn svg{fill:#9fd36b}
.road-row img.leaves{width:40px;height:40px;margin:0 12px;flex:none}
.road-foot{margin-top:18px;padding-top:14px;border-top:1px solid var(--rail-line);color:var(--sage);font-size:14px}
@media (max-width:560px){.road-row{flex-wrap:wrap;gap:6px}.road-row .lab{flex:1 1 100%}.road-row .icons{gap:10px}.road-row svg{width:48px;height:30px}.road-row img.leaves{width:30px;height:30px;margin:0 9px}.road-lane{padding:20px}}
/* About: "Save contact" opens a business card like the printed ones (owner 2026-11-02). Each card's contact
   lives in site/contacts/<first-last>.vcf, so mobile numbers are never in the page itself; the QR code
   (computers) and "Add to my contacts" (phones) both open that file. */
.vc-btn{display:inline-flex;align-items:center;gap:6px;margin:8px 0 0;font:600 14px var(--body);color:var(--green-dark);background:var(--green-tint);border:1px solid var(--green-border);border-radius:var(--r-pill);padding:5px 12px;cursor:pointer;width:auto}
.vc-btn:hover{background:var(--green-tint-2);border-color:var(--green)}
.vc-btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}
.person .contact{display:flex;flex-direction:column;align-items:flex-start}
.vc-ov{position:fixed;inset:0;background:rgba(8,24,13,.86);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px;overflow:auto}
.vc-ov[hidden]{display:none}
.vc-box{width:min(620px,100%)}
.vc-card{background:var(--rail);border-radius:22px;color:#fff;display:flex;gap:28px;padding:28px;box-shadow:0 30px 60px rgba(0,0,0,.35)}
.vc-left{flex:0 0 190px;display:flex;flex-direction:column;align-items:center;gap:12px}
.vc-left img{width:170px;height:auto}
.vc-qr{background:#fff;border-radius:12px;padding:10px;width:170px;height:170px}
.vc-qr svg{width:100%;height:100%;display:block}
.vc-left small{font:700 11px var(--body);letter-spacing:.14em;color:var(--green);text-transform:uppercase}
.vc-right{border-left:4px solid var(--green);padding-left:24px;display:flex;flex-direction:column;justify-content:center;gap:6px;min-width:0}
.vc-right h3{font-family:Georgia,"Times New Roman",serif;font-weight:700;font-size:30px;margin:0;color:#fff}
.vc-right .t{font:700 12px var(--body);letter-spacing:.14em;color:var(--green);text-transform:uppercase}
.vc-right .ph{font:700 26px var(--display);margin-top:10px}.vc-right .ph small{display:block;font:700 11px var(--body);letter-spacing:.14em;color:var(--green);text-transform:uppercase}
.vc-right .em{font-weight:600;margin-top:6px;overflow-wrap:anywhere}.vc-right .ad{color:#7fc34a;font-size:14px;line-height:1.5;margin-top:8px}
.vc-acts{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap}
.vc-acts .btn-line{background:#fff;color:var(--ink);border-color:#fff}
.vc-note{color:#e8f2e0;text-align:center;font-size:14px;margin-top:10px}
.vc-note .mob{display:none}
@media (max-width:620px){
  .vc-card{flex-direction:column;align-items:center;gap:16px;padding:22px}
  .vc-left{flex:none}.vc-left .vc-qr,.vc-left small{display:none}
  .vc-right{border-left:0;padding:0;text-align:center;width:100%}
  .vc-acts .btn-go{flex:1 1 100%;text-align:center}
  .vc-note .pc{display:none}.vc-note .mob{display:inline}
}
/* About: distributor cards as big as Our team's (owner 2026-11-02), two to a row, each with
   the industries of the clients they introduced (industries only, no client names). */
.team-group .grid.agents-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:760px){.team-group .grid.agents-grid{grid-template-columns:minmax(0,1fr)}}
.person.agent{padding:28px;align-items:flex-start}
.person.agent h4{font-size:21px;margin-top:6px}
.person.agent .ind-h{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-top:12px}
.person.agent .ind{font-size:16px;color:var(--ink-2);margin-top:4px}

/* Home hero, David's Option 5 / C (2026-11-03): two numbered points on the left; on the
   right one dark box headed "Compactor Monitoring Program, administered by Wastenet"
   with the free trial. */
.h5{display:flex;flex-wrap:wrap;gap:40px;align-items:center;padding-top:44px;padding-bottom:56px}
.h5-copy{flex:1 1 520px;display:flex;flex-direction:column;gap:24px}
.h5-kicker{font-family:var(--display);font-weight:800;font-size:clamp(20px,2.2vw,28px);letter-spacing:.06em;text-transform:uppercase;color:var(--green-label);line-height:1.15;margin:0}
.h5-kicker span{color:inherit;font-weight:inherit}
.h5-pt{display:flex;gap:16px;align-items:flex-start}
.h5-pt+.h5-pt{margin-top:28px}
.h5-pt b{display:block;font-family:var(--display);font-weight:900;color:var(--ink);letter-spacing:-.01em;line-height:1.1;font-size:32px}
.h5-pt div>span{display:block;font-size:19px;line-height:1.45;color:var(--ink-2);margin-top:8px}
.h5-n{flex:none;width:44px;height:44px;border-radius:50%;background:var(--green);color:#0f2a12;font:900 20px var(--display);display:flex;align-items:center;justify-content:center}
.h5-box{flex:1 1 360px;background:var(--rail);border-radius:20px;padding:30px;color:#fff;display:flex;flex-direction:column;gap:12px}
.h5-prog{border-bottom:1px solid rgba(255,255,255,.18);padding-bottom:16px;margin-bottom:6px}
.h5-prog .t1{font:900 19px var(--display);letter-spacing:.07em;text-transform:uppercase;color:#fff}
.h5-prog .t2{font-size:15px;color:var(--sage);margin-top:3px}
.h5-prog .t2 b{color:#9bd65a;font-weight:700}
.h5-try{font:900 36px var(--display);line-height:1.1}
.h5-note{color:var(--sage);font-size:16px}
.hero-light .h5-box .btn-line{border-color:#fff;color:#fff}
.hero-light .h5-box .btn-line:hover{background:rgba(255,255,255,.1);color:#fff}
@media (max-width:640px){.h5-pt b{font-size:27px}.h5-pt div>span{font-size:17px}.h5-try{font-size:30px}.h5-box{padding:24px}}
/* "Why Wastenet is different" cards and the free-trial band (home, 2026-11-03). */
.diff{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px;padding-top:22px}
.dc{background:#fff;border:1px solid var(--green-border);border-radius:18px;padding:24px 24px 26px}
.dc .ic{width:46px;height:46px;border-radius:12px;background:var(--green-tint);display:flex;align-items:center;justify-content:center;margin-bottom:14px}
.dc .ic svg{width:26px;height:26px;stroke:var(--green-dark);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.dc h3{font-size:20px;line-height:1.2;margin-bottom:8px}
.dc p{font-size:15.5px;color:var(--ink-2);line-height:1.55}
.trial{display:flex;gap:28px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.trial p{color:var(--sage);max-width:640px;font-size:17px}
.trial .eyebrow{color:#9bd65a}

/* How it works: installation cards and the three-graphs cards (2026-11-03). */
.icard{background:#fff;border:1px solid var(--green-border);border-radius:18px;padding:24px}
.icard h3{font-size:19px;margin:10px 0 6px}
.icard p{color:var(--ink-2);font-size:15.5px}
.inum{width:40px;height:40px;border-radius:50%;background:var(--green-tint);color:var(--green-dark);font:900 18px var(--display);display:flex;align-items:center;justify-content:center}
.gsvg{width:100%;height:auto;background:#f4f8f1;border-radius:12px;margin-bottom:10px}

/* Support page: numbered steps and a caution note (2026-11-03). */
.steps{counter-reset:s;list-style:none;padding:0;margin:0;display:grid;gap:14px}
.steps li{counter-increment:s;display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.steps li::before{content:counter(s);flex:none;width:32px;height:32px;border-radius:50%;background:var(--green);color:#0f2a12;font:900 16px var(--display);display:flex;align-items:center;justify-content:center}
.steps b{display:block}
.steps span{color:var(--ink-2)}
.warn{background:#fff7e6;border:1px solid #f0d49a;border-radius:14px;padding:16px 18px;color:#5a4300}
/* Six menu items (Support added 2026-11-03): keep them on one line on mid-size screens. */
@media (min-width:721px) and (max-width:1279px){.site-nav{gap:6px 18px}.site-head .site-nav a{font-size:14.5px}.site-head .wrap{column-gap:20px}}
@media (min-width:721px) and (max-width:1100px){.site-nav{gap:6px 14px}.site-head .site-nav a{font-size:14px}.site-head .wrap{column-gap:16px}}
@media (min-width:721px) and (max-width:1180px){.site-head a.phone{display:none}}

/* How it works "What we look at" (2026-11-03): heading and text above, the four-view
   dashboard full width below (it replaced the separate "Three graphs" cards). */
.tlook-head{display:flex;flex-wrap:wrap;gap:16px 48px;align-items:flex-end;margin-bottom:28px}
.tlook-head>.stack-16{flex:1 1 340px}
.tlook-head .lede{flex:1 1 460px}
.tlook-more{padding-top:22px}
.tpanel .cap b{color:#fff}
/* The four-view dashboard is capped so its chart fits on screen with its caption
   (owner 2026-11-03: "graphic is too big"); it sits centred under the heading. */
#what-we-look-at .tdash{max-width:980px;margin:0 auto}
#what-we-look-at .tlook-head,#what-we-look-at .tlook-more{max-width:980px;margin-left:auto;margin-right:auto}
#what-we-look-at .tdash-body{grid-template-columns:minmax(0,1fr) 200px}
#what-we-look-at .tkpi .v{font-size:23px}
