/* grammar.css — A5 grammar tools. Only what the Gita Folio components do not cover: the Pāṇini sūtra layout (script
   switch + information filters, both pure CSS via :has), result lists of the analyzer / parts of speech, the word
   frequency table, small spacing for tool forms. Tokens only (design/system/tokens.css); loaded by
   Features/Grammar/Views/_GrammarTool. */

/* ---------- tool head, forms */
/* The phone tool strip is a list of links (ul[role=list] would reset the strip's gutter padding). */
.tool-nav--chips.chips--scroll{list-style:none;margin-top:0;padding-block:2px;padding-inline:var(--gutter)}
.tool-nav--chips>li{display:flex;flex:none}
.tool-head__badge{margin-left:.5rem;vertical-align:.45em;font-size:.8125rem;letter-spacing:0;text-transform:lowercase}
.tool-form,.pos-form,.freq-form,.analyzer{margin-top:var(--s-6)}
.word-well+.word-well,.analyzer-fields>*+*{margin-top:var(--s-5)}
.word-well .field__row{margin-bottom:var(--s-1)}
/* One actions row for every tool form (review round 2): check / select first, then the primary button, all
   left-aligned and bottom-aligned (the button lines up with the select under its label). */
.tool-form__actions{align-items:flex-end;gap:var(--s-3) var(--s-5);margin-top:var(--s-5)}
.search-well__go .field{flex:0 1 16rem}
.js-auto [data-auto-hide]{display:none}
.panini-pick,.analysis-pick{margin-top:var(--s-5)}
.panini-pick .field{flex:1 1 10rem}
.panini-pick .btn,.analysis-pick .btn{align-self:flex-end}
.pos-form>.btn,.freq-form>.btn{margin-top:var(--s-3)}

/* Hint line under a word field: "<hint>. Type in Devanāgarī or IAST. Example: <word> or <iast>" — each example is a
   link with a 44 × 44 px target (a one-glyph word is centred in it) that does not change the line height; inline
   Devanagari keeps its own font and line height. */
.search-well__hint .example,.search-well__hint .scheme{white-space:nowrap}
.search-well__hint .example a{display:inline-flex;align-items:center;justify-content:center;gap:.3em;min-width:var(--tap);min-height:var(--tap);margin-block:-.7rem;padding-inline:.15rem;vertical-align:middle;color:var(--text-muted);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:.22em}
.search-well__hint .example a.iast{font:italic 1.0625rem/1.4 var(--ff-text)}
.search-well__hint .example a:hover{color:var(--accent)}
.search-well__hint [lang=sa]{font:1.125rem/1.6 var(--ff-sanskrit);color:var(--sanskrit)}
.search-well__hint>span+span::before{content:" "}

/* ---------- analyzer: hint, label and second field follow the chosen mode (works without JS) */
.analyzer-hints{margin-top:var(--s-3)}
.analyzer-example{display:none;margin-top:0}
.analyzer .lbl-join{display:none}
.analyzer:has(input[name=mode][value=sandhi]:checked) .lbl-join{display:inline}
.analyzer:has(input[name=mode][value=sandhi]:checked) .lbl-single{display:none}
.analyzer:has(input[name=mode][value=lex]:checked) .analyzer-example[data-mode=lex],
.analyzer:has(input[name=mode][value=mor]:checked) .analyzer-example[data-mode=mor],
.analyzer:has(input[name=mode][value=sansplitall]:checked) .analyzer-example[data-mode=sansplitall],
.analyzer:has(input[name=mode][value=sandhi]:checked) .analyzer-example[data-mode=sandhi],
.analyzer:has(input[name=mode][value=tag]:checked) .analyzer-example[data-mode=tag],
.analyzer:has(input[name=mode][value=nm]:checked) .analyzer-example[data-mode=nm],
.analyzer:has(input[name=mode][value=wtd]:checked) .analyzer-example[data-mode=wtd]{display:block}
.analyzer-second{display:none}
.analyzer:has(input[name=mode][value=sandhi]:checked) .analyzer-second{display:block}
.analyzer .search-well__go{margin-top:var(--s-5)}
.analysis-list{display:grid;gap:var(--s-2);margin:var(--s-4) 0 0;padding-left:1.75rem}
.analysis-list li::marker{font:600 1rem var(--ff-display);color:var(--accent)}
.analysis-list--tags{font:400 var(--fs-ui-sm)/1.6 var(--ff-ui);overflow-wrap:anywhere}
.split{display:inline-flex;flex-wrap:wrap;gap:var(--s-1) var(--s-2)}
.split__w{padding:.05rem .6rem;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);font:var(--fs-deva-sm)/1.7 var(--ff-sanskrit);color:var(--sanskrit)}
.morph{margin-top:var(--s-5)}
.morph__h{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);font-size:var(--fs-h4);margin-bottom:var(--s-2)}
.morph .table-wrap+.table-wrap{margin-top:var(--s-3)}
.word-types{margin-top:var(--s-4)}

/* ---------- inflection tables: from 48rem a fixed layout so the tables of one result line up (row heads 9rem, equal
   number columns); phones keep the natural widths with tighter cells, and the region scrolls sideways if needed. */
@media(min-width:48rem){
  .decl .table{table-layout:fixed;min-width:calc(9rem + (var(--cols,4) - 1) * 7.5rem)}
  .decl .table th:first-child,.decl .table td:first-child{width:9rem}
}
@media(max-width:47.99rem){.decl .table th,.decl .table td{padding-inline:.6rem}}
.decl-h,.conj-sec__h{margin-top:var(--s-6);font-size:var(--fs-h4)}
.decl-h:first-child,.conj-sec:first-child .conj-sec__h{margin-top:var(--s-4)}
.conj-sec__h [lang=sa]{margin-left:.4rem;font:1.125rem/1.6 var(--ff-sanskrit);color:var(--text-subtle)}
.conj-sec .field__label{margin-top:var(--s-4)}
.conj-forms{margin-top:var(--s-4);align-items:center;grid-template-columns:minmax(0,max-content) minmax(0,1fr)}
.conj-forms dt{max-width:20rem}
.conj-forms+.field__hint{margin-top:var(--s-3)}
/* Phones: the participle name above its forms (a long English name never pushes the forms off-screen). */
@media(max-width:39.99rem){
  .conj-forms{grid-template-columns:minmax(0,1fr);row-gap:0}
  .conj-forms dt{max-width:none;margin-top:var(--s-3)}
  .conj-forms dt:first-child{margin-top:0}
  .conj-forms dd{margin-top:var(--s-1)}
}
/* Steps of a derivation link their sūtra: a 44 px target without changing the row height. */
.derivation .vref{display:inline-flex;align-items:center;min-height:var(--tap);min-width:var(--tap);margin-block:-.7rem}
.conj-forms dt [lang=sa]{margin-left:.35rem;font:1.125rem/1.6 var(--ff-sanskrit);color:var(--sanskrit)}
.conj-forms .tag{font:1.125rem/1.5 var(--ff-sanskrit)}
.inflected-as{margin-top:var(--s-4)}
.inflected-as [lang=sa]{font-family:var(--ff-sanskrit);color:var(--sanskrit)}
.table td mark{padding:0 .2rem;border-radius:var(--r-xs);color:var(--sanskrit)}
.table tr.is-final{background:var(--accent-wash);box-shadow:inset 2px 0 0 var(--accent)}
.lemma-links{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-5);margin-top:var(--s-3)}
.lemma-links [lang=sa]{font:1.125rem/1.6 var(--ff-sanskrit)}
.readings{display:grid;gap:.15rem}
.readings .gram{margin-top:0}
/* The shared .modal is a bottom sheet below 40rem; the wider declension dialog only applies above it. */
@media(min-width:40.0625rem){.decl-modal{width:min(40rem,calc(100vw - 2rem))}}
.decl-modal .modal__body{overflow:auto}

/* ---------- Pāṇini */
.sutra{margin-top:var(--s-7);padding-top:var(--s-5);border-top:1px solid var(--text)}
.sutra-head{text-align:center}
.sutra-ref{display:flex;justify-content:center;align-items:baseline;gap:.5rem;color:var(--text-subtle)}
.sutra-ref .ref{font:500 1.25rem/1 var(--ff-display);color:var(--accent);font-variant-numeric:oldstyle-nums}
.sutra-text{margin-top:var(--s-3);font:400 var(--fs-deva-lg)/var(--lh-deva-lg) var(--ff-sanskrit);color:var(--sanskrit);font-synthesis:none;text-wrap:balance}
.sutra-iast{margin-top:var(--s-2);font:italic 400 var(--fs-lead)/1.4 var(--ff-text);color:var(--text-muted)}
.sutra .empty{margin-top:var(--s-4)}
/* Quiet controls: the script switch and, folded, the information filter (checkboxes; all shown by default). */
.sutra-controls{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--s-1) var(--s-6);margin-top:var(--s-5);padding-block:var(--s-2);border-block:1px solid var(--border)}
.sutra-filter{flex:1 1 16rem}
.sutra-filter>summary{display:flex;align-items:center;gap:.5rem;min-height:var(--tap);font:400 var(--fs-ui)/1.35 var(--ff-ui);color:var(--text-muted);cursor:pointer;list-style:none}
.sutra-filter>summary::-webkit-details-marker{display:none}
.sutra-filter>summary::after{content:"+";font:400 1.125rem/1 var(--ff-ui);color:var(--text-subtle)}
.sutra-filter[open]>summary::after{content:"–"}
.sutra-filter>summary:hover{color:var(--accent)}
.sutra-filter fieldset{margin:0 0 var(--s-2);padding:0;border:0}
.sutra-filter__checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:0 var(--s-5)}
.sutra-sec{margin-top:var(--s-6)}
.sutra-sec__h{font-size:var(--fs-h4);margin-bottom:var(--s-2)}
.sutra-trans{font:400 var(--fs-lead)/1.5 var(--ff-text);text-wrap:pretty}
.sutra-trans i,.sutra-de i{font-style:italic}
.sutra-de{margin-top:var(--s-2)}
.sutra-de .label,.sutra-pada .label{margin-right:.4rem;color:var(--text-subtle)}
.sutra-pada{margin-top:var(--s-4);color:var(--text-muted)}
.sutra-words{display:grid;gap:var(--s-4)}
.sutra-word{padding-top:var(--s-3);border-top:1px solid var(--border)}
.sutra-word__text{font:500 1.25rem/1.5 var(--ff-text)}
.sutra-word__text .vref{display:inline-flex;align-items:center;min-height:var(--tap);margin-block:-.6rem;margin-left:.35rem;font:500 1.0625rem/1 var(--ff-display)}
/* The parts of a word: one compact table (a row per part); below 768 px each part is a labelled card. */
.sutra-parts{margin-top:var(--s-2)}
.sutra-parts .table td{vertical-align:baseline}
.sutra-parts .sutra-parts__part{font-weight:500}
.sutra-parts .plus{margin-inline:.3em;color:var(--text-subtle)}
@media(max-width:47.99rem){
  .sutra-parts .table--stack tr{padding-inline:var(--s-3)}
  /* label column, then the value as one run (no flex gaps inside "stem + termination") */
  .sutra-parts .table--stack td{justify-content:flex-start;flex-wrap:wrap;gap:0}
  .sutra-parts .table--stack td::before{flex:0 0 9.5rem;margin-right:var(--s-3);white-space:nowrap}
  .sutra-parts .table--stack td.sutra-parts__part{font:500 1.0625rem/1.5 var(--ff-text)}
  .sutra-parts .table--stack td.sutra-parts__part::before{content:none}
}
@media(max-width:29.99rem){.sutra-parts .table--stack td::before{flex-basis:8.25rem}}
.panini-caption{margin:var(--s-2) 0 var(--s-3)}
.sutra-pager{margin-top:var(--s-7)}
.sk__r{font-style:italic}
.sk__d{display:none;font-family:var(--ff-sanskrit);font-style:normal;color:var(--sanskrit);line-height:1.6}
.panini:has([data-panini-script]:checked) .sk__r{display:none}
.panini:has([data-panini-script]:checked) .sk__d{display:inline}
.panini:has([data-filter-key=trans]:not(:checked)) [data-f=trans],
.panini:has([data-filter-key=linguinfo]:not(:checked)) [data-f=linguinfo],
.panini:has([data-filter-key=sandhiform]:not(:checked)) [data-f=sandhiform],
.panini:has([data-filter-key=sandhiform]:not(:checked)) [data-f=anuvrtti_sandhiform],
.panini:has([data-filter-key=meaningname]:not(:checked)) [data-f=meaningname],
.panini:has([data-filter-key=meaningname]:not(:checked)) [data-f=anuvrtti_meaningname],
.panini:has([data-filter-key=stem]:not(:checked)) [data-f=stem],
.panini:has([data-filter-key=stem]:not(:checked)) [data-f=anuvrtti_stem],
.panini:has([data-filter-key=components]:not(:checked)) [data-f=components],
.panini:has([data-filter-key=lexemename]:not(:checked)) [data-f=lexemename],
.panini:has([data-filter-key=lexemename]:not(:checked)) [data-f=anuvrtti_lexemename],
.panini:has([data-filter-key=anuvrtti]:not(:checked)) [data-f=anuvrtti],
.panini:has([data-filter-key=anuvrtti_linguinfo]:not(:checked)) [data-f=anuvrtti_linguinfo]{display:none}
.panini-books{display:grid;gap:0;border-bottom:1px solid var(--border)}
.panini-books li{display:grid;grid-template-columns:minmax(0,7rem) minmax(0,1fr);align-items:center;gap:var(--s-2) var(--s-4);padding-block:var(--s-3);border-top:1px solid var(--border)}
.panini-books__b{display:inline-flex;align-items:center;min-height:var(--tap);font:var(--fw-medium) var(--fs-h4)/1.2 var(--ff-display)}
.panini-books__b:hover{color:var(--accent)}
@media(max-width:37.49rem){.panini-books li{grid-template-columns:1fr;gap:0 var(--s-4)}}
.derivation{margin-top:var(--s-6)}
.derivation__h{font-size:var(--fs-h4)}
.derivation .table-wrap+.table-wrap{margin-top:var(--s-4)}

/* ---------- parts of speech */
.pos-filter{display:grid;gap:var(--s-3);min-width:0}
.pos-group{min-width:0}
.pos-group__label{margin:0 0 var(--s-1);color:var(--text-subtle)}
.pos-group .chip .pos{color:inherit}
@media(max-width:47.99rem){
  .pos-group .chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-block:2px;margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter);scroll-padding-inline:var(--gutter)}
  .pos-group .chips::-webkit-scrollbar{display:none}
}
.pos-words{display:grid}
.pos-word{padding-block:var(--s-4);border-bottom:1px solid var(--border)}
.pos-word__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem var(--s-3)}
.pos-word__skt{font:var(--fs-deva-sm)/1.6 var(--ff-sanskrit);color:var(--sanskrit)}
.pos-word__head .iast{font-style:italic;font-size:var(--fs-small)}
.pos-word__desc{margin-top:var(--s-1);font-size:var(--fs-small);line-height:1.55;color:var(--text-muted);overflow-wrap:anywhere}
.pos-word__desc mark{padding:0 .15rem;border-radius:var(--r-xs);background:var(--highlight);color:var(--text)}
.pos-word__desc .stem{font-weight:600;font-style:italic;color:var(--text)}
.pos-word__desc .root{font-style:italic;color:var(--accent)}
.pos-word__verses{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .6rem;margin-top:var(--s-2);font:400 var(--fs-ui-sm)/1.6 var(--ff-ui)}
.pos-word__verses .vref{font-size:1.125rem;display:inline-grid;place-items:center;min-width:var(--tap);min-height:var(--tap);margin-block:-.6rem}
.pos-about{margin-top:var(--s-6);padding-top:var(--s-4);border-top:1px solid var(--border)}
/* A disclosure with the same "+" / "–" affordance as the Pāṇini filter; the explanations keep the reading measure. */
.pos-about>summary{min-height:var(--tap);display:flex;align-items:center;gap:.5rem;font:500 var(--fs-ui)/1.3 var(--ff-ui);cursor:pointer;list-style:none}
.pos-about>summary::-webkit-details-marker{display:none}
.pos-about>summary::after{content:"+";font:400 1.125rem/1 var(--ff-ui);color:var(--text-subtle)}
.pos-about[open]>summary::after{content:"–"}
.pos-about>summary:hover{color:var(--accent)}
.pos-about .prose{margin-top:var(--s-3);max-width:var(--measure)}
.pos-about .prose i[lang=sa-Latn]{font-family:var(--ff-text)}
.results-sec .pagination{margin-top:var(--s-5)}

/* ---------- word frequency: one row per word, the meanings in a full-width row under it (shown while the word's
   <details> is open — pure CSS, works without JS) */
.freq-table td{padding-block:.2rem}
.freq-table th{white-space:normal}
.freq-word{display:block}
/* The word may wrap (Devanagari over IAST in a narrow column); the +/– marker sits at the right edge. */
.freq-word>summary{position:relative;display:inline-block;min-height:var(--tap);padding:.55rem 1.25rem .55rem 0;cursor:pointer;list-style:none}
.freq-word>summary::-webkit-details-marker{display:none}
.freq-word>summary::after{content:"+";position:absolute;right:0;top:50%;transform:translateY(-50%);font:400 1rem/1 var(--ff-ui);color:var(--text-subtle)}
.freq-word[open]>summary::after{content:"–"}
.freq-word>summary:hover [lang=sa]{color:var(--accent)}
.freq-word [lang=sa]{margin-right:.4rem;font:1.25rem/1.6 var(--ff-sanskrit);color:var(--sanskrit)}
span.freq-word{min-height:var(--tap);padding-block:.55rem}
.freq-word .iast{font-style:italic;color:var(--text-muted)}
.freq-occ .bar{margin-top:.35rem;min-width:2.5rem}
.freq-table tr.freq-meaning{display:none}
.freq-table tr.freq-row:has(.freq-word[open])+tr.freq-meaning{display:table-row}
.freq-table tr.freq-row:has(.freq-word[open])>td{border-bottom-color:transparent}
.freq-meaning td{padding:0 var(--s-4) var(--s-4);background:var(--surface-muted)}
.freq-table tr.freq-row:has(.freq-word[open])>td{background:var(--surface-muted)}
.freq-senses{max-width:62ch;padding-top:var(--s-2);font:400 var(--fs-small)/1.55 var(--ff-text);color:var(--text);white-space:normal}
.freq-meaning .meta{margin-top:var(--s-1)}
.freq-pos-inline{display:none}
/* Phones: the part of speech moves under the word (its own column and the share % are left out). */
@media(max-width:37.49rem){
  .freq-table .freq-pct,.freq-table .freq-poscol{display:none}
  .freq-pos-inline{display:inline-flex;margin:-.35rem 0 .45rem;font:400 var(--fs-ui-sm)/1.3 var(--ff-ui)}
  .freq-table td,.freq-table th{padding-inline:.5rem}
  .freq-table td:first-child,.freq-table th:first-child{padding-left:var(--s-3)}
}

/* ---------- roots */
.roots-count{margin:var(--s-5) 0 var(--s-3)}
.roots-table td:nth-child(2){white-space:normal}
.roots-table [lang=sa],.roots-table .iast{white-space:normal;overflow-wrap:anywhere}
.root-forms>summary{min-height:var(--tap);display:flex;flex-wrap:wrap;align-items:center;gap:.15rem .5rem;cursor:pointer}
.root-forms ul{margin:var(--s-2) 0;display:grid;gap:.25rem}
