/* Approvals (src/governance.js): the approval card shared by /approve/ (a signed link) and the dashboard inbox.
   Everything is scoped under .apr so it never leaks into the dashboard's own styles. Same palette as the dashboard. */
.apr{--a-bg:#EEF1F6;--a-surface:#fff;--a-sunk:#E4E9F1;--a-ink:#101B2D;--a-ink2:#25324A;--a-mute:#55627A;--a-line:#D3DBE7;
  --a-wire:#2447F5;--a-wire-soft:rgba(36,71,245,.12);--a-ok:#0B7A4B;--a-ok-soft:#E3F3EA;--a-no:#9A2B00;--a-no-soft:#FDECE6;
  --a-warn:#8A4B00;--a-warn-soft:#FFF6DA;--a-r:14px;
  font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:var(--a-ink)}
.apr *{box-sizing:border-box}
.apr-card{background:var(--a-surface);border:1px solid var(--a-line);border-radius:18px;box-shadow:0 1px 2px rgba(16,27,45,.05),0 8px 24px -16px rgba(16,27,45,.18)}
.apr-card+.apr-card{margin-top:16px}
.apr-head{padding:16px 16px 12px;border-bottom:1px solid var(--a-line)}
.apr-head .row1{display:flex;gap:10px;align-items:flex-start;justify-content:space-between}
.apr-title{margin:0;font:700 18px/1.25 "Bricolage","Bricolage Fallback",system-ui,sans-serif;letter-spacing:-.01em}
.apr-sub{margin:4px 0 0;color:var(--a-mute);font-size:13.5px}
.apr-chip{flex:none;display:inline-flex;align-items:center;gap:6px;font:650 12.5px/1 system-ui,sans-serif;padding:7px 10px;border-radius:999px;white-space:nowrap}
.apr-chip::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.apr-chip.pending{background:var(--a-warn-soft);color:var(--a-warn)}
.apr-chip.approved{background:var(--a-ok-soft);color:var(--a-ok)}
.apr-chip.rejected,.apr-chip.canceled{background:var(--a-no-soft);color:var(--a-no)}
.apr-why{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.apr-why li{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;color:var(--a-ink2)}
.apr-why li svg{flex:none;margin-top:2px;width:15px;height:15px;stroke:var(--a-mute);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.apr-when{margin-top:10px;display:flex;gap:8px;align-items:flex-start;font-size:13.5px;background:var(--a-wire-soft);color:var(--a-ink2);padding:9px 11px;border-radius:10px}
.apr-when.late{background:var(--a-warn-soft);color:var(--a-warn)}
.apr-when svg{flex:none;margin-top:2px;width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.apr-nets{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:14px 16px}
.apr-net{min-width:0;border:1.5px solid var(--a-line);border-radius:var(--a-r);background:#fff;transition:border-color .15s,opacity .15s}
.apr-net.on{border-color:var(--a-ink2)}
.apr-net.off{opacity:.55}
.apr-net.off .apr-body{filter:grayscale(.6)}
.apr-nh{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--a-line)}
.apr-dot{flex:none;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:#fff;font:800 12px/1 system-ui,sans-serif}
.apr-nh .who{min-width:0;flex:1}
.apr-nh .who b{display:block;font-size:14px;line-height:1.2}
.apr-nh .who span{display:block;font-size:12.5px;color:var(--a-mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.apr-tog{flex:none;display:inline-flex;align-items:center;gap:7px;font:600 13px/1 system-ui,sans-serif;color:var(--a-ink2);cursor:pointer;user-select:none;min-height:36px}
.apr-tog input{position:absolute;opacity:0;width:1px;height:1px}
.apr-tog .sw{width:38px;height:22px;border-radius:999px;background:var(--a-line);position:relative;transition:background .15s}
.apr-tog .sw::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .15s}
.apr-tog input:checked+.sw{background:var(--a-ok)}
.apr-tog input:checked+.sw::after{transform:translateX(16px)}
.apr-tog input:focus-visible+.sw{outline:2px solid var(--a-wire);outline-offset:2px}
.apr-body{padding:12px}
.apr-ttl{font-weight:700;margin:0 0 6px}
.apr-text{margin:0;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere;font-size:14.5px;line-height:1.5}
.apr-text .l{color:var(--a-wire);text-decoration:underline;text-underline-offset:2px}
.apr-text .h{color:var(--a-wire)}
.apr-text .fold{color:var(--a-mute);font-size:12.5px;display:inline-block;margin:0 2px;padding:0 6px;border:1px dashed var(--a-line);border-radius:6px}
.apr-media{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:6px;margin-top:10px}
.apr-media .m{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--a-sunk)}
.apr-media .m img,.apr-media .m video{width:100%;height:100%;object-fit:cover;display:block}
.apr-media .m .tag{position:absolute;left:5px;bottom:5px;background:rgba(16,27,45,.75);color:#fff;font:650 11px/1 system-ui,sans-serif;padding:4px 6px;border-radius:6px}
.apr-media .more{display:grid;place-items:center;font:650 13px/1 system-ui,sans-serif;color:var(--a-mute)}
.apr-meta{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin-top:10px;font-size:12.5px;color:var(--a-mute)}
.apr-meta .count.over{color:var(--a-no);font-weight:650}
.apr-thread{list-style:none;margin:12px 0 0;padding:0 0 0 14px;border-left:2px solid var(--a-line);display:grid;gap:10px}
.apr-thread li{min-width:0}
.apr-thread .n{display:block;font:650 12px/1.3 system-ui,sans-serif;color:var(--a-mute);margin-bottom:2px}
.apr-thread .count{display:block;margin-top:3px;font-size:12px;color:var(--a-mute)}
.apr-thread .count.over{color:var(--a-no);font-weight:650}
.apr-thread-note{margin:8px 0 0;font-size:12.5px;color:var(--a-mute)}
.apr-meta .edit{margin-left:auto}
.apr-linkbtn{background:none;border:0;padding:6px 0;color:var(--a-wire);font:600 13px/1 system-ui,sans-serif;cursor:pointer;min-height:32px}
.apr-linkbtn:focus-visible{outline:2px solid var(--a-wire);outline-offset:2px;border-radius:4px}
.apr textarea,.apr input[type=datetime-local]{width:100%;font:14.5px/1.5 system-ui,-apple-system,sans-serif;color:var(--a-ink);border:1.5px solid var(--a-line);border-radius:10px;padding:10px 12px;background:#fff}
.apr textarea{min-height:140px;resize:vertical}
.apr textarea:focus,.apr input:focus{outline:none;border-color:var(--a-wire);box-shadow:0 0 0 3px var(--a-wire-soft)}
.apr-acts{position:sticky;bottom:0;z-index:2;border-radius:0 0 17px 17px;background:rgba(255,255,255,.96);backdrop-filter:blur(6px);border-top:1px solid var(--a-line);padding:12px 16px calc(12px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px}
.apr-acts .row{display:flex;gap:8px}
.apr-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 16px;border-radius:12px;border:0;cursor:pointer;font:700 15px/1.1 system-ui,-apple-system,sans-serif}
.apr-btn.ok{background:var(--a-ok);color:#fff}
.apr-btn.ok:hover{background:#086a40}
.apr-btn.ghost{background:#fff;color:var(--a-ink);border:1.5px solid var(--a-line);font-weight:650}
.apr-btn.no{background:var(--a-no);color:#fff}
.apr-btn[disabled]{opacity:.55;cursor:not-allowed}
.apr-btn:focus-visible{outline:3px solid var(--a-wire);outline-offset:2px}
.apr-more{display:flex;flex-wrap:wrap;gap:4px 16px;justify-content:center}
.apr-panel{display:flex;flex-direction:column;gap:8px}
.apr-panel label{font:650 13px/1.3 system-ui,sans-serif;color:var(--a-ink2)}
.apr-msg{font-size:13.5px;min-height:0}
.apr-msg.err{color:var(--a-no)}
.apr-done{padding:16px;display:flex;gap:12px;align-items:flex-start}
.apr-done svg{flex:none;width:26px;height:26px;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.apr-done.good svg{stroke:var(--a-ok)} .apr-done.bad svg{stroke:var(--a-no)}
.apr-done b{display:block;font-size:15.5px;margin-bottom:2px}
.apr-done p{margin:0;color:var(--a-ink2);font-size:14px}
.apr-done a{color:var(--a-wire)}
.apr-res{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13.5px}
@media (min-width:860px){
  .apr-head{padding:20px 22px 14px}
  .apr-nets{grid-template-columns:repeat(2,minmax(0,1fr));padding:18px 22px;gap:14px}
  .apr-nets.one{grid-template-columns:minmax(0,1fr)}
  .apr-acts{position:static;flex-direction:row;align-items:center;justify-content:space-between;padding:14px 22px;background:var(--a-surface)}
  .apr-acts .row{flex:0 0 auto}
  .apr-acts .apr-btn{flex:0 0 auto;min-width:170px}
  .apr-more{justify-content:flex-start;margin-right:auto;margin-left:6px}
  .apr-panel{flex:1}
}
/* the standalone page (/approve/) */
body.apr-page{margin:0;background:#EEF1F6;min-height:100vh;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-text-size-adjust:100%}
.apr-top{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;max-width:980px;margin:0 auto}
.apr-brand{display:inline-flex;align-items:center;gap:8px;color:#101B2D;text-decoration:none;font:800 16px/1 "Bricolage","Bricolage Fallback",system-ui,sans-serif}
.apr-brand img{border-radius:7px}
.apr-lock{display:inline-flex;align-items:center;gap:6px;font:600 12.5px/1 system-ui,sans-serif;color:#55627A}
.apr-lock svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.apr-main{max-width:980px;margin:0 auto;padding:4px 12px 24px}
.apr-intro{margin:6px 4px 14px;color:#25324A;font-size:14.5px}
.apr-intro h1{margin:0 0 4px;font:800 24px/1.2 "Bricolage","Bricolage Fallback",system-ui,sans-serif;letter-spacing:-.02em;color:#101B2D}
.apr-state{background:#fff;border:1px solid #D3DBE7;border-radius:18px;padding:22px 18px;text-align:center;color:#25324A}
.apr-state b{display:block;font-size:17px;color:#101B2D;margin-bottom:6px}
.apr-pagefoot{max-width:980px;margin:0 auto;padding:0 16px 32px;color:#55627A;font-size:12.5px;text-align:center}
.apr-pagefoot a{color:#55627A}
@font-face{font-family:"Bricolage";src:url(/assets/fonts/bricolage.woff2) format("woff2");font-weight:600 800;font-display:swap}
@font-face{font-family:"Bricolage Fallback";src:local("Arial");size-adjust:96%;ascent-override:94%;descent-override:26%;line-gap-override:0%}

/* ---------- the dashboard: Approvals inbox and rules, Activity, limits per key (public/assets/dashboard-governance.js) ---------- */
.gov-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.gov-tabs button{font:650 14px/1 system-ui,sans-serif;color:var(--mute,#55627A);background:var(--surface,#fff);border:1.5px solid var(--line,#D3DBE7);border-radius:999px;padding:10px 14px;min-height:40px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.gov-tabs button[aria-selected="true"]{color:#fff;background:var(--ink,#101B2D);border-color:var(--ink,#101B2D)}
.gov-tabs button span:empty{display:none}
.gov-tabs button span{font-size:12px;background:var(--buy,#FFD43B);color:var(--buy-ink,#1A1300);border-radius:99px;padding:2px 7px}
#aprList .gov-apr+.gov-apr{margin-top:16px}
.gov-rule{display:flex;flex-direction:column;gap:14px}
.gov-rule+.gov-rule{margin-top:16px}
.gov-rule-h{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.gov-rule-h h3{margin:0}
.gov-rule fieldset,.gov-guard fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.gov-rule legend,.gov-guard legend{font:700 14px/1.3 system-ui,sans-serif;color:var(--ink,#101B2D);padding:0;margin-bottom:6px}
.gov-rule .muted,.gov-guard .muted{font-weight:400}
.gov-check{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.4;cursor:pointer;min-height:28px}
.gov-check input{margin-top:2px;width:18px;height:18px;flex:none;accent-color:var(--ink,#101B2D)}
.gov-chips{display:flex;flex-wrap:wrap;gap:6px}
.gov-chip{position:relative;cursor:pointer}
.gov-chip input{position:absolute;opacity:0;width:1px;height:1px}
.gov-chip span{display:inline-flex;align-items:center;min-height:34px;padding:7px 12px;border-radius:999px;border:1.5px solid var(--line,#D3DBE7);background:var(--surface,#fff);font:600 13px/1 system-ui,sans-serif;color:var(--ink2,#25324A)}
.gov-chip input:checked+span{background:var(--ink,#101B2D);border-color:var(--ink,#101B2D);color:#fff}
.gov-chip input:focus-visible+span{outline:2px solid var(--wire,#2447F5);outline-offset:2px}
.gov-lbl{display:block;font-size:14px;color:var(--ink2,#25324A);line-height:1.5}
.gov-lbl input[type=number]{width:96px;display:inline-block;margin:0 4px;min-height:38px;padding:6px 10px;border:1.5px solid var(--line,#D3DBE7);border-radius:10px;font:inherit}
.gov-rule textarea,.gov-guard textarea{width:100%;font:14px/1.5 system-ui,sans-serif;border:1.5px solid var(--line,#D3DBE7);border-radius:10px;padding:9px 11px;resize:vertical}
.gov-row{flex-direction:row!important;flex-wrap:wrap;gap:8px 22px!important}
.gov-lock{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:var(--warn-soft,#FFF6DA);border:1px solid var(--warn-line,#EFCB6B);color:var(--warn,#8A4B00);border-radius:12px;padding:10px 12px;font-size:14px}
.gov-lock .btn{text-decoration:none}
.gov-filters{display:flex;flex-wrap:wrap;gap:8px 12px;margin:0 0 14px}
.gov-f{display:flex;flex-direction:column;gap:4px;font:600 12.5px/1 system-ui,sans-serif;color:var(--mute,#55627A);flex:1 1 140px;min-width:0}
.gov-f select,.gov-f input{min-height:40px;border:1.5px solid var(--line,#D3DBE7);border-radius:10px;padding:6px 10px;font:14px/1.2 system-ui,sans-serif;color:var(--ink,#101B2D);background:var(--surface,#fff);width:100%}
.gov-act{padding:4px 18px}
.gov-act-row{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid var(--line,#D3DBE7)}
.gov-act-row:last-child{border-bottom:0}
.gov-act-row time{flex:none;width:62px;font:700 13px/1.3 system-ui,sans-serif;color:var(--ink,#101B2D)}
.gov-act-row time span{display:block;font-weight:500;color:var(--mute,#55627A)}
.gov-act-main{min-width:0;flex:1}
.gov-act-sum{font-size:14.5px;line-height:1.45;overflow-wrap:anywhere}
.gov-act-meta{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:4px;font-size:12.5px;color:var(--mute,#55627A);align-items:center}
.gov-act-meta .mono{font-family:var(--mono,ui-monospace,monospace);font-size:12px}
.gov-tag{font:700 11.5px/1 system-ui,sans-serif;padding:4px 7px;border-radius:6px;background:var(--sunk,#E4E9F1);color:var(--ink2,#25324A)}
.gov-tag.k-agents{background:#EEE9FF;color:#4B2BB3}.gov-tag.k-approver{background:#E3F3EA;color:#0B7A4B}.gov-tag.k-automations{background:#FFEFE3;color:#8A3A00}.gov-tag.k-dashboard{background:#E6EEFF;color:#2447F5}
.gov-x{font-weight:700;color:var(--ink,#101B2D)}
.gov-key{border-top:1px solid var(--line,#D3DBE7);padding:10px 0}
.gov-key:first-of-type{border-top:0}
.gov-key summary{display:flex;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;cursor:pointer;list-style:none;align-items:center;min-height:36px}
.gov-key summary::-webkit-details-marker{display:none}
.gov-key-n b{display:block;font-size:14.5px}.gov-key-n span{display:block;font-size:12.5px;color:var(--mute,#55627A);font-family:var(--mono,ui-monospace,monospace)}
.gov-key-s{font-size:13px;color:var(--ink2,#25324A);background:var(--wash,#F6F8FB);border:1px solid var(--line,#D3DBE7);border-radius:999px;padding:6px 10px}
.gov-guard{display:flex;flex-direction:column;gap:12px;padding:12px 0 4px}
.qrow .qappr{display:inline-flex;margin-top:6px}
@media (max-width:640px){ .gov-act{padding:2px 14px} .gov-act-row{gap:10px} .gov-act-row time{width:52px} }
/* the dashboard's global label/input rules (dashboard.html: label{display:block;margin:16px 0 6px;font-weight:650},
   input:not(...){width:100%}) must not reach these controls */
.apr-tog{--a-line:#C3CDDC;--a-ok:#0B7A4B;--a-wire:#2447F5;--a-ink2:#25324A}
label.apr-tog,label.gov-check,label.gov-chip,label.gov-f{margin:0}
label.apr-tog,label.gov-check,label.gov-chip{font-weight:500}
label.apr-tog{display:inline-flex;font-weight:600}
label.gov-check{display:flex}
label.gov-lbl{margin:0;font-weight:500}
.gov-row .gov-lbl input[type=number]:not([type=checkbox]),.gov-guard .gov-lbl input[type=number]:not([type=checkbox]){width:96px;min-height:38px;display:inline-block;margin:0 4px;padding:6px 10px}
.gov-rule textarea:not([data-x]),.gov-guard textarea:not([data-x]){min-height:72px}
.apr-media .m .play{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
.apr-media .m .play::before{content:"";width:34px;height:34px;border-radius:50%;background:rgba(16,27,45,.72)}
.apr-media .m .play::after{content:"";position:absolute;border-left:11px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent;margin-left:3px}
