Path: blob/master/apps/candlestick-patterns/assets/style.css
1148 views
/* =========================1Modern UI theme (Dash + DBC)2========================= */34:root {5--bg: #ffffff;6--bg-muted: #f6f7fb;7--surface: #ffffff;8--surface-2: #fbfbfd;910--text: #0f172a;11--text-muted: #475569;12--text-subtle: #64748b;1314--border: #e5e7eb;15--border-strong: #d1d5db;1617/* Active */18--primary: #2563EB;19--primary-700: #1D4ED8;2021/* RGB triples (for rgba usage) */22--ink-rgb: 15, 23, 42;23--primary-rgb: 37, 99, 235;2425/* Surfaces */26--primary-tint: #EFF6FF;27--primary-tint-2: #DBEAFE;2829--shadow-sm: 0 1px 2px rgba(var(--ink-rgb), 0.06);30--shadow-md: 0 10px 25px rgba(var(--ink-rgb), 0.08);3132/* Radius (reduced + standardized) */33--radius-sm: 8px;34--radius-md: 12px;35--radius-pill: 999px;3637/* Optional: use for tight focus rounding */38--radius-focus: 10px;3940--focus: 0 0 0 3px rgba(var(--primary-rgb), 0.20);4142/* Common alpha accents */43--primary-a35: rgba(var(--primary-rgb), 0.35);44--primary-a55: rgba(var(--primary-rgb), 0.55);45--primary-a85: rgba(var(--primary-rgb), 0.85);46}4748* { box-sizing: border-box; }4950body {51margin: 0;52padding: 16px 20px;53background: var(--bg-muted);54color: var(--text);55font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";56line-height: 1.35;57overflow-x: hidden;58}5960@media (max-width: 576px) {61body { padding: 12px 12px; }62}6364._dash-undo-redo { display: none; }6566.container.scalable,67.container-fluid.scalable {68width: 100%;69max-width: none;70}7172/* App shell spacing */73.app-shell {74max-width: 1400px;75margin: 0 auto;76}7778/* =========================79Top app header80========================= */8182.app-shell .app-banner {83display: flex;84align-items: center;85justify-content: space-between;86gap: 16px;8788padding: 14px 16px;89margin: 6px 0 14px;9091background: var(--surface);92border: 1px solid var(--border);93border-radius: var(--radius-md);94box-shadow: var(--shadow-sm);95}9697.app-shell .app-banner h6 {98margin: 0;99font-size: 16px;100font-weight: 800;101letter-spacing: 0.08em;102text-transform: uppercase;103color: var(--text);104}105106/* GitHub link styled like pill button */107.app-shell .btn-link {108display: inline-flex;109align-items: center;110justify-content: center;111112padding: 9px 12px;113border-radius: var(--radius-pill);114border: 1px solid var(--border);115background: var(--surface-2);116color: var(--text-muted);117text-decoration: none;118font-weight: 700;119font-size: 13px;120121transition: background 120ms ease, border-color 120ms ease, color 120ms ease, transform 120ms ease;122}123124.app-shell .btn-link:hover {125color: var(--primary);126border-color: var(--primary-a35);127background: var(--primary-tint);128transform: translateY(-1px);129}130131.app-shell .btn-link:focus-visible {132outline: none;133box-shadow: var(--focus);134}135136/* =========================137Cards / containers138========================= */139140.app-shell .pretty-container {141margin: 14px 0;142padding: 16px;143background: var(--surface);144border: 1px solid var(--border);145border-radius: var(--radius-md);146box-shadow: var(--shadow-md);147}148149.app-shell .card-header {150display: flex;151align-items: center;152justify-content: space-between;153154margin: -2px 0 10px;155padding: 8px 0;156157border-bottom: 1px solid var(--border);158}159160.app-shell .card-header h6 {161margin: 0;162font-size: 15px;163font-weight: 800;164letter-spacing: 0.06em;165text-transform: uppercase;166color: var(--text);167}168169/* Labels + small text */170.app-shell label {171font-size: 14px;172font-weight: 700;173color: var(--text-muted);174margin-top: 6px;175display: inline-block;176}177178.app-shell small {179color: var(--text-subtle);180}181182/* =========================183Buttons (opt-in via .btn-neutral)184========================= */185186.app-shell .btn-neutral {187appearance: none;188display: inline-flex;189align-items: center;190justify-content: center;191vertical-align: middle;192193height: 34px;194padding: 0 12px;195border-radius: var(--radius-sm);196border: 1px solid var(--border);197background: var(--surface-2);198color: var(--text-muted);199200font-weight: 700;201font-size: 14px;202box-shadow: var(--shadow-sm);203204transition: border-color 120ms ease, color 120ms ease, background 120ms ease, transform 120ms ease;205}206207.app-shell .btn-neutral:hover {208color: var(--primary);209border-color: var(--primary-a35);210background: var(--primary-tint);211transform: translateY(-1px);212}213214.app-shell .btn-neutral:focus-visible {215outline: none;216box-shadow: var(--focus);217}218219.app-shell .button-row {220display: flex;221gap: 8px;222flex-wrap: wrap;223margin-bottom: 10px;224}225226.app-shell .field-label {227display: block;228margin-top: 10px;229}230231/* =========================232Inputs / Dropdowns233========================= */234235.app-shell .input-control,236.app-shell input[type="text"],237.app-shell input[type="number"] {238width: 100%;239height: 38px;240padding: 6px 10px;241242background: var(--surface-2);243color: var(--text);244border: 1px solid var(--border);245border-radius: var(--radius-md);246box-shadow: none;247font-size: 14px;248}249250.app-shell .input-control:focus-visible,251.app-shell input[type="text"]:focus-visible,252.app-shell input[type="number"]:focus-visible {253outline: none;254border-color: var(--primary-a55);255box-shadow: var(--focus);256}257258/* Dash Dropdown legacy react-select v1 */259.app-shell .Select-control {260min-height: 38px;261background: var(--surface-2);262border: 1px solid var(--border);263border-radius: var(--radius-md);264box-shadow: none;265}266267.app-shell .Select.is-focused .Select-control {268border-color: var(--primary-a55);269box-shadow: var(--focus);270}271272.app-shell .Select-placeholder,273.app-shell .Select-value-label {274color: var(--text-subtle);275font-size: 14px;276}277278/* Dash Dropdown newer react-select hooks (future/variant-safe) */279.app-shell .Select__control {280min-height: 38px;281background: var(--surface-2);282border: 1px solid var(--border);283border-radius: var(--radius-md);284box-shadow: none;285}286287.app-shell .Select__control--is-focused {288border-color: var(--primary-a55);289box-shadow: var(--focus);290}291292.app-shell .Select__placeholder,293.app-shell .Select__single-value,294.app-shell .Select__input-container {295color: var(--text-subtle);296font-size: 14px;297}298299/* Menu */300.app-shell .Select-menu-outer,301.app-shell .Select__menu {302background: var(--surface);303color: var(--text);304border: 1px solid var(--border);305border-radius: var(--radius-md);306box-shadow: var(--shadow-md);307overflow: hidden;308}309310.app-shell .Select-option,311.app-shell .Select__option {312font-size: 14px;313}314315.app-shell .Select-option:hover,316.app-shell .Select__option--is-focused {317background: var(--primary-tint);318color: var(--primary);319cursor: pointer;320}321322/* Hide clear X (legacy) */323.app-shell span.Select-clear-zone { display: none; }324325/* =========================326Details/Summary styling (lighter, less “box in a box”)327========================= */328329.app-shell details {330background: var(--surface-2);331border: 1px solid var(--border);332border-radius: var(--radius-md);333padding: 10px 12px;334margin-top: 10px;335}336337.app-shell details + details {338margin-top: 12px;339}340341.app-shell summary.section-title {342list-style: none;343cursor: pointer;344user-select: none;345346font-size: 14px;347font-weight: 800;348color: var(--text);349letter-spacing: 0.04em;350351display: flex;352align-items: center;353justify-content: space-between;354gap: 10px;355356padding: 6px 2px;357}358359.app-shell summary.section-title::-webkit-details-marker { display: none; }360361.app-shell summary.section-title:focus-visible {362outline: none;363box-shadow: var(--focus);364border-radius: var(--radius-focus);365}366367/* =========================368RangeSlider369========================= */370371.app-shell .rc-slider { margin-top: 10px; }372373.app-shell .rc-slider-rail { background: var(--primary-tint-2); }374375.app-shell .rc-slider-track { background: var(--primary-a85); }376377.app-shell .rc-slider-handle,378.app-shell .rc-slider-dot-active {379border-color: var(--primary-a85);380background: var(--primary-a85);381}382383.app-shell .rc-slider-handle {384border-width: 1px;385box-shadow: 0 2px 10px rgba(var(--ink-rgb), 0.12);386}387388/* =========================389Checklist styling (opt-in via .checklist class or specific IDs)390========================= */391392.app-shell .checklist label,393.app-shell #yf_checklist label,394.app-shell #exit_checklist label,395.app-shell #sim_checklist label,396.app-shell #prob_checklist label,397.app-shell #stats_checklist label {398display: flex;399align-items: center;400gap: 8px;401margin: 6px 0;402color: var(--text-muted);403font-size: 14px;404}405406.app-shell .checklist input,407.app-shell #yf_checklist input,408.app-shell #exit_checklist input,409.app-shell #sim_checklist input,410.app-shell #prob_checklist input,411.app-shell #stats_checklist input {412margin-right: 8px;413}414415.app-shell input[type="checkbox"] {416accent-color: var(--primary);417}418419/* =========================420DataTable (Dash)421========================= */422423.app-shell .dash-table-container .dash-spreadsheet-container {424border: 1px solid var(--border);425border-radius: var(--radius-md);426overflow: hidden;427box-shadow: var(--shadow-sm);428}429430.app-shell .dash-spreadsheet-inner {431background: var(--surface);432}433434.app-shell .dash-spreadsheet-inner th {435background: #f8fafc;436color: var(--text-muted);437font-weight: 800;438border-bottom: 1px solid var(--border);439}440441.app-shell .dash-spreadsheet-inner td {442border-bottom: 1px solid rgba(229, 231, 235, 0.7);443color: var(--text);444}445446.app-shell .dash-table-container .dash-cell.focused,447.app-shell .dash-table-container .dash-cell.cell--selected {448outline: none;449box-shadow: inset 0 0 0 2px var(--primary-a35);450}451452.app-shell .dash-spreadsheet-inner .row { margin: 0; }453454455