:root{--text:#a7bccf;--text-h:#fff;--bg:#0c2135;--bg-panel:#132f48d1;--bg-elev:#1b3c5ae6;--border:#244a6b;--code-bg:#12314c;--accent:#1c86cf;--accent-strong:#1a78ba;--accent-bg:#1c86cf29;--accent-border:#1c86cf8c;--social-bg:#17395a80;--shadow:#00000059 0 12px 24px -8px, #00000040 0 4px 8px -4px;--sans:"Segoe UI", system-ui, Roboto, sans-serif;--heading:"Montserrat", "Segoe UI", system-ui, sans-serif;--mono:ui-monospace, Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:linear-gradient(180deg, #0a1b2b8c 0%, #081421bf 100%), url(https://storagemyfrachtqa.blob.core.windows.net/root/loginBackGround.jpeg) center / cover no-repeat fixed, var(--bg);min-height:100svh;margin:0}#root{min-height:100svh;font:17px/145% var(--sans);letter-spacing:.1px;color:var(--text);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;display:flex}@media (width<=1024px){#root{font-size:16px}}.spinner{border:4px solid var(--accent-bg);border-top-color:var(--accent);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spinner-rotate}@keyframes spinner-rotate{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.portal{flex:1;grid-template:"banner banner""nav content"1fr/240px 1fr;min-height:100svh;display:grid}.portal-banner{background:var(--bg-panel);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border);grid-area:banner;justify-content:space-between;align-items:center;gap:16px;height:56px;padding:0 24px;display:flex}.portal-brand{font-family:var(--heading);letter-spacing:.2px;color:var(--text-h);font-size:19px;font-weight:700;text-decoration:none}.portal-user{text-overflow:ellipsis;white-space:nowrap;max-width:40ch;color:var(--text);font-size:15px;overflow:hidden}.portal-nav{background:var(--bg-panel);-webkit-backdrop-filter:blur(8px);border-right:1px solid var(--border);flex-direction:column;grid-area:nav;gap:4px;padding:16px 12px;display:flex}.portal-nav-item{color:var(--text);border-radius:6px;align-items:center;gap:10px;padding:8px 12px;font-size:15px;text-decoration:none;transition:background .2s,color .2s;display:flex}.portal-nav-item:hover{background:var(--accent-bg);color:var(--text-h)}.portal-nav-icon{flex:none;width:18px;height:18px}.portal-nav-item.is-active{background:var(--accent-bg);color:var(--accent);font-weight:500}.portal-content{flex-direction:column;grid-area:content;min-width:0;min-height:0;display:flex}.portal-tiles{padding:32px}.portal-tiles h1{font-family:var(--heading);color:var(--text-h);letter-spacing:-.5px;margin:0 0 4px;font-size:28px;font-weight:500}.portal-tiles-lead{color:var(--text);margin:0 0 24px}.portal-tile-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;display:grid}.portal-tile{border:1px solid var(--border);background:var(--bg-panel);-webkit-backdrop-filter:blur(8px);color:inherit;border-radius:10px;padding:20px;text-decoration:none;transition:box-shadow .2s,border-color .2s,transform .2s,background .2s;display:block}.portal-tile:hover{border-color:var(--accent-border);background:var(--bg-elev);box-shadow:var(--shadow);transform:translateY(-2px)}.portal-tile h2{margin:0 0 8px}.portal-tile p{color:var(--text);margin:0;font-size:15px}.portal-tile-head{align-items:center;gap:12px;margin-bottom:8px;display:flex}.portal-tile-head h2{font-family:var(--heading);color:var(--text-h);margin:0;font-size:19px;font-weight:500}.portal-tile-icon{width:30px;height:30px;color:var(--accent);flex:none}#module-container{min-height:0;color:initial;font:initial;letter-spacing:normal;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;flex-direction:column;flex:1;display:flex}#module-container[hidden]{display:none}.portal-startup h1{font-family:var(--heading);color:var(--text-h);margin:0 0 12px;font-size:28px;font-weight:500}@media (width<=768px){.portal{grid-template:"banner""nav""content"1fr/1fr}.portal-nav{border-right:none;border-bottom:1px solid var(--border);flex-flow:wrap}}
