:root {
  --ink: #17312f;
  --muted: #617472;
  --line: #dce7e4;
  --paper: #ffffff;
  --canvas: #f4f8f7;
  --pine: #073b3a;
  --pine-2: #0d5550;
  --mint: #70dcc1;
  --mint-soft: #e8f8f3;
  --gold: #e5aa39;
  --danger: #b6423d;
  --shadow: 0 18px 50px rgba(7, 59, 58, .10);
  --radius: 20px;
  color-scheme: light;
  font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--canvas); font-size: 15px; line-height: 1.55; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, p { margin-top: 0; }
h1 { font-size: clamp(2rem, 4vw, 4rem); line-height: 1.05; letter-spacing: -.045em; }
h2 { font-size: clamp(1.35rem, 2vw, 2rem); line-height: 1.2; letter-spacing: -.025em; }
h3 { line-height: 1.3; }
.muted { color: var(--muted); }
.eyebrow { margin-bottom: .65rem; color: #17826f; font-size: .72rem; font-weight: 800; letter-spacing: .16em; }
.microcopy, small { color: var(--muted); }
.wide { width: 100%; }

.brand { display: inline-flex; align-items: center; gap: .7rem; font-weight: 750; letter-spacing: -.02em; }
.brand-mark { display: grid; place-items: center; width: 38px; height: 38px; flex: 0 0 auto; border-radius: 12px; color: var(--pine); background: var(--mint); font-weight: 900; }
.button { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: .45rem; border: 1px solid transparent; border-radius: 12px; padding: .7rem 1.05rem; cursor: pointer; font-weight: 750; transition: .2s ease; }
.button:hover { transform: translateY(-1px); }
.button.primary { color: white; background: var(--pine-2); box-shadow: 0 8px 20px rgba(13,85,80,.18); }
.button.primary:hover { background: var(--pine); }
.button.secondary { border-color: var(--line); background: white; }
.button.secondary:hover { border-color: #afc9c3; background: #f8fbfa; }
.button.danger { color: #963b35; border-color: #ebc4c1; background: #fff4f3; }
.button.danger:hover { color: white; border-color: var(--danger); background: var(--danger); }
.button.small { min-height: 38px; padding: .5rem .9rem; }
.language-toggle { min-width: 42px; min-height: 38px; border: 1px solid var(--line); border-radius: 10px; color: #0b7867; background: white; cursor: pointer; font-size: .78rem; font-weight: 850; }
.auth-language { position: absolute; top: 1.7rem; right: clamp(1rem, 5vw, 4rem); }
.button-row { display: flex; align-items: center; flex-wrap: wrap; gap: .65rem; }
.text-link { border: 0; padding: 0; color: #0b7867; background: transparent; font-weight: 750; cursor: pointer; }

/* Public landing */
.public-body { background: #fbfdfc; }
.public-nav { position: sticky; z-index: 20; top: 0; height: 76px; display: flex; align-items: center; justify-content: space-between; padding: 0 clamp(1rem, 6vw, 7rem); border-bottom: 1px solid rgba(220,231,228,.75); background: rgba(251,253,252,.9); backdrop-filter: blur(18px); }
.public-nav nav { display: flex; align-items: center; gap: 1.35rem; color: #3d5754; font-weight: 650; }
.hero { min-height: 650px; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(320px, .8fr); align-items: center; gap: clamp(2rem, 7vw, 7rem); padding: clamp(4rem, 8vw, 7rem) clamp(1rem, 7vw, 8rem); overflow: hidden; background: radial-gradient(circle at 80% 20%, #d9f8ef 0, transparent 29%), linear-gradient(135deg, #fafffd 0%, #f3faf7 100%); }
.hero-copy { max-width: 770px; }
.hero-copy .lead { max-width: 690px; color: #506966; font-size: clamp(1rem, 1.7vw, 1.2rem); }
.hero-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: 2rem 0 1.25rem; }
.hero-panel { position: relative; padding: clamp(1.5rem, 4vw, 2.8rem); border: 1px solid #cfe4df; border-radius: 30px; background: rgba(255,255,255,.78); box-shadow: var(--shadow); backdrop-filter: blur(16px); }
.hero-panel::before { content: ""; position: absolute; z-index: -1; inset: -35px 30px 35px -35px; border-radius: 50%; background: #a4ecd8; filter: blur(45px); opacity: .35; }
.orb { width: 92px; height: 92px; display: grid; place-items: center; margin-bottom: 1.6rem; border-radius: 50%; color: white; background: linear-gradient(135deg, var(--pine-2), #219d86); font-size: 2rem; font-weight: 850; box-shadow: 0 14px 30px rgba(13,85,80,.25); }
.hero-metrics { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; overflow: hidden; margin-top: 1.5rem; border: 1px solid var(--line); border-radius: 16px; background: var(--line); }
.hero-metrics div { display: grid; gap: .1rem; padding: 1rem; background: white; }
.hero-metrics strong { font-size: 1.35rem; }
.hero-metrics span { color: var(--muted); font-size: .78rem; }
.trust-strip { display: flex; justify-content: center; flex-wrap: wrap; gap: clamp(1rem, 5vw, 4rem); padding: 1.2rem; color: #52706c; border-block: 1px solid var(--line); font-size: .8rem; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.section { padding: clamp(4rem, 8vw, 7rem) clamp(1rem, 7vw, 8rem); }
.section-heading { max-width: 740px; margin-bottom: 2.4rem; }
.section-heading > p:last-child { color: var(--muted); }
.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.feature-grid article { padding: 1.7rem; border: 1px solid var(--line); border-radius: var(--radius); background: white; }
.feature-grid article > span { display: grid; place-items: center; width: 40px; height: 40px; margin-bottom: 1.4rem; border-radius: 12px; color: var(--pine); background: var(--mint-soft); font-weight: 850; }
.feature-grid p { margin: 0; color: var(--muted); }
.evidence-band { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: center; color: white; background: var(--pine); }
.evidence-band .eyebrow { color: var(--mint); }
.evidence-band p:last-child { margin: 0; color: #c6dcd8; }
.public-footer { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 2rem clamp(1rem, 7vw, 8rem); background: #032c2b; color: white; }
.public-footer p { margin: 0; color: #a9c5c0; font-size: .85rem; }

/* Authentication and installer */
.auth-body, .install-body { min-height: 100vh; background: radial-gradient(circle at 12% 20%, rgba(112,220,193,.3), transparent 28%), linear-gradient(135deg, #052f2f, #0b4d49); }
.auth-shell { min-height: 100vh; display: grid; place-items: center; padding: 5.5rem 1rem 2rem; }
.auth-brand { position: absolute; top: 1.7rem; left: clamp(1rem, 5vw, 4rem); color: white; }
.auth-card { width: min(100%, 490px); padding: clamp(1.5rem, 5vw, 2.8rem); border-radius: 26px; background: white; box-shadow: 0 30px 80px rgba(0,0,0,.25); }
.auth-card h1 { margin-bottom: .8rem; font-size: clamp(2rem, 6vw, 3rem); }
.auth-help { margin: 1.25rem 0 0; color: var(--muted); text-align: center; font-size: .82rem; }
.portal-shell { min-height: 100vh; display: grid; grid-template-columns: minmax(340px,.85fr) minmax(440px,1.15fr); align-items: stretch; }
.portal-aside { display: flex; flex-direction: column; justify-content: space-between; gap: 3rem; padding: clamp(2rem,6vw,6rem); color: white; background: radial-gradient(circle at 25% 20%, rgba(112,220,193,.2), transparent 32%), #073b3a; }
.portal-aside h1 { max-width: 620px; margin-bottom: 1.25rem; }
.portal-aside > div > p:last-child { max-width: 600px; color: #c7ddd9; font-size: 1.05rem; }
.portal-security { display: flex; align-items: start; gap: .85rem; max-width: 560px; padding: 1rem; border: 1px solid rgba(255,255,255,.14); border-radius: 14px; background: rgba(255,255,255,.06); }
.portal-security > span { display: grid; place-items: center; width: 30px; height: 30px; flex: 0 0 auto; border-radius: 9px; color: var(--pine); background: var(--mint); font-weight: 850; }
.portal-security p { display: grid; margin: 0; color: #b9d2cd; font-size: .82rem; }
.portal-security strong { color: white; }
.portal-card { align-self: center; width: min(520px, calc(100% - 2rem)); margin: 2rem auto; padding: clamp(1.5rem,4vw,3rem); border-radius: 26px; background: white; box-shadow: 0 30px 80px rgba(0,0,0,.22); }
.portal-card-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 2.4rem; }
.portal-card h2 { font-size: clamp(1.65rem,3vw,2.35rem); }
.portal-form { margin-top: 1.5rem; }
.access-body { min-height: 100vh; background: radial-gradient(circle at 85% 10%, #d8f5ec, transparent 28%), #f7fbf9; }
.access-main { width: min(1180px, calc(100% - 2rem)); margin: 0 auto; padding: clamp(3rem,7vw,6rem) 0; }
.access-main .section-heading h1 { font-size: clamp(2.4rem,5vw,4.5rem); }
.access-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1rem; }
.access-card { display: flex; flex-direction: column; gap: 2rem; min-height: 360px; padding: 1.7rem; border: 1px solid var(--line); border-radius: 22px; background: white; box-shadow: 0 8px 25px rgba(7,59,58,.05); transition: .22s ease; }
.access-card:hover { transform: translateY(-5px); border-color: #a8cec5; box-shadow: var(--shadow); }
.access-card.featured { color: white; border-color: var(--pine); background: var(--pine); }
.access-card.featured p { color: #c6dcd8; }
.access-icon { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 14px; color: var(--pine); background: var(--mint-soft); font-size: 1.2rem; font-weight: 850; }
.access-card > div { display: flex; flex: 1; flex-direction: column; }
.access-card h2 { margin-bottom: .7rem; }
.access-card p { color: var(--muted); }
.access-card strong { margin-top: auto; color: var(--mint); }
.access-card:not(.featured) strong { color: #0b7867; }
.access-note { margin-top: 1rem; padding: 1rem 1.2rem; border: 1px solid #efd99f; border-radius: 14px; background: #fff8e6; }
.access-note p { margin: .25rem 0 0; color: #75500f; }
.registration-callout { display: flex; align-items: center; justify-content: space-between; gap: 2rem; margin-top: 1rem; padding: 1.5rem; border: 1px solid #bcded6; border-radius: 20px; background: linear-gradient(110deg,#eaf9f4,#fff); }
.registration-callout h2 { margin-bottom: .35rem; }
.registration-callout p:last-child { max-width: 760px; margin: 0; color: var(--muted); }
.registration-callout .button { flex: 0 0 auto; }
.register-nav { position: absolute; z-index: 2; top: 0; left: 0; right: 0; display: flex; align-items: center; justify-content: space-between; padding: 1.7rem clamp(1rem,5vw,4rem); color: white; }
.register-nav .text-link { color: #d6ebe6; }
.register-shell { min-height: 100vh; display: grid; grid-template-columns: minmax(320px,.85fr) minmax(500px,1.15fr); align-items: center; gap: clamp(2rem,6vw,6rem); width: min(1240px,calc(100% - 2rem)); margin: auto; padding: 7rem 0 3rem; }
.register-intro { color: white; }
.register-intro > p:nth-of-type(2) { max-width: 560px; color: #c7ddd9; font-size: 1.02rem; }
.registration-steps { display: grid; gap: .75rem; margin: 2rem 0; }
.registration-steps > div { display: flex; align-items: center; gap: .8rem; }
.registration-steps b { display: grid; place-items: center; width: 34px; height: 34px; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.2); border-radius: 10px; color: var(--pine); background: var(--mint); }
.registration-steps span { display: grid; }
.registration-steps small { color: #b9d2cd; }
.register-card { padding: clamp(1.4rem,4vw,2.6rem); border-radius: 26px; background: white; box-shadow: 0 30px 80px rgba(0,0,0,.24); }
.register-card-head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; margin-bottom: 1.2rem; }
.register-card-head h2 { margin-bottom: 0; }
.install-shell { min-height: 100vh; display: grid; grid-template-columns: minmax(300px,.8fr) minmax(440px,1.2fr); align-items: center; gap: clamp(2rem, 7vw, 7rem); width: min(1180px, calc(100% - 2rem)); margin: auto; padding: 3rem 0; }
.install-brand { color: white; }
.install-brand .brand-mark { width: 60px; height: 60px; margin-bottom: 1.5rem; font-size: 1.45rem; }
.install-brand h1 { margin-bottom: 1rem; }
.install-brand > p:last-of-type { color: #c4dbd7; font-size: 1.05rem; }
.install-points { display: flex; flex-wrap: wrap; gap: .5rem; }
.install-points span { padding: .45rem .7rem; border: 1px solid rgba(255,255,255,.2); border-radius: 999px; color: #d7ebe7; font-size: .78rem; }
.install-card { padding: clamp(1.4rem, 4vw, 2.5rem); border-radius: 26px; background: white; box-shadow: 0 30px 80px rgba(0,0,0,.25); }
.status-icon { width: 52px; height: 52px; display: grid; place-items: center; margin-bottom: 1rem; border-radius: 50%; font-size: 1.5rem; }
.status-icon.success { color: #086453; background: var(--mint-soft); }
.credential-list { max-height: 440px; overflow: auto; display: grid; gap: .65rem; margin: 1.25rem 0; }
.credential-list div { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .85rem; border: 1px solid var(--line); border-radius: 12px; }
.credential-list code, .notice code { padding: .25rem .45rem; border-radius: 6px; color: #613906; background: #fff2ce; font-weight: 750; }

/* Forms and shared cards */
.stack { display: grid; gap: 1rem; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.form-grid .full { grid-column: 1 / -1; }
.form-grid hr { width: 100%; margin: .4rem 0; border: 0; border-top: 1px solid var(--line); }
.field { display: grid; gap: .4rem; }
.field label { color: #38534f; font-size: .82rem; font-weight: 750; }
input, select, textarea { width: 100%; min-height: 44px; border: 1px solid #cbdad7; border-radius: 11px; padding: .7rem .8rem; color: var(--ink); background: white; outline: 0; }
input:focus, select:focus, textarea:focus { border-color: #269b86; box-shadow: 0 0 0 3px rgba(38,155,134,.14); }
textarea { min-height: 94px; resize: vertical; }
.password-field { position: relative; }
.password-field input { padding-right: 4.5rem; }
.password-field button { position: absolute; right: .4rem; top: .35rem; bottom: .35rem; border: 0; color: #0b7867; background: transparent; font-weight: 750; cursor: pointer; }
.notice { margin-bottom: 1rem; padding: .85rem 1rem; border: 1px solid; border-radius: 12px; }
.notice.success { color: #075e4f; border-color: #b9e5d9; background: #eaf9f4; }
.notice.danger { color: #8e302b; border-color: #efc3c0; background: #fff1f0; }
.notice.warning { color: #75500f; border-color: #efd99f; background: #fff8e6; }
.notice.info { color: #23536b; border-color: #c1dfeb; background: #eff9fd; }

/* Application shell */
.app-body { background: var(--canvas); }
.app-shell { min-height: 100vh; }
.sidebar { position: fixed; z-index: 40; inset: 0 auto 0 0; width: 272px; display: flex; flex-direction: column; padding: 1.25rem; color: #dcebe8; background: #073b3a; }
.sidebar-brand { height: 52px; padding: 0 .5rem; color: white; }
.user-chip { display: flex; align-items: center; gap: .75rem; margin: 1.4rem 0; padding: .85rem; border: 1px solid rgba(255,255,255,.1); border-radius: 14px; background: rgba(255,255,255,.06); }
.user-chip > span { display: grid; place-items: center; width: 37px; height: 37px; flex: 0 0 auto; border-radius: 10px; color: var(--pine); background: var(--mint); font-weight: 850; }
.user-chip div { min-width: 0; display: grid; }
.user-chip strong { overflow: hidden; color: white; font-size: .86rem; text-overflow: ellipsis; white-space: nowrap; }
.user-chip small { color: #a9c8c2; text-transform: capitalize; }
.sidebar nav { display: grid; gap: .3rem; }
.sidebar nav a { display: flex; align-items: center; gap: .8rem; min-height: 46px; padding: .65rem .75rem; border-radius: 11px; color: #bcd3cf; font-weight: 650; }
.sidebar nav a:hover, .sidebar nav a.active { color: white; background: rgba(112,220,193,.15); }
.sidebar nav a.active { box-shadow: inset 3px 0 var(--mint); }
.sidebar nav a > span { width: 22px; color: var(--mint); text-align: center; }
.sidebar-foot { display: grid; gap: .7rem; margin-top: auto; padding: 1rem .75rem 0; border-top: 1px solid rgba(255,255,255,.1); color: #bcd3cf; font-size: .84rem; }
.app-main { min-height: 100vh; margin-left: 272px; }
.topbar { position: sticky; z-index: 30; top: 0; height: 72px; display: flex; align-items: center; gap: 1rem; padding: 0 clamp(1rem, 3vw, 2.25rem); border-bottom: 1px solid var(--line); background: rgba(255,255,255,.88); backdrop-filter: blur(18px); }
.topbar > div { display: grid; line-height: 1.25; }
.topbar > div span { color: var(--muted); font-size: .75rem; }
.topbar .language-toggle { margin-left: auto; }
.top-link { color: #0b7867; font-size: .82rem; font-weight: 700; }
.menu-button { display: none; width: 42px; height: 42px; border: 1px solid var(--line); border-radius: 10px; background: white; cursor: pointer; }
.content { width: min(1440px, 100%); margin: 0 auto; padding: clamp(1.25rem, 3vw, 2.4rem); }
.page-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.page-heading h1 { margin-bottom: .45rem; font-size: clamp(1.8rem, 3vw, 2.8rem); }
.page-heading p:last-child { margin: 0; color: var(--muted); }
.status-pill, .tag { display: inline-flex; align-items: center; gap: .45rem; width: max-content; border-radius: 999px; white-space: nowrap; }
.status-pill { padding: .55rem .75rem; color: #0b6a5b; background: var(--mint-soft); font-size: .8rem; font-weight: 750; }
.status-pill i { width: 7px; height: 7px; border-radius: 50%; background: #20ae91; box-shadow: 0 0 0 4px rgba(32,174,145,.12); }
.status-pill.done { color: white; background: var(--pine-2); }
.panel { border: 1px solid var(--line); border-radius: var(--radius); padding: clamp(1rem, 2.5vw, 1.5rem); background: white; box-shadow: 0 5px 18px rgba(7,59,58,.035); }
.panel.compact { margin-top: 1rem; }
.panel-head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.panel-head h2 { margin-bottom: .25rem; font-size: 1.15rem; }
.panel-head p { margin: 0; color: var(--muted); font-size: .85rem; }
.panel-head a { color: #0b7867; font-size: .8rem; font-weight: 750; }
.metric-grid { display: grid; grid-template-columns: repeat(5, minmax(140px, 1fr)); gap: .85rem; margin-bottom: 1rem; }
.metric-grid article { display: grid; padding: 1.15rem; border: 1px solid var(--line); border-radius: 16px; background: white; }
.metric-grid span { color: var(--muted); font-size: .78rem; font-weight: 650; }
.metric-grid strong { margin: .25rem 0; color: var(--pine); font-size: 1.65rem; line-height: 1; }
.metric-grid small { font-size: .72rem; }
.dashboard-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 1rem; }
.ranking-list { display: grid; }
.ranking-list > div { display: grid; grid-template-columns: 36px 1fr auto; align-items: center; gap: .7rem; padding: .8rem 0; border-top: 1px solid #edf2f1; }
.ranking-list > div:first-child { border-top: 0; }
.ranking-list > div > b, .rank-number { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; color: #0b6a5b; background: var(--mint-soft); font-size: .8rem; }
.ranking-list span { min-width: 0; display: grid; }
.ranking-list small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ranking-list em { color: #0b7867; font-style: normal; font-weight: 800; }
.weight-list { display: grid; gap: 1rem; }
.weight-list > div { display: grid; grid-template-columns: 110px 1fr 52px; align-items: center; gap: .65rem; font-size: .8rem; }
.weight-list > div > div { height: 8px; overflow: hidden; border-radius: 999px; background: #e9f0ee; }
.weight-list i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--pine-2), var(--mint)); }
.weight-list strong { text-align: right; }

/* Tables, dialogs and users */
.table-panel { padding: 0; overflow: hidden; }
.table-tools { display: flex; align-items: center; gap: 1rem; padding: 1rem 1.25rem; border-bottom: 1px solid var(--line); }
.table-tools input { max-width: 440px; }
.table-tools span { margin-left: auto; color: var(--muted); font-size: .8rem; }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: .9rem 1rem; border-bottom: 1px solid #edf2f1; text-align: left; vertical-align: top; }
th { color: #607572; background: #f8fbfa; font-size: .72rem; letter-spacing: .04em; text-transform: uppercase; }
td { font-size: .85rem; }
td small { display: block; margin-top: .15rem; }
.evidence-cell { min-width: 420px; }
.evidence-cell p { max-width: 760px; margin: .45rem 0 0; color: #506966; }
.tag { padding: .28rem .55rem; color: #385752; background: #edf3f1; font-size: .7rem; font-weight: 750; }
.tag.green { color: #096250; background: #e4f7f1; }
.tag.amber { color: #795314; background: #fff4d8; }
dialog { width: min(780px, calc(100% - 1.5rem)); max-height: calc(100vh - 2rem); margin: auto; padding: 0; border: 0; border-radius: 22px; color: var(--ink); background: white; box-shadow: 0 30px 90px rgba(0,0,0,.3); }
dialog::backdrop { background: rgba(3,35,34,.68); backdrop-filter: blur(3px); }
.dialog-card { padding: clamp(1.1rem, 3vw, 1.7rem); overflow-y: auto; }
.dialog-head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.dialog-head h2 { margin: 0; }
.dialog-head > button { width: 38px; height: 38px; border: 0; border-radius: 10px; color: #4c625f; background: #eef4f2; cursor: pointer; font-size: 1.4rem; }
.dialog-actions { display: flex; justify-content: end; gap: .65rem; margin-top: 1.25rem; }
.inline-form { display: flex; align-items: center; gap: .75rem; }
.inline-form input { max-width: 420px; }
.user-grid { display: grid; grid-template-columns: repeat(3, minmax(260px,1fr)); gap: 1rem; }
.registration-panel { margin-bottom: 1rem; }
.request-list { display: grid; gap: .75rem; }
.request-card { display: grid; grid-template-columns: minmax(280px,1fr) minmax(320px,.9fr); align-items: center; gap: 1.25rem; padding: 1rem; border: 1px solid var(--line); border-radius: 15px; background: #fbfdfc; }
.request-identity { display: flex; align-items: center; gap: .9rem; min-width: 0; }
.request-identity .user-avatar { margin: 0; flex: 0 0 auto; }
.request-identity h3, .request-identity p { margin-bottom: .15rem; }
.request-identity small { display: block; overflow-wrap: anywhere; }
.request-review { display: grid; gap: .6rem; }
.request-review .button-row { justify-content: flex-end; }
.empty-state { padding: 1.5rem; border: 1px dashed #bfd3cf; border-radius: 14px; text-align: center; background: #f8fbfa; }
.empty-state p { margin: .25rem 0 0; color: var(--muted); }
.user-card { position: relative; }
.user-avatar { display: grid; place-items: center; width: 45px; height: 45px; margin-bottom: .8rem; border-radius: 13px; color: var(--pine); background: var(--mint-soft); font-weight: 850; }
.user-title h3 { margin-bottom: .2rem; font-size: 1rem; }
.user-title p { margin-bottom: 1rem; color: var(--muted); font-size: .78rem; }
.toggle { display: flex; align-items: center; gap: .55rem; cursor: pointer; font-size: .85rem; font-weight: 650; }
.toggle input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.toggle span { position: relative; width: 38px; height: 22px; border-radius: 999px; background: #cad8d5; transition: .2s; }
.toggle span::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: white; transition: .2s; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.toggle input:checked + span { background: #16977f; }
.toggle input:checked + span::after { transform: translateX(16px); }

/* Validation */
.validation-layout { display: grid; grid-template-columns: minmax(0,1fr) 270px; gap: 1rem; align-items: start; }
.validation-main { display: grid; gap: 1rem; }
.validation-side { position: sticky; top: 88px; }
.info-box { margin-bottom: 1rem; padding: 1rem; border-left: 3px solid #30a991; border-radius: 0 10px 10px 0; background: #f0faf7; }
.info-box ul { margin: .5rem 0 0; padding-left: 1.25rem; color: #506966; }
.check-card { display: flex; align-items: start; gap: .8rem; margin-top: .7rem; padding: .85rem; border: 1px solid var(--line); border-radius: 12px; cursor: pointer; }
.check-card input { width: 18px; min-height: 18px; margin-top: .15rem; accent-color: var(--pine-2); }
.check-card span { display: grid; color: var(--muted); font-size: .82rem; }
.check-card strong { color: var(--ink); }
.validation-item h3 { margin: .65rem 0 .25rem; }
.validation-item > div:first-child > p { color: var(--muted); }
.rating-row { display: grid; grid-template-columns: repeat(4,1fr); gap: .6rem; margin: 1rem 0; }
.rating-row label { cursor: pointer; }
.rating-row input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.rating-row span { min-height: 72px; display: grid; grid-template-columns: 30px 1fr; align-items: center; gap: .5rem; padding: .65rem; border: 1px solid var(--line); border-radius: 11px; color: #536965; font-size: .76rem; }
.rating-row b { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; background: #edf4f2; }
.rating-row input:checked + span { border-color: #1a987f; color: #075d4e; background: var(--mint-soft); box-shadow: 0 0 0 2px rgba(26,152,127,.12); }
.rating-row input:checked + span b { color: white; background: #168a74; }
.rating-row input:focus-visible + span { outline: 3px solid rgba(38,155,134,.2); }
.ahp-list { display: grid; gap: .65rem; }
.ahp-list > div { display: grid; grid-template-columns: 1fr 130px 1fr; align-items: center; gap: .7rem; padding: .7rem; border: 1px solid #edf2f1; border-radius: 11px; }
.ahp-list strong:last-child { text-align: right; }
.sticky-actions { position: sticky; z-index: 10; bottom: 1rem; display: flex; justify-content: end; gap: .65rem; padding: .75rem; border: 1px solid var(--line); border-radius: 15px; background: rgba(255,255,255,.9); box-shadow: var(--shadow); backdrop-filter: blur(14px); }
.progress-block { margin: 1rem 0; }
.progress-block > div { display: flex; justify-content: space-between; margin-bottom: .4rem; font-size: .82rem; }
progress { width: 100%; height: 8px; overflow: hidden; border: 0; border-radius: 999px; background: #e6efed; }
progress::-webkit-progress-bar { background: #e6efed; }
progress::-webkit-progress-value { background: #1a987f; }
progress::-moz-progress-bar { background: #1a987f; }

/* Reports */
.report-paper { max-width: 980px; margin: 0 auto; padding: clamp(1.5rem, 4vw, 3.5rem); background: white; box-shadow: var(--shadow); }
.report-paper > header { padding-bottom: 1.2rem; border-bottom: 3px solid var(--pine); }
.report-paper > header p { margin: 1rem 0 .2rem; }
.report-paper section { margin-top: 2rem; }
.report-stats { display: grid; grid-template-columns: repeat(5,1fr); gap: .65rem; }
.report-stats div { display: grid; padding: .75rem; border: 1px solid var(--line); border-radius: 10px; }
.report-stats span { color: var(--muted); font-size: .7rem; }
.report-stats strong { font-size: 1.1rem; }
.report-note { padding: 1rem; border-radius: 12px; background: #f0f7f5; }
.report-note p { margin: .4rem 0 0; color: var(--muted); }
.sidebar-overlay { display: none; }

@media (max-width: 1180px) {
  .metric-grid { grid-template-columns: repeat(3,1fr); }
  .user-grid { grid-template-columns: repeat(2,1fr); }
}

@media (max-width: 900px) {
  .public-nav nav > a:not(.button) { display: none; }
  .hero { min-height: auto; grid-template-columns: 1fr; }
  .hero-panel { max-width: 620px; }
  .feature-grid, .evidence-band { grid-template-columns: 1fr; }
  .install-shell { grid-template-columns: 1fr; padding: 2rem 0; }
  .portal-shell { grid-template-columns: 1fr; }
  .portal-aside { min-height: 390px; padding: 2rem; }
  .portal-security { display: none; }
  .access-grid { grid-template-columns: 1fr; }
  .access-card { min-height: 280px; }
  .register-shell { grid-template-columns: 1fr; max-width: 720px; padding-top: 8rem; }
  .register-intro { text-align: center; }
  .register-intro > p:nth-of-type(2) { margin-inline: auto; }
  .registration-steps { width: min(460px,100%); margin-inline: auto; text-align: left; }
  .register-intro .portal-security { display: flex; margin-inline: auto; text-align: left; }
  .request-card { grid-template-columns: 1fr; }
  .install-brand { text-align: center; }
  .install-brand .brand-mark { margin-inline: auto; }
  .install-points { justify-content: center; }
  .sidebar { transform: translateX(-100%); transition: transform .25s ease; }
  body.menu-open .sidebar { transform: translateX(0); }
  .app-main { margin-left: 0; }
  .menu-button { display: grid; place-items: center; }
  .sidebar-overlay { position: fixed; z-index: 35; inset: 0; background: rgba(3,35,34,.55); }
  body.menu-open .sidebar-overlay { display: block; }
  .validation-layout { grid-template-columns: 1fr; }
  .validation-side { position: static; order: -1; }
}

@media (max-width: 680px) {
  body { font-size: 14px; }
  .public-nav { height: 66px; }
  .public-nav .brand span:last-child { max-width: 170px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .hero { padding-top: 3rem; }
  .portal-aside { min-height: 310px; }
  .portal-card { margin-top: -52px; position: relative; z-index: 2; }
  .hero-metrics { grid-template-columns: 1fr 1fr; }
  .public-footer, .page-heading { align-items: flex-start; flex-direction: column; }
  .form-grid { grid-template-columns: 1fr; }
  .form-grid .full { grid-column: auto; }
  .metric-grid { grid-template-columns: repeat(2,1fr); }
  .dashboard-grid, .user-grid { grid-template-columns: 1fr; }
  .top-link { display: none; }
  .content { padding: 1rem; }
  .table-tools { align-items: stretch; flex-direction: column; }
  .table-tools span { margin-left: 0; }
  .rating-row { grid-template-columns: 1fr 1fr; }
  .ahp-list > div { grid-template-columns: 1fr 92px 1fr; font-size: .78rem; }
  .inline-form, .credential-list div { align-items: stretch; flex-direction: column; }
  .inline-form input { max-width: none; }
  .dialog-actions, .sticky-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .registration-callout { align-items: stretch; flex-direction: column; gap: 1rem; }
  .register-nav { padding-top: 1rem; }
  .register-shell { width: min(100% - 1rem,720px); padding-top: 6.5rem; }
  .register-intro h1 { font-size: 2.2rem; }
  .request-review .button-row { display: grid; grid-template-columns: 1fr 1fr; }
  .report-stats { grid-template-columns: repeat(2,1fr); }
}

@media (max-width: 390px) {
  .metric-grid { grid-template-columns: 1fr; }
  .rating-row { grid-template-columns: 1fr; }
  .ahp-list > div { grid-template-columns: 1fr; text-align: left; }
  .ahp-list strong:last-child { text-align: left; }
  .hero-metrics { grid-template-columns: 1fr; }
}

@media print {
  @page { size: A4; margin: 14mm; }
  body { background: white; color: black; font-size: 10pt; }
  .sidebar, .topbar, .sidebar-overlay, .no-print, .notice, .sticky-actions { display: none !important; }
  .app-main { margin: 0; }
  .content { width: 100%; max-width: none; padding: 0; }
  .report-paper { max-width: none; padding: 0; box-shadow: none; }
  .report-paper section { break-inside: avoid; }
  .report-paper table { font-size: 8pt; }
  .install-brand, .install-card > :not(.credential-list):not(h2) { display: none; }
  .install-shell { display: block; width: 100%; }
  .install-card { padding: 0; box-shadow: none; }
  .credential-list { max-height: none; }
}

/* PalmExcipi-Sustain visual system v1.3 */
.button.mint { color: #043c35; border-color: #8cebd2; background: #7be4c9; box-shadow: 0 12px 32px rgba(32,188,153,.25); }
.button.mint:hover { background: #a0f0dc; }
.button.glass { color: white; border-color: rgba(255,255,255,.3); background: rgba(255,255,255,.1); backdrop-filter: blur(12px); }
.button.glass:hover { border-color: rgba(255,255,255,.55); background: rgba(255,255,255,.16); }
.brand-mark { position: relative; overflow: hidden; box-shadow: inset 0 0 0 1px rgba(255,255,255,.22); }
.brand-mark::after { content: ""; position: absolute; width: 15px; height: 8px; right: -2px; top: 4px; border-radius: 100% 0 100% 0; background: rgba(255,255,255,.62); transform: rotate(-24deg); }

.hero.hero-pharma { position: relative; isolation: isolate; min-height: clamp(680px,calc(100vh - 76px),820px); display: flex; align-items: center; padding: clamp(4rem,8vw,7rem) clamp(1rem,7vw,8rem); color: white; background-image: linear-gradient(90deg,rgba(3,40,38,.98) 0%,rgba(4,53,49,.9) 38%,rgba(4,53,49,.38) 67%,rgba(4,53,49,.08) 100%),url('palm-pharma-hero-v1.webp'); background-size: cover; background-position: center; }
.hero.hero-pharma::after { content: ""; position: absolute; z-index: -1; inset: 0; background: linear-gradient(0deg,rgba(2,30,29,.34),transparent 38%); pointer-events: none; }
.hero.hero-pharma .hero-copy { max-width: 780px; }
.hero.hero-pharma h1 { margin-bottom: 1.3rem; font-size: clamp(2.7rem,5.7vw,5.3rem); text-wrap: balance; }
.hero.hero-pharma .lead { max-width: 720px; color: #d2e8e3; font-size: clamp(1rem,1.6vw,1.2rem); }
.hero-kicker { display: flex; align-items: center; gap: .65rem; margin-bottom: 1.2rem; color: #8cebd2; font-size: .73rem; font-weight: 850; letter-spacing: .16em; }
.hero-kicker span { width: 28px; height: 2px; background: #70dcc1; }
.hero.hero-pharma .hero-metrics { grid-template-columns: repeat(4,1fr); max-width: 690px; margin-top: 2rem; border-color: rgba(255,255,255,.18); background: rgba(255,255,255,.15); backdrop-filter: blur(13px); }
.hero.hero-pharma .hero-metrics div { background: rgba(3,42,40,.58); }
.hero.hero-pharma .hero-metrics strong { color: white; }
.hero.hero-pharma .hero-metrics span,.hero.hero-pharma .microcopy { color: #c8dfda; }
.hero.hero-pharma .microcopy { margin: 1rem 0 0; font-size: .77rem; }
.hero-science-badge { position: absolute; right: clamp(1rem,4vw,4rem); bottom: clamp(1rem,4vw,3rem); display: flex; align-items: center; gap: .8rem; padding: .85rem 1rem; border: 1px solid rgba(255,255,255,.24); border-radius: 15px; background: rgba(3,43,40,.6); box-shadow: 0 20px 50px rgba(0,0,0,.18); backdrop-filter: blur(15px); }
.hero-science-badge > span { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 10px; color: var(--pine); background: var(--mint); font-weight: 900; }
.hero-science-badge div { display: grid; }
.hero-science-badge small { color: #8cebd2; font-size: .62rem; font-weight: 800; letter-spacing: .12em; }
.hero-science-badge strong { font-size: .82rem; }
.formulation-section { background: linear-gradient(180deg,#f8fcfa,#eef7f4); }
.dosage-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 1rem; }
.dosage-grid article { display: flex; align-items: flex-start; gap: 1rem; min-height: 210px; padding: 1.4rem; border: 1px solid #d5e6e1; border-radius: 20px; background: rgba(255,255,255,.9); box-shadow: 0 12px 30px rgba(7,59,58,.05); transition: transform .22s,border-color .22s,box-shadow .22s; }
.dosage-grid article:hover { transform: translateY(-5px); border-color: #a8d0c6; box-shadow: var(--shadow); }
.dosage-grid small { color: #16816e; font-size: .62rem; font-weight: 850; letter-spacing: .11em; }
.dosage-grid h3 { margin: .35rem 0 .55rem; }
.dosage-grid p { margin: 0; color: var(--muted); font-size: .85rem; }
.dosage-icon { position: relative; display: grid; place-items: center; width: 54px; height: 54px; flex: 0 0 auto; border-radius: 16px; background: linear-gradient(145deg,#dff7f0,#b8ebdd); }
.tablet-icon i { width: 30px; height: 13px; border-radius: 999px; background: linear-gradient(90deg,#fff 50%,#69cbb4 50%); box-shadow: 0 5px 10px rgba(8,82,70,.15); transform: rotate(-18deg); }
.cream-icon i { width: 29px; height: 23px; border: 3px solid #118671; border-radius: 4px 4px 9px 9px; box-shadow: inset 0 8px #fff; }
.cream-icon i::before { content: ""; position: absolute; width: 23px; height: 4px; margin: -8px 0 0 0; border-radius: 3px; background: #118671; }
.syrup-icon i { width: 22px; height: 31px; border-radius: 5px 5px 8px 8px; background: linear-gradient(#fff 0 20%,#c68830 21%); box-shadow: 0 5px 10px rgba(80,52,10,.12); }
.nano-icon i { width: 30px; height: 30px; border: 2px dotted #0d8c76; border-radius: 50%; box-shadow: inset 0 0 0 7px rgba(29,160,136,.16); }

.portal-body { background: #eef5f3; }
.portal-shell { grid-template-columns: minmax(390px,.95fr) minmax(470px,1.05fr); }
.portal-aside { position: relative; isolation: isolate; overflow: hidden; background-image: linear-gradient(180deg,rgba(3,48,45,.9),rgba(3,39,38,.96)),url('palm-pharma-hero-v1.webp'); background-size: cover; background-position: 68% center; }
.portal-aside::before { content: ""; position: absolute; z-index: -1; width: 360px; height: 360px; right: -110px; bottom: 8%; border: 1px solid rgba(112,220,193,.25); border-radius: 50%; box-shadow: 0 0 0 45px rgba(112,220,193,.045),0 0 0 90px rgba(112,220,193,.025); }
.portal-copy { position: relative; max-width: 650px; padding: 1.5rem 0; }
.portal-copy h1 { font-size: clamp(2.7rem,5.5vw,5.5rem); text-wrap: balance; }
.portal-copy > p:last-of-type { max-width: 570px; color: #cfe2de; font-size: 1.05rem; }
.portal-feature-chips { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: 1.5rem; }
.portal-feature-chips span { padding: .42rem .7rem; border: 1px solid rgba(255,255,255,.2); border-radius: 999px; color: #d8ece7; background: rgba(255,255,255,.07); font-size: .72rem; font-weight: 750; backdrop-filter: blur(8px); }
.portal-card { border: 1px solid rgba(207,226,221,.9); box-shadow: 0 28px 80px rgba(4,52,48,.16); }
.portal-card-head { margin-bottom: 2rem; }
.login-role-icon { display: grid; place-items: center; width: 58px; height: 58px; margin-bottom: 1.35rem; border-radius: 18px; color: #08705f; background: linear-gradient(145deg,#dff8f1,#bcebdd); font-size: 1.35rem; font-weight: 900; box-shadow: 0 10px 24px rgba(13,85,80,.12); }
.portal-card input { min-height: 52px; background: #f9fcfb; }
.portal-card .button.primary { min-height: 50px; }
.portal-admin .login-role-icon { color: #76510b; background: linear-gradient(145deg,#fff4d8,#f3d38e); }
.portal-validator .login-role-icon { color: #075e50; }
.academic-portal .portal-aside { background-position: 76% center; }

.registration-body { background-image: linear-gradient(90deg,rgba(3,47,44,.97),rgba(4,63,57,.88)),url('palm-pharma-hero-v1.webp'); background-size: cover; background-position: center; background-attachment: fixed; }
.register-shell { grid-template-columns: minmax(320px,.78fr) minmax(540px,1.22fr); align-items: center; gap: clamp(2rem,5vw,5rem); width: min(1320px,calc(100% - 2rem)); }
.register-intro h1 { font-size: clamp(2.5rem,5vw,4.9rem); text-wrap: balance; }
.register-card { width: 100%; max-width: 760px; justify-self: end; border: 1px solid rgba(255,255,255,.45); box-shadow: 0 30px 90px rgba(0,0,0,.3); }
.register-card input,.register-card select { min-height: 50px; background: #f9fcfb; }
.register-card .field small { font-size: .69rem; }
.register-card .check-card { background: #f7fbfa; }

.access-body { background: radial-gradient(circle at 90% 5%,#c7f0e5,transparent 30%),#f3f8f6; }
.access-main { padding-top: clamp(2.4rem,5vw,4rem); }
.access-hero { position: relative; overflow: hidden; display: flex; align-items: center; justify-content: space-between; gap: 2rem; min-height: 270px; margin-bottom: 1rem; padding: clamp(1.6rem,4vw,3rem); color: white; border-radius: 26px; background-image: linear-gradient(90deg,rgba(3,47,44,.98),rgba(4,54,50,.74),rgba(4,54,50,.2)),url('palm-pharma-hero-v1.webp'); background-size: cover; background-position: center; box-shadow: 0 22px 55px rgba(7,59,58,.15); }
.access-hero > div:first-child { max-width: 720px; }
.access-hero h1 { margin-bottom: .8rem; font-size: clamp(2.3rem,5vw,4.4rem); }
.access-hero p:last-child { margin: 0; color: #cce2dd; }
.access-hero-mark { display: grid; place-items: center; width: 112px; height: 112px; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.25); border-radius: 50%; background: rgba(3,52,48,.55); backdrop-filter: blur(14px); }
.access-hero-mark span { font-size: 2.2rem; font-weight: 900; line-height: 1; }
.access-hero-mark small { color: #aee5d7; }
.access-card { min-height: 310px; }

@media (max-width:1100px) {
  .dosage-grid { grid-template-columns: repeat(2,1fr); }
  .hero.hero-pharma { background-position: 58% center; }
  .hero.hero-pharma .hero-copy { max-width: 690px; }
}
@media (max-width:900px) {
  .hero.hero-pharma { min-height: 760px; align-items: flex-end; background-image: linear-gradient(0deg,rgba(3,40,38,.98) 0%,rgba(3,44,41,.83) 48%,rgba(3,44,41,.06) 78%),url('palm-pharma-hero-v1.webp'); background-position: 68% center; }
  .hero-science-badge { top: 1rem; right: 1rem; bottom: auto; }
  .portal-aside { min-height: 460px; }
  .portal-copy { margin-top: auto; }
  .portal-copy h1 { max-width: 680px; font-size: clamp(2.6rem,8vw,4.6rem); }
  .portal-card { margin-top: -72px; position: relative; z-index: 2; }
  .registration-body { background-attachment: scroll; }
  .register-shell { grid-template-columns: 1fr; max-width: 760px; padding-top: 8rem; }
  .register-card { max-width: none; justify-self: stretch; }
}
@media (max-width:680px) {
  .public-nav nav a:not(.button) { display: none; }
  .hero.hero-pharma { min-height: 720px; padding: 8rem 1rem 2.2rem; }
  .hero.hero-pharma h1 { font-size: clamp(2.35rem,11vw,3.45rem); }
  .hero.hero-pharma .hero-metrics { grid-template-columns: repeat(2,1fr); }
  .hero-science-badge { display: none; }
  .dosage-grid { grid-template-columns: 1fr; }
  .dosage-grid article { min-height: 0; }
  .portal-aside { min-height: 430px; padding: 1.25rem; }
  .portal-copy h1 { font-size: 2.7rem; }
  .portal-card { width: calc(100% - 1rem); padding: 1.35rem; }
  .register-shell { width: min(100% - 1rem,760px); }
  .register-intro { padding-inline: .4rem; }
  .register-intro h1 { font-size: 2.65rem; }
  .register-card { padding: 1.2rem; border-radius: 20px; }
  .access-hero { min-height: 310px; align-items: flex-end; }
  .access-hero-mark { display: none; }
}

/* PalmExcipi-Sustain v1.4 — modern public experience and role identities */
.public-body { background: linear-gradient(180deg,#fbfdfc 0,#f1f7f5 45%,#fbfdfc 100%); }
.public-nav { box-shadow: 0 8px 30px rgba(5,51,48,.045); }
.public-nav nav a:not(.button) { position: relative; }
.public-nav nav a:not(.button)::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -.4rem; height: 2px; border-radius: 2px; background: #15907a; transition: right .2s ease; }
.public-nav nav a:not(.button):hover::after { right: 0; }
.hero.hero-pharma { min-height: min(820px,calc(100vh - 76px)); }
.hero.hero-pharma .hero-copy { position: relative; z-index: 2; }
.hero.hero-pharma h1 { max-width: 850px; }
.hero.hero-pharma .lead { color: #d3e7e2; }
.hero.hero-pharma .hero-metrics { border-color: rgba(255,255,255,.17); background: rgba(255,255,255,.11); backdrop-filter: blur(14px); }
.hero.hero-pharma .hero-metrics div { background: rgba(3,48,45,.62); }
.hero.hero-pharma .hero-metrics strong { color: white; }
.hero.hero-pharma .hero-metrics span { color: #cce0dc; }
.trust-strip { position: relative; z-index: 3; gap: clamp(.7rem,3.2vw,3rem); padding-block: 1rem; background: rgba(255,255,255,.96); box-shadow: 0 14px 42px rgba(8,65,59,.06); }
.trust-strip span { display: inline-flex; align-items: center; gap: .45rem; }
.trust-strip span::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #24a68d; box-shadow: 0 0 0 4px #e2f6f1; }

.formulation-section { position: relative; overflow: hidden; }
.formulation-section::before { content: ""; position: absolute; width: 520px; height: 520px; right: -310px; top: 40px; border: 1px solid #d5ebe5; border-radius: 50%; box-shadow: 0 0 0 62px rgba(198,235,226,.22),0 0 0 124px rgba(198,235,226,.11); pointer-events: none; }
.dosage-grid article { position: relative; z-index: 1; transition: transform .22s ease,box-shadow .22s ease,border-color .22s ease; }
.dosage-grid article:hover { transform: translateY(-5px); border-color: #a8d8cc; box-shadow: 0 18px 42px rgba(6,71,64,.1); }

.workflow-section { color: white; background: radial-gradient(circle at 92% 5%,rgba(97,218,190,.2),transparent 27%),linear-gradient(145deg,#043c39,#062c31 72%); }
.workflow-section .section-heading > p:last-child { color: #bfd8d3; }
.workflow-section .eyebrow { color: #72dcc1; }
.workflow-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 1rem; }
.workflow-grid article { position: relative; display: flex; gap: 1rem; min-height: 245px; padding: 1.55rem; overflow: hidden; border: 1px solid rgba(255,255,255,.13); border-radius: 22px; background: linear-gradient(145deg,rgba(255,255,255,.095),rgba(255,255,255,.035)); backdrop-filter: blur(12px); }
.workflow-grid article:not(:last-child)::after { content: "→"; position: absolute; z-index: 2; right: -.78rem; top: 48%; display: grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: 50%; color: #063b38; background: #72dcc1; font-weight: 900; }
.workflow-grid article > span { display: grid; place-items: center; width: 38px; height: 38px; flex: 0 0 auto; border-radius: 12px; color: #063b38; background: #72dcc1; font-weight: 900; }
.workflow-grid small { color: #72dcc1; font-size: .66rem; font-weight: 850; letter-spacing: .14em; }
.workflow-grid h3 { margin: .55rem 0 .7rem; color: white; }
.workflow-grid p { margin: 0; color: #bfd8d3; font-size: .88rem; }

.benefits-section { display: grid; grid-template-columns: minmax(280px,.8fr) minmax(560px,1.2fr); gap: clamp(2rem,6vw,6rem); align-items: start; background: #f5faf8; }
.benefits-intro { position: sticky; top: 110px; }
.benefits-intro h2 { font-size: clamp(2rem,3.4vw,3.5rem); }
.benefits-intro > p:not(.eyebrow) { color: var(--muted); }
.benefit-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 1rem; }
.benefit-grid article { min-height: 225px; padding: 1.5rem; border: 1px solid #d6e7e3; border-radius: 22px; background: rgba(255,255,255,.9); box-shadow: 0 12px 34px rgba(8,70,64,.055); }
.benefit-grid article > span { display: grid; place-items: center; width: 43px; height: 43px; margin-bottom: 1.3rem; border-radius: 13px; color: #087563; background: linear-gradient(145deg,#dff8f1,#bdebdc); font-weight: 900; }
.benefit-grid h3 { margin-bottom: .55rem; }
.benefit-grid p { margin: 0; color: var(--muted); font-size: .88rem; }

.audience-section { background: white; }
.audience-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1rem; }
.audience-grid article { position: relative; min-height: 285px; padding: 1.75rem; overflow: hidden; border-radius: 24px; color: white; box-shadow: 0 18px 44px rgba(7,45,55,.12); }
.audience-grid article::after { content: ""; position: absolute; width: 210px; height: 210px; right: -105px; bottom: -105px; border: 1px solid rgba(255,255,255,.18); border-radius: 50%; box-shadow: 0 0 0 34px rgba(255,255,255,.035),0 0 0 68px rgba(255,255,255,.025); }
.audience-grid article > span { display: grid; place-items: center; width: 50px; height: 50px; margin-bottom: 2rem; border: 1px solid rgba(255,255,255,.25); border-radius: 15px; background: rgba(255,255,255,.12); font-size: 1.25rem; font-weight: 900; }
.audience-grid small { color: rgba(255,255,255,.72); font-weight: 850; letter-spacing: .13em; }
.audience-grid h3 { margin: .55rem 0 .7rem; color: white; font-size: 1.35rem; }
.audience-grid p { max-width: 300px; margin: 0; color: rgba(255,255,255,.78); }
.audience-admin { background: linear-gradient(145deg,#102f57,#071d38); }
.audience-validator { background: linear-gradient(145deg,#08735f,#04453e); }
.audience-academic { background: linear-gradient(145deg,#4051a9,#30236c); }

.evidence-band { position: relative; overflow: hidden; background: linear-gradient(120deg,#063f3d,#092d34); }
.evidence-band::after { content: ""; position: absolute; width: 420px; height: 420px; right: -200px; top: -220px; border-radius: 50%; background: radial-gradient(circle,rgba(112,220,193,.2),transparent 67%); }
.evidence-band > * { position: relative; z-index: 1; }
.evidence-points { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: 1.25rem; }
.evidence-points span { padding: .45rem .7rem; border: 1px solid rgba(255,255,255,.17); border-radius: 999px; color: #d7ebe7; background: rgba(255,255,255,.06); font-size: .72rem; font-weight: 750; }
.home-cta { display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding-block: clamp(3rem,6vw,5rem); color: white; background: radial-gradient(circle at 8% 50%,rgba(229,170,57,.14),transparent 28%),linear-gradient(110deg,#071d38,#073d3a); }
.home-cta > div:first-child { max-width: 790px; }
.home-cta h2 { margin-bottom: .7rem; font-size: clamp(2rem,3.5vw,3.5rem); }
.home-cta p:last-child { margin: 0; color: #c4d9d6; }
.home-cta .hero-actions { flex: 0 0 auto; margin: 0; }

/* Three distinct sign-in experiences */
.portal-aside { min-height: 100vh; background-size: cover; background-repeat: no-repeat; background-position: center; }
.portal-aside::after { content: ""; position: absolute; z-index: -1; inset: 0; background: linear-gradient(180deg,rgba(255,255,255,.04),transparent 28%); }
.portal-validator { background: #eaf6f2; }
.portal-validator .portal-aside { background-image: linear-gradient(90deg,rgba(2,43,38,.95) 0%,rgba(3,57,49,.75) 52%,rgba(3,57,49,.16) 100%),url('login-validator-v1.webp'); background-position: 58% center; }
.portal-validator .portal-card { border-color: #b9ded5; box-shadow: 0 30px 85px rgba(5,93,76,.19); }
.portal-validator .portal-card .eyebrow,.portal-validator .text-link { color: #087b67; }
.portal-validator .button.primary { background: linear-gradient(135deg,#087b67,#055b51); }
.portal-validator .language-toggle { color: #087b67; border-color: #b9ded5; }
.portal-validator .login-role-icon { color: #075e50; background: linear-gradient(145deg,#dcf7ef,#aee4d6); }

.portal-admin { background: #eef2f8; }
.portal-admin .portal-aside { background-image: linear-gradient(90deg,rgba(6,23,49,.97) 0%,rgba(9,39,73,.77) 52%,rgba(9,39,73,.14) 100%),url('login-admin-v1.webp'); background-position: 57% center; }
.portal-admin .portal-aside .eyebrow { color: #f2cb77; }
.portal-admin .portal-security > span { color: #302003; background: #f1c765; }
.portal-admin .portal-feature-chips span { color: #f4e5bd; border-color: rgba(242,203,119,.33); background: rgba(242,203,119,.1); }
.portal-admin .portal-card { border-color: #cfdaea; box-shadow: 0 30px 85px rgba(15,43,83,.2); }
.portal-admin .portal-card .eyebrow,.portal-admin .text-link { color: #285489; }
.portal-admin .button.primary { background: linear-gradient(135deg,#1e4d83,#102f57); }
.portal-admin .language-toggle { color: #285489; border-color: #c7d5e8; }
.portal-admin .login-role-icon { color: #173d6c; background: linear-gradient(145deg,#fff1cf,#edc567); }

.academic-portal { background: #f0f1fa; }
.academic-portal .portal-aside { background-image: linear-gradient(90deg,rgba(15,28,70,.96) 0%,rgba(36,48,110,.73) 52%,rgba(47,37,107,.14) 100%),url('login-academic-v1.webp'); background-position: 57% center; }
.academic-portal .portal-aside .eyebrow { color: #98dcec; }
.academic-portal .portal-security > span { color: #252364; background: #a8dff0; }
.academic-portal .portal-feature-chips span { color: #e0e7ff; border-color: rgba(173,190,255,.35); background: rgba(114,121,216,.14); }
.academic-portal .portal-card { border-color: #d7d9ef; box-shadow: 0 30px 85px rgba(48,43,112,.2); }
.academic-portal .portal-card .eyebrow,.academic-portal .text-link { color: #4a4baa; }
.academic-portal .button.primary { background: linear-gradient(135deg,#5265c5,#382f88); }
.academic-portal .language-toggle { color: #4a4baa; border-color: #d1d5ee; }
.academic-portal .login-role-icon { color: #37367f; background: linear-gradient(145deg,#e8ecff,#c7cff8); }

.access-grid .access-card:nth-child(1) { color: white; border-color: #08705f; background: linear-gradient(145deg,#08735f,#04453e); }
.access-grid .access-card:nth-child(2) { color: white; border-color: #102f57; background: linear-gradient(145deg,#173f70,#071d38); }
.access-grid .access-card:nth-child(3) { color: white; border-color: #4051a9; background: linear-gradient(145deg,#5061b7,#30236c); }
.access-grid .access-card p { color: rgba(255,255,255,.75); }
.access-grid .access-card strong { color: white; }
.access-grid .access-card:nth-child(1) .access-icon { color: #075d4f; background: #aee5d7; }
.access-grid .access-card:nth-child(2) .access-icon { color: #183b68; background: #f0c96f; }
.access-grid .access-card:nth-child(3) .access-icon { color: #37367f; background: #cbd3ff; }

@media (max-width:1180px) {
  .workflow-grid { grid-template-columns: repeat(2,1fr); }
  .workflow-grid article:nth-child(2)::after { display: none; }
  .benefits-section { grid-template-columns: 1fr; }
  .benefits-intro { position: static; max-width: 780px; }
}
@media (max-width:900px) {
  .portal-aside { min-height: 620px; background-position: center 28%; }
  .portal-validator .portal-aside,.portal-admin .portal-aside,.academic-portal .portal-aside { background-position: center 25%; background-image: linear-gradient(0deg,rgba(7,29,55,.98) 0%,rgba(7,45,48,.68) 52%,rgba(7,45,48,.04) 78%),var(--portal-photo); }
  .portal-validator .portal-aside { --portal-photo: url('login-validator-v1.webp'); }
  .portal-admin .portal-aside { --portal-photo: url('login-admin-v1.webp'); }
  .academic-portal .portal-aside { --portal-photo: url('login-academic-v1.webp'); }
  .audience-grid { grid-template-columns: 1fr; }
  .audience-grid article { min-height: 230px; }
  .home-cta { align-items: flex-start; flex-direction: column; }
}
@media (max-width:680px) {
  .trust-strip { justify-content: flex-start; flex-wrap: nowrap; overflow-x: auto; padding-inline: 1rem; scrollbar-width: none; }
  .trust-strip span { flex: 0 0 auto; }
  .workflow-grid,.benefit-grid { grid-template-columns: 1fr; }
  .workflow-grid article { min-height: 0; }
  .workflow-grid article::after { display: none; }
  .benefit-grid article { min-height: 0; }
  .portal-aside { min-height: 520px; }
  .portal-copy { padding-bottom: 0; }
  .portal-copy > p:last-of-type { font-size: .92rem; }
  .home-cta .hero-actions,.home-cta .button { width: 100%; }
}
@media (prefers-reduced-motion:reduce) {
  * { scroll-behavior: auto !important; transition: none !important; }
}

/* PalmExcipi-Sustain v1.5 — Palm Capsule visual identity */
.brand-mark {
  width: 44px;
  height: 44px;
  overflow: hidden;
  border-radius: 13px;
  color: transparent;
  background: transparent url('logo-mark.svg') center/contain no-repeat;
  box-shadow: 0 9px 24px rgba(4,55,55,.16);
}
.brand-mark::after { display: none; }
.sidebar-brand .brand-mark { box-shadow: 0 9px 24px rgba(0,0,0,.2); }
.public-footer .brand-mark,.portal-aside .brand-mark { box-shadow: 0 10px 30px rgba(0,0,0,.25); }
.public-nav .brand { font-size: 1.02rem; }
.public-nav .brand b { color: #0b8571; }

.hero.hero-pharma .hero-copy::before {
  content: "";
  display: block;
  width: 76px;
  height: 76px;
  margin-bottom: 1.25rem;
  border-radius: 21px;
  background: url('logo-mark.svg') center/contain no-repeat;
  box-shadow: 0 18px 45px rgba(0,0,0,.3),0 0 0 1px rgba(255,255,255,.16);
}
.hero-science-badge > span {
  width: 46px;
  height: 46px;
  flex: 0 0 auto;
  border-radius: 13px;
  color: transparent;
  background: url('logo-mark.svg') center/contain no-repeat;
  box-shadow: 0 8px 20px rgba(0,0,0,.22);
}

.portal-aside .brand,.register-nav .brand { letter-spacing: -.025em; }
.portal-aside .brand > span:last-child,.register-nav .brand > span:last-child { font-size: 1.05rem; }
.portal-aside .brand b,.register-nav .brand b { color: #78e4c6; }
.report-paper .brand-mark { width: 48px; height: 48px; }

@media (max-width:680px) {
  .brand-mark { width: 40px; height: 40px; }
  .hero.hero-pharma .hero-copy::before { width: 62px; height: 62px; border-radius: 18px; }
  .public-nav .brand { gap: .5rem; font-size: .92rem; }
}

@media print {
  .report-paper .brand-mark { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
}
