*{box-sizing:border-box}
:root{
  --cream:#efe6d6;
  --cream-deep:#e3d4bd;
  --paper:#f7f1e7;
  --ink:#121212;
  --orange:#f05a17;
  --muted:#746c60;
  --line:#262626;
  --soft:#c9bca8;
  --dark:#111;
}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:Arial,Helvetica,sans-serif;
  color:var(--ink);
  background:
    radial-gradient(rgba(0,0,0,.035) 1px,transparent 1px) 0 0/5px 5px,
    var(--cream);
}
a{color:inherit;text-decoration:none}
button,input,textarea{font:inherit}
button{cursor:pointer}
.container{width:min(1180px,calc(100% - 40px));margin:auto}

.site-header{
  position:sticky;top:0;z-index:30;
  background:rgba(239,230,214,.97);
  border-top:5px solid #252525;
  border-bottom:2px solid #252525;
}
.header-inner{
  min-height:92px;
  display:grid;
  grid-template-columns:1.25fr .7fr auto;
  gap:28px;
  align-items:center;
}
.brand-line{
  display:flex;align-items:center;
  font-size:2rem;
  font-weight:1000;
  letter-spacing:-1.5px;
  line-height:1;
}
.logo-c{
  width:30px;height:48px;
  display:inline-flex;align-items:center;
  color:var(--orange);
  margin:-5px -3px -4px -2px;
}
.carabiner-logo{width:100%;height:100%}
.brand-version{color:var(--orange);font-size:1.05rem;margin-left:8px;letter-spacing:0}
.brand-tagline{
  margin-top:5px;
  font-size:.63rem;
  font-weight:900;
  letter-spacing:.18em;
}
nav{display:flex;justify-content:center;gap:30px;font-weight:1000;font-size:.88rem;letter-spacing:.05em}
nav a{padding:35px 0 31px;border-bottom:4px solid transparent}
nav a:hover,nav a.active{border-bottom-color:var(--orange)}
.header-actions{display:flex;gap:10px}
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  padding:12px 17px;
  border:1px solid var(--ink);
  background:transparent;
  font-weight:950;
  font-size:.82rem;
  letter-spacing:.04em;
}
.btn-outline{background:var(--paper)}
.btn-accent{background:var(--orange);border-color:var(--orange);color:white;box-shadow:4px 4px 0 #111}
.btn-light{background:white;border-color:white;color:#111}
.btn-full{width:100%;margin-top:20px}

.hero{padding:30px 0 26px}
.hero-grid{display:grid;grid-template-columns:1.7fr .77fr;gap:18px}
.hero-story{
  min-height:485px;
  border:2px solid var(--ink);
  background:
    linear-gradient(145deg,transparent 0 45%,rgba(255,255,255,.04) 45% 60%,transparent 60%),
    linear-gradient(120deg,#050505,#161513 68%,#39332b);
  position:relative;
  overflow:hidden;
}
.hero-story:after{
  content:"";
  position:absolute;left:0;right:0;bottom:0;height:8px;
  background:repeating-linear-gradient(90deg,var(--orange) 0 52px,#111 52px 57px);
}
.hero-content{width:min(720px,88%);padding:50px;position:relative;z-index:2}
.topic-badge{
  display:inline-block;
  padding:8px 11px;
  background:var(--orange);
  color:white;
  border:2px solid white;
  font-weight:950;
  font-size:.74rem;
  letter-spacing:.1em;
  transform:rotate(-1deg);
}
.hero h1{
  color:white;
  margin:20px 0 24px;
  font-size:clamp(3.1rem,5vw,5.6rem);
  line-height:.88;
  letter-spacing:-.055em;
  font-weight:1000;
}
.hero p{color:#eee;max-width:640px;font-size:1.08rem;font-weight:700;line-height:1.55;margin-bottom:28px}

.latest-box{
  border:2px solid var(--ink);
  background:var(--paper);
  padding:24px;
}
.box-heading{
  font-size:.78rem;
  font-weight:1000;
  letter-spacing:.15em;
  border-bottom:4px solid var(--orange);
  padding-bottom:11px;
}
.latest-item{
  display:grid;
  grid-template-columns:70px 1fr;
  gap:13px;
  padding:16px 0;
  border-bottom:1px solid var(--soft);
}
.latest-item:last-child{border-bottom:0}
.thumb{
  min-height:70px;
  display:grid;
  place-items:center;
  background:var(--orange);
  color:white;
  border:2px solid #111;
  font-weight:1000;
}
.latest-item strong{display:block;line-height:1.2}
.latest-item small{display:block;color:var(--muted);margin-top:7px;line-height:1.35}

.section{padding:64px 0}
.meme-section{
  background:
    linear-gradient(rgba(0,0,0,.025),rgba(0,0,0,.025)),
    var(--cream-deep);
  border-top:1px solid #b9aa94;
  border-bottom:1px solid #b9aa94;
}
.section-heading{
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:20px;
  margin-bottom:24px;
}
.eyebrow{display:block;color:var(--orange);font-size:.72rem;font-weight:1000;letter-spacing:.14em;margin-bottom:6px}
.section-heading h2,.about-section h2{font-size:2.55rem;margin:0;letter-spacing:-.05em}
.link-action{
  border:0;background:transparent;color:var(--orange);
  font-weight:950;font-size:.8rem;
}
.meme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.meme-card{
  background:var(--paper);
  border:1px solid #b8aa95;
  box-shadow:3px 3px 0 rgba(0,0,0,.10);
}
.meme-image{
  aspect-ratio:4/3;
  display:grid;
  place-items:center;
  background:
    linear-gradient(135deg,rgba(0,0,0,.06),transparent 50%),
    #d9cbb7;
  border-bottom:1px solid #b8aa95;
}
.meme-image span{
  padding:7px 10px;
  border:1px solid #777;
  font-size:.78rem;
  font-weight:1000;
  letter-spacing:.14em;
}
.meme-text{padding:16px}
.meme-text h3{font-size:1rem;margin:0 0 14px}
.meta-row{display:flex;gap:15px;color:var(--muted);font-size:.8rem}

.articles-wrap{
  background:
    radial-gradient(rgba(255,255,255,.025) 1px,transparent 1px) 0 0/5px 5px,
    #101010;
  color:white;
  border-top:6px solid var(--orange);
}
.section-heading.dark h2{color:white}
.article-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:17px}
.article-card{background:#171717;border:1px solid #3a3a3a}
.article-main{grid-row:span 2}
.article-placeholder{
  min-height:275px;
  display:grid;
  place-items:center;
  background:linear-gradient(145deg,#202020,#302d29);
  color:#777;
  font-size:.72rem;
  font-weight:1000;
  letter-spacing:.12em;
}
.article-placeholder.small{min-height:150px}
.article-body{padding:21px}
.article-label{display:block;color:var(--orange);font-size:.69rem;font-weight:1000;letter-spacing:.14em;margin-bottom:9px}
.article-body h3{margin:0;line-height:1.22;font-size:1.15rem}
.article-main .article-body h3{font-size:1.55rem}

.about-section{
  padding:68px 0;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:50px;
  align-items:end;
}
.about-section p{margin:0;color:var(--muted);font-size:1.1rem;line-height:1.6}

footer{
  background:#111;
  color:white;
  border-top:6px solid var(--orange);
  padding:28px 0;
}
.footer-inner{display:flex;justify-content:space-between;align-items:center;gap:20px}
.footer-logo{font-weight:1000;font-size:1.2rem}
.footer-logo span{color:var(--orange)}
.footer-links{display:flex;gap:18px;font-size:.82rem}

.modal{
  display:none;
  position:fixed;
  inset:0;
  z-index:100;
  background:rgba(0,0,0,.74);
  align-items:center;
  justify-content:center;
  padding:20px;
}
.modal.show{display:flex}
.modal-card{
  position:relative;
  width:min(510px,100%);
  background:var(--paper);
  padding:32px;
  border:2px solid #111;
}
.small-modal{width:min(420px,100%)}
.modal-close{
  position:absolute;
  right:12px;
  top:8px;
  border:0;
  background:transparent;
  font-size:2rem;
}
.modal-card h2{font-size:2rem;margin:5px 0 18px}
.modal-card label{display:block;font-weight:900;margin:15px 0 6px}
.modal-card input,.modal-card textarea{width:100%;border:1px solid #aaa;padding:11px;background:white}
.modal-card textarea{min-height:90px}

.article-page{padding:70px 0;min-height:70vh}
.article-page>h1{font-size:5rem;margin:5px 0 15px;letter-spacing:-.06em}
.page-lead{color:var(--muted)}
.article-list{margin-top:40px;border-top:2px solid #111}
.article-list article{padding:30px 0;border-bottom:1px solid var(--soft)}
.article-list h2{margin:8px 0 0;max-width:900px;line-height:1.18}

@media(max-width:980px){
  .header-inner{grid-template-columns:1fr auto;padding:14px 0}
  nav{grid-column:1/-1;grid-row:2;justify-content:flex-start}
  nav a{padding:5px 0 12px}
  .hero-grid{grid-template-columns:1fr}
  .article-grid{grid-template-columns:1fr 1fr}
  .article-main{grid-column:1/-1;grid-row:auto}
}
@media(max-width:700px){
  .container{width:min(100% - 24px,1180px)}
  .header-inner{grid-template-columns:1fr}
  .header-actions{justify-self:start;flex-wrap:wrap}
  .brand-line{font-size:1.55rem}
  .logo-c{width:24px;height:39px}
  .hero-content{padding:30px}
  .hero h1{font-size:3rem}
  .meme-grid,.article-grid{grid-template-columns:1fr}
  .article-main{grid-column:auto}
  .section-heading{align-items:flex-start;flex-direction:column}
  .about-section{grid-template-columns:1fr}
  .footer-inner{align-items:flex-start;flex-direction:column}
}


/* v0.5 — exact logo from approved visualization */
.brand-image{
  display:block;
  width:310px;
  max-width:100%;
}
.brand-image img{
  display:block;
  width:100%;
  height:auto;
  object-fit:contain;
}
@media(max-width:700px){
  .brand-image{width:260px}
}

/* v0.6: logo ma przezroczyste tło i stapia się z nagłówkiem */
.brand-image,
.brand-image img {
  background: transparent !important;
}

.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}
#memeStatus{min-height:1.2em;margin-top:12px}

/* v0.8 — memy z Supabase */
.meme-loading,
.meme-empty{
  grid-column:1/-1;
  padding:42px;
  border:1px solid #b8aa95;
  background:var(--paper);
  text-align:center;
}
.meme-empty{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.meme-empty strong{
  font-size:1.15rem;
}
.meme-empty span{
  color:var(--muted);
}
.live-image{
  display:block;
  overflow:hidden;
  background:#d9cbb7;
}
.live-image img{
  display:block;
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
}
.meme-description{
  margin:0 0 14px;
  color:var(--muted);
  line-height:1.45;
  font-size:.9rem;
}
.live-meme .meta-row{
  justify-content:space-between;
}

/* v1.0 — konta użytkowników */
.auth-card{width:min(540px,100%)}
.auth-tabs{
  display:grid;
  grid-template-columns:1fr 1fr;
  margin:18px 0 22px;
  border-bottom:2px solid #111;
}
.auth-tab{
  border:0;
  background:transparent;
  padding:12px 8px;
  font-weight:950;
  color:var(--muted);
  border-bottom:4px solid transparent;
}
.auth-tab.active{
  color:var(--ink);
  border-bottom-color:var(--orange);
}
.auth-status{min-height:2.5em}
.auth-user-email{
  font-size:1.15rem;
  font-weight:900;
  margin:8px 0 18px;
}
#loginBtn.logged-in{border-color:var(--orange)}

/* v1.1 — profil i historia memów */
.account-summary{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0 24px}.account-summary>div{padding:14px;border:1px solid var(--soft);background:#fff}.account-caption{display:block;color:var(--muted);font-size:.68rem;font-weight:950;letter-spacing:.12em;margin-bottom:5px}.account-nick-edit{padding:18px 0;border-top:1px solid var(--soft);border-bottom:1px solid var(--soft)}.account-nick-edit label{display:block;font-weight:900;margin-bottom:7px}.account-nick-row{display:grid;grid-template-columns:1fr auto;gap:8px}.account-nick-row input{width:100%;padding:11px;border:1px solid #aaa}.my-memes-section{margin:22px 0}.my-memes-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid var(--orange);padding-bottom:8px;margin-bottom:10px}.mini-link{border:0;background:transparent;color:var(--orange);font-weight:950;font-size:.72rem;cursor:pointer}.my-memes-list{max-height:300px;overflow:auto}.my-meme-row{display:grid;grid-template-columns:58px 1fr auto;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--soft)}.my-meme-row img{width:58px;height:58px;object-fit:cover;background:#ddd}.my-meme-main{min-width:0}.my-meme-main strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.88rem}.my-meme-main span{color:var(--muted);font-size:.72rem}.meme-status{font-size:.65rem;font-weight:1000;letter-spacing:.06em;padding:5px 7px;border:1px solid #111}.status-pending{background:#f0d890}.status-approved{background:#d8e8d2}.status-rejected{background:#e6c2bc}.my-memes-empty{padding:20px 8px;color:var(--muted);text-align:center}@media(max-width:560px){.account-summary{grid-template-columns:1fr}.my-meme-row{grid-template-columns:50px 1fr}.meme-status{grid-column:2}}

@media (max-width: 760px) {
  body{overflow-x:hidden}
  .container{width:min(100% - 24px,100%)}
  .brand-image{max-width:230px}
  .brand-image img{width:100%;height:auto}
  .site-nav{gap:8px;flex-wrap:wrap;justify-content:flex-start}
  .site-nav a{font-size:.78rem}
  .header-actions{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
  .header-actions .btn,#loginBtn,#addMemeBtn{width:100%;min-height:44px;padding:10px 8px;font-size:.75rem}
  .hero{grid-template-columns:1fr}
  .hero-main h1{font-size:clamp(2.4rem,13vw,4.3rem);line-height:.92}
  .section-head{align-items:flex-end;gap:10px}
  .section-head h2{font-size:2rem}
  .meme-grid{grid-template-columns:1fr;gap:16px}
  .meme-card{width:100%}
  .meme-image img,.live-image img{aspect-ratio:auto;max-height:none;object-fit:contain;background:#111}
  .meme-text{padding:14px 14px 12px}
  .meme-text h3{font-size:1.05rem}
  .meta-row{gap:10px;flex-wrap:wrap;font-size:.78rem}
  .modal{align-items:flex-start;padding:12px;overflow:auto}
  .modal-card{width:100%;max-width:none;margin:10px 0;max-height:none;border-width:2px;padding:24px 18px 18px}
  .modal-card h2{font-size:2rem}
  .modal-close{top:10px;right:12px;font-size:1.7rem}
  .account-summary{grid-template-columns:1fr}
  .account-nick-row{grid-template-columns:1fr}
  .account-nick-row .btn{width:100%}
  .my-meme-row{grid-template-columns:56px 1fr;align-items:start}
  .meme-status{grid-column:2;justify-self:start;margin-top:4px}
  .form-grid,.modal-form-grid{grid-template-columns:1fr!important}
  input,textarea,select,button{font-size:16px}
  .btn{min-height:44px}
}
@media (max-width: 420px) {
  .container{width:min(100% - 16px,100%)}
  .brand-image{max-width:200px}
  .header-actions{grid-template-columns:1fr}
  .hero-main h1{font-size:2.65rem}
  .section-head{align-items:flex-start;flex-direction:column}
  .modal{padding:6px}
  .modal-card{padding:22px 14px 16px}
}


/* v1.7 — bardziej zwarty mobilny header */
@media (max-width: 760px) {
  .site-header .container,
  .header-inner{
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:8px;
    padding:10px 0 12px;
  }

  .brand-image{
    align-self:flex-start;
    max-width:220px;
    margin-bottom:2px;
  }

  .site-nav{
    width:100%;
    display:flex;
    justify-content:space-between;
    gap:10px;
    padding:2px 0 4px;
  }

  .site-nav a{
    flex:1;
    text-align:center;
    font-size:.78rem;
    padding:6px 2px;
  }

  .header-actions{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:8px !important;
    width:100%;
    margin-top:0 !important;
  }

  .header-actions .btn,
  #loginBtn,
  #addMemeBtn{
    width:100% !important;
    min-height:42px !important;
    padding:9px 6px !important;
    font-size:.72rem !important;
    line-height:1.05 !important;
  }

  #loginBtn{
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }

  #addMemeBtn{
    white-space:nowrap;
  }

  .hero{
    margin-top:8px;
  }
}

@media (max-width: 420px) {
  .brand-image{
    max-width:205px;
  }

  .site-nav{
    gap:4px;
  }

  .site-nav a{
    font-size:.72rem;
  }

  .header-actions{
    grid-template-columns:1fr 1fr !important;
  }

  .header-actions .btn,
  #loginBtn,
  #addMemeBtn{
    font-size:.68rem !important;
    min-height:40px !important;
  }
}


/* v1.8 — compact mobile header */
@media (max-width: 760px) {
  .site-header .container,
  .header-inner{
    gap:4px !important;
    padding:6px 0 8px !important;
  }

  .brand-image{
    max-width:185px !important;
    margin-bottom:0 !important;
  }

  .site-nav{
    gap:4px !important;
    padding:0 !important;
    margin:0 !important;
  }

  .site-nav a{
    font-size:.70rem !important;
    padding:3px 2px !important;
    line-height:1 !important;
  }

  .header-actions{
    gap:6px !important;
  }

  .header-actions .btn,
  #loginBtn,
  #addMemeBtn{
    min-height:36px !important;
    padding:6px 5px !important;
    font-size:.66rem !important;
    line-height:1 !important;
  }

  .hero{
    margin-top:4px !important;
  }
}

@media (max-width: 420px) {
  .brand-image{
    max-width:175px !important;
  }

  .site-nav a{
    font-size:.67rem !important;
  }

  .header-actions .btn,
  #loginBtn,
  #addMemeBtn{
    min-height:34px !important;
    font-size:.64rem !important;
  }
}


/* v1.9 — smart mobile header */
@media (max-width: 760px) {
  .site-header{
    position:sticky;
    top:0;
    z-index:1000;
    transition:transform .22s ease;
    will-change:transform;
  }

  .site-header.header-hidden{
    transform:translateY(-100%);
  }

  .site-header.header-visible{
    transform:translateY(0);
  }
}


/* v2.0 — dynamiczne artykuły */
.latest-box #latestArticlesList{display:block}
#heroArticle{
  background-color:#111;
  background-blend-mode:multiply;
}
.article-dynamic-loading{
  padding:20px;
  color:var(--muted);
}
.article-thumb-image img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.article-live-image{
  height:230px;
  background:#111;
  overflow:hidden;
}
.article-live-image img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.dynamic-article-card{
  text-decoration:none;
  color:inherit;
}
.article-card-lead{
  color:var(--muted);
  line-height:1.4;
  font-size:.84rem;
}
@media(max-width:760px){
  .article-live-image{
    height:auto;
    aspect-ratio:16/10;
  }
}


/* v2.1 — mobile memes, wygodniejszy formularz */
.meme-scroll-sentinel{
  width:100%;
  height:2px;
}
@media (min-width:761px){
  .meme-scroll-sentinel{display:none}
}
@media (max-width:760px){
  body.meme-modal-open{overflow:hidden}
  body.meme-modal-open .site-header{
    transform:translateY(-110%) !important;
    pointer-events:none;
  }
  body.meme-modal-open #memeModal{
    z-index:1200;
    padding-top:8px;
  }
  body.meme-modal-open #memeModal .modal-card{
    margin:0;
  }
}
