@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;600;700&display=swap');
:root{font-family:'DM Sans',-apple-system,BlinkMacSystemFont,sans-serif;color:#182445;background:#f7f8fc;font-synthesis:none;--blue:#4058df;--muted:#73809a;--line:#e5e9f2;--green:#128567;--red:#d65765}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer}button{border:0;background:none;color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #8c9fff;outline-offset:3px}button:disabled{opacity:.55;cursor:wait}button:hover{filter:brightness(.97)}[hidden]{display:none!important}.mast{height:86px;border-bottom:1px solid var(--line);background:white;display:flex;align-items:center;justify-content:space-between;padding:0 max(28px,calc((100% - 1180px)/2));gap:20px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:#172544;font-size:26px;font-weight:700;letter-spacing:-1.2px}.one{color:var(--blue)}.brandmark{background:var(--blue);color:white;border-radius:12px;display:grid;place-items:center;width:39px;height:43px;font-size:28px;font-style:italic}.brand small{display:block;font-size:9px;letter-spacing:1.7px;color:var(--muted);margin-top:2px}.source{display:flex;align-items:center;gap:8px;font-size:12px;color:#5a657a}.source button{font-size:26px;padding:6px}.dot{width:7px;height:7px;border-radius:50%;background:#c39740}.workspace{max-width:1180px;margin:auto;padding:36px 0 70px}.pagehead{display:flex;justify-content:space-between;align-items:center;gap:20px}.eyebrow{font-size:10px;font-weight:800;letter-spacing:1.7px;color:var(--blue)}h1,h2,h3{font-family:Manrope,-apple-system,sans-serif;margin:0;letter-spacing:-1px}h1{font-size:38px;margin-top:6px}.search{background:white;border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;padding:9px 13px;gap:10px;width:340px}.search>span{font-size:28px;color:#748099}.search input{border:0;outline:0;min-width:0;width:100%;font-size:13px}.search kbd{background:#f5f6fb;color:#8290a6;padding:4px 7px;border-radius:5px}.tabs{display:flex;gap:34px;border-bottom:1px solid #dfe4ef;margin-top:24px}.tabs button{padding:19px 0;font-weight:600;color:#76829a;position:relative;white-space:nowrap}.tabs .active{color:var(--blue)}.tabs .active:after{content:'';position:absolute;height:3px;background:var(--blue);bottom:-1px;left:0;right:0;border-radius:4px}.tabs span{font-size:10px;background:#ebeffb;padding:3px 6px;border-radius:5px;margin-left:5px}.status{font-size:12px;color:#8b642b;background:#fff6e8;border:1px solid #f4e3c9;padding:11px 16px;border-radius:9px;margin-top:22px;line-height:1.6}.status.error{background:#fff0f0;color:#ae374b}.intro{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:29px 0 24px}.intro h2{font-size:30px;margin:8px 0}.intro p{color:var(--muted);font-size:14px;margin:0}.seg{display:inline-flex;gap:4px;padding:4px;background:#eaf0fa;border-radius:10px;flex-shrink:0}.seg button{padding:9px 17px;border-radius:7px;font-size:13px;color:#66748d;font-weight:600}.seg button.active{background:white;color:var(--blue);box-shadow:0 2px 7px #2034650b}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}.selects{display:flex;gap:9px;flex-wrap:wrap}.selects label{font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);display:flex;flex-direction:column;gap:5px}select{border:1px solid var(--line);background:white;color:#354362;border-radius:8px;padding:9px 25px 9px 10px;font-size:12px;max-width:170px}.resultbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:26px 0 17px;font-size:12px;color:var(--muted)}.resultbar>div{display:flex;align-items:center;gap:15px}.check{display:flex;gap:5px;align-items:center;font-size:11px}input[type=checkbox]{accent-color:var(--blue)}.textbutton{color:var(--blue);font-weight:600;font-size:12px;padding:5px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px}.pattern{position:relative;text-align:left;background:white;border:1px solid var(--line);border-radius:15px;padding:20px;min-height:205px;transition:border-color .16s,transform .16s,box-shadow .16s}.pattern:hover{border-color:#a1aff9;transform:translateY(-2px);box-shadow:0 8px 28px #2c478110}.pattern.selected{border:2px solid var(--blue);padding:19px;background:#fafbff;box-shadow:0 4px 20px #4058df10}.pattern .glyph{display:block;width:88px;height:65px;margin:10px auto 19px}.glyph svg{width:100%;height:100%}.pattern strong{font-size:14px;display:block;letter-spacing:-.2px;line-height:1.5}.pattern .meta{display:flex;justify-content:space-between;margin-top:9px;font-size:10px;color:var(--muted);gap:5px}.round{position:absolute;right:15px;top:15px;border:1px solid #e2e7f1;border-radius:50%;width:19px;height:19px;display:grid;place-items:center;font-size:12px;color:transparent}.selected .round{background:var(--blue);border-color:var(--blue);color:white}.direction{position:absolute;top:17px;left:17px;font-size:9px;text-transform:uppercase;letter-spacing:.5px;font-weight:700}.bull{color:var(--green)}.bear{color:var(--red)}.signalgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.signal{background:white;border:1px solid var(--line);border-radius:13px;position:relative;padding:19px 21px;text-align:left}.signal:hover{border-color:#b6c0f6}.sighead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-right:30px}.sighead strong{font-size:16px;letter-spacing:-.4px}.sighead small{display:block;color:var(--muted);font-size:11px;margin:5px 0;max-width:230px}.sigpattern{display:flex;gap:14px;align-items:center;margin-top:17px}.sigpattern .glyph{width:38px;height:34px;flex-shrink:0}.sigpattern b{font-size:13px}.sigpattern small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.sigbottom{border-top:1px solid #f0f2f8;padding-top:13px;margin-top:16px;display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.save{position:absolute;right:12px;top:13px;color:var(--blue);font-size:24px;padding:3px 8px;z-index:1}.tag{font-size:10px;padding:4px 7px;border-radius:5px;background:#f0f3fb}.selection{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);width:min(610px,calc(100% - 32px));z-index:5;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 17px;background:white;border:1px solid #dce2f3;box-shadow:0 9px 45px #1e32652b;border-radius:14px}.selection>div{font-size:13px}.selection strong{display:block;margin-bottom:3px}.primary{background:var(--blue);color:white;border-radius:9px;padding:14px 25px;font-weight:600;font-size:13px}.primary span{margin-left:25px}.empty{padding:70px 20px;text-align:center;background:white;border:1px dashed #dce2f0;border-radius:15px;color:var(--muted);line-height:1.8}.empty strong{display:block;color:#243352;font-size:20px;margin-bottom:10px}.foot{text-align:center;color:#919ab0;font-size:11px;line-height:1.9;margin:40px auto 25px;max-width:720px}#pagination{text-align:center;margin:25px}#pagination button{border:1px solid var(--line);background:white;padding:12px 24px;border-radius:8px;color:var(--blue)}dialog{width:min(990px,calc(100% - 36px));max-height:92dvh;padding:27px;border:0;border-radius:19px;box-shadow:0 20px 90px #16234840;color:#192649}dialog::backdrop{background:#101a3d77;backdrop-filter:blur(4px)}.dialoghead{display:flex;align-items:center;justify-content:space-between;gap:20px}.dialoghead h2{font-size:24px;margin-top:7px}.close{font-size:33px;color:#737f96;line-height:1;padding:9px}.detailtags{display:flex;gap:9px;flex-wrap:wrap;margin:20px 0}.chart{height:340px;border:1px solid var(--line);border-radius:12px;overflow:hidden}.detailcolumns{display:grid;grid-template-columns:1.1fr 1fr;gap:30px;margin-top:23px}.detailcolumns h3{font-size:16px;margin-bottom:10px}.detailcolumns p{font-size:13px;color:#69768f;line-height:1.8}.stats{display:grid;grid-template-columns:1fr 1fr;gap:14px}.stats span{font-size:11px;color:var(--muted)}.stats strong{display:block;font-size:20px;margin:7px 0}.detailnote{font-size:11px;color:#8490a6;line-height:1.8;margin-top:20px}#toast{position:fixed;top:18px;left:50%;transform:translateX(-50%);padding:12px 20px;background:#1e2c52;color:white;border-radius:9px;z-index:30;font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s}#toast.show{opacity:1}
@media(max-width:1220px){.workspace{padding:30px 25px 80px}}@media(max-width:800px){.grid{grid-template-columns:repeat(3,1fr)}.signalgrid{grid-template-columns:1fr}.intro{align-items:flex-start}.intro h2{font-size:25px}.toolbar{align-items:flex-start}.source{max-width:270px}.search{width:290px}.selects{width:100%}.selects label{flex:1}.selects select{width:100%;max-width:none}}
@media(max-width:540px){body{background:white}.mast{height:68px;padding:0 19px}.brand{font-size:22px}.brandmark{width:31px;height:35px;font-size:23px;border-radius:9px}.brand small{font-size:7px}.source{font-size:9px;max-width:158px;gap:5px}.source button{font-size:23px}.workspace{padding:23px 18px 100px}.pagehead{display:block}.pagehead .eyebrow{display:none}h1{font-size:30px}.search{width:100%;margin-top:20px;padding:5px 12px;background:#f8f9fd}.search input{background:transparent}.tabs{gap:0;justify-content:space-between;margin-top:10px}.tabs button{font-size:12px;padding:19px 0}.tabs span{font-size:9px;margin-left:3px}.status{font-size:10px;margin-top:17px;padding:9px 11px}.intro{margin:25px 0 20px;flex-wrap:wrap;gap:17px}.intro h2{font-size:26px}.intro p{font-size:12px}.seg button{padding:9px 15px;font-size:12px}.toolbar{gap:14px}.selects{display:grid;grid-template-columns:1fr 1fr;gap:10px}.selects label{font-size:8px}.selects select{font-size:11px;min-height:37px}.resultbar{font-size:10px;align-items:flex-start;gap:5px;margin:21px 0 14px}.resultbar>div{gap:6px}.check{font-size:9px;max-width:125px}.grid{grid-template-columns:1fr 1fr;gap:12px}.pattern{border-radius:13px;padding:14px;min-height:185px}.pattern.selected{padding:13px}.pattern .glyph{width:72px;height:58px;margin:20px auto 15px}.pattern strong{font-size:12px;line-height:1.5}.pattern .meta{font-size:9px;margin-top:7px}.direction{font-size:8px;left:13px;top:14px}.round{width:16px;height:16px;right:12px;top:12px;font-size:10px}.selection{bottom:max(10px,env(safe-area-inset-bottom));padding:12px;border-radius:12px;width:calc(100% - 24px)}.primary{padding:13px 18px}.selection>div{font-size:11px}.primary span{margin-left:12px}.signal{padding:17px}.sighead strong{font-size:15px}.sighead small{max-width:180px}.sigbottom{font-size:9px}.foot{font-size:10px}.detailcolumns{grid-template-columns:1fr;gap:15px}dialog{padding:19px;width:calc(100% - 16px);max-height:96dvh;border-radius:13px}.dialoghead h2{font-size:21px}.chart{height:300px}.detailtags{gap:5px}.tag{font-size:9px}.stats strong{font-size:19px}}

.filter-toggle{display:none}@media(max-width:540px){.filter-toggle{display:block;padding:10px;color:var(--blue);font-size:12px;font-weight:600}.selects{display:none}.selects.expanded{display:grid}.toolbar{justify-content:space-between}.intro .eyebrow{display:none}.intro{margin:21px 0 18px}.status{font-size:9px}.source{line-height:1.4}}
/* Angel screenshot reference: white native app chrome, Roboto, flat separators. */

:root{font-family:Roboto,Arial,sans-serif;color:#202832;background:#f3f4f8;--blue:#435ce7;--muted:#536174;--line:#e7e9f0;--green:#009b87;--red:#e54e52}.workspace{max-width:480px;min-height:100vh;margin:0 auto;padding:0 0 125px;background:white}h1,h2,h3{font-family:Roboto,Arial,sans-serif;letter-spacing:0}button,input,select{font-family:inherit}.angel-header{display:flex;align-items:center;gap:11px;padding:20px 10px 14px}.header-action{padding:0;display:flex;align-items:center;flex-direction:column;gap:5px;font-size:11px;flex-shrink:0;color:#202832}.header-action>span{width:33px;height:33px;border-radius:50%;background:#f5f6fc;display:grid;place-items:center}.header-action svg{width:22px;height:22px;fill:none;stroke:#35446e;stroke-width:1.25}.search{width:auto;flex:1;margin:0;gap:7px;padding:11px 8px;border:1px solid #e1e4ec;border-radius:8px;background:white;min-width:0}.search svg{width:18px;height:18px;fill:none;stroke:#a6adba;stroke-width:1.6;flex-shrink:0}.search input{font-size:13px;color:#202832;background:white}.search input::placeholder{color:#a6adba}.pagehead{padding:10px 16px 3px}.pagehead h1{font-size:21px;font-weight:600;margin:0}.tabs{margin:0;gap:0;justify-content:space-around;border-bottom:1px solid var(--line);padding:0 8px}.tabs button{font-size:14px;font-weight:500;padding:20px 0 15px;color:#485668}.tabs span{display:none}.tabs .active:after{height:3px;left:14%;right:14%;border-radius:0}.intro{padding:20px 16px 0;margin:0 0 20px;display:block;border-top:7px solid #f4f5fa}.intro .eyebrow{display:none}.intro h2{font-size:19px;font-weight:600;margin:0 0 8px}.intro p{font-size:12px;color:#647084;line-height:1.5}.intro .seg{display:flex;background:none;padding:0;margin-top:16px;gap:12px}.seg{background:none;padding:0;gap:8px}.seg button{border:1px solid #e5e8f0;border-radius:25px;padding:9px 19px;font-size:14px;font-weight:400;color:#202832;box-shadow:none}.seg button.active{border:1px solid var(--blue);background:white;color:var(--blue);box-shadow:none}.intro .seg button{font-size:12px;padding:6px 13px}.toolbar{padding:0 16px;gap:14px}.filter-toggle{display:block;padding:8px 0;font-size:12px;color:var(--blue);font-weight:400}.selects{display:none;width:100%}.selects.expanded{display:grid;grid-template-columns:1fr 1fr;gap:10px}.selects label{font-size:9px}.selects select{max-width:none;width:100%;font-size:12px;border-radius:6px}.resultbar{margin:18px 16px 13px;font-size:10px;align-items:center}.resultbar>div{gap:4px}.check{font-size:9px;max-width:115px}.textbutton{font-size:11px;font-weight:400}#content{padding:0 16px}.grid{grid-template-columns:1fr 1fr;gap:13px}.pattern{padding:15px;min-height:172px;border:1px solid #e3e6ee;border-radius:8px;box-shadow:none;background:white}.pattern:hover{transform:none;box-shadow:none}.pattern.selected{border:1.5px solid var(--blue);padding:14.5px;background:#fcfcff;box-shadow:none}.pattern .glyph{width:76px;height:61px;margin:15px auto 13px}.pattern strong{font-size:13px;letter-spacing:0;font-weight:500;line-height:1.4}.pattern .meta{font-size:10px;margin-top:8px}.direction{font-size:8px;left:13px;top:12px;letter-spacing:.15px;font-weight:500}.round{right:11px;top:11px;width:16px;height:16px}.signalgrid{display:block}.signal{border:0;border-bottom:1px solid var(--line);border-radius:0;padding:20px 0;margin:0}.sighead strong{font-size:16px;font-weight:500}.sighead b{font-size:16px;font-weight:400}.sighead small{font-size:12px}.sigpattern b{font-weight:500}.sigbottom{border:0;margin-top:14px;padding-top:0}.save{right:-6px}.selection{bottom:calc(74px + env(safe-area-inset-bottom));width:min(480px,100%);padding:12px 16px;border:0;border-top:1px solid var(--line);border-radius:0;box-shadow:0 -3px 9px #16264b08}.primary{border-radius:5px;font-size:14px;font-weight:500;padding:13px 20px}.bottomnav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(480px,100%);display:flex;justify-content:space-around;align-items:flex-start;padding:12px 0 calc(17px + env(safe-area-inset-bottom));background:white;z-index:10;border-top:1px solid #f2f3f6}.bottomnav button{padding:0;display:flex;flex-direction:column;align-items:center;gap:7px;width:20%;font-size:10px;color:#485668;font-weight:500}.bottomnav svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linejoin:round;stroke-linecap:round}.bottomnav .active{color:var(--blue)}.foot{padding:12px 16px;margin:20px 0;font-size:9px}.source{justify-content:center;max-width:none;font-size:10px}.status{background:#f7f8fb;border:0;border-radius:4px;color:#667286;font-size:10px;margin:8px 0;line-height:1.5;padding:8px}.status.error{color:#bd4148}.eyebrow{letter-spacing:.6px}.dialoghead h2{font-size:20px}.chart{border-radius:4px}.detailtags .tag{border-radius:3px}.empty{border-radius:5px;font-size:13px}.intro h2,.pattern strong,.sighead strong{-webkit-font-smoothing:antialiased}@media(min-width:541px){.workspace{box-shadow:0 0 0 1px #e7e9ef}.resultbar>div{gap:4px}.toolbar{flex-wrap:wrap;justify-content:space-between}.detailcolumns{grid-template-columns:1.1fr 1fr}}
/* Supplied Watchlist reference, 25 September. */
.reference-search{padding:19px 12px 9px;background:#f5f6fb;border-bottom:1px solid #e7e9f0}.reference-search .search{padding:11px 9px;border-radius:11px}.reference-search input{font-size:14px}.indexstrip{display:flex;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid #e7e9f0;padding:8px 0 7px}.indexstrip::-webkit-scrollbar{display:none}.indexquote{min-width:185px;padding:0 12px;border-right:1px solid #e1e5ef}.indexquote>div{display:flex;justify-content:space-between;align-items:center;gap:14px;font-size:12px}.indexquote b{font-weight:500}.indexquote>div>span{font-size:10px;background:#f4f5fa;padding:2px 4px;border-radius:4px}.indexquote p{display:flex;gap:8px;white-space:nowrap;margin:4px 0 0;font-size:12px;color:#536174}.indexquote strong{color:#009b87;font-weight:500}.tabs{padding:0 0 0 16px;justify-content:flex-start;gap:22px;align-items:stretch}.tabs button{font-size:13px;font-weight:500;padding:17px 0 16px}.tabs .active:after{left:0;right:0;height:3px}.tabs #add-watchlist{margin-left:auto;padding:11px 14px;border-left:1px solid #e7e9f0;font-size:26px;color:#202832;font-weight:400}.optioncontrols{display:flex;gap:10px;align-items:center;overflow:hidden;padding:9px 8px 5px;white-space:nowrap}.callput{border:1px solid #e5e8f0;border-radius:24px;display:flex;padding:3px;flex-shrink:0}.callput button{font-size:16px;padding:3px 8px;color:#536174}.callput .active{color:white;background:#4058df;border-radius:20px}.indexpill{display:flex;align-items:center;gap:11px;border:1px solid #d1d8fc;border-radius:25px;padding:0 12px 0 0;font-size:12px;flex-shrink:0}.indexpill button{padding:8px 16px;border:1px solid #435ce7;border-radius:24px;color:#435ce7;font-size:16px}.blue{color:#435ce7;font-size:20px}.bankpill{border:1px solid #e5e8f0;border-radius:24px;padding:8px 16px;font-size:15px;flex-shrink:0}.reference-row{margin:0 16px;padding:19px 0 13px;border-bottom:1px solid #e4e7ef;display:flex;justify-content:space-between;gap:8px}.contract-name{font-size:17px;display:flex;gap:6px;align-items:center}.money{font-size:11px;padding:3px 4px;border-radius:2px}.itm{background:#e1f3ef}.atm{background:#fff0d5}.otm{background:#e9eafd}.contract-detail{font-size:14px;color:#536174;margin-top:9px;white-space:nowrap}.contract-detail b{font-weight:500}.contract-price{text-align:right;white-space:nowrap}.contract-price strong{font-size:17px;color:#009b87;font-weight:400;display:block}.contract-price strong small{font-size:11px;margin-left:3px}.contract-price>span{display:block;margin-top:10px;font-size:13px;color:#536174}.optionactions{display:flex;gap:5px;padding:10px 16px 0}.optionactions button{flex:1;padding:12px 7px;background:#f5f6fc;border-radius:30px;color:#435ce7;font-size:15px}.snapshot-note{font-size:9px;color:#7b8594;text-align:center;padding:0 14px}.workspace{padding-bottom:82px}.foot{margin:10px 0}.bottomnav{padding-top:12px}.intro{border-top:0}.tabs span{display:none}@media(max-width:380px){.tabs{gap:15px}.tabs button{font-size:12px}.tabs #add-watchlist{padding-left:10px;padding-right:10px}.contract-detail{font-size:13px}.contract-price>span{font-size:12px}}
.scanner-categories{display:flex;padding:13px 12px;gap:7px;border-bottom:6px solid #f5f6fb}.scanner-categories button{flex:1;padding:10px 4px;border:1px solid #e5e8f0;border-radius:6px;font-size:11px;line-height:1.35;color:#536174}.scanner-categories button.active{border-color:#435ce7;color:#435ce7;background:#f6f7ff}.mover-types{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:18px 16px 8px}.mover-types button{border:1px solid #e3e6ee;border-radius:7px;padding:16px 7px;font-size:14px;color:#536174}.mover-types .active{border-color:#435ce7;color:#435ce7;background:#f7f8ff}.mover-explain{font-size:12px;line-height:1.6;color:#536174;margin:12px 16px}.mover-coverage{font-size:10px;line-height:1.6;margin:12px 16px;color:#788396}.mover-list{padding:0 16px}.mover-row{display:flex;justify-content:space-between;gap:15px;text-align:left;width:100%;padding:17px 0;border-bottom:1px solid #e6e9ef}.mover-row b{font-size:15px;font-weight:500}.mover-row small{display:block;color:#667286;font-size:11px;line-height:1.5;margin-top:4px}.mover-price{text-align:right;flex-shrink:0}.mover-price .bull{color:#009b87}.mover-price .bear{color:#e54e52}.tabs{gap:16px}.tabs button{font-size:12px}.tabs #add-watchlist{padding-left:10px;padding-right:10px}
/* Illustrative watchlists, matched to the supplied mobile reference. */
.wl-tabs{display:flex;gap:20px;padding:0 16px;border-bottom:1px solid var(--line);overflow-x:auto;white-space:nowrap}.wl-tabs button{padding:16px 0 13px;font-size:14px;color:#536174;border-bottom:3px solid transparent}.wl-tabs button.active{color:var(--blue);border-color:var(--blue)}.wl-tools{display:flex;justify-content:space-between;padding:13px 16px 4px}.wl-tools button{font-size:13px;color:#536174;padding:7px 0}.wl-tools #wl-add{color:var(--blue)}.wl-note{font-size:10px;color:#798393;margin:7px 16px 10px;line-height:1.5}.wl-rows{padding:0 16px}.wl-row{display:flex;justify-content:space-between;gap:12px;width:100%;text-align:left;border-bottom:1px solid #e4e7ef;padding:20px 0}.wl-row b{font-size:18px;font-weight:400}.wl-row small{display:block;margin-top:10px;font-size:14px;color:#536174}.wl-price{text-align:right;white-space:nowrap}.wl-price b span{font-size:12px}.wl-filters{display:flex;gap:12px;padding:10px 16px;background:#f6f7fb}.wl-filters label{font-size:11px;display:grid;gap:6px;flex:1}.wl-filters select{max-width:100%}.wl-dialog{width:min(440px,calc(100% - 28px));padding:22px;border:1px solid #e4e7ef;border-radius:12px}.wl-dialog header{display:flex;justify-content:space-between;align-items:center;gap:15px}.wl-dialog h2{font-size:20px}.wl-dialog header button{font-size:28px}.wl-dialog .wl-note{margin:12px 0}.wl-picker{max-height:55vh;overflow:auto}.wl-picker button{display:flex;justify-content:space-between;width:100%;padding:16px 0;border-bottom:1px solid var(--line);font-size:14px}.wl-picker button span{color:var(--blue)}.wl-detail-price{font-size:32px}.pattern.chart-pattern{min-height:218px}.pattern.chart-pattern .glyph{width:min(118px,100%);height:108px;margin:24px auto 14px}
/* One horizontally scrollable tab strip, with the add control pinned. */
.tabs{display:flex;padding:0;gap:0;overflow:hidden;align-items:stretch}.tabs-scroll{display:flex;align-items:stretch;gap:28px;overflow-x:auto;scrollbar-width:none;min-width:0;flex:1;padding:0 20px;overscroll-behavior-x:contain}.tabs-scroll::-webkit-scrollbar{display:none}.tabs .tabs-scroll button{flex:none;white-space:nowrap;font-size:15px;padding:20px 0 18px}.tabs #add-watchlist{flex:0 0 54px;margin:0;padding:10px 0;border-left:1px solid #e7e9f0;background:white;font-size:28px}.tabs .active:after{bottom:0}

/* Slightly smaller main watchlist tabs. */
.tabs .tabs-scroll button{font-size:14px}
/* Compact watchlist navigation and option selectors. */
.tabs .tabs-scroll button{font-size:12px;padding-top:17px;padding-bottom:15px}.tabs-scroll{gap:22px;padding:0 16px}.tabs .tabs-scroll button[data-tab="patterns"]{font-size:12px}.optioncontrols{gap:8px;padding-top:8px}.callput button{font-size:13px;padding:4px 8px}.indexpill{gap:8px;font-size:11px;padding-right:9px}.indexpill button{font-size:13px;padding:7px 12px}.indexpill .blue{font-size:16px}.bankpill{font-size:12px;padding:8px 12px}.scanner-categories button{font-size:10px;padding:9px 3px}
/* Smaller quote text within the Options list. */
#option-rows .contract-name{font-size:14px}#option-rows .money{font-size:9px;padding:2px 4px}#option-rows .contract-detail{font-size:12px;margin-top:8px}#option-rows .contract-price strong{font-size:14px}#option-rows .contract-price strong small{font-size:9px}#option-rows .contract-price>span{font-size:11px;margin-top:8px}
/* Compact mobile watchlist rows, matched to the Android reference. */
.wl-rows{padding:0 16px}.wl-row{padding:11px 0 10px;min-height:64px;align-items:center;gap:10px}.wl-row b{font-size:16px;line-height:1.25;font-weight:400}.wl-row small{font-size:12px;line-height:1.3;margin-top:8px}.wl-price b span{font-size:10px}.wl-tools{padding:5px 16px 1px}.wl-tools button{font-size:12px;padding:7px 0}.wl-note{font-size:9px;margin:3px 16px 5px}.wl-price{flex-shrink:0}
@media(max-height:740px){.wl-row{min-height:59px;padding:9px 0}.wl-row small{margin-top:6px}.reference-search{padding-top:12px}.tabs .tabs-scroll button{padding-top:14px;padding-bottom:13px}}
/* Slightly tighter option quote rows. */
#option-rows .reference-row{padding:13px 0 10px}#option-rows .contract-detail{margin-top:6px}#option-rows .contract-price>span{margin-top:6px}
/* Denser pattern discovery and a shorter search field. */
.reference-search{padding:8px 12px 6px}.reference-search .search{padding:4px 9px;min-height:27px;border-radius:8px}.reference-search input{font-size:12px;line-height:17px}.reference-search .search svg{width:15px;height:15px}.pattern.chart-pattern{min-height:178px;padding:12px}.pattern.chart-pattern.selected{padding:11.5px}.pattern.chart-pattern .glyph{width:min(102px,100%);height:83px;margin:22px auto 10px}.pattern.chart-pattern strong{font-size:12px}.pattern.chart-pattern .meta{font-size:9px;margin-top:6px}.grid{gap:10px}#pattern-content .intro{padding-top:13px;margin-bottom:13px}#pattern-content .intro h2{font-size:17px;margin-bottom:5px}#pattern-content .intro .seg{margin-top:10px}#pattern-content .resultbar{margin-top:12px;margin-bottom:10px}.scanner-categories{padding-top:9px;padding-bottom:9px}
.pattern.chart-pattern{min-height:158px}.pattern.chart-pattern .glyph{height:70px;margin-top:20px;margin-bottom:8px}#pattern-content .intro{padding-top:10px;margin-bottom:10px}#pattern-content .intro .seg{margin-top:7px}#pattern-content .resultbar{margin-top:9px;margin-bottom:8px}
.freshness{display:inline-block;font-size:10px;line-height:1.4;padding:4px 7px;border-radius:4px;margin-top:9px;background:#f0f2f6;color:#627085}.freshness.live{background:#def5ec;color:#00866e}.freshness.unknown{background:#fff4df;color:#926414}.detailtags .freshness{margin-top:0}
/* Keep the demo screens compact by hiding explanatory notices. */
.snapshot-note,.reference-disclosure,.wl-note,.home-snapshot,.home-end small,.workspace>.foot{display:none!important}
/* Compact scanner header: category tabs lead directly into the pattern grid. */
.tabs .tabs-scroll button[data-tab="patterns"]{font-size:12px;letter-spacing:normal}.tabs-scroll{gap:18px}.scanner-categories{padding:7px 12px;gap:6px;border-bottom-width:3px}.scanner-categories button{padding:7px 5px;border-radius:16px;font-size:10px}.scanner-categories button.active{background:#eef0ff;border-color:#435ce7}#pattern-content #subtitle,#pattern-content #section-label,#pattern-content #view-switch{display:none!important}#pattern-content .toolbar{padding-top:9px}#pattern-content .intro{margin-bottom:2px;padding-top:8px}#pattern-content .intro h2{display:inline-block;font-size:16px;margin:0}.pattern-back{color:#435ce7;font-size:12px;padding:7px 12px 7px 0;margin-right:6px}

/* Single compact filter row, without scanner counts. */
#pattern-content .toolbar{justify-content:space-between;gap:8px;margin-bottom:10px}.filter-row-actions{display:flex;align-items:center;gap:10px;margin-left:auto}.filter-row-actions .check{max-width:none;font-size:10px;white-space:nowrap}.filter-row-actions .textbutton{font-size:11px}#advanced-filters{flex-basis:100%}
/* Pattern cards are direct links, not multi-select controls. */
.pattern .round,.pattern .meta{display:none!important}.pattern.chart-pattern{min-height:140px}.pattern:not(.chart-pattern){min-height:147px}
/* Results header: back, centered name, filters on one line. */
#pattern-content .intro{display:grid;grid-template-columns:55px minmax(0,1fr) 60px;align-items:center;gap:5px;padding:8px 16px;margin:0 0 4px}#pattern-content .intro>div{min-width:0;text-align:center}#pattern-content .intro h2{font-size:15px;line-height:1.3;display:block}#pattern-content .intro .pattern-back{margin:0;padding:9px 0;text-align:left;font-size:12px}#pattern-content .intro #toggle-filters{text-align:right;font-size:12px;padding:9px 0}.filter-row-actions{display:none!important}#advanced-filters>label:not(:has(#timeframe)){display:none!important}#advanced-filters.expanded{display:block}#advanced-filters>label:has(#timeframe){display:flex;flex-direction:row;align-items:center;gap:15px;font-size:11px;letter-spacing:0;text-transform:none;width:100%}#advanced-filters #timeframe{flex:1;max-width:none;border:0;border-bottom:1px solid #b6bfd7;border-radius:0;background:transparent;padding:7px 3px;font-size:12px}#pattern-content .toolbar{padding-top:0;margin-bottom:8px;gap:0}
/* Results filters: market scope and timeframe share one compact row. */
#advanced-filters.expanded{display:flex;gap:16px}#advanced-filters>label:has(#market),#advanced-filters>label:has(#timeframe){display:flex!important;flex:1;min-width:0;width:auto;flex-direction:column;align-items:stretch;gap:3px;font-size:10px;text-transform:none;letter-spacing:0}#advanced-filters #market,#advanced-filters #timeframe{width:100%;max-width:none;border:0;border-bottom:1px solid #b6bfd7;border-radius:0;background:transparent;padding:7px 2px;font-size:12px}
/* Signal results follow the compact Options quote-row density. */
.compact-signals .signal{padding:0}.compact-signal{display:block;width:100%;padding:11px 0 9px;text-align:left}.compact-signal-top,.compact-signal-sub{display:flex;align-items:center;justify-content:space-between;gap:10px}.compact-signal-top strong,.compact-signal-top b{font-size:14px;line-height:18px;font-weight:400}.compact-signal-sub{margin-top:5px;font-size:11px;line-height:14px;color:#536174}.compact-signal-time{display:block;margin-top:3px;font-size:10px;line-height:13px;color:#7a8492}#pattern-content .intro{margin-bottom:0}#pattern-content .toolbar{margin-bottom:0}#pattern-content .toolbar:has(#advanced-filters:not(.expanded)){display:none}#pattern-content .toolbar:has(#advanced-filters.expanded){padding-bottom:8px}

/* Signed underlying-price movement, never a strategy win/loss label. */
.compact-signal .positive{color:#009982}.compact-signal .negative{color:#df4a50}.compact-signal .neutral{color:#536174}
.compact-signal-time{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:9px}
#pipeline-note{font-size:10px;line-height:14px;color:#856328;background:#fff8e9;padding:4px 10px}

/* Focused, mobile-first formation detail. */
#detail{box-sizing:border-box;width:min(480px,calc(100% - 16px));padding:18px 14px;max-height:94dvh;overflow:auto;border-radius:18px}
#detail .dialoghead{gap:8px}#detail .dialoghead h2{font-size:19px;margin:0}#detail .dialoghead .eyebrow{display:none}#detail .close{padding:6px;min-width:40px;min-height:40px}
.pattern-detail-name{font-size:14px;color:#435ce7;font-weight:500;margin:2px 0 16px;display:flex;justify-content:space-between;gap:8px}.pattern-detail-name>span{font-size:11px;color:#69768a;font-weight:400}
.formation-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f5f7fc;border:1px solid #e9edf6;border-radius:12px;padding:14px;margin-bottom:14px}.formation-summary small{font-size:11px;color:#69768a}.formation-summary strong{display:block;font-size:29px;letter-spacing:-1px;margin-top:3px}.formation-prices{display:grid;gap:9px;font-size:10px;color:#69768a}.formation-prices b{display:block;color:#202832;font-size:13px;font-weight:500;margin-top:3px}
#detail .positive{color:#009982}#detail .negative{color:#df4a50}#detail .neutral{color:#536174}
.chart-tools{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:9px;color:#6b7890}.chart-tools>div{display:flex;background:#f3f5fb;border-radius:7px;padding:3px}.chart-tools button{padding:8px 10px;font-size:11px;border-radius:5px}.chart-tools .active{background:white;color:#435ce7;box-shadow:0 1px 5px #23355714}
#detail .chart{height:clamp(270px,43dvh,380px);border:1px solid #edf0f7;border-radius:10px}
.formation-caption{display:flex;flex-wrap:wrap;justify-content:space-between;gap:5px;font-size:9px;color:#7a8492;margin:10px 0 15px}.pattern-explanation{border-top:1px solid #edf0f7;padding-top:13px;font-size:12px}.pattern-explanation summary{color:#435ce7;cursor:pointer}.pattern-explanation p{font-size:11px;line-height:1.6;color:#617087}.detailnote{font-size:9px;margin:14px 0 0}
@media(prefers-reduced-motion:no-preference){#detail[open] .formation-summary{animation:formation-in .25s ease-out}@keyframes formation-in{from{opacity:.3;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}}

.pattern-options{margin:12px 0;color:var(--text,#202b44)}.pattern-option-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pattern-option-card{border:1px solid #e3e7f3;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:5px;background:#fff;min-width:0}.pattern-option-card small{font-size:11px;color:#718099}.pattern-option-card strong{font-size:17px}.pattern-option-card .option-premium{font-size:20px}.pattern-option-card span{font-size:13px}.pattern-option-card button{background:#4357df;color:white;border:0;border-radius:8px;padding:10px 4px;font-size:13px;margin-top:5px}.pattern-options>small,.option-note{font-size:11px;color:#718099;margin:6px 0}.option-preview{padding:12px;margin-top:10px;background:#f4f5fb;border-radius:10px}.option-preview p{margin:6px 0;font-size:13px}

#detail.pattern-screen{position:fixed;inset:0;margin:0 auto;width:min(480px,100%);height:100dvh;max-height:100dvh;border-radius:0;padding:0 14px calc(12px + env(safe-area-inset-bottom));box-shadow:none;background:white}#detail.pattern-screen::backdrop{background:#f3f4f8;backdrop-filter:none}#detail.pattern-screen .dialoghead{position:sticky;top:0;z-index:3;background:white;min-height:56px;padding-top:env(safe-area-inset-top);justify-content:flex-start;border-bottom:1px solid #edf0f7}#detail.pattern-screen .close{order:-1;font-size:32px;color:#435ce7}#detail.pattern-screen .chart{height:clamp(230px,38dvh,350px)}#detail.pattern-screen .pattern-options{margin-top:8px}#detail .pattern-option-card .green{color:#009982}#detail .pattern-option-card .red{color:#df4a50}

#option-sheet{position:fixed;inset:auto 0 0;margin:0 auto;width:min(480px,100%);max-width:100%;height:auto;max-height:96dvh;padding:48px 0 0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:auto;font-family:Roboto,Arial,sans-serif;color:#202832}#option-sheet::backdrop{background:rgba(22,30,40,.88);backdrop-filter:none}.sheet-hint{position:absolute;top:0;left:0;width:100%;height:44px;color:white;white-space:pre-line;font-size:13px;line-height:18px;touch-action:none}.sheet-panel{border-radius:18px 18px 0 0;background:white;padding:15px 16px calc(14px + env(safe-area-inset-bottom));min-height:480px}.sheet-contract{display:flex;justify-content:space-between;gap:8px;margin-bottom:8px}.sheet-contract strong{font-size:18px;font-weight:400;display:block}.sheet-contract small{font-size:12px;display:block;margin-top:6px;color:#536174;white-space:nowrap}.sheet-price{text-align:right}.up{color:#009b87}.down{color:#e54e52}.sheet-simulation{display:block;font-size:9px;color:#8590a0;margin:0 0 10px}.sheet-rail{display:flex;gap:16px;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x mandatory}.sheet-depth{min-width:92%;border:1px solid #e5e8ef;border-radius:9px;overflow:hidden;scroll-snap-align:start}.sheet-ohlc{display:grid;grid-template-columns:repeat(4,1fr);background:#f4f5fb;padding:9px 4px;gap:3px;text-align:center;font-size:12px;color:#536174}.sheet-ohlc b{display:block;font-weight:400;color:#202832;margin-top:5px}.sheet-book{width:100%;border-collapse:collapse;font-size:15px;font-variant-numeric:tabular-nums}.sheet-book th{font-size:12px;font-weight:400;color:#536174;padding:13px 4px;border-bottom:1px solid #e5e8ef;text-align:right}.sheet-book th:first-child,.sheet-book td:first-child{text-align:left;padding-left:15px}.sheet-book th:last-child,.sheet-book td:last-child{padding-right:15px}.sheet-book td{padding:9px 4px;text-align:right;font-weight:400}.sheet-book td:first-child,.sheet-book td:last-child{color:#536174}.sheet-total{display:flex;align-items:center;justify-content:space-between;padding:6px 15px 11px;font-size:12px;color:#536174}.sheet-total b{font-weight:400;font-size:15px;color:#202832}.sheet-mini-chart{min-width:88%;border:1px solid #e5e8ef;border-radius:9px;display:grid;place-items:center;scroll-snap-align:start}.sheet-mini-chart svg{height:230px;width:85%}.sheet-mini-chart small{color:#9ba3b2}.sheet-shortcuts{display:flex;justify-content:center;gap:8px;margin:13px 0 16px}.sheet-shortcuts button{border-radius:24px;background:#f4f5fb;color:#435ce7;padding:12px 14px;font-size:13px;white-space:nowrap}.sheet-orders{display:grid;grid-template-columns:1fr 1fr;gap:9px}.sheet-orders button{color:white;border-radius:4px;padding:15px;font-size:16px;font-weight:500}.sheet-orders .buy{background:#009883}.sheet-orders .sell{background:#d84a4c}.sheet-notice{font-size:11px;color:#536174;margin:8px 0 0}.sheet-notice:empty{display:none}#option-sheet.expanded{height:96dvh}#option-sheet.expanded .sheet-panel{min-height:calc(96dvh - 48px)}

/* V3: compact summary gives the real chart visual priority. */
#detail .compact-price-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;margin:0 0 9px;background:none;border:0;border-radius:0}
#detail .compact-price-summary strong{font-size:20px;white-space:nowrap;color:#202b38}
#detail .compact-price-summary span{font-size:11px;text-align:right}
#detail.pattern-screen .chart{height:clamp(260px,44dvh,390px)}

/* V3: shared scanner sizing without adding controls. */
#scanner-categories{gap:6px;padding:8px 12px}
#scanner-categories button{min-height:36px;font-size:11px;border-radius:9px;font-weight:500}
#pattern-content .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
#pattern-content .pattern{border-radius:12px;box-shadow:none}
#pattern-content .pattern strong{font-size:12px;line-height:1.4}
#mover-content .mover-types{gap:8px;padding:12px 16px 4px}
#mover-content .mover-types button{min-height:40px;padding:10px 7px;font-size:12px;border-radius:9px}
#mover-content .mover-row{padding:11px 0 9px;gap:10px}
#mover-content .mover-row b{font-size:14px;font-weight:400}
#mover-content .mover-row small{font-size:11px;margin-top:4px}

#toggle-filters small{display:block;font-size:9px;color:#718099;font-weight:400;white-space:nowrap;margin-top:3px}#pattern-content .intro{grid-template-columns:55px minmax(0,1fr) 86px}

/* Expanded contract page */
.sheet-back,.sheet-detail-tabs,.sheet-expanded-content,.sheet-derivatives{display:none}
#option-sheet.expanded{inset:0;height:100dvh;max-height:100dvh;padding:0;background:white;overflow:auto}
#option-sheet.expanded .sheet-hint{display:none}
#option-sheet.expanded .sheet-panel{border-radius:0;min-height:100dvh;padding:22px 12px 0;box-sizing:border-box}
#option-sheet.expanded .sheet-back{display:block;font-size:28px;padding:0 8px 0 0;color:#202832}
#option-sheet.expanded .sheet-contract{align-items:center;position:sticky;top:0;background:white;z-index:2;padding:12px 0;margin:0}
#option-sheet.expanded .sheet-contract>div:first-of-type{flex:1}
#option-sheet.expanded .sheet-contract strong{font-size:17px}
#option-sheet.expanded .sheet-contract small{font-size:11px;white-space:normal}
#option-sheet.expanded .sheet-detail-tabs{display:flex;gap:35px;border-bottom:8px solid #f4f5fb;margin:10px -12px 8px;padding:0 16px}
.sheet-detail-tabs button{font-size:15px;font-weight:500;padding:18px 0 15px;color:#536174;border-bottom:3px solid transparent}
.sheet-detail-tabs button.active{color:#435ce7;border-color:#435ce7}
#option-sheet.expanded .sheet-expanded-content:not([hidden]),#option-sheet.expanded .sheet-derivatives:not([hidden]){display:block}
.sheet-extra-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px 10px;padding:18px 12px;border-top:8px solid #f4f5fb;margin-top:10px}
.sheet-extra-stats small,.sheet-derivatives small{display:block;font-size:12px;color:#536174;margin-bottom:6px}
.sheet-extra-stats strong,.sheet-derivatives strong{font-size:16px;font-weight:400}
.sheet-recent{border-top:8px solid #f4f5fb;padding:12px}
.sheet-recent h3{font-size:17px;font-weight:400}.sheet-recent-cards{display:flex;gap:12px;overflow:auto}.sheet-recent-cards>div{border:1px solid #e5e8ef;border-radius:5px;padding:14px;min-width:170px}.sheet-recent-cards strong{font-size:15px;font-weight:400}.sheet-recent-cards small{display:block;font-size:11px;color:#536174;margin-top:6px}
#option-sheet.expanded .sheet-footer{position:sticky;bottom:0;background:white;padding:1px 4px calc(16px + env(safe-area-inset-bottom));z-index:3}
.sheet-derivatives{padding:20px 12px}.sheet-derivatives>div{display:flex;justify-content:space-between;padding:14px 0;border-bottom:1px solid #e5e8ef}

/* Full viewport detail pages, with a single contained vertical scroller. */
html{overscroll-behavior-x:none;overscroll-behavior-y:auto;overflow-x:clip}
#detail.pattern-screen{width:100%;max-width:none;height:100dvh;max-height:100dvh;margin:0;border:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none;box-sizing:border-box}
#detail.pattern-screen #detail-body{min-width:0;max-width:100%;overflow-x:clip}
#detail.pattern-screen .chart{min-width:0;max-width:100%}
#option-sheet{overscroll-behavior:none;overflow-x:hidden}
#option-sheet.expanded{width:100%;max-width:none;margin:0;border:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none}
#option-sheet.expanded .sheet-panel{display:flex;flex-direction:column;min-width:0;overflow-x:clip}
#option-sheet.expanded .sheet-footer{margin-top:auto;flex-shrink:0}
.sheet-rail{max-width:100%;overscroll-behavior-x:contain}
.sheet-hint{touch-action:none;user-select:none;-webkit-user-select:none}

/* V4: larger candle artwork, restrained touch feedback, stable prices. */
.pattern:not(.chart-pattern) .glyph{width:100px;height:82px;margin:12px auto 10px}
.pattern:active,.compact-signal:active{background:#eef1ff;box-shadow:inset 0 0 0 1px #b9c4f8}
.option-premium,.compact-signal b,.sheet-price{font-variant-numeric:tabular-nums}
.pattern-option-card .option-change{padding:0;background:none;border:0;font:inherit;text-align:left;min-height:28px;cursor:pointer}
.option-comparison{font-size:10px;line-height:1.5;color:#536174;margin:6px 0}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.engulfing-story{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 10px 14px;font-size:12px;color:#69758b}.engulfing-story strong{color:#435ce7;font-weight:500}.engulfing-story>span,.engulfing-story>strong{text-align:center}@media(max-width:480px){.engulfing-story{font-size:10px;gap:6px;padding:5px 0 10px}}

/* V7.1: real-candle previews, one existing tap target per signal. */
.compact-signal.visual-signal{display:grid;grid-template-columns:minmax(0,1fr) minmax(135px,45%);gap:4px 12px;align-items:center;padding:12px 14px;text-align:left}
.visual-signal .compact-signal-top{display:flex;flex-direction:column;align-items:flex-start;gap:4px;grid-column:1;grid-row:1}
.visual-signal .compact-signal-top strong{font-size:14px;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.visual-signal .compact-signal-top b{font-size:14px;font-weight:500}
.visual-signal .compact-signal-sub{grid-column:1;grid-row:2;display:flex;flex-direction:column;align-items:flex-start;gap:3px;font-size:10px}
.visual-signal .compact-signal-time{grid-column:1 / -1;grid-row:3;font-size:9px;margin-top:4px;color:#8993a3}
.signal-preview{grid-column:2;grid-row:1 / 3;display:flex;align-items:center;justify-content:center;min-width:0;height:88px;background:linear-gradient(135deg,#fafbff,#fff);border:1px solid #f0f2f8;border-radius:9px;overflow:hidden}
.signal-preview svg{display:block;width:100%;height:100%}.preview-placeholder,.signal-preview.unavailable{font-size:10px;color:#919bad;font-weight:400}
@media(min-width:700px){.compact-signal.visual-signal{grid-template-columns:minmax(0,1fr) 210px}.signal-preview{height:96px}.visual-signal .compact-signal-sub{font-size:12px}}

/* V7.2: browsing gestures belong to the header; chart gestures remain chart gestures. */
.chart-gallery{display:flex;align-items:center;gap:8px;margin:0 0 2px;color:#69758b;touch-action:pan-y}
.chart-gallery button{border:0;background:#f4f5fc;color:#465bea;border-radius:9px;min-width:36px;height:34px;font-size:23px;cursor:pointer}
.chart-gallery button:disabled{opacity:.35;cursor:default}.chart-gallery #replay-chart{font-size:12px;padding:0 12px}.gallery-spacer{flex:1}#gallery-position{font-size:11px;font-variant-numeric:tabular-nums}.gallery-status{font-size:10px;color:#8792a6;margin:0 0 8px;min-height:14px;touch-action:pan-y}
.pattern-screen>header,.pattern-detail-name,.compact-price-summary,.engulfing-story{touch-action:pan-y}
#chart{position:relative}#chart.replaying>.tv-lightweight-charts{visibility:hidden}.replay-canvas{position:absolute;inset:0;z-index:2;background:#fff}

/* Stable gallery: no whole-page slide or scroll reset on adjacent navigation. */
.pattern-screen .dialoghead{user-select:none;-webkit-user-select:none;touch-action:pan-y;will-change:transform}
.pattern-screen .compact-price-summary,.pattern-screen .pattern-detail-name,.pattern-screen .engulfing-story,.chart-gallery,.gallery-status{user-select:none;-webkit-user-select:none}
.pattern-screen{scrollbar-gutter:stable}.gallery-status{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* V7.4: cohesive compact signal cards, with clear price and chart hierarchy. */
.compact-signals{gap:8px;padding:2px 0 8px}
.compact-signals .signal{border:1px solid #e5e9f2;border-radius:12px;background:#fff;overflow:hidden;box-shadow:0 2px 5px rgba(34,52,88,.025)}
.compact-signal.visual-signal{padding:12px 12px 9px;gap:3px 10px;grid-template-columns:minmax(0,1fr) minmax(132px,46%);border:0;border-radius:12px}
.visual-signal .compact-signal-top{gap:5px;align-self:end}
.visual-signal .compact-signal-top strong{font-size:13px;line-height:17px;font-weight:650;letter-spacing:.15px;color:#25324b;white-space:nowrap}
.visual-signal .compact-signal-top b{font-size:17px;line-height:21px;font-weight:550;letter-spacing:-.35px;color:#17243a}
.visual-signal .compact-signal-sub{gap:4px;margin-top:4px;align-self:start;font-size:10px;line-height:14px;color:#617087}
.visual-signal .compact-signal-sub>span:first-child{font-size:10px;color:#617087}
.visual-signal .compact-signal-sub>span:last-child{font-weight:500}
.visual-signal .compact-signal-time{border-top:1px solid #f0f2f7;margin-top:7px;padding-top:7px;font-size:9px;line-height:12px;color:#68758a;gap:3px 8px}
.signal-preview{height:89px;border:0;border-radius:8px;background:#fbfcff}
.signal-preview svg{shape-rendering:geometricPrecision}
.visual-signal:focus-visible{outline:2px solid #4b60e5;outline-offset:-2px;background:#f7f9ff}
.compact-signal.visual-signal:active{background:#f6f8fe;box-shadow:none}
@media(min-width:700px){.compact-signal.visual-signal{grid-template-columns:minmax(0,1fr) 220px}.signal-preview{height:98px}.visual-signal .compact-signal-top strong{font-size:15px}.visual-signal .compact-signal-top b{font-size:18px}.visual-signal .compact-signal-sub{font-size:12px}}
.compact-signals .signal+.signal{margin-top:8px}

/* Actual pattern annotations draw once on entering the viewport. */
.preview-trace{stroke-dasharray:1;stroke-dashoffset:1}.preview-levels,.preview-dots{opacity:0}
.draw-preview .preview-levels{animation:preview-appear 260ms ease-out both}
.draw-preview .preview-trace{animation:preview-trace 650ms cubic-bezier(.25,.7,.3,1) 80ms both}
.draw-preview .preview-dots{animation:preview-appear 250ms ease-out 450ms both}
@keyframes preview-trace{to{stroke-dashoffset:0}}@keyframes preview-appear{to{opacity:1}}
@media(prefers-reduced-motion:reduce){.preview-trace{stroke-dashoffset:0}.preview-levels,.preview-dots{opacity:1}.draw-preview .preview-trace,.draw-preview .preview-levels,.draw-preview .preview-dots{animation:none}}

.preview-static .preview-trace{animation:none;stroke-dashoffset:0}.preview-static .preview-levels,.preview-static .preview-dots{animation:none;opacity:1}

/* B.4: split panels — price information beside a dedicated chart surface. */
.compact-signals{gap:8px;padding:2px 0 8px}
.compact-signals .signal{border:1px solid #e5e9f2;border-radius:10px;box-shadow:none;overflow:hidden;background:#fff}
.compact-signals .signal+.signal{margin-top:10px}
.compact-signal.visual-signal{padding:0;gap:0;grid-template-columns:minmax(0,1fr) 46%;border-radius:10px;min-height:118px}
.visual-signal .compact-signal-top{padding:13px 11px 0;gap:7px}
.visual-signal .compact-signal-sub{padding:0 11px 13px;gap:5px}
.compact-signals .signal-preview{align-self:stretch;height:100%;min-height:118px;border-radius:0;border:0;border-left:1px solid #edf0f7;background:linear-gradient(150deg,#f6f8ff,#fff)}
.compact-signals .signal-preview svg{height:92px;width:100%}
@media(min-width:700px){.compact-signal.visual-signal{grid-template-columns:minmax(0,1fr) 220px}}

/* V9: compact, actionable co-occurring patterns, without a timeline. */
.signal-coincidence{padding:9px 11px 11px;border-top:1px solid #edf0f7;background:#fff}
.coincidence-label{display:block;font-size:9px;color:#748097;margin-bottom:6px;letter-spacing:.15px}
.coincidence-patterns{display:flex;flex-wrap:wrap;gap:6px}
.pattern-chip{border:1px solid #e4e8f3;border-radius:6px;background:#fafbff;color:#566782;padding:7px 9px;font-family:inherit;font-size:10px;font-weight:500;line-height:1.3;cursor:pointer;min-height:32px}
.pattern-chip.primary-chip{color:#455bdf;background:#f0f3ff;border-color:#dfe5ff}
.pattern-chip:focus-visible{outline:2px solid #455bdf;outline-offset:2px}

.signal-confluence{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:#f8f9fe;border:0;border-top:1px solid #edf0f7;padding:10px 11px;color:#506079;font:inherit;font-size:10px;line-height:1.5;cursor:pointer}
.signal-confluence>span:nth-child(2){flex:1}.signal-confluence i{font-style:normal;color:#8a94aa;padding:0 3px}.confluence-badge{color:#465bd9;font-size:9px;font-weight:600}.signal-confluence:focus-visible{outline:2px solid #465bd9;outline-offset:-2px}
.confluence-key{padding:12px 14px;background:#f8f9fd;border:1px solid #edf0f6;border-radius:10px;margin:10px 0;display:grid;gap:10px}.confluence-key>div{display:flex;gap:9px;align-items:flex-start}.confluence-swatch{width:14px;height:3px;margin-top:7px;flex-shrink:0;border-radius:2px}.confluence-key strong{display:block;font-size:12px;font-weight:600;color:#32425e}.confluence-key small{display:block;font-size:11px;line-height:1.5;color:#6c7890;margin-top:2px}.confluence-key p{margin:0;font-size:10px;color:#8490a4}

.rarity-tag{display:inline-block;font-size:9px;font-style:normal;font-weight:500;padding:2px 5px;border-radius:4px;color:#80602d;background:#faf2df;vertical-align:middle}

/* Hold-to-peek: pointer events stay on the original row; vertical scroll stays native. */
.signal-preview{-webkit-touch-callout:none;user-select:none;touch-action:pan-y}
.hold-preview{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(27,36,61,.26);pointer-events:none;animation:peek-backdrop 160ms ease-out both}
.hold-preview-panel{width:min(100%,560px);background:white;border:1px solid #e7ebf4;border-radius:20px;padding:20px 16px 14px;box-shadow:0 24px 80px #17294b30;animation:peek-expand 230ms cubic-bezier(.2,.8,.25,1) both}
.hold-preview-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;color:#25324b;font-size:15px;padding:0 4px 14px}.hold-preview-heading span{font-size:14px;font-weight:600}
.hold-preview-chart{width:100%;border-radius:12px;background:#fbfcff;overflow:hidden}.hold-preview-chart svg{display:block;width:100%;height:auto;max-height:55dvh}
.hold-preview-caption{text-align:center;color:#8791a5;font-size:10px;padding-top:13px}.hold-preview.leaving{animation:peek-backdrop 140ms ease-in reverse both}.hold-preview.leaving .hold-preview-panel{animation:peek-dismiss 140ms ease-in both}
@keyframes peek-backdrop{from{background:rgba(27,36,61,0)}to{background:rgba(27,36,61,.26)}}
@keyframes peek-expand{from{opacity:0;transform:translate(calc(var(--origin-x)*.18),calc(var(--origin-y)*.18)) scale(.88)}to{opacity:1;transform:translate(0,0) scale(1)}}
@keyframes peek-dismiss{to{opacity:0;transform:scale(.97)}}
@media(prefers-reduced-motion:reduce){.hold-preview,.hold-preview-panel,.hold-preview.leaving,.hold-preview.leaving .hold-preview-panel{animation:none}}

/* Native long-press selection must not compete with chart preview. */
.compact-signals .signal,.compact-signals .signal *,.hold-preview,.hold-preview *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.compact-signals .signal svg{-webkit-user-drag:none}
