.constrade-loader{display:grid;place-items:center;min-height:72vh;padding:36px 20px;box-sizing:border-box;background:var(--bg-main,#f7faf8);color:var(--text-main,#203b2d);font-family:Manrope,system-ui,sans-serif}.constrade-loader--initial{position:fixed;inset:0;z-index:30000;min-height:100dvh}.constrade-loader__card{width:min(360px,100%);text-align:center}.constrade-loader__brand{display:flex;justify-content:center;align-items:center;gap:11px;margin-bottom:30px}.constrade-loader__brand>img{width:44px;height:44px;object-fit:contain}.constrade-loader__brand>span{text-align:left;font-size:25px;font-weight:750;letter-spacing:-.9px;line-height:1.3}.constrade-loader__brand small{display:block;font-size:7px;font-weight:550;letter-spacing:1.4px;color:#83968a;margin-top:3px}.constrade-loader__skeleton{padding:22px;background:var(--bg-card,#fff);border:1px solid var(--border-light,#dfe9e2);border-radius:15px;box-shadow:0 8px 25px #22422c05;margin-bottom:24px}.constrade-loader__skeleton>span{display:block;height:8px;width:62%;margin-bottom:10px;border-radius:5px;background:#e6eee8}.constrade-loader__skeleton>span:nth-child(2){width:40%;height:6px;background:#eef3ee}.constrade-loader__skeleton>div{display:flex;gap:10px;margin-top:23px}.constrade-loader__skeleton i{height:53px;flex:1;border:1px solid #e7eee9;border-radius:7px;background:#f5f8f5}.constrade-loader__track{width:88px;height:3px;border-radius:6px;margin:0 auto 17px;background:#e0eae3;overflow:hidden}.constrade-loader__track>span{display:block;width:40%;height:100%;background:#70a37d;border-radius:6px;animation:constrade-loader-progress 1.4s ease-in-out infinite}.constrade-loader__card>strong{font-size:13px;font-weight:600;letter-spacing:.1px}.constrade-loader__card>p{margin:9px 0 0;font-size:11px;line-height:1.8;color:var(--text-muted,#829386)}.constrade-loader--compact{min-height:250px;padding:25px 15px;background:transparent}.constrade-loader--compact .constrade-loader__skeleton{display:none}.constrade-loader--compact .constrade-loader__brand{margin-bottom:20px}@keyframes constrade-loader-progress{0%{transform:translateX(-110%)}100%{transform:translateX(350%)}}@media(prefers-reduced-motion:reduce){.constrade-loader__track>span{animation:none;width:100%;opacity:.65}}
/* Full page loading is rendered outside the app so its layout cannot expose navigation. */
.constrade-loader--fullscreen, .constrade-loader--initial { position: fixed; inset: 0; z-index: 2147483000; min-height: 100dvh; background: #f6f8f7; }
body:has(> .constrade-loader--fullscreen) { overflow: hidden !important; }
body:has(> .constrade-loader--fullscreen) > #root { visibility: hidden; }
[data-theme='dark'] .constrade-loader--fullscreen, [data-theme='dark'] .constrade-loader--initial { background: #14231d; }
.constrade-error { min-height: 100dvh; display: grid; place-items: center; padding: 30px 20px; color: var(--text-main,#254332); background: var(--bg-main,#f6f8f7); font-family: Manrope,system-ui,sans-serif; }
.constrade-error > div { width: min(430px,100%); text-align: center; }
.constrade-error img { width: 175px; height: auto; margin: 0 auto 36px; }
.constrade-error > div > span { display: block; color: #849987; font-size: 9px; letter-spacing: 2px; }
.constrade-error h1 { font-size: 27px; line-height: 1.3; margin: 13px 0; font-weight: 600; letter-spacing: -.8px; }
.constrade-error p { color: var(--text-muted,#7b8c80); font-size: 12px; line-height: 1.9; margin: 0 0 24px; }
.constrade-error > div > div { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.constrade-error :is(a,button) { padding: 12px 17px; border: 1px solid #cfded0; border-radius: 8px; color: #3d6548; background: transparent; text-decoration: none; font: inherit; font-size: 11px; cursor: pointer; }
.constrade-error button { background: #2c6546; border-color: #2c6546; color: white; }
