:root{
  --ink:#14110f;
  --cream:#f6efe3;
  --paper:#fffaf1;
  --red:#e23d2b;
  --mustard:#efb93c;
  --cobalt:#2b4fd1;
  --mint:#7fbf9a;
  --line:rgba(20,17,15,.16);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--cream);
  color:var(--ink);
  font-family:"Space Grotesk",system-ui,sans-serif;
  font-size:16px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
.grain{
  position:fixed;inset:0;pointer-events:none;z-index:99;
  opacity:.5;mix-blend-mode:multiply;
  background-image:radial-gradient(rgba(20,17,15,.16) 1px, transparent 1px);
  background-size:4px 4px;
}
main{max-width:1180px;margin:0 auto;padding:0 18px 60px}
img{max-width:100%}

/* ---------- topbar ---------- */
.topbar{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:10px 16px;
  background:var(--ink);color:var(--cream);
  border-bottom:3px solid var(--red);
}
.brand{display:flex;align-items:center;gap:9px;min-width:0}
.brand-name{
  font-family:"Space Grotesk",sans-serif;font-weight:700;
  letter-spacing:.22em;font-size:.72rem;text-transform:uppercase;white-space:nowrap;
}
.bulb{
  width:11px;height:11px;border-radius:50%;background:var(--mustard);
  box-shadow:0 0 0 3px rgba(239,185,60,.25);
  animation:flicker 2.6s infinite steps(1);
}
@keyframes flicker{0%,72%,100%{opacity:1}75%{opacity:.25}78%{opacity:1}84%{opacity:.4}87%{opacity:1}}
.topbar-right{display:flex;align-items:center;gap:8px}
.who{
  font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--mustard);max-width:38vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* ---------- buttons ---------- */
.btn{
  font-family:"Space Grotesk",sans-serif;font-weight:700;
  font-size:.78rem;letter-spacing:.09em;text-transform:uppercase;
  padding:11px 16px;min-height:44px;
  border:2px solid var(--ink);background:var(--paper);color:var(--ink);
  cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;
  transition:transform .12s ease, box-shadow .12s ease, background .12s ease;
}
.btn:active{transform:translate(2px,2px)}
.btn-red{background:var(--red);color:#fff;border-color:var(--ink);box-shadow:4px 4px 0 var(--ink)}
.btn-red:hover{background:#c9301f}
.btn-red:active{box-shadow:0 0 0 var(--ink)}
.btn-ink{background:var(--mustard);color:var(--ink);border-color:var(--cream);box-shadow:3px 3px 0 var(--red)}
.btn-ink:active{box-shadow:0 0 0 var(--red)}
.btn-ghost{background:transparent;color:var(--cream);border-color:rgba(246,239,227,.5);box-shadow:none}
.btn-ghost:hover{border-color:var(--cream)}
.btn-block{width:100%}

/* ---------- masthead ---------- */
.masthead{padding:26px 0 22px;border-bottom:3px double var(--ink)}
.kicker{
  margin:0 0 14px;font-size:.63rem;letter-spacing:.28em;text-transform:uppercase;
  color:rgba(20,17,15,.6);
}
.masthead h1{
  margin:0;font-family:"Bodoni Moda",Georgia,serif;font-weight:900;
  font-size:clamp(2.65rem,15vw,7.4rem);line-height:.86;letter-spacing:-.02em;
  text-transform:uppercase;
}
.masthead h1 span{display:block}
.line-2{margin-left:.06em;color:var(--red)}
.line-2 em{
  font-style:italic;color:var(--ink);
  -webkit-text-decoration:underline wavy var(--mustard);
  text-decoration:underline wavy var(--mustard);
  text-underline-offset:8px;
}
.masthead-foot{
  display:flex;flex-wrap:wrap;align-items:flex-end;gap:20px;
  margin-top:22px;
}
.deck{
  margin:0;flex:1 1 240px;min-width:0;
  font-size:1.02rem;max-width:44ch;color:rgba(20,17,15,.82);
}
.counter{
  display:flex;align-items:center;gap:10px;
  background:var(--ink);color:var(--cream);
  padding:10px 16px;box-shadow:5px 5px 0 var(--red);
}
.counter-num{
  font-family:"Bodoni Moda",serif;font-weight:900;font-size:2.7rem;line-height:1;
  color:var(--mustard);font-variant-numeric:tabular-nums;
}
.counter-label{
  font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;line-height:1.5;
}

/* ---------- columns ---------- */
.columns{display:grid;grid-template-columns:1fr;gap:34px;padding-top:28px}
.col-head{
  display:flex;align-items:baseline;gap:10px;
  border-bottom:2px solid var(--ink);padding-bottom:8px;margin-bottom:16px;
}
.col-head h2{
  margin:0;font-family:"Bodoni Moda",serif;font-weight:800;
  font-size:clamp(1.5rem,6vw,2.1rem);text-transform:uppercase;letter-spacing:-.01em;
}
.tag{
  margin-left:auto;font-size:.58rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  padding:4px 9px;border:1.5px solid var(--ink);white-space:nowrap;
}
.tag-private{background:var(--mint)}
.tag-public{background:var(--mustard)}

/* ---------- panes / forms ---------- */
.pane{background:var(--paper);border:2px solid var(--ink);padding:16px;box-shadow:6px 6px 0 rgba(20,17,15,.12)}
.pane-note{margin:0 0 14px;font-size:.86rem;color:rgba(20,17,15,.7)}
.tabs{display:flex;gap:0;margin-bottom:16px;border:2px solid var(--ink)}
.tab{
  flex:1;min-height:42px;border:0;background:var(--paper);cursor:pointer;
  font-family:"Space Grotesk",sans-serif;font-weight:700;font-size:.75rem;
  letter-spacing:.12em;text-transform:uppercase;color:rgba(20,17,15,.55);
}
.tab+.tab{border-left:2px solid var(--ink)}
.tab.is-on{background:var(--ink);color:var(--mustard)}
.field{display:block;margin-bottom:12px}
.field span{
  display:block;font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;
  margin-bottom:5px;color:rgba(20,17,15,.6);font-weight:700;
}
input,textarea{
  width:100%;font-family:"Space Grotesk",sans-serif;font-size:1rem;
  padding:12px;min-height:46px;
  border:2px solid var(--ink);background:var(--cream);color:var(--ink);
  border-radius:0;-webkit-appearance:none;
}
textarea{resize:vertical;min-height:64px;line-height:1.4}
input:focus,textarea:focus{outline:0;background:#fff;box-shadow:inset 0 -4px 0 var(--mustard)}
.msg{margin:10px 0 0;font-size:.8rem;min-height:1.1em}
.msg[data-kind="bad"]{color:#a8241a;font-weight:500}
.msg[data-kind="ok"]{color:#2a6b46;font-weight:500}
.err{color:#a8241a;font-size:.86rem;margin:12px 0 0}
.empty{
  margin:16px 0 0;font-family:"Bodoni Moda",serif;font-style:italic;
  font-size:1.02rem;color:rgba(20,17,15,.6);
}

.add-form{display:grid;gap:10px}
.add-row{display:grid;grid-template-columns:1fr auto;gap:10px}
.add-row input{max-width:120px}
.list-stats{
  display:flex;gap:18px;margin:16px 0 10px;padding-top:12px;
  border-top:1.5px dashed var(--line);
  font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(20,17,15,.62);
}
.list-stats b{font-family:"Bodoni Moda",serif;font-size:1.05rem;color:var(--ink)}

/* ---------- ticket stubs ---------- */
.stubs{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.stub{
  position:relative;display:flex;align-items:center;gap:12px;
  background:var(--cream);border:2px solid var(--ink);
  padding:12px 40px 12px 12px;overflow:hidden;
  animation:pop .18s ease both;
}
.stub::before{
  content:"";position:absolute;left:52px;top:0;bottom:0;width:0;
  border-left:2px dotted rgba(20,17,15,.28);
}
@keyframes pop{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.stub.is-going{opacity:.3;transform:translateX(8px)}
.stub-check{
  flex:0 0 auto;width:30px;height:30px;padding:0;cursor:pointer;
  border:2px solid var(--ink);background:var(--paper);
  font-size:1rem;line-height:1;color:var(--ink);
  display:grid;place-items:center;transition:background .15s ease;
}
.stub-check:hover{background:var(--mustard)}
.stub-body{min-width:0;padding-left:14px}
.stub-title{
  margin:0;font-family:"Bodoni Moda",serif;font-weight:700;
  font-size:1.12rem;line-height:1.15;word-break:break-word;
}
.stub-meta{margin:3px 0 0;font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(20,17,15,.55)}
.stub-x{
  position:absolute;right:6px;top:50%;transform:translateY(-50%);
  width:30px;height:30px;border:0;background:transparent;cursor:pointer;
  font-size:1.4rem;line-height:1;color:rgba(20,17,15,.35);
}
.stub-x:hover{color:var(--red)}
.stub.is-seen{background:#efe6d6}
.stub.is-seen .stub-check{background:var(--mint)}
.stub.is-seen .stub-title{color:rgba(20,17,15,.5);text-decoration:line-through;text-decoration-thickness:1.5px}
.seen-stamp{
  position:absolute;right:34px;top:50%;
  font-family:"Bodoni Moda",serif;font-weight:900;font-size:1.05rem;
  letter-spacing:.1em;color:rgba(226,61,43,.75);
  border:2.5px solid rgba(226,61,43,.6);padding:1px 7px;
  transform:translateY(-50%) rotate(-11deg);
  animation:stamp .28s cubic-bezier(.2,1.6,.4,1) both;pointer-events:none;
}
@keyframes stamp{from{opacity:0;transform:translateY(-50%) rotate(-11deg) scale(2.1)}to{opacity:1;transform:translateY(-50%) rotate(-11deg) scale(1)}}

/* ---------- wall ---------- */
.review-form{
  display:grid;gap:10px;background:var(--ink);color:var(--cream);
  border:2px solid var(--ink);padding:16px;box-shadow:6px 6px 0 var(--mustard);
}
.review-form .pane-note{color:rgba(246,239,227,.7);margin:0}
.review-form input,.review-form textarea{background:#221d1a;color:var(--cream);border-color:rgba(246,239,227,.35)}
.review-form input::placeholder,.review-form textarea::placeholder{color:rgba(246,239,227,.45)}
.review-form input:focus,.review-form textarea:focus{background:#2b2521;box-shadow:inset 0 -4px 0 var(--red)}
.review-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.review-row input{flex:1 1 130px;min-width:0}
.stars{display:flex;gap:2px}
.stars button{
  border:0;background:transparent;cursor:pointer;padding:4px 1px;
  font-size:1.3rem;line-height:1;color:rgba(246,239,227,.28);
  transition:transform .12s ease,color .12s ease;
}
.stars button:hover{transform:scale(1.2)}
.stars button.on{color:var(--mustard)}

.wall{margin-top:18px;display:grid;gap:12px}
.note{
  position:relative;background:var(--paper);border:2px solid var(--ink);
  padding:14px 14px 12px;box-shadow:4px 4px 0 rgba(20,17,15,.14);
  transition:transform .14s ease,box-shadow .14s ease;
}
.note:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 rgba(20,17,15,.2)}
.note::after{content:"";position:absolute;left:0;top:0;bottom:0;width:6px}
.note.c1::after{background:var(--red)}
.note.c2::after{background:var(--mustard)}
.note.c3::after{background:var(--cobalt)}
.note.c4::after{background:var(--mint)}
.note-movie{
  margin:0 0 6px;font-size:.63rem;font-weight:700;letter-spacing:.2em;
  text-transform:uppercase;color:var(--red);word-break:break-word;
}
.note.c3 .note-movie{color:var(--cobalt)}
.note-body{
  margin:0;font-family:"Bodoni Moda",serif;font-size:1.14rem;line-height:1.32;
  word-break:break-word;
}
.note-foot{
  margin:10px 0 0;padding-top:8px;border-top:1.5px dashed var(--line);
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  font-size:.63rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(20,17,15,.55);
}
.note-who{font-weight:700;color:var(--ink)}
.note-rating{color:var(--mustard);letter-spacing:1px;font-size:.8rem}
.note-when{margin-left:auto}

/* ---------- skeleton + footer ---------- */
.sk{height:44px;background:linear-gradient(90deg,#e9e0d0,#f3ebdd,#e9e0d0);background-size:200% 100%;animation:shimmer 1.2s linear infinite;margin-bottom:10px}
.sk-lg{height:96px}
@keyframes shimmer{from{background-position:200% 0}to{background-position:-200% 0}}
.status{min-height:4px}
.foot{
  margin-top:44px;padding-top:14px;border-top:3px double var(--ink);
  display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;
  font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(20,17,15,.55);
}

@media (min-width:760px){
  main{padding:0 30px 70px}
  .columns{grid-template-columns:1fr 1.1fr;gap:40px;padding-top:36px}
  .wall{grid-template-columns:1fr 1fr}
  .add-row input{max-width:150px}
}
@media (min-width:1040px){
  .columns{gap:56px}
  .col-list{position:sticky;top:80px;align-self:start}
}
