/* Medicina FACIT — paleta do brasão: verde-floresta, dourado e marrom */
:root {
  --g900:#0f2b1f; --g800:#16402e; --g700:#1d5a40; --g600:#25704f; --g100:#e6f0ea; --g50:#f2f7f4;
  --gold:#c9a14a; --gold-l:#ecd596; --gold-d:#9a7424; --brown:#6b3f0e;
  --bg:#f7f3e8; --card:#ffffff; --ink:#1b2a22; --muted:#66756c; --line:#e4dfce;
  --danger:#b3361f; --warn:#b7791f; --ok:#1d6b43; --radius:16px;
  --shadow:0 1px 2px rgba(20,40,30,.06), 0 8px 28px rgba(20,40,30,.08);
  --serif: Georgia, "Times New Roman", serif;
  --sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root { --bg:#0c1712; --card:#13221b; --ink:#eaf1ec; --muted:#9db0a5; --line:#233a2f; --g100:#173326; --g50:#10241b; --shadow:0 8px 28px rgba(0,0,0,.4); }
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin:0; font: 15px/1.55 var(--sans); color:var(--ink); background:var(--bg); }
a { color: var(--g700); text-decoration: none; } a:hover { text-decoration: underline; }
@media (prefers-color-scheme: dark) { a { color: var(--gold-l); } }
h1,h2,h3 { font-family: var(--serif); letter-spacing:-.01em; line-height:1.2; margin:0 0 .5em; }
h1 { font-size: 1.7rem; } h2 { font-size: 1.25rem; } h3 { font-size: 1.05rem; }
.muted { color: var(--muted); } .small { font-size: .85rem; } .center { text-align:center; }
code, .mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size:.88em; }
code { background: var(--g100); padding: .1em .4em; border-radius: 6px; }

/* ---------- botões e campos ---------- */
.btn { display:inline-flex; align-items:center; gap:.45em; padding:.62em 1.1em; border-radius:12px; border:1px solid transparent; cursor:pointer;
  font: 600 .93rem var(--sans); background: linear-gradient(180deg,var(--g700),var(--g800)); color:#fff; text-decoration:none; transition: transform .12s, box-shadow .12s, filter .12s; box-shadow: 0 2px 8px rgba(22,64,46,.25); }
.btn:hover { filter: brightness(1.08); text-decoration:none; transform: translateY(-1px); }
.btn.gold { background: linear-gradient(180deg,#e2c373,var(--gold)); color: #3a2506; box-shadow: 0 2px 8px rgba(154,116,36,.3); }
.btn.ghost { background: transparent; color: var(--g700); border-color: var(--line); box-shadow:none; }
@media (prefers-color-scheme: dark) { .btn.ghost { color: var(--gold-l); } }
.btn.danger { background: linear-gradient(180deg,#c9482f,var(--danger)); }
.btn.sm { padding:.35em .8em; font-size:.82rem; border-radius:9px; }
.btn.block { width:100%; justify-content:center; }
label { display:block; font-weight:600; font-size:.85rem; margin:0 0 .3em; }
input[type=text], input[type=email], input[type=password], input[type=date], input[type=url], input[type=search], input[type=number], select, textarea {
  width:100%; padding:.65em .8em; border:1px solid var(--line); border-radius:11px; background: var(--card); color: var(--ink); font: inherit; }
textarea { min-height: 90px; resize: vertical; }
input:focus, select:focus, textarea:focus { outline: 3px solid color-mix(in srgb, var(--gold) 45%, transparent); border-color: var(--gold); }
.field { margin-bottom: 1rem; } .hint { color: var(--muted); font-size:.8rem; margin-top:.25em; }
.check { display:flex; gap:.55em; align-items:flex-start; font-weight:500; margin:.4rem 0; } .check input { margin-top:.25em; }
.row { display:grid; gap: 0 1rem; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }

/* ---------- cards, tabelas, badges ---------- */
.card { background: var(--card); border:1px solid var(--line); border-radius: var(--radius); padding: 1.4rem; box-shadow: var(--shadow); margin-bottom: 1.2rem; }
.card > h2:first-child, .card > h3:first-child { margin-top:0; }
table { width:100%; border-collapse: collapse; } th,td { text-align:left; padding:.65em .6em; border-bottom:1px solid var(--line); vertical-align: middle; }
th { font-size:.74rem; text-transform: uppercase; letter-spacing:.05em; color: var(--muted); }
tr:hover td { background: color-mix(in srgb, var(--g100) 40%, transparent); }
.tablewrap { overflow-x:auto; }
.badge { display:inline-block; padding:.12em .65em; border-radius:999px; font-size:.74rem; font-weight:700; background: var(--g100); color: var(--g700); }
.badge.ok { background:#dcf3e5; color:#14633c; } .badge.warn { background:#fbeccb; color:#8a5a0a; } .badge.bad { background:#fadad3; color:#8f2a17; } .badge.gold { background:#f4e6bd; color:#6b4a07; }
@media (prefers-color-scheme: dark) { .badge.ok{background:#14402b;color:#9fe3bd}.badge.warn{background:#46350f;color:#f0cf86}.badge.bad{background:#4a1d14;color:#f3b3a5}.badge.gold{background:#463a14;color:#ecd596} }
.flash { padding:.85em 1.1em; border-radius:12px; margin-bottom:1rem; border:1px solid; font-weight:500; }
.flash.ok { background:#e5f6ec; border-color:#a9dcc0; color:#14633c; } .flash.err { background:#fcebe7; border-color:#efb7aa; color:#8f2a17; } .flash.info { background:#fbf3da; border-color:#ecd596; color:#6b4a07; }
@media (prefers-color-scheme: dark) { .flash.ok{background:#14402b;color:#bff0d3} .flash.err{background:#4a1d14;color:#f6c8bd} .flash.info{background:#3d3210;color:#f1dba0} }
.secretbox { font-family: ui-monospace, Menlo, monospace; background: var(--g900); color: var(--gold-l); padding: .9em 1em; border-radius: 12px; word-break: break-all; user-select: all; }

/* ---------- avatar ---------- */
.avatar { width:40px; height:40px; border-radius:50%; object-fit:cover; background: var(--g100); border:2px solid var(--gold-l); flex:none; }
.avatar.lg { width:112px; height:112px; border-width:3px; } .avatar.sm { width:30px; height:30px; border-width:1px; }

/* ---------- layout de autenticação (login/registro) ---------- */
.auth { min-height:100vh; display:grid; grid-template-columns: minmax(320px, 46%) 1fr; }
.auth-hero { position:relative; overflow:hidden; color:#fff; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:2.5rem; text-align:center;
  background: radial-gradient(900px 500px at 20% 0%, rgba(201,161,74,.28), transparent 60%), radial-gradient(700px 500px at 100% 100%, rgba(37,112,79,.7), transparent 60%), linear-gradient(160deg, var(--g900), var(--g800) 60%, var(--g700)); }
.auth-hero::before { content:""; position:absolute; inset:0; opacity:.07; pointer-events:none;
  background-image: repeating-linear-gradient(45deg, #fff 0 1px, transparent 1px 22px), repeating-linear-gradient(-45deg, #fff 0 1px, transparent 1px 22px); }
.auth-hero .crest { position:relative; width: min(250px, 58%); padding: 20px 22px 12px; border-radius: 30px; background: radial-gradient(circle at 50% 35%, #fffdf6, #f3ead2 75%); border: 2px solid var(--gold); box-shadow: 0 18px 50px rgba(0,0,0,.45), inset 0 0 0 4px rgba(201,161,74,.25); }
.auth-hero .crest img { width:100%; display:block; }
.auth-hero h1 { color: var(--gold-l); font-size:1.9rem; margin:1.2rem 0 .3rem; position:relative; }
.auth-hero p { color: rgba(255,255,255,.82); max-width: 340px; margin:0; position:relative; }
.auth-main { display:flex; align-items:center; justify-content:center; padding: 2rem 1.2rem; }
.auth-card { width:100%; max-width: 440px; } .auth-card.wide { max-width: 640px; }
.auth-card h1 { margin-bottom:.2rem; }
@media (max-width: 860px) { .auth { grid-template-columns: 1fr; } .auth-hero { padding: 1.6rem 1rem; } .auth-hero .crest { width:104px; padding:10px 10px 6px; border-radius:20px; } .auth-hero h1 { font-size:1.3rem; margin:.6rem 0 0; } .auth-hero p { display:none; } }

/* ---------- layout de aplicação ---------- */
.topbar { display:flex; align-items:center; gap:1rem; padding:.7rem 1.2rem; background: linear-gradient(90deg,var(--g900),var(--g800)); color:#fff; border-bottom:3px solid var(--gold); position:sticky; top:0; z-index:20; }
.topbar .brand { display:flex; align-items:center; gap:.7rem; color:#fff; font: 700 1.05rem var(--serif); text-decoration:none; } .topbar .brand img { height:38px; padding:2px 4px; border-radius:10px; background:#f7f0dc; }
.topbar nav { margin-left:auto; display:flex; gap:.3rem; align-items:center; flex-wrap:wrap; }
.topbar nav a { color: rgba(255,255,255,.9); padding:.4em .8em; border-radius:9px; font-weight:600; font-size:.9rem; text-decoration:none; } .topbar nav a:hover, .topbar nav a.on { background: rgba(255,255,255,.14); color:#fff; }
.topbar .who { display:flex; align-items:center; gap:.5rem; margin-left:.6rem; }
.container { max-width: 1040px; margin: 0 auto; padding: 1.6rem 1.2rem 3rem; }

.admin { display:grid; grid-template-columns: 236px 1fr; min-height: calc(100vh - 62px); }
.side { background: var(--g900); padding: 1.2rem .8rem; position: sticky; top:62px; align-self:start; height: calc(100vh - 62px); overflow-y:auto; }
.side a { display:flex; gap:.6rem; align-items:center; padding:.6em .8em; border-radius:11px; color: rgba(255,255,255,.82); font-weight:600; text-decoration:none; margin-bottom:.2rem; }
.side a:hover { background: rgba(255,255,255,.08); color:#fff; } .side a.on { background: linear-gradient(90deg, rgba(201,161,74,.28), rgba(201,161,74,.08)); color: var(--gold-l); box-shadow: inset 3px 0 0 var(--gold); }
.side .sep { color: rgba(255,255,255,.4); font-size:.7rem; text-transform: uppercase; letter-spacing:.08em; margin: 1rem .8rem .4rem; }
.admin main { padding: 1.6rem; min-width:0; } .admin main .inner { max-width: 1100px; }
@media (max-width: 860px) { .admin { grid-template-columns: 1fr; } .side { position:static; height:auto; display:flex; flex-wrap:wrap; gap:.2rem; padding:.6rem; } .side .sep { display:none; } .side a { margin:0; padding:.4em .7em; } }

.stats { display:grid; grid-template-columns: repeat(auto-fit,minmax(140px,1fr)); gap:1rem; margin-bottom:1.2rem; }
.stat { background: var(--card); border:1px solid var(--line); border-left:4px solid var(--gold); border-radius:14px; padding:1rem 1.2rem; box-shadow: var(--shadow); }
.stat b { display:block; font: 700 1.9rem var(--serif); color: var(--g700); } @media (prefers-color-scheme: dark) { .stat b { color: var(--gold-l); } }
.apps { display:grid; grid-template-columns: repeat(auto-fill,minmax(250px,1fr)); gap:1.1rem; }
.appcard { display:flex; flex-direction:column; gap:.4rem; background: var(--card); border:1px solid var(--line); border-radius:18px; padding:1.3rem; box-shadow: var(--shadow); color: var(--ink); text-decoration:none; position:relative; overflow:hidden; transition: transform .15s, box-shadow .15s; }
.appcard::before { content:""; position:absolute; inset:0 0 auto 0; height:5px; background: linear-gradient(90deg,var(--g700),var(--gold)); }
.appcard:hover { transform: translateY(-3px); text-decoration:none; box-shadow: 0 10px 34px rgba(20,40,30,.16); }
.appcard .ico { font-size:2.1rem; } .appcard h3 { margin:0; } .appcard .roles { margin-top:auto; padding-top:.4rem; display:flex; gap:.3rem; flex-wrap:wrap; }
.tabs { display:flex; gap:.3rem; border-bottom:1px solid var(--line); margin-bottom:1.2rem; flex-wrap:wrap; }
.tabs a { padding:.55em 1em; border-radius:10px 10px 0 0; font-weight:600; color: var(--muted); } .tabs a.on { color: var(--g700); border-bottom:3px solid var(--gold); background: var(--card); text-decoration:none; }
.toolbar { display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; margin-bottom:1rem; } .toolbar .grow { flex:1; min-width:180px; }
.permgrid { display:grid; grid-template-columns: repeat(auto-fill,minmax(230px,1fr)); gap:.2rem .8rem; }
.accessapp { border:1px solid var(--line); border-radius:14px; padding:1rem 1.1rem; margin-bottom:1rem; background: var(--g50); }
.accessapp > h3 { display:flex; align-items:center; gap:.5rem; margin-bottom:.6rem; }
.inline { display:inline; } .right { margin-left:auto; } .gap { display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; }
.cropper { display:flex; gap:1.2rem; align-items:center; flex-wrap:wrap; } #cropCanvas { border-radius:50%; border:3px solid var(--gold-l); width:160px; height:160px; background: var(--g100); cursor:grab; touch-action:none; }
footer.foot { text-align:center; color: var(--muted); font-size:.8rem; padding: 1.5rem 0 2rem; }
@media (prefers-reduced-motion: reduce) { * { transition:none !important; } }
