@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap";:root{--color-space-cadet:#262842;--color-delft-blue:#293961;--color-yinmn-blue:#2c497f;--color-cool-gray:#8897bd;--color-lavender:#e3e4fa;--primary:#2c497f;--primary-light:#3d5a95;--secondary:#8897bd;--background:#262842;--card-bg:#29396173;--input-bg:#26284299;--border-color:#e8e4fa26;--glass-border:#ffffff1a;--text-dark:#262842;--text-light:#e3e4fa;--text-muted:#8897bd;--text-muted-light:#e3e4fab3;--emerald-500:#10b981;--amber-500:#f59e0b;--rose-500:#f43f5e;--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-display:"Outfit", sans-serif;--shadow-sm:0 2px 8px #0000001a;--shadow-md:0 8px 16px #00000026;--shadow-lg:0 12px 24px #0003;--shadow-xl:0 20px 40px #00000040;--glass-blur:20px;--glass-opacity:.45;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--sidebar-width:280px;--base-font-size:16px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);font-size:var(--base-font-size);color:var(--text-light);-webkit-font-smoothing:antialiased;background:linear-gradient(#262842 0%,#1a1f33 100%);min-height:100vh;line-height:1.5;overflow-x:hidden}#root{width:100%;min-height:100vh;display:flex}a{color:#2c497f;transition:var(--transition-fast);font-weight:600;text-decoration:none}a:hover{color:#3d5a95}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes pulse-subtle{0%,to{opacity:1}50%{opacity:.7}}@keyframes spin{to{transform:rotate(360deg)}}.animate-fade-in{animation:fadeIn var(--transition-normal) forwards}.glass-panel{background:var(--glass-bg);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border)}.auth-container{background:radial-gradient(circle at 18% 18%,#60a5fa5c 0%,#0000 34%),radial-gradient(circle at 88% 82%,#0ea5e93d 0%,#0000 35%),linear-gradient(135deg,#031a3d 0%,#063474 48%,#0b5db8 100%);justify-content:center;align-items:center;width:100vw;min-height:100vh;padding:20px;display:flex}.auth-card{width:100%;max-width:480px;box-shadow:var(--shadow-xl);color:var(--slate-50);background:linear-gradient(145deg,#08234fc7,#051735a8);border-color:#bfdbfe52;border-radius:24px;padding:40px}.auth-header{text-align:center;margin-bottom:32px}.auth-title{font-family:var(--font-display);color:var(--slate-50);letter-spacing:-.75px;margin-bottom:8px;font-size:2rem;font-weight:800}.auth-subtitle{color:#bfdbfe;font-size:.95rem}.auth-card .form-label{color:#dbeafe}.auth-card .form-input,.auth-card .form-select{color:#f8fbff;background:linear-gradient(135deg,#071d40f5,#0c2b58f0);border:1px solid #93c5fd6b;box-shadow:inset 0 1px #ffffff14}.auth-card .form-input::placeholder{color:#93c5fd}.auth-card .form-input:focus,.auth-card .form-select:focus{background:linear-gradient(135deg,#082654fa,#0f3b78fa);border-color:#93c5fd;box-shadow:0 0 0 4px #93c5fd2e}.auth-card .form-select option{color:#f8fbff;background-color:#071d40}.auth-card .form-select option:checked,.auth-card .form-select option:hover{color:#fff;background:linear-gradient(90deg,#1d4ed8 0%,#2563eb 100%)}.auth-card .btn-secondary{color:#dbeafe}.app-layout{width:100%;min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);border-right:1px solid var(--glass-border);z-index:50;height:100vh;transition:var(--transition-normal);flex-direction:column;padding:24px;display:flex;position:fixed;top:0;left:0}.sidebar-logo{align-items:center;gap:10px;margin-bottom:32px;display:flex}.sidebar-logo-text{font-family:var(--font-display);color:var(--slate-50);background:linear-gradient(135deg, var(--primary-500), #8b5cf6);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.25rem;font-weight:800}.sidebar-profile{background:var(--card-bg);color:var(--slate-50);box-shadow:var(--shadow-sm);border:1px solid var(--glass-border);border-radius:12px;margin-bottom:20px;padding:14px}.sidebar-name{text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:700;overflow:hidden}.sidebar-class{opacity:.9;background:#fff3;border-radius:4px;margin-top:4px;padding:2px 8px;font-size:.8rem;font-weight:600;display:inline-block}.sidebar-nav{flex-direction:column;flex-grow:1;gap:6px;display:flex}.nav-item{color:var(--slate-600);cursor:pointer;text-align:left;width:100%;transition:var(--transition-fast);background:0 0;border:none;border-radius:12px;align-items:center;gap:12px;padding:12px 16px;font-size:.95rem;font-weight:600;display:flex}.nav-item:hover{color:var(--primary-500);background:#4f46e514}.nav-item.active{color:var(--primary-600);box-shadow:none;border-left:4px solid var(--primary-500);background:#2f7df612;padding-left:12px}.nav-item.disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.25)}.nav-item.disabled:hover{color:var(--slate-600);background:0 0}.sidebar-footer{border-top:1px solid var(--glass-border);margin-top:auto;padding-top:16px}.main-content{margin-left:var(--sidebar-width);max-width:1200px;width:calc(100% - var(--sidebar-width));flex-grow:1;padding:40px}.page-header{margin-bottom:32px;animation:.4s ease-out fadeIn}.page-title{font-family:var(--font-display);color:var(--slate-900);letter-spacing:-.75px;margin-bottom:6px;font-size:2.25rem;font-weight:800}.page-subtitle{color:var(--slate-600);font-size:1.05rem}.dashboard-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;margin-bottom:32px;display:grid}.metric-card{box-shadow:var(--shadow-md);transition:transform var(--transition-fast), box-shadow var(--transition-fast);border-radius:20px;justify-content:space-between;align-items:center;padding:24px;display:flex}.metric-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.metric-info{flex-direction:column;display:flex}.metric-label{color:var(--slate-600);text-transform:uppercase;letter-spacing:.5px;font-size:.85rem;font-weight:600}.metric-value{font-family:var(--font-display);color:var(--slate-50);margin-top:4px;font-size:2.25rem;font-weight:800}.metric-icon{font-size:2.5rem;line-height:1}.btn{cursor:pointer;transition:var(--transition-fast);border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-size:.95rem;font-weight:600;display:inline-flex}.btn-primary{background:var(--primary-500);color:#fff;box-shadow:0 4px 12px #4f46e526}.btn-primary:hover:not(:disabled){background:var(--primary-600);box-shadow:0 6px 16px #4f46e540}.btn-secondary{background:var(--slate-100);color:var(--slate-800);border-color:var(--slate-200)}.btn-secondary:hover:not(:disabled){background:var(--slate-200)}.btn-danger{background:var(--rose-500);color:#fff;box-shadow:0 4px 12px #f43f5e26}.btn-danger:hover:not(:disabled){background:#e11d48}.btn:disabled{opacity:.6;cursor:not-allowed}.form-group{color:var(--slate-50);margin-bottom:20px}.form-label{color:#c9ffe5;margin-bottom:6px;font-size:.9rem;font-weight:600;display:block}.form-input,.form-select{border:1px solid var(--slate-300);background:var(--slate-50);width:100%;color:var(--slate-900);transition:var(--transition-fast);border-radius:12px;outline:none;padding:12px 16px;font-family:inherit;font-size:.95rem}.form-input:focus,.form-select:focus{border-color:var(--primary-500);background:#fff;box-shadow:0 0 0 4px #4f46e51a}.ledger-table-container{border:1px solid var(--glass-border);box-shadow:var(--shadow-sm);border-radius:16px;margin-top:16px;overflow:hidden}.ledger-table{border-collapse:collapse;text-align:left;width:100%}.ledger-table th{color:#c9ffe5;text-transform:uppercase;letter-spacing:.5px;background-color:#262842;padding:14px 20px;font-size:.85rem;font-weight:700}.ledger-table td{border-top:1px solid var(--glass-border);color:var(--slate-800);background-color:var(--glass-bg);padding:14px 20px;font-size:.95rem}.ledger-table tr:hover td{background-color:#4f46e505}.upload-dropzone{text-align:center;background:var(--card-bg);cursor:pointer;transition:var(--transition-fast);border:2px dashed #ffffff0f;border-radius:20px;margin-bottom:24px;padding:40px}.upload-dropzone:hover{border-color:var(--primary-500);background:#4f46e505}.test-progress-container{background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--shadow-md);border-radius:20px;margin-bottom:32px;padding:24px}.progress-bar-bg{background:var(--slate-200);border-radius:10px;width:100%;height:12px;margin-top:8px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg, var(--primary-500), #8b5cf6);border-radius:10px;height:100%;transition:width .4s cubic-bezier(.4,0,.2,1)}.test-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;display:grid}.test-card{background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--shadow-md);text-align:center;min-height:250px;transition:transform var(--transition-fast), box-shadow var(--transition-fast);border-radius:20px;flex-direction:column;align-items:center;padding:24px;display:flex}.test-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.test-icon{margin-bottom:12px;font-size:2.5rem}.test-name{font-family:var(--font-display);color:var(--slate-50);margin-bottom:6px;font-size:1.1rem;font-weight:700}.test-desc{color:#afeeee;flex-grow:1;margin-bottom:16px;font-size:.85rem}.test-badge{text-transform:uppercase;border-radius:9999px;margin-bottom:12px;padding:4px 10px;font-size:.75rem;font-weight:700;display:inline-block}.test-badge-completed{color:var(--emerald-600);background-color:#10b9811a}.test-badge-pending{color:var(--amber-500);background-color:#f59e0b1a}.alert-banner{border-radius:16px;align-items:flex-start;gap:12px;margin-bottom:24px;padding:16px 20px;font-size:.95rem;line-height:1.4;display:flex}.alert-banner-info{color:#1e3a8a;background-color:#eff6ff;border:1px solid #bfdbfe}.alert-banner-success{color:#065f46;background-color:#ecfdf5;border:1px solid #a7f3d0}.alert-banner-warning{color:#78350f;background-color:#fffbef;border:1px solid #fde68a}.rec-hero{background:var(--card-bg);color:var(--slate-50);box-shadow:var(--shadow-lg);border:1px solid var(--glass-border);border-radius:20px;margin-bottom:28px;padding:28px}.rec-hero h1{font-family:var(--font-display);margin-bottom:8px;font-size:2.5rem;font-weight:800}.rec-hero p{opacity:.9;font-size:1rem}.rec-grid{grid-template-columns:3fr 2fr;gap:32px;margin-bottom:32px;display:grid}@media (width<=900px){.rec-grid{grid-template-columns:1fr}}.rec-card-title{font-family:var(--font-display);color:#8897bd;margin-bottom:16px;font-size:1.35rem;font-weight:700}.score-bar-container{margin-bottom:14px}.score-bar-header{color:#8897bd;justify-content:space-between;margin-bottom:4px;font-size:.9rem;font-weight:600;display:flex}.score-bar-bg{background:var(--slate-200);border-radius:4px;width:100%;height:8px;overflow:hidden}.score-bar-fill{background:var(--primary-500);border-radius:4px;height:100%}.university-grid{grid-template-columns:1fr 1fr;gap:16px;margin-top:12px;display:grid}@media (width<=600px){.university-grid{grid-template-columns:1fr}}.uni-card{background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm);border-radius:16px;flex-direction:column;padding:16px;display:flex}.uni-name{color:#8897bd;font-size:.95rem;font-weight:700}.uni-course{color:#e3e4fa;margin-top:2px;font-size:.85rem;font-weight:600}.uni-meta{color:#87ceeb;margin-top:4px;font-size:.8rem}.uni-link{color:#afeeee;align-items:center;gap:4px;margin-top:auto;padding-top:8px;font-size:.8rem;display:inline-flex}.chat-container{background:var(--glass-bg);border:1px solid var(--glass-border);height:480px;box-shadow:var(--shadow-md);border-radius:20px;flex-direction:column;display:flex;overflow:hidden}.chat-messages{flex-direction:column;flex-grow:1;gap:16px;padding:20px;display:flex;overflow-y:auto}.chat-bubble{border-radius:16px;max-width:80%;padding:12px 18px;font-size:.95rem;line-height:1.45}.chat-bubble-ai{background-color:var(--slate-800);color:var(--slate-50);border-bottom-left-radius:4px;align-self:flex-start}.chat-bubble-user{background-color:var(--primary-500);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.chat-input-area{border-top:1px solid var(--glass-border);background:#262842;gap:12px;padding:16px;display:flex}.chat-input{color:#e3e4fa;background:#262842;border:1px solid #ffffff0f;border-radius:12px;outline:none;flex-grow:1;padding:12px 16px;font-family:inherit;font-size:.95rem}.chat-input:focus{border-color:var(--primary-500);box-shadow:0 0 0 3px #4f46e51a}.mobile-header{background:var(--glass-bg);border-bottom:1px solid var(--glass-border);z-index:40;justify-content:space-between;align-items:center;padding:16px 24px;display:none;position:sticky;top:0}@media (width<=768px){.mobile-header{display:flex}.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.main-content{width:100%;margin-left:0;padding:24px}}.spinner{border:3px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}.spinner-dark{border-color:#4f46e51a;border-top-color:var(--primary-500)}:root{--color-space-cadet:#262842;--color-delft-blue:#293961;--color-yinmn-blue:#2c497f;--color-cool-gray:#8897bd;--color-lavender:#e3e4fa;--primary:#2c497f;--primary-500:#2c497f;--primary-600:#223b6b;--primary-700:#1c315c;--primary-800:#192a50;--secondary:#8897bd;--background:#262842;--surface:#1d2844;--surface-strong:#1a223c;--card-bg:#29396173;--glass-bg:#29396173;--input-bg:#26284299;--border-color:#e8e4fa26;--glass-border:#ffffff1f;--glass-strong-border:#ffffff2e;--text-dark:#1b203b;--text-light:#e3e4fa;--text-muted:#8897bd;--text-muted-light:#e3e4fac7;--text-inverse:#0a1229;--slate-50:#edf2ff;--slate-100:#e0e7ff;--slate-200:#c7d2fe;--slate-300:#a5b4fc;--slate-400:#818cf8;--slate-500:#6366f1;--slate-600:#4f46e5;--slate-700:#4338ca;--slate-800:#3730a3;--slate-900:#312e81;--slate-950:#262a5c;--emerald-500:#10b981;--emerald-600:#059669;--amber-500:#f59e0b;--rose-500:#f43f5e;--rose-600:#e11d48;--white:#fff;--shadow-sm:0 2px 12px #0000001f;--shadow-md:0 10px 30px #00000029;--shadow-lg:0 18px 48px #0003;--shadow-xl:0 24px 68px #0000003d;--glass-blur:24px;--glass-opacity:.5;--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--radius-xl:28px}.glass-panel,.card,.metric-card,.test-card,.uni-card,.rec-card,.auth-card{-webkit-backdrop-filter:blur(20px);border-radius:var(--radius-lg);background:#29396173;border:1px solid #ffffff1a;box-shadow:0 8px 32px #0000001a}.page-title,.dash-welcome{color:var(--text-light);letter-spacing:-.5px;font-weight:700}.page-subtitle,.dash-meta{color:var(--text-muted-light);font-weight:500}.page-title:after,.dash-header:after{content:"";background:linear-gradient(90deg,#2c497f,#8897bd);border-radius:999px;width:64px;height:4px;margin-top:12px;margin-left:auto;margin-right:auto;display:block}.sidebar{-webkit-backdrop-filter:blur(20px);background:#26284299;border-right:1px solid #ffffff1a;padding:28px}.sidebar-logo-text{color:var(--text-light);font-size:1.15rem;font-weight:700}.sidebar-profile{border-radius:var(--radius-md);color:var(--text-light);background:#2c497f59;border:1px solid #ffffff14;padding:18px}.nav-item{color:var(--text-muted-light);border-radius:var(--radius-md);padding:12px 16px;transition:all .2s}.nav-item:hover{color:var(--text-light);background:#2c497f4d;transform:translate(4px)}.nav-item.active{color:var(--text-light);background:#2c497f99;border-left:3px solid #2c497f;font-weight:600}.btn-primary,div[data-testid=stFormSubmitButton] button{color:#e3e4fa!important;border-radius:var(--radius-md)!important;background:linear-gradient(135deg,#2c497f,#3d5a95)!important;border:none!important;padding:12px 24px!important;font-weight:600!important;transition:all .2s!important;box-shadow:0 8px 24px #2c497f40!important}.btn-primary:hover:not(:disabled),div[data-testid=stFormSubmitButton] button:hover{transform:translateY(-2px)!important;box-shadow:0 12px 32px #2c497f59!important}.btn-secondary{color:var(--text-light)!important;background:#ffffff0d!important;border:1px solid #ffffff1a!important;transition:all .2s!important}.btn-secondary:hover{background:#ffffff1a!important;border-color:#fff3!important}.form-input,.form-select,.stTextInput input,.stNumberInput input,.stSelectbox select{color:var(--text-light)!important;border-radius:var(--radius-md)!important;background:#26284299!important;border:1px solid #ffffff1a!important;padding:12px 16px!important;font-size:14px!important;transition:all .2s!important}.form-input::placeholder,.stTextInput input::placeholder{color:var(--text-muted)!important}.form-input:focus,.form-select:focus,.stTextInput input:focus,.stNumberInput input:focus{background:#2c497f66!important;border-color:#2c497f!important;outline:none!important;box-shadow:0 0 0 3px #2c497f1a!important}.form-label,label{color:var(--text-light)!important;margin-bottom:8px!important;font-weight:600!important}.chat-bubble{border-radius:var(--radius-lg);word-wrap:break-word;margin:8px 0;padding:12px 16px}.chat-bubble-user{color:var(--text-light);background:#2c497f99;border-bottom-right-radius:4px;max-width:80%;margin-left:auto}.chat-bubble-ai{color:var(--text-light);background:#29396166;border:1px solid #ffffff1a;border-bottom-left-radius:4px;max-width:80%;margin-right:auto}.gemini-rich-text{color:var(--text-light);font-size:.95rem;line-height:1.65}.gemini-rich-text-compact{font-size:inherit;line-height:inherit}.gemini-rich-heading{color:var(--color-cool-gray);margin:18px 0 8px;font-size:1.1rem;font-weight:800}.gemini-rich-subheading{color:var(--color-cool-gray);margin:16px 0 6px;font-size:1rem;font-weight:700}.gemini-rich-paragraph{margin:0 0 12px}.gemini-rich-list-item{grid-template-columns:auto 1fr;align-items:start;gap:10px;margin:8px 0;display:grid}.gemini-rich-marker{background:var(--color-cool-gray);border-radius:999px;width:7px;height:7px;margin-top:.62em}.gemini-rich-number{min-width:22px;height:22px;color:var(--color-lavender);background:#8897bd29;border-radius:999px;place-items:center;font-size:.78rem;font-weight:800;display:inline-grid}.gemini-rich-text strong{color:var(--color-lavender);font-weight:800}.gemini-rich-text-compact .gemini-rich-paragraph,.gemini-rich-text-compact .gemini-rich-list-item{margin:0}.gemini-rich-text-compact .gemini-rich-heading,.gemini-rich-text-compact .gemini-rich-subheading{margin:8px 0 4px;font-size:.98rem}.badge,.tag{color:var(--text-light);background:#2c497f66;border:1px solid #ffffff1a;border-radius:20px;padding:6px 12px;font-size:12px;font-weight:600}.badge.active,.tag.active{background:#2c497fb3;border-color:#2c497f}table{color:var(--text-light)!important}thead{background:#2c497f4d!important}tbody tr{border-color:#ffffff0d!important}tbody tr:hover{background:#2c497f33!important}td,th{color:var(--text-light)!important;padding:12px!important}a,.link{color:#2c497f;font-weight:600;text-decoration:none;transition:color .2s}a:hover{color:#3d5a95;text-decoration:underline}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#ffffff0d}::-webkit-scrollbar-thumb{background:#2c497f66;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#2c497f99}.success{color:#10b981!important}.warning{color:#f59e0b!important}.error{color:#ef4444!important}@media (width<=900px){.sidebar{width:240px}.chat-bubble-user,.chat-bubble-ai{max-width:95%}}
