/* ========================================
   Genie UI — Component Library
   https://genie-ai.claw.spacebread.dev/components/genie-ui.css
   
   Usage: <link rel="stylesheet" href="/components/genie-ui.css">
   ======================================== */

/* === Reset & Base === */
*{box-sizing:border-box;margin:0;padding:0}
body{
  font-family:-apple-system,system-ui,'Segoe UI',Roboto,sans-serif;
  background:var(--g-bg,#0a0a0a);
  color:var(--g-text,#e0e0e0);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}

/* === Design Tokens === */
:root{
  /* Colors */
  --g-bg:#0a0a0a;
  --g-surface:#141414;
  --g-surface-hover:#1c1c1c;
  --g-border:#222;
  --g-border-hover:#333;
  --g-text:#e0e0e0;
  --g-text-secondary:#aaa;
  --g-text-muted:#666;
  --g-text-faint:#444;
  --g-accent:#7e8aff;
  --g-accent-surface:#1e1e2e;
  --g-accent-border:#2a2a3e;
  --g-highlight:#7eb8ff;
  --g-success:#4ade80;
  --g-warning:#fbbf24;
  --g-danger:#f87171;
  
  /* Spacing */
  --g-space-xs:4px;
  --g-space-sm:8px;
  --g-space-md:12px;
  --g-space-lg:16px;
  --g-space-xl:20px;
  --g-space-2xl:24px;
  
  /* Radius */
  --g-radius-sm:6px;
  --g-radius-md:10px;
  --g-radius-lg:12px;
  --g-radius-xl:14px;
  --g-radius-pill:999px;
  
  /* Typography */
  --g-font-xs:.65rem;
  --g-font-sm:.75rem;
  --g-font-base:.85rem;
  --g-font-md:.9rem;
  --g-font-lg:1rem;
  --g-font-xl:1.1rem;
  --g-font-2xl:1.4rem;
  
  /* Shadows */
  --g-shadow:0 2px 8px rgba(0,0,0,.3);
  --g-shadow-lg:0 12px 40px rgba(0,0,0,.3);
  
  /* Transitions */
  --g-transition:150ms ease;
}

/* === Layout === */
.g-container{
  max-width:700px;
  margin:0 auto;
  padding:var(--g-space-lg);
}
.g-container--narrow{max-width:600px}
.g-container--wide{max-width:900px}

/* === Page Header === */
.g-page-header{margin-bottom:var(--g-space-xl)}
.g-page-header h1{font-size:var(--g-font-2xl);color:#fff;margin-bottom:var(--g-space-xs)}
.g-page-header .g-subtitle{color:var(--g-text-muted);font-size:.8rem}

/* === Hero (Landing Page) === */
.g-hero{text-align:center;margin-bottom:3rem}
.g-hero h1{font-size:2.5rem;margin-bottom:.5rem;color:#fff}
.g-hero h1 .g-hero-icon{font-size:2.8rem}
.g-hero p{color:rgba(255,255,255,.6);font-size:1.1rem}
@media(max-width:600px){.g-hero h1{font-size:1.8rem}}

/* === Cards === */
.g-card{
  background:var(--g-surface);
  border:1px solid var(--g-border);
  border-radius:var(--g-radius-xl);
  padding:var(--g-space-lg);
  margin-bottom:var(--g-space-md);
  transition:background var(--g-transition);
}
.g-card:active{background:var(--g-surface-hover)}
.g-card--interactive{cursor:pointer}
.g-card--interactive:hover{
  background:var(--g-surface-hover);
  border-color:var(--g-border-hover);
}
.g-card--glass{
  background:rgba(255,255,255,.08);
  backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.12);
}
.g-card--glass:hover{
  transform:translateY(-4px);
  box-shadow:var(--g-shadow-lg);
  background:rgba(255,255,255,.12);
}

/* Card sub-elements */
.g-card__top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--g-space-sm)}
.g-card__title{font-size:var(--g-font-lg);color:#fff;flex:1}
.g-card__date{font-size:var(--g-font-sm);color:var(--g-text-faint);white-space:nowrap}
.g-card__icon{font-size:2.2rem;margin-bottom:.8rem}
.g-card__desc{color:rgba(255,255,255,.5);font-size:var(--g-font-md);line-height:1.4}
.g-card__preview{font-size:var(--g-font-base);color:var(--g-text-muted);margin-top:var(--g-space-sm);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.g-card__stats{display:flex;gap:var(--g-space-md);margin-top:var(--g-space-sm);font-size:var(--g-font-sm);color:var(--g-text-faint)}
.g-card__meta{font-size:var(--g-font-sm);color:var(--g-text-muted);margin-bottom:var(--g-space-sm);display:flex;justify-content:space-between;align-items:center}

/* === Grid === */
.g-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
  gap:1.5rem;
  width:100%;
}
@media(max-width:600px){.g-grid{grid-template-columns:1fr}}

/* === Tags === */
.g-tag{
  display:inline-block;
  font-size:var(--g-font-xs);
  padding:2px 8px;
  border-radius:var(--g-radius-sm);
  background:var(--g-accent-surface);
  color:var(--g-accent);
}
.g-tags{display:flex;flex-wrap:wrap;gap:var(--g-space-xs);margin-top:var(--g-space-sm)}

/* === Buttons === */
.g-btn{
  background:var(--g-surface);
  border:1px solid var(--g-border);
  color:var(--g-text-secondary);
  padding:6px 14px;
  border-radius:var(--g-radius-sm);
  font-size:var(--g-font-sm);
  cursor:pointer;
  transition:background var(--g-transition),color var(--g-transition);
  display:inline-flex;
  align-items:center;
  gap:var(--g-space-xs);
}
.g-btn:active{background:var(--g-surface-hover);color:#fff}
.g-btn--primary{
  background:var(--g-accent-surface);
  border-color:var(--g-accent-border);
  color:var(--g-accent);
}
.g-btn--primary:active{background:var(--g-accent-border)}
.g-btn--full{width:100%;justify-content:center;padding:12px}
.g-btn--sm{padding:4px 10px;font-size:var(--g-font-xs)}
.g-btn-group{display:flex;gap:var(--g-space-sm);flex-wrap:wrap;margin-top:var(--g-space-md)}

/* === Search Input === */
.g-search{
  width:100%;
  background:var(--g-surface);
  border:1px solid var(--g-border);
  border-radius:var(--g-radius-md);
  padding:10px 14px;
  color:var(--g-text);
  font-size:var(--g-font-md);
  margin-bottom:var(--g-space-lg);
  outline:none;
}
.g-search:focus{border-color:var(--g-border-hover)}
.g-search::placeholder{color:var(--g-text-faint)}

/* === Collapsible Text === */
.g-text{font-size:var(--g-font-md);line-height:1.6;color:var(--g-text-secondary);white-space:pre-wrap}
.g-text--collapsed{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.g-text a{color:var(--g-highlight);text-decoration:none}
.g-text a:hover{text-decoration:underline}

/* === Detail/Fullscreen View === */
.g-detail{display:none;position:fixed;inset:0;background:var(--g-bg);z-index:100;overflow-y:auto;-webkit-overflow-scrolling:touch}
.g-detail.open{display:block}
.g-detail__header{
  position:sticky;top:0;background:var(--g-bg);
  border-bottom:1px solid var(--g-border);
  padding:var(--g-space-md) var(--g-space-lg);
  display:flex;align-items:center;gap:var(--g-space-md);z-index:10;
}
.g-detail__back{background:none;border:none;color:var(--g-accent);font-size:1.4rem;cursor:pointer;padding:4px}
.g-detail__title{font-size:var(--g-font-xl);color:#fff;flex:1}
.g-detail__body{padding:var(--g-space-lg);max-width:700px;margin:0 auto}

/* === Accordion/Finding === */
.g-accordion{background:var(--g-surface);border:1px solid var(--g-border);border-radius:var(--g-radius-lg);margin-bottom:var(--g-space-md);overflow:hidden}
.g-accordion__header{padding:var(--g-space-md) var(--g-space-lg);display:flex;justify-content:space-between;align-items:center;cursor:pointer}
.g-accordion__header h3{font-size:var(--g-font-md);color:#ccc;flex:1}
.g-accordion__toggle{color:var(--g-text-faint);font-size:.8rem;transition:transform .2s}
.g-accordion__toggle.open{transform:rotate(180deg)}
.g-accordion__body{display:none;padding:0 var(--g-space-lg) var(--g-space-md);font-size:var(--g-font-base);line-height:1.6;color:var(--g-text-secondary)}
.g-accordion__body.open{display:block}

/* === Section Title === */
.g-section-title{
  font-size:.8rem;color:var(--g-text-faint);
  text-transform:uppercase;letter-spacing:.5px;
  margin:var(--g-space-xl) 0 var(--g-space-sm);font-weight:600;
}

/* === Summary Block === */
.g-summary{
  background:#111;border:1px solid var(--g-border);
  border-radius:var(--g-radius-lg);padding:var(--g-space-lg);
  font-size:var(--g-font-md);line-height:1.6;color:#bbb;
  white-space:pre-wrap;margin-bottom:var(--g-space-xl);
}

/* === Source Link === */
.g-source{font-size:var(--g-font-sm);color:var(--g-text-faint);margin-top:var(--g-space-xs)}
.g-source a{color:var(--g-highlight);text-decoration:none}
.g-source a:hover{text-decoration:underline}

/* === Audio Player === */
.g-audio{width:100%;margin:var(--g-space-sm) 0;border-radius:var(--g-radius-sm)}

/* === Speaker Label === */
.g-speaker{color:var(--g-highlight);font-weight:600}

/* === Empty State === */
.g-empty{text-align:center;color:var(--g-text-faint);margin-top:60px;font-size:var(--g-font-md)}

/* === Footer === */
.g-footer{margin-top:3rem;color:rgba(255,255,255,.3);font-size:.8rem;text-align:center}

/* === Utility === */
.g-flex{display:flex}
.g-flex--between{justify-content:space-between}
.g-flex--center{align-items:center}
.g-flex--wrap{flex-wrap:wrap}
.g-gap-xs{gap:var(--g-space-xs)}
.g-gap-sm{gap:var(--g-space-sm)}
.g-gap-md{gap:var(--g-space-md)}
.g-mt-sm{margin-top:var(--g-space-sm)}
.g-mt-md{margin-top:var(--g-space-md)}
.g-mt-lg{margin-top:var(--g-space-lg)}
.g-mb-sm{margin-bottom:var(--g-space-sm)}
.g-mb-md{margin-bottom:var(--g-space-md)}
.g-pb-xl{padding-bottom:40px}
