:root{--color-bg-primary: #000000;--color-bg-secondary: #0a0a0a;--color-bg-tertiary: #141414;--color-bg-elevated: #1a1a1a;--color-bg-card: #0d0d0d;--color-text-primary: #ffffff;--color-text-secondary: #b0b0b0;--color-text-muted: #707070;--color-text-dim: #505050;--color-accent: #6b8cae;--color-accent-hover: #7d9bbe;--color-accent-light: rgba(107, 140, 174, .15);--color-accent-glow: rgba(107, 140, 174, .3);--color-border: #2a2a2a;--color-border-light: #3a3a3a;--color-border-subtle: #1f1f1f;--color-success: #4ade80;--color-success-bg: rgba(74, 222, 128, .1);--color-warning: #fbbf24;--color-warning-bg: rgba(251, 191, 36, .1);--color-error: #f87171;--color-error-bg: rgba(248, 113, 113, .1);--color-info: #60a5fa;--color-info-bg: rgba(96, 165, 250, .1);--font-heading: "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Monaco", "Consolas", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5);--shadow-md: 0 4px 6px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 25px rgba(0, 0, 0, .5);--shadow-xl: 0 20px 40px rgba(0, 0, 0, .6);--shadow-glow: 0 0 20px var(--color-accent-glow);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;color:var(--color-text-primary);background-color:var(--color-bg-primary);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:600;line-height:1.3;color:var(--color-text-primary);margin-bottom:var(--space-4)}h1{font-size:var(--text-4xl)}h2{font-size:var(--text-3xl)}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}h5{font-size:var(--text-lg)}h6{font-size:var(--text-base)}.display-4{font-size:2.5rem;font-weight:600;color:var(--color-text-primary)}p{color:var(--color-text-secondary);margin-bottom:var(--space-4)}.lead{font-size:var(--text-lg);color:var(--color-text-muted)}.text-primary{color:var(--color-accent)!important}.text-muted{color:var(--color-text-muted)!important}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-accent-hover)}code{font-family:var(--font-mono);font-size:.9em;background:var(--color-bg-tertiary);color:var(--color-accent);padding:.2em .4em;border-radius:var(--radius-sm);border:1px solid var(--color-border)}.main-container{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);margin:var(--space-6) auto;padding:var(--space-8);width:100%;max-width:1200px}.container-fluid{padding:var(--space-4)}.nav-container{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:var(--space-6);padding:var(--space-4)}.nav-link{color:var(--color-text-secondary);font-weight:500;text-decoration:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);transition:all var(--transition-base);display:inline-flex;align-items:center;gap:var(--space-2)}.nav-link:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.nav-link.active{background:var(--color-accent);color:var(--color-bg-primary)}.form-section{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-6);margin-bottom:var(--space-6)}.parameter-group{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:var(--space-6);overflow:hidden}.section-header{background:var(--color-bg-tertiary);padding:var(--space-3) var(--space-4);margin:0;border-bottom:1px solid var(--color-border);font-weight:600;color:var(--color-text-primary);font-size:var(--text-sm);display:flex;align-items:center;gap:var(--space-2)}.section-header i{color:var(--color-accent);opacity:.8}.parameter-box{padding:var(--space-4);background:var(--color-bg-elevated)}.about-box{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-6);height:100%}.about-box h6{color:var(--color-text-primary);font-size:var(--text-base);margin-bottom:var(--space-3)}.about-box ul{padding-left:var(--space-6);margin-bottom:var(--space-4)}.about-box li{color:var(--color-text-secondary);margin-bottom:var(--space-2)}.form-label{color:var(--color-text-secondary);font-weight:500;margin-bottom:var(--space-2);font-size:var(--text-sm)}.form-label.fw-semibold{color:var(--color-text-primary);font-weight:600}.form-label i{color:var(--color-accent);margin-right:var(--space-2);opacity:.8}.form-control,.form-select{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);padding:var(--space-3) var(--space-4);font-size:var(--text-base);transition:all var(--transition-fast)}.form-control::placeholder{color:var(--color-text-dim)}.form-control:focus,.form-select:focus{background:var(--color-bg-elevated);border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-light);color:var(--color-text-primary);outline:none}.form-control:disabled,.form-select:disabled{background:var(--color-bg-secondary);border-color:var(--color-border);color:var(--color-text-muted);cursor:not-allowed;opacity:.7}.form-text{color:var(--color-text-muted);font-size:var(--text-sm);margin-top:var(--space-2)}.form-check-input{background-color:var(--color-bg-tertiary);border:1px solid var(--color-border)}.form-check-input:checked{background-color:var(--color-accent);border-color:var(--color-accent)}.form-check-label{color:var(--color-text-secondary)}.form-range{background:transparent}.form-range::-webkit-slider-track{background:var(--color-bg-tertiary);border-radius:var(--radius-full)}.form-range::-webkit-slider-thumb{background:var(--color-accent);border:none}.form-range::-moz-range-track{background:var(--color-bg-tertiary)}.form-range::-moz-range-thumb{background:var(--color-accent);border:none}.manual-coords-section{background:var(--color-bg-secondary)!important;border:1px solid var(--color-border)!important;border-radius:var(--radius-md);transition:all var(--transition-base)}.manual-coords-section:hover{border-color:var(--color-border-light)!important}.btn{font-family:var(--font-body);font-weight:500;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);transition:all var(--transition-fast);border:1px solid transparent}.btn-primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg-primary)}.btn-primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover);transform:translateY(-1px);box-shadow:var(--shadow-glow)}.btn-primary:active{transform:translateY(0)}.btn-outline-primary{background:transparent;border-color:var(--color-accent);color:var(--color-accent)}.btn-outline-primary:hover{background:var(--color-accent);color:var(--color-bg-primary)}.btn-outline-secondary{background:transparent;border-color:var(--color-border);color:var(--color-text-secondary)}.btn-outline-secondary:hover{background:var(--color-bg-tertiary);border-color:var(--color-border-light);color:var(--color-text-primary)}.btn-secondary{background:var(--color-bg-tertiary);border-color:var(--color-border);color:var(--color-text-secondary)}.btn-secondary:hover{background:var(--color-bg-elevated);border-color:var(--color-border-light);color:var(--color-text-primary)}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--text-lg)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--text-sm)}.btn-calculate{background:var(--color-accent);border:none;border-radius:var(--radius-full);padding:var(--space-3) var(--space-8);font-weight:600;transition:all var(--transition-base)}.btn-calculate:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow)}.alert{border-radius:var(--radius-md);padding:var(--space-4);border:1px solid}.alert-info{background:var(--color-info-bg);border-color:var(--color-info);color:var(--color-info)}.alert-secondary{background:var(--color-bg-tertiary);border-color:var(--color-border);color:var(--color-text-secondary)}.alert-success{background:var(--color-success-bg);border-color:var(--color-success);color:var(--color-success)}.alert-warning{background:var(--color-warning-bg);border-color:var(--color-warning);color:var(--color-warning)}.alert-danger{background:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error)}.error-alert{display:none;position:fixed;top:var(--space-6);right:var(--space-6);z-index:1050;width:min(320px,90vw)}.plot-container{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-6);margin:var(--space-6) 0;min-height:500px;overflow:visible}.plot-container>h3{color:var(--color-text-primary);margin-bottom:var(--space-4);display:flex;align-items:center;gap:var(--space-2)}.plot-container>h3 i{color:var(--color-accent)}.preview-container{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-6);margin-bottom:var(--space-8)}.preview-container h4{color:var(--color-text-primary);margin-bottom:var(--space-4)}.summary-card{background:linear-gradient(135deg,var(--color-accent) 0%,#5a7a9a 100%);color:var(--color-bg-primary);border-radius:var(--radius-lg);padding:var(--space-6);margin:var(--space-4) 0}.summary-value{font-size:var(--text-2xl);font-weight:700;margin-bottom:var(--space-1)}.summary-label{font-size:var(--text-sm);opacity:.9}.table{color:var(--color-text-secondary);border-color:var(--color-border)}.table thead th{background:var(--color-accent);color:var(--color-bg-primary);border:none;font-weight:600;font-size:var(--text-sm);padding:var(--space-3) var(--space-4)}.table tbody tr{border-color:var(--color-border)}.table tbody tr:hover,.table-hover tbody tr:hover,.table-hover>tbody>tr:hover>*{background-color:var(--color-bg-tertiary);--bs-table-hover-bg: var(--color-bg-tertiary);--bs-table-hover-color: var(--color-text-primary);--bs-table-accent-bg: var(--color-bg-tertiary);color:var(--color-text-primary)!important}.table tbody tr:hover td,.table tbody tr:hover strong,.table-hover tbody tr:hover td,.table-hover tbody tr:hover strong{color:var(--color-text-primary)!important}.table td{padding:var(--space-3) var(--space-4);border-color:var(--color-border);vertical-align:middle}.table-striped tbody tr:nth-of-type(odd),.table-striped>tbody>tr:nth-of-type(odd)>*{background-color:var(--color-bg-elevated);--bs-table-striped-bg: var(--color-bg-elevated);--bs-table-striped-color: var(--color-text-primary);--bs-table-accent-bg: var(--color-bg-elevated);color:var(--color-text-primary)!important}.table-striped tbody tr:nth-of-type(odd) td,.table-striped tbody tr:nth-of-type(odd) strong{color:var(--color-text-primary)!important}.table-striped tbody tr:nth-of-type(2n),.table-striped>tbody>tr:nth-of-type(2n)>*{--bs-table-striped-color: var(--color-text-primary);--bs-table-accent-bg: transparent;color:var(--color-text-primary)!important}.table-striped tbody tr:nth-of-type(2n) td,.table-striped tbody tr:nth-of-type(2n) strong{color:var(--color-text-primary)!important}.table-responsive{border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--color-border)}.loading{display:none;text-align:center;padding:var(--space-8);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);margin:var(--space-6) 0}.loading p{color:var(--color-text-secondary);margin-top:var(--space-4)}.spinner-border{width:3rem;height:3rem;color:var(--color-accent)}.progress{background:var(--color-bg-tertiary);border-radius:var(--radius-full);overflow:hidden}.progress-bar{background:var(--color-accent)}.modal-content{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-text-primary)}.modal-header{background:var(--color-accent);color:var(--color-bg-primary);border-bottom:none;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-4) var(--space-6)}.modal-header .btn-close{filter:invert(1)}.modal-body{padding:var(--space-6)}.modal-footer{background:var(--color-bg-tertiary);border-top:1px solid var(--color-border);padding:var(--space-4) var(--space-6)}.compass-container{position:relative;width:120px;height:120px;margin:0 auto;border:3px solid var(--color-accent);border-radius:50%;background:radial-gradient(circle,var(--color-bg-tertiary) 0%,var(--color-bg-secondary) 100%)}.compass-directions{position:absolute;top:5px;left:5px;right:5px;bottom:5px;border-radius:50%}.compass-needle{position:absolute;top:50%;left:50%;width:2px;height:45px;background:linear-gradient(to top,var(--color-error) 0%,#ff6b6b 100%);transform-origin:bottom center;transform:translate(-50%,-100%);border-radius:1px;transition:transform var(--transition-base)}.compass-needle:before{content:"";position:absolute;top:-4px;left:-3px;width:8px;height:8px;background:var(--color-error);border-radius:50%}.compass-direction{position:absolute;font-weight:600;font-size:12px;color:var(--color-accent)}.compass-direction.north{top:2px;left:50%;transform:translate(-50%)}.compass-direction.east{right:2px;top:50%;transform:translateY(-50%)}.compass-direction.south{bottom:2px;left:50%;transform:translate(-50%)}.compass-direction.west{left:2px;top:50%;transform:translateY(-50%)}.direction-display-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-4);text-align:center}.direction-display-item{padding:var(--space-3);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md)}.direction-display-value{font-size:var(--text-lg);font-weight:600;color:var(--color-accent)}.direction-display-label{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.score-display{background:var(--color-bg-tertiary);border-radius:var(--radius-md)}.score-value{font-size:var(--text-3xl);font-weight:700;color:var(--color-accent)}.score-label{font-size:var(--text-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.score-excellent{background-color:var(--color-success-bg);color:var(--color-success)}.score-good{background-color:var(--color-info-bg);color:var(--color-info)}.score-fair{background-color:var(--color-warning-bg);color:var(--color-warning)}.score-poor{background-color:var(--color-error-bg);color:var(--color-error)}.badge{font-weight:500;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.bg-success{background-color:var(--color-success)!important}.bg-primary{background-color:var(--color-accent)!important}.bg-warning{background-color:var(--color-warning)!important;color:var(--color-bg-primary)!important}.bg-secondary{background-color:var(--color-text-muted)!important}.nav-pills .nav-link{color:var(--color-text-secondary);background:var(--color-bg-tertiary);border:1px solid var(--color-border);margin:0 var(--space-1);border-radius:var(--radius-md)}.nav-pills .nav-link:hover{color:var(--color-text-primary);background:var(--color-bg-elevated)}.nav-pills .nav-link.active{background-color:var(--color-accent);color:var(--color-bg-primary);border-color:var(--color-accent)}.collapse{background:var(--color-bg-tertiary);border-radius:var(--radius-md)}[data-bs-toggle=collapse]{cursor:pointer}.comparison-layer{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-2);position:relative}.comparison-layer.active{border-color:var(--color-accent);background:var(--color-accent-light)}.comparison-layer-title{font-weight:500;color:var(--color-text-primary)}.comparison-layer-params{font-size:var(--text-sm);color:var(--color-text-muted)}.comparison-layer-remove{border:none;background:none;color:var(--color-error);cursor:pointer;padding:var(--space-1)}.comparison-layer-remove:hover{background:var(--color-error-bg);border-radius:var(--radius-sm)}.input-group{position:relative}.input-group .btn{border-color:var(--color-border)}.input-group .form-control{border-right:none}.input-group .form-control:focus+.btn{border-color:var(--color-accent)}@media (max-width: 992px){.main-container{padding:var(--space-6)}.plot-container{padding:var(--space-4)}.display-4{font-size:2rem}}@media (max-width: 576px){body{padding:var(--space-2) 0}.main-container{padding:var(--space-4);margin:var(--space-2);border-radius:var(--radius-md)}.form-section,.plot-container{padding:var(--space-4)}.plot-container{min-height:360px}.section-header{font-size:var(--text-base)}h1.display-4{font-size:1.75rem}h3{font-size:var(--text-xl)}.btn-lg{padding:var(--space-3) var(--space-5)!important;font-size:var(--text-base)}.nav-container{padding:var(--space-3)}.nav-link{padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}}.text-sm{font-size:var(--text-sm)}.fw-semibold{font-weight:600}.bg-light{background:var(--color-bg-tertiary)!important}.rounded{border-radius:var(--radius-md)!important}.border{border-color:var(--color-border)!important}.list-group-item{background:var(--color-bg-tertiary);border-color:var(--color-border);color:var(--color-text-secondary)}.list-group-item:hover{background:var(--color-bg-elevated)}.list-group-item.active{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg-primary)}.plotly .modebar{background:var(--color-bg-tertiary)!important}.plotly .modebar-btn{color:var(--color-text-secondary)!important}.plotly .modebar-btn:hover{color:var(--color-accent)!important}#visibilityTimeline{background:var(--color-bg-tertiary);border-radius:var(--radius-md)}.loading-placeholder{color:var(--color-text-muted)}.loading-placeholder i{color:var(--color-accent)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-border-light);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}*{scrollbar-width:thin;scrollbar-color:var(--color-border-light) var(--color-bg-secondary)}::selection{background:var(--color-accent);color:var(--color-bg-primary)}::-moz-selection{background:var(--color-accent);color:var(--color-bg-primary)}
