/* Athena hosted build: the rules (governance.js). One app's rules on the App page's Rules tab; the org-level cards
   under Settings. Styled only through the theme tokens so both themes read. */
.gv-card{min-width:0}
.gv-card .card-h{flex-wrap:wrap;gap:8px 10px}
.gv-host{font-size:11px;color:var(--t3);overflow-wrap:anywhere}
/* the one sentence at the top of the Rules tab: the count leads and carries the receipt on hover (as .ap-sent .num) */
.gv-say{font-size:16px;line-height:1.45;color:var(--t1);margin:0 0 16px;max-width:70ch;cursor:help}
.gv-say .gv-num{font-weight:500;color:var(--t1);cursor:help;border-bottom:1.5px dotted var(--line-strong)}
/* the one grey line under it: why the request waits, and who was told */
.gv-why{font-size:12.5px;color:var(--t3);line-height:1.5;margin:-10px 0 16px;max-width:70ch}
.gv-rules .gv-kv{margin-top:2px}
.gv-kv{display:grid;grid-template-columns:minmax(120px,auto) minmax(0,1fr);gap:7px 16px;font-size:12.5px;margin:0}
.gv-kv .k{color:var(--t3);font-size:11.5px;letter-spacing:.02em;padding-top:1px}
.gv-kv .v{color:var(--t1);min-width:0;overflow-wrap:anywhere;margin:0}
.gv-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.gv-acts .btn{padding:7px 12px;font-size:12.5px}
.gv-acts .btn[disabled]{opacity:.5;cursor:not-allowed}
/* quiet text links: withdraw / decline, "invite one under Settings › People" */
.gv-link{font:inherit;font-size:12.5px;color:var(--t2);background:none;border:0;padding:0;cursor:pointer;border-bottom:1px solid var(--line-strong)}
.gv-link:hover{color:var(--t1)}
.gv-link[disabled]{opacity:.5;cursor:not-allowed}
.gv-quiet{align-items:center;gap:14px}
.gv-pend-wait .gv-link{font-size:12px}
/* the one grey line above the rules table while the model key is missing: what it pauses, and the one way in */
.gv-keyline{font-size:12.5px;color:var(--t3);line-height:1.5;margin:0 0 10px}
.gv-keyline .gv-link{font-size:12.5px;color:var(--t2);white-space:nowrap}
/* Settings: one sentence of state per section, the controls behind "Change ›" */
.gv-state{font-size:15px;line-height:1.45;color:var(--t1);margin:0 0 8px;max-width:70ch}
.gv-state .gv-link{font-size:inherit;color:var(--warn);border-bottom-color:color-mix(in srgb,var(--warn) 50%,transparent)}
/* the one save rule for the page, once in small grey at the foot of Settings (governance.js saveRule) */
.gv-save-rule{font-size:11.5px;color:var(--t3);margin:6px 0 0;line-height:1.5;max-width:70ch}
/* a grey link in the state sentence: a note, not a decision (your own request, waiting on someone else; the way in to History) */
.gv-state .gv-link.gv-grey{color:var(--t2);border-bottom-color:var(--line-strong)}
.gv-state .gv-link.gv-grey:hover{color:var(--t1)}
/* a pending request under the state sentence: its own line, named by its app, no leading dot */
.gv-state .gv-state-row{display:block;margin-top:6px;font-size:13px;line-height:1.5}
.gv-state .gv-state-row .gv-link{font-size:inherit;text-align:left}
/* counts and status words are meta text, not code: mono only for clock times, addresses, hosts and keys */
.gv-card .card-h .count,.pp-card .card-h .count{font-family:inherit;font-size:11.5px}
.gv-host{font-family:inherit}
.gv-host .mono{font-family:var(--mono);font-size:11px}
.gv-list .gv-state{font-family:inherit}
.gv-spendtx{font-size:13.5px;color:var(--t1);margin:0 0 10px;line-height:1.5}
.gv-actnote{margin-top:6px}
.gv-pend-more{margin-top:2px}
/* the request disclosure with Withdraw in plain view beside it */
.gv-pend-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.gv-pend-row>details{flex:1 1 100%}
.gv-pend-row>details:not([open]){flex:0 1 auto}
.gv-pend-row>.btn{padding:6px 12px;font-size:12.5px;align-self:flex-start}
.gv-pend-row>.btn[disabled]{opacity:.5;cursor:not-allowed}
.gv-pend-row>.gv-result{flex-basis:100%;margin-top:0}
/* when the other admins were told (GET /approvals notified_text): grey, after the request sentence */
.gv-notified{color:var(--t3);font-size:12.5px}
.gv-state .gv-notified{font-size:inherit}
/* a phrase whose provenance sits in a tooltip (the request rate: the default, or this app's own cap) */
.gv-tip{cursor:help;border-bottom:1px dotted var(--line-strong)}
.gv-hist-foot{padding:8px 0 2px}
.gv-pend-more summary{cursor:pointer;font-size:12px;color:var(--t2);list-style:none;display:inline-flex;align-items:center;min-height:28px;padding:2px 0}
.gv-pend-more summary::-webkit-details-marker{display:none}
.gv-pend-more summary:hover{color:var(--t1)}
.gv-pend-more[open] summary{margin-bottom:6px}
.gv-pend-more>*+*{margin-top:6px}
.gv-change summary{cursor:pointer;font-size:12.5px;color:var(--t1);list-style:none;display:inline-flex;align-items:center;min-height:32px;padding:4px 12px;border:1px solid var(--line-strong);border-radius:999px;background:var(--raised)}
.gv-change summary::-webkit-details-marker{display:none}
.gv-change summary:hover{color:var(--t1)}
.gv-change[open] summary{margin-bottom:10px}
.gv-stack{display:flex;flex-direction:column;gap:14px;min-width:0}
.gv-stack>.gv-pair{margin-bottom:0}
/* chips: grey ink for plain states (colour law: green only for a verified proof) */
.pj-chip.plain{color:var(--t2);background:var(--elev);border-color:var(--line-2)}
.pj-chip.plain.off{color:var(--t3)}
.pj-dot.plain{background:var(--t3)}
/* history as sentences; each row opens to its exact record on tap */
.gv-log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.gv-log li{border-top:1px solid var(--line);font-size:12.5px}
.gv-log li:first-child{border-top:0}
.gv-log-row summary{display:flex;gap:12px;align-items:baseline;padding:7px 0;cursor:pointer;list-style:none;min-height:32px}
.gv-log-row summary::-webkit-details-marker{display:none}
.gv-log-row summary:hover .gv-log-tx{color:var(--accent-hover)}
.gv-log-tx{color:var(--t1);min-width:0;flex:1;overflow-wrap:anywhere}
.gv-log-at{font-size:11px;color:var(--t3);white-space:nowrap}
.gv-log-det{font-size:11px;color:var(--t3);padding:0 0 8px;overflow-wrap:anywhere;line-height:1.5}
/* a folded row's originals: one line each, the exact record under it */
.gv-log-orig{list-style:none;margin:0;padding:0 0 8px;display:flex;flex-direction:column;gap:6px;font-family:inherit;font-size:12px;color:var(--t2)}
.gv-log-orig li{border:0;font-size:12px}
.gv-log-orig li>.mono{color:var(--t3);font-size:11px}
.gv-log-rec{display:block;font-size:10.5px;color:var(--t3);margin-top:1px}
.gv-hist-more{margin-top:10px}
.btn.danger:hover{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,transparent)}
.gv-note{font-size:12.5px;color:var(--t3);line-height:1.55}
/* what a control just did, right under it: "Not done: <why>" / "Done · <what changed>" (grey: a note, not a decision) */
.gv-result{font-size:12.5px;color:var(--t2);line-height:1.5;margin-top:8px;overflow-wrap:anywhere;min-width:0}
.gv-result:empty{display:none}
.gv-ch-h+.gv-result{margin-top:6px}
.gv-pend-more .gv-result{margin-top:4px}
.gv-sub{font-size:11.5px;color:var(--t3);letter-spacing:.03em;text-transform:uppercase;margin:14px 0 8px}
.gv-form{margin-top:4px}
.gv-fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 12px}
.gv-field{display:flex;flex-direction:column;gap:5px;font-size:11.5px;color:var(--t3);min-width:0}
.gv-field.gv-check{flex-direction:row;align-items:center;gap:8px;color:var(--t1);font-size:12.5px;padding-top:18px}
.gv-in{width:100%;padding:8px 10px;border-radius:var(--r-md);border:1px solid var(--line-2);background:var(--bg);color:var(--t1);font:inherit;font-size:13px;outline:none;transition:border-color .16s;min-width:0}
.gv-in:focus{border-color:var(--accent)}
select.gv-in{appearance:none;-webkit-appearance:none;padding-right:26px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238A8F98' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center}
.gv-days{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:10px}
.gv-days label{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--t2)}
.gv-form input[type=checkbox],.gv-days input{accent-color:var(--accent);width:14px;height:14px}
.gv-request{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:9px}
.gv-request .gv-sub{margin:0;text-transform:none;letter-spacing:0;font-size:12px;color:var(--t2);line-height:1.5}
.gv-request .gv-acts{margin-top:2px}
/* the pending request on the Rules tab: amber = a decision */
.gv-pend{margin-top:14px;padding:12px 14px;border-radius:var(--r-md);border:1px solid color-mix(in srgb,var(--warn) 45%,transparent);background:var(--warn-dim);display:flex;flex-direction:column;gap:7px}
.gv-pend.mine{border-color:var(--line-2);background:var(--elev)}
.gv-pend-h{font-size:13px;font-weight:600;color:var(--t1)}
.gv-pend-r{font-size:12.5px;color:var(--t1);line-height:1.5;overflow-wrap:anywhere}
.gv-pend-r .muted{color:var(--t3)}
.gv-pend-w,.gv-pend-wait{font-size:12px;color:var(--t2);line-height:1.5}
.gv-pend-wait{color:var(--t3)}
/* who was told, beside the Remind control it explains (notified_text, else the org-wide approval notice) */
.gv-pend-told{margin-top:-3px;overflow-wrap:anywhere;cursor:help}
.gv-pend .gv-acts{margin-top:4px}
/* Settings › Safety defaults: one column (the spend ceiling, approvals, the tests, what Athena keeps, history) */
.gv-pair{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-bottom:14px}
.gv-halt{margin-top:14px;padding:10px 12px;border-radius:var(--r-md);background:var(--danger-dim);color:var(--t1);font-size:12.5px;line-height:1.5}
.gv-halt b{color:var(--danger)}
.gv-appr{padding:11px 0;border-top:1px solid var(--line)}
.gv-appr:first-child{border-top:none;padding-top:0}
.gv-appr-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px}
.gv-appr-h b{color:var(--t1)}
.gv-appr-h .pj-chip{margin-left:auto}
.gv-appr-r{font-size:12px;color:var(--t2);margin-top:4px;line-height:1.5;overflow-wrap:anywhere}
.gv-appr-w{font-size:11.5px;color:var(--t3);margin-top:4px}
.gv-appr .gv-acts{margin-top:9px}
.gv-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.gv-list li{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;gap:8px;align-items:center;font-size:12.5px}
.gv-list .gv-body{color:var(--t2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gv-list .gv-when,.gv-list .gv-state{font-size:11px;color:var(--t3)}
/* Settings › Notifications: channel rows, the add-channel form, delivery history behind a tap */
.gv-lead{margin-bottom:12px}
.gv-ch{padding:11px 0;border-top:1px solid var(--line)}
.gv-ch.off .gv-ch-name,.gv-ch.off .gv-ch-kv{opacity:.6}
.gv-ch-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.gv-ch-h .pj-chip{margin-left:0;text-transform:none}
.gv-ch-name{font-size:13px;color:var(--t1);min-width:0;overflow-wrap:anywhere;flex:1 1 120px}
.gv-ch-h .ob-sw{margin-left:auto;cursor:pointer}
.gv-ch-h .gv-host{flex:1 1 160px}
.gv-ch-kv{margin-top:8px;font-size:12px}
/* an email channel on a server with no mail-out: the switch keeps the channel's own state, this grey line says what reaches anyone */
.gv-ch-offnote{margin-top:6px;font-size:12px}
.gv-ch-acts{margin-top:10px;align-items:center}
/* the row's "…" menu: Test and Remove live here, so the row shows two controls (the switch and the level), not four */
.gv-menu-wrap{position:relative;display:inline-block}
.gv-dots{padding:4px 10px;font-size:15px;line-height:1;letter-spacing:.1em;min-width:36px;justify-content:center}
.gv-dots[disabled]{opacity:.5;cursor:not-allowed}
.gv-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:30;min-width:200px;padding:6px;border-radius:var(--r-md);border:1px solid var(--line-2);background:var(--raised);box-shadow:0 8px 24px -12px rgba(0,0,0,.45);display:flex;flex-direction:column;gap:2px}
.gv-menu[hidden]{display:none}
.gv-mi{font:inherit;font-size:12.5px;text-align:left;color:var(--t1);background:none;border:0;border-radius:var(--r-sm);padding:8px 10px;cursor:pointer;min-height:36px}
.gv-mi:hover,.gv-mi:focus-visible{background:var(--elev);outline:none}
.gv-mi.danger{color:var(--danger)}
.gv-mi[disabled]{opacity:.45;cursor:not-allowed}
/* the one level control per channel: its label and the dropdown that shows the current value */
.gv-ch-lvl{display:inline-flex;align-items:center;gap:8px;flex:1 1 200px;min-width:0;font-size:11.5px;color:var(--t3);cursor:help}
.gv-ch-lvl-k{white-space:nowrap}
.gv-ch-acts select.gv-in{width:auto;flex:1 1 150px;padding-top:6px;padding-bottom:6px;font-size:12.5px;cursor:pointer}
.gv-chform{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.gv-chpart{margin-top:10px}
.gv-chpart[hidden]{display:none}
.gv-ta{resize:vertical;min-height:64px;font-family:var(--mono);font-size:12.5px}
.gv-help{font-size:11.5px;color:var(--t3);line-height:1.5;margin-top:6px;overflow-wrap:anywhere}
.gv-more{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.gv-more summary{cursor:pointer;font-size:12.5px;color:var(--t1);list-style:none;display:inline-flex;align-items:center;gap:6px;padding:4px 12px;min-height:32px;border:1px solid var(--line-strong);border-radius:999px;background:var(--raised)}
.gv-more summary::-webkit-details-marker{display:none}
.gv-more summary:hover{color:var(--t1)}
.gv-more[open] summary{margin-bottom:10px}
.gv-hist li{grid-template-columns:auto auto minmax(0,1fr) auto}
.gv-hist .gv-body b{color:var(--t1);font-weight:600}
.gv-state.sent{color:var(--success)}.gv-state.failed{color:var(--danger)}.gv-state.suppressed{color:var(--warn)}
.gv-tok{margin-top:12px}
/* Settings › Integrations: GitHub and Model as two cards */
#settingsIntegrations .gv-card+.gv-card{margin-top:14px}
@media (max-width:560px){
  .gv-kv{grid-template-columns:minmax(0,1fr)}
  .gv-kv .k{margin-top:4px}
  .gv-list li,.gv-hist li{grid-template-columns:auto minmax(0,1fr) auto}
  .gv-list .gv-body,.gv-hist .gv-body{white-space:normal;grid-column:1/-1}
  .gv-field.gv-check{padding-top:0}
  .gv-acts .btn{flex:1 1 auto;justify-content:center}
  .gv-ch-lvl{flex-basis:100%}
  .gv-pend-row>.btn{min-height:44px}
  .gv-say{font-size:15px}
  .gv-log-row summary{flex-wrap:wrap;gap:2px 12px;min-height:44px}
  .gv-log-at{flex-basis:100%}
  /* phones: every control is a 44 px tap target */
  .gv-acts .btn,.gv-link,.gv-in,.gv-more summary,.gv-change summary,.gv-pend-more summary{min-height:44px}
  .gv-days label,.gv-field.gv-check{min-height:44px}
  .gv-ch-h .ob-sw::before{content:"";position:absolute;inset:-13px -7px}
  .gv-dots,.gv-mi{min-height:44px}
  /* the head stays one line: chip · name · switch · "…"; the name gives way, the menu button never drops below */
  .gv-ch-name{flex-basis:40px}
  .gv-menu-wrap{flex:0 0 auto}
}
/* Settings › Safety defaults: what the break-in tests may do, and what Athena keeps (GET /defaults tests_may / retention,
   the API's own statements; the cards exist only when the fields are sent) */
.gv-points{margin:0;padding:0 0 0 18px;font-size:12.5px;color:var(--t1);line-height:1.55;display:flex;flex-direction:column;gap:4px}
.gv-points li{overflow-wrap:anywhere}
.gv-points li::marker{color:var(--t3)}
.gv-tests .gv-spendtx{margin-bottom:8px}
.gv-tests .gv-spendtx[title]{cursor:help}
/* the fix-window rule (GET /defaults fix_due_text), one grey line under the tests_may bullets, inside the disclosure */
.gv-fixdue{display:block;font-size:12px;color:var(--t3);line-height:1.5;margin-top:8px;overflow-wrap:anywhere;cursor:help}
.gv-fixdue .k{color:var(--t2)}
.gv-keeps{font-size:12.5px}
.gv-keeps .v{line-height:1.5}
/* what Athena keeps, as one line with the paragraphs behind "details ▸" */
.gv-keeps-line{margin-top:0;padding-top:0;border-top:0}
.gv-keeps-line summary{font-size:12.5px;color:var(--t2);display:inline;line-height:1.5;overflow-wrap:anywhere}
.gv-keeps-line[open] summary{display:inline-block;margin-bottom:10px}
/* text links inside the state sentence keep the line's height on phones: the 44 px tap target is an invisible hit area, not a tall box */
.gv-state .gv-link,.gv-keyline .gv-link{position:relative}
@media (max-width:560px){
  .gv-state .gv-link,.gv-keyline .gv-link{min-height:0}
  .gv-state .gv-link::before,.gv-keyline .gv-link::before{content:"";position:absolute;inset:-12px -6px}
}

/* r15: remove-this-app, quiet until asked */
.gv-remove{margin-top:22px;padding-top:12px;border-top:1px solid var(--line)}
.gv-remove-lnk{font:inherit;font-size:12.5px;color:var(--t3);background:none;border:0;padding:0;cursor:pointer;border-bottom:1px solid var(--line-strong)}
.gv-remove-lnk:hover{color:var(--t1)}
.gv-remove-q{margin:0 0 10px;font-size:13px;color:var(--t2);line-height:1.5;max-width:60ch}
@media (max-width: 720px){ .gv-remove-lnk{min-height:44px;display:inline-flex;align-items:center} }

/* r15: the one emphasised (neutral) action on the Rules request row */
.btn.emph{color:var(--t1);border-color:var(--t2)}
.btn.emph:hover{border-color:var(--t1)}

/* r16: the digest hour, one select under the policy sentence */
.gv-digest{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:8px 0 12px;font-size:13px;color:var(--t2)}
.gv-digest select{min-height:32px}
.gv-help-inline{font-size:12px;color:var(--t3)}
