body{margin:0;padding:0;box-sizing:border-box}:root{--color-primary-red: #D91A25;--color-bg-beige: #F4EFEC;--color-text-dark: #1A1A1A;--color-text-light: #F4EFEC;--font-family-base: "Inter", system-ui, Avenir, Helvetica, Arial, sans-serif;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 2rem;--spacing-xl: 4rem}body{background-color:var(--color-bg-beige);color:var(--color-text-dark);font-family:var(--font-family-base);margin:0;padding:0;min-height:100vh}h1,h2,h3,h4,h5,h6{color:var(--color-primary-red);text-transform:uppercase;letter-spacing:-.02em;font-weight:800}a{color:var(--color-primary-red);text-decoration:none}a:hover{text-decoration:underline}.dashboard-container{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-header{display:flex;justify-content:space-between;align-items:center;padding:.6rem 1.5rem;border-bottom:3px solid var(--color-primary-red);background:#fff}.app-header h1{margin:0;font-size:1.3rem}.app-header p{margin:0;font-size:.8rem;font-weight:600;color:#666}.header-right{display:flex;align-items:center;gap:1rem}.header-right .stat{background:var(--color-bg-beige);padding:.25rem .6rem;border-radius:4px;font-size:.8rem;font-weight:600}.reset-btn{background:#2c2c2c;color:#fff;border:none;padding:.4rem 1rem;border-radius:4px;cursor:pointer;font-weight:700;font-size:.8rem}.reset-btn:hover{background:#444}.main-layout{flex:1;display:flex;gap:.75rem;padding:.75rem;overflow:hidden}.sidebar-left{width:280px;min-width:280px;overflow-y:auto}.graph-section{flex:1;display:flex;flex-direction:column;border:1px solid #ddd;border-radius:8px;overflow:hidden;background:#fff;min-width:0}.sidebar-right{width:340px;min-width:340px;overflow-y:auto}.graph-legend{display:flex;gap:1rem;padding:.4rem 1rem;background:#fff;border-top:1px solid #eee;font-size:.75rem}.legend-item{display:flex;align-items:center;gap:4px}.dot{width:10px;height:10px;border-radius:50%;display:inline-block}.dot.green{background:#4caf50}.dot.orange{background:#ff9800}.dot.red{background:#d91a25}.error-banner{background:#fee;color:#c00;padding:.5rem 1rem;font-weight:600;text-align:center;font-size:.85rem}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:1rem}.spinner{width:40px;height:40px;border:4px solid #ddd;border-top-color:var(--color-primary-red);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.placeholder-panel{background:#fff;border:1px solid #ddd;border-radius:8px;padding:1rem}.placeholder-panel p{color:#888;font-size:.85rem}.control-panel{background:#fff;border:1px solid #ddd;border-radius:8px;padding:1rem}.control-panel h2{margin-top:0;font-size:1rem}.mode-toggle{display:flex;gap:0;margin-bottom:1rem}.mode-toggle button{flex:1;padding:.4rem;border:2px solid var(--color-primary-red);background:#fff;color:var(--color-primary-red);font-weight:700;cursor:pointer;font-size:.8rem}.mode-toggle button:first-child{border-radius:4px 0 0 4px}.mode-toggle button:last-child{border-radius:0 4px 4px 0}.mode-toggle button.active{background:var(--color-primary-red);color:#fff}.simulation-type-toggle{margin-bottom:1rem;padding:.75rem;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:6px;border:1px solid #dee2e6}.simulation-type-toggle label{display:block;font-size:.75rem;font-weight:700;color:#495057;margin-bottom:.4rem;text-transform:uppercase;letter-spacing:.5px}.sim-type-buttons{display:flex;gap:0}.sim-type-buttons button{flex:1;padding:.4rem .5rem;border:2px solid #495057;background:#fff;color:#495057;font-weight:700;cursor:pointer;font-size:.75rem;transition:all .2s}.sim-type-buttons button:first-child{border-radius:4px 0 0 4px}.sim-type-buttons button:last-child{border-radius:0 4px 4px 0}.sim-type-buttons button.active{background:#495057;color:#fff}.sim-type-buttons button:hover:not(.active){background:#f8f9fa}.sim-type-description{margin-top:.4rem;font-size:.7rem;color:#6c757d;font-style:italic;text-align:center}.shock-config{margin-bottom:.75rem}.shock-config label{display:block;font-size:.8rem;font-weight:600;margin-bottom:.3rem;margin-top:.5rem}.shock-config select,.shock-config input[type=range]{width:100%;accent-color:var(--color-primary-red)}.shock-config select{padding:.4rem;border:1px solid #ccc;border-radius:4px;font-size:.8rem}.range-labels{display:flex;justify-content:space-between;font-size:.7rem;color:#888}.stock-shock-list{max-height:220px;overflow-y:auto}.stock-shock-row{display:flex;align-items:center;gap:.4rem;padding:.2rem 0;font-size:.8rem}.stock-shock-row .ticker{font-weight:700;width:55px}.stock-shock-row .price{color:#666;width:60px;text-align:right}.stock-shock-row input{width:50px;padding:.2rem .3rem;border:1px solid #ccc;border-radius:4px;text-align:right;font-size:.8rem}.stock-shock-row .pct{color:#888}.threshold-config{margin:.75rem 0}.threshold-config label{display:block;font-size:.8rem;font-weight:600;margin-bottom:.3rem}.threshold-config input{width:100%;accent-color:var(--color-primary-red)}.run-btn{width:100%;padding:.6rem;background:var(--color-primary-red);color:#fff;border:none;border-radius:4px;font-weight:800;font-size:.9rem;cursor:pointer;text-transform:uppercase;letter-spacing:.5px}.run-btn:hover{opacity:.9}.run-btn:disabled{background:#aaa;cursor:not-allowed}.stock-search-container{position:relative;margin-bottom:.5rem}.stock-search-input{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.85rem;box-sizing:border-box}.stock-search-input:focus{border-color:var(--color-primary-red);outline:none;box-shadow:0 0 0 2px #d91a251a}.stock-dropdown{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ddd;border-top:none;border-radius:0 0 4px 4px;max-height:250px;overflow-y:auto;z-index:100;box-shadow:0 4px 12px #00000026}.stock-dropdown-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;cursor:pointer;font-size:.8rem;transition:background .15s}.stock-dropdown-item:hover{background:var(--color-bg-beige)}.stock-dropdown-item.selected{background:#e8f5e9}.stock-dropdown-item .ticker{font-weight:700;min-width:50px}.stock-dropdown-item .price{color:#666;flex:1}.stock-dropdown-item .check{color:#4caf50;font-weight:700}.stock-dropdown-hint{padding:.4rem .75rem;font-size:.7rem;color:#888;background:#f8f8f8;text-align:center;border-top:1px solid #eee}.selected-stocks{margin-top:.75rem;padding-top:.5rem;border-top:1px solid #eee}.stock-shock-row .remove-btn{background:none;border:none;color:#c00;font-size:1.1rem;cursor:pointer;padding:0 .3rem;line-height:1;opacity:.7;transition:opacity .15s}.stock-shock-row .remove-btn:hover{opacity:1}.stock-hint{color:#888;font-size:.8rem;font-style:italic;padding:.5rem 0}.forecast-results{background:#fff;border:1px solid #ddd;border-radius:8px;padding:1rem}.forecast-results h2{margin-top:0;font-size:1rem;color:#1a1a1a}.forecast-shock-summary{background:var(--color-bg-beige);padding:.5rem .75rem;border-radius:4px;font-size:.85rem;margin-bottom:1rem}.period-selector{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin-bottom:1rem}.period-btn{padding:.5rem;border:2px solid #ddd;border-radius:6px;background:#fff;cursor:pointer;text-align:center;transition:all .2s}.period-btn:hover{border-color:var(--color-primary-red)}.period-btn.active{border-color:var(--color-primary-red);background:var(--color-primary-red);color:#fff}.period-btn.has-failures{border-color:#ff9800}.period-btn.active.has-failures{background:#ff9800;border-color:#ff9800}.period-label{font-weight:700;font-size:.75rem}.period-days{font-size:.65rem;opacity:.7}.period-failures{font-size:.65rem;margin-top:.2rem}.forecast-details{background:#f8f9fa;border-radius:6px;padding:.75rem;margin-bottom:1rem}.forecast-details h3{margin:0 0 .75rem;font-size:.9rem;color:#333}.forecast-details h4{margin:.75rem 0 .5rem;font-size:.8rem;color:#555}.forecast-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:.75rem}.metric-card{background:#fff;border-radius:6px;padding:.5rem;text-align:center;border:2px solid #eee}.metric-card.safe{border-color:#4caf50;background:#e8f5e9}.metric-card.warning{border-color:#ff9800;background:#fff8e1}.metric-card.danger{border-color:#d91a25;background:#ffebee}.metric-value{font-size:1.1rem;font-weight:800;color:#1a1a1a}.metric-label{font-size:.65rem;color:#666;text-transform:uppercase;font-weight:600}.target-bank-health{margin:.75rem 0}.target-bank-health label{display:block;font-size:.75rem;font-weight:600;margin-bottom:.3rem}.health-bar-full{height:12px;background:#eee;border-radius:6px;overflow:hidden}.health-bar-fill{height:100%;border-radius:6px;transition:width .5s ease}.health-value{font-size:.75rem;font-weight:600;text-align:right;margin-top:.2rem}.stock-projections table,.comparison-table{width:100%;border-collapse:collapse;font-size:.75rem}.stock-projections th,.comparison-table th{text-align:left;padding:.3rem;border-bottom:2px solid var(--color-primary-red);font-size:.7rem;text-transform:uppercase}.stock-projections td,.comparison-table td{padding:.3rem;border-bottom:1px solid #eee}.stock-projections .ticker{font-weight:700}.stock-projections .shocked{color:#d91a25}.stock-projections .positive{color:#4caf50;font-weight:600}.stock-projections .negative{color:#d91a25;font-weight:600}.comparison-table tr.selected{background:var(--color-bg-beige)}.comparison-table td.safe{color:#4caf50;font-weight:600}.comparison-table td.warning{color:#ff9800;font-weight:600}.comparison-table td.danger{color:#d91a25;font-weight:600}.failed-banks-forecast,.timeline-summary{margin-top:.75rem}.mini-chart{display:flex;align-items:flex-end;gap:2px;height:60px;background:#fff;border-radius:4px;padding:.5rem;border:1px solid #eee}.chart-bar{flex:1;min-width:4px;border-radius:2px 2px 0 0;transition:height .3s}.chart-labels{display:flex;justify-content:space-between;font-size:.65rem;color:#888;margin-top:.2rem}.period-comparison{margin-top:.75rem}.period-comparison h4{margin:0 0 .5rem;font-size:.8rem;color:#555}.simulation-results{background:#fff;border:1px solid #ddd;border-radius:8px;padding:1rem}.simulation-results h2{margin-top:0;font-size:1rem}.simulation-results h3{font-size:.85rem;margin:.75rem 0 .3rem}.result-cards{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.75rem}.card{background:#fff;border-radius:6px;padding:.5rem;text-align:center;border:1px solid #ddd}.card.danger{background:#fff;border:1px solid #D91A25;color:#d91a25}.card.danger .card-value{color:#d91a25}.card.warning{background:#fff;border:1px solid #FF9800;color:#ff9800}.card.warning .card-value{color:#ff9800}.card.safe{background:#fff;border:1px solid #4CAF50;color:#4caf50}.card.safe .card-value{color:#4caf50}.card.ccp-card.safe{border-color:#4caf50;color:#4caf50}.card.ccp-card{border-width:2px;grid-column:span 2}.card.ccp-card.warning{background:#fff;border-color:#ff9800;color:#ff9800}.card.ccp-card.warning .card-value{color:#ff9800}.card-value{font-size:1.2rem;font-weight:800;color:inherit}.card-label{font-size:.65rem;color:#666;font-weight:600;text-transform:uppercase}.collapse-banner{background:#d91a25;color:#fff;text-align:center;padding:.5rem;font-weight:800;border-radius:4px;margin-bottom:.5rem;animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.failed-tags{display:flex;flex-wrap:wrap;gap:.3rem}.failed-tag{background:#d91a25;color:#fff;padding:.15rem .5rem;border-radius:3px;font-size:.75rem;font-weight:700}.affected-table{margin-top:.5rem}.affected-table table{width:100%;border-collapse:collapse;font-size:.75rem}.affected-table th{text-align:left;padding:.3rem;border-bottom:2px solid var(--color-primary-red);font-size:.7rem;text-transform:uppercase}.affected-table td{padding:.3rem;border-bottom:1px solid #eee}.row-failed{background:#fee}.health-bar-wrapper{display:flex;align-items:center;gap:4px}.health-bar{height:8px;border-radius:4px;min-width:2px}.health-bar-wrapper span{font-size:.7rem}.contagion-timeline{margin-top:.5rem}.timeline-step{display:flex;align-items:center;gap:.5rem;padding:.2rem 0;font-size:.75rem}.round-num{background:#2c2c2c;color:#fff;padding:.1rem .4rem;border-radius:3px;font-weight:700;font-size:.7rem}.round-info{color:#444}
