/* Login only. Composition adapted from the approved DATASIND preview. */
body.datasind-login {
  --ink: #172c3e;
  --muted: #74808c;
  --brand: #008ec6;
  --brand-dark: #0076a7;
  --line: #d5dae0;
  font-family: Arial, "Segoe UI", sans-serif;
  color: var(--ink);
  background: #fff;
  font-synthesis: none;
}
body.datasind-login * { box-sizing: border-box; }
body.datasind-login { margin: 0; }
body.datasind-login button, body.datasind-login input { font: inherit; }
body.datasind-login button, body.datasind-login a { -webkit-tap-highlight-color: transparent; }
body.datasind-login button { cursor: pointer; }
body.datasind-login a { color: var(--brand-dark); }
body.datasind-login button:focus-visible, body.datasind-login a:focus-visible { outline: 3px solid #50c6f1; outline-offset: 4px; }
body.datasind-login .login-page { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px; padding: 32px; min-height: 100vh; min-height: 100svh; }
body.datasind-login .campaign { background: radial-gradient(ellipse at 20% 55%, #c9edf9a6, transparent 55%), linear-gradient(150deg, #f0f7ff 0%, #e7f4fc 47%, #dceefb 100%); border-radius: 24px; overflow: hidden; position: relative; min-height: 640px; }
body.datasind-login .campaign::before { content: ""; position: absolute; width: 82%; aspect-ratio: 1; border-radius: 50%; left: -20%; top: 30%; background: radial-gradient(circle, #8bd8f12b, #c4edff00 68%); }
body.datasind-login .campaign-heading { position: absolute; width: 94%; left: 3%; top: 8.4%; text-align: center; z-index: 2; }
body.datasind-login .campaign-kicker { display: inline-flex; gap: 8px; align-items: center; font-size: 11px; font-weight: 700; letter-spacing: .13em; color: #007daa; }
body.datasind-login .campaign-kicker > span { width: 6px; height: 6px; background: #00a8db; border-radius: 50%; box-shadow: 0 0 0 4px #00a8db12; }
body.datasind-login .campaign-heading h2 { margin: 22px 0 18px; color: #102f4b; font-size: clamp(31px, 2.48vw, 48px); font-weight: 600; letter-spacing: -.045em; line-height: 1.14; }
body.datasind-login .campaign-heading h2 span { color: #008fc5; }
body.datasind-login .campaign-heading > p { color: #53748b; font-size: clamp(14px, .94vw, 18px); line-height: 1.65; margin: 0; }
body.datasind-login .product-stage { position: absolute; width: 100%; height: 0; top: 60%; left: 0; z-index: 1; }
body.datasind-login .product-scene { position: absolute; width: 800px; height: 520px; left: 50%; top: 0; transform: translate(-50%, -50%) scale(var(--scene-scale, .7)); transform-origin: center; }
body.datasind-login .product-scene::before { content: ""; position: absolute; left: 62px; top: 76px; width: 680px; height: 390px; border-radius: 50%; background: #2c9dcc21; filter: blur(40px); }
body.datasind-login .scene-orbit { position: absolute; border: 1px solid #8acde45e; width: 780px; height: 350px; border-radius: 50%; left: 7px; top: 120px; transform: rotate(-22deg); }
body.datasind-login .orbit-two { width: 660px; height: 420px; top: 75px; left: 75px; transform: rotate(25deg); border-color: #b8dbec75; }
body.datasind-login .scene-dot { position: absolute; width: 9px; height: 9px; border-radius: 50%; background: #65c7e4; box-shadow: 0 0 0 6px #c0eaf74a; }
body.datasind-login .dot-one { left: 36px; top: 335px; }
body.datasind-login .dot-two { right: 33px; top: 166px; width: 6px; height: 6px; }
body.datasind-login .product-window { position: absolute; top: 76px; left: 65px; width: 674px; height: 409px; border: 1px solid #fff; border-radius: 15px; background: #fff; box-shadow: 0 35px 65px -28px #1b6e9d54, 0 10px 24px #3c73951a, 0 0 0 5px #ffffff48; overflow: hidden; transform: perspective(1600px) rotateY(-10deg) rotateX(7deg) rotateZ(-4deg); }
body.datasind-login .window-topbar { display: flex; height: 51px; gap: 14px; align-items: center; padding: 0 21px; border-bottom: 1px solid #edf2f7; }
body.datasind-login .window-topbar > img { width: 109px; height: auto; }
body.datasind-login .window-divider { width: 1px; height: 18px; background: #dce5ed; }
body.datasind-login .window-topbar > strong { font-size: 12px; color: #29465d; font-weight: 600; }
body.datasind-login .window-topbar-end { display: flex; align-items: center; gap: 15px; margin-left: auto; }
body.datasind-login .window-search { width: 11px; height: 11px; border: 1.4px solid #9eb0bf; border-radius: 50%; position: relative; }
body.datasind-login .window-search::after { content: ""; position: absolute; width: 4px; height: 1px; background: #9eb0bf; transform: rotate(45deg); right: -3px; bottom: -2px; }
body.datasind-login .avatar-small { display: grid; place-items: center; border-radius: 50%; width: 25px; height: 25px; background: #e7f5fc; color: #087da9; font-size: 8px; font-weight: 700; }
body.datasind-login .window-layout { display: flex; height: calc(100% - 51px); }
body.datasind-login .product-sidebar { flex: 0 0 124px; padding: 21px 10px; background: #fafcfe; border-right: 1px solid #edf2f7; position: relative; }
body.datasind-login .sidebar-caption { font-size: 6.8px; font-weight: 700; letter-spacing: .1em; color: #9aafbe; display: block; margin: 0 6px 16px; }
body.datasind-login .nav-item { display: flex; align-items: center; gap: 9px; padding: 11px 9px; font-size: 9px; color: #7b8fa0; margin-bottom: 3px; border-radius: 6px; }
body.datasind-login .nav-item.selected { background: #e7f6fc; color: #0087b5; font-weight: 700; }
body.datasind-login .nav-symbol { display: inline-block; width: 11px; height: 11px; border: 1.2px solid currentColor; border-radius: 2px; position: relative; }
body.datasind-login .grid-symbol { background: linear-gradient(90deg, transparent 45%, currentColor 45% 55%, transparent 55%), linear-gradient(transparent 45%, currentColor 45% 55%, transparent 55%); }
body.datasind-login .folder-symbol { height: 8px; top: 1px; }
body.datasind-login .folder-symbol::before { content: ""; position: absolute; top: -4px; left: -1px; width: 5px; height: 3px; border: 1px solid currentColor; border-bottom: 0; border-radius: 2px 2px 0 0; }
body.datasind-login .calendar-symbol::before { content: ""; position: absolute; top: 3px; left: 0; width: 9px; border-top: 1px solid currentColor; }
body.datasind-login .file-symbol { width: 9px; }
body.datasind-login .sidebar-bottom { display: flex; gap: 5px; align-items: center; position: absolute; bottom: 19px; left: 18px; font-size: 7px; color: #99aab7; }
body.datasind-login .sidebar-online { width: 4px; height: 4px; border-radius: 50%; background: #39bcaa; }
body.datasind-login .product-main { flex: 1; min-width: 0; padding: 20px 21px; background: #fdfefe; }
body.datasind-login .dashboard-heading { display: flex; justify-content: space-between; align-items: center; margin-bottom: 17px; }
body.datasind-login .dashboard-breadcrumb { font-size: 6.3px; color: #9eafbb; letter-spacing: .08em; }
body.datasind-login .dashboard-heading h3 { font-size: 19px; letter-spacing: -.03em; color: #24445b; margin: 5px 0 0; font-weight: 600; }
body.datasind-login .dashboard-filter { font-size: 7px; color: #718997; padding: 7px 8px; border: 1px solid #e4ecf2; border-radius: 4px; }
body.datasind-login .dashboard-filter > span { margin-left: 8px; }
body.datasind-login .dashboard-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 15px; }
body.datasind-login .metric { border: 1px solid #e6eef3; border-radius: 7px; padding: 10px 11px; background: #fff; }
body.datasind-login .metric-label { display: flex; justify-content: space-between; align-items: center; color: #8096a5; font-size: 7.3px; gap: 5px; }
body.datasind-login .metric-dot { width: 5px; height: 5px; border-radius: 2px; }
body.datasind-login .cyan { background: #00a6d3; }
body.datasind-login .amber { background: #f3bb66; }
body.datasind-login .violet { background: #a29ce9; }
body.datasind-login .metric > strong { display: block; margin: 7px 0 5px; font-size: 23px; color: #23465c; font-weight: 600; letter-spacing: -.04em; }
body.datasind-login .metric-description { font-size: 6.2px; color: #b0bec7; }
body.datasind-login .dashboard-content { display: grid; grid-template-columns: 1.7fr 1fr; gap: 12px; }
body.datasind-login .cases-widget, body.datasind-login .situation-widget { border: 1px solid #e6eef3; border-radius: 7px; padding: 12px 11px; background: #fff; }
body.datasind-login .widget-heading { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
body.datasind-login .widget-heading strong, body.datasind-login .situation-widget > strong { font-size: 8px; font-weight: 600; color: #476578; }
body.datasind-login .widget-heading > span { font-size: 6px; color: #0a99be; }
body.datasind-login .case-table-head { display: flex; justify-content: space-between; padding: 0 0 5px; color: #b1c0cc; font-size: 5px; letter-spacing: .08em; border-bottom: 1px solid #f1f5f8; }
body.datasind-login .case-row { display: flex; align-items: center; justify-content: space-between; gap: 7px; padding: 9px 0; border-bottom: 1px solid #f1f5f8; }
body.datasind-login .case-row:last-child { border: 0; padding-bottom: 0; }
body.datasind-login .case-code { font-size: 5px; color: #b5c2cd; display: block; margin-bottom: 3px; }
body.datasind-login .case-row strong { display: block; color: #758d9d; font-size: 6.5px; font-weight: 500; }
body.datasind-login .status-tag { font-size: 5px; padding: 4px 5px; border-radius: 3px; white-space: nowrap; }
body.datasind-login .status-cyan { background: #edf9fc; color: #329eb8; }
body.datasind-login .status-violet { background: #f3f0fc; color: #9a8cc6; }
body.datasind-login .situation-widget { text-align: center; }
body.datasind-login .situation-widget > strong { font-size: 7px; }
body.datasind-login .case-donut { margin: 12px auto 10px; width: 73px; height: 73px; border-radius: 50%; background: conic-gradient(#00a4ce 0 69%, #a0dff0 69% 100%); padding: 10px; transform: rotate(-50deg); }
body.datasind-login .case-donut > span { display: flex; align-items: center; justify-content: center; flex-direction: column; width: 100%; height: 100%; border-radius: 50%; background: #fff; transform: rotate(50deg); }
body.datasind-login .case-donut strong { font-size: 17px; color: #39596e; font-weight: 600; }
body.datasind-login .case-donut small { font-size: 4.5px; color: #9aafbc; margin-top: 2px; }
body.datasind-login .donut-legend { display: flex; justify-content: center; gap: 7px; }
body.datasind-login .donut-legend > span { display: flex; align-items: center; gap: 3px; font-size: 4px; color: #92a7b4; }
body.datasind-login .donut-legend i { width: 3px; height: 3px; border-radius: 50%; background: #00a4ce; }
body.datasind-login .donut-legend > span:last-child i { background: #a0dff0; }
body.datasind-login .dashboard-bottom { display: flex; align-items: center; gap: 5px; margin-top: 14px; color: #839eaf; }
body.datasind-login .dashboard-bottom > strong { font-size: 7px; font-weight: 500; }
body.datasind-login .dashboard-bottom > span:last-child { margin-left: auto; font-size: 5.5px; color: #339aba; }
body.datasind-login .bottom-calendar { width: 8px; height: 8px; border: 1px solid #81b6ca; border-radius: 2px; }
body.datasind-login .floating-panel { display: flex; gap: 12px; align-items: center; position: absolute; border: 1px solid #ffffff; border-radius: 17px; background: #ffffffeb; backdrop-filter: blur(16px); box-shadow: 0 16px 35px -10px #3b789d2c, 0 2px 6px #39759808; padding: 17px; z-index: 3; animation: ds-login-panel-float 7s ease-in-out infinite; }
body.datasind-login .float-deadline { width: 297px; top: 15px; right: 2px; transform: rotate(2deg); }
body.datasind-login .float-cases { width: 264px; left: 3px; bottom: 58px; animation-delay: -2.5s; }
body.datasind-login .float-hearings { width: 284px; right: 12px; bottom: -5px; animation-delay: -4.5s; }
body.datasind-login .float-icon { display: grid; place-items: center; flex: 0 0 46px; height: 46px; border-radius: 13px; }
body.datasind-login .deadline-icon { color: #0096c3; background: #e6f7fd; }
body.datasind-login .cases-icon { color: #8973c9; background: #f0ecfc; }
body.datasind-login .hearings-icon { color: #2caa95; background: #e7f8f3; }
body.datasind-login .floating-panel > div { min-width: 0; }
body.datasind-login .floating-panel strong { display: block; font-size: 16px; line-height: 1.4; color: #254c65; font-weight: 600; white-space: nowrap; }
body.datasind-login .float-eyebrow { display: block; font-size: 7.6px; letter-spacing: .12em; color: #58a8c6; font-weight: 700; margin-bottom: 4px; }
body.datasind-login .float-detail { display: block; font-size: 10px; color: #8ba3b3; margin-top: 5px; white-space: nowrap; }
body.datasind-login .float-deadline strong { font-size: 17px; }
body.datasind-login .float-deadline .float-detail { font-size: 8px; }
body.datasind-login .float-notification { width: 6px; height: 6px; border-radius: 50%; background: #00b0d8; position: absolute; top: 17px; right: 17px; }
body.datasind-login .illustration-caption { position: absolute; bottom: 124px; width: 100%; text-align: center; font-size: 9px; color: #89a9be; letter-spacing: .02em; }
body.datasind-login .campaign-more { position: absolute; bottom: 48px; left: 50%; transform: translateX(-50%); display: inline-flex; align-items: center; justify-content: center; gap: 20px; white-space: nowrap; padding: 15px 23px; color: #057fae; background: #ffffff5e; border: 1px solid #aed5e7; border-radius: 999px; font-size: 14px; transition: background .16s ease, border-color .16s ease; z-index: 4; }
body.datasind-login .campaign-more:hover { background: #ffffffc4; border-color: #73bbd8; }
@keyframes ds-login-panel-float { 0%, 100% { translate: 0 0; } 50% { translate: 0 -7px; } }
@media (max-width: 1500px) and (min-width: 1200px) {
body.datasind-login .campaign-heading { top: 7.4%; }
body.datasind-login .campaign-heading h2 { margin: 16px 0 12px; }
body.datasind-login .campaign-heading > p { line-height: 1.5; }
body.datasind-login .campaign-more { bottom: 25px; padding: 13px 20px; font-size: 12px; }
body.datasind-login .illustration-caption { bottom: 87px; font-size: 8px; } }
body.datasind-login .auth-panel { display: flex; align-items: center; justify-content: center; padding: 36px 40px; }
body.datasind-login .auth-content { width: 100%; max-width: 450px; }
body.datasind-login .brand { display: block; width: 240px; height: auto; max-width: 75%; margin: 0 auto 52px; }
body.datasind-login h1 { font-size: 21px; line-height: 1.4; font-weight: 500; margin: 0 0 30px; color: #17222d; }
body.datasind-login .field { margin-bottom: 20px; }
body.datasind-login .field label { display: block; margin: 0 0 9px; font-size: 14px; line-height: 1.3; color: #293744; }
body.datasind-login .field input { display: block; width: 100%; min-height: 49px; padding: 12px 15px; border: 1px solid var(--line); border-radius: 14px; background: #fff; color: var(--ink); font-size: 16px; outline: none; transition: border-color .16s ease, box-shadow .16s ease; }
body.datasind-login .field input:hover { border-color: #a7b6c1; }
body.datasind-login .field input:focus { border-color: var(--brand); box-shadow: 0 0 0 3px #00a9de1c; }
body.datasind-login .password-wrap { position: relative; }
body.datasind-login .password-wrap input { padding-right: 52px; }
body.datasind-login .password-toggle { position: absolute; width: 44px; height: 43px; top: 3px; right: 4px; display: grid; place-items: center; border: 0; border-radius: 10px; color: #7c8793; background: transparent; }
body.datasind-login .password-toggle:hover { color: var(--brand-dark); background: #edf8fc; }
body.datasind-login .eye-slash { display: none; }
body.datasind-login .password-toggle[aria-pressed="true"] .eye-slash { display: block; }
body.datasind-login .text-button { padding: 0; border: 0; background: transparent; color: var(--brand-dark); font-size: inherit; text-decoration: underline; text-underline-offset: 2px; }
body.datasind-login .text-button:hover, body.datasind-login a:hover { color: #00577f; }
body.datasind-login .recovery { display: inline-block; margin: 0 0 28px; font-size: 13px; }
body.datasind-login .submit-button { width: 100%; min-height: 49px; padding: 13px 20px; border: 0; border-radius: 999px; color: #fff; background: var(--brand); font-size: 16px; line-height: 1.4; font-weight: 600; transition: background .16s ease; }
body.datasind-login .submit-button:hover { background: var(--brand-dark); }
body.datasind-login .help { margin: 35px 0 0; text-align: center; color: var(--muted); font-size: 13px; line-height: 1.8; }
body.datasind-login .auth-footer { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-top: 58px; color: #83909b; font-size: 11px; line-height: 1.6; }
body.datasind-login .auth-footer a { color: #74808c; text-decoration: none; }
body.datasind-login .auth-footer a:hover { text-decoration: underline; }
body.datasind-login [hidden] { display: none !important; }
body.datasind-login dialog { width: min(620px, calc(100% - 40px)); max-height: calc(100svh - 40px); margin: auto; padding: 30px; border: 1px solid #e1e8ee; border-radius: 22px; color: var(--ink); box-shadow: 0 24px 100px #00172c30; }
body.datasind-login dialog::backdrop { background: #00132385; backdrop-filter: blur(4px); }
body.datasind-login .dialog-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
body.datasind-login .eyebrow { color: var(--brand-dark); font-size: 11px; letter-spacing: .2em; font-weight: 600; }
body.datasind-login .close-dialog { width: 34px; height: 34px; padding: 0; border: 0; border-radius: 50%; background: #f1f5f8; color: #546776; font-size: 25px; }
body.datasind-login dialog h2 { font-size: 30px; letter-spacing: -.025em; margin: 22px 0 14px; line-height: 1.2; }
body.datasind-login dialog h2 span { color: var(--brand); }
body.datasind-login .dialog-intro { color: #5a6b79; line-height: 1.7; font-size: 15px; }
body.datasind-login .feature-list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 24px 0; }
body.datasind-login .feature-list section { background: #f4f8fa; border-radius: 13px; padding: 18px; }
body.datasind-login .feature-list h3 { margin: 0 0 8px; font-size: 15px; }
body.datasind-login .feature-list p { margin: 0; font-size: 13px; color: #5a6b79; line-height: 1.6; }
body.datasind-login .module-note { font-size: 12px; color: #73818d; line-height: 1.6; }
body.datasind-login .dialog-button { border: 0; border-radius: 999px; padding: 13px 22px; margin-top: 13px; background: var(--brand); color: #fff; font-size: 14px; font-weight: 600; }
body.datasind-login .dialog-button:hover { background: var(--brand-dark); }
@media (max-width: 1199px) {
body.datasind-login .login-page { grid-template-columns: 1fr; padding: 24px; }
body.datasind-login .campaign { display: none; }
body.datasind-login .auth-panel { padding: 28px 20px; }
}
@media (max-width: 479px) {
body.datasind-login .login-page { padding: 20px; }
body.datasind-login .auth-panel { padding: 24px 4px; }
body.datasind-login .brand { width: 216px; margin-bottom: 44px; }
body.datasind-login h1 { margin-bottom: 28px; }
body.datasind-login .auth-footer { margin-top: 44px; }
body.datasind-login dialog { padding: 24px; }
body.datasind-login .feature-list { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
body.datasind-login *, body.datasind-login *::before, body.datasind-login *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; } }

/* PrimeFaces 8 integration and institution-specific assets. */
body.datasind-login { margin: 0; font-size: 14px; line-height: normal; }
body.datasind-login .ui-widget { font-family: inherit; }
body.datasind-login .brand { object-fit: contain; max-height: 110px; }
body.datasind-login .window-topbar img { max-height: 30px; object-fit: contain; }
body.datasind-login .institution { margin: -21px 0 24px; color: #687e8e; font-size: 12px; overflow-wrap: anywhere; }
body.datasind-login .field input.ui-inputfield { box-shadow: none; font-weight: 400; font-family: inherit; }
body.datasind-login .field input.ui-inputfield:focus { border-color: var(--brand); box-shadow: 0 0 0 3px #00a9de1c; }
body.datasind-login .ui-button.submit-button { display: block; margin: 0; background: var(--brand); border: 0; color: #fff; text-shadow: none; box-shadow: none; }
body.datasind-login .ui-button.submit-button:hover { background: var(--brand-dark); }
body.datasind-login .submit-button .ui-button-text { padding: 0; line-height: 1.4; }
body.datasind-login .login-messages .ui-messages { margin: 0; font-size: 14px; }
body.datasind-login .login-messages .ui-messages > div { margin: 0 0 18px; border-radius: 12px; padding: 12px; }
body.datasind-login .login-messages .ui-messages ul { margin: 0; padding: 0; }
body.datasind-login .login-messages .ui-messages-summary,
body.datasind-login .login-messages .ui-messages-detail { margin: 0 6px 0 0; overflow-wrap: anywhere; }
body.datasind-login .login-cookies.ui-sidebar { height: auto; max-height: 75vh; overflow-y: auto; padding: 24px; color: var(--ink); background: #fff; box-shadow: none; }
body.datasind-login .login-cookies.ui-sidebar-active { box-shadow: 0 -5px 30px #17324b24; }
body.datasind-login .cookie-layout { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px 30px; max-width: 1300px; margin: auto; padding-right: 20px; }
body.datasind-login .cookie-heading { grid-column: 1 / -1; }
body.datasind-login .cookie-heading h3 { margin: 0; font-size: 18px; }
body.datasind-login .cookie-copy { line-height: 1.65; font-size: 14px; }
body.datasind-login .cookie-accept.ui-button { background: var(--brand); color: #fff; border: 0; border-radius: 999px; padding: 8px 24px; }
body.datasind-login .ui-button:focus-visible, body.datasind-login .ui-sidebar-close:focus-visible { outline: 3px solid #50c6f1; outline-offset: 4px; }
@media (max-width: 600px) { body.datasind-login .cookie-layout { grid-template-columns: minmax(0, 1fr); } }
@media (max-height: 740px) { body.datasind-login .auth-panel { padding-top: 24px; padding-bottom: 24px; } body.datasind-login .brand { margin-bottom: 28px; } body.datasind-login .auth-footer { margin-top: 28px; } }
@media (max-height: 640px) { body.datasind-login .campaign { display: none; } body.datasind-login .login-page { grid-template-columns: minmax(0, 1fr); } }
