/* Polish layer: presentation only */
:root{--radius:1.25rem;--shadow:0 1px 2px rgba(58,35,28,.06),0 10px 30px -12px rgba(58,35,28,.18);--shadow-hover:0 2px 4px rgba(58,35,28,.08),0 18px 40px -14px rgba(58,35,28,.26);--ease:cubic-bezier(.2,.7,.2,1)}
body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
h1{font-size:clamp(2.2rem,1.4rem + 3.2vw,3.9rem);line-height:1.06;letter-spacing:-.018em}
h2{font-size:clamp(1.6rem,1.2rem + 1.5vw,2.35rem);line-height:1.15;letter-spacing:-.012em}
h3{line-height:1.25}
.lede{font-size:clamp(1.12rem,1rem + .4vw,1.3rem);line-height:1.6;color:var(--ink-soft)}
.kicker{display:inline-flex;align-items:center;gap:.6rem}
.kicker::before{content:"";width:1.75rem;height:2px;background:var(--sand-bright);border-radius:2px}
.band{padding-block:clamp(3rem,2rem + 4vw,5.5rem)}
.section-head{margin-bottom:clamp(1.5rem,1rem + 1.5vw,2.5rem)}
/* header */
.site-header{background:rgba(255,251,247,.86);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid rgba(184,146,124,.35)}
/* hero */
.hero{position:relative;overflow:hidden;background:radial-gradient(60rem 30rem at 85% 10%,rgba(166,107,78,.16),transparent 60%),radial-gradient(40rem 24rem at 5% 100%,rgba(90,55,46,.08),transparent 60%),var(--paper)}
.hero-photo img{border-radius:calc(var(--radius) + .25rem);box-shadow:0 30px 60px -28px rgba(58,35,28,.45)}

.hero-actions{gap:.85rem;margin-top:1.75rem}
.hero-actions .btn{padding:.95rem 1.6rem;font-size:1.05rem}
/* buttons */
.btn{transition:transform .2s var(--ease),box-shadow .2s var(--ease),background-color .2s,color .2s;font-weight:700;letter-spacing:.005em}
.btn-primary{box-shadow:0 8px 18px -8px rgba(58,35,28,.55)}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
/* cards */
.card,.ill-card{border:1px solid rgba(184,146,124,.38);box-shadow:var(--shadow);border-radius:var(--radius);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.card:hover,.ill-card:hover{box-shadow:var(--shadow-hover)}
.ill-card:hover{transform:translateY(-3px)}
.ill-card img{transition:transform .5s var(--ease)}
.ill-card:hover img{transform:scale(1.025)}
.ill-card h3 a{text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/0 2px no-repeat;transition:background-size .25s var(--ease)}
.ill-card h3 a:hover,.ill-card h3 a:focus-visible{background-size:100% 2px}
/* focus */
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:.35rem}
.btn:focus-visible{outline-offset:4px}
/* footer */
.site-footer{border-top:4px solid var(--sand-bright)}
/* reveal motion */
@media (prefers-reduced-motion:no-preference){
 .js .reveal{opacity:0;transform:translateY(14px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
 .js .reveal.is-in{opacity:1;transform:none}
 .hero h1,.hero .lede,.hero-actions{animation:ea-rise .7s var(--ease) both}
 .hero .lede{animation-delay:.08s}.hero-actions{animation-delay:.16s}
}
@keyframes ea-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.btn,.card,.ill-card,.ill-card img{transition:none}.btn:hover,.ill-card:hover,.ill-card:hover img{transform:none}.hero-photo{transform:none}}
@media (max-width:40rem){.hero-actions{flex-direction:column;align-items:stretch}.hero-actions .btn{text-align:center;justify-content:center}.hero-photo{transform:none}}
/* Oct 20 2026: Walter headshots (2x square crops, shown small) */
.founder-line{display:flex;align-items:center;gap:1rem;margin:1rem 0}
.founder-line p{margin:0}
.founder-line img{width:88px;height:88px;border-radius:50%;object-fit:cover;display:block;background:var(--cream);border:3px solid var(--cream);box-shadow:0 0 0 1.5px var(--redwood),var(--shadow)}
.founder-block .portrait--studio{max-width:240px}
.portrait--studio img{border-radius:18px;border:4px solid var(--cream);box-shadow:0 0 0 1.5px color-mix(in srgb,var(--redwood) 45%,transparent),var(--shadow)}
.counselor-intro{display:grid;gap:1.25rem 2rem;align-items:start}
.counselor-photo{margin:0;max-width:220px}
.counselor-photo img{width:100%;height:auto;display:block;border-radius:18px;border:4px solid var(--cream);background:var(--cream);box-shadow:0 0 0 1.5px color-mix(in srgb,var(--redwood) 45%,transparent),var(--shadow)}
@media (min-width:44rem){.counselor-intro{grid-template-columns:220px minmax(0,1fr)}}
@media (max-width:43.999rem){.counselor-photo{max-width:180px}.founder-block .portrait--studio{max-width:200px}}
.founder-line picture{flex:none}
@media (min-width:44rem){.founder-block:has(.portrait--studio){grid-template-columns:240px minmax(0,1fr)}}

/* Tech Guide news cards (tech-news.html and hub "In the news") */
.news-list { display: grid; grid-template-columns: 1fr; gap: 1.1rem; margin: 1.1rem 0 1.4rem; }
.news-card { padding: 1.25rem 1.4rem; }
.news-card h2, .news-card h3 { margin: 0.5rem 0 0.5rem; font-size: 1.2rem; line-height: 1.3; }
.news-card p { margin: 0.5rem 0; }
.news-card .news-date { font-size: 0.9rem; color: var(--ink-soft, #5c463c); margin-left: 0.4rem; white-space: nowrap; }
.news-card .news-helps { font-size: 0.97rem; }
.news-card .ext-links { overflow-wrap: anywhere; }

/* News cards with an image: image beside the text on wide screens, stacked on small ones */
.news-card.has-image { display: grid; grid-template-columns: 1fr; gap: 1rem; align-items: start; }
.news-figure { margin: 0; max-width: 260px; }
.news-figure img { display: block; width: 100%; height: auto; border-radius: 12px; border: 1px solid var(--rule, #e3d6c9); background: var(--paper-2, #f6eee6); }
.news-figure figcaption { font-size: 0.8rem; color: var(--ink-soft, #5c463c); margin-top: 0.35rem; }
.news-body > p:first-child { margin-top: 0; }
@media (min-width: 700px) {
  .news-card.has-image { grid-template-columns: 240px 1fr; gap: 1.4rem; }
  .news-figure { max-width: none; }
}

/* Our apps card (Tech Guide hub) */
.app-card { display: grid; grid-template-columns: 1fr; gap: 1rem; align-items: start; padding: 1.25rem 1.4rem; }
.app-icon { margin: 0; width: 96px; }
.app-icon img { display: block; width: 100%; height: auto; border-radius: 22%; border: 1px solid var(--rule, #e3d6c9); }
.app-body > p:first-child { margin-top: 0; }
.app-body h3 { margin: 0.5rem 0; font-size: 1.25rem; }
.app-body p { margin: 0.5rem 0; }
@media (min-width: 700px) { .app-card { grid-template-columns: 112px 1fr; gap: 1.4rem; } .app-icon { width: 112px; } }

/* ---- Tech Guide hub reorganization (v7) ---- */
.hub-app-line { margin: 0.9rem 0 0; font-size: 0.98rem; color: var(--ink-soft); }
.hub-top { padding-bottom: 0.5rem; }
.hub-top .chip-row { margin-bottom: 0.25rem; }
.jump-row { display: flex; flex-wrap: wrap; gap: 0.5rem 1.4rem; margin: 0 0 1rem; padding-bottom: 0.9rem; border-bottom: 1px solid var(--rule); }
.jump { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; color: var(--redwood); text-decoration: none; border-bottom: 3px solid transparent; }
.jump:hover { border-bottom-color: var(--sand-bright); }
.hub-section { padding-block: clamp(2.5rem, 2rem + 2vw, 3.75rem); scroll-margin-top: calc(var(--header-h) + 0.5rem); }
.hub-section > .wrap > h2 { margin-top: 0; }
.hub-sub { margin: 0.4rem 0 1.5rem; color: var(--ink-soft); max-width: 46rem; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* Featured: compact four-up */
.featured-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
.featured-grid .media-card { flex-direction: row; align-items: center; }
.featured-grid .media-card .media-frame { flex: 0 0 7.5rem; width: 7.5rem; min-height: 0; padding: 0.7rem 0 0.7rem 0.7rem; }
.featured-grid .media-card .media-frame img { max-height: 6.5rem; height: auto; }
.featured-grid .card-body { padding: 0.9rem 1rem; }
.featured-grid .card-body h3 { margin: 0.35rem 0; font-size: 1.05rem; line-height: 1.3; }
.featured-grid .card-teaser { margin: 0.3rem 0 0; font-size: 0.93rem; }
.featured-grid .card-body > p:last-child { display: none; }
.featured-grid .badge { font-size: 0.72rem; }
@media (min-width: 44rem) { .featured-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 70rem) {
  .featured-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.1rem; }
  .featured-grid .media-card { flex-direction: column; align-items: stretch; }
  .featured-grid .media-card .media-frame { flex: none; width: 100%; min-height: 0; padding: 0.9rem 0.9rem 0.3rem; }
  .featured-grid .media-card .media-frame img { max-height: 9rem; }
}

/* In the news: compact list */
.news-compact { list-style: none; margin: 0 0 1.5rem; padding: 0; display: grid; gap: 0.9rem; }
.news-compact-item { display: grid; grid-template-columns: 4.5rem 1fr; gap: 1rem; align-items: start; padding: 1rem 1.15rem; background: var(--cream); border: 1px solid rgba(178, 140, 118, 0.36); border-radius: var(--radius); }
.news-compact-item:not(:has(.news-thumb)) { grid-template-columns: 1fr; }
.news-thumb img { display: block; width: 4.5rem; height: 4.5rem; object-fit: cover; border-radius: 12px; border: 1px solid var(--rule); background: var(--paper-2); }
.news-compact-item h3 { margin: 0.3rem 0; font-size: 1.1rem; line-height: 1.3; }
.news-compact-item p { margin: 0.3rem 0 0; font-size: 0.97rem; }
.news-compact-item .news-compact-meta { margin: 0; }
.news-compact-item .news-date { font-size: 0.88rem; color: var(--ink-soft); margin-left: 0.4rem; white-space: nowrap; }
@media (min-width: 64rem) { .news-compact { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.1rem; } .news-compact-item { grid-template-columns: 1fr; } .news-thumb img { width: 100%; height: 8rem; } }

/* Category grid */
.cat-grid { display: grid; grid-template-columns: 1fr; gap: 1.1rem; }
@media (min-width: 44rem) { .cat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 70rem) { .cat-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.cat-card { display: flex; flex-direction: column; padding: 1.3rem 1.35rem; scroll-margin-top: calc(var(--header-h) + 1rem); }
.cat-card h3 { margin: 0; font-size: 1.3rem; }
.cat-card .cat-count { margin: 0.2rem 0 0.6rem; font-size: 0.88rem; font-weight: 700; color: var(--ink-soft); text-transform: uppercase; letter-spacing: 0.04em; }
.cat-card p { margin: 0 0 0.8rem; }
.cat-card .btn { align-self: flex-start; }
.cat-devices { margin-top: auto; border-top: 1px solid var(--rule); padding-top: 0.6rem; }
.cat-devices summary { cursor: pointer; font-weight: 700; color: var(--redwood); min-height: 44px; display: flex; align-items: center; }
.cat-devices ul { margin: 0.3rem 0 0; padding-left: 1.1rem; }
.cat-devices li { margin: 0.25rem 0; }

/* Routinely page and callouts */
.app-cta { margin: 1.2rem 0 0; }
.app-card-lg { padding: 1.5rem 1.6rem; }
.app-card-lg .app-body h2 { margin: 0.5rem 0; font-size: 1.5rem; }
.feature-grid { display: grid; grid-template-columns: 1fr; gap: 1.1rem; margin: 1.2rem 0 1.5rem; }
@media (min-width: 44rem) { .feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 64rem) { .feature-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.feature-grid h3 { margin: 0 0 0.5rem; font-size: 1.15rem; }
.feature-grid ul { margin: 0; padding-left: 1.1rem; }
.feature-grid li { margin: 0.35rem 0; }
.app-shots { display: flex; gap: 1.1rem; overflow-x: auto; padding: 0.4rem 0 0.8rem; margin: 1rem 0 0.5rem; scroll-snap-type: x proximity; }
.app-shot { margin: 0; flex: 0 0 min(15rem, 62vw); scroll-snap-align: start; }
.app-shot img { display: block; width: 100%; height: auto; border-radius: 1.1rem; border: 1px solid var(--rule); background: #111; }
.app-shot figcaption { font-size: 0.9rem; color: var(--ink-soft); margin-top: 0.4rem; }
@media (min-width: 52rem) { .app-shots { overflow-x: visible; } .app-shot { flex: 1 1 0; max-width: 15rem; } }
.band-slim { padding-block: 1.5rem 2.5rem; }
.app-callout { display: grid; grid-template-columns: 4.5rem 1fr; gap: 0.9rem 1.2rem; align-items: center; padding: 1.2rem 1.4rem; background: var(--cream); border: 1px solid rgba(178, 140, 118, 0.36); border-radius: var(--radius); box-shadow: var(--shadow); }
.app-callout .app-icon { width: 4.5rem; }
.app-callout h2 { margin: 0 0 0.25rem; font-size: 1.3rem; }
.app-callout p { margin: 0; }
.app-callout-action { grid-column: 1 / -1; }
@media (min-width: 44rem) { .app-callout { grid-template-columns: 4.5rem 1fr auto; } .app-callout-action { grid-column: auto; } }
.news-thumb, .news-thumb picture { display: block; }
.hub-section .catalog-note { max-width: 46rem; }
.cat-devices summary { list-style: none; }
.cat-devices summary::-webkit-details-marker { display: none; }
.cat-devices summary::after { content: "+"; margin-left: auto; font-size: 1.4rem; line-height: 1; }
.cat-devices[open] summary::after { content: "\2212"; }

/* ---- Share control (v8) ---- */
.share { position: relative; display: inline-block; margin-top: .8rem; max-width: 100%; }
.share-btn { display: none; align-items: center; gap: .45rem; min-height: 40px; padding: .35rem .95rem; border: 1.5px solid var(--redwood); border-radius: 999px; background: transparent; color: var(--redwood); font: inherit; font-size: .92rem; font-weight: 700; line-height: 1; cursor: pointer; }
html.js .share-btn { display: inline-flex; }
.share-btn:hover, .share.is-open .share-btn { background: var(--paper-2); }
.share-btn:focus-visible, .share-menu a:focus-visible, .share-copy:focus-visible { outline: 3px solid var(--redwood); outline-offset: 2px; }
.share-menu { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .9rem; font-size: .95rem; }
.share-menu a, .share-copy { color: var(--redwood); font: inherit; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.share-copy { display: none; padding: 0; border: 0; background: none; cursor: pointer; }
html.js .share-copy { display: block; }
.share-status { flex-basis: 100%; min-height: 0; font-size: .85rem; color: var(--ink-soft); }
html.js .share-menu { display: none; position: absolute; z-index: 30; top: calc(100% + .35rem); left: 0; min-width: 13rem; max-width: calc(100vw - 2.5rem); flex-direction: column; align-items: stretch; gap: 0; padding: .35rem; background: var(--cream); border: 1px solid var(--rule); border-radius: 12px; box-shadow: var(--shadow); }
html.js .share.is-open .share-menu { display: flex; }
html.js .share-menu a, html.js .share-copy { display: block; min-height: 44px; padding: .65rem .8rem; border-radius: 8px; text-align: left; text-decoration: none; }
html.js .share-menu a:hover, html.js .share-copy:hover { background: var(--paper-2); }
html.js .share-status:empty { display: none; }
html.js .share-status { padding: 0 .8rem .35rem; }
/* cards clip overflow, so open the menu upward there */
html.js .media-card .share-menu { top: auto; bottom: calc(100% + .35rem); }
.news-card .share { margin-top: .4rem; }
/* deep links: land clear of the sticky header and highlight the target */
.news-card, .media-card[id] { scroll-margin-top: calc(var(--header-h, 72px) + 1rem); }
.news-card:target, .media-card[id]:target { outline: 3px solid var(--redwood); outline-offset: 4px; background: var(--paper-2); }

/* ---- Share everywhere + review pages (v=9) ---- */
.card-share-row { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1rem; margin-top: .85rem; }
.card-share-row .share { margin-top: 0; }
.take-link { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; color: var(--redwood); text-decoration: underline; text-underline-offset: 3px; }
.take-link:hover { color: var(--redwood-deep); }
.take-link:focus-visible { outline: 3px solid var(--redwood); outline-offset: 2px; border-radius: 4px; }
.share-compact .share-btn { width: 44px; min-width: 44px; height: 44px; padding: 0; justify-content: center; border-radius: 50%; }
.share-compact .share-btn svg { width: 18px; height: 18px; }
.news-compact-item .card-share-row { margin-top: .5rem; }
.news-compact-item .share-menu, .news-card .share-menu { min-width: 12rem; }
html.js .news-compact-item .share-menu { top: auto; bottom: calc(100% + .35rem); }
.news-card .card-share-row .share { margin-top: 0; }
.share-large { margin-top: 0; }
.share-large .share-btn { min-height: 52px; padding: .6rem 1.5rem; font-size: 1.05rem; background: var(--redwood); color: var(--cream); border-color: var(--redwood); }
.share-large .share-btn:hover, .share-large.is-open .share-btn { background: var(--redwood-deep); }
.share-large .share-btn svg { width: 20px; height: 20px; }
html.js .share-large .share-menu { top: calc(100% + .35rem); bottom: auto; }
.review-card { padding: 1.25rem 1.4rem; display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; align-items: start; }
.review-figure { margin: 0; }
.review-figure img { display: block; width: 100%; height: auto; border-radius: 14px; border: 1px solid var(--rule); background: var(--paper-2); }
.review-figure figcaption { font-size: .82rem; color: var(--ink-soft); margin-top: .4rem; }
.review-label { margin: 0 0 .5rem; font-size: .85rem; letter-spacing: .12em; text-transform: uppercase; color: var(--sand); }
.review-text { margin: 0 0 .9rem; font-size: 1.15rem; line-height: 1.7; max-width: 62ch; }
.review-who { margin: 0 0 1rem; }
.review-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; margin: 1.1rem 0 1rem; }
.review-note { margin: .5rem 0 0; }
.review-more { margin-top: 1.5rem; }
@media (min-width: 800px) {
  .review-card.has-image { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 2rem; padding: 1.6rem; }
}
.page-hero .badge { margin-right: .4rem; }
.page-hero .news-date { font-size: .95rem; }

/* Category chips are links; one "Read our take" button per device card; category pages; hub What's new */
a.badge-link { text-decoration: none; }
a.badge-outline.badge-link:hover { background: var(--paper-2); border-color: var(--redwood); color: var(--redwood-deep); }
a.badge-link:focus-visible { outline: 3px solid var(--redwood); outline-offset: 2px; }
.card-take { display: inline-block; margin: 0.9rem 0.7rem 0 0; vertical-align: middle; }
.card-take + .card-share-row { display: inline-flex; margin-top: 0.9rem; vertical-align: middle; }
.cat-subhead { margin: 1.9rem 0 1rem; font-size: 1.35rem; }
.cat-news { margin-top: 0; }
.cat-none { margin: 1.6rem 0 0; }
.cat-back { display: flex; flex-wrap: wrap; gap: 0.6rem; margin: 1.4rem 0 0; }
.thumb-device img { object-fit: contain; background: #fff; }
.wn-more { margin: 0 0 1.5rem; }
.wn-more summary { display: inline-flex; align-items: center; min-height: 44px; cursor: pointer; font-weight: 700; color: var(--redwood); text-decoration: underline; text-underline-offset: 3px; }
.wn-more summary:focus-visible { outline: 3px solid var(--redwood); outline-offset: 2px; border-radius: 4px; }
.wn-more ul { margin-top: 0.9rem; }
.news-compact-item .card-share-row .btn { padding-top: 0.55rem; padding-bottom: 0.55rem; }
.featured-grid .card-take { margin-right: 0.5rem; }
.featured-grid .card-take .btn { padding-left: 0.85rem; padding-right: 0.85rem; font-size: 0.9rem; }
.wn-all { margin: 0.25rem 0 0; }
