/* 语法精炼：全站外壳统一；保留讲义的字体层级、重点色与内容区块，无侧边强调线。 */
.grammar-shell{color:var(--text-main);font-size:14px;line-height:1.8;min-width:0}
.grammar-shell [hidden]{display:none!important}
.grammar-shell [lang=fr],.grammar-shell [lang=en]{font-family:Georgia,"Times New Roman",serif}
.grammar-shell [lang=fr] .gr-zh{font-family:"Noto Sans SC",sans-serif}
.grammar-shell a{color:var(--accent-blue);text-underline-offset:3px}
.grammar-shell .btn-primary{color:#fffdf7;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.grammar-shell button,.grammar-shell .btn-primary{min-height:40px}
.grammar-shell button:disabled{opacity:.55;cursor:default;transform:none}
.grammar-shell :focus-visible{outline:2px solid var(--accent-blue);outline-offset:3px}
.grammar-shell h1{font-size:36px;line-height:1.45;margin:12px 0 14px;letter-spacing:-.02em}
.grammar-shell h2{font-size:24px;line-height:1.5;margin:8px 0 18px}
.grammar-shell h3{font-size:19px;line-height:1.6;margin:26px 0 14px}
.grammar-shell h4{font-size:16px;line-height:1.6;margin:0 0 12px}
.grammar-shell p+p{margin-top:10px}
.gr-muted,.gr-small-note{color:var(--text-sub);font-size:12px;line-height:1.8}
.gr-return{display:flex;gap:10px;align-items:center;margin-bottom:14px}
.gr-return .inner-back-btn{text-decoration:none}
.gr-heading{display:grid;grid-template-columns:1.15fr 1fr;gap:30px;align-items:center;padding:14px 0 28px}
.gr-heading>div>p{font-size:15px;color:var(--text-sub)}
.gr-heading h1 em{font-family:Georgia,serif;font-style:normal;color:var(--accent-blue)}
.gr-hero-example{padding:24px 28px;border:2px solid var(--border);background:var(--bg-card);box-shadow:var(--px-shadow);border-radius:var(--card-r)}
.gr-hero-example>span{font-size:11px;color:var(--text-sub)}
.gr-hero-example p[lang=fr]{font-size:25px;line-height:1.6;margin-top:12px;color:var(--text-main)}
.gr-hero-example b{color:var(--accent-blue)}
.gr-hero-example small{display:block;margin-top:16px;padding-top:12px;border-top:1px dashed var(--border);font-size:11px;color:var(--text-sub)}
.gr-toolbar{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:22px;padding:12px 0;border-top:1px solid var(--border-light);border-bottom:1px solid var(--border-light)}
.gr-toolbar #gr-status{margin-left:auto}
.gr-toggle{display:flex;gap:8px;align-items:center;min-height:40px;font-size:12px;cursor:pointer}
.gr-toggle input{width:17px;height:17px;accent-color:var(--accent-blue)}
.gr-layout{display:grid;grid-template-columns:168px minmax(0,1fr);gap:20px;align-items:start}
.gr-toc-wrap{position:sticky;top:76px}
.gr-toc summary{font-size:13px;font-weight:700;padding:9px 10px;list-style:none;pointer-events:none}
.gr-toc nav{display:grid;gap:2px}
.gr-toc a{display:block;font-size:12px;padding:8px 10px;text-decoration:none;color:var(--text-sub);border-radius:var(--card-r)}
.gr-toc a:hover,.gr-toc a.is-current{background:var(--bg-card2);color:var(--text-main);font-weight:600}
.gr-toc .gr-back-practice{color:var(--accent-blue);margin-top:16px;border-top:1px solid var(--border-light);padding-top:16px}
.gr-body{min-width:0;font-size:16px;line-height:1.85}
.gr-lesson-section{padding:32px;border-bottom:1px solid var(--border-light);scroll-margin-top:76px}
.gr-lesson-section:last-child{border-bottom:0}
.gr-section-index{font-size:11px;letter-spacing:.12em;color:var(--accent-teal);font-weight:700}
.gr-goals{padding-left:20px;line-height:2}
.gr-small-note{margin-top:18px;padding:13px 16px;background:var(--bg-card2)}
.gr-example{margin:18px 0;padding:16px 20px;background:var(--bg-panel);border:0;box-shadow:none}
.gr-example>p[lang=fr],.gr-fr{font-size:22px;line-height:1.65;color:var(--text-main)}
.gr-example>p+p{margin-top:3px;color:var(--text-sub);font-size:13px}
.gr-example small{display:block;margin-top:4px;font-size:12px;color:var(--text-sub)}
.gr-example b,.gr-fr b,.gr-contrast-grid b,.gr-comparison b{font-weight:700;color:var(--accent-blue)}
.gr-example .tts-btn,.gr-rule-card .tts-btn,.gr-contrast-grid .tts-btn{vertical-align:middle;margin-left:8px}
.gr-english-bridge{margin:24px 0;padding:20px 22px;border:1px solid color-mix(in srgb,var(--accent-blue) 35%,var(--border-light));background:color-mix(in srgb,var(--accent-blue) 9%,var(--bg-card));box-shadow:none}
.gr-bridge-label{font-size:13px;font-weight:700;color:var(--accent-blue);margin-bottom:12px}
.gr-english-bridge p{font-size:14px;line-height:1.9}
.gr-english-bridge [lang=en],.gr-english-bridge p[lang=fr]{font-size:19px}
.gr-bridge-boundary{color:var(--text-sub);border-top:1px dashed var(--border);padding-top:12px}
.gr-no-english .gr-english-bridge{display:none}
.gr-table-wrap{overflow:auto;margin:16px 0}
.gr-table-wrap table{width:100%;border-collapse:collapse;font-size:13px}
.gr-table-wrap th,.gr-table-wrap td{padding:10px 12px;border:1px solid var(--border-light);text-align:left}
.gr-table-wrap th{background:var(--bg-card2);font-weight:600}
.gr-table-wrap .gr-zh{color:var(--text-sub);font-size:12px}
.gr-extra{margin:22px 0 0;border:1px dashed var(--border);padding:0 16px;background:var(--bg-panel)}
.gr-extra summary{min-height:44px;padding:11px 0;cursor:pointer;color:var(--text-sub);font-size:13px}
.gr-extra p{font-size:13px;margin-bottom:14px}
.gr-contrast-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:20px 0}
.gr-contrast-grid>div{padding:0;background:none;border:0}
.gr-contrast-grid p[lang=fr]{font-size:21px;margin:10px 0 6px}
.gr-contrast-grid p+p{font-size:13px;margin-top:4px}
.gr-contrast-grid small{font-size:12px;color:var(--text-sub)}
.gr-chip{font-size:11px;color:var(--accent-teal);padding:3px 8px;border:1px solid var(--border);background:var(--bg-panel)}
.gr-comparison{display:grid;grid-template-columns:1fr 20px 1fr;gap:14px;align-items:center;margin:18px 0;padding:18px;background:var(--bg-panel);border:0}
.gr-comparison>div>span,.gr-comparison small{font-size:12px;color:var(--text-sub)}
.gr-comparison p{font-size:20px;line-height:1.7;margin-top:6px}
.gr-arrow{color:var(--text-sub)}
.gr-rule-card{margin:18px 0;padding:20px;border:1px solid var(--border);background:var(--bg-card);box-shadow:none}
.gr-rule-card .gr-fr{margin-top:12px}
.gr-mistake-line{color:var(--accent-rose);font-size:13px;border-top:1px dashed var(--border);padding-top:12px}
.gr-takeaway{margin-top:14px}
.gr-read-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:22px}
.gr-read-row>span{font-size:12px;color:var(--text-sub)}
.gr-source-ref{font-size:11px}
.gr-sources-section>p,.gr-sources-section li{font-size:12px;line-height:1.85}
.gr-sources-section ol{padding-left:20px;margin:14px 0}
.gr-sources-section li+li{margin-top:8px}
#gr-quiz{margin-top:24px}
.gr-quiz-meta{display:flex;justify-content:space-between;color:var(--text-sub);font-size:12px;margin-bottom:16px}
.grammar-shell fieldset{border:0;padding:0;margin:0;min-width:0}
.grammar-shell legend{font-size:14px;font-weight:600;line-height:1.8;width:100%;padding:0}
.gr-stem{font-size:25px;line-height:1.7;margin:18px 0}
.gr-options{display:grid;gap:9px}
.gr-option{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--border);background:var(--bg-inset);border-radius:var(--card-r);cursor:pointer;min-height:46px}
.gr-option input{width:17px;height:17px;accent-color:var(--accent-blue);flex-shrink:0}
.gr-option:has(input:checked){outline:1px solid var(--accent-blue);border-color:var(--accent-blue)}
.gr-option:has(input:disabled){cursor:default}
.gr-option>span[lang=fr]{font-size:21px}
.gr-option small{font-size:11px;margin-left:auto}
.gr-letter{font-size:11px;color:var(--text-sub)}
.gr-option.is-correct{border-color:var(--accent-green)}
.gr-option.is-wrong{border-color:var(--accent-rose)}
.gr-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}
.gr-feedback{padding:20px;margin:20px 0;border:1px solid var(--border);background:var(--bg-panel)}
.gr-feedback.is-correct{background:color-mix(in srgb,var(--accent-green) 8%,var(--bg-card));border-color:var(--accent-green)}
.gr-feedback.is-wrong{background:color-mix(in srgb,var(--accent-rose) 8%,var(--bg-card));border-color:var(--accent-rose)}
.gr-feedback h3{margin:0 0 12px}
.gr-feedback.is-correct h3{color:var(--accent-green)}
.gr-feedback.is-wrong h3{color:var(--accent-rose)}
.gr-feedback-note{font-size:12px;color:var(--text-sub)}
.gr-feedback a{font-size:12px;display:inline-block;margin-top:12px}
.gr-score{font-family:"VT323",monospace;font-size:46px;color:var(--accent-teal);line-height:1.2;margin:16px 0}
.gr-score small{font-size:24px;color:var(--text-sub)}
.gr-review-row{padding:16px 0;border-top:1px solid var(--border-light)}
.gr-review-row a{font-size:12px}
.gr-filters{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:20px 0}
.gr-filters label{display:grid;gap:5px;font-size:12px;color:var(--text-sub)}
.gr-filters label:first-child{flex:1;min-width:180px}
.gr-filters input,.gr-filters select{min-height:40px}
.gr-topic-row{display:flex;gap:20px;align-items:center;justify-content:space-between;padding:22px 0;text-decoration:none;border-top:1px solid var(--border-light);color:var(--text-main)!important}
.gr-topic-row h3{margin:6px 0;font-size:17px}
.gr-topic-row p{font-size:13px;color:var(--text-sub);margin-top:5px}
.gr-enter{color:var(--accent-blue);font-size:13px;white-space:nowrap}
.gr-topic-row:hover h3{text-decoration:underline;text-underline-offset:4px}
.gr-empty{padding:24px 0;color:var(--text-sub)}
.gr-save-notice{color:var(--accent-rose);margin-bottom:14px;font-size:12px}
.gr-course-link{display:inline-block;margin-top:10px}
@media(max-width:1000px){.gr-contrast-grid{grid-template-columns:1fr}.gr-contrast-grid>div+div{padding-top:12px;border-top:1px solid var(--border-light)}}
@media(max-width:800px){.gr-heading{grid-template-columns:1fr;gap:22px}.gr-heading h1 br{display:none}.gr-layout{grid-template-columns:1fr;gap:14px}.gr-toc-wrap{position:static}.gr-toc{border-bottom:1px solid var(--border-light)}.gr-toc summary{pointer-events:auto;cursor:pointer;list-style:revert;padding:12px 0}.gr-toc nav{grid-template-columns:repeat(2,minmax(0,1fr))}.gr-toc .gr-back-practice{margin:8px 0}.gr-lesson-section{padding:25px}.gr-toolbar #gr-status{width:100%;margin:0}}
@media(max-width:480px){.grammar-shell h1{font-size:29px}.grammar-shell h2{font-size:22px}.gr-body{font-size:15px}.gr-lesson-section{padding:24px 18px}.gr-example{padding:15px}.gr-english-bridge,.gr-rule-card,.gr-feedback{padding:17px}.gr-comparison{grid-template-columns:1fr;gap:8px}.gr-comparison>.gr-arrow{transform:rotate(90deg);width:15px}.gr-table-wrap th,.gr-table-wrap td{padding:8px;font-size:12px}.gr-topic-row{display:block}.gr-enter{display:block;margin-top:12px}.gr-filters{gap:10px}.gr-filters label:first-child{flex-basis:100%}.gr-toolbar{gap:12px}.gr-option{padding:12px}.gr-save-notice{overflow-wrap:anywhere}}

/* 完整语法目录：沿用样板的主题分组与卡片层级。 */
.gr-catalog-group{margin-top:30px}
.gr-catalog-group>h3{font-size:18px;margin:0 0 14px}
.gr-topic-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.gr-topic-card{display:flex;flex-direction:column;padding:20px;border:1px solid var(--border-light);background:var(--bg-card,#fff);color:var(--text-main)!important;text-decoration:none;transition:border-color .15s}
.gr-topic-card:hover,.gr-topic-card:focus-visible{border-color:var(--text-main);outline-offset:3px}
.gr-topic-meta{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--text-sub)}
.gr-topic-card h4{font-size:16px;line-height:1.6;margin:12px 0 8px}
.gr-topic-card p{font-size:13px;color:var(--text-sub);line-height:1.8;margin:0 0 20px}
.gr-topic-state{font-size:12px;color:var(--text-sub);margin-top:auto}
.gr-topic-card.is-published{background:var(--blue-light,#f0f5fb)}
.gr-topic-card.is-published .gr-topic-state{color:var(--blue,#315b91)}
.gr-planned{max-width:760px;line-height:1.9}.gr-planned h2{margin:18px 0 12px}.gr-planned .btn-primary{display:inline-block;margin-top:18px}
@media(max-width:1100px){.gr-topic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.gr-topic-grid{grid-template-columns:1fr}.gr-topic-card{padding:18px}.gr-catalog .card-hdr{flex-wrap:wrap;gap:12px}.gr-filters label{max-width:100%}}

/* 目录与主题页沿用讲义的中文 / 法文字体组合。 */
.gr-catalog,.gr-planned{font-family:"Noto Sans SC",sans-serif}
.gr-topic-card [lang=fr],.gr-heading [lang=fr]{letter-spacing:normal;word-spacing:normal}
