:root{--primary-color:#2c5aa0;--secondary-color:#f8f9fc;--accent-color:#ff6b35;--success-color:#28a745;--warning-color:#ffc107;--danger-color:#dc3545;--info-color:#17a2b8;--dark-color:#2d3748;--light-color:#f7fafc;--border-radius:12px;--shadow-light:0 2px 8px rgba(0,0,0,0.05);--shadow-medium:0 4px 16px rgba(0,0,0,0.1);--shadow-heavy:0 8px 32px rgba(0,0,0,0.15);--gradient-primary:linear-gradient(135deg, #667eea 0%, #764ba2 100%);--gradient-success:linear-gradient(135deg, #11998e 0%, #38ef7d 100%);--gradient-danger:linear-gradient(135deg, #ff6b6b 0%, #ee5a52 100%);--gradient-warning:linear-gradient(135deg, #f093fb 0%, #f5576c 100%)}*{box-sizing:border-box}body{font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;background:linear-gradient(135deg,#f5f7fa 0%,#c3cfe2 100%);min-height:100vh;line-height:1.6;color:var(--dark-color)}.container{padding:0 15px}.alert{border:none;border-radius:var(--border-radius);box-shadow:var(--shadow-light);border-left:4px solid;font-weight:500;margin-bottom:1.5rem}.alert-success{background:linear-gradient(135deg,#d4edda 0%,#c3e6cb 100%);border-left-color:var(--success-color);color:#155724}.alert-danger{background:linear-gradient(135deg,#f8d7da 0%,#f1b4b8 100%);border-left-color:var(--danger-color);color:#721c24}.alert-info{background:linear-gradient(135deg,#d1ecf1 0%,#b8daff 100%);border-left-color:var(--info-color);color:#0c5460}.alert-warning{background:linear-gradient(135deg,#fff3cd 0%,#ffeaa7 100%);border-left-color:var(--warning-color);color:#856404}.alert-primary{background:linear-gradient(135deg,#cce7ff 0%,#b3d9ff 100%);border-left-color:var(--primary-color);color:#1a365d}.alert-link{color:inherit;font-weight:600;text-decoration:underline;transition:all 0.3s ease}.alert-link:hover{opacity:.8}.card{border:none;border-radius:var(--border-radius);box-shadow:var(--shadow-medium);background:#fff;overflow:hidden;transition:all 0.3s ease;margin-bottom:1.5rem}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-heavy)}.card-header{background:var(--gradient-primary);color:#fff;padding:1.25rem 1.5rem;border:none;font-weight:600;font-size:1.1rem;border-radius:var(--border-radius) var(--border-radius) 0 0}.card-body{padding:1.5rem}.card-title{color:var(--primary-color);font-weight:600;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid #e2e8f0}.form-control,.form-select{border:2px solid #e2e8f0;border-radius:10px;padding:12px 16px;font-weight:500;transition:all 0.3s ease;background:#fff}.form-control:focus,.form-select:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px rgb(44 90 160 / .1);transform:translateY(-1px)}.form-label{font-weight:600;color:var(--dark-color);margin-bottom:.5rem}.birth-time-group{display:flex;gap:15px;align-items:center;flex-wrap:wrap}.birth-time-group select,.birth-time-group input{flex:1;min-width:120px}.birth-time-group small{flex-basis:100%;margin-top:.5rem;color:#6c757d;font-style:italic}.btn{border-radius:10px;padding:12px 24px;font-weight:600;border:none;transition:all 0.3s ease;position:relative;overflow:hidden}.btn:before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgb(255 255 255 / .2),transparent);transition:left 0.5s ease}.btn:hover:before{left:100%}.btn-primary{background:var(--gradient-primary);box-shadow:0 4px 15px rgb(44 90 160 / .3)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgb(44 90 160 / .4)}.list-group-item{border:1px solid #e2e8f0;padding:1rem 1.25rem;transition:all 0.3s ease;border-radius:0}.list-group-item:first-child{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}.list-group-item:last-child{border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.list-group-item:hover{background-color:#f8fafc;transform:translateX(5px);box-shadow:var(--shadow-light)}.tu-tru-display{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin:20px 0;padding:20px;background:linear-gradient(135deg,#f8fafc 0%,#edf2f7 100%);border-radius:var(--border-radius);box-shadow:var(--shadow-light)}.tu-tru-item{text-align:center;padding:20px;background:#fff;border-radius:var(--border-radius);border:2px solid #e2e8f0;transition:all 0.3s ease;box-shadow:var(--shadow-light)}.tu-tru-item:hover{transform:translateY(-5px);box-shadow:var(--shadow-medium);border-color:var(--primary-color)}.tu-tru-item h6{color:var(--primary-color);margin-bottom:15px;font-weight:600;font-size:1rem}.can-chi{font-size:1.5rem;font-weight:700;color:var(--dark-color);margin-bottom:10px}.ngu-hanh{font-size:.9rem;color:#666;margin-top:8px;font-weight:500}.nap-am{font-size:.8rem;color:var(--success-color);margin-top:10px;padding:8px 12px;background:linear-gradient(135deg,#e8f5e8 0%,#f0f9f0 100%);border-radius:8px;border:1px solid var(--success-color);font-weight:500}.tu-tru-item.nhat-chu{border-color:var(--danger-color);background:linear-gradient(135deg,#fff5f5 0%,#ffe8e8 100%)}.tu-tru-item.nhat-chu h6{color:var(--danger-color)}.tu-tru-item.nhat-chu .can-chi{color:var(--danger-color)}.tu-tru-item.nhat-chu .nap-am{background:linear-gradient(135deg,#ffebee 0%,#ffcdd2 100%);border-color:var(--danger-color);color:var(--danger-color)}.ngu-hanh-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:15px;margin:20px 0}.ngu-hanh-item{text-align:center;padding:15px;border-radius:var(--border-radius);background:#fff;border:3px solid #ddd;transition:all 0.3s ease;box-shadow:var(--shadow-light)}.ngu-hanh-item:hover{transform:translateY(-3px);box-shadow:var(--shadow-medium)}.ngu-hanh-hoa{border-color:var(--danger-color);background:linear-gradient(135deg,#fff5f5 0%,#ffe8e8 100%)}.ngu-hanh-tho{border-color:var(--warning-color);background:linear-gradient(135deg,#fffbf0 0%,#fff8e1 100%)}.ngu-hanh-kim{border-color:#6c757d;background:linear-gradient(135deg,#f8f9fa 0%,#f1f3f4 100%)}.ngu-hanh-thuy{border-color:var(--info-color);background:linear-gradient(135deg,#f0f8ff 0%,#e3f2fd 100%)}.ngu-hanh-moc{border-color:var(--success-color);background:linear-gradient(135deg,#f0fff4 0%,#e8f5e9 100%)}.missing-element{color:var(--danger-color);font-weight:700;text-shadow:0 1px 2px rgb(220 53 69 / .2)}.an-tang-detail{background:linear-gradient(135deg,#e8f4f8 0%,#f0f8ff 100%);padding:20px;border-radius:var(--border-radius);margin-top:15px;border:1px solid #b3d9ff;box-shadow:var(--shadow-light)}.an-tang-item{margin-bottom:15px;padding:15px;background:#fff;border-left:4px solid var(--primary-color);border-radius:0 8px 8px 0;box-shadow:var(--shadow-light)}.weight-high{color:var(--danger-color);font-weight:700;text-shadow:0 1px 2px rgb(220 53 69 / .2)}.weight-medium{color:var(--warning-color);font-weight:700;text-shadow:0 1px 2px rgb(255 193 7 / .2)}.weight-low{color:#6c757d;font-weight:500}.solution-box{background:linear-gradient(135deg,#fff3cd 0%,#ffeaa7 100%);border:1px solid #f0ad4e;padding:20px;border-radius:var(--border-radius);margin-top:15px;box-shadow:var(--shadow-light);border-left:4px solid var(--warning-color)}.chart-container{position:relative;height:400px;margin:20px 0;background:#fff;padding:20px;border-radius:var(--border-radius);box-shadow:var(--shadow-light)}.badge{padding:6px 12px;border-radius:20px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.text-primary{color:var(--primary-color)!important}.text-success{color:var(--success-color)!important}.text-danger{color:var(--danger-color)!important}.text-warning{color:var(--warning-color)!important}.text-info{color:var(--info-color)!important}.text-secondary{color:#6c757d!important}@media (max-width:768px){.container{padding:0 15px}.tu-tru-display{grid-template-columns:1fr;padding:15px}.ngu-hanh-summary{grid-template-columns:repeat(2,1fr)}.birth-time-group{flex-direction:column;align-items:stretch}.birth-time-group select,.birth-time-group input{min-width:auto}.card-body{padding:1rem}}@media (max-width:576px){.ngu-hanh-summary{grid-template-columns:1fr}}.loading{opacity:.6;pointer-events:none}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.02)}100%{transform:scale(1)}}.btn-primary:hover{animation:pulse 0.6s infinite}h5.card-title{font-size:1.3rem;position:relative}h6.text-primary{font-size:1.1rem;margin-bottom:1rem;position:relative}h6.text-primary:after{content:'';position:absolute;bottom:-8px;left:0;width:40px;height:3px;background:var(--primary-color);border-radius:2px}