/* NestKit — styles.css */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  --font-sans:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --font-serif:Georgia,'Palatino Linotype',serif;
  --color-background-page:#FBF7F2;
  --color-background-primary:#ffffff;
  --color-background-secondary:#F3EDE4;
  --color-text-primary:#1a1a1a;
  --color-text-secondary:#6b6b6b;
  --color-text-tertiary:#9b9b9b;
  --color-border-tertiary:#e5e4e0;
  --border-radius-md:8px;
  --border-radius-lg:12px;
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;
  --transition-fast:0.12s ease;--transition-base:0.2s ease;
  --border-thin:0.5px solid var(--color-border-tertiary);
  --color-success-text:var(--green-text);
  --brand:#C4662A;--brand-hover:#A8551F;--brand-light:#FAEEDA;--brand-text:#854F0B;
  --green-bg:#EAF3DE;--green-text:#3B6D11;
}

@media(prefers-color-scheme:dark){
  :root{
    --color-background-page:#111110;
    --color-background-primary:#1c1c1e;
    --color-background-secondary:#252420;
    --color-text-primary:#f0f0f0;
    --color-text-secondary:#a0a0a0;
    --color-text-tertiary:#6a6a6a;
    --color-border-tertiary:#3a3a3c;
    --brand:#EF9F27;--brand-hover:#FAC775;--brand-light:#412402;--brand-text:#FAC775;
    --green-bg:#173404;--green-text:#C0DD97;
    --color-success-text:#A8D070;
  }
}

html{overflow-x:hidden}
body{background:var(--color-background-page);color:var(--color-text-primary)}

.app{max-width:740px;margin:0 auto;padding:1.25rem 1rem 88px;font-family:var(--font-sans)}
@media(min-width:560px){.app{padding-bottom:3rem}}

/* ── Header ── */
header{text-align:center;padding:1.5rem 0 1.25rem}
.logo-wrap{display:inline-flex;flex-direction:column;align-items:center;gap:6px}
.logo-mark{width:64px;height:auto;display:block}
.logo{font-family:var(--font-serif);font-size:2rem;font-weight:500;color:var(--brand);letter-spacing:-0.02em;line-height:1}
.tagline{margin-top:var(--space-2);text-align:center}
.tagline-pill{display:inline-block;font-size:11px;font-weight:500;color:var(--brand-text);background:var(--brand-light);border-radius:20px;padding:3px 12px;letter-spacing:0.03em}
@media(min-width:560px){
  header{padding:2rem 0 1.25rem}
  .logo-mark{width:80px}
  .logo{font-size:2.4rem}
  .tagline-pill{font-size:12px}
}

/* ── Tool nav (desktop only) ── */
.tool-nav{display:none}
@media(min-width:560px){.tool-nav{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:1.25rem;scrollbar-width:none;border-bottom:var(--border-thin);margin-bottom:1.75rem}}
.tool-nav::-webkit-scrollbar{display:none}
.tool-tab{white-space:nowrap;padding:8px 14px;border-radius:var(--border-radius-md);border:var(--border-thin);background:var(--color-background-primary);color:var(--color-text-secondary);font-size:13px;font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast);min-height:36px}
.tool-tab.active{background:var(--brand-light);color:var(--brand-text);border-color:transparent;font-weight:500}
.tool-tab.coming{opacity:0.45;cursor:default}
.soon{font-size:10px;background:var(--color-background-secondary);color:var(--color-text-tertiary);padding:1px 5px;border-radius:4px;margin-left:4px}

/* ── Bottom nav (mobile only) ── */
.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;align-items:stretch;background:var(--color-background-page);border-top:var(--border-thin);padding:6px 0 max(6px,env(safe-area-inset-bottom));z-index:100}
@media(min-width:560px){.bottom-nav{display:none}}
.bnav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;background:none;border:none;cursor:pointer;font-family:var(--font-sans);transition:opacity var(--transition-fast);-webkit-tap-highlight-color:transparent}
.bnav-icon{font-size:22px;line-height:1}
.bnav-label{font-size:10px;color:var(--color-text-tertiary);font-weight:400;line-height:1;letter-spacing:0.01em}
.bnav-item.active .bnav-label{color:var(--brand-text);font-weight:600}
.bnav-item.active .bnav-icon{position:relative}
.bnav-item.active .bnav-icon::after{content:'';display:block;width:4px;height:4px;border-radius:50%;background:var(--brand);margin:2px auto 0}
.bnav-soon{opacity:0.35;cursor:default}

/* ── Filter panel ── */
.filter-panel{background:var(--color-background-secondary);border-radius:var(--border-radius-lg);padding:1rem 1rem 0.25rem;margin-bottom:0.75rem}

/* ── Filter grid — mobile first: single column ── */
.filter-grid{display:grid;grid-template-columns:1fr;gap:1rem;margin-bottom:0.75rem}
@media(min-width:560px){.filter-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.25rem 1rem;margin-bottom:1rem}}

/* ── Filter row ── */
.filter-row-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:var(--space-2);flex-wrap:nowrap}
.section-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:var(--color-text-primary);margin-bottom:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-toggle{font-size:11px;color:var(--brand-text);background:none;border:none;cursor:pointer;font-family:var(--font-sans);padding:0;line-height:1;flex-shrink:0;white-space:nowrap}
.row-toggle:hover{text-decoration:underline}

/* ── Filter row error state ── */
.filter-row.row-error{border-left:3px solid #c0392b;padding-left:var(--space-2);border-radius:2px;animation:row-shake 0.35s ease}
@keyframes row-shake{0%{transform:translateX(0)}20%{transform:translateX(-4px)}40%{transform:translateX(4px)}60%{transform:translateX(-3px)}80%{transform:translateX(2px)}100%{transform:translateX(0)}}

/* ── Chip group — mobile: larger touch targets ── */
.chip-group{display:flex;flex-wrap:wrap;gap:var(--space-1)}
.chip{padding:7px 13px;border-radius:16px;border:var(--border-thin);background:var(--color-background-primary);color:var(--color-text-secondary);font-size:13px;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);line-height:1.3;min-height:36px;display:inline-flex;align-items:center}
@media(min-width:560px){.chip{padding:5px 11px;font-size:12px;min-height:auto}}
.chip.sel{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:500}
.chip:hover:not(.sel){background:var(--color-background-primary);border-color:var(--brand);color:var(--brand-text)}

/* ── Reset row ── */
.filter-reset-row{text-align:right;margin-bottom:0.6rem}
.reset-btn{font-size:12px;color:var(--color-text-tertiary);background:none;border:none;cursor:pointer;font-family:var(--font-sans);padding:4px 0}
.reset-btn:hover{color:var(--brand-text)}

/* ── Match count ── */
.match-count-wrap{text-align:center;min-height:20px;margin-bottom:var(--space-2)}
#matchCount{font-size:13px;color:var(--color-text-secondary);transition:color var(--transition-fast)}
#matchCount.zero{color:#c0392b}
@media(prefers-color-scheme:dark){#matchCount.zero{color:#e74c3c}}

/* ── Generate button ── */
.gen-btn-wrap{position:static;padding:0.5rem 0;margin-top:0.25rem}
@media(min-width:560px){.gen-btn-wrap{padding:0}}
.gen-btn{width:100%;padding:13px;background:var(--brand);color:#fff;border:none;border-radius:var(--border-radius-md);font-size:15px;font-weight:500;font-family:var(--font-sans);cursor:pointer;transition:background var(--transition-fast),transform 0.1s;letter-spacing:0.01em}
.gen-btn:hover{background:var(--brand-hover)}
.gen-btn:active{transform:scale(0.99)}
.gen-btn:disabled{opacity:0.5;cursor:not-allowed;transform:none}

/* ── Results ── */
.results{margin-top:1.75rem}
.results-hdr-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}
.results-hdr{font-size:13px;color:var(--color-text-secondary);margin-bottom:0}
.results-hdr strong{color:var(--brand-text);font-weight:500}
.shuffle-btn{font-size:12px;color:var(--brand-text);background:var(--brand-light);border:var(--border-thin);border-radius:var(--border-radius-md);padding:var(--space-1) var(--space-2);cursor:pointer;font-family:var(--font-sans);transition:background var(--transition-fast);white-space:nowrap}
.shuffle-btn:hover{background:var(--brand-hover);color:#fff;border-color:transparent}

/* ── Card grid — mobile first: single column ── */
.card-grid{display:grid;grid-template-columns:1fr;gap:16px}
@media(min-width:560px){.card-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}}

/* ── Cards ── */
.card{background:var(--color-background-primary);border:none;border-radius:var(--border-radius-lg);padding:1.25rem;box-shadow:0 1px 3px rgba(0,0,0,0.05),0 4px 16px rgba(0,0,0,0.09);animation:fi 0.3s ease both}
@media(prefers-color-scheme:dark){.card{box-shadow:none;border:var(--border-thin)}}
.card.highlight{box-shadow:0 0 0 2px var(--brand),0 4px 16px rgba(0,0,0,0.12);animation:fi 0.3s ease both,pulse 1.5s ease 0.4s}
@keyframes fi{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@keyframes pulse{0%,100%{box-shadow:0 0 0 2px var(--brand)}50%{box-shadow:0 0 0 4px var(--brand)}}
.card-emoji{font-size:26px;display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:14px;background:var(--brand-light);margin-bottom:13px}
.card-title{font-family:var(--font-serif);font-size:19px;font-weight:500;color:var(--color-text-primary);margin-bottom:6px}
.card-desc{font-size:13px;color:var(--color-text-secondary);line-height:1.6;margin-bottom:11px}
.card-meta{display:flex;gap:var(--space-1);flex-wrap:wrap;margin-bottom:11px}
.pill{font-size:11px;padding:3px 8px;border-radius:10px;background:var(--color-background-secondary);color:var(--color-text-secondary)}
.card-needs{font-size:12px;color:var(--color-text-secondary);margin-bottom:11px}
.card-needs b{color:var(--color-text-primary);font-weight:500}

/* ── Steps progressive disclosure ── */
.steps-details{margin-bottom:13px}
.steps-details summary.steps-toggle{font-size:12px;color:var(--brand-text);cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) 0;user-select:none;margin-bottom:var(--space-1)}
.steps-details summary.steps-toggle::before{content:'\25B6';font-size:9px;transition:transform var(--transition-fast)}
.steps-details[open] summary.steps-toggle::before{transform:rotate(90deg)}
.steps-details summary::-webkit-details-marker{display:none}
.card-steps{counter-reset:sc;list-style:none}
.card-steps li{font-size:12px;color:var(--color-text-secondary);line-height:1.6;padding-left:17px;position:relative;margin-bottom:2px;counter-increment:sc}
.card-steps li::before{content:counter(sc);position:absolute;left:0;top:2px;font-size:10px;font-weight:500;color:var(--brand-text)}

/* ── Affiliate row ── */
.aff-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1) var(--space-2);margin-bottom:var(--space-2);font-size:12px}
.aff-label{color:var(--color-text-tertiary);font-size:11px;flex-shrink:0}
.aff-link{color:var(--brand-text);text-decoration:none;font-weight:500}
.aff-link:hover{text-decoration:underline}
.aff-sep{color:var(--color-text-tertiary);margin:0 1px;font-size:11px}

/* ── Card utility buttons ── */
.util-btns{display:flex;gap:var(--space-1);margin-top:6px}
.util-btn{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;border:var(--border-thin);border-radius:var(--border-radius-md);font-size:11px;color:var(--color-text-tertiary);text-decoration:none;transition:all var(--transition-fast);cursor:pointer;background:none;font-family:var(--font-sans)}
.util-btn:hover{color:var(--brand-text);border-color:var(--brand-light);background:var(--brand-light)}
.copied-msg{font-size:11px;color:var(--color-success-text);margin-left:4px;animation:fi 0.2s ease}

/* ── Empty / status states ── */
.no-res{text-align:center;padding:2.5rem 1rem;color:var(--color-text-secondary);font-size:14px;line-height:1.6}
.no-res.prompt{color:var(--color-text-tertiary);font-size:13px}
.loading-state{text-align:center;padding:3rem 1rem;color:var(--color-text-secondary);font-size:14px}
.err-state{text-align:center;padding:3rem 1rem;color:var(--color-text-secondary);font-size:14px}

/* ── Coming strip ── */
.coming-strip{margin-top:var(--space-6);padding:var(--space-3) var(--space-4);background:var(--color-background-secondary);border-radius:var(--border-radius-md);border:var(--border-thin);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}
.coming-strip-label{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:0.07em;color:var(--color-text-tertiary);flex-shrink:0}
.coming-strip-items{font-size:13px;color:var(--color-text-secondary);flex:1}
.coming-strip-cta{font-size:12px;color:var(--brand-text);background:none;border:none;cursor:pointer;font-family:var(--font-sans);font-weight:500;white-space:nowrap;padding:0}
.coming-strip-cta:hover{text-decoration:underline}

/* ── Footer email CTA ── */
.footer-cta{margin-top:2.5rem;padding:1.5rem;background:var(--brand-light);border-radius:var(--border-radius-lg);text-align:center}
.footer-cta h3{font-family:var(--font-serif);font-size:18px;font-weight:500;color:var(--brand-text);margin-bottom:5px}
.footer-cta p{font-size:13px;color:var(--brand-text);opacity:0.8;margin-bottom:1rem}
.erow{display:flex;gap:var(--space-2);max-width:340px;margin:0 auto}
.erow input{flex:1;font-size:13px;padding:8px 10px;border:var(--border-thin);border-radius:var(--border-radius-md);font-family:var(--font-sans);background:var(--color-background-primary);color:var(--color-text-primary)}
.erow button{padding:8px 14px;background:var(--brand);color:#fff;border:none;border-radius:var(--border-radius-md);font-size:13px;font-family:var(--font-sans);cursor:pointer;white-space:nowrap}
.erow button:disabled{opacity:0.6;cursor:default}
.email-note{font-size:11px;color:var(--brand-text);opacity:0.7;margin-top:8px}

/* ── Accessibility ── */
.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}

/* ── Footer note ── */
.fnote{text-align:center;font-size:11px;color:var(--color-text-tertiary);margin-top:2rem;padding-top:1rem;border-top:var(--border-thin)}

/* ── Print ── */
@media print{
  body{background:#fff;color:#000}
  .tool-nav,.gen-btn-wrap,.filter-grid,.filter-reset-row,.match-count-wrap,.coming-strip,.footer-cta,.fnote,
  .util-btns,.aff-row,.results-hdr-row,.shuffle-btn,noscript{display:none!important}
  .app{max-width:100%;padding:0}
  header{padding:0.5rem 0}
  .logo{font-size:1.5rem}
  .tagline{display:none}
  .card-grid{display:block}
  .card{page-break-inside:avoid;border:1px solid #ccc;margin-bottom:12px;animation:none!important}
  .card:not(.print-target){display:none}
  .card.print-target{display:block}
  .logo-mark{width:48px}
  .card-emoji{font-size:20px}
  .card-title{font-size:15px}
  .card-desc,.card-needs,.card-steps li{font-size:11px;color:#333}
  .pill{background:#eee;color:#333}
  .results{margin-top:0.5rem}
  .steps-details{display:block}
  .steps-details summary{display:none}
  .card-steps{display:block!important}
  .print-footer{display:block!important;text-align:center;font-size:10px;color:#999;margin-top:1rem;border-top:1px solid #ddd;padding-top:0.5rem}
}
.print-footer{display:none}
