/* EA UI consistency · 20260923-ui1
 * Presentation only. Loaded AFTER each page's existing styles.
 * Preserve page palettes, serif reading text, graph geometry and all data.
 * Sizes describe roles, not one indiscriminate rule for every button.
 */
body[data-ea-ui]{
  --ea-ui-font:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --ea-ui-mono:'JetBrains Mono',ui-monospace,'SFMono-Regular',Consolas,monospace;
  --ea-ui-radius:8px;
  --ea-ui-action-height:40px;
  --ea-ui-compact-height:32px;
  --ea-ui-mini-height:26px;
  --ea-ui-icon-size:32px;
  --ea-ui-gap:8px;
  --ea-ui-border:var(--line,var(--m-line,#273649));
  --ea-ui-surface:var(--panel,var(--m-panel,#0f1824));
  --ea-ui-hover:var(--line2,var(--m-gold,#65778d));
  --ea-ui-focus:var(--gold,var(--m-gold,var(--a,#8ec5ff)));
}
body[data-ea-ui][data-ea-theme="light"]{
  --ea-ui-border:var(--hair,#e0d3b4);
  --ea-ui-surface:var(--panel,#fffaf0);
  --ea-ui-hover:var(--dark,#a16207);
  --ea-ui-focus:var(--dark,#a16207);
}

/* A single UI font. Do not apply it to body, titles, reader text or SVG labels. */
body[data-ea-ui] :is(button,input,select,textarea,.ea-action,.file-label){
  font-family:var(--ea-ui-font);
  box-sizing:border-box;
}
body[data-ea-ui] button{
  font-size:13px;
  font-weight:500;
  line-height:20px;
  letter-spacing:normal;
  text-transform:none;
}

/* Site navigation: identical geometry for links and buttons in the same menu. */
body[data-ea-ui] :is(.modes .mode,.header-actions nav a,.m-entry-nav a,
  .dyad-home-navigation a,#homeBtn,#backQuestionnaire,header>a.ea-dyad-nav-link,
  .ea-ui-nav-item){
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-height:var(--ea-ui-compact-height);
  height:auto;
  width:auto;
  min-width:0;
  padding:5px 11px;
  border-radius:var(--ea-ui-radius);
  font:500 13px/20px var(--ea-ui-font);
  letter-spacing:normal;
  text-transform:none;
  white-space:nowrap;
  text-decoration:none;
  box-sizing:border-box;
}
body[data-ea-ui] :is(.modes,.header-actions nav,.m-entry-nav,.dyad-home-navigation){
  gap:var(--ea-ui-gap);
  align-items:center;
  flex-wrap:wrap;
}
body[data-ea-ui] :is(.m-entry-nav a,.dyad-home-navigation a){
  border:1px solid var(--ea-ui-border);
  background:transparent;
}
body[data-ea-ui] :is(.m-entry-nav a,.dyad-home-navigation a):hover{
  border-color:var(--ea-ui-hover);
  text-decoration:none;
}
body[data-ea-ui] .dyad-home-navigation{opacity:1}

/* Standard actions: all peers in an action row have one height and baseline. */
body[data-ea-ui] :is(.actions>button,.actions>.file-label,.actions>.ea-action,
  .btn-row>button,.rp-nav>button,.sg-filter-actions>button,.pg-footer>button,.pg-footer>a,
  .corpus-search-controls>button,.ea-file-dialog button,
  .control-row>button,.m-node-actions button,.m-reader-nav button,
  .m-route-nav button,.m-sheet-footer button,.m-primary-ghost,.m-secondary-ghost,
  .m-extra-link,#analyzeBtn,#resetLab,#pgFeedbackForm>button){
  min-height:var(--ea-ui-action-height);
  height:auto;
  padding:9px 13px;
  border-radius:var(--ea-ui-radius);
  font:500 14px/20px var(--ea-ui-font);
  letter-spacing:normal;
  text-transform:none;
  white-space:normal;
}
body[data-ea-ui] :is(.actions,.btn-row,.rp-nav,.sg-filter-actions,.pg-footer,.dyad-graph-tools){gap:var(--ea-ui-gap)}
body[data-ea-ui] .actions{align-items:center}
body[data-ea-ui] :is(.actions>.primary,.control-row>.primary,button.answer){font-weight:600}

/* Toolbars, tabs and language selectors deliberately remain compact. */
body[data-ea-ui] :is(.tool-btn,#pgNav button,.dyn-time-actions button,.m-segment button,
  .m-recent-tabs button,.digest-languages a,.quiet-button,.m-back){
  min-height:var(--ea-ui-compact-height);
  height:auto;
  border-radius:var(--ea-ui-radius);
  padding:5px 10px;
  font:500 13px/20px var(--ea-ui-font);
  letter-spacing:normal;
  text-transform:none;
  box-sizing:border-box;
}
body[data-ea-ui] :is(#tools,#graphSessionBar,#pgNav,.dyn-time-actions,.digest-languages){gap:var(--ea-ui-gap)}
body[data-ea-ui] #tools{align-items:center}
body[data-ea-ui] #graphSessionBar{font:400 13px/20px var(--ea-ui-font)}
body[data-ea-ui] #graphViewSwitch{font:400 13px/20px var(--ea-ui-font);border-radius:var(--ea-ui-radius)}
body[data-ea-ui] .m-segment{border-radius:var(--ea-ui-radius);overflow:hidden}
body[data-ea-ui] .m-segment button{border-radius:0}
body[data-ea-ui] :is(.ea-languages,.languages){gap:4px}
body[data-ea-ui] :is(.ea-languages,.languages,#personalGraphPanel .pg-head) button.ea-language{
  min-height:var(--ea-ui-compact-height);
  height:var(--ea-ui-compact-height);
  min-width:62px;
  width:62px;
  padding:4px 6px;
  border-radius:var(--ea-ui-radius);
  font:500 12px/20px var(--ea-ui-font);
  letter-spacing:.02em;
  text-transform:none;
}
/* Existing personal-graph.css sets 1.5rem!important on ALL header buttons. */
body[data-ea-ui] #personalGraphPanel .pg-head button.ea-language{
  font-size:12px!important;line-height:20px!important;padding:4px 6px!important;
}

/* Text fields: consistent shape and baseline, but keep each page's colors. */
body[data-ea-ui] :is(select,input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=hidden])){
  min-height:var(--ea-ui-action-height);
  height:auto;
  min-width:0;
  max-width:100%;
  padding:8px 10px;
  border-radius:var(--ea-ui-radius);
  font:400 14px/22px var(--ea-ui-font);
  letter-spacing:normal;
}
body[data-ea-ui] textarea{
  min-width:0;
  max-width:100%;
  padding:10px 12px;
  border-radius:var(--ea-ui-radius);
  font:400 14px/1.55 var(--ea-ui-font);
  letter-spacing:normal;
  resize:vertical;
}
body[data-ea-ui] :is(.settings-row label,.control-row label>span,.route-setup-row label>span,
  .topic-wrap>span,.mode-select>span,.corpus-search-controls label){
  font:400 12px/1.4 var(--ea-ui-font);
  letter-spacing:normal;
  text-transform:none;
}
body[data-ea-ui] :is(.settings-row,.control-row,.route-setup-row){gap:var(--ea-ui-gap)}
body[data-ea-ui] #searchWrap #search{min-height:var(--ea-ui-compact-height);padding:4px 10px}
body[data-ea-ui] #dynNormalization{background:var(--panel,#fffaf0);color:var(--text,#231a0d);border-color:var(--hair,#e0d3b4)}

/* Expanders retain their native marker, hierarchy and content typography. */
body[data-ea-ui] :is(.field-box summary,.turn details>summary,.route-turn details>summary,
  .dyad-snapshot-details>summary,#personalGraphPanel summary){
  font:400 12px/1.5 var(--ea-ui-font);
  letter-spacing:normal;
  text-transform:none;
  cursor:pointer;
}
body[data-ea-ui] :is(#theoryRoutes>summary,.digest-nav-fold>summary){
  font:500 14px/1.5 var(--ea-ui-font);
}
body[data-ea-ui][data-ea-page="questionnaire"] .container>details.card>summary{
  font:600 17px/1.45 var(--ea-ui-font);
  min-height:28px;
}
body[data-ea-ui] #personalGraphPanel .pg-title-button{
  min-height:0;padding:0;border-radius:0;font:600 16px/1.4 var(--ea-ui-font);
}

/* Close buttons and small reader tools: one icon frame, no inherited text padding. */
body[data-ea-ui] :is(#closePanel,#pgClose,.sg-filter-close,.rp-close,.m-route-x,
  .m-sheet-head>button,.dyad-snapshot-close){
  display:inline-flex;align-items:center;justify-content:center;
  width:var(--ea-ui-icon-size);min-width:var(--ea-ui-icon-size);
  height:var(--ea-ui-icon-size);min-height:var(--ea-ui-icon-size);
  padding:0!important;border-radius:var(--ea-ui-radius);
  font:400 22px/1 var(--ea-ui-font)!important;
  letter-spacing:normal;
}
body[data-ea-ui] .m-tool-btn{
  width:40px;min-width:40px;min-height:40px;padding:0;
  border-radius:var(--ea-ui-radius);font:500 15px/1 var(--ea-ui-font);
}

/* Scientific filters are NOT ordinary action buttons. Preserve circles and pills. */
body[data-ea-ui] :is(.sg-filter-btn,#disciplineFilters .discipline-chip,.m-inline-disc){
  width:38px;min-width:38px;height:38px;min-height:38px;flex-basis:38px;
  padding:0;border-radius:50%;font:600 12px/1 var(--ea-ui-mono);letter-spacing:normal;
}
body[data-ea-ui] :is(.m-book-dots button,.m-book-dot){font-family:var(--ea-ui-mono)}
body[data-ea-ui][data-ea-page="dyad"] .chip{
  font:400 11px/16px var(--ea-ui-font);padding:3px 8px;border-radius:999px;
}

/* Small per-turn "graph"/export links remain secondary, not full-size buttons. */
body[data-ea-ui] :is(a.dyad-graph-link,.dyad-graph-download,.route-retry){
  display:inline-flex;align-items:center;gap:4px;
  min-height:var(--ea-ui-mini-height);height:auto;padding:3px 7px;
  border-radius:6px;font:500 11px/18px var(--ea-ui-font);
  letter-spacing:normal;text-transform:none;
}
body[data-ea-ui] .dyad-snapshot-panel .dyad-snapshot-button{
  min-height:var(--ea-ui-mini-height)!important;height:auto;
  padding:3px 7px!important;border-radius:6px;
  font:500 11px/18px var(--ea-ui-font)!important;
  letter-spacing:normal;text-transform:none;
}
body[data-ea-ui] .dyad-snapshot-panel .dyad-node-link{
  min-height:20px!important;padding:1px 3px!important;
  font:400 11px/18px var(--ea-ui-font);border-radius:4px;
}
body[data-ea-ui] .dyad-snapshot-panel .dyad-snapshot-close{
  width:var(--ea-ui-icon-size)!important;min-height:var(--ea-ui-icon-size)!important;
  padding:0!important;font:400 22px/1 var(--ea-ui-font)!important;
}

/* DYAD's route selector must have room for its label; no engine/layout redesign. */
body[data-ea-ui][data-ea-page="dyad"] .control-row{
  display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--ea-ui-gap);
}
body[data-ea-ui][data-ea-page="dyad"] .control-row>label{flex:1 1 86px;min-width:0}
body[data-ea-ui][data-ea-page="dyad"] .control-row>label:has(#routeBasis){flex:2.4 1 260px}
body[data-ea-ui][data-ea-page="dyad"] .control-row>#start{flex:2 1 180px}
body[data-ea-ui][data-ea-page="dyad"] .control-row>#stop{flex:0 1 100px;min-width:88px}
body[data-ea-ui][data-ea-page="dyad"] .control-row label>span{min-height:17px;margin-bottom:6px}
body[data-ea-ui][data-ea-page="dyad"] .quiet-button{font-size:12px;line-height:20px}
body[data-ea-ui][data-ea-page="dyad"] .panel-tools{align-items:center;gap:var(--ea-ui-gap)}

/* Keyboard focus and disabled affordance are consistent in both palettes. */
body[data-ea-ui] :is(button,a,input,select,textarea,summary):focus-visible{
  outline:2px solid var(--ea-ui-focus);outline-offset:3px;
}
body[data-ea-ui] button:disabled{cursor:not-allowed}
body[data-ea-ui] :is(.control-row>button,.actions>button,.tool-btn,.quiet-button):disabled{opacity:.45}
body[data-ea-ui] :is(button,a,input,select,summary){-webkit-tap-highlight-color:transparent}

@media(max-width:720px){
  body[data-ea-ui]{--ea-ui-action-height:44px;--ea-ui-icon-size:36px}
  body[data-ea-ui] :is(.modes .mode,.header-actions nav a,.m-entry-nav a,
    .dyad-home-navigation a,#homeBtn,#backQuestionnaire,header>a.ea-dyad-nav-link){
    min-height:32px;padding:5px 9px;font-size:13px;line-height:20px;
  }
  body[data-ea-ui] :is(.m-entry-nav,.dyad-home-navigation){gap:6px}
  body[data-ea-ui] :is(select,input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=hidden]),textarea){font-size:16px}
  body[data-ea-ui] #searchWrap #search{font-size:16px;min-height:36px}
  body[data-ea-ui] #tools .tool-btn{min-height:36px;padding:7px 10px;font-size:13px}
  body[data-ea-ui] #personalGraphPanel .pg-footer{gap:8px}
  body[data-ea-ui] #personalGraphPanel .pg-footer :is(button,a){font-size:13px;line-height:20px}
  body[data-ea-ui] .m-bottom-nav button{font:500 12px/1.25 var(--ea-ui-font);min-height:44px}
  body[data-ea-ui] .m-segment button{min-height:36px;padding:7px 9px;font-size:13px}
  body[data-ea-ui] .m-tool-btn{min-height:44px}
  body[data-ea-ui] .m-live-filter-card .m-sheet-footer button{min-height:44px!important;font:500 13px/20px var(--ea-ui-font)!important;border-radius:8px!important}
  body[data-ea-ui][data-ea-page="dyad"] .control-row>label{flex:1 1 calc(50% - 8px)}
  body[data-ea-ui][data-ea-page="dyad"] .control-row>label:has(#routeBasis){flex:1 1 100%}
  body[data-ea-ui][data-ea-page="dyad"] .control-row>#start{flex:2 1 180px}
  body[data-ea-ui][data-ea-page="dyad"] .control-row>#stop{flex:1 1 80px;min-width:0}
  body[data-ea-ui] :is(.dyad-graph-link,.dyad-graph-download){min-height:28px}
}
@media(prefers-reduced-motion:reduce){
  body[data-ea-ui] :is(button,a,input,select,textarea){transition:none!important}
}

/* Personal-graph cards had ID-specific legacy sizing; align their action rows too. */
body[data-ea-ui] #personalGraphPanel .pg-footer :is(button,a),
body[data-ea-ui] #personalGraphPanel #pgFeedbackForm>button{
  min-height:var(--ea-ui-action-height);padding:9px 13px;height:auto;
  border-radius:var(--ea-ui-radius);font:500 14px/20px var(--ea-ui-font);
}
body[data-ea-ui] #personalGraphPanel #pgNav button{
  min-height:var(--ea-ui-compact-height);padding:5px 10px;
  font:500 13px/20px var(--ea-ui-font);border-radius:var(--ea-ui-radius);
}
body[data-ea-ui] :is(.actions>#startBtn,.actions>button.primary,.control-row>#start){font-weight:600}
@media(max-width:720px){
  /* Keep the three page links together; copyright no longer splits that menu. */
  body[data-ea-ui][data-ea-page="graph"] #app>header h1{order:0;flex:1 1 180px}
  body[data-ea-ui][data-ea-page="graph"] #app>header>.ea-languages{order:1;margin-left:auto}
  body[data-ea-ui][data-ea-page="graph"] #app>header :is(#homeBtn,#backQuestionnaire,a.ea-dyad-nav-link){order:2}
  body[data-ea-ui][data-ea-page="graph"] #copyright{order:3;flex:1 1 100%;margin-left:0;white-space:normal}
  body[data-ea-ui][data-ea-page="graph"] #searchWrap{order:4}
}
/* Match the personal-panel close control to the shared icon frame. */
body[data-ea-ui] #personalGraphPanel #pgClose{
  width:var(--ea-ui-icon-size)!important;min-width:var(--ea-ui-icon-size)!important;
  height:var(--ea-ui-icon-size)!important;min-height:var(--ea-ui-icon-size)!important;
  flex:0 0 var(--ea-ui-icon-size);padding:0!important;
}
