/* JSTQB 学習サイト 共通スタイル — 色トークンは各サイトの css/theme.css で上書きする */
:root{
  /* 使う側（theme.css）で上書きするトークン。既定値は Test Analyst 版 */
  --paper:#EDF0EF;
  --card:#FFFFFF;
  --ink:#15272C;
  --ink-2:#4C6067;
  --ink-3:#7A8B90;
  --rule:#C6D0CE;
  --rule-soft:#DCE3E1;
  --teal:#0F6E75;
  --teal-deep:#08464B;
  --teal-wash:#E3EFEF;
  --plum:#8C3355;
  --plum-wash:#F5E7EC;
  --ok:#2C6B41;
  --ok-wash:#E4EFE7;
  --ng:#9E2727;
  --ng-wash:#F6E5E5;
  --amber:#8A6412;
  --amber-wash:#F3EDDD;
  --rail-fg:#DCE9E9;
  --rail-dim:#8FB3B4;
  --rail-grp:#7FA5A6;
  --rail-on-fg:#BCDCDC;
  --tint:#F5F8F7;
  --tint-2:#F8FAF9;
  --tint-3:#F3F6F5;
  --track:#EDF1F0;
  --k2-border:#9DC2C4;
  --shadow:rgba(8,40,45,.24);
  --scrim:rgba(8,30,34,.5);
  --sans:"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP","Yu Gothic Medium","Yu Gothic",Meiryo,system-ui,sans-serif;
  --serif:"Hiragino Mincho ProN","Yu Mincho",YuMincho,"Noto Serif JP","Source Han Serif JP","Times New Roman",serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Courier New",monospace;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-size:16px;line-height:1.85;
  font-feature-settings:"palt" 1;
}
a{color:var(--teal-deep)}

/* ---------- layout ---------- */
.shell{display:flex;min-height:100vh}
.rail{
  width:264px;flex:0 0 264px;background:var(--teal-deep);color:var(--rail-fg);
  position:sticky;top:0;height:100vh;overflow-y:auto;padding:26px 0 40px;
}
.rail .mark{padding:0 22px 20px;border-bottom:1px solid rgba(255,255,255,.14);margin-bottom:14px}
.rail .mark b{
  display:block;font-family:var(--serif);font-size:21px;font-weight:600;
  letter-spacing:.06em;color:#fff;line-height:1.5
}
.rail .mark span{display:block;font-size:11.5px;color:var(--rail-dim);letter-spacing:.1em;margin-top:4px}
.site-switch{margin:0 12px 6px;padding:4px;border:1px solid rgba(255,255,255,.16);border-radius:7px}
.site-switch a{
  display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:4px;
  color:var(--rail-dim);text-decoration:none;font-size:12px;line-height:1.4
}
.site-switch a:hover{background:rgba(255,255,255,.08);color:#fff}
.site-switch a.active{background:rgba(255,255,255,.12);color:#fff}
.site-switch a span{
  width:25px;flex:0 0 25px;font-family:var(--mono);font-size:10.5px;text-align:center;
  border:1px solid currentColor;border-radius:3px
}
.rail nav{padding:0 12px}
.rail .grp{font-size:11px;color:var(--rail-grp);letter-spacing:.14em;padding:16px 10px 6px}
.rail a.nv{
  display:flex;gap:9px;align-items:baseline;padding:7px 10px;border-radius:5px;
  color:var(--rail-fg);text-decoration:none;font-size:14px;line-height:1.5
}
.rail a.nv:hover{background:rgba(255,255,255,.08)}
.rail a.nv.on{background:var(--teal);color:#fff}
.rail a.nv i{font-style:normal;font-family:var(--mono);font-size:11.5px;color:var(--rail-dim);flex:0 0 22px}
.rail a.nv.on i{color:var(--rail-on-fg)}

.main{flex:1;min-width:0;display:flex;justify-content:center}
.col{width:100%;max-width:840px;padding:44px 40px 120px}

/* mobile */
.topbar{display:none}
@media (max-width:900px){
  .rail{
    position:fixed;left:0;top:0;z-index:60;transform:translateX(-100%);
    transition:transform .22s ease;box-shadow:0 0 40px rgba(0,0,0,.3)
  }
  body.menu .rail{transform:none}
  .topbar{
    display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:50;
    background:var(--teal-deep);color:#fff;padding:11px 16px
  }
  .topbar b{font-family:var(--serif);font-weight:600;letter-spacing:.04em;font-size:16px}
  .topbar .top-switch{
    margin-left:auto;color:#fff;text-decoration:none;border:1px solid rgba(255,255,255,.4);
    border-radius:5px;padding:3px 9px;font-family:var(--mono);font-size:12px;white-space:nowrap
  }
  .topbar .top-switch:hover{background:rgba(255,255,255,.12)}
  .topbar button{
    background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;
    border-radius:5px;width:34px;height:30px;font-size:15px;cursor:pointer
  }
  .col{padding:26px 18px 100px}
  .scrim{position:fixed;inset:0;background:var(--scrim);z-index:55;display:none}
  body.menu .scrim{display:block}
}
@media (min-width:901px){.top-switch{display:none}}

/* ---------- typography ---------- */
h1{
  font-family:var(--serif);font-weight:600;font-size:31px;line-height:1.5;
  letter-spacing:.02em;margin:0 0 6px
}
h2{
  font-family:var(--serif);font-weight:600;font-size:21px;line-height:1.6;
  margin:44px 0 14px;padding-bottom:8px;border-bottom:1.5px solid var(--ink);
  letter-spacing:.02em
}
h3{font-size:15.5px;font-weight:700;margin:26px 0 8px;color:var(--teal-deep)}
p{margin:0 0 14px}
.lede{color:var(--ink-2);font-size:15px;margin:0 0 26px}
.pagehead{margin-bottom:30px}
.eyebrow{
  font-family:var(--mono);font-size:12px;color:var(--teal);letter-spacing:.1em;
  margin:0 0 8px
}
ul,ol{margin:0 0 16px;padding-left:1.35em}
li{margin-bottom:6px}
li::marker{color:var(--ink-3)}
code{
  font-family:var(--mono);font-size:.88em;background:var(--teal-wash);
  padding:1px 5px;border-radius:3px;color:var(--teal-deep)
}
strong{font-weight:700}

/* ---------- components ---------- */
.card{background:var(--card);border:1px solid var(--rule);border-radius:6px;padding:20px 22px;margin:0 0 18px}

table{border-collapse:collapse;width:100%;font-size:14px;margin:4px 0 20px;background:var(--card)}
caption{
  caption-side:top;text-align:left;font-size:13px;color:var(--ink-2);
  padding:0 0 7px;font-weight:700
}
th,td{border:1px solid var(--rule-soft);padding:8px 10px;vertical-align:top;line-height:1.65}
thead th{background:var(--teal-wash);color:var(--teal-deep);font-weight:700;text-align:left;border-color:var(--rule)}
tbody th{background:var(--tint);font-weight:600;text-align:left}
td.num,th.num{font-family:var(--mono);text-align:right;white-space:nowrap}
td.c,th.c{text-align:center;font-family:var(--mono)}
.tw{overflow-x:auto;margin-bottom:20px}
.tw table{margin-bottom:0}

.note{border-left:3px solid;padding:13px 16px;margin:0 0 18px;border-radius:0 5px 5px 0;font-size:14.5px}
.note p:last-child{margin-bottom:0}
.note .lbl{display:block;font-size:12px;font-weight:700;letter-spacing:.06em;margin-bottom:5px}
.note.trap{background:var(--plum-wash);border-color:var(--plum)}
.note.trap .lbl{color:var(--plum)}
.note.tip{background:var(--teal-wash);border-color:var(--teal)}
.note.tip .lbl{color:var(--teal-deep)}
.note.check{background:var(--amber-wash);border-color:var(--amber)}
.note.check .lbl{color:var(--amber)}

.chip{
  display:inline-block;font-family:var(--mono);font-size:11.5px;line-height:1.7;
  padding:0 7px;border-radius:3px;border:1px solid;vertical-align:middle
}
.k2{color:var(--teal-deep);border-color:var(--k2-border);background:var(--teal-wash)}
.k3{color:var(--amber);border-color:#D3C08D;background:var(--amber-wash)}
.k4{color:var(--plum);border-color:#D6A9BB;background:var(--plum-wash)}

.lolist{list-style:none;padding:0;margin:0 0 8px}
.lolist li{
  display:flex;gap:11px;align-items:baseline;padding:9px 0;
  border-bottom:1px solid var(--rule-soft);margin:0;font-size:14.5px
}
.lolist li:last-child{border-bottom:0}
.lolist code{background:none;padding:0;color:var(--ink-3);flex:0 0 76px;font-size:12px}

.kw{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 6px;padding:0;list-style:none}
.kw li{
  margin:0;font-size:12.5px;padding:2px 9px;background:var(--tint-3);
  border:1px solid var(--rule-soft);border-radius:20px;color:var(--ink-2);line-height:1.7
}

/* hero */
.hero{background:var(--card);border:1px solid var(--rule);border-radius:6px;padding:24px;margin:0 0 22px}
.bars{margin:6px 0 0}
.bar{display:flex;align-items:center;gap:12px;margin-bottom:9px;font-size:13.5px}
.bar .nm{flex:0 0 128px;color:var(--ink-2)}
.bar .tr{flex:1;height:19px;background:var(--track);border-radius:3px;overflow:hidden}
.bar .fl{height:100%;background:var(--teal);border-radius:3px}
.bar .fl.hot{background:var(--plum)}
.bar .vl{flex:0 0 74px;text-align:right;font-family:var(--mono);font-size:12px;color:var(--ink-2)}
@media(max-width:560px){.bar .nm{flex:0 0 86px;font-size:12px}.bar .vl{flex:0 0 62px}}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:1px;background:var(--rule-soft);border:1px solid var(--rule-soft);border-radius:5px;overflow:hidden;margin:0 0 20px}
.stat{background:var(--card);padding:13px 14px}
.stat b{display:block;font-family:var(--mono);font-size:22px;font-weight:500;color:var(--teal-deep);line-height:1.3}
.stat span{display:block;font-size:11.5px;color:var(--ink-3)}

/* version switch */
.vsw{display:flex;gap:0;margin:0 0 20px;border:1px solid var(--rule);border-radius:5px;overflow:hidden;background:var(--card);width:fit-content}
.vsw button{
  border:0;background:transparent;font-family:var(--sans);font-size:13.5px;
  padding:8px 16px;cursor:pointer;color:var(--ink-2)
}
.vsw button+button{border-left:1px solid var(--rule)}
.vsw button.on{background:var(--teal-deep);color:#fff}

/* quiz */
.qbar{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 20px}
.qbar button{
  border:1px solid var(--rule);background:var(--card);border-radius:20px;
  padding:5px 14px;font-family:var(--sans);font-size:13px;cursor:pointer;color:var(--ink-2)
}
.qbar button.on{background:var(--teal-deep);border-color:var(--teal-deep);color:#fff}
.q{background:var(--card);border:1px solid var(--rule);border-radius:6px;padding:20px 22px;margin:0 0 16px}
.q .qh{display:flex;gap:9px;align-items:center;font-family:var(--mono);font-size:11.5px;color:var(--ink-3);margin-bottom:9px}
.q .qt{font-size:15.5px;font-weight:600;margin:0 0 14px;line-height:1.8}
.q .qt .pre{display:block;font-weight:400;font-size:14.5px;color:var(--ink-2);margin-bottom:9px;white-space:pre-wrap}
.opts{list-style:none;padding:0;margin:0}
.opts li{margin:0 0 7px}
.opts button{
  width:100%;text-align:left;background:var(--tint-2);border:1px solid var(--rule-soft);
  border-radius:5px;padding:10px 13px;font-family:var(--sans);font-size:14.5px;
  line-height:1.7;cursor:pointer;color:var(--ink);display:flex;gap:10px
}
.opts button:hover:not(:disabled){border-color:var(--teal);background:var(--teal-wash)}
.opts button:disabled{cursor:default}
.opts button .ltr{font-family:var(--mono);font-size:12.5px;color:var(--ink-3);flex:0 0 14px;padding-top:2px}
.opts button.right{background:var(--ok-wash);border-color:var(--ok)}
.opts button.right .ltr{color:var(--ok)}
.opts button.wrong{background:var(--ng-wash);border-color:var(--ng)}
.opts button.wrong .ltr{color:var(--ng)}
.exp{margin-top:13px;padding:13px 15px;background:var(--tint);border-left:3px solid var(--teal);border-radius:0 5px 5px 0;font-size:14px}
.exp b{display:block;margin-bottom:4px;font-size:12.5px;letter-spacing:.05em}
.exp b.ok{color:var(--ok)}
.exp b.ng{color:var(--ng)}
.score{
  position:sticky;bottom:14px;background:var(--teal-deep);color:#fff;border-radius:6px;
  padding:12px 18px;display:flex;justify-content:space-between;align-items:center;
  font-size:14px;box-shadow:0 6px 20px var(--shadow);margin-top:22px
}
.score .n{font-family:var(--mono);font-size:19px}
.score button{
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.35);color:#fff;
  border-radius:5px;padding:6px 13px;font-family:var(--sans);font-size:13px;cursor:pointer
}

/* glossary */
.gsearch{
  width:100%;padding:11px 14px;border:1px solid var(--rule);border-radius:5px;
  font-family:var(--sans);font-size:15px;background:var(--card);margin-bottom:18px;color:var(--ink)
}
.gsearch:focus{outline:2px solid var(--teal);outline-offset:-1px}
.gl{margin:0;background:var(--card);border:1px solid var(--rule);border-radius:6px;overflow:hidden}
.gl div.row{display:flex;gap:0;border-bottom:1px solid var(--rule-soft);padding:12px 16px;font-size:14.5px}
.gl div.row:last-child{border-bottom:0}
.gl dt{flex:0 0 190px;font-weight:700;margin:0}
.gl dt em{display:block;font-style:normal;font-weight:400;font-size:11.5px;color:var(--ink-3);font-family:var(--mono);line-height:1.6}
.gl dd{margin:0;flex:1;color:var(--ink-2)}
@media(max-width:640px){.gl div.row{flex-direction:column;gap:4px}.gl dt{flex:none}}

hr.sep{border:0;border-top:1px solid var(--rule);margin:34px 0}
.foot{font-size:12.5px;color:var(--ink-3);line-height:1.9;margin-top:50px;padding-top:18px;border-top:1px solid var(--rule)}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
.hide{display:none!important}
