/* R-DUB'S shared site shell + components (v335; attached-site pass v344 at the end of this file).
   Include on every PUBLIC page:  <link rel="stylesheet" href="/rd-shell.css">  +  <script src="/rd-shell.js" defer></script>
   Header/footer classes are prefixed rds-, reusable components rd-. Nothing here uses bare element selectors,
   so it cannot collide with a page's own header/nav/footer rules. See SHELL-NOTES.md. */

/* ---- tokens: use the page's own tokens when present, fall back to the site palette ---- */
html{--k-bg:var(--bg,#09070c);--k-panel:var(--panel,#17111d);--k-panel2:var(--panel2,#211629);--k-text:var(--text,#faf8fc);--k-muted:var(--muted,#b9afbf);--k-line:var(--line,#3c2c45);--k-green:var(--green,#67ef37);--k-on:var(--on-green,#10120f);--k-purple:var(--purple,#9a50e5);--k-hi:var(--purple-hi,#b07cf0);--k-head:var(--header-bg,#0b080df2);--k-link:var(--nav-link,#d0c7d5);--k-cardA:var(--card-bg-a,#1b1322);--k-cardB:var(--card-bg-b,#120e17);--k-shadow:var(--card-shadow,#0006);--k-ph1:#2a1a3a;--k-ph2:#321f45;--k-ph-fade:#0007;--k-chip-bg:#000a;--k-chip-tx:#e9e2ee;--k-chip-ln:#ffffff55;--k-solid:#0b080d;--k-display:var(--display,'Anton',Impact,'Arial Narrow Bold',sans-serif);--k-body:var(--body,'Archivo',Arial,Helvetica,sans-serif)}
html[data-theme="light"]{--k-bg:var(--bg,#f7f5fa);--k-panel:var(--panel,#fff);--k-panel2:var(--panel2,#f3eef9);--k-text:var(--text,#1b1523);--k-muted:var(--muted,#564d62);--k-line:var(--line,#e1d9ea);--k-green:var(--green,#2a6c0e);--k-on:var(--on-green,#fff);--k-purple:var(--purple,#7a3fc9);--k-hi:var(--purple-hi,#7a3fc9);--k-head:var(--header-bg,#fbfaffee);--k-link:var(--nav-link,#564d62);--k-cardA:var(--card-bg-a,#fff);--k-cardB:var(--card-bg-b,#faf8fd);--k-shadow:var(--card-shadow,#3d235122);--k-ph1:#e6d9f6;--k-ph2:#ddcdf0;--k-ph-fade:#0003;--k-chip-bg:#fffd;--k-chip-tx:#3d3548;--k-chip-ln:#00000033;--k-solid:#fbfaff}
html[data-theme="light"]{color-scheme:light}html[data-theme="dark"]{color-scheme:dark}
html{scroll-padding-top:84px}
.rds-slot{min-height:68px}

/* ---- header ---- */
.rds-header{position:sticky;top:0;z-index:50;background:var(--k-head);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--k-line);font-family:var(--k-body);line-height:1.2;color:var(--k-text);text-align:left}
.rds-header *,.rds-footer *{box-sizing:border-box}
.rds-in{width:min(1160px,92%);margin:0 auto;min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.rds-logo{display:flex;align-items:center;flex:none;border-radius:12px;text-decoration:none}
.rds-logo img{width:50px;height:50px;display:block}
.rds-skip{position:absolute;left:8px;top:-60px;z-index:60;background:var(--k-green);color:var(--k-on);font-weight:900;padding:12px 16px;border-radius:10px;text-decoration:none;transition:top .15s}
.rds-skip:focus{top:8px}
.rds-menu{display:flex;align-items:center;gap:2px}
.rds-link{display:inline-flex;align-items:center;min-height:44px;padding:0 11px;border-radius:10px;color:var(--k-link);font-weight:800;font-size:12.5px;letter-spacing:.07em;text-transform:uppercase;text-decoration:none;white-space:nowrap}
.rds-link:hover,.rds-link[aria-current="page"]{color:var(--k-text)}
.rds-link[aria-current="page"]{box-shadow:inset 0 -3px 0 var(--k-green);border-radius:0}
.rds-link.rds-login{border:1.5px solid var(--k-line);margin-left:6px}
.rds-link.rds-login:hover{border-color:var(--k-green);color:var(--k-green)}
.rds-call{margin-left:6px;min-height:44px!important;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;font-size:12.5px;letter-spacing:.05em;text-transform:uppercase;text-decoration:none;white-space:nowrap}
.rds-theme,.rds-burger,.rds-back{font-family:var(--k-body)}
.rds-theme{width:44px;height:44px;margin-left:6px;border-radius:12px;border:1.5px solid var(--k-line);background:transparent;color:var(--k-text);cursor:pointer;display:inline-grid;place-items:center;padding:0}
.rds-theme:hover{border-color:var(--k-green)}
.rds-theme svg{width:19px;height:19px}
.rds-seg{display:none}
.rds-burger{display:none;width:48px;height:48px;border-radius:12px;border:1.5px solid var(--k-line);background:transparent;color:var(--k-text);cursor:pointer;place-items:center;padding:0}
.rds-burger svg{width:22px;height:22px}
.rds-back{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1.5px solid var(--k-line);border-radius:12px;color:var(--k-text);font-weight:800;font-size:13px;text-decoration:none}
.rds-back:hover{border-color:var(--k-green);color:var(--k-green)}
.rds-min{display:flex;align-items:center;gap:8px}
/* pages with a bare button{} rule must not restyle the header buttons */
.rds-header button{margin-top:0;margin-bottom:0;letter-spacing:normal}
.rds-header .rds-seg button{padding:0 8px;width:auto}
.rds-header a:focus-visible,.rds-header button:focus-visible,.rds-footer a:focus-visible{outline:3px solid var(--k-green);outline-offset:2px}

@media(max-width:980px){
 .rds-in{min-height:64px}
 .rds-burger{display:inline-grid}
 .rds-menu{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;gap:0;background:var(--k-solid);border-bottom:1px solid var(--k-line);padding:6px 4vw 18px;box-shadow:0 24px 40px -20px #000a;max-height:calc(100vh - 70px);max-height:calc(100dvh - 70px);overflow:auto}
 .rds-menu.open{display:flex}
 .rds-link{min-height:52px;padding:0 4px;border-radius:0;border-bottom:1px solid var(--k-line);font-size:14px}
 .rds-link[aria-current="page"]{box-shadow:none;color:var(--k-green)}
 .rds-link.rds-login{border:0;border-bottom:1px solid var(--k-line);margin:0}
 .rds-call{margin:14px 0 0;min-height:52px!important;font-size:14px}
 .rds-theme{display:none}
 .rds-seg{display:flex;gap:6px;margin-top:14px}
 .rds-seg button{flex:1;min-height:48px;border-radius:12px;border:1.5px solid var(--k-line);background:transparent;color:var(--k-text);font:800 13px var(--k-body);letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
 .rds-seg button[aria-pressed="true"]{background:var(--k-green);border-color:var(--k-green);color:var(--k-on)}
 .rds-seg button:focus-visible{outline:3px solid var(--k-green);outline-offset:2px}
 .rds-min .rds-theme{display:inline-grid}
}

/* page-level "a{color}" rules (e.g. [data-theme=dark] a) must not recolour the header links */
.rds-header a.rds-link{color:var(--k-link)}
.rds-header a.rds-link:hover,.rds-header a.rds-link[aria-current="page"]{color:var(--k-text)}
.rds-header a.rds-login:hover{color:var(--k-green)}
.rds-header a.rds-back{color:var(--k-text)}.rds-header a.rds-back:hover{color:var(--k-green)}
.rds-header a.rds-skip{color:var(--k-on)}
@media(max-width:980px){.rds-header a.rds-link[aria-current="page"]{color:var(--k-green)}}
/* ---- footer ---- */
.rds-footer{border-top:1px solid var(--k-line);background:var(--k-solid);color:var(--k-muted);font-family:var(--k-body);font-size:14px;line-height:1.5;padding:34px 0 30px;text-align:left}
.rds-footer a{color:var(--k-text);text-decoration:none}
.rds-footer a:hover{color:var(--k-green)}
.rds-fin{width:min(1160px,92%);margin:0 auto;display:grid;gap:12px}
.rds-slogan{font-family:var(--k-display);font-weight:400;text-transform:uppercase;letter-spacing:.02em;font-size:24px;line-height:1;color:var(--k-text);margin:0}
.rds-fine{margin:0}.rds-fine a{white-space:nowrap;display:inline-block;padding:12px 2px}
.rds-flinks{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:0 4px}
.rds-flinks li{display:flex;align-items:center}
.rds-flinks li+li:before{content:"·";color:var(--k-muted);margin:0 2px}
.rds-flinks a{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;font-weight:700}
.rds-by{margin:0;font-size:13px}
.rds-by a{color:var(--k-muted);text-decoration:underline;text-underline-offset:3px;display:inline-block;padding:14px 2px}
.rds-foot-hours{margin:0;font-size:13px}
@media(min-width:760px){.rds-fin{grid-template-columns:1fr auto;align-items:end;column-gap:30px}.rds-fin .rds-fl{grid-column:1}.rds-fin .rds-fr{grid-column:2;grid-row:1/span 3;text-align:right;align-self:end}.rds-flinks{justify-content:flex-start}}
@media(max-width:380px){.rds-flinks a{padding:0 5px}}
.rds-footer.rds-minimal{padding:22px 0}

/* ---- shared components for page bodies ---- */
.rd-eyebrow{color:var(--k-green);font-size:12px;font-weight:900;letter-spacing:.18em;text-transform:uppercase;margin:0}
/* Page title: key word wrapped in <em> (or .hl) is PURPLE. Green is reserved for buttons, labels, checkmarks. */
.rd-title{font-family:var(--k-display);font-weight:400;text-transform:uppercase;letter-spacing:.01em;line-height:.95;font-size:clamp(2.7rem,7vw,5.6rem);margin:10px 0 14px;color:var(--k-text)}
.rd-title em,.rd-title .hl,.rd-h2 em,.rd-h2 .hl{font-style:normal;color:var(--k-hi)}
.rd-h2{font-family:var(--k-display);font-weight:400;text-transform:uppercase;letter-spacing:.01em;line-height:1;font-size:clamp(2rem,4.6vw,3.4rem);margin:8px 0 14px;color:var(--k-text)}
.rd-lead{color:var(--k-muted);font-size:1.05rem;line-height:1.55;max-width:60ch}

.rd-card{background:linear-gradient(180deg,var(--k-cardA),var(--k-cardB));border:1px solid var(--k-line);border-radius:20px;box-shadow:0 14px 40px -18px var(--k-shadow);color:var(--k-text);position:relative}
.rd-card.rd-flush{overflow:hidden;padding:0}
.rd-card .rd-tx{padding:16px 18px 18px}

/* Photo frame. Placeholder markup:  <div class="rd-photo sm" role="img" aria-label="Photo coming soon"><span class="rd-chip">Photo frame</span></div>
   Real photo (swap): <div class="rd-photo has-img sm"><img src="/img/x.jpg" alt="Describe it" loading="lazy"></div>
   Or let the shell swap it:  <div class="rd-photo sm" data-src="/img/x.jpg" data-alt="Describe it">...chip...</div> (falls back to the placeholder if the file is missing). */
.rd-photo{position:relative;display:block;margin:0;overflow:hidden;height:var(--rd-photo-h,120px);background:linear-gradient(180deg,transparent 40%,var(--k-ph-fade)),repeating-linear-gradient(100deg,var(--k-ph1) 0 38px,var(--k-ph2) 38px 76px),var(--k-ph1);padding:10px}
.rd-photo.sm{--rd-photo-h:84px}.rd-photo.lg{--rd-photo-h:210px}.rd-photo.portrait{height:auto;aspect-ratio:4/5}.rd-photo.round{border-radius:20px}
.rd-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.rd-photo::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 45%,var(--k-ph-fade))}
.rd-photo>*:not(img){position:relative;z-index:1}
.rd-photo.has-img .rd-chip{display:none}
.rd-chip,.rd-svcchip{display:inline-flex;align-items:center;gap:6px;font-family:var(--k-body);font-size:10px;line-height:1;letter-spacing:.12em;text-transform:uppercase;font-weight:800;background-color:var(--k-chip-bg);color:var(--k-chip-tx);padding:6px 10px 6px 26px;border-radius:99px;border:1px dashed var(--k-chip-ln);background-repeat:no-repeat;background-position:8px center;background-size:13px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23e9e2ee' stroke-width='2'%3E%3Cpath d='M4 8h3l2-3h6l2 3h3v11H4z'/%3E%3Ccircle cx='12' cy='13' r='3.5'/%3E%3C/svg%3E")}
html[data-theme="light"] .rd-chip,html[data-theme="light"] .rd-svcchip{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%233d3548' stroke-width='2'%3E%3Cpath d='M4 8h3l2-3h6l2 3h3v11H4z'/%3E%3Ccircle cx='12' cy='13' r='3.5'/%3E%3C/svg%3E")}

/* Promise card (Quality / Reliability / Transparency): <div class="rd-card rd-promise" data-num="01"><h3>..</h3><p class="sum">..</p><ul><li>..</li></ul></div> */
.rd-promise{overflow:hidden;padding:24px 22px 64px;border-top:3px solid var(--k-green)}
.rd-promise::after{content:attr(data-num);position:absolute;right:16px;bottom:-16px;font-family:var(--k-display);font-size:88px;line-height:1;color:var(--k-purple);opacity:.2;pointer-events:none}
.rd-promise h3{font-family:var(--k-display);font-weight:400;text-transform:uppercase;letter-spacing:.01em;font-size:1.9rem;line-height:1;color:var(--k-green);margin:0 0 8px;position:relative}
.rd-promise .sum{font-weight:800;font-size:1rem;line-height:1.3;margin:0 0 12px;color:var(--k-text);position:relative}
.rd-promise ul{list-style:none;margin:0;padding:0;position:relative}
.rd-promise li{position:relative;padding-left:20px;margin:10px 0;font-size:.9rem;line-height:1.45;color:var(--k-muted)}
.rd-promise li:before{content:"";position:absolute;left:0;top:.5em;width:8px;height:8px;border-radius:2px;background:var(--k-green)}

/* Buttons: .rd-btn is only the layout base. Colour/hover/busy/done come from the site's rd-buttons.css (the shell loads it if a page forgot):
   primary  = class="rd-btn go"   (green)      secondary = class="rd-btn alt"   (outlined)
   rd-buttons.js adds the spinner / success pop automatically (disabled button whose label ends in "..."). */
.rd-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:12px;font-family:var(--k-body);font-size:14px;letter-spacing:.05em;text-transform:uppercase;text-decoration:none;cursor:pointer;line-height:1.1;text-align:center}
.rd-btn.sm{min-height:44px;padding:0 16px;font-size:12.5px}


/* ================= WEBSITE MOTION (v338) =================
   Inert until rd-shell.js adds html.rd-motion (+ .rd-m-lawn / .rd-m-hover). That only happens if the owner switch is on, the visitor has NOT asked their device
   for reduced motion, and the page is not minimal / ?embed=1 / print. Without JS or the class nothing here applies and every element stays visible.
   Transform/opacity only (clip-path/stroke on decorative layers), so there is no layout shift. No loops, nothing longer than 1.4 s. */
.rdm-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.rdm-num{display:inline-block;font-variant-numeric:tabular-nums;text-align:inherit}

/* scroll reveal: .rdm-pre is added by JS only to blocks that start below the visible screen; removed again once shown */
html.rd-motion .rdm-pre{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--rdm-i,0)*var(--rdm-step,70ms))}
html.rd-motion .rdm-pre.rdm-in{opacity:1;transform:none}
html.rd-motion .rdm-pre.rdm-now{transition:none!important;opacity:1!important;transform:none!important}

/* lawn: mowing-stripe sweep behind the first block of the page (decorative, one run of 1.4 s) */
.rdm-stripes,.rdm-blades{display:none}
.rdm-host{isolation:isolate}.rdm-host.rdm-rel{position:relative}
html.rd-motion.rd-m-lawn .rdm-stripes{display:block;position:absolute;inset:0;z-index:-1;pointer-events:none;background:repeating-linear-gradient(100deg,transparent 0 46px,rgba(154,80,229,.10) 46px 92px);animation:rdmSweep 1.4s ease-out both}
html.rd-motion.rd-m-lawn[data-theme="light"] .rdm-stripes{background:repeating-linear-gradient(100deg,transparent 0 46px,rgba(122,63,201,.07) 46px 92px)}
@keyframes rdmSweep{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
/* lawn: grass-blade divider that draws itself in on top of the footer (absolute, so it never moves anything) */
html.rd-motion.rd-m-lawn .rds-footer{position:relative}
html.rd-motion.rd-m-lawn .rdm-blades{display:block;position:absolute;left:0;right:0;bottom:calc(100% - 1px);height:22px;pointer-events:none;color:var(--k-green);opacity:.85}
.rdm-blades svg{display:block;width:100%;height:100%}
.rdm-blades path{stroke-dasharray:2600;stroke-dashoffset:2600;transition:stroke-dashoffset 1.1s ease;vector-effect:non-scaling-stroke}
.rdm-blades.rdm-in path{stroke-dashoffset:0}
.rds-footer.rds-minimal .rdm-blades{height:16px}

/* hover / tap (pointer hover only for lifts, so phones never get a stuck hover). :focus-visible gets the same lift. */
html.rd-motion.rd-m-hover .rdm-h{transition:transform .25s ease,box-shadow .25s ease,border-color .2s ease,background-color .2s ease,color .2s ease}
html.rd-motion.rd-m-hover .rdm-b{transition:transform .2s ease,box-shadow .2s ease,background-color .2s ease,border-color .2s ease,color .2s ease,filter .15s ease,opacity .15s ease}
html.rd-motion.rd-m-hover .rd-chip{transition:transform .5s ease}
@media (hover:hover){
 html.rd-motion.rd-m-hover .rdm-h:hover{transform:translateY(-4px);box-shadow:0 14px 28px -12px var(--k-shadow,rgba(0,0,0,.35)),0 0 0 1px var(--k-purple,#9a50e5)}
 html.rd-motion.rd-m-hover .rdm-b:not(:disabled):not(.is-busy):hover{transform:translateY(-2px);box-shadow:0 8px 18px -10px var(--k-shadow,rgba(0,0,0,.4))}
 html.rd-motion.rd-m-hover .rdm-h:hover .rd-chip{transform:scale(1.06)}
}
/* focus keeps whatever focus ring the page already draws (outline/box-shadow untouched); the lift is added on top */
html.rd-motion.rd-m-hover .rdm-h:focus-visible,html.rd-motion.rd-m-hover .rdm-h:has(:focus-visible){transform:translateY(-4px)}
html.rd-motion.rd-m-hover .rdm-h:focus-visible .rd-chip,html.rd-motion.rd-m-hover .rdm-h:has(:focus-visible) .rd-chip{transform:scale(1.06)}
html.rd-motion.rd-m-hover .rdm-b:not(:disabled):not(.is-busy):focus-visible{transform:translateY(-2px)}
html.rd-motion.rd-m-hover .rdm-b:not(:disabled):not(.is-busy):active,html.rd-motion.rd-m-hover .rdm-h:active{transform:scale(.97)}

/* belt and braces: never animate when the visitor asked for less motion, and never in print */
@media (prefers-reduced-motion:reduce){
 html.rd-motion .rdm-pre,html.rd-motion .rdm-pre.rdm-in{opacity:1!important;transform:none!important;transition:none!important}
 .rdm-stripes{animation:none!important;clip-path:none!important}
 .rdm-blades path{stroke-dashoffset:0!important;transition:none!important}
 html.rd-motion .rdm-h,html.rd-motion .rdm-b,html.rd-motion .rd-chip{transition:none!important;transform:none!important}
}
@media print{
 html.rd-motion .rdm-pre,html.rd-motion .rdm-pre.rdm-in{opacity:1!important;transform:none!important;transition:none!important}
 .rdm-stripes,.rdm-blades{display:none!important;animation:none!important}
 html.rd-motion .rdm-h,html.rd-motion .rdm-b{transition:none!important;transform:none!important;box-shadow:none!important}
}

@media(prefers-reduced-motion:reduce){.rds-skip{transition:none}}
@media print{.rds-header,.rds-menu{position:static}.rds-burger,.rds-theme,.rds-seg{display:none!important}}
body.rds-noprint .rds-header,body.rds-noprint .rds-footer{display:none!important}

/* ================= ACCESSIBILITY (a11y v338) =================
   1. LIGHT-theme green nudged #2f7a10 -> #2a6c0e (same hue): green labels/eyebrows sat on the purple hero glow at 3.2-3.97:1; now 4.5-4.75:1 (6.5:1 on white).
      --green-ink (#255f0c) is one step darker again, for the few small green labels that sit on the strongest lilac glow (index.html phone hero uses it).
      Dark theme untouched. Buttons/labels/checks all follow the token, so they stay consistent.
   2. Form-field borders were ~1.4:1 against their surroundings (WCAG 1.4.11 asks 3:1 for the boundary of an input). Pages that use --input-border follow this token.
   3. Placeholder text was the browser default grey (3.8-4.2:1 on dark fields): now the site's muted text colour.
   4. A visible focus ring for every control that has no ring of its own (0 specificity, so page rules still win).
   5. Skip link, hidden live region, reduced-motion scrolling, forced-colors and prefers-contrast support. */
html:root[data-theme="light"]{--green:#2a6c0e;--green-ink:#255f0c;--rd-field-line:#8d7f9b;--input-border:#8d7f9b}
html:root[data-theme="dark"]{--rd-field-line:#7a6887;--input-border:#7a6887}
input::placeholder,textarea::placeholder{color:var(--k-muted);opacity:1}
:where(a[href],button,input,select,textarea,summary,[role="button"],[tabindex]:not([tabindex="-1"])):focus-visible{outline:3px solid var(--k-green);outline-offset:2px}
[tabindex="-1"]:focus{outline:none}
/* the "Questions? Talk to a real person" band is solid green: a green ring would vanish there, so use a dark ring (white in the light theme, where the band is dark green) */
.band :where(a,button):focus-visible{outline:3px solid #0d0a10;outline-offset:2px}
html[data-theme="light"] .band :where(a,button):focus-visible{outline-color:#fff}
.rds-skip{min-height:44px;display:inline-flex;align-items:center}
.rds-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}.rds-header{backdrop-filter:none;-webkit-backdrop-filter:none}}
@media(prefers-contrast:more){
 html:root[data-theme="dark"]{--line:#9c8aa9;--k-line:#9c8aa9;--input-border:#9c8aa9}
 html:root[data-theme="light"]{--line:#6f6280;--k-line:#6f6280;--input-border:#6f6280}
 .rds-link{font-weight:900}
}
@media(forced-colors:active){
 .rds-link[aria-current="page"]{box-shadow:none;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:8px}
 .rds-theme,.rds-burger,.rds-back,.rds-seg button,.rds-link.rds-login,.rds-skip{border:2px solid ButtonText}
 .rds-seg button[aria-pressed="true"]{border:4px double Highlight;text-decoration:underline}
 .rd-photo,.rd-chip{border:1px solid CanvasText}
}


/* ================= ATTACHED SITE (v344) =================
   Home link, breadcrumb, "Keep exploring" row, Showcase footer link, soft hero stripes on inner pages (option B).
   All pieces are added by rd-shell.js and can be switched off by the owner (see SHELL-NOTES.md). Nothing here applies without them. */
.rds-header [hidden],.rds-footer [hidden],.rds-flinks li[hidden]{display:none!important}
.rds-flinks li[hidden]+li:before{content:none}
/* Home link: house icon + word. Icon hidden in the cramped middle widths, shown again in the phone menu. */
.rds-link.rds-home{gap:7px}
.rds-link.rds-home svg{width:16px;height:16px;flex:none}
@media(max-width:1100px) and (min-width:981px){.rds-link.rds-home svg{display:none}.rds-link{padding:0 8px}}
/* breadcrumb: Home > Page, 44px tap targets, current page = aria-current */
.rds-crumbs{margin:0 0 4px;font-family:var(--k-body)}
.rds-crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;font:700 13px/1.2 var(--k-body)}
.rds-crumbs li{display:flex;align-items:center}
.rds-crumbs li+li:before{content:"\203A";color:var(--k-muted);margin:0 8px;font-size:16px}
html .rds-crumbs a{display:inline-flex;align-items:center;min-height:44px;padding:0 2px;color:var(--k-muted);text-decoration:underline;text-underline-offset:3px}
html .rds-crumbs a:hover{color:var(--k-green)}
.rds-crumbs [aria-current="page"]{color:var(--k-text)}
.rds-crumbs a:focus-visible{outline:3px solid var(--k-green);outline-offset:2px;border-radius:4px}
/* the breadcrumb slot reserves its height from the first paint (no layout shift when the script fills it); it stays as a spacer if the owner switches the breadcrumb off */
.rds-crumbslot{min-height:48px}
body[data-shell-crumb] .eqHero,body[data-shell-crumb] .crHero,body[data-shell-crumb] .hero{padding-top:14px}
/* the page's own old closing card is replaced by the band (it comes back by itself if the owner switches the band off) */
html.rds-has-next [data-rds-replaced-by-next]{display:none!important}
html.rds-has-next .eqEnd,html.rds-has-next .crEnd{padding-bottom:0}
/* closing band */
.rds-next,.rds-next *,.rds-crumbs,.rds-crumbs *{box-sizing:border-box}
.rds-next{margin-top:30px;border-top:1px solid var(--k-line);background:linear-gradient(180deg,var(--k-cardA),var(--k-cardB));padding:36px 0 56px;color:var(--k-text);font-family:var(--k-body)}
.rds-next-in{width:min(1160px,92%);margin:0 auto;display:grid;gap:6px}
.rds-next-btns{display:flex;flex-wrap:wrap;gap:10px}
.rds-next a.rd-btn{text-decoration:none}
.rds-next a.rd-btn.go{color:var(--k-on)}
.rds-next a.rd-btn.alt{color:var(--k-text)}
.rds-next a.rd-btn.alt:hover{color:var(--k-green)}
.rds-next a:focus-visible{outline:3px solid var(--k-green);outline-offset:2px}
@media(max-width:600px){
 .rds-next{padding:28px 0 46px}
 .rds-next-btns{flex-direction:column}.rds-next-btns .rd-btn{width:100%}
 /* footer links: two tidy columns, so no lone dot at the start of a wrapped line */
 .rds-flinks{display:grid;grid-template-columns:1fr 1fr;gap:0 8px}
 .rds-flinks li+li:before{content:none}
 .rds-flinks a{padding:0 2px}
}
/* option B: the hero stripe sweep stays on inner pages at about 45% strength (Home keeps full strength; the class is set by rd-shell.js) */
html.rds-inner .rdm-stripes{opacity:.45}
@media print{.rds-next,.rds-crumbs{display:none!important}}
