.ca-skip { position: absolute; top: -100px; left: 12px; z-index: 50; background: #4cc9f0; color: #07111f; padding: 14px; }
.ca-skip:focus { top: 8px; }
#ca-app { padding-bottom: 20px; }
#ca-app [hidden] { display: none !important; }
#ca-app :is(button, input, select, summary, a):focus-visible, .ca-file-button:focus-within { outline: 3px solid #7bdff2; outline-offset: 4px; }
.ca-hero { padding: 30px 0 24px; }
.ca-hero-heading, .ca-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; }
.ca-kicker { color: var(--accent); font-size: .72rem; letter-spacing: .14em; font-weight: 800; margin: 0 0 9px; }
.ca-hero h1 { margin: 0; font-size: clamp(2.5rem, 5vw, 4rem); letter-spacing: -.045em; line-height: 1.08; }
.ca-hero h1 span { color: var(--accent); }
.ca-intro { font-size: clamp(1.08rem, 2vw, 1.25rem); margin: 18px 0 8px; }
.ca-muted { color: #b3c2d3; line-height: 1.65; }
.ca-small { font-size: .82rem; }
.ca-badge { color: #8de5bc; border: 1px solid #315247; background: #122d28; border-radius: 7px; padding: 8px 10px; font-size: .7rem; letter-spacing: .06em; font-weight: 750; }
.ca-privacy { display: flex; align-items: center; gap: 12px; color: #9bdac1; font-size: .85rem; line-height: 1.6; margin: 22px 0 0; }
.ca-panel { background: #0d1b2d; border: 1px solid #28394c; border-radius: 18px; padding: 24px; margin-bottom: 20px; min-width: 0; }
.ca-panel h2 { font-size: 1.4rem; margin: 0; letter-spacing: -.02em; }
.ca-panel h3 { margin: 0 0 8px; font-size: 1.05rem; }
.ca-section-heading { margin-bottom: 20px; }
#source-description { overflow-wrap: anywhere; max-width: 100%; font-size: .82rem; }
.ca-drop { display: flex; gap: 20px; align-items: center; border: 1px dashed #4c647d; border-radius: 12px; background: #10243a; padding: 30px 24px; transition: background .15s; }
.ca-drop.is-dragging { background: #163d50; border-color: #4cc9f0; }
.ca-drop p { margin: 0; color: #b3c2d3; font-size: .85rem; line-height: 1.6; }
.ca-file-icon { font-size: 2rem; color: var(--accent); width: 44px; flex-shrink: 0; }
.ca-file-button { position: relative; margin-left: auto; flex-shrink: 0; border-radius: 8px; background: #4cc9f0; color: #07111f; padding: 14px 20px; font-weight: 800; cursor: pointer; }
.ca-file-button input { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }
.ca-formats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 24px; }
.ca-formats span { border-left: 2px solid #35516b; padding-left: 12px; color: #b3c2d3; font-size: .8rem; line-height: 1.6; }
.ca-formats b { display: block; color: #f7fbff; font-size: .86rem; }
#ca-app button, #ca-app select, #inspect-bar { min-height: 44px; border: 1px solid #506780; border-radius: 8px; background: #12243b; color: #f7fbff; font: inherit; padding: 10px 13px; }
#ca-app button { cursor: pointer; font-size: .85rem; font-weight: 700; }
#ca-app button:hover { background: #1b3750; }
#ca-app button:disabled { opacity: .55; cursor: wait; }
#ca-app .ca-primary { background: #4cc9f0; color: #07111f; border-color: #4cc9f0; padding: 14px 28px; font-size: .95rem; }
#ca-app button.ca-primary:hover { background: #7bdff2; color: #07111f; }
.ca-mapping-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.ca-settings { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; margin-top: 22px; }
#ca-app label { font-size: .84rem; font-weight: 700; }
#ca-app select { display: block; margin-top: 8px; width: 100%; max-width: 100%; font-size: .88rem; }
.ca-note { background: #122a3d; border-left: 2px solid var(--accent); padding: 12px 16px; color: #c4d6e8; font-size: .82rem; line-height: 1.7; }
#ca-app summary { cursor: pointer; min-height: 44px; padding: 12px 0; font-size: .86rem; color: #c4d6e8; }
.ca-table-scroll { max-width: 100%; overflow: auto; margin-top: 18px; border: 1px solid #304158; border-radius: 10px; }
#preview-table { border-collapse: collapse; width: 100%; text-align: left; font-size: .8rem; white-space: nowrap; }
#preview-table caption { padding: 12px; text-align: left; color: #b3c2d3; }
#preview-table th, #preview-table td { padding: 12px; border-top: 1px solid #28394c; max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
#preview-table th { color: #c4d6e8; background: #12243b; }
.ca-form-actions { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-top: 20px; }
.ca-error { color: #ffd2bf; border: 1px solid #8a5547; background: #382621; padding: 16px; border-radius: 10px; line-height: 1.6; }
#import-status { color: #a5ddef; font-size: .85rem; overflow-wrap: anywhere; }
#import-status:empty { margin: 0; }
.ca-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; padding: 0 0 22px; margin: 0; border-bottom: 1px solid #28394c; }
.ca-stats dt { color: #b3c2d3; font-size: .8rem; margin-bottom: 8px; }
.ca-stats dd { margin: 0; font-size: 1.02rem; font-weight: 700; overflow-wrap: anywhere; }
.ca-field-badges { display: flex; flex-wrap: wrap; gap: 10px; margin: 20px 0 8px; }
.ca-field-badges span { border: 1px solid #3b5168; border-radius: 7px; padding: 8px 10px; color: #bac8d7; font-size: .8rem; }
.ca-field-badges .is-available { color: #98e9bc; border-color: #355f4e; }
#warnings-list { color: #c4d6e8; font-size: .85rem; line-height: 1.8; padding-left: 20px; }
.ca-chart-toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
#axis-label { margin-left: auto; }
#price-chart { width: 100%; height: 440px; min-width: 0; }
.ca-inspector { background: #102237; border: 1px solid #30465d; border-radius: 10px; padding: 16px; margin: 18px 0; }
.ca-inspector-controls { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; }
#inspect-bar { width: 100px; }
#bar-values { display: flex; flex-wrap: wrap; gap: 16px 24px; margin: 18px 0 0; }
#bar-values dt { color: #b3c2d3; font-size: .75rem; }
#bar-values dd { margin: 5px 0 0; font-size: .9rem; font-variant-numeric: tabular-nums; }
.ca-attribution, .ca-bottom-note { font-size: .75rem; line-height: 1.7; color: #a7b6c9; }
.ca-attribution a { text-underline-offset: 3px; }
.ca-bottom-note { text-align: center; padding: 12px; }
.ca-chart-stage { position: relative; }
.ca-plan-handle { position: absolute; z-index: 5; touch-action: none; transform: translateY(-50%); max-width: 180px; font-variant-numeric: tabular-nums; }
#ca-app .ca-plan-handle { border: 2px solid #d3e6f5; background: #153549; color: #fff; cursor: ns-resize; font-size: .75rem; }
.ca-plan { padding-top: 10px; }
.ca-plan h3 { margin: 20px 0 14px; }
#plan-fields, .ca-plan-helpers, .ca-plan-chart-controls { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 16px 0; align-items: end; }
#plan-fields fieldset { min-width: 0; border: 1px solid #30465d; border-radius: 8px; padding: 14px; }
#plan-fields { align-items: start; }
#plan-fields legend { color: #99dcec; padding-inline: 6px; font-size: .85rem; }
.ca-plan label { display: block; margin-bottom: 12px; }
.ca-plan .ca-plan-check { display: flex; align-items: center; gap: 8px; min-height: 44px; }
.ca-plan input:not([type=checkbox]) { display: block; min-height: 44px; width: 100%; margin-top: 8px; border: 1px solid #506780; border-radius: 8px; padding: 10px; background: #12243b; color: #f7fbff; font: inherit; }
.ca-plan input[type=checkbox] { width: 20px; height: 20px; vertical-align: middle; margin: 12px 10px 12px 0; accent-color: #4cc9f0; }
.ca-plan-actions { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; margin: 18px 0; }
#ca-app [data-plan-scenario][aria-pressed=true] { border-color: #7bdff2; background: #194157; }
.ca-plan-results { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.ca-plan-results section, .ca-plan-comparison section { border: 1px solid #30465d; border-radius: 8px; padding: 14px; min-width: 0; }
.ca-plan-results h4, .ca-plan-comparison h4 { margin: 0 0 14px; color: #99dcec; }
.ca-plan-results dl, .ca-plan-comparison dl { margin: 0; }
.ca-plan-results dl > div, .ca-plan-comparison dl > div { margin: 12px 0; }
.ca-plan-results dt, .ca-plan-comparison dt { font-size: .75rem; line-height: 1.5; color: #b3c2d3; }
.ca-plan-results dd, .ca-plan-comparison dd { margin: 3px 0 0; font-size: .85rem; line-height: 1.6; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.ca-plan-comparison { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.ca-plan-comparison p { font-size: .8rem; line-height: 1.6; color: #b3c2d3; }
#plan-errors, #plan-warnings { padding-left: 32px; }
@media (max-width: 700px) { #plan-fields, .ca-plan-helpers, .ca-plan-chart-controls, .ca-plan-results, .ca-plan-comparison { grid-template-columns: minmax(0, 1fr); } }
.ca-analysis-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 26px; align-items: start; }
.ca-chart-column, .ca-analysis-sidebar { min-width: 0; }
.ca-analysis-sidebar { border: 1px solid #30465d; border-radius: 12px; padding: 18px; background: #102237; }
.ca-analysis-group { border-top: 1px solid #30465d; padding-top: 18px; margin-top: 18px; }
.ca-analysis-group h3 { color: #99dcec; }
.ca-analysis-group dl, .ca-zone dl { margin: 12px 0; }
.ca-analysis-group dl > div, .ca-zone dl > div { margin: 10px 0; }
.ca-analysis-group dt, .ca-zone dt, .ca-indicator-values dt { color: #b3c2d3; font-size: .75rem; line-height: 1.5; }
.ca-analysis-group dd, .ca-zone dd, .ca-indicator-values dd { margin: 3px 0 0; color: #f1f6fc; font-size: .85rem; line-height: 1.6; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.ca-control-details { border-block-start: 1px solid #30465d; margin-block: 12px; }
#layer-controls { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 16px; }
#layer-controls fieldset, #parameter-fields fieldset { min-width: 0; border: 1px solid #30465d; border-radius: 8px; padding: 12px; }
#layer-controls legend, #parameter-fields legend { color: #99dcec; padding-inline: 6px; font-size: .8rem; }
#layer-controls label { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; margin-right: 16px; cursor: pointer; }
#layer-controls input { width: 20px; height: 20px; flex-shrink: 0; accent-color: #4cc9f0; }
#parameter-fields { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 16px; }
#parameter-fields label { display: block; margin-bottom: 12px; }
#parameter-fields input { display: block; width: 100%; min-width: 0; min-height: 44px; margin-top: 7px; padding: 10px; border: 1px solid #506780; border-radius: 8px; background: #12243b; color: #f7fbff; font: inherit; }
#parameter-fields p { font-size: .75rem; line-height: 1.6; }
#parameter-fields fieldset:disabled { opacity: .7; }
.ca-indicator-values { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.ca-zones { margin-top: 28px; }
.ca-zone { border: 1px solid #30465d; padding: 0 14px; border-radius: 8px; margin-bottom: 10px; }
.ca-zone p, .ca-zone li, #zone-list section > p { font-size: .8rem; color: #b3c2d3; line-height: 1.7; }
.ca-zone ol { padding-left: 25px; }
.ca-source-controls { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
#methodology { line-height: 1.8; font-size: .86rem; margin-top: 28px; }
#methodology li { margin-bottom: 10px; }
#analysis-status:empty { margin: 0; }
@media (max-width: 1100px) {
  .ca-analysis-layout { grid-template-columns: minmax(0, 1fr); }
  #analysis-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
  #parameter-fields { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  #layer-controls, #analysis-summary { grid-template-columns: minmax(0, 1fr); }
  #parameter-fields, .ca-indicator-values { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ca-analysis-layout { gap: 18px; }
  .ca-analysis-sidebar { padding: 14px; }
}
@media (max-width: 400px) { #parameter-fields, .ca-indicator-values { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 700px) {
  .ca-panel { padding: 18px 14px; border-radius: 12px; }
  .ca-hero { padding-top: 22px; }
  .ca-hero-heading { gap: 14px; }
  .ca-hero-heading > .ca-badge { font-size: .65rem; }
  .ca-drop { flex-direction: column; text-align: center; gap: 14px; padding: 24px 16px; }
  .ca-file-button { margin: 0; width: 100%; }
  .ca-file-icon { display: none; }
  .ca-formats, .ca-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ca-mapping-grid, .ca-settings { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  .ca-form-actions { flex-direction: column; align-items: stretch; }
  #price-chart { height: 380px; }
  #axis-label { width: 100%; margin-left: 0; }
}
@media (max-width: 400px) {
  .ca-mapping-grid, .ca-settings { grid-template-columns: minmax(0, 1fr); }
  #ca-app .ca-inspector-controls button { padding-inline: 10px; }
  #inspect-bar { width: 75px; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .ca-drop { transition: none; } }
/* Backtest: bounded forms and paged ledger; charts supplement textual values. */
.bt-workspace { margin-top: 1.5rem; }
.bt-workspace fieldset { border: 1px solid #314257; border-radius: 10px; padding: 1rem; margin: 1rem 0; min-width: 0; }
.bt-workspace legend { font-weight: 650; padding: 0 .4rem; }
.bt-workspace label { display: flex; flex-direction: column; gap: .4rem; font-size: .875rem; min-width: 0; }
.bt-workspace .ca-plan-check { flex-direction: row; align-items: center; }
.bt-fields, .bt-rule { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: .8rem; align-items: end; }
.bt-rule { padding: .8rem 0; border-bottom: 1px solid #314257; margin-bottom: .5rem; }
.bt-workspace input:not([type=checkbox]), .bt-workspace select { width: 100%; min-height: 44px; box-sizing: border-box; }
.bt-workspace button, .bt-workspace summary { min-height: 44px; }
.bt-workspace button { margin: .3rem 0; }
.bt-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .7rem; }
.bt-metrics > div { background: #0d1b2d; padding: .8rem; border: 1px solid #314257; border-radius: 8px; min-width: 0; overflow-wrap: anywhere; }
.bt-metrics dt { font-size: .8rem; color: #b9c8d9; } .bt-metrics dd { margin: .4rem 0 0; font-variant-numeric: tabular-nums; }
.bt-curves { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.bt-curves > div { min-width: 0; } .bt-curves canvas { width: 100%; height: 220px; border-radius: 8px; }
.bt-table { overflow: auto; max-width: 100%; border: 1px solid #314257; border-radius: 8px; }
.bt-table table { border-collapse: collapse; width: 100%; font-size: .85rem; }
.bt-table td, .bt-table th { text-align: left; padding: .7rem; border-bottom: 1px solid #314257; white-space: nowrap; }
.bt-table details[open] { white-space: normal; width: 300px; }
.bt-workspace pre { white-space: pre-wrap; overflow-wrap: anywhere; font-size: .8rem; }
.bt-pagination { display: flex; gap: .8rem; align-items: end; flex-wrap: wrap; }
.bt-pagination input { max-width: 120px; } .bt-workspace progress { width: 100%; }
@media (max-width: 650px) { .bt-curves { grid-template-columns: 1fr; } .bt-fields, .bt-rule { grid-template-columns: 1fr; } .bt-metrics { grid-template-columns: 1fr 1fr; } .bt-workspace fieldset { padding: .65rem; } }
.ca-demo { border-top: 1px solid #314257; margin-top: 1.4rem; padding-top: 1.2rem; }
.ca-demo-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .8rem; margin: 1rem 0; }
.ca-demo-cards button { display: flex; flex-direction: column; align-items: flex-start; gap: .4rem; padding: 1rem; text-align: left; min-height: 100px; background: #12243b; border: 1px solid #506780; }
.ca-demo-cards strong { font-size: 1.2rem; color: #7bdff2; }.ca-demo-cards small { color: #b9c8d9; font-weight: normal; }
.ca-demo-actions { display: flex; flex-wrap: wrap; gap: .7rem; }.ca-demo-actions button { min-height: 44px; }
.ca-demo-provenance { padding: 1rem; border: 1px solid #506780; border-radius: 10px; margin: 1rem 0; overflow-wrap: anywhere; }
@media (max-width: 550px) { .ca-demo-cards { grid-template-columns: 1fr; }.ca-demo-cards button { min-height: 88px; }.ca-demo-actions { flex-direction: column; align-items: stretch; } }
.opt-workspace { margin-top: 1.5rem; min-width: 0; }
.rb-workspace details { margin:1rem 0; min-width:0; }.rb-workspace p, .rb-workspace dd { overflow-wrap:anywhere; }
.rb-workspace dl { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:.4rem 1rem; }.rb-workspace dd { margin:0; }
.rb-card { border:1px solid #506780; border-radius:8px; padding:1rem; margin:1rem 0; }
.rb-plots { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:1rem; }
@media(max-width:550px) { .rb-workspace dl { grid-template-columns:1fr; }.rb-workspace dd { margin-bottom:.6rem; }.rb-plots { grid-template-columns:minmax(0,1fr); } }
.opt-range { display: grid; grid-template-columns: minmax(180px,2fr) repeat(3,minmax(90px,1fr)); gap: .7rem; align-items: end; padding: .7rem 0; border-bottom: 1px solid #314257; }
.opt-range label { min-width: 0; }.opt-range input:not([type=checkbox]) { width:100%; }
.opt-workspace figure { margin: 1rem 0; }.opt-workspace canvas { display: block; width:100%; height:auto; background:#0b192b; border:1px solid #506780; border-radius:8px; }
.opt-workspace button { min-height:44px; }.opt-workspace progress { width:100%; }
.opt-workspace label { display:block; min-width:0; }
.opt-workspace input:not([type=checkbox]) { display:block; width:100%; min-width:0; min-height:44px; box-sizing:border-box; margin-top:7px; padding:10px; border:1px solid #506780; border-radius:8px; background:#12243b; color:#f7fbff; font:inherit; }
.opt-workspace input[type=checkbox] { width:20px; height:20px; vertical-align:middle; margin:12px 8px 12px 0; accent-color:#4cc9f0; }
.opt-workspace .bt-table td, .opt-workspace .bt-table th { white-space:normal; min-width:150px; }
.opt-workspace .bt-table td:first-child { min-width:190px; }
#opt-selected { border:1px solid #7bdff2; padding:1rem; margin:1rem 0; border-radius:8px; }
#opt-selected-values { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:1rem; }
.opt-workspace td { overflow-wrap:anywhere; }.opt-workspace [aria-pressed=true] { outline:2px solid #f7d774; }
@media(max-width:550px) { .opt-range { grid-template-columns:repeat(3,minmax(0,1fr)); }.opt-range > label:first-child { grid-column:1/-1; } #opt-selected-values { grid-template-columns:1fr; } }
