/* Catalog — shares the tomsailors.com paper/ink design language. */
:root{
  --paper:#f4efe3; --paper-soft:#fbf6e9; --paper-deep:#ebe3cc;
  --ink:#1c1814; --ink-soft:#3d362c; --ink-mute:#786d5b; --ink-faint:#a89a82;
  --rule:#ddd4be; --rule-fine:#e8dfc9;
  --clay:#b5571d; --stone:#496b72; --stone-deep:#2d4d52; --moss:#5d6f4c; --ochre:#a17324;
  --shopify-green:#008060;
  --serif:'Newsreader',Georgia,serif;
  --sans:'Instrument Sans','Helvetica Neue',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --ease:cubic-bezier(0.16,1,0.3,1);
}
*{box-sizing:border-box}
html{background:var(--paper)}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 var(--serif);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}

/* ===== Top nav (mirrors renderTopNav scope-header) ===== */
.scope-header{position:sticky;top:0;z-index:100;background:#2d4d52;color:#f4efe3;box-shadow:0 6px 22px rgba(0,0,0,0.10),0 2px 4px rgba(0,0,0,0.05)}
.scope-header .scope-inner{display:grid;grid-template-columns:1fr auto;align-items:center;gap:32px;max-width:1280px;margin:0 auto;padding:14px 28px}
.scope-header .scope-brand{display:inline-flex;align-items:center;text-decoration:none;line-height:1;border-bottom:0}
.scope-header .scope-brand img{height:22px;width:auto;display:block;filter:brightness(0) invert(1) opacity(0.92);transition:filter .18s}
.scope-header .scope-brand:hover img{filter:brightness(0) invert(0.86) sepia(0.6) hue-rotate(40deg) saturate(2) opacity(0.95)}
.scope-header .scope-nav{display:flex;gap:22px;align-items:center;font-family:var(--mono);font-size:11px;letter-spacing:0.16em;text-transform:uppercase}
.scope-header .scope-nav a{color:rgba(244,239,227,0.65);text-decoration:none;transition:color .18s;position:relative;padding-bottom:4px;border-bottom:0}
.scope-header .scope-nav a:hover{color:#f4efe3}
.scope-header .scope-nav a.active{color:#f4efe3}
.scope-header .scope-nav a.active::after{content:'';position:absolute;left:0;right:0;bottom:-2px;height:1.5px;background:#f4efe3}
@media(max-width:640px){.scope-header .scope-inner{padding:10px 14px;gap:12px}.scope-header .scope-nav{gap:14px;font-size:10px}}

/* ===== Shared containers ===== */
.catwrap{max-width:1180px;margin:0 auto;padding:44px 32px 20px}
.detailwrap{max-width:840px;margin:0 auto;padding:36px 32px 20px}
.kicker{font-family:var(--mono);font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:12px}
h1{font-family:var(--serif);font-weight:400;font-size:44px;line-height:1.08;letter-spacing:-0.018em;margin:0 0 14px;font-variation-settings:"opsz" 60,"SOFT" 30}
h1 em{font-style:italic;font-variation-settings:"opsz" 30,"SOFT" 90,"WONK" 1;color:var(--stone-deep)}
.lede{font-family:var(--serif);font-size:18px;line-height:1.55;color:var(--ink-soft);margin:0 0 8px;max-width:none}
.lede-mute{font-family:var(--mono);font-size:11px;letter-spacing:0.06em;color:var(--ink-mute);margin:0 0 30px}

/* ===== Search + category dropdown ===== */
.controls{display:flex;gap:12px;align-items:stretch;flex-wrap:wrap;margin:0 0 34px;max-width:1040px}
.searchbar{display:flex;align-items:center;gap:12px;border:1.5px solid var(--ink);background:var(--paper-soft);padding:0 16px;height:54px;flex:1 1 320px;min-width:0}
.searchbar svg{width:18px;height:18px;flex-shrink:0;stroke:var(--ink-mute);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.searchbar input{flex:1;border:0;background:transparent;font-family:var(--mono);font-size:14px;color:var(--ink);outline:none;min-width:0}
.searchbar input::placeholder{color:var(--ink-faint)}
.searchbar .clearx{background:none;border:0;color:var(--ink-faint);font-size:18px;line-height:1;cursor:pointer;padding:0 2px;display:none}
.searchbar .clearx:hover{color:var(--ink)}
.catselect{position:relative;flex:0 0 auto}
.catselect select{appearance:none;-webkit-appearance:none;-moz-appearance:none;height:54px;border:1.5px solid var(--ink);background:var(--paper-soft);color:var(--ink);font-family:var(--mono);font-size:13px;letter-spacing:0.01em;padding:0 42px 0 16px;cursor:pointer;border-radius:0;min-width:230px;width:100%;outline:none}
.catselect select:focus{border-color:var(--stone-deep)}
.catselect::after{content:'';position:absolute;right:17px;top:calc(50% - 5px);width:8px;height:8px;border-right:1.6px solid var(--ink-mute);border-bottom:1.6px solid var(--ink-mute);transform:rotate(45deg);pointer-events:none}
.no-results{display:none;font-family:var(--serif);font-size:17px;color:var(--ink-mute);padding:16px 0 48px}
@media(max-width:560px){.controls{flex-direction:column;max-width:none}.catselect{flex:1 1 auto}}

/* ===== Bottom SEO block (mirrors /apps) ===== */
.seo{margin-top:72px;padding-top:40px;border-top:1px solid var(--rule)}
.seo h2{font-family:var(--serif);font-weight:400;font-size:28px;line-height:1.15;letter-spacing:-0.014em;margin:0 0 14px;color:var(--ink)}
.seo p{font-family:var(--serif);font-size:16px;line-height:1.6;color:var(--ink-soft);max-width:68ch;margin:0 0 18px}
.seo ul{font-family:var(--sans);font-size:14.5px;line-height:1.65;color:var(--ink-soft);list-style:none;padding:0;margin:0 0 20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 32px}
.seo ul strong{color:var(--ink)}
.seo .attr{font-family:var(--mono);font-size:12px;color:var(--ink-mute);margin:0}
@media(max-width:600px){.seo ul{grid-template-columns:1fr}}

/* ===== Card grid ===== */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:900px){.grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.grid{grid-template-columns:1fr}}
/* Category color-coding: each family carries its own muted, earthy accent,
   expressed through the heading and the icon tiles — color as identity, not a
   background wash. Card backgrounds stay paper-cream. */
.cat-group{margin:0 0 48px;padding:0}
.cat-group-h{display:flex;flex-direction:column;gap:8px;margin:0 0 20px;padding:0;border:0}
.cat-group-h > span:first-child{font-family:var(--serif);font-weight:600;font-size:22px;line-height:1.12;letter-spacing:-0.012em;color:var(--accent,var(--ink))}
.cat-group-h > span:first-child::after{content:"";display:block;width:36px;height:2px;margin-top:9px;background:var(--accent,var(--ink-faint))}
.cat-group-h .n{font-family:var(--mono);font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;color:var(--ink-mute)}
.cat-group .icon-tile{background:color-mix(in srgb,var(--accent,var(--stone-deep)) 12%,var(--paper-soft));border-color:color-mix(in srgb,var(--accent,var(--stone-deep)) 22%,var(--rule))}
.cat-group .icon-tile svg{stroke:var(--accent,var(--stone-deep))}

/* Per-family accents — pulled from the site's editorial accent family, kept
   muted and desaturated so 16 colors still read as one harmonious system. */
.cat-group[data-cat="cat-shipping-delivery"]{--accent:#b5571d}
.cat-group[data-cat="cat-support-chat"]{--accent:#3f6b74}
.cat-group[data-cat="cat-loyalty-rewards"]{--accent:#a17324}
.cat-group[data-cat="cat-fulfillment-warehouse"]{--accent:#5d6f4c}
.cat-group[data-cat="cat-inventory"]{--accent:#2d4d52}
.cat-group[data-cat="cat-data-migration"]{--accent:#7a4a63}
.cat-group[data-cat="cat-store-operations"]{--accent:#566072}
.cat-group[data-cat="cat-team-collaboration"]{--accent:#8a5a3c}
.cat-group[data-cat="cat-merchandising"]{--accent:#6f6a3a}
.cat-group[data-cat="cat-analytics"]{--accent:#45557a}
.cat-group[data-cat="cat-storefront"]{--accent:#3f7268}
.cat-group[data-cat="cat-order-management"]{--accent:#9c4a3a}
.cat-group[data-cat="cat-checkout"]{--accent:#8a6a32}
.cat-group[data-cat="cat-b2b-wholesale"]{--accent:#3d5a80}
.cat-group[data-cat="cat-tools"]{--accent:#565049}
.cat-group[data-cat="cat-events-fundraising"]{--accent:#7a3a4a}

.card{display:flex;flex-direction:column;background:var(--paper-soft);border:1px solid var(--rule-fine);border-radius:4px;padding:20px 22px;transition:border-color .15s,transform .15s,box-shadow .15s}
.card:hover{border-color:var(--ink-faint);transform:translateY(-2px);box-shadow:0 8px 22px rgba(28,24,20,0.06)}
.card-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:12px}
.icon-tile{width:48px;height:48px;border-radius:8px;background:var(--paper-deep);border:1px solid var(--rule);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.icon-tile svg{width:26px;height:26px;display:block;stroke:var(--stone-deep);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.card-title{flex:1;min-width:0}
.card-cat{font-family:var(--mono);font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:3px}
.card-name{font-family:var(--serif);font-weight:500;font-size:19px;line-height:1.2;color:var(--ink);letter-spacing:-0.01em}
.card-desc{font-size:15px;line-height:1.5;color:var(--ink-soft);margin:0 0 14px}
.card-foot{display:flex;justify-content:flex-end;margin-top:auto;padding-top:10px;border-top:1px solid var(--rule-fine)}
.card-foot .more{font-family:var(--mono);font-size:10.5px;letter-spacing:0.12em;text-transform:uppercase;color:var(--stone-deep)}
.card:hover .card-foot .more{color:var(--clay)}

/* ===== Detail page ===== */
.back{font-family:var(--mono);font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-mute);display:inline-flex;align-items:center;gap:7px;margin-bottom:26px}
.back:hover{color:var(--ink)}
.detail-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:6px}
.icon-tile-lg{width:62px;height:62px;border-radius:10px;background:var(--paper-deep);border:1px solid var(--rule);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.icon-tile-lg svg{width:34px;height:34px;display:block;stroke:var(--stone-deep);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.detail-titles{flex:1;min-width:0}
.detail-cat{font-family:var(--mono);font-size:11px;letter-spacing:0.14em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:5px}
.detail-name{font-family:var(--serif);font-weight:400;font-size:34px;line-height:1.1;letter-spacing:-0.015em;color:var(--ink);margin:0}
.detail-tagline{font-family:var(--serif);font-size:19px;line-height:1.5;color:var(--ink-soft);margin:20px 0 34px;max-width:660px}
.sec{margin:0 0 30px}
.sec-h{font-family:var(--mono);font-size:11px;letter-spacing:0.16em;text-transform:uppercase;color:var(--ink-mute);padding-bottom:8px;border-bottom:1px solid var(--rule);margin:0 0 14px}
.sec p{font-family:var(--serif);font-size:16.5px;line-height:1.6;color:var(--ink-soft);margin:0 0 12px}
.getlist{list-style:none;margin:0;padding:0}
.getlist li{font-family:var(--serif);font-size:16px;line-height:1.55;color:var(--ink-soft);padding:0 0 10px 22px;position:relative}
.getlist li::before{content:'';position:absolute;left:2px;top:11px;width:6px;height:6px;border-radius:50%;background:var(--shopify-green)}
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tag{font-family:var(--mono);font-size:10.5px;letter-spacing:0.06em;color:var(--ink-soft);background:var(--paper-soft);border:1px solid var(--rule);padding:6px 11px;border-radius:3px}
.tag.surface{border-left:2px solid var(--stone)}
.tag.tech{border-left:2px solid var(--ochre)}
.cta{margin:38px 0 0;padding:22px 24px;background:var(--paper-soft);border:1px solid var(--rule);border-radius:6px}
.cta p{font-family:var(--serif);font-size:16px;color:var(--ink-soft);margin:0 0 14px}
.cta a{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:0.14em;text-transform:uppercase;color:#fff;background:var(--shopify-green);padding:12px 22px;border-radius:3px;font-weight:500;transition:background .15s}
.cta a:hover{background:#00694e}

/* ===== Footer (mirrors footer.site) ===== */
footer.site{max-width:1180px;margin:64px auto 0;padding:22px 32px 40px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:10px;letter-spacing:0.08em;color:var(--ink-faint);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px 18px}
footer.site a{color:var(--ink-faint);text-decoration:none}
footer.site a:hover{color:var(--ink)}
footer.site .svc{display:flex;gap:18px;flex-wrap:wrap}

@media(max-width:640px){h1{font-size:32px}.detail-name{font-size:27px}.catwrap,.detailwrap{padding-left:18px;padding-right:18px}.cat-group{margin-bottom:38px}.cat-group-h > span:first-child{font-size:20px}}
