/* ============================================================
   GuardCircle — "Quiet Guardianship" design system
   Warm paper field · ink structure · one living emerald ·
   alarm is a last resort. Large type & targets are brand, not
   compromise: this interface serves eyes of every age.
   ============================================================ */
:root{
  --ink:#101418;--ink-2:#49535E;--paper:#F7F4EE;--surface:#FFFFFF;
  --line:rgba(16,20,24,.13);--line-strong:rgba(16,20,24,.28);
  --em:#0E7C4A;--em-2:#14A15E;--em-bg:#E9F5EE;
  --check:#8A4B00;--check-bg:#FBF0DC;
  --stop:#A11A1A;--stop-bg:#FBE9E7;
  --info:#1E4B94;--info-bg:#E9F0FB;
  --radius:18px;--radius-s:12px;--tap:56px;
  --shadow-1:0 1px 2px rgba(16,20,24,.05),0 1px 1px rgba(16,20,24,.03);
  --shadow-2:0 10px 30px -12px rgba(16,20,24,.22);
  --grad-em:linear-gradient(135deg,#14A15E,#0E7C4A);
}
*{box-sizing:border-box;}
body{margin:0;font-family:'Outfit',"Segoe UI",system-ui,-apple-system,sans-serif;
  color:var(--ink);background:var(--paper);line-height:1.5;font-size:19px;
  -webkit-font-smoothing:antialiased;}
:focus-visible{outline:3px solid var(--em);outline-offset:2px;border-radius:8px;}
h1{font-size:1.85rem;margin:0 0 4px;letter-spacing:-0.022em;font-weight:700;}
h2{font-size:1.22rem;margin:0 0 12px;letter-spacing:-0.012em;font-weight:700;}
h3{font-size:1.05rem;margin:0 0 6px;font-weight:700;}
.muted{color:var(--ink-2);}
.hidden{display:none !important;}
button{font-family:inherit;}

/* ---------- header ---------- */
header.app{position:sticky;top:0;z-index:20;background:var(--ink);color:#fff;
  display:flex;align-items:center;gap:14px;padding:13px 20px;flex-wrap:wrap;}
.brand{display:flex;align-items:center;gap:12px;font-weight:700;font-size:1.18rem;letter-spacing:-0.015em;}
.brand .mark{width:34px;height:34px;flex:none;display:block;}
.brand em{font-style:normal;color:var(--em-2);}
.brand small{display:block;font-weight:400;font-size:.68rem;color:#AEB6BE;letter-spacing:.015em;}
.spacer{flex:1;}
.pill{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);color:#DDE3E8;
  padding:7px 13px;border-radius:999px;font-weight:500;font-size:.74rem;letter-spacing:.01em;}
.pill.on{border-color:var(--em-2);color:#CDEBD9;}
.whoami{font-weight:700;font-size:.88rem;background:#fff;color:var(--ink);border-radius:999px;padding:8px 15px;}

main{max-width:1100px;margin:0 auto;padding:28px 20px 90px;}
.grid{display:grid;gap:18px;}
@media(min-width:860px){.grid.cols-2{grid-template-columns:1.1fr .9fr;}}

/* ---------- cards ---------- */
.card{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius);
  padding:22px;margin-bottom:18px;box-shadow:var(--shadow-1);}
.card.soft{border-style:dashed;}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;
  border:2px solid var(--ink);background:var(--ink);color:#fff;
  padding:13px 22px;border-radius:14px;font-weight:700;font-size:1rem;min-height:var(--tap);
  cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease;}
.btn:hover{box-shadow:var(--shadow-2);transform:translateY(-1px);}
.btn:active{transform:translateY(0);}
.btn.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong);}
.btn.go{background:var(--grad-em);border-color:var(--em);}
.btn.stop{background:var(--stop);border-color:var(--stop);}
.btn.check{background:var(--check);border-color:var(--check);}
.btn.small{min-height:44px;padding:9px 15px;font-size:.85rem;border-radius:11px;}
.btn.block{width:100%;}
.btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none;transform:none;}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;}

/* ---------- forms ---------- */
label.field{display:block;font-weight:700;margin:14px 0 6px;font-size:.92rem;}
input,select,textarea{width:100%;font-family:inherit;font-size:1rem;color:var(--ink);
  border:2px solid var(--line-strong);border-radius:var(--radius-s);padding:13px 14px;background:var(--surface);
  transition:border-color .12s ease,box-shadow .12s ease;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--em);box-shadow:0 0 0 4px rgba(14,124,74,.14);}
textarea{min-height:110px;resize:vertical;}

/* ---------- badges ---------- */
.badge{display:inline-block;font-weight:700;font-size:.66rem;padding:4px 10px;border-radius:999px;
  border:1.5px solid var(--ink);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;background:var(--surface);}
.badge.block,.badge.declined,.badge.expired,.badge.frozen{background:var(--stop-bg);color:var(--stop);border-color:var(--stop);}
.badge.check,.badge.pending,.badge.alert{background:var(--check-bg);color:var(--check);border-color:var(--check);}
.badge.info{background:var(--info-bg);color:var(--info);border-color:var(--info);}
.badge.go,.badge.executed,.badge.approved{background:var(--em-bg);color:var(--em);border-color:var(--em);}

/* ---------- banners ---------- */
.banner{border:1.5px solid var(--line);border-left-width:6px;border-radius:14px;
  padding:15px 17px;margin-bottom:14px;display:flex;gap:12px;align-items:flex-start;background:var(--surface);}
.banner .b-ico{font-size:1.4rem;flex:none;}
.banner.go{background:var(--em-bg);border-color:var(--em);}
.banner.check{background:var(--check-bg);border-color:var(--check);}
.banner.stop{background:var(--stop-bg);border-color:var(--stop);}
.banner.info{background:var(--info-bg);border-color:var(--info);}
.banner strong{display:block;}

/* ---------- rows / lists ---------- */
.row{display:flex;align-items:center;gap:14px;padding:13px 0;border-top:1.5px solid var(--line);}
.row:first-child{border-top:0;}
.row .m{flex:1;min-width:0;}
.row .a{font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;}
.a.pos{color:var(--em);}
.empty{color:var(--ink-2);text-align:center;padding:28px 12px;border:2px dashed var(--line-strong);border-radius:var(--radius);background:rgba(255,255,255,.5);}

/* ---------- login ---------- */
.login-wrap{max-width:520px;margin:44px auto;background:var(--surface);border:1.5px solid var(--line);
  border-radius:24px;padding:36px 34px;box-shadow:var(--shadow-2);}
.login-logo{display:flex;flex-direction:column;align-items:center;gap:14px;margin-bottom:22px;text-align:center;}
.login-logo .mark{width:64px;height:64px;}
.login-logo .word{font-size:1.7rem;font-weight:700;letter-spacing:-0.03em;}
.login-logo .word em{font-style:normal;color:var(--em);}
.login-user{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:var(--surface);
  border:2px solid var(--line);border-radius:16px;padding:14px 16px;font-weight:700;font-size:1.05rem;
  cursor:pointer;margin-bottom:10px;color:var(--ink);transition:border-color .12s ease,background .12s ease;}
.login-user:hover{border-color:var(--line-strong);}
.login-user[aria-pressed="true"]{border-color:var(--em);background:var(--em-bg);box-shadow:0 0 0 1px var(--em) inset;}
.avatar{width:46px;height:46px;border-radius:50%;background:var(--grad-em);color:#fff;display:grid;place-items:center;font-weight:700;flex:none;}
.login-user small{display:block;font-weight:400;color:var(--ink-2);font-size:.8rem;}

/* ---------- balances ---------- */
.balances{display:grid;gap:14px;grid-template-columns:1fr 1fr;margin-bottom:20px;}
.bal{border:2px solid var(--em);background:linear-gradient(150deg,#EDF7F1,#FBFDF9);border-radius:var(--radius);
  padding:16px 18px;box-shadow:var(--shadow-1);}
.bal .k{font-weight:700;color:var(--em);text-transform:uppercase;letter-spacing:.07em;font-size:.7rem;}
.bal .n{font-size:2.05rem;font-weight:800;letter-spacing:-0.03em;font-variant-numeric:tabular-nums;}
.bal.reserve{border-color:var(--info);background:linear-gradient(150deg,#EDF2FB,#FBFCFE);}
.bal.reserve .k{color:var(--info);}
.bal.frozen{border-color:var(--stop);background:linear-gradient(150deg,#FBECEA,#FEFBFB);}
.bal.frozen .k,.bal.frozen .n{color:var(--stop);}

/* ---------- big owner actions ---------- */
.big-actions{display:grid;gap:13px;}
@media(min-width:700px){.big-actions{grid-template-columns:1fr 1fr;}}
.big-btn{display:flex;align-items:center;gap:15px;width:100%;text-align:left;background:var(--surface);
  border:2px solid var(--line);border-radius:var(--radius);padding:15px 17px;font-size:1.06rem;font-weight:700;
  min-height:var(--tap);cursor:pointer;color:var(--ink);box-shadow:var(--shadow-1);
  transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease;}
.big-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-2);border-color:var(--line-strong);}
.big-btn .ico{width:48px;height:48px;border-radius:14px;flex:none;display:grid;place-items:center;
  font-size:1.35rem;border:none;background:var(--paper);}
.big-btn.go .ico{background:var(--em-bg);}
.big-btn.check .ico{background:var(--check-bg);}
.big-btn.info .ico{background:var(--info-bg);}
.big-btn.stop{border-color:rgba(161,26,26,.4);color:var(--stop);}
.big-btn.stop .ico{background:var(--stop-bg);}
.big-btn small{display:block;font-weight:400;font-size:.8rem;color:var(--ink-2);}

/* ---------- requests ---------- */
.req{border:1.5px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:13px;
  background:var(--surface);box-shadow:var(--shadow-1);}
.req.hr{border-color:var(--stop);background:var(--stop-bg);}
.req.pend{border-color:var(--check);background:var(--check-bg);}
.req h3{margin:8px 0 3px;}
.req .who{font-size:.82rem;color:var(--ink-2);}
.count{font-variant-numeric:tabular-nums;font-weight:800;}

/* ---------- subnav ---------- */
.subnav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px;}
.subnav button{background:var(--surface);border:1.5px solid var(--line-strong);color:var(--ink);
  padding:10px 17px;border-radius:999px;font-weight:700;font-size:.86rem;min-height:46px;cursor:pointer;
  transition:background .12s ease,color .12s ease;}
.subnav button:hover{border-color:var(--ink);}
.subnav button[aria-pressed="true"]{border-color:var(--ink);background:var(--ink);color:#fff;}

/* ---------- audit ---------- */
.audit-row{display:flex;gap:12px;padding:11px 0;border-top:1.5px solid var(--line);font-size:.88rem;align-items:baseline;}
.audit-row:first-child{border-top:0;}
.audit-row .hash{font-family:'DM Mono',ui-monospace,Menlo,Consolas,monospace;font-size:.66rem;color:var(--ink-2);letter-spacing:.02em;}
.flagged{background:var(--stop-bg);border-radius:8px;padding:2px 7px;color:var(--stop);}

/* ---------- toast / notes ---------- */
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:26px;background:var(--ink);color:#fff;
  border-radius:16px;padding:13px 22px;font-weight:700;z-index:50;box-shadow:var(--shadow-2);max-width:92%;}
.note{color:var(--ink-2);font-size:.8rem;border-top:1.5px solid var(--line);padding-top:14px;margin-top:28px;}
.back{background:none;border:0;color:var(--ink);font-weight:700;font-size:.95rem;padding:6px 0;cursor:pointer;}
ul.plain{margin:.2em 0 .6em;padding-left:1.2em;}
ul.plain li{margin-bottom:.35em;}
.flag{background:var(--stop-bg);border:1.5px solid var(--stop);color:var(--stop);border-radius:8px;padding:1px 7px;font-weight:700;}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{transition:none !important;animation:none !important;}
}

/* ---------- institution KPI tiles ---------- */
.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:14px 0 20px;}
.stat{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius-s);padding:14px 16px;}
.stat .k{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);}
.stat .v{font-size:1.55rem;font-weight:800;margin-top:2px;font-variant-numeric:tabular-nums;}
.stat.hero{border-color:var(--em);background:var(--em-bg);}
.stat.hero .v{color:var(--em);}
.stat .sub{font-size:.72rem;color:var(--muted);margin-top:2px;}
.hh-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
