/* ============================================================
   DİL KABİNİ — rizograf baskı arayüzü
   Kalın kontur, sert kaydırılmış gölge, tek tek basılmış mürekkepler.
   Hareket dili: her şey registerin dışından gelip yerine oturur.
   ============================================================ */
:root{
  --paper:#EFECF4;
  --card:#FFFFFF;
  --sunk:#DEDAE6;
  --ink:#17131F;
  --ink-2:#5B5468;
  --ink-3:#8F87A0;
  --edge:#17131F;
  --drop:#17131F;
  --blue:#2C4BE0;
  --pink:#FF3D7F;
  --green:#00A05A;
  --yellow:#FFB627;
  --purple:#7B3FE4;
  --cyan:#0FB5C9;
  --orange:#F2542D;
  --accent:var(--pink);
  --ok:var(--green);
  --no:var(--pink);
  --d:'Gabarito','Segoe UI',system-ui,sans-serif;
  --b:'Karla','Segoe UI',system-ui,sans-serif;
  --r:12px;
  --bw:2px;
  --dx:4px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#141019; --card:#1F1928; --sunk:#282133;
    --ink:#F3EFF7; --ink-2:#ABA1BA; --ink-3:#7A7089;
    --edge:#4B4160; --drop:#07050B;
    --blue:#5C77FF; --pink:#FF5C93; --green:#22C57A;
    --yellow:#FFC24A; --purple:#9B6BFF; --cyan:#2BD0E4; --orange:#FF7248;
  }
}
:root[data-theme="dark"]{
  --paper:#141019; --card:#1F1928; --sunk:#282133;
  --ink:#F3EFF7; --ink-2:#ABA1BA; --ink-3:#7A7089;
  --edge:#4B4160; --drop:#07050B;
  --blue:#5C77FF; --pink:#FF5C93; --green:#22C57A;
  --yellow:#FFC24A; --purple:#9B6BFF; --cyan:#2BD0E4; --orange:#FF7248;
}

*{box-sizing:border-box}
body{
  background:var(--paper); color:var(--ink);
  font-family:var(--b); font-size:17px; line-height:1.6;
  -webkit-font-smoothing:antialiased; padding:0 0 56px;
  background-image:radial-gradient(var(--sunk) 1px, transparent 1px);
  background-size:14px 14px;
}
.wrap{max-width:960px;margin:0 auto;padding:0 16px}
button{font:inherit;color:inherit;cursor:pointer}
button:focus-visible,input:focus-visible,textarea:focus-visible{
  outline:3px solid var(--blue); outline-offset:3px;
}
h1,h2,h3{font-family:var(--d);text-wrap:balance;margin:0;letter-spacing:-.02em}
.lbl{font-family:var(--d);font-size:11.5px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-3)}
.grow{margin-left:auto}
.row{display:flex;gap:9px;flex-wrap:wrap;align-items:center}
.divider{height:var(--bw);background:var(--edge);margin:18px 0;width:100%;opacity:.25}

/* ---------- masthead ---------- */
.head{padding:20px 0 0}
.headrow{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:11px;margin-right:auto}
.lamp{width:22px;height:22px;border-radius:50%;background:var(--pink);
  border:var(--bw) solid var(--edge);box-shadow:2px 2px 0 var(--drop);flex:none;
  transition:background-color .25s}
.lamp.off{background:var(--sunk)}
.brand h1{font-size:clamp(26px,4.6vw,36px);font-weight:900;line-height:.95;letter-spacing:-.035em}
.brand .sub{font-family:var(--d);font-size:12px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);margin-top:2px}

.dial{display:flex;gap:5px}
.dial button{
  border:var(--bw) solid var(--edge);border-radius:9px;background:var(--card);
  padding:6px 12px;font-family:var(--d);font-size:14px;font-weight:800;color:var(--ink);
  box-shadow:3px 3px 0 var(--drop);
  transition:transform .12s cubic-bezier(.2,.9,.3,1), box-shadow .12s, background-color .15s, color .15s;
}
.dial button:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--drop)}
.dial button:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--drop)}
.dial button[aria-pressed="true"]{background:var(--blue);color:#fff}

.gauge{position:relative;display:flex;flex-direction:column;gap:6px;min-width:210px}
.gaugetop{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.gaugetop b{font-family:var(--d);font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}
.segs{display:flex;gap:3px;height:16px;border:var(--bw) solid var(--edge);border-radius:8px;
  padding:3px;background:var(--card);box-shadow:3px 3px 0 var(--drop)}
.seg{flex:1;background:var(--sunk);border-radius:2px;
  transition:background-color .3s cubic-bezier(.2,.9,.3,1), transform .3s cubic-bezier(.2,1.6,.4,1)}
.seg.on{background:var(--green)}
.seg.on.hot{background:var(--yellow)}
.seg.on.peak{background:var(--pink)}

.stats{display:flex;flex-wrap:wrap;gap:9px;padding:16px 0 4px}
.stat{display:flex;flex-direction:column;gap:0;border:var(--bw) solid var(--edge);border-radius:10px;
  background:var(--card);padding:7px 13px 8px;box-shadow:3px 3px 0 var(--drop);min-width:96px}
.stat b{font-family:var(--d);font-size:20px;font-weight:900;font-variant-numeric:tabular-nums;line-height:1.1}
.stat .sm{font-size:12px;color:var(--ink-3);font-weight:700}
.stat .lbl{font-size:10.5px}

.linkbtn{border:var(--bw) solid var(--edge);border-radius:99px;background:var(--yellow);color:var(--ink);
  padding:4px 12px;font-family:var(--d);font-size:12px;font-weight:800;letter-spacing:.02em;
  box-shadow:3px 3px 0 var(--drop);
  transition:transform .12s cubic-bezier(.2,.9,.3,1), box-shadow .12s}
.linkbtn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--drop)}
.linkbtn:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--drop)}

/* ---------- kanal döşemeleri ---------- */
.chans{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;padding:18px 0 0}
@media(max-width:860px){.chans{grid-template-columns:repeat(3,1fr)}}
@media(max-width:600px){.chans{grid-template-columns:repeat(2,1fr)}}
.chan{
  position:relative;text-align:left;overflow:hidden;
  border:var(--bw) solid var(--edge);border-radius:var(--r);background:var(--card);
  box-shadow:var(--dx) var(--dx) 0 var(--drop);
  padding:13px 13px 15px;display:flex;flex-direction:column;gap:4px;
  transition:transform .15s cubic-bezier(.2,.9,.3,1), box-shadow .15s, background-color .2s, color .2s;
}
.chan::after{content:"";position:absolute;inset:auto -20% -46% auto;width:96px;height:96px;border-radius:50%;
  background:var(--c,var(--blue));opacity:.13;transition:transform .3s cubic-bezier(.2,.9,.3,1),opacity .2s}
.chan:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--drop)}
.chan:hover::after{transform:scale(1.5)}
.chan:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--drop)}
.chan .n{font-family:var(--d);font-size:11px;font-weight:800;letter-spacing:.1em;color:var(--c,var(--blue))}
.chan .t{font-family:var(--d);font-weight:900;font-size:19px;letter-spacing:-.025em;line-height:1.05;position:relative}
.chan .d{font-size:13px;color:var(--ink-2);line-height:1.35;position:relative}
.chan .dot{position:absolute;top:12px;right:12px;width:11px;height:11px;border-radius:50%;
  background:var(--sunk);border:var(--bw) solid var(--edge);transition:background-color .22s,transform .22s}
.chan[aria-pressed="true"]{background:var(--c,var(--blue));color:var(--ct,#fff);
  box-shadow:var(--dx) var(--dx) 0 var(--drop)}
.chan[aria-pressed="true"]::after{opacity:.22;background:#fff}
.chan[aria-pressed="true"] .t{color:var(--ct,#fff)}
.chan[aria-pressed="true"] .d{color:var(--ct,#fff);opacity:.82}
.chan[aria-pressed="true"] .n{color:var(--ct,#fff);opacity:.75}
.chan[aria-pressed="true"] .dot{background:var(--ct,#fff);transform:scale(1.15)}
.chan .badge{display:inline-block;margin-left:7px;font-family:var(--d);font-size:11px;font-weight:900;
  background:var(--ink);color:var(--card);border-radius:99px;padding:1px 8px;vertical-align:1px;
  animation:pop .3s cubic-bezier(.2,1.7,.4,1) both}
.chan .badge.alert{background:var(--orange);color:#fff}
.chan[aria-pressed="true"] .badge{background:var(--ct,#fff);color:var(--c,var(--blue))}

/* ---------- sahne ---------- */
.stage{margin:22px 0 0;border:var(--bw) solid var(--edge);border-radius:var(--r);background:var(--card);
  box-shadow:6px 6px 0 var(--drop);overflow:hidden}
.stagehead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:12px 18px;border-bottom:var(--bw) solid var(--edge);background:var(--sunk)}
.pad{padding:26px 22px 28px}
@media(max-width:560px){.pad{padding:20px 15px 22px}}
/* Sahne taşanı kırptığı için uzun sözcükler kırpılmak yerine alt satıra insin. */
.pad h2,.word,.tr,.readtitle,.err .head2,.bub,.diff,.read,.opt,.ex{overflow-wrap:break-word;min-width:0}
.word{max-width:100%}

.tabs{display:flex;gap:6px;flex-wrap:wrap}
.tabs button{border:var(--bw) solid var(--edge);background:var(--card);border-radius:99px;padding:4px 13px;
  font-family:var(--d);font-size:12.5px;font-weight:800;color:var(--ink);box-shadow:2px 2px 0 var(--drop);
  transition:transform .12s,box-shadow .12s,background-color .15s,color .15s}
.tabs button:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--drop)}
.tabs button[aria-pressed="true"]{background:var(--ink);color:var(--card)}

/* ---------- düğmeler: basılınca gerçekten çöker ---------- */
.btn{
  border:var(--bw) solid var(--edge);border-radius:10px;background:var(--card);color:var(--ink);
  box-shadow:var(--dx) var(--dx) 0 var(--drop);padding:10px 18px;
  font-family:var(--d);font-weight:800;font-size:15.5px;letter-spacing:-.01em;
  transition:transform .12s cubic-bezier(.2,.9,.3,1), box-shadow .12s, background-color .15s;
}
.btn:hover:not([disabled]){transform:translate(-1px,-1px);box-shadow:6px 6px 0 var(--drop)}
.btn:active:not([disabled]){transform:translate(var(--dx),var(--dx));box-shadow:0 0 0 var(--drop)}
.btn.primary{background:var(--blue);color:#fff}
.btn.sm{padding:6px 13px;font-size:13.5px;box-shadow:3px 3px 0 var(--drop);border-radius:8px}
.btn.sm:hover:not([disabled]){box-shadow:4px 4px 0 var(--drop)}
.btn.sm:active:not([disabled]){transform:translate(3px,3px);box-shadow:0 0 0 var(--drop)}
.btn.icon{padding:6px 12px;font-size:13.5px;box-shadow:3px 3px 0 var(--drop);border-radius:8px}
.btn.icon:active:not([disabled]){transform:translate(3px,3px);box-shadow:0 0 0 var(--drop)}
.btn[disabled]{opacity:.42;cursor:not-allowed;box-shadow:2px 2px 0 var(--drop)}

/* ---------- şıklar ---------- */
.opts{display:flex;flex-direction:column;gap:10px;margin:20px 0 0}
.opt{
  width:100%;text-align:left;border:var(--bw) solid var(--edge);border-radius:10px;
  background:var(--card);color:var(--ink);padding:13px 16px;font-family:var(--b);font-size:17.5px;
  display:flex;gap:13px;align-items:center;box-shadow:var(--dx) var(--dx) 0 var(--drop);
  transition:transform .13s cubic-bezier(.2,.9,.3,1), box-shadow .13s, background-color .18s, color .18s;
}
.opt .k{font-family:var(--d);font-size:13px;font-weight:900;flex:none;width:26px;height:26px;
  border-radius:50%;border:var(--bw) solid var(--edge);display:grid;place-items:center;
  background:var(--sunk);transition:background-color .18s,color .18s}
.opt:hover:not([disabled]){transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--drop)}
.opt:active:not([disabled]){transform:translate(var(--dx),var(--dx));box-shadow:0 0 0 var(--drop)}
.opt[disabled]{cursor:default;opacity:1}
.opt.right{background:var(--green);color:#fff;border-color:var(--edge)}
.opt.right .k{background:#fff;color:var(--green)}
.opt.wrong{background:var(--pink);color:#fff}
.opt.wrong .k{background:#fff;color:var(--pink)}

/* ---------- notlar ---------- */
.note{border:var(--bw) solid var(--edge);border-left-width:9px;border-left-color:var(--green);
  background:var(--card);padding:13px 16px;border-radius:10px;font-size:16px;line-height:1.55;
  box-shadow:3px 3px 0 var(--drop)}
.note.bad{border-left-color:var(--pink)}
.note.tip{border-left-color:var(--yellow)}
.note b{font-family:var(--d);font-weight:900}
.blank{display:inline-block;min-width:84px;text-align:center;font-family:var(--d);font-weight:900;
  font-size:.9em;color:var(--pink);background:color-mix(in srgb,var(--pink) 15%,transparent);
  border-bottom:3px solid var(--pink);border-radius:5px 5px 0 0;padding:0 8px;
  transition:color .2s,background-color .2s,border-color .2s}
.blank.good{color:var(--green);background:color-mix(in srgb,var(--green) 16%,transparent);
  border-bottom-color:var(--green)}

/* ---------- kelime kartı ---------- */
.card{display:flex;flex-direction:column;gap:7px;align-items:flex-start}
.word{font-family:var(--d);font-weight:900;font-size:clamp(38px,8vw,62px);letter-spacing:-.045em;line-height:.95}
.pos{font-family:var(--d);font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:#fff;background:var(--purple);border:var(--bw) solid var(--edge);border-radius:99px;padding:3px 11px;
  box-shadow:2px 2px 0 var(--drop)}
.tr{font-family:var(--d);font-weight:900;font-size:29px;letter-spacing:-.03em}
.ex{font-size:18.5px;line-height:1.55}
.ex .en{display:block;font-weight:600}
.ex .trx{display:block;color:var(--ink-2);font-size:16.5px}

/* ---------- dinleme ---------- */
.dict{width:100%;font-family:var(--b);font-size:18px;padding:14px 16px;border:var(--bw) solid var(--edge);
  border-radius:10px;background:var(--card);color:var(--ink);box-shadow:inset 3px 3px 0 rgba(0,0,0,.07);
  resize:vertical;min-height:82px}
.diff{font-size:20px;line-height:1.85;word-spacing:.06em}
.diff .ok{color:var(--green);font-weight:700}
.diff .no{color:var(--pink);font-weight:700;background:color-mix(in srgb,var(--pink) 16%,transparent);
  border-radius:4px;padding:0 3px}
.trap{border:var(--bw) solid var(--edge);border-radius:var(--r);background:var(--card);padding:16px;
  box-shadow:var(--dx) var(--dx) 0 var(--drop)}
.trapitems{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.chip{display:inline-flex;align-items:center;gap:8px;border:var(--bw) solid var(--edge);border-radius:99px;
  background:var(--sunk);padding:5px 8px 5px 14px;font-size:16px;font-weight:600;
  box-shadow:2px 2px 0 var(--drop)}
.chip .ipa{font-size:12px;color:var(--ink-3);font-weight:500}
.chip button{border:var(--bw) solid var(--edge);background:var(--card);border-radius:99px;width:26px;height:26px;
  line-height:1;font-size:10px;display:grid;place-items:center;color:var(--ink);padding:0;
  transition:background-color .15s,color .15s}
.chip button:hover{background:var(--cyan);color:#fff}

/* ---------- sohbet ---------- */
.scen{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:11px}
.scen button{text-align:left;border:var(--bw) solid var(--edge);border-radius:var(--r);background:var(--card);
  padding:15px;display:flex;flex-direction:column;gap:5px;box-shadow:var(--dx) var(--dx) 0 var(--drop);
  transition:transform .15s cubic-bezier(.2,.9,.3,1),box-shadow .15s}
.scen button:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--drop)}
.scen button:active{transform:translate(var(--dx),var(--dx));box-shadow:0 0 0 var(--drop)}
.scen .em{font-size:26px;line-height:1}
.scen .t{font-family:var(--d);font-weight:900;font-size:17px;letter-spacing:-.02em}
.scen .d{font-size:13.5px;color:var(--ink-2);line-height:1.35}

.chat{display:flex;flex-direction:column;gap:14px;max-height:52vh;overflow-y:auto;padding:4px 4px 8px}
.msg{max-width:88%;display:flex;flex-direction:column;gap:7px}
.msg.me{align-self:flex-end;align-items:flex-end}
.bub{border:var(--bw) solid var(--edge);border-radius:14px;padding:11px 15px;background:var(--sunk);
  font-size:17px;line-height:1.5;box-shadow:3px 3px 0 var(--drop)}
.msg.me .bub{background:var(--blue);color:#fff}
.fix{font-size:14.5px;line-height:1.45;border:var(--bw) solid var(--edge);border-left-width:8px;
  border-left-color:var(--yellow);background:var(--card);padding:8px 13px;border-radius:9px;font-weight:600}
.fix.tipnote{border-left-color:var(--green)}
.ftag{font-family:var(--d);font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-3)}
.composer{display:flex;gap:10px;margin-top:16px;align-items:flex-end}
.composer textarea{flex:1;font-family:var(--b);font-size:17px;padding:12px 15px;border:var(--bw) solid var(--edge);
  border-radius:10px;background:var(--card);color:var(--ink);box-shadow:inset 3px 3px 0 rgba(0,0,0,.07);
  resize:none;min-height:50px;max-height:130px}
.typing{display:inline-flex;gap:4px;align-items:center;height:16px}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--ink-3);animation:bl 1.1s infinite}
.typing i:nth-child(2){animation-delay:.18s}.typing i:nth-child(3){animation-delay:.36s}
@keyframes bl{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}

/* ---------- durum ---------- */
.status{margin-top:14px;border:var(--bw) solid var(--edge);border-radius:99px;background:var(--card);
  padding:8px 18px;font-family:var(--d);font-size:11.5px;font-weight:700;letter-spacing:.06em;
  color:var(--ink-2);display:flex;gap:9px;flex-wrap:wrap;align-items:center;
  box-shadow:3px 3px 0 var(--drop)}
.status .sep{color:var(--ink-3);opacity:.5}

/* ---------- ilerleme ---------- */
.progressline{display:flex;gap:5px;height:14px;margin:0 0 22px}
.progressline i{flex:1;background:var(--sunk);border:var(--bw) solid var(--edge);border-radius:5px;
  transition:background-color .25s cubic-bezier(.2,.9,.3,1),transform .25s cubic-bezier(.2,1.7,.4,1)}
.progressline i.done{background:var(--green);transform:scaleY(1.18)}
.progressline i.miss{background:var(--pink)}
.progressline i.now{background:var(--yellow);transform:scaleY(1.18)}
.progressline i.seen{background:var(--ink-3)}

/* ---------- sonuç ---------- */
.done-panel{text-align:center;padding:18px 0 6px}
.done-panel .big{font-family:var(--d);font-weight:900;font-size:clamp(52px,12vw,84px);letter-spacing:-.05em;
  line-height:1;color:var(--green)}
.topics{display:flex;flex-direction:column;gap:9px;margin-top:16px}
.topics .t{display:flex;align-items:center;gap:12px;font-size:15px;font-weight:600}
.topics .bar{flex:1;height:14px;background:var(--sunk);border:var(--bw) solid var(--edge);border-radius:7px;
  overflow:hidden}
.topics .bar span{display:block;height:100%;transition:width .5s cubic-bezier(.2,.9,.3,1)}
.topics .pc{font-family:var(--d);font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;
  color:var(--ink-2);width:44px;text-align:right}

/* ---------- okuma ---------- */
.readtitle{font-family:var(--d);font-weight:900;font-size:clamp(27px,5vw,40px);letter-spacing:-.04em;
  line-height:1.02;margin-top:8px}
.read{max-width:60ch;font-size:19.5px;line-height:1.75;margin-top:16px}
.read p{margin:0 0 16px}
.read p:last-child{margin-bottom:0}
.gloss{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.gloss .g{display:inline-flex;align-items:center;gap:8px;border:var(--bw) solid var(--edge);border-radius:99px;
  background:var(--sunk);padding:5px 8px 5px 14px;font-size:15.5px;box-shadow:2px 2px 0 var(--drop)}
.gloss .g b{font-weight:800}
.gloss .g em{font-style:normal;color:var(--ink-2);font-size:14px}
.reads{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));gap:11px;margin-top:16px}
.reads button{text-align:left;border:var(--bw) solid var(--edge);border-radius:var(--r);background:var(--card);
  padding:15px;display:flex;flex-direction:column;gap:5px;box-shadow:var(--dx) var(--dx) 0 var(--drop);
  transition:transform .15s cubic-bezier(.2,.9,.3,1),box-shadow .15s}
.reads button:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--drop)}
.reads button:active{transform:translate(var(--dx),var(--dx));box-shadow:0 0 0 var(--drop)}
.reads .t{font-family:var(--d);font-weight:900;font-size:17px;line-height:1.15;letter-spacing:-.02em}
.reads .m{font-family:var(--d);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:var(--cyan)}
.reads .s{font-size:13.5px;color:var(--green);font-weight:800;font-family:var(--d)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.chips button{border:var(--bw) solid var(--edge);border-radius:99px;background:var(--card);padding:7px 16px;
  font-family:var(--d);font-weight:800;font-size:14.5px;box-shadow:3px 3px 0 var(--drop);
  transition:transform .12s,box-shadow .12s,background-color .15s,color .15s}
.chips button:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--drop)}
.chips button[aria-pressed="true"]{background:var(--purple);color:#fff}

/* ---------- hata defteri ---------- */
.errlist{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.err{border:var(--bw) solid var(--edge);border-left-width:10px;border-left-color:var(--orange);
  border-radius:11px;background:var(--card);padding:14px 17px;display:flex;flex-direction:column;gap:7px;
  box-shadow:var(--dx) var(--dx) 0 var(--drop)}
.err .top{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.err .tag{font-family:var(--d);font-size:10.5px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;
  background:var(--orange);color:#fff;border:var(--bw) solid var(--edge);border-radius:99px;padding:2px 10px}
.err .meta{font-family:var(--d);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--ink-3)}
.err .head2{font-family:var(--d);font-weight:900;font-size:20px;letter-spacing:-.025em;line-height:1.25}
.err .line{font-size:16.5px;line-height:1.5}
.err .bad2{color:var(--pink);text-decoration:line-through;text-decoration-thickness:2px;font-weight:700}
.err .good2{color:var(--green);font-weight:800}
.err .why{font-size:15px;line-height:1.5;color:var(--ink-2)}
.err .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}

/* ---------- seviye testi ---------- */
.testgrade{display:flex;flex-direction:column;gap:9px;margin-top:16px}
.testgrade .g{display:flex;align-items:center;gap:12px}
.testgrade .lv{font-family:var(--d);font-size:15px;font-weight:900;width:32px}
.testgrade .bar{flex:1;height:18px;background:var(--sunk);border:var(--bw) solid var(--edge);border-radius:8px;
  overflow:hidden;display:flex;gap:3px;padding:3px}
.testgrade .bar i{flex:1;background:var(--sunk);border-radius:2px}
.testgrade .bar i.hit{background:var(--green)}
.testgrade .sc{font-family:var(--d);font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;
  color:var(--ink-2);width:40px;text-align:right}

/* ---------- kombo ---------- */
.combo[hidden]{display:none}
.combo{display:flex;align-items:center;gap:8px;border:var(--bw) solid var(--edge);border-radius:99px;
  padding:6px 16px;background:var(--green);color:#fff;box-shadow:var(--dx) var(--dx) 0 var(--drop)}
.combo b{font-family:var(--d);font-weight:900;font-size:22px;letter-spacing:-.03em;line-height:1;color:#fff}
.combo .lbl{color:#fff;opacity:.85;font-size:10.5px}
.combo.warm{background:var(--yellow);color:var(--ink)}
.combo.warm b{color:var(--ink)} .combo.warm .lbl{color:var(--ink)}
.combo.hot{background:var(--pink)}
.combo.bump{animation:bump .38s cubic-bezier(.2,1.7,.4,1)}

/* ============================================================
   HAREKET — her keyframe yalnızca `from` tanımlar; bitiş hâli
   elemanın kendi stilidir, animasyon kapalıyken de doğru görünür.
   ============================================================ */
@keyframes rise{from{opacity:0;transform:translateY(10px)}}
@keyframes pop{from{opacity:0;transform:scale(.7)}}
@keyframes slidein{from{opacity:0;transform:translateX(-10px)}}
/* baskı registerine oturma */
@keyframes register{
  0%{opacity:0;transform:translate(-7px,-5px)}
  55%{opacity:1;transform:translate(3px,2px)}
  100%{transform:translate(0,0)}}
@keyframes misprint{
  0%{text-shadow:0 0 0 transparent}
  25%{text-shadow:-4px 2px 0 var(--pink), 4px -2px 0 var(--cyan)}
  60%{text-shadow:2px -1px 0 var(--pink), -2px 1px 0 var(--cyan)}
  100%{text-shadow:0 0 0 transparent}}
@keyframes shake{
  15%{transform:translate(-5px,1px)} 30%{transform:translate(5px,-1px)}
  45%{transform:translate(-5px,1px)} 60%{transform:translate(4px,-1px)}
  75%{transform:translate(-2px,0)} 100%{transform:translate(0,0)}}
@keyframes stampin{
  0%{opacity:0;transform:rotate(-16deg) scale(2.4)}
  55%{opacity:1;transform:rotate(-9deg) scale(.92)}
  70%{transform:rotate(-9deg) scale(1.04)}
  100%{opacity:1;transform:rotate(-9deg) scale(1)}}
@keyframes stampout{to{opacity:0;transform:rotate(-9deg) scale(1.15) translateY(-14px)}}
@keyframes floatup{
  0%{opacity:0;transform:translateY(10px) rotate(-8deg) scale(.8)}
  22%{opacity:1;transform:translateY(0) rotate(-4deg) scale(1)}
  100%{opacity:0;transform:translateY(-26px) rotate(2deg) scale(1)}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.14)}}
@keyframes bump{from{transform:scale(1)}42%{transform:scale(1.28) rotate(-5deg)}to{transform:scale(1)}}
@keyframes toastin{from{opacity:0;transform:translate(-50%,-22px) rotate(-3deg) scale(.88)}}
@keyframes toastout{to{opacity:0;transform:translate(-50%,-16px)}}
@keyframes blink{0%,100%{transform:scale(1);background:var(--pink)}
  45%{transform:scale(1.4);background:var(--green)}}
@keyframes flipout{from{transform:rotateX(0);opacity:1} to{transform:rotateX(-84deg);opacity:0}}
@keyframes flipin{from{transform:rotateX(82deg);opacity:0}}
@keyframes pp{0%,100%{opacity:1}50%{opacity:.35}}

#stagebody.enter{animation:register .3s cubic-bezier(.3,.9,.3,1) both}
.opt.right{animation:register .34s cubic-bezier(.2,1.5,.4,1)}
.opt.wrong{animation:shake .42s cubic-bezier(.36,.07,.19,.97)}
.note{animation:slidein .26s cubic-bezier(.2,.9,.3,1) both}
.done-panel .big{animation:stampin .5s cubic-bezier(.2,1.2,.4,1) both}
.lamp.live{animation:breathe 2.6s ease-in-out infinite}
.lamp.hit{animation:blink .5s cubic-bezier(.2,1.5,.4,1)}
.err{animation:rise .26s cubic-bezier(.2,.9,.3,1) both}
.reads button,.scen button,.chan{animation:rise .3s cubic-bezier(.2,.9,.3,1) both}
.word{animation:misprint .5s ease-out}
.pulse{animation:pp 1.6s ease-in-out infinite}

.xpfloat{position:absolute;right:0;bottom:26px;font-family:var(--d);font-size:19px;font-weight:900;
  color:var(--green);pointer-events:none;animation:floatup 1.2s cubic-bezier(.2,.9,.3,1) both;white-space:nowrap;
  text-shadow:2px 2px 0 var(--drop)}
.xpfloat i{font-style:normal;color:var(--yellow);font-size:14px}

.toast{position:fixed;left:50%;top:20px;transform:translateX(-50%);z-index:9998;pointer-events:none;
  display:flex;flex-direction:column;align-items:center;gap:1px;
  border:var(--bw) solid var(--edge);border-radius:99px;padding:11px 26px;background:var(--yellow);color:var(--ink);
  box-shadow:5px 5px 0 var(--drop);
  animation:toastin .38s cubic-bezier(.2,1.5,.4,1) both, toastout .35s ease-in 2.15s both}
.toast b{font-family:var(--d);font-weight:900;font-size:18px;letter-spacing:-.02em}
.toast span{font-family:var(--d);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  opacity:.7}

/* aferin damgası */
.stamp{position:fixed;z-index:9997;pointer-events:none;
  font-family:var(--d);font-weight:900;font-size:26px;letter-spacing:-.03em;
  color:#fff;background:var(--green);border:var(--bw) solid var(--edge);border-radius:10px;
  padding:5px 15px;box-shadow:4px 4px 0 var(--drop);
  animation:stampin .38s cubic-bezier(.2,1.3,.4,1) both, stampout .32s ease-in .72s both}
.stamp.bad{background:var(--pink)}

/* ---------- alt satır ve sıfırlama ---------- */
.footer{display:flex;justify-content:flex-end;padding:14px 2px 0}
.ghostbtn{border:var(--bw) dashed var(--ink-3);border-radius:99px;background:transparent;color:var(--ink-3);
  padding:5px 15px;font-family:var(--d);font-size:12.5px;font-weight:700;
  transition:color .15s,border-color .15s,background-color .15s}
.ghostbtn:hover{color:var(--orange);border-color:var(--orange);border-style:solid;
  background:color-mix(in srgb,var(--orange) 10%,transparent)}

.modal{position:fixed;inset:0;z-index:9996;display:flex;align-items:center;justify-content:center;
  padding:24px;background:color-mix(in srgb,var(--ink) 55%,transparent);
  animation:pop .2s cubic-bezier(.2,1.3,.4,1) both}
.modalbox{width:min(460px,100%);max-height:88vh;overflow-y:auto;background:var(--card);
  border:var(--bw) solid var(--edge);border-radius:var(--r);padding:24px;
  box-shadow:7px 7px 0 var(--drop)}
.modalbox h3{font-size:23px;font-weight:900;margin-bottom:8px}
.modalbox p{font-size:15.5px;line-height:1.5;margin:0 0 12px}
.wipe{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:2px}
.wipe li{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding:7px 0;border-bottom:1px solid color-mix(in srgb,var(--ink-3) 35%,transparent);font-size:15px}
.wipe li:last-child{border-bottom:0}
.wipe li b{font-family:var(--d);font-weight:900;font-variant-numeric:tabular-nums}
.btn.danger{background:var(--orange);color:#fff}

/* ---------- klavye yardımı ---------- */
.keyhelp{position:fixed;inset:0;z-index:9996;display:flex;flex-direction:column;justify-content:center;
  align-items:center;gap:6px;padding:28px;overflow-y:auto;background:var(--paper);
  animation:pop .22s cubic-bezier(.2,1.3,.4,1) both;cursor:pointer}
.keyhelp h3{font-size:26px;font-weight:900;margin-bottom:12px}
.keyhelp .kh{display:flex;align-items:center;gap:14px;width:min(440px,100%);
  border:var(--bw) solid var(--edge);border-radius:10px;background:var(--card);padding:8px 14px;
  box-shadow:3px 3px 0 var(--drop)}
.keyhelp kbd{font-family:var(--d);font-weight:900;font-size:14px;min-width:110px;color:var(--blue)}
.keyhelp .kh span{font-size:15px}
.keyhelp p{margin-top:12px}

.flipstack{perspective:1100px}
.flipstack.flipout{animation:flipout .18s ease-in both;transform-origin:center 70%}
.flipstack.flipin{animation:flipin .36s cubic-bezier(.2,1.1,.3,1) both;transform-origin:center 30%}

@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}

/* ============================================================
   GİRİŞ PERDESİ
   ============================================================ */
.authgate{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;
  padding:24px;background:var(--paper);
  background-image:radial-gradient(var(--sunk) 1px, transparent 1px);background-size:14px 14px;
  animation:pop .25s cubic-bezier(.2,1.3,.4,1) both;overflow-y:auto}
.authbox{width:min(430px,100%);background:var(--card);border:var(--bw) solid var(--edge);
  border-radius:var(--r);padding:26px;box-shadow:7px 7px 0 var(--drop)}
.authbrand{display:flex;align-items:center;gap:12px;margin-bottom:4px}
.authbrand h1{font-size:29px;font-weight:900;letter-spacing:-.035em;line-height:1}
.authsub{font-family:var(--d);font-size:12px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);margin:0 0 16px}
.authbox p{font-size:15.5px;line-height:1.55;margin:0 0 14px}
.authbox code{font-family:ui-monospace,Consolas,monospace;font-size:.92em;
  background:var(--sunk);border-radius:5px;padding:1px 6px}
