:root{
  --ink:#16324f; --ink-soft:#3d5775; --paper:#f6efe2; --paper-2:#efe5d2;
  --card:#fffdf8; --line:#d8cbb3; --line-soft:#e7dcc6;
  --stamp:#c8402f; --sea:#1f7a6d; --gold:#c98a2b; --miss:#b0a288;
  --shadow:0 1px 0 rgba(22,50,79,.04), 0 14px 34px -18px rgba(22,50,79,.45);
  --radius:14px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  font-family:"Instrument Sans",system-ui,sans-serif; color:var(--ink);
  background:radial-gradient(120% 80% at 50% -10%, #fbf6ec 0%, var(--paper) 46%, var(--paper-2) 100%);
  min-height:100dvh; -webkit-font-smoothing:antialiased; line-height:1.45;
}
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;
  background-image:
    repeating-linear-gradient(0deg, transparent 0 38px, rgba(22,50,79,.035) 38px 39px),
    repeating-linear-gradient(90deg, transparent 0 38px, rgba(22,50,79,.035) 38px 39px);
  -webkit-mask-image:radial-gradient(110% 90% at 50% 20%, #000 30%, transparent 100%);
  mask-image:radial-gradient(110% 90% at 50% 20%, #000 30%, transparent 100%);
}
.wrap{position:relative;z-index:1;max-width:560px;margin:0 auto;padding:18px 16px 60px;
  padding-top:max(18px,env(safe-area-inset-top));}

header{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px}
.brand .eyebrow{font-family:"Spline Sans Mono",monospace;font-size:11px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--ink-soft);margin:0 0 2px}
.brand h1{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;
  font-size:clamp(26px,7vw,34px);line-height:.95;margin:0;letter-spacing:-.02em}
.brand .sub{font-family:"Spline Sans Mono",monospace;font-size:11px;color:var(--ink-soft);margin-top:5px}
.hud{display:flex;gap:8px;align-items:center}
.streak{display:flex;align-items:center;gap:5px;background:var(--card);border:1px solid var(--line);
  border-radius:999px;padding:6px 11px;box-shadow:var(--shadow);font-weight:600;font-size:14px}
.iconbtn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.iconbtn svg{width:18px;height:18px}

.postcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow:hidden}
.pc-top{padding:13px 16px;border-bottom:1px dashed var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:linear-gradient(180deg,#fffefb, #fffdf7)}
.pc-top .mode-tag{font-family:"Spline Sans Mono",monospace;font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-soft);display:flex;align-items:center;gap:7px}
.pc-top .dot{width:7px;height:7px;border-radius:50%;background:var(--stamp)}
.attempts{display:flex;gap:5px}
.attempts i{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--line);display:block}
.attempts i.used{background:var(--miss);border-color:var(--miss)}
.attempts i.win{background:var(--sea);border-color:var(--sea)}
.attempts i.left{background:#fff}

.hints{padding:14px 16px 4px}
.hint{display:flex;gap:11px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--line-soft);
  animation:slideIn .35s ease both}
.hint:last-child{border-bottom:0}
.hint .num{flex:none;width:26px;height:26px;border-radius:7px;background:var(--paper);border:1px solid var(--line);
  font-family:"Spline Sans Mono",monospace;font-weight:600;font-size:12px;
  display:grid;place-items:center;color:var(--ink-soft);margin-top:1px}
.hint .lbl{font-family:"Spline Sans Mono",monospace;font-size:10px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-soft);margin-bottom:2px}
.hint .txt{font-size:15.5px}
.hint .mask{font-family:"Spline Sans Mono",monospace;font-size:19px;letter-spacing:.18em;font-weight:600}
@keyframes slideIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

.guesses{padding:4px 16px 0;display:flex;flex-direction:column;gap:7px}
.guess{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;
  border:1px solid var(--line-soft);background:var(--paper);font-weight:500;animation:pop .25s ease both}
.guess .badge{flex:none;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;color:#fff;font-size:13px;font-weight:700}
.guess.wrong .badge{background:var(--miss)}
.guess.right .badge{background:var(--sea)}
.guess .name{flex:1}
.guess .tag{font-family:"Spline Sans Mono",monospace;font-size:11px;color:var(--ink-soft)}
@keyframes pop{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}

.play{padding:14px 16px 18px}
.field{position:relative}
.field input{width:100%;padding:14px 15px;border-radius:11px;border:1.5px solid var(--line);
  background:#fff;font:inherit;font-size:16px;color:var(--ink);outline:none;
  transition:border-color .15s ease, box-shadow .15s ease}
.field input::placeholder{color:#a99e88}
.field input:focus{border-color:var(--ink);box-shadow:0 0 0 4px rgba(22,50,79,.08)}
.suggest{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--line);
  border-radius:11px;box-shadow:var(--shadow);overflow:hidden;z-index:20;display:none}
.suggest.open{display:block}
.suggest button{width:100%;text-align:left;border:0;background:none;padding:11px 14px;font:inherit;font-size:15px;
  color:var(--ink);cursor:pointer;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;gap:8px}
.suggest button:last-child{border-bottom:0}
.suggest button:hover,.suggest button.active{background:var(--paper)}
.suggest button .hl{font-weight:700}
.suggest button .country{font-family:"Spline Sans Mono",monospace;font-size:11px;color:var(--ink-soft)}
.row{display:flex;gap:10px;margin-top:11px}
.btn{border:0;border-radius:11px;padding:14px 16px;font:inherit;font-weight:700;cursor:pointer;
  position:relative;transition:transform .07s ease, box-shadow .07s ease, filter .12s ease}
.btn-primary{flex:1;background:var(--ink);color:#fff;
  box-shadow:0 4px 0 #0c1d30, 0 12px 20px -10px rgba(22,50,79,.6)}
.btn-primary:hover{filter:brightness(1.08)}
.btn-primary:active{transform:translateY(4px);box-shadow:0 1px 0 #0c1d30, 0 4px 10px -8px rgba(22,50,79,.6)}
.btn-primary:disabled{opacity:.4;cursor:not-allowed;box-shadow:0 4px 0 #0c1d30}
.btn-ghost{background:var(--paper);color:var(--ink-soft);border:1px solid var(--line);
  box-shadow:0 4px 0 #cdbfa3, 0 10px 16px -12px rgba(22,50,79,.4)}
.btn-ghost:hover{background:#fff;color:var(--ink)}
.btn-ghost:active{transform:translateY(4px);box-shadow:0 1px 0 #cdbfa3}
.btn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.iconbtn{width:38px;height:38px;border-radius:999px;border:1px solid var(--line);background:var(--card);
  color:var(--ink);cursor:pointer;display:grid;place-items:center;
  box-shadow:0 3px 0 #e3d6bd, 0 8px 14px -10px rgba(22,50,79,.4);
  transition:transform .07s ease, box-shadow .07s ease, background .12s ease}
.iconbtn:hover{background:#fff}
.iconbtn:active{transform:translateY(3px);box-shadow:0 1px 0 #e3d6bd}

/* confettis de victoire */
.confetti{position:fixed;inset:0;pointer-events:none;z-index:90;overflow:hidden}
.confetti i{position:absolute;top:-14px;width:9px;height:14px;border-radius:2px;opacity:.95;
  animation:fall 2.4s cubic-bezier(.25,.6,.5,1) forwards}
@keyframes fall{
  to{ transform:translateY(108vh) translateX(calc(var(--x,0)*130px)) rotate(var(--r,360deg)); opacity:.85 }
}
.helper{font-size:12.5px;color:var(--ink-soft);margin-top:10px;text-align:center;min-height:18px}
.helper.err{color:var(--stamp);font-weight:600;animation:shake .35s}
@keyframes shake{0%,100%{transform:none}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}

.endcard{padding:22px 16px 20px;text-align:center;position:relative}
.stamp{position:relative;display:inline-grid;place-items:center;width:178px;height:178px;margin:4px auto 8px;color:var(--stamp)}
.stamp.miss{color:var(--ink-soft)}
.stamp .ink{position:absolute;inset:-16%;z-index:0;opacity:0;pointer-events:none;
  border-radius:46% 54% 52% 48% / 50% 46% 54% 50%;
  background:radial-gradient(circle at 50% 46%, currentColor 0%, currentColor 38%, transparent 68%);
  filter:blur(3px)}
.stamp .ring{z-index:1}
.stamp .inner{position:relative;z-index:1}
.stamp-anim .ink{animation:inkSpread .65s ease-out .04s both}
@keyframes inkSpread{
  0%{opacity:0;transform:scale(.25) rotate(-6deg)}
  30%{opacity:.20}
  70%{opacity:.13}
  100%{opacity:.10;transform:scale(1.18) rotate(-4deg)}
}
.stamp .ring{position:absolute;inset:0;border:4px double currentColor;border-radius:50%;opacity:.92}
.stamp .inner{text-align:center;transform:rotate(-9deg)}
.stamp .place{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:24px;line-height:1;letter-spacing:-.01em;text-transform:uppercase}
.stamp .country{font-family:"Spline Sans Mono",monospace;font-size:10px;letter-spacing:.18em;text-transform:uppercase;margin-top:5px;opacity:.85}
.stamp .date{font-family:"Spline Sans Mono",monospace;font-size:10px;letter-spacing:.14em;margin-top:7px;opacity:.7}
.stamp .star{font-size:13px;margin-top:4px;opacity:.7}
.stamp-anim{animation:slam .5s cubic-bezier(.2,1.3,.4,1) both}
@keyframes slam{0%{opacity:0;transform:scale(2.4) rotate(-3deg)}55%{opacity:1}100%{opacity:.97;transform:scale(1) rotate(-4deg)}}
.end-title{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:23px;margin:6px 0 2px}
.end-sub{color:var(--ink-soft);font-size:14.5px;margin:0 0 16px}
.end-sub b{color:var(--ink)}
.sharegrid{font-family:"Spline Sans Mono",monospace;font-size:26px;letter-spacing:5px;margin:2px 0 14px;user-select:all}
.anec{background:var(--paper);border:1px solid var(--line-soft);border-left:4px solid var(--gold);
  border-radius:10px;padding:11px 14px;margin:0 0 16px;text-align:left}
.anec-h{display:block;font-family:"Spline Sans Mono",monospace;font-size:10px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gold);font-weight:600;margin-bottom:4px}
.anec-b{margin:0;font-size:14px;color:var(--ink)}
.countdown{font-family:"Spline Sans Mono",monospace;font-size:12px;color:var(--ink-soft);margin-top:14px}
.countdown b{color:var(--ink)}
.seeyou{margin-top:16px;font-size:15px;font-weight:600;color:var(--ink);text-align:center}
.allhints{margin-top:14px;text-align:left;background:var(--paper);border:1px solid var(--line-soft);border-radius:13px;padding:13px 15px}
.allhints-h{display:block;font-weight:700;font-size:13px;color:var(--ink);margin-bottom:8px;letter-spacing:.02em}
.allhints ol{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px}
.allhints li{font-size:13.5px;color:var(--ink-soft);line-height:1.45}
.allhints li b{color:var(--ink);font-weight:600}
.encore{margin-top:16px;font-size:14px;line-height:1.5;color:var(--ink);text-align:center;
  background:var(--paper);border:1px solid var(--line-soft);border-radius:13px;padding:13px 15px}
.encore b{color:var(--stamp)}
.practice-left{font-size:13px;color:var(--ink-soft);margin-top:14px}
.practice-left b{color:var(--ink)}
.copy-area{width:100%;border:1px solid var(--line);border-radius:11px;padding:12px;font:inherit;
  font-size:14px;color:var(--ink);background:var(--paper);resize:vertical;line-height:1.4}
.copy-area:focus{outline:none;border-color:var(--ink)}
.invite-note{font-size:13.5px;color:var(--ink-soft);margin:0 0 12px}
.invite-note code{font-family:"Spline Sans Mono",monospace;font-size:12px;background:var(--paper);padding:1px 5px;border-radius:5px;border:1px solid var(--line-soft)}
.qr-box{display:flex;justify-content:center;padding:14px;background:#fff;border:1px solid var(--line);border-radius:12px}
.qr-img{width:208px;height:208px;image-rendering:pixelated;display:block}
.invite-url{margin-top:12px;font-family:"Spline Sans Mono",monospace;font-size:12.5px;color:var(--ink);
  background:var(--paper);border:1px solid var(--line-soft);border-radius:9px;padding:10px 12px;
  word-break:break-all;user-select:all;text-align:center}
.games-list{display:flex;flex-direction:column;gap:10px}
.game-card{display:flex;align-items:center;gap:12px;text-decoration:none;background:var(--paper);
  border:1px solid var(--line-soft);border-radius:13px;padding:13px 14px;transition:border-color .15s,transform .1s}
.game-card:hover{border-color:var(--ink);transform:translateY(-1px)}
.game-ico{font-size:24px;flex:none}
.game-txt{flex:1;min-width:0}
.game-txt b{display:block;color:var(--ink);font-size:14.5px}
.game-txt small{display:block;color:var(--ink-soft);font-size:12.5px;margin-top:2px}
.game-go{flex:none;color:var(--stamp);font-weight:600;font-size:13px}
.games-end{margin-top:18px;padding-top:16px;border-top:1px solid var(--line-soft)}
.games-end-h{font-weight:700;font-size:13px;color:var(--ink);margin-bottom:10px;text-align:center}
.adm-grid{display:flex;flex-direction:column;gap:9px}
.adm-row{display:flex;align-items:center;gap:7px}
.adm-row>span{font-size:13px;color:var(--ink-soft);min-width:42px}
.adm-mini{flex:none;padding:8px 12px;font-size:13px}
.adm-select{flex:1;min-width:0;padding:9px 10px;border:1px solid var(--line);border-radius:10px;
  background:var(--paper);color:var(--ink);font:inherit;font-size:13.5px}
.adm-select:focus{outline:none;border-color:var(--ink)}
.welcome .w-lead{font-size:14.5px;color:var(--ink-soft);margin:0 0 14px}
.welcome .w-lead b{color:var(--ink)}
.w-points{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}
.w-point{display:flex;gap:12px;align-items:flex-start;background:var(--paper);border:1px solid var(--line-soft);
  border-radius:12px;padding:12px 13px}
.w-emo{font-size:22px;line-height:1.1;flex:none}
.w-point b{font-size:14.5px}
.w-point small{display:block;color:var(--ink-soft);font-size:12.5px;margin-top:2px}

/* panneau IA "En savoir plus" */
.ai-panel{margin-top:16px;border:1px solid var(--line);border-radius:12px;background:var(--paper);
  text-align:left;overflow:hidden}
.ai-head{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid var(--line-soft);
  font-family:"Spline Sans Mono",monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
.ai-head .spark{width:8px;height:8px;border-radius:50%;background:var(--sea)}
.ai-body{padding:14px;font-size:14.5px;white-space:pre-wrap}
.ai-body.loading{color:var(--ink-soft)}
.ai-note{padding:0 14px 12px;font-size:11.5px;color:var(--ink-soft);font-style:italic}
.dots::after{content:"";animation:dots 1.2s steps(4,end) infinite}
@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}100%{content:""}}

.overlay{position:fixed;inset:0;background:rgba(22,50,79,.42);backdrop-filter:blur(3px);
  z-index:50;display:none;align-items:flex-end;justify-content:center;padding:0}
.overlay.open{display:flex}
@media(min-width:560px){.overlay{align-items:center;padding:20px}}
.sheet{background:var(--card);width:100%;max-width:480px;border-radius:18px 18px 0 0;
  border:1px solid var(--line);box-shadow:0 -10px 40px -10px rgba(22,50,79,.5);
  padding:8px 20px 26px;animation:up .3s ease both;max-height:92dvh;overflow:auto;
  padding-bottom:max(26px,env(safe-area-inset-bottom))}
@media(min-width:560px){.sheet{border-radius:18px}}
@keyframes up{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
.grab{width:38px;height:4px;border-radius:99px;background:var(--line);margin:6px auto 14px}
.sheet h2{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:20px;margin:0 0 14px;display:flex;align-items:center;justify-content:space-between}
.sheet h2 .x{font-size:14px;color:var(--ink-soft);cursor:pointer;font-weight:500}
.stats-row{display:flex;gap:8px;margin-bottom:18px}
.stat{flex:1;background:var(--paper);border:1px solid var(--line-soft);border-radius:11px;padding:11px 8px;text-align:center}
.stat .v{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:24px;line-height:1}
.stat .k{font-size:10.5px;color:var(--ink-soft);margin-top:4px;text-transform:uppercase;letter-spacing:.06em}
.dist h3{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 9px}
.bar{display:flex;align-items:center;gap:9px;margin-bottom:6px;font-family:"Spline Sans Mono",monospace;font-size:13px}
.bar .lab{width:14px;color:var(--ink-soft)}
.bar .track{flex:1;background:var(--paper);border-radius:6px;overflow:hidden;height:22px;border:1px solid var(--line-soft)}
.bar .fill{height:100%;background:var(--ink);min-width:26px;display:flex;align-items:center;justify-content:flex-end;
  padding-right:8px;color:#fff;font-weight:600;border-radius:6px;transition:width .5s ease}
.bar .fill.hot{background:var(--sea)}
.bar.fail .fill{background:var(--miss)}
.toggle{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 0;border-top:1px solid var(--line-soft);margin-top:6px}
.toggle .t-txt{font-size:14px}
.toggle .t-txt small{display:block;color:var(--ink-soft);font-size:12px}
.cb-preview{font-size:12.5px;color:var(--ink-soft);margin:-2px 0 2px;padding-bottom:4px}
.cb-preview span{font-family:"Spline Sans Mono",monospace;font-size:16px;letter-spacing:2px;color:var(--ink)}
.reset-row{border-top:1px solid var(--line-soft);margin-top:10px;padding-top:14px}
.reset-row .danger{color:var(--stamp);border-bottom-color:rgba(200,64,47,.4)}
.reset-row .danger:hover{color:var(--stamp);filter:brightness(.9)}
.reset-row small{display:block;color:var(--ink-soft);font-size:12px;margin-top:5px}
.sw{width:46px;height:27px;border-radius:99px;background:var(--line);position:relative;cursor:pointer;flex:none;transition:background .18s}
.sw.on{background:var(--sea)}
.sw::after{content:"";position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;background:#fff;transition:transform .18s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.sw.on::after{transform:translateX(19px)}
.howto p{font-size:14.5px;color:var(--ink-soft);margin:0 0 12px}
.howto ul{margin:0;padding-left:18px;font-size:14.5px}
.howto li{margin-bottom:7px}
.legend{display:flex;flex-direction:column;gap:8px;margin:14px 0 4px}
.legend div{display:flex;align-items:center;gap:10px;font-size:14px}
.legend .b{width:24px;height:24px;border-radius:6px;display:grid;place-items:center;color:#fff;font-weight:700;flex:none}

.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);
  background:var(--ink);color:#fff;padding:11px 18px;border-radius:999px;font-size:14px;font-weight:600;
  z-index:80;opacity:0;transition:all .25s ease;pointer-events:none;box-shadow:var(--shadow)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.mode-switch{display:flex;gap:6px;background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:4px;margin-bottom:14px}
.mode-switch button{flex:1;border:0;background:none;padding:9px;border-radius:8px;font:inherit;font-weight:600;font-size:13.5px;color:var(--ink-soft);cursor:pointer}
.mode-switch button.on{background:#fff;color:var(--ink);box-shadow:var(--shadow)}
.footnote{text-align:center;margin-top:20px;font-family:"Spline Sans Mono",monospace;font-size:11px;color:var(--ink-soft);letter-spacing:.04em}
.footnote a{color:var(--ink-soft);text-decoration:none;border-bottom:1px solid var(--line)}
.footnote a:hover{color:var(--ink)}
.linklike{border:0;background:none;font:inherit;font-size:11px;color:var(--ink-soft);cursor:pointer;
  padding:0;border-bottom:1px solid var(--line);letter-spacing:.04em}
.linklike:hover{color:var(--ink)}
.about-h{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);
  margin:16px 0 8px;padding-top:14px;border-top:1px solid var(--line-soft)}
.about-h:first-of-type{border-top:0;padding-top:0;margin-top:4px}
.about-note{font-size:12.5px;color:var(--ink-soft);background:var(--paper);border:1px solid var(--line-soft);
  border-radius:10px;padding:11px 13px;margin-top:6px}
.install-banner{display:none;align-items:center;gap:10px;margin-top:14px;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:11px 14px;box-shadow:var(--shadow)}
.install-banner.show{display:flex}
.install-banner .txt{flex:1;font-size:13.5px}
.install-banner .txt b{display:block}
.install-banner small{color:var(--ink-soft)}

/* carte « Du même auteur » */
.promo{display:block;margin-top:16px;border:1px solid var(--line);border-radius:12px;overflow:hidden;
  background:linear-gradient(180deg,#fffdf7,var(--paper));text-decoration:none;color:inherit;text-align:left;
  box-shadow:var(--shadow);transition:transform .12s ease, box-shadow .12s ease;position:relative}
.promo::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--promo-accent,var(--stamp))}
.promo:hover{transform:translateY(-2px);box-shadow:0 18px 38px -20px rgba(22,50,79,.5)}
.promo:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.promo-head{font-family:"Spline Sans Mono",monospace;font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-soft);padding:10px 14px 0 18px}
.promo-body{display:flex;gap:13px;align-items:center;padding:8px 14px 14px 18px}
.promo-cover{flex:none;width:52px;height:74px;border-radius:5px;object-fit:cover;
  box-shadow:0 4px 12px -4px rgba(22,50,79,.45);background:var(--card)}
.promo-cover.ph{display:grid;place-items:center;font-size:26px;border:1px solid var(--line);background:var(--card)}
.promo-txt{flex:1;min-width:0}
.promo-genre{font-family:"Spline Sans Mono",monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--promo-accent,var(--ink-soft));margin-bottom:2px;font-weight:600}
.promo-title{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:16.5px;line-height:1.05;letter-spacing:-.01em}
.promo-tag{font-size:13px;color:var(--ink-soft);margin:4px 0 7px}
.promo-cta{font-weight:700;font-size:13.5px;color:var(--promo-accent,var(--stamp))}

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}
