  /* 文法ドリル固有スタイル（トークン・共通部品は redix.css を利用） */
  .gwrap{max-width:680px;}
  .brand h1 a{color:inherit;text-decoration:none;}

  /* ---- 目次 ---- */
  .g-part{margin-bottom:24px;}
  .g-part-h{display:flex;align-items:baseline;gap:10px;padding:0 2px 7px;margin-bottom:4px;
    border-bottom:1px solid var(--line);}
  .g-part-h .pname{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--root);letter-spacing:.06em;}
  .g-part-h .ptheme{font-size:14px;font-weight:600;color:var(--ink);}
  .g-part-h .pcnt{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-faint);}
  .g-unit{display:flex;align-items:baseline;gap:10px;width:100%;text-align:left;background:transparent;
    border:0;font-family:var(--sans);font-size:14px;color:var(--ink);padding:9px 10px;border-radius:10px;cursor:pointer;}
  .g-unit:hover{background:var(--line);}
  .g-unit.na{opacity:.45;cursor:default;}
  .g-unit.na:hover{background:transparent;}
  .g-unit .uno{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:22px;
    padding:0 6px;border-radius:999px;background:var(--root-t);color:var(--root);
    font-family:var(--mono);font-size:11px;font-weight:700;line-height:1;flex:none;}
  .g-unit .ut{font-weight:500;}
  .g-unit .up{font-family:var(--serif);font-weight:600;font-size:13.5px;color:var(--root);}
  .g-unit .udone{margin-left:auto;display:inline-flex;align-items:baseline;gap:6px;flex:none;}
  .g-unit .udone .ck{color:var(--good);font-weight:700;font-size:11px;}
  .g-unit .udone .sc{font-family:var(--mono);font-size:11px;color:var(--ink-soft);}
  .g-unit .una{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-faint);flex:none;}

  /* ---- ユニット ---- */
  .g-back{font-family:var(--sans);font-size:13px;color:var(--accent);background:transparent;border:0;
    padding:2px 0;cursor:pointer;}
  .g-back:hover{color:var(--root);}
  .g-uhead{margin-top:14px;}
  .g-kicker{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--root);}
  .g-titlerow{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;margin-top:4px;}
  .g-titlerow h2{font-size:21px;font-weight:600;margin:0;line-height:1.3;}
  .g-pattern{font-family:var(--serif);font-weight:600;font-size:17px;color:var(--root);}
  .g-tabs{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;
    border-bottom:1px solid var(--line);margin-top:14px;}
  .g-tabbtns{display:flex;gap:4px;}
  .g-tab{font-family:var(--sans);font-size:13px;font-weight:500;color:var(--ink-soft);background:transparent;
    border:0;border-bottom:2px solid transparent;padding:7px 14px;margin-bottom:-1px;cursor:pointer;}
  .g-tab[aria-selected="true"]{color:var(--root);font-weight:600;border-bottom-color:var(--root);}
  .g-tabmeta{font-family:var(--mono);font-size:11px;color:var(--ink-faint);padding-bottom:8px;}
  .g-card{margin-top:16px;background:var(--card);border:1px solid var(--line);border-radius:18px;
    box-shadow:0 14px 40px -28px rgba(0,0,0,.4);padding:clamp(16px,4.5vw,30px);}

  /* ---- 解説 ---- */
  .g-sec{margin-bottom:26px;}
  .g-sec-h{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
  .g-sec-h .chip{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
    border-radius:999px;background:var(--root-t);color:var(--root);
    font-family:var(--mono);font-size:11px;font-weight:700;flex:none;}
  .g-sec-h h3{font-size:15px;font-weight:600;margin:0;}
  .g-sec .body{font-size:14px;line-height:1.9;margin:0;color:var(--ink);}
  .g-egs{margin-top:10px;padding-left:12px;border-left:2px solid var(--line);
    display:flex;flex-direction:column;gap:10px;}
  .g-eg-en{margin:0;font-family:var(--serif);font-size:16px;line-height:1.7;color:var(--ink);}
  .g-eg-jp{margin:2px 0 0;font-size:12.5px;color:var(--ink-soft);}
  .g-topractice{display:flex;justify-content:flex-end;margin-top:2px;}
  .g-btn-ink{font-family:var(--sans);font-size:14px;font-weight:600;background:var(--ink);color:var(--paper);
    border:0;padding:11px 22px;border-radius:12px;cursor:pointer;}
  .g-btn-ghost{font-family:var(--sans);font-size:14px;font-weight:600;background:transparent;color:var(--ink-soft);
    border:1px solid var(--line-2);padding:11px 22px;border-radius:12px;cursor:pointer;}
  .g-btn-ghost:hover{border-color:var(--ink-soft);color:var(--ink);}

  /* ---- 練習問題 ---- */
  .g-ex{padding:16px 0;border-bottom:1px solid var(--line);}
  .g-ex-row{display:flex;gap:12px;}
  .g-ex-no{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;
    border:1px solid var(--line-2);border-radius:6px;color:var(--ink-soft);
    font-family:var(--mono);font-size:12px;flex:none;margin-top:2px;}
  .g-ex-main{flex:1;min-width:0;}
  .g-ex-jp{margin:0 0 8px;font-size:12.5px;color:var(--ink-soft);}
  .g-ex-jp .hint{color:var(--accent);margin-left:10px;}
  .g-fill-line{font-family:var(--serif);font-size:17px;line-height:1.9;color:var(--ink);
    display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 2px;}
  .g-fill-input{font-family:var(--serif);font-size:16px;font-weight:600;color:var(--ink);background:transparent;
    border:0;border-bottom:2px solid var(--ink);border-radius:0;min-width:110px;max-width:100%;
    text-align:center;padding:0 4px;margin:0 2px;}
  .g-fill-ok{font-weight:700;color:var(--good);border-bottom:2px solid var(--ink);padding:0 4px;margin:0 2px;}
  .g-fill-ng{display:inline-flex;align-items:baseline;gap:8px;border-bottom:2px solid var(--ink);
    padding:0 4px;margin:0 2px;}
  .g-fill-ng .x{text-decoration:line-through;color:var(--ink-faint);}
  .g-fill-ng .a{font-weight:700;color:var(--good);}
  .g-fill-note{margin:6px 0 0;font-size:11.5px;color:var(--ink-faint);}
  .g-cq{margin:0 0 10px;font-size:16px;line-height:1.7;color:var(--ink);}
  .g-cq.en{font-family:var(--serif);}
  .g-copts{display:flex;flex-direction:column;gap:8px;}
  .g-copt{font-family:var(--sans);text-align:left;padding:11px 14px;border-radius:12px;
    border:1px solid var(--line-2);background:var(--card);color:var(--ink);cursor:pointer;
    display:flex;align-items:center;gap:10px;font-size:15px;}
  .g-copt:hover:not(:disabled){border-color:var(--ink-soft);}
  .g-copt:disabled{cursor:default;}
  .g-copt .k{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;
    border:1px solid var(--line-2);border-radius:5px;color:var(--ink-faint);
    font-family:var(--mono);font-size:11.5px;flex:none;}
  .g-copt .lb{flex:1;min-width:0;}
  .g-copt .lb.en{font-family:var(--serif);}
  .g-copt.correct{border-color:var(--good);background:var(--good-t);}
  .g-copt.correct .lb{color:var(--good);font-weight:600;}
  .g-copt.wrong{border-color:var(--bad);background:var(--bad-t);}
  .g-copt.wrong .lb{text-decoration:line-through;color:var(--ink-faint);}
  .g-copt.dim .lb{color:var(--ink-faint);}
  .g-copt .tag{font-size:11.5px;font-weight:700;color:var(--good);flex:none;}
  .g-explain{margin:8px 0 0;font-size:12.5px;line-height:1.7;}
  .g-explain.ok{color:var(--ink-soft);}
  .g-explain.ng{color:var(--bad);}
  .g-ex-mark{flex:none;width:36px;display:flex;justify-content:center;align-items:flex-start;padding-top:2px;}
  .g-mark-o{stroke:var(--good);}
  .g-mark-x{stroke:var(--bad);}
  .g-btn-check{font-family:var(--sans);font-size:12px;color:var(--ink-soft);background:transparent;
    border:1px solid var(--line-2);border-radius:99px;padding:5px 10px;cursor:pointer;white-space:nowrap;}
  .g-btn-check:hover{border-color:var(--ink-soft);color:var(--ink);}

  /* ---- 結果 ---- */
  .g-result{margin-top:20px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 20px;}
  .g-result-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
  .g-result-score{font-family:var(--serif);font-weight:600;font-size:30px;color:var(--root);line-height:1;}
  .g-result-msg{font-size:13.5px;color:var(--ink);flex:1;min-width:200px;}
  .g-result-btns{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap;}

  .g-foot-meta{font-family:var(--mono);font-size:10.5px;color:var(--ink-faint);}
