/* ================================================================
   app.css — Ökupróf study app, v2 redesign
   Asphalt-dark surfaces, restrained signal-yellow accent, layered
   depth, soft shadows, springy micro-interactions.
   ================================================================ */

:root{
  --bg0:#0A0D11;
  --bg1:#10141A;
  --card:#161B23;
  --card2:#1C232E;
  --card3:#232B38;
  --line:rgba(255,255,255,.075);
  --line2:rgba(255,255,255,.14);
  --txt:#EFF1F4;
  --mut:#98A1AF;
  --dim:#68707E;
  --y:#F5C400;
  --y-soft:rgba(245,196,0,.12);
  --r:#F0555A;
  --r-deep:#C8102E;
  --r-soft:rgba(240,85,90,.12);
  --g:#4FC08D;
  --g-soft:rgba(79,192,141,.12);
  --b:#6B9FFF;
  --b-soft:rgba(107,159,255,.12);
  --rad:18px;
  --rad-s:12px;
  --sp1:4px; --sp2:8px; --sp3:12px; --sp4:16px; --sp5:24px; --sp6:32px; --sp7:48px;
  --font:"Inter","Segoe UI",system-ui,-apple-system,Arial,sans-serif;
  --mono:ui-monospace,"Cascadia Mono",Menlo,Consolas,monospace;
  --sh1:0 1px 2px rgba(0,0,0,.3);
  --sh2:0 6px 18px rgba(0,0,0,.32),0 1px 3px rgba(0,0,0,.4);
  --sh3:0 18px 48px rgba(0,0,0,.5),0 4px 12px rgba(0,0,0,.4);
  --tr:.18s cubic-bezier(.3,.7,.3,1);
  --spring:.45s cubic-bezier(.2,.9,.25,1.15);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg1);
  color:var(--txt);
  font-family:var(--font);
  font-size:16px;
  line-height:1.55;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(1100px 480px at 85% -10%,rgba(107,159,255,.07),transparent 60%),
    radial-gradient(800px 400px at 8% 110%,rgba(245,196,0,.05),transparent 60%);
}
img,svg{display:inline-block;vertical-align:middle}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}
input,select{font:inherit;color:inherit}
a{color:var(--b);text-decoration:none}
a:hover{text-decoration:underline}
::selection{background:var(--y);color:#111}

:focus-visible{outline:2px solid var(--y);outline-offset:2px;border-radius:8px}

/* ---------- layout shell ---------- */
.app{position:relative;z-index:1;max-width:1180px;margin:0 auto;padding:0 var(--sp4) var(--sp7)}
.topbar{
  position:sticky;top:0;z-index:50;
  background:rgba(10,13,17,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.topbar-in{max-width:1180px;margin:0 auto;padding:0 var(--sp4);display:flex;align-items:center;gap:var(--sp4);height:62px}
.brand{display:flex;align-items:center;gap:var(--sp3);font-weight:800;letter-spacing:.01em;white-space:nowrap;color:var(--txt);text-decoration:none}
.brand:hover{text-decoration:none}
.brand .logo{width:32px;height:32px;flex:0 0 auto;border-radius:50%;box-shadow:var(--sh2)}
.brand small{display:block;font-size:10px;font-weight:600;color:var(--mut);letter-spacing:.16em;text-transform:uppercase}
.nav{display:flex;gap:3px;margin-left:auto;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav a{
  color:var(--mut);font-size:14px;font-weight:600;padding:8px 14px;border-radius:999px;
  white-space:nowrap;transition:color var(--tr),background var(--tr);text-decoration:none;
}
.nav a:hover{color:var(--txt);background:var(--card2);text-decoration:none}
.nav a.on{color:#141414;background:var(--y);box-shadow:0 4px 14px rgba(245,196,0,.3)}
.topbar-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.lang-toggle,.nav-toggle{
  min-height:38px;display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:7px 11px;border-radius:999px;background:var(--card2);border:1px solid var(--line2);
  color:var(--txt);font-size:12px;font-weight:800;letter-spacing:.04em;transition:all var(--tr);
}
.lang-toggle:hover,.nav-toggle:hover{background:var(--card3);border-color:rgba(245,196,0,.4)}
.lang-toggle .lang-plus{color:var(--dim);transition:color var(--tr)}
.lang-toggle.both{background:var(--y-soft);border-color:rgba(245,196,0,.45)}
.lang-toggle.both .lang-plus{color:var(--y)}
.nav-toggle{display:none}
.menu-bars{width:17px;display:flex;flex-direction:column;gap:3px}
.menu-bars i{display:block;height:2px;border-radius:2px;background:currentColor;transition:transform var(--tr),opacity var(--tr)}
.nav-toggle[aria-expanded="true"] .menu-bars i:nth-child(1){transform:translateY(5px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] .menu-bars i:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] .menu-bars i:nth-child(3){transform:translateY(-5px) rotate(-45deg)}
main{padding-top:var(--sp6)}
#view:focus{outline:none}

/* ---------- surfaces & type ---------- */
.card{
  background:linear-gradient(180deg,rgba(255,255,255,.025),transparent 40%),var(--card);
  border:1px solid var(--line);border-radius:var(--rad);padding:var(--sp5);
  box-shadow:var(--sh1);
}
.card + .card{margin-top:var(--sp4)}
.grid{display:grid;gap:var(--sp4)}
.hrow{display:flex;align-items:center;gap:var(--sp3);flex-wrap:wrap}
.spacer{flex:1}
.mut{color:var(--mut)}
.dim{color:var(--dim)}
.small{font-size:13px}
h1{font-size:clamp(26px,4.2vw,38px);font-weight:800;letter-spacing:-.025em;line-height:1.12}
h2{font-size:20px;font-weight:800;letter-spacing:-.015em}
h3{font-size:16px;font-weight:700;letter-spacing:-.005em}
.eyebrow{font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--y);margin-bottom:var(--sp2)}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:11px 22px;border-radius:999px;font-weight:700;font-size:14px;letter-spacing:.01em;
  background:var(--card3);border:1px solid var(--line2);color:var(--txt);
  box-shadow:var(--sh1);
  transition:transform var(--tr),background var(--tr),border-color var(--tr),box-shadow var(--tr);
  text-decoration:none;user-select:none;
}
.btn:hover{background:#2A3342;text-decoration:none;transform:translateY(-1px);box-shadow:var(--sh2)}
.btn:active{transform:translateY(0) scale(.97);box-shadow:var(--sh1)}
.btn.primary{
  background:linear-gradient(180deg,#FFD422,#F0B800);border-color:transparent;color:#161200;
  box-shadow:0 6px 18px rgba(245,196,0,.25),inset 0 1px 0 rgba(255,255,255,.4);
}
.btn.primary:hover{background:linear-gradient(180deg,#FFDA45,#F5C400);box-shadow:0 10px 26px rgba(245,196,0,.35)}
.btn.danger{background:var(--r-soft);border-color:rgba(240,85,90,.4);color:#FFA3A6}
.btn.danger:hover{background:rgba(240,85,90,.2)}
.btn.ghost{background:transparent;box-shadow:none}
.btn.sm{padding:7px 15px;font-size:13px}
.btn[disabled]{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}

/* ---------- chips, tabs, progress ---------- */
.chip{
  display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;
  font-size:12px;font-weight:700;letter-spacing:.02em;
  background:var(--card2);border:1px solid var(--line);color:var(--mut);
}
.chip.y{background:var(--y-soft);border-color:rgba(245,196,0,.35);color:var(--y)}
.chip.g{background:var(--g-soft);border-color:rgba(79,192,141,.4);color:#82DCAE}
.chip.r{background:var(--r-soft);border-color:rgba(240,85,90,.4);color:#FFA3A6}
.chip.b{background:var(--b-soft);border-color:rgba(107,159,255,.4);color:#A9C6FF}

.pill-tabs{display:flex;gap:6px;flex-wrap:wrap}
.pill-tabs button{
  padding:8px 15px;border-radius:999px;font-size:13px;font-weight:600;color:var(--mut);
  border:1px solid var(--line);background:var(--card);transition:all var(--tr);
}
.pill-tabs button:hover{color:var(--txt);border-color:var(--line2);transform:translateY(-1px)}
.pill-tabs button.on{background:var(--y);border-color:var(--y);color:#161200;font-weight:700;box-shadow:0 4px 12px rgba(245,196,0,.25)}

.practice-field{border:0;min-width:0}
.practice-field legend{margin-bottom:9px}
.practice-cats{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}
.practice-cat{
  min-width:0;min-height:64px;display:flex;align-items:center;gap:12px;text-align:left;
  padding:11px 12px;border-radius:var(--rad-s);border:1px solid var(--line);background:var(--card2);
  transition:transform var(--tr),border-color var(--tr),background var(--tr),box-shadow var(--tr);
}
.practice-cat:hover{transform:translateY(-1px);border-color:var(--line2);background:var(--card3)}
.practice-cat.on{border-color:var(--y);background:var(--y-soft);box-shadow:0 0 0 2px rgba(245,196,0,.08)}
.practice-cat-copy{display:flex;flex:1;min-width:0;flex-direction:column;line-height:1.3}
.practice-cat-copy strong{font-size:13.5px}
.practice-cat-copy small{color:var(--mut);font-size:11.5px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.practice-cat-count{
  flex:0 0 auto;min-width:34px;padding:4px 8px;border-radius:999px;text-align:center;
  background:var(--card3);border:1px solid var(--line);font:700 11px var(--mono);color:var(--mut);
}
.practice-cat.on .practice-cat-count{background:var(--y);border-color:var(--y);color:#161200}
.count-inline{margin-left:5px;padding:1px 6px;border-radius:99px;background:rgba(0,0,0,.16);font:700 11px var(--mono)}

.progress{height:8px;border-radius:99px;background:var(--card3);overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.35)}
.progress > i{
  display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#D9A900,var(--y));
  transition:width .7s cubic-bezier(.2,.8,.2,1);
}
.progress.g > i{background:linear-gradient(90deg,#3BA273,var(--g))}
.progress.r > i{background:linear-gradient(90deg,#C23A3F,var(--r))}

.stat-num{font-size:34px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.1}
.stat-lbl{font-size:11.5px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.09em;margin-top:2px}

/* ---------- sign art (official images on neutral tile) ---------- */
.signart{
  width:88px;height:88px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  background:#F4F4F2;border-radius:14px;padding:7px;box-shadow:var(--sh1),inset 0 0 0 1px rgba(0,0,0,.06);
}
.signart img{width:100%;height:100%;object-fit:contain;image-rendering:auto}
.signart svg{width:100%;height:100%}
.signart.lg{width:140px;height:140px;border-radius:18px;padding:10px}
.signart.sm{width:52px;height:52px;border-radius:10px;padding:5px}
.signno{font-family:var(--mono);font-size:12px;color:var(--mut)}

/* ---------- home ---------- */
.hero{
  position:relative;isolation:isolate;overflow:hidden;min-height:460px;padding:clamp(28px,4.5vw,52px);
  display:grid;grid-template-columns:minmax(0,1.12fr) minmax(320px,.88fr);align-items:center;gap:clamp(28px,5vw,72px);
  background:
    linear-gradient(120deg,rgba(245,196,0,.055),transparent 38%),
    radial-gradient(circle at 84% 15%,rgba(107,159,255,.15),transparent 34%),
    linear-gradient(155deg,#171E29 0%,#11161E 68%,#151B24 100%);
  border-color:rgba(255,255,255,.11);box-shadow:0 22px 65px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.035);
}
.hero::before{
  content:"";position:absolute;z-index:-1;width:430px;height:430px;border-radius:50%;right:-120px;top:-190px;
  background:radial-gradient(circle,rgba(245,196,0,.13),transparent 67%);filter:blur(2px);
}
.hero::after{
  content:"";position:absolute;left:0;right:0;bottom:14px;height:3px;
  background:repeating-linear-gradient(90deg,var(--y) 0 48px,transparent 48px 88px);opacity:.34;
}
.hero-copy{position:relative;z-index:2;max-width:650px}
.hero-kicker{
  width:max-content;display:flex;align-items:center;gap:8px;margin-bottom:14px;padding:6px 11px 6px 8px;border-radius:999px;
  background:rgba(10,13,17,.52);border:1px solid var(--line2);color:#D5DAE2;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
}
.hero-kicker span{width:8px;height:8px;border-radius:50%;background:var(--y);box-shadow:0 0 0 4px rgba(245,196,0,.13),0 0 14px rgba(245,196,0,.4)}
.hero h1{max-width:650px;font-size:clamp(35px,5.2vw,58px);line-height:1.01;letter-spacing:-.045em}
.hero-lede{max-width:610px;margin:18px 0 24px;color:#B6BEC9;font-size:clamp(15px,1.7vw,17px);line-height:1.65}
.hero-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.hero-actions .btn{min-height:46px}
.hero-format{display:flex;align-items:stretch;margin-top:28px;padding-top:22px;border-top:1px solid var(--line);max-width:530px}
.hero-format>div{min-width:0;display:flex;flex-direction:column;padding:0 22px;border-right:1px solid var(--line)}
.hero-format>div:first-child{padding-left:0}.hero-format>div:last-child{border-right:0}
.hero-format strong{font-size:21px;line-height:1;font-weight:800;color:var(--txt)}
.hero-format span{margin-top:5px;color:var(--mut);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}
.hero-visual{position:relative;height:330px;display:flex;align-items:center;justify-content:center}
.hero-orbit{position:absolute;border:1px solid rgba(255,255,255,.075);border-radius:50%}
.hero-orbit-one{width:310px;height:310px}.hero-orbit-two{width:238px;height:238px;border-color:rgba(245,196,0,.14)}
.hero-signs{position:relative;z-index:1;display:flex;align-items:center;gap:13px;transform:translateY(-20px)}
.hero-signs .signart{width:94px;height:94px;padding:9px;border-radius:18px;box-shadow:0 18px 42px rgba(0,0,0,.42);transition:transform var(--spring)}
.hero-signs .signart:nth-child(1){transform:rotate(-7deg) translateY(12px)}
.hero-signs .signart:nth-child(2){transform:translateY(-12px)}
.hero-signs .signart:nth-child(3){transform:rotate(7deg) translateY(12px)}
.hero:hover .hero-signs .signart:nth-child(1){transform:rotate(-10deg) translate(-4px,7px)}
.hero:hover .hero-signs .signart:nth-child(2){transform:translateY(-18px)}
.hero:hover .hero-signs .signart:nth-child(3){transform:rotate(10deg) translate(4px,7px)}
.exam-ticket{
  position:absolute;z-index:2;left:50%;bottom:18px;transform:translateX(-50%);width:min(315px,92%);padding:13px 15px;
  border-radius:14px;background:rgba(10,13,17,.86);border:1px solid var(--line2);box-shadow:0 15px 36px rgba(0,0,0,.4);backdrop-filter:blur(12px);
}
.exam-ticket-top{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:700}
.exam-ticket-top span{display:flex;align-items:center;gap:7px}.exam-ticket-top b{font-family:var(--mono);color:var(--y);font-size:14px}
.exam-ticket-line{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;margin:10px 0}
.exam-ticket-line i{display:block;height:5px;border-radius:5px;background:var(--y)}
.exam-ticket small{display:block;color:var(--mut);font-size:10.5px}

.home-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp4);margin-top:var(--sp4)}
.grid>.card + .card,.home-stats>.card + .card,.category-grid>.card + .card{margin-top:0}
.home-stat{position:relative;min-height:132px;display:flex;align-items:center;gap:14px;padding:20px;overflow:hidden}
.home-stat::after{content:"";position:absolute;inset:auto -30px -55px auto;width:110px;height:110px;border-radius:50%;background:rgba(107,159,255,.045)}
.home-stat-icon{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border-radius:13px;background:var(--b-soft);border:1px solid rgba(107,159,255,.22);color:#A9C6FF}
.home-stat.streak .home-stat-icon{color:#FF9F68;background:rgba(255,137,77,.1);border-color:rgba(255,137,77,.2)}
.home-stat.mastery{padding-bottom:34px}.home-stat.mastery .home-stat-icon{color:var(--y);background:var(--y-soft);border-color:rgba(245,196,0,.22)}
.home-stat .stat-num{font-size:30px}.home-stat .stat-num small{font-size:14px;color:var(--mut);letter-spacing:0}
.home-stat .progress{position:absolute;left:20px;right:20px;bottom:17px;height:5px}

.readiness-card{display:grid;grid-template-columns:minmax(240px,.75fr) minmax(0,1.25fr);gap:clamp(24px,5vw,58px);align-items:center;margin-top:var(--sp4);padding:clamp(24px,3.5vw,38px)}
.readiness-copy p{margin:10px 0 18px;max-width:48ch;font-size:14px;line-height:1.65}
.readiness-copy .chip{white-space:normal;line-height:1.35}
.readiness-ledger{padding:20px;border-radius:var(--rad-s);background:rgba(10,13,17,.38);border:1px solid var(--line)}
.readiness-total{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:16px}
.readiness-total span{font-size:18px;font-weight:700}.readiness-total strong{font-size:32px;line-height:1;color:var(--y)}
.readiness-total small{color:var(--mut);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.09em}
.ledger-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px;color:var(--mut);font-size:11px;font-weight:600}
.ledger-legend span{display:flex;align-items:center;gap:6px}.ledger-legend i{width:8px;height:8px;border-radius:3px;background:var(--card3);border:1px solid var(--line)}
.ledger-legend i.secured{background:var(--y);border-color:var(--y)}.ledger-legend i.weak{background:var(--r-deep);border-color:var(--r-deep)}

.section-head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin:34px 0 16px}
.section-head .eyebrow{margin-bottom:5px}.section-head p{margin-top:5px;font-size:14px}
.category-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--sp4)}
.catcard{display:flex;flex-direction:column;gap:var(--sp3);min-height:245px;padding:20px;transition:transform var(--tr),box-shadow var(--tr),border-color var(--tr)}
.catcard:hover{transform:translateY(-3px);box-shadow:var(--sh2);border-color:rgba(245,196,0,.2)}
.catcard .top{display:flex;align-items:flex-start;gap:var(--sp3)}
.catcard-copy{flex:1;min-width:0}
.catcard-kicker{margin-bottom:4px;color:var(--dim);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.11em;text-transform:uppercase}
.catcard-copy h3{line-height:1.35}.catcard-copy .mut{margin-top:3px;line-height:1.45}
.catcard-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.catcard-meta .chip:last-child{margin-left:auto}
.catcard-action{width:100%;justify-content:space-between;margin-top:auto;padding:9px 13px;background:transparent;box-shadow:none}
.catcard-action:hover{background:var(--card3)}
.status-dot{width:10px;height:10px;border-radius:99px;flex:0 0 auto;margin-top:6px}
.status-dot.strong{background:var(--g);box-shadow:0 0 10px rgba(79,192,141,.6)}
.status-dot.ok{background:var(--y);box-shadow:0 0 10px rgba(245,196,0,.5)}
.status-dot.weak{background:var(--r);box-shadow:0 0 10px rgba(240,85,90,.6)}
.status-dot.new{background:var(--dim)}

.marks{display:grid;grid-template-columns:repeat(25,1fr);gap:5px}
.mark{aspect-ratio:1;border-radius:4px;background:var(--card3);border:1px solid var(--line);transition:transform var(--tr)}
.mark:hover{transform:scale(1.25)}
.mark.on{background:var(--y);border-color:var(--y);box-shadow:0 0 8px rgba(245,196,0,.35)}
.mark.weak{background:var(--r-deep);border-color:var(--r-deep)}

/* staggered entrance */
[data-rise]{animation:rise .5s cubic-bezier(.2,.8,.2,1) both;animation-delay:var(--d,0s)}

/* ---------- exam ---------- */
.exambar{
  position:sticky;top:62px;z-index:40;margin:0 calc(-1 * var(--sp4)) var(--sp5);
  padding:var(--sp3) var(--sp4);display:flex;align-items:center;gap:var(--sp4);flex-wrap:wrap;
  background:rgba(16,20,26,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);box-shadow:0 8px 24px rgba(0,0,0,.25);
}
.timer{
  font-family:var(--mono);font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;
  padding:7px 16px;border-radius:var(--rad-s);background:var(--card3);border:1px solid var(--line2);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
.timer.low{color:#FFA3A6;border-color:rgba(240,85,90,.55);animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.5}}
.qnav{display:grid;grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:6px}
.qnav button{
  aspect-ratio:1;border-radius:9px;font-size:12px;font-weight:700;font-family:var(--mono);
  background:var(--card3);border:1px solid var(--line);color:var(--mut);transition:all var(--tr);
  position:relative;
}
.qnav button:hover{border-color:var(--line2);color:var(--txt);transform:translateY(-1px)}
.qnav button.ans{background:var(--b-soft);border-color:rgba(107,159,255,.5);color:#A9C6FF}
.qnav button.cur{outline:2px solid var(--y);outline-offset:1px;color:var(--txt)}
.qnav button.flag::after{
  content:"";position:absolute;top:3px;right:3px;width:7px;height:7px;border-radius:99px;
  background:var(--y);box-shadow:0 0 6px rgba(245,196,0,.7);
}
.qnav button.ok{background:var(--g-soft);border-color:rgba(79,192,141,.5);color:#82DCAE}
.qnav button.bad{background:var(--r-soft);border-color:rgba(240,85,90,.5);color:#FFA3A6}

.tfrow{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp4)}
.tfbtn{
  padding:var(--sp5) var(--sp4);border-radius:var(--rad);font-size:17px;font-weight:800;
  border:2px solid var(--line);background:var(--card2);transition:all var(--tr);
  display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:var(--sh1);
}
.tfbtn:hover{border-color:var(--line2);transform:translateY(-2px);box-shadow:var(--sh2)}
.tfbtn:active{transform:scale(.98)}
.tfbtn.sel[data-v="t"]{border-color:var(--g);background:var(--g-soft)}
.tfbtn.sel[data-v="f"]{border-color:var(--r);background:var(--r-soft)}
.tfbtn.right{border-color:var(--g)!important;background:var(--g-soft)!important;box-shadow:0 0 0 4px rgba(79,192,141,.15)}
.tfbtn.wrong{border-color:var(--r)!important;background:var(--r-soft)!important;box-shadow:0 0 0 4px rgba(240,85,90,.15)}
.tfbtn kbd{opacity:.6}

.optbtn{
  display:block;width:100%;text-align:left;padding:14px 18px;border-radius:var(--rad-s);
  border:2px solid var(--line);background:var(--card2);font-size:15px;font-weight:600;
  transition:all var(--tr);margin-bottom:var(--sp2);box-shadow:var(--sh1);
}
.optbtn:hover{border-color:var(--line2);transform:translateX(3px)}
.optbtn.sel{border-color:var(--b);background:var(--b-soft)}
.optbtn.right{border-color:var(--g);background:var(--g-soft)}
.optbtn.wrong{border-color:var(--r);background:var(--r-soft)}
.optbtn .key{
  display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center;
  border-radius:7px;background:var(--card3);border:1px solid var(--line);
  font-family:var(--mono);font-size:12px;margin-right:10px;
}

.qtext{font-size:19px;font-weight:650;line-height:1.5;letter-spacing:-.01em}
.why{
  border-left:3px solid var(--y);background:var(--card2);border-radius:0 var(--rad-s) var(--rad-s) 0;
  padding:var(--sp4);animation:slidein .3s cubic-bezier(.2,.8,.2,1);
}
.why h4{font-size:11.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--y);margin-bottom:6px}
.rulenote{border-left-color:var(--b);margin-top:var(--sp3)}
.rulenote h4{color:var(--b)}
@keyframes slidein{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

.flagbtn.on{color:var(--y);border-color:rgba(245,196,0,.5);background:var(--y-soft)}

.verdict{text-align:center;padding:var(--sp7) var(--sp5);border-radius:var(--rad);border:1px solid var(--line)}
.verdict.pass{background:linear-gradient(160deg,rgba(79,192,141,.15),transparent 60%),var(--card);box-shadow:0 0 60px rgba(79,192,141,.08) inset}
.verdict.fail{background:linear-gradient(160deg,rgba(240,85,90,.14),transparent 60%),var(--card);box-shadow:0 0 60px rgba(240,85,90,.07) inset}
.verdict .big{font-size:clamp(42px,8vw,68px);font-weight:800;letter-spacing:-.035em;line-height:1}

/* ---------- signs library ---------- */
.signgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--sp3)}
.signcell{
  background:var(--card);border:1px solid var(--line);border-radius:var(--rad-s);
  padding:var(--sp4) var(--sp3);display:flex;flex-direction:column;align-items:center;gap:var(--sp2);
  text-align:center;transition:transform var(--tr),border-color var(--tr),box-shadow var(--tr);
}
.signcell:hover{border-color:rgba(245,196,0,.4);transform:translateY(-3px);box-shadow:var(--sh2)}
.signcell:hover .signart img,.signcell:hover .signart svg{transform:scale(1.1)}
.signcell .signart{overflow:hidden}
.signcell .signart img,.signcell .signart svg{transition:transform var(--spring)}
.signcell .is{font-size:12px;font-weight:700;line-height:1.35}
.signcell .no{font-family:var(--mono);font-size:11px;color:var(--dim)}
.sign-name-en,.sign-name-is{display:block}
.sign-name-is{color:var(--mut);font-weight:600}
.signcell .sign-name-is{font-size:11px;margin-top:4px}
.signcell .sign-name-en,.signcell .sign-name-is{
  display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;
}
.signcell .sign-name-en{-webkit-line-clamp:3}
.signcell .sign-name-is{-webkit-line-clamp:2}

.searchbar{
  width:100%;padding:12px 16px 12px 44px;border-radius:999px;
  background:var(--card);border:1px solid var(--line);color:var(--txt);
  transition:border-color var(--tr),box-shadow var(--tr);
}
.searchbar:focus{border-color:rgba(245,196,0,.5);outline:none;box-shadow:0 0 0 4px rgba(245,196,0,.12)}
select.searchbar{border-radius:var(--rad-s);padding-left:16px}
.searchwrap{position:relative;flex:1;min-width:220px}
.searchwrap::before{
  content:"";position:absolute;left:16px;top:50%;width:15px;height:15px;transform:translateY(-50%);
  background:var(--dim);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* ---------- modal ---------- */
.overlay{
  position:fixed;inset:0;z-index:100;background:rgba(5,7,10,.72);backdrop-filter:blur(8px);
  display:flex;align-items:center;justify-content:center;padding:var(--sp4);
  animation:fadein .2s ease;
}
@keyframes fadein{from{opacity:0}}
.modal{
  background:linear-gradient(180deg,rgba(255,255,255,.03),transparent 30%),var(--card);
  border:1px solid var(--line2);border-radius:var(--rad);
  max-width:660px;width:100%;max-height:86vh;overflow-y:auto;padding:var(--sp6);
  position:relative;box-shadow:var(--sh3);animation:pop .3s cubic-bezier(.2,.9,.3,1.15);
}
@keyframes pop{from{opacity:0;transform:scale(.93) translateY(14px)}}
.modal .x{
  position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:99px;
  background:var(--card3);border:1px solid var(--line);font-size:16px;color:var(--mut);
  transition:all var(--tr);
}
.modal .x:hover{color:var(--txt);transform:rotate(90deg)}

/* ---------- animation cards (anim.js) ---------- */
.anicard{
  background:var(--card2);border:1px solid var(--line);border-radius:var(--rad-s);
  overflow:hidden;margin:var(--sp4) 0;box-shadow:var(--sh1);
}
.anicard-head{display:flex;align-items:center;gap:var(--sp3);padding:12px 16px}
.anicard-head b{display:block;font-size:14px}
.anicard-head span{display:block;font-size:12px;color:var(--mut)}
.anicard-head .anibtn{margin-left:auto;flex:0 0 auto;min-width:92px}
.anistage{background:#1A1F27;border-top:1px solid var(--line)}
.anistage svg{display:block}

/* ---------- flashcards ---------- */
.flashwrap{max-width:420px;margin:0 auto;perspective:1400px}
.flashcard{
  position:relative;width:100%;aspect-ratio:1/1.05;cursor:pointer;
  transform-style:preserve-3d;transition:transform .55s cubic-bezier(.3,.9,.3,1.08);
}
.flashcard.flip{transform:rotateY(180deg)}
.flashface{
  position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  background:var(--card2);border:1px solid var(--line2);border-radius:var(--rad);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp3);
  padding:var(--sp5);text-align:center;box-shadow:var(--sh2);
}
.flashface.back{transform:rotateY(180deg)}
.flashface .signart{width:160px;height:160px;border-radius:20px;padding:12px}

/* ---------- guide ---------- */
.guide-grid{display:grid;grid-template-columns:230px 1fr;gap:var(--sp6);align-items:start}
.guide-toc{position:sticky;top:132px;display:flex;flex-direction:column;gap:2px}
.guide-toc a{
  color:var(--mut);font-size:13.5px;font-weight:600;padding:8px 13px;border-radius:9px;
  border-left:2px solid transparent;transition:all var(--tr);
}
.guide-toc a:hover{color:var(--txt);background:var(--card2);text-decoration:none;transform:translateX(3px)}
.guide-toc a.on{color:var(--y);border-left-color:var(--y);background:var(--y-soft)}
.guide section{margin-bottom:var(--sp6);scroll-margin-top:132px}
.guide p{margin:var(--sp3) 0;color:#C9CDD4;max-width:70ch}
.guide ul{margin:var(--sp3) 0 var(--sp3) var(--sp5);color:#C9CDD4;max-width:70ch}
.guide li{margin-bottom:6px}
.guide table{width:100%;border-collapse:collapse;margin:var(--sp4) 0;font-size:14px}
.guide th,.guide td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--line)}
.guide th{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--mut);font-weight:700}
.guide td:first-child{font-weight:650}
.guide tr td:last-child{color:var(--mut)}
.guide tbody tr, .guide tr{transition:background var(--tr)}
.guide tr:hover td{background:rgba(255,255,255,.02)}
.callout{
  border:1px solid rgba(245,196,0,.28);background:var(--y-soft);border-radius:var(--rad-s);
  padding:var(--sp4);margin:var(--sp4) 0;font-size:14.5px;max-width:70ch;
}
.callout.b{border-color:rgba(107,159,255,.32);background:var(--b-soft)}
.callout.r{border-color:rgba(240,85,90,.32);background:var(--r-soft)}

.timeline{list-style:none;margin:var(--sp4) 0;position:relative;padding-left:26px;max-width:70ch}
.timeline::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:var(--line2)}
.timeline li{position:relative;padding:0 0 var(--sp4) var(--sp3)}
.timeline li::before{
  content:"";position:absolute;left:-25px;top:5px;width:12px;height:12px;border-radius:99px;
  background:var(--bg1);border:3px solid var(--y);box-shadow:0 0 8px rgba(245,196,0,.4);
}
.timeline b{display:block}
.timeline span{color:var(--mut);font-size:14px}

/* ---------- progress ---------- */
.chartbox{background:var(--card);border:1px solid var(--line);border-radius:var(--rad);padding:var(--sp5)}
.chartbox svg{width:100%;height:auto}
.weakrow{display:flex;align-items:center;gap:var(--sp3);padding:12px 0;border-bottom:1px solid var(--line)}
.weakrow:last-child{border-bottom:0}

/* ---------- footer / toast / kbd ---------- */
.foot{margin-top:var(--sp7);padding-top:var(--sp5);border-top:1px solid var(--line);
  color:var(--dim);font-size:12.5px;display:flex;gap:var(--sp4);flex-wrap:wrap}
.toast{
  position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(24px);
  background:var(--card3);border:1px solid var(--line2);border-radius:999px;
  padding:11px 24px;font-size:14px;font-weight:600;box-shadow:var(--sh3);
  opacity:0;pointer-events:none;transition:all .35s cubic-bezier(.2,.9,.3,1.2);z-index:200;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
kbd{
  font-family:var(--mono);font-size:11px;padding:2px 7px;border-radius:6px;
  background:var(--card3);border:1px solid var(--line2);border-bottom-width:2px;color:var(--mut);
}

.rise{animation:rise .45s cubic-bezier(.2,.8,.2,1) both}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .hero{grid-template-columns:minmax(0,1fr) 270px;gap:20px}
  .hero-visual{height:290px;transform:scale(.9)}
  .hero-signs .signart{width:82px;height:82px}
  .home-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .guide-grid{grid-template-columns:1fr}
  .guide-toc{position:static;flex-direction:row;flex-wrap:wrap;gap:6px}
  .guide-toc a{border-left:0;border:1px solid var(--line);border-radius:999px}
  #examGrid{grid-template-columns:1fr!important}
}
@media (max-width:720px){
  .topbar-in{height:auto;min-height:58px;padding:9px var(--sp4);flex-wrap:wrap;gap:10px}
  .brand{margin-right:auto}
  .brand small{display:none}
  .topbar-actions{margin-left:auto}
  .nav-toggle{display:inline-flex;min-height:40px}
  .lang-toggle{min-height:40px}
  .nav{
    display:none;order:3;margin:0;width:100%;overflow:visible;padding:10px 0 3px;
    grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;border-top:1px solid var(--line);
  }
  .nav.open{display:grid;animation:navopen .18s ease-out}
  @keyframes navopen{from{opacity:0;transform:translateY(-5px)}}
  .nav a{min-height:44px;display:flex;align-items:center;justify-content:center;padding:10px 8px;border-radius:10px;background:var(--card2);border:1px solid var(--line)}
  .nav a.on{box-shadow:none}
  .exambar{top:58px;margin-bottom:var(--sp4);gap:8px}
  .exambar .timer{font-size:18px;padding:6px 11px}
  .exambar .btn{padding:8px 12px}
  .tfrow{grid-template-columns:1fr}
  .hero{display:block;min-height:0;padding:28px 20px 30px}
  .hero::before{right:-250px;top:-240px}
  .hero-visual{display:none}
  .hero h1{font-size:clamp(34px,10.5vw,46px);line-height:1.03}
  .hero-lede{font-size:15px;margin:16px 0 21px}
  .hero-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}
  .hero-actions .btn{width:100%;padding-left:12px;padding-right:12px}
  .hero-actions .primary{grid-column:1/-1}
  .hero-format{margin-top:23px;padding-top:19px;justify-content:space-between}
  .hero-format>div{flex:1;padding:0 12px}
  .hero-format strong{font-size:19px}
  .hero-format span{font-size:9.5px;white-space:normal}
  .home-stats{gap:10px}
  .home-stat{min-height:112px;padding:16px;gap:10px}
  .home-stat .stat-num{font-size:25px}
  .home-stat-icon{width:36px;height:36px;border-radius:11px}
  .home-stat.mastery{padding-bottom:30px}
  .home-stat .progress{left:16px;right:16px;bottom:14px}
  .readiness-card{grid-template-columns:1fr;gap:22px;padding:20px}
  .readiness-ledger{padding:16px}
  .section-head{align-items:flex-start;margin-top:30px}
  .section-head .btn{padding:9px 14px;flex:0 0 auto}
  .category-grid{grid-template-columns:1fr;gap:12px}
  .catcard{min-height:0;padding:18px}
  .card{padding:var(--sp4)}
  main{padding-top:var(--sp4)}
  .practice-cats{grid-template-columns:1fr}
  .practice-cat{min-height:58px}
  .pill-tabs button{min-height:44px;padding:9px 14px}
  .desktop-shortcuts{display:none}
  .signgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .signcell{padding:12px 8px}
  .signcell .signart{width:76px;height:76px}
  .modal{padding:var(--sp5) var(--sp4)}
  .modal .signart.lg{width:110px;height:110px}
  .guide table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .progress-detail-grid{grid-template-columns:1fr!important}
  .weakrow{flex-wrap:wrap}
  #view table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .toast{max-width:calc(100vw - 24px);width:max-content;text-align:center;bottom:14px}
}
@media (max-width:420px){
  .app,.topbar-in{padding-left:12px;padding-right:12px}
  .brand{gap:8px}.brand .logo{width:30px;height:30px}
  .lang-toggle,.nav-toggle{padding:7px 9px}
  .nav{grid-template-columns:1fr 1fr}
  .btn{padding:10px 17px}
  .hero{padding:24px 16px 28px}
  .hero-kicker{font-size:9.5px;letter-spacing:.09em}
  .hero h1{font-size:34px}
  .hero-actions{grid-template-columns:1fr}
  .hero-actions .primary{grid-column:auto}
  .hero-format>div{padding:0 9px}
  .home-stat{display:block;padding:14px;min-height:114px}
  .home-stat-icon{margin-bottom:8px}
  .home-stat.mastery{padding-bottom:29px}
  .section-head{display:block}
  .section-head .btn{width:100%;margin-top:14px}
  .catcard-meta .chip:last-child{margin-left:0}
  .practice-setup .hrow>.btn{width:100%}
  .verdict .hrow>.btn{width:100%}
  .signcell .is{font-size:11.5px}
  .overlay{padding:8px}
  .modal{max-height:92vh;border-radius:14px}
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;transition-duration:.001s!important;scroll-behavior:auto!important}
}

/* ---------- v2.1: icons in buttons, animation controls, category rings ---------- */
.btn svg{vertical-align:-2px}
.btn.primary svg{filter:drop-shadow(0 1px 0 rgba(255,255,255,.25))}

.anifoot{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;border-top:1px solid var(--line);background:var(--card);
}
.anibtn{
  width:34px;height:34px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  border-radius:99px;background:var(--card3);border:1px solid var(--line2);color:var(--txt);
  transition:all var(--tr);
}
.anibtn:hover{background:#2A3342;transform:translateY(-1px);box-shadow:var(--sh2)}
.anibtn:active{transform:scale(.94)}
.aniscrub{
  flex:1;min-width:0;appearance:none;-webkit-appearance:none;height:6px;border-radius:99px;
  background:var(--card3);outline-offset:3px;cursor:pointer;
}
.aniscrub::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:99px;
  background:var(--y);border:2px solid #161200;box-shadow:0 2px 8px rgba(245,196,0,.4);
  transition:transform var(--tr);
}
.aniscrub::-webkit-slider-thumb:hover{transform:scale(1.2)}
.aniscrub::-moz-range-thumb{
  width:12px;height:12px;border-radius:99px;background:var(--y);border:2px solid #161200;
}
.aniscrub::-moz-range-track{height:6px;border-radius:99px;background:var(--card3)}
.anicap{
  padding:9px 16px 12px;font-size:13px;color:var(--mut);min-height:38px;
  border-top:1px solid var(--line);background:var(--card);
  transition:color var(--tr);
}
.anicap:empty::before{content:"Press play to watch the scenario";color:var(--dim);font-style:italic}

.catcard .top{align-items:center}
.catring{flex:0 0 auto;filter:drop-shadow(0 2px 6px rgba(0,0,0,.35))}
