:root{--bg:#e9eef9;--card:#ffffff;--text:#1a2438;--sub:#4d5b74;--line:#dbe4f2;--a:#e03131;--a-soft:#fdecec;--h:#1f6feb;--h-soft:#eaf1fe;--brand:#7fa8b9;--brand-soft:#eef4f7;--brand-dark:#5b8294;--radius:14px;--shadow:0 1px 3px rgba(30,50,100,.07),0 6px 18px rgba(30,50,100,.06);--shadow-hover:0 4px 10px rgba(30,50,100,.10),0 14px 34px rgba(30,50,100,.12);--up:var(--a);--down:#0ca678;--mkt-a:#b9656b;--mkt-a-soft:#faecee;--mkt-h:#5f82b0;--mkt-h-soft:#edf3fb;--link:#1a56db;--link-soft:#eef3ff;--warn:#e65100;--warn-soft:#fff3e0;--alarm:#C00000;--blk:#3b4a63;--gray-1:#475069;--gray-2:#6f7b94;--gray-3:#5f6b85;--gray-4:#6b7690;--gray-5:#8a97b3;--gray-6:#9aa2b1;--fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-lg:14px;--fs-xl:16px;--r-sm:8px;--r-md:14px;--r-lg:20px;--focus-ring:0 0 0 3px rgba(31,111,235,.28);--bp-sm:520px;--bp-md:760px;--bp-lg:940px;--bp-xl:1100px}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{background:#f2f5fa;color:var(--text);font-family:"PingFang SC","Microsoft YaHei","Segoe UI",system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.6}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#b8c6df;border-radius:8px;border:2px solid var(--bg)}::-webkit-scrollbar-track{background:transparent}header{position:sticky;top:0;z-index:50;background:rgba(246,250,255,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.header-inner{max-width:1180px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:20px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:12px;white-space:nowrap}.brand-logo-box{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,var(--brand-soft),#dbe9f1);box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 2px 8px rgba(127,168,185,.30);flex:none}.brand .brand-logo{height:30px;width:auto;display:block}.brand-name{font-size:17px;font-weight:800;letter-spacing:1px;background:linear-gradient(135deg,var(--brand-dark),var(--brand));-webkit-background-clip:text;background-clip:text;color:transparent}.search-wrap{flex:1;min-width:240px;position:relative;max-width:620px}.search-box{display:flex;align-items:center;gap:9px;background:linear-gradient(180deg,#fff,#f6f9fe);border:1px solid var(--line);border-radius:12px;padding:9px 15px;transition:border .2s,box-shadow .2s;box-shadow:inset 0 1px 2px rgba(30,50,100,.04)}.search-box:focus-within{border-color:#8fb4f5;box-shadow:0 0 0 3px rgba(31,111,235,.12),inset 0 1px 2px rgba(30,50,100,.04)}.search-box svg{flex:none;color:var(--sub);transition:color .2s}.search-box:focus-within svg{color:var(--brand-dark)}.search-box input{flex:1;border:none;outline:none;font-size:14px;background:transparent;color:var(--text)}.search-box .kbd{flex:none;font-size:11px;color:var(--gray-4);border:1px solid var(--line);border-radius:5px;padding:1px 6px;background:#f3f6fc}.header-status{margin-left:auto;display:flex;align-items:center;gap:9px;color:var(--gray-3);font-size:12px;white-space:nowrap}.header-status .dot{width:7px;height:7px;border-radius:50%;background:#79a997;box-shadow:0 0 0 3px rgba(121,169,151,.14);flex:none}.header-status b{font-size:12px;color:var(--brand-dark);font-weight:700}.header-status time{color:var(--gray-4);font-variant-numeric:tabular-nums}.search-dropdown{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 44px rgba(20,30,60,.16);overflow:hidden;display:none;z-index:100}.search-dropdown.show{display:block}.sd-item{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;border-bottom:1px solid #eef2f8}.sd-item:last-child{border-bottom:none}.sd-item:hover,.sd-item.is-active{background:#f5f8ff}.sd-name{font-weight:600;font-size:14px}.sd-name mark{background:#fff3bf;color:inherit;border-radius:3px;padding:0 2px}.sd-code{font-family:Consolas,Menlo,monospace;font-size:12px;color:var(--sub)}.sd-path{flex:1;text-align:right;font-size:11px;color:var(--gray-4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-tag{flex:none;display:inline-flex;align-items:center;white-space:nowrap;word-break:keep-all;overflow-wrap:normal;font-size:11px;font-weight:600;padding:1px 8px;border-radius:20px}.sd-tag.a{background:var(--mkt-a-soft);color:var(--mkt-a)}.sd-tag.h{background:var(--mkt-h-soft);color:var(--mkt-h)}.sd-empty{padding:22px;text-align:center;color:var(--sub)}.sd-hot{border-top:1px solid #eef2f8;padding:10px 14px;display:flex;align-items:center;flex-wrap:wrap;gap:6px;background:#fafbfd}.sd-hot-label{font-size:11px;color:var(--gray-4);margin-right:4px;white-space:nowrap}.sd-hot-tag{font-size:11.5px;color:var(--gray-1);background:#eef2fa;border:1px solid #d7e0f0;border-radius:20px;padding:2px 10px;cursor:pointer;transition:all .15s}.sd-hot-tag:hover{background:#e8edf9;border-color:#aebbd9;color:var(--text)}.crumb{max-width:1180px;margin:0 auto;padding:16px 24px 0;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}.crumb a{color:var(--sub);text-decoration:none;cursor:pointer;padding:3px 8px;border-radius:6px;transition:background .15s,color .15s}.crumb a:hover{background:#e9edf5;color:var(--text)}.crumb .sep{color:var(--gray-5)}.crumb .cur{font-weight:700;color:var(--text)}.crumb .back{display:inline-flex;align-items:center;gap:5px;font-weight:600;color:var(--gray-1);background:#fff;border:1px solid var(--line);border-radius:8px;padding:4px 12px;cursor:pointer;transition:all .15s}.crumb .back:hover{background:#f0f2f7;border-color:#cdd3de}#crumb:empty{display:none}main{max-width:1180px;margin:0 auto;padding:20px 24px 60px}.view-enter{animation:viewIn .32s ease}@keyframes viewIn{from{opacity:0;transform:translateY(8px) scale(.996)}to{opacity:1;transform:none}}.page-title{display:flex;align-items:center;gap:8px 12px;margin:6px 0 8px;flex-wrap:wrap}.page-title .mk-row{display:inline-flex;align-items:center;gap:8px;flex:none;flex-wrap:nowrap;white-space:nowrap}.page-title .mk-chip{font-size:12.5px;font-weight:700;padding:2px 12px;border-radius:20px;white-space:nowrap;display:inline-block;line-height:1.5;word-break:keep-all;overflow-wrap:normal}.page-title .mk-chip.a{background:var(--mkt-a-soft);color:var(--mkt-a);border:1px solid #e5c3c6}.page-title .mk-chip.h{background:var(--mkt-h-soft);color:var(--mkt-h);border:1px solid #c6d5e8}.dup-export{border:1px solid var(--line);background:#fff;border-radius:8px;padding:3px 12px;font-size:11px;cursor:pointer;color:var(--text);font-family:inherit;transition:all .15s;align-self:center;display:flex;align-items:center;gap:5px;margin-left:auto}.dup-export svg{flex-shrink:0}.dup-export:hover{border-color:var(--brand);color:var(--brand-dark);background:var(--brand-soft)}.page-title .sub{color:var(--sub);font-size:12px;flex:1 1 auto;min-width:220px;margin:2px 0 0}.page-title .tag-market{font-size:11px;font-weight:700;padding:2px 10px;border-radius:20px}.tag-market.a{background:var(--mkt-a);color:#fff}.tag-market.h{background:var(--mkt-h);color:#fff}.hero{padding:26px 0 8px}.hero h1{font-size:28px;font-weight:800;letter-spacing:.5px}.hero p{color:var(--sub);margin-top:6px;font-size:14px}.market-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-top:24px}.mcard{position:relative;border-radius:20px;padding:30px 28px;cursor:pointer;overflow:hidden;border:none;transition:transform .2s,box-shadow .2s;color:#fff}.mcard:hover{transform:translateY(-2px);box-shadow:0 18px 44px rgba(20,30,60,.20)}.mcard::before{content:"";position:absolute;left:0;top:0;width:100%;height:4px;background:linear-gradient(90deg,rgba(255,255,255,.55),rgba(255,255,255,.04));z-index:1}.mcard::after{content:"";position:absolute;right:-70px;top:-70px;width:230px;height:230px;border-radius:50%;background:rgba(255,255,255,.12);transition:transform .3s}.mcard:hover::after{transform:scale(1.12)}.mcard .big{font-size:44px;font-weight:800;line-height:1.15;font-variant-numeric:tabular-nums;text-shadow:0 2px 10px rgba(0,0,0,.10)}.mcard .lbl{font-size:15px;opacity:.92;margin-top:4px}.mcard .go{position:absolute;right:22px;bottom:20px;display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;opacity:.95;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);border-radius:20px;padding:6px 14px;transition:gap .2s,background .2s}.mcard:hover .go{gap:10px;background:rgba(255,255,255,.26)}.mcard .stats{display:flex;margin-top:22px}.mcard .stats .it{padding-right:26px;margin-right:26px;border-right:1px solid rgba(255,255,255,.25)}.mcard .stats .it:last-child{border-right:none;padding-right:0;margin-right:0}.mcard .stats .it b{display:block;font-size:19px;font-weight:700;font-variant-numeric:tabular-nums}.mcard .stats .it span{font-size:11.5px;opacity:.85}.mcard.a{background:linear-gradient(135deg,#c77b7e 0%,var(--mkt-a) 100%)}.mcard.h{background:linear-gradient(135deg,#7895b9 0%,var(--mkt-h) 100%)}.home-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:24px}.newstocks-wrap{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);margin-top:24px;overflow:hidden}.ipo-row{display:flex;gap:18px;align-items:stretch}.ipo-row .newstocks-wrap,.ipo-row .iporeview-wrap{flex:1;width:0}.iporeview-wrap{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);margin-top:24px;overflow:hidden;min-width:0}.ipo-body{padding:10px 16px 14px;max-height:440px;overflow-y:auto;scrollbar-width:thin}.ipo-body::-webkit-scrollbar{width:6px}.ipo-body::-webkit-scrollbar-thumb{background:#ccd6e8;border-radius:3px}.ipo-sub{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:800;color:var(--a);margin:10px 2px 6px;padding-left:9px;border-left:3px solid var(--a)}.ipo-sub.hk{color:var(--h);border-left-color:var(--h)}.ipo-item{display:flex;align-items:center;gap:8px;min-height:34px;padding:5px 8px;border-radius:8px;cursor:default;transition:background .15s,box-shadow .15s;box-shadow:inset 0 0 0 1px transparent}.ipo-item:hover{background:#f5f8ff;box-shadow:inset 0 0 0 1px #d8e2f4}.ipo-date{font-size:11px;color:var(--sub);font-family:Consolas,Menlo,monospace;white-space:nowrap;width:44px;flex:none}.ipo-name{font-size:13px;font-weight:700;flex:1 1 auto;min-width:0;white-space:nowrap;line-height:1.35;overflow:hidden;text-overflow:ellipsis}.ipo-main{display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:55%;flex:0 1 auto;white-space:nowrap;overflow:hidden;color:#334155;background:#f4f8fd;border:1px solid #d7e3f1;border-radius:6px;padding:2px 6px;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}.ipo-main-text{font-size:11px;font-weight:700;color:#374151;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ipo-pct{font-style:normal;font-size:10px;font-weight:800;color:var(--a);background:var(--a-soft);border-radius:5px;padding:1px 5px;flex:none}.ipo-mkt{font-size:10.5px;font-weight:700;color:#6b7280;background:#f1f3f7;border-radius:20px;padding:1px 8px;white-space:nowrap;flex:none}.ipo-mkt.a{background:var(--mkt-a-soft);color:var(--mkt-a)}.ipo-mkt.h{background:var(--mkt-h-soft);color:var(--mkt-h)}.ipo-tag{font-size:10.5px;font-weight:700;border-radius:20px;padding:1px 8px;white-space:nowrap;flex:none}.ipo-tag.apply{background:#fff3e0;color:#e65100}.ipo-tag.new{background:#e6f4ea;color:#1e7d3f}.ipo-link{font-size:10.5px;font-weight:700;color:var(--link);background:#eef3ff;border:1px solid #d5e0fa;border-radius:6px;padding:1px 8px;text-decoration:none;white-space:nowrap;flex:none;cursor:pointer;font-family:inherit}.ipo-link:hover{background:#dbe7ff}.ipo-empty{font-size:12px;color:var(--sub);text-align:center;padding:10px 0}.pdf-modal{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}.pdf-modal[hidden]{display:none}.pdf-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(3px)}.pdf-box{position:relative;width:min(960px,94vw);height:min(86vh,900px);background:#fff;border-radius:16px;box-shadow:0 24px 64px rgba(15,23,42,.35);display:flex;flex-direction:column;overflow:hidden;animation:pdfIn .22s ease}@keyframes pdfIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}.pdf-head{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line);background:#f1f5fc}.pdf-title{font-size:13.5px;font-weight:700;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdf-actions{display:flex;align-items:center;gap:8px;flex:none}.pdf-actions a,.pdf-actions button{font-size:12px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:4px 12px;cursor:pointer;text-decoration:none;color:var(--text);transition:background .15s;font-family:inherit}.pdf-actions a:hover,.pdf-actions button:hover{background:#eef1f7}.pdf-close{color:var(--sub);font-weight:800;padding:4px 10px!important}.pdf-body{flex:1;position:relative;background:#f2f3f6;display:flex;flex-direction:column}.pdf-frame{flex:1;width:100%;border:none;background:#fff}.pdf-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--sub);font-size:13.5px;gap:10px}.pdf-loading::before{content:"";width:18px;height:18px;border-radius:50%;border:2.5px solid #ccd6e8;border-top-color:var(--h);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.pdf-fallback{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:30px;text-align:center;color:var(--gray-1);font-size:13px}.pdf-fallback p{margin:0;max-width:620px}.pdf-url{font-size:12px;font-family:Consolas,Menlo,monospace;color:var(--link);background:#f0f4ff;border:1px solid #d5e0fa;border-radius:8px;padding:8px 12px;word-break:break-all;max-width:660px;user-select:all}.dup-entry{display:flex;align-items:center;gap:40px;background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);margin-top:24px;padding:28px 32px;cursor:pointer;transition:transform .18s,box-shadow .18s,border-color .18s}.dup-entry:hover{transform:translateY(-2px);box-shadow:var(--shadow-hover);border-color:#cbd9eb}#crumb:empty + main{padding-top:10px}#crumb:empty + main .dup-entry{margin-top:12px}.dup-entry > div:first-child{flex:0 0 240px}.dup-entry-title{font-size:27px;font-weight:800;display:flex;align-items:center;gap:11px}.dup-entry-title svg{color:var(--a)}.d20-entry .dup-entry-title svg{color:var(--h)}.dup-entry-sub{font-size:15px;color:var(--sub);margin-top:7px;line-height:1.45}.dup-entry-stats{width:74%;margin-left:auto;display:flex;flex-wrap:nowrap;align-items:flex-end;justify-content:space-between;min-width:0}.dup-entry-stats .it{text-align:center;flex:none;position:relative}.dup-entry-stats .it b{display:block;font-size:14px;font-weight:600;color:var(--sub);letter-spacing:.5px}.dup-entry-stats .it span{display:block;font-size:32px;font-weight:400;margin-top:4px;font-variant-numeric:tabular-nums;line-height:1.15}.dup-entry-stats .it span.up{color:var(--a)}.dup-entry-stats .it span.down{color:var(--down)}.dup-entry-stats .it span.blk{color:var(--blk)}.dup-entry-stats .it span.score{font-weight:800}.dup-entry-stats .it span.score.up{color:var(--a)}.dup-entry-stats .it span.score.down{color:var(--down)}.dup-entry-stats .it em.cmp{position:absolute;top:100%;left:50%;transform:translateX(-50%);white-space:nowrap;margin-top:3px;font-size:12px}.dup-tabs{display:inline-flex;gap:6px;flex-wrap:wrap;margin-left:auto}.dup-tabs button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:4px 13px;font-size:11px;cursor:pointer;color:var(--text);font-family:inherit;transition:all .15s}.dup-tabs button:hover{border-color:#c3cfeb;background:#f5f8ff}.dup-tabs button.is-on{background:var(--a);border-color:var(--a);color:#fff;font-weight:700}.dup-stats-bar{display:flex;flex-wrap:wrap;gap:6px 28px;align-items:center;margin-top:14px;padding:10px 20px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);font-size:13px;color:var(--sub)}.dup-stats-bar b{color:var(--text);font-weight:800;font-size:15px}.dup-stats-bar .score-up{color:var(--a);font-weight:800}.dup-stats-bar .score-down{color:var(--down);font-weight:800}.dup-layout{position:relative;margin-top:14px}.dup-main{width:100%}.dup-side{position:absolute;right:calc(100% + 18px);top:0;width:max-content;max-width:calc((100vw - 1200px)/2 - 20px);max-height:calc(100vh - 130px);overflow-y:auto;background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:20px 22px;box-sizing:border-box}.dup-side .wk-grid-wrap{margin-top:0}.dup-side .wk-grid-head{font-size:16.5px}.dup-side .wk-grid{grid-template-columns:repeat(4,minmax(46px,1fr));gap:9px}.dup-side .wk-cell{aspect-ratio:1;height:auto;min-height:42px;font-size:14.5px;border-radius:10px;min-width:0;position:relative;z-index:2}.dup-side .wk-grid-note{font-size:13px}@media(max-width:1915px){.dup-layout{margin-top:0}.dup-side{position:static;width:auto;max-height:none;overflow:visible;margin-top:14px;padding:16px 20px}.dup-side .wk-grid-head{font-size:14px}.dup-side .wk-grid{grid-template-columns:repeat(10,1fr)}.dup-side .wk-cell{height:30px;font-size:11.5px}}.dup-table{table-layout:fixed;min-width:900px}.dup-table .dup-col-date{width:72px}.dup-table .dup-col-week{width:46px}.dup-table .dup-col-count{width:54px}.dup-table .dup-col-ratio{width:70px}.dup-table .dup-col-score{width:64px}.dup-table .dup-col-amount{width:88px}.dup-table thead th{padding:7px 6px;font-size:10px;text-align:center}.dup-table tbody td{padding:5px 6px;font-size:11px;line-height:1.3;text-align:center}.dup-table tbody td.week{font-size:9.5px}.dup-table .score-cell .wk-score{font-size:24px;display:flex;align-items:center;justify-content:center;height:100%}.dup-table td.num,.dup-table th.num{text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}.dup-table th.dup-dist{text-align:center}.dup-table td.num.amt{min-width:86px}.dup-table td.num.up{color:var(--a);font-weight:400}.dup-table td.num.down{color:var(--down);font-weight:400}.dup-table td.num.blk{color:var(--blk);font-weight:400}.dup-table td.week{color:var(--sub);font-size:9.5px;text-align:center}.dup-table td.zt{color:inherit;font-weight:400}.dup-table td.dt{color:inherit;font-weight:400}.dup-wkcell{background:#fbfcff;padding:9px 12px!important;vertical-align:middle;text-align:right}.dup-wkcell.wk-left{min-width:132px;border-right:1px dashed #dfe7f4}.dup-wkcell.wk-right{min-width:196px;border-left:1px dashed #dfe7f4}.dup-wkcell .wk-lbl{font-size:11px;color:var(--gray-2);font-weight:700;margin-bottom:3px;white-space:nowrap}.dup-wkcell .wk-val{font-size:13.5px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}.dup-wkcell.wk-left .wk-val{font-size:22px}.dup-wkcell .wk-val.up{color:var(--a)}.dup-wkcell .wk-val.down{color:var(--down)}.dup-wkcell .wk-val.amt{color:var(--link)}.dup-wkcell .wk-val .del{font-size:10.5px;font-weight:700;margin-left:6px}.dup-wkcell .wk-val .del.up{color:var(--a)}.dup-wkcell .wk-val .del.down{color:var(--down)}.dup-wkcell .wk-line1{display:flex;align-items:baseline;justify-content:flex-end;gap:5px;white-space:nowrap}.dup-wkcell .wk-line1 .wk-lbl{margin-bottom:0}.dup-wkcell .wk-line2{font-size:10.5px;font-weight:700;margin-top:2px;white-space:nowrap}.dup-wkcell .wk-line2.up{color:var(--a)}.dup-wkcell .wk-line2.down{color:var(--down)}.d20-score-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:16px}.d20-score{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:16px 22px;display:flex;flex-direction:column;transition:transform .15s,box-shadow .15s;cursor:pointer}.d20-score:hover{transform:translateY(-2px);box-shadow:var(--shadow-hover)}.d20-row{display:flex;align-items:center;justify-content:space-between}.d20-sname{font-size:15px;font-weight:800}.d20-sratio{display:flex;align-items:center;gap:10px;font-variant-numeric:tabular-nums}.d20-sratio .up{font-size:28px;font-weight:800;color:var(--a);line-height:1}.d20-sratio .down{font-size:28px;font-weight:800;color:var(--down);line-height:1}.d20-sratio .colon{font-size:18px;color:var(--gray-4);font-weight:700}.d20-detail[hidden]{display:none}.d20-detail{border-top:1px dashed #dfe7f4;margin-top:12px;padding-top:10px}.d20-detail-title{font-size:11px;color:var(--gray-4);font-weight:600;margin-bottom:6px}.d20-days{display:grid;grid-template-columns:repeat(10,1fr);gap:3px}.d20-dcell{width:auto;height:19px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;border-radius:4px}.d20-dcell.up{color:#fff;background:var(--a)}.d20-dcell.down{color:#fff;background:var(--down)}.d20-dcell.flat{color:var(--gray-2);background:#e9eef8}.d20-dcell.null{color:#d5dbe6;background:#f7f8fb}.d20-empty{color:var(--sub);text-align:center;padding:30px}.d20-entry-stocks{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-left:auto;justify-content:end;width:74%;box-sizing:border-box}.d20-entry-stock{font-size:18px;font-weight:700;color:var(--blk);background:#f6f8fc;border:1px solid #dbe4f1;border-radius:8px;padding:10px 14px;white-space:nowrap;text-align:center;transition:transform .15s,box-shadow .15s}.d20-entry-stock:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(30,50,100,.10)}.d20-entry-stock b.up{color:var(--a);font-weight:800;margin-left:5px}.d20-entry-stock b.down{color:var(--down);font-weight:800;margin-left:5px}.d20-entry-stock .cl{color:var(--gray-4);font-weight:600;margin:0 2px}.concept-strip{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);margin-top:24px;padding:16px 24px 18px}.concept-title{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:800;color:var(--text);white-space:nowrap}.concept-title svg{color:var(--a)}.concept-chips{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.concept-chip{font-size:12.5px;font-weight:700;color:var(--blk);background:#eef2fa;border:1px solid #d3dded;border-radius:10px;padding:8px 6px;cursor:pointer;transition:all .15s;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.concept-chip b{color:var(--brand);font-weight:800;margin-left:4px}.concept-chip:hover{background:#eef1f8;border-color:#aebbd9;transform:translateY(-2px)}.dup-bar-cell{display:flex;align-items:center;gap:8px;min-width:170px}.dup-bar{flex:1;height:12px;border-radius:6px;overflow:hidden;display:flex;background:#e6f4ea}.dup-bar i.up{background:linear-gradient(90deg,#f87171,#e03131);height:100%}.dup-bar i.down{background:var(--down);height:100%;flex:1}.newstocks-head{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid var(--line);background:#f8fafc}.newstocks-title{display:inline-flex;align-items:center;gap:7px;font-size:15px;font-weight:800;color:var(--text)}.newstocks-title svg{color:var(--a)}.iporeview-wrap .newstocks-title svg{color:var(--h)}.newstocks-sub{font-size:11.5px;color:var(--sub)}.head-action{margin-left:auto;border:1px solid #d5e0fa;background:#fff;color:var(--link);border-radius:6px;padding:5px 9px;font:700 11.5px/1 inherit;white-space:nowrap;cursor:pointer}.head-action:hover{background:#eef3ff}.newstocks-list{max-height:440px;overflow-y:auto;padding:4px 12px 12px;scrollbar-width:thin}.year-view .newstocks-list,.year-view .ipo-body{max-height:none;overflow:visible}.newstocks-list::-webkit-scrollbar{width:6px}.newstocks-list::-webkit-scrollbar-thumb{background:#ccd6e8;border-radius:3px}.ns-group{margin-top:6px}.ns-date-head{display:flex;align-items:center;gap:7px;font-size:15px;font-weight:800;color:var(--a);margin:12px 2px 6px;padding-left:11px;border-left:4px solid var(--a);letter-spacing:.5px;background:linear-gradient(90deg,rgba(220,38,38,.06),transparent)}.ns-date-head::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(220,38,38,.25),transparent)}.ns-item{display:flex;align-items:center;gap:10px;padding:7px 12px;border-radius:9px;cursor:default;width:100%;box-sizing:border-box;transition:background .15s,box-shadow .15s;box-shadow:inset 0 0 0 1px transparent}.ns-item:hover{background:#fafbfe;box-shadow:inset 0 0 0 1px #d8e2f4}.ns-name{font-weight:700;font-size:13.5px;white-space:nowrap}.ns-code{font-size:11.5px;color:var(--sub);font-family:Consolas,Menlo,monospace}.ns-board{font-size:10.5px;font-weight:700;padding:1px 8px;border-radius:20px;white-space:nowrap}.ns-board.a{background:var(--mkt-a-soft);color:var(--mkt-a)}.ns-board.h{background:var(--mkt-h-soft);color:var(--mkt-h)}.ns-sector{font-size:11px;font-weight:700;color:#2b4a8f;background:#eef3ff;border:1px solid #dbe4f8;border-radius:6px;padding:1px 8px;white-space:nowrap}.ns-biz{display:inline-flex;align-items:center;gap:3px;min-width:0}.ns-pct{font-style:normal;font-size:10.5px;font-weight:800;color:var(--a);margin-left:2px;white-space:nowrap}.ns-right{margin-left:auto;display:inline-flex;align-items:center;gap:10px;flex-shrink:0}.ns-industry{font-size:11px;color:var(--sub);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.stat-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:24px 26px;box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-hover)}.stat-card .num{font-size:28px;font-weight:800;font-variant-numeric:tabular-nums}.stat-card .num i{font-style:normal;font-size:14px;font-weight:600;color:var(--sub);margin-left:4px}.stat-card .t{color:var(--sub);font-size:13px;margin-top:2px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin-top:18px}.gcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;cursor:pointer;box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s,border-color .18s;position:relative;overflow:hidden}.gcard:hover{transform:translateY(-2px);box-shadow:var(--shadow-hover);border-color:#cfd8ea}.gcard .name{font-size:16px;font-weight:700;display:flex;align-items:center;gap:8px}.gcard .name .cnt{margin-left:auto;font-size:12px;font-weight:700;color:#fff;background:#4c5a75;border-radius:20px;padding:1px 10px}.gcard .name .cnt.a{background:var(--mkt-a)}.gcard .name .cnt.h{background:var(--mkt-h)}.gcard .desc{font-size:12px;color:var(--sub);margin-top:8px;display:flex;justify-content:space-between;align-items:center}.gcard .bar{height:5px;border-radius:4px;background:#e7edf8;margin-top:12px;overflow:hidden}.gcard .bar i{display:block;height:100%;border-radius:4px}.gcard .bar i.a{background:linear-gradient(90deg,#d18a8d,var(--mkt-a))}.gcard .bar i.h{background:linear-gradient(90deg,#86a0c2,var(--mkt-h))}.gcard .chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.chip{font-size:11px;color:var(--gray-1);background:#eef2fa;border:1px solid #d7e0f0;border-radius:20px;padding:2px 9px}.chip b{color:inherit;font-weight:600}.table-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-top:18px}.table-head{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}.table-head .title{font-size:16px;font-weight:700}.table-head .count{font-size:12.5px;color:var(--sub)}.table-head .spacer{flex:1}.table-head .filter{position:relative}.table-head .filter input{border:1px solid var(--line);border-radius:8px;padding:6px 12px;font-size:13px;outline:none;width:200px;background:#f3f6fc;transition:all .15s}.table-head .filter input:focus{border-color:#8fb4f5;background:#fff}table{width:100%;border-collapse:collapse}thead th{position:sticky;top:0;background:#f1f5fc;font-size:12px;color:var(--gray-2);font-weight:600;text-align:left;padding:10px 20px;border-bottom:1px solid var(--line);white-space:nowrap}tbody td{padding:11px 20px;border-bottom:1px solid #eef2f8;font-size:13.5px;vertical-align:middle}tbody tr{transition:background .12s}tbody tr:hover{background:#f7f9ff}tbody tr:last-child td{border-bottom:none}td.idx{color:#b0b7c4;font-size:12px}td.code{font-family:Consolas,Menlo,monospace;color:var(--gray-1);white-space:nowrap}td.name{font-weight:700;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis}td.products{color:#5b6472;max-width:420px;font-size:13px}td.products .none{color:var(--gray-5)}.concept-stock-table{table-layout:fixed}.concept-stock-table th,.concept-stock-table td{padding-left:16px;padding-right:16px}.concept-stock-table th:nth-child(1){width:46px}.concept-stock-table th:nth-child(2){width:92px}.concept-stock-table th:nth-child(3){width:150px}.concept-stock-table th:nth-child(4){width:48%}.concept-stock-table td.products{max-width:none;line-height:1.85}.concept-stock-table td:last-child{line-height:1.8}.mini-tag{font-size:11px;font-weight:600;padding:2px 9px;border-radius:20px;margin-right:6px;white-space:nowrap}.mini-tag.a{background:var(--mkt-a-soft);color:var(--mkt-a)}.mini-tag.h{background:var(--mkt-h-soft);color:var(--mkt-h)}.src-chip{display:inline-block;background:#f0f4ff;border:1px solid #dbe4f8;color:#2b4a8f;font-size:12px;padding:2px 10px;border-radius:8px;margin:2px 4px 2px 0}.src-chip .pct{font-style:normal;font-weight:700;color:var(--a);margin-left:2px}.tag-chip{display:inline-block;background:#eef2fa;border:1px solid #d3dded;color:var(--gray-1);font-size:11.5px;font-weight:600;padding:2px 10px;border-radius:20px;margin:2px 4px 2px 0;cursor:pointer;transition:all .15s;user-select:none}.tag-chip:hover{border-color:#aebbd9;background:#e8edf9}.tag-chip.a:hover{color:var(--mkt-a);border-color:#e5b8bd;background:var(--mkt-a-soft)}.tag-chip.h:hover{color:var(--mkt-h);border-color:#b7cbe3;background:var(--mkt-h-soft)}.tag-chip.is-on{background:var(--a);border-color:var(--a);color:#fff}.tag-filter-bar{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 14px;margin-top:14px;box-shadow:var(--shadow)}.tf-label{font-size:12px;color:var(--sub);font-weight:600}.tf-clear{margin-left:auto;border:none;background:#eef2fa;color:var(--gray-1);font-size:12px;padding:3px 10px;border-radius:6px;cursor:pointer}.tf-clear:hover{background:#e8ecf5}.legend{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--sub);white-space:nowrap;margin-right:10px}.lg-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-left:8px}.lg-dot:first-child{margin-left:0}.lg-real{background:var(--a)}.lg-biz{background:var(--gray-2);border:1px solid #c3cadb}.src-chip.real{background:#f0f4ff;border-color:#dbe4f8;color:#2b4a8f}.src-chip.biz{background:#f6f7fa;border-color:#e5e8f0;color:#5b6472}.empty-row td{padding:36px;text-align:center;color:var(--gray-4)}footer{max-width:1180px;margin:34px auto 0;padding:22px 24px 36px;color:var(--gray-3);font-size:12px;text-align:center;border-top:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.4),transparent)}.upd-schedule{margin-top:9px;font-size:12.5px;color:var(--sub)}.upd-schedule b{color:var(--brand-dark);font-weight:700}@media(max-width:1100px){.d20-score-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:980px){.d20-entry-stocks{width:100%;margin-left:0}}@media(max-width:940px){.ipo-row{flex-direction:column}.ipo-row .newstocks-wrap,.iporeview-wrap{width:auto}}@media(max-width:760px){.market-grid,.home-stats,.dup-stats,.d20-score-grid{grid-template-columns:1fr}main{padding:14px 14px 48px}.dup-entry{padding:16px 18px;gap:14px;flex-wrap:wrap}.dup-entry-stats{width:100%;margin-left:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px 8px;align-items:start}.dup-entry-stats .it{grid-column:span 2;min-width:0}.dup-entry-stats .it:nth-last-child(-n+2){grid-column:span 3}.dup-entry-stats .it em.cmp{position:static;transform:none;font-size:11px;line-height:1.25}.concept-strip{padding:14px 16px 16px}.home-stats{gap:14px}.header-inner{display:grid;grid-template-columns:auto minmax(0,1fr);padding:10px 14px;gap:10px;flex-wrap:nowrap}.brand-name{font-size:15px}.search-wrap{grid-column:2;grid-row:1;width:100%;min-width:0;max-width:none;order:0}.header-status{display:none}.search-box{padding:8px 12px}.search-box input,.table-head .filter input{font-size:16px}.kbd{display:none}.crumb{padding:12px 14px 0}.page-title .sub{flex-basis:100%;width:100%}.page-title .dup-export{padding:3px 12px}.hero h1{font-size:24px}.hero p{font-size:13px}.market-grid{gap:14px;margin-top:18px}.mcard{padding:22px 18px}.mcard .big{font-size:36px}.mcard .lbl{font-size:14px}.mcard .stats{margin-top:14px}.mcard .stats .it{padding-right:16px;margin-right:16px}.mcard .stats .it b{font-size:16px}.mcard .go{right:14px;bottom:14px;padding:5px 12px}.concept-chips{grid-template-columns:repeat(2,1fr)}.stat-card{padding:18px 16px}.stat-card .num{font-size:24px}.dup-entry > div:first-child{flex:0 0 auto}.dup-entry-title{font-size:22px}.dup-entry-stats .it span{font-size:26px}.newstocks-head{padding:12px 14px}.newstocks-list{padding:4px 10px 10px}.ipo-body{padding:8px 10px 12px}.ns-date-head{font-size:14px}.ns-item{flex-wrap:wrap;row-gap:4px;padding:7px 10px}.ns-industry{flex-basis:100%;text-align:left}.ipo-item{flex-wrap:nowrap;gap:5px;padding:6px 4px}.ipo-name{font-size:12px;min-width:58px}.ipo-main{max-width:38%;padding:1px 4px}.ipo-link{font-size:10px;padding:1px 5px}.table-head{padding:12px 14px}.table-head .title{font-size:15px}.table-head .filter{flex:1 1 100%;min-width:0}.table-head .filter input{width:100%}.legend{display:none}thead th{padding:8px 10px}tbody td{padding:9px 10px;font-size:13px}td.products{max-width:none}.dup-tabs button{padding:4px 10px;font-size:11.5px}.dup-stats-bar{padding:8px 14px}.wk-grid-entry{padding:8px 12px}.wk-grid-wrap{padding:12px}.dup-side .wk-grid{grid-template-columns:repeat(6,1fr)}.d20-score{padding:14px 16px}.d20-sratio .up,.d20-sratio .down{font-size:24px}.dup-more button{width:100%}.sd-path{display:none}.sd-item{padding:9px 12px}footer{padding:18px 14px 28px}}@media(max-width:520px){.d20-entry-stocks{grid-template-columns:repeat(2,1fr)}.stock-table thead th:first-child,.stock-table tbody td.idx{display:none}.mcard .big{font-size:30px}.mcard .stats .it b{font-size:15px}.ns-name{font-size:13px}.ns-sector{font-size:10.5px}.concept-chip{font-size:12px}.stat-card .num{font-size:22px}.dup-entry-stats .it span{font-size:23px}.dup-table tbody td{font-size:10.5px}.dup-table tbody td.week{font-size:9px}.dup-wkcell .wk-val{font-size:12.5px}.dup-wkcell.wk-left .wk-val{font-size:19px}.dup-wkcell.wk-left{min-width:110px}.dup-wkcell.wk-right{min-width:160px}.ipo-name{font-size:12.5px}}@media(max-width:390px){.header-inner{padding:7px 10px;gap:8px}.brand{gap:0}.brand-logo-box{width:34px;height:34px;border-radius:8px}.brand .brand-logo{height:24px}.brand-name{display:none}.search-box{gap:6px;padding:7px 9px;border-radius:9px}.search-box input{min-width:0}}.empty{display:block;text-align:center;padding:24px 16px;color:var(--gray-4);font-size:13px}.ipo-empty,.d20-empty{color:var(--gray-4);text-align:center;padding:20px 10px;font-size:12.5px}.sd-empty{padding:20px;text-align:center;color:var(--gray-4)}.empty-row td{padding:32px;text-align:center;color:var(--gray-4)}.na{color:var(--gray-4)}.tf-kw{font-size:12px;color:var(--gray-1)}.sd-more{padding:8px 14px;text-align:center;color:var(--gray-4);font-size:11.5px;border-top:1px solid #eef2f8;background:#fafbfd}[disabled],.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.spin{width:18px;height:18px;border-radius:50%;border:2.5px solid #ccd6e8;border-top-color:var(--h);animation:spin .8s linear infinite;display:inline-block;vertical-align:-3px}:focus-visible{outline:2px solid var(--h);outline-offset:2px;border-radius:6px}.gcard:focus-visible,.dup-entry:focus-visible,.d20-score:focus-visible,.mcard:focus-visible,.concept-chip:focus-visible{border-color:var(--h);box-shadow:var(--focus-ring)}.tag-chip:focus-visible,.sd-hot-tag:focus-visible{outline-offset:1px}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media(hover:none),(pointer:coarse){.gcard:hover,.mcard:hover,.dup-entry:hover,.d20-score:hover,.concept-chip:hover{transform:none!important}.mcard:hover{box-shadow:none}}.wk-grid-entry{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13.5px;font-weight:800;color:var(--text);background:linear-gradient(135deg,#fff7f7,#f7faff);border:1px solid var(--line);border-radius:10px;padding:9px 16px;margin:14px 0 4px;box-shadow:var(--shadow);transition:background .15s}.wk-grid-entry:hover{background:#f5f8ff}.wk-grid-entry svg{color:var(--a);flex:none}.wk-grid-sub{font-size:11.5px;font-weight:600;color:var(--gray-2)}.wk-grid-arrow{margin-left:auto;color:var(--gray-2);font-size:12px}.wk-grid-wrap{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:14px 18px;margin-top:8px}.wk-grid-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:13px}.wk-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:6px;margin-top:12px}.wk-cell{aspect-ratio:1.7;min-height:28px;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:800;border-radius:6px;font-variant-numeric:tabular-nums;cursor:default;transition:transform .12s}.wk-cell:hover{transform:scale(1.12)}.wk-cell.low{background:var(--down);color:#fff}.wk-cell.mid{background:#fff;color:var(--text);border:1px solid var(--line)}.wk-cell.high{background:var(--up);color:#fff}.wk-cell.null{background:#f3f5fa;color:var(--gray-5);border:1px dashed var(--line)}.wk-grid-note{font-size:11px;color:var(--gray-4);margin-top:10px}.wk-grid-stats{display:flex;gap:16px;margin-top:10px;align-items:center;flex-wrap:wrap}.wk-grid-stats .ws-item{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--gray-4);white-space:nowrap}.wk-grid-stats .ws-item b{font-weight:800;color:var(--text)}.wk-grid-stats .ws-dot{width:11px;height:11px;border-radius:2px;flex:none;display:inline-block}.wk-grid-stats .ws-dot.r{background:var(--up)}.wk-grid-stats .ws-dot.w{background:#fff;border:1px solid var(--line)}.wk-grid-stats .ws-dot.g{background:var(--down)}@media(max-width:760px){.wk-grid{grid-template-columns:repeat(6,1fr)}}.wk-sum td{border-top:1.5px dashed var(--gray-5);background:#fbfcff;font-weight:700}.wk-sum .wk-sum-lbl{font-size:11px;color:var(--gray-2);font-weight:700;text-align:left}.amt-gold{color:#BF8F00;font-weight:700}.dup-table th.score-h{text-align:center}.score-cell{text-align:center;vertical-align:middle;background:linear-gradient(135deg,#fff7f7,#f7faff);border-right:1px dashed var(--gray-5)}.score-cell .wk-score{display:block;font-size:20px;font-weight:900;line-height:1.15;font-variant-numeric:tabular-nums;letter-spacing:.3px}.score-cell .wk-score.up{color:var(--a)}.score-cell .wk-score.down{color:var(--down)}.score-cell .wk-score.blk{color:var(--blk)}.dup-day{cursor:pointer}.dup-day:hover td{background:#f4f7ff}.dup-day:hover td.score-cell{background:linear-gradient(135deg,#fff7f7,#f7faff)}.dup-more{text-align:center;padding:12px 0 14px}.dup-more button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 20px;font-size:13px;cursor:pointer;color:var(--text);font-family:inherit;box-shadow:var(--shadow);transition:background .15s}.dup-more button:hover{background:#f5f8ff}.day-modal{position:fixed;inset:0;z-index:210;display:flex;align-items:center;justify-content:center;padding:20px}.day-modal[hidden]{display:none}.day-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(3px)}.day-box{position:relative;width:min(560px,94vw);max-height:86vh;overflow:auto;background:#fff;border-radius:16px;box-shadow:0 24px 64px rgba(15,23,42,.35);animation:pdfIn .22s ease}.day-head{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,#fff7f7,#f7faff)}.day-title{font-size:15px;font-weight:800;flex:1}.day-close{flex:none;border:none;background:transparent;color:var(--gray-2);font-size:16px;font-weight:800;cursor:pointer;padding:4px 8px;border-radius:6px}.day-close:hover{background:#eef1f7}.day-body{padding:16px 18px 18px}.day-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.day-item{background:#f8faff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;text-align:center}.day-item b{display:block;font-size:11px;color:var(--gray-2);font-weight:600;margin-bottom:4px}.day-item span{display:block;font-size:17px;font-weight:400;font-variant-numeric:tabular-nums}.day-item span.up{color:var(--a)}.day-item span.down{color:var(--down)}.day-item span.blk{color:var(--blk)}.day-item span.score{font-weight:800}.day-item span.score.up{color:var(--a)}.day-item span.score.down{color:var(--down)}.dup-table td.alarm,.day-item span.alarm{color:var(--alarm);font-weight:400}.dup-entry-stats .it em.cmp{display:block;font-size:11.5px;font-weight:400;color:var(--gray-2);font-style:normal;margin-top:1px;white-space:nowrap}.dup-entry-stats .it em.cmp.up{color:var(--a)}.dup-entry-stats .it em.cmp.down{color:var(--down)}.dup-entry-stats .it em.cmp.alarm{color:var(--a)}.dup-entry,.mcard,.newstocks-wrap,.iporeview-wrap,.concept-strip,.stat-card{border-radius:10px;box-shadow:0 1px 3px rgba(30,50,100,.07)}.crumb .status{font-size:11px;font-weight:700;color:var(--brand-dark);background:var(--brand-soft);border:1px solid #d5e4eb;border-radius:5px;padding:2px 6px}.day-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:14px}.day-nav button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 12px;font-size:12.5px;cursor:pointer;color:var(--text);font-family:inherit;transition:background .15s}.day-nav button:hover{background:#f0f2f7}@media(max-width:760px){.day-grid{grid-template-columns:repeat(2,1fr)}}.pwd-gate{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#eef2fb,#e2e9f7);font-family:inherit}.pwd-gate[hidden]{display:none}.pwd-box{width:min(380px,90vw);background:#fff;border-radius:18px;box-shadow:0 20px 60px rgba(15,23,42,.22);padding:34px 32px 30px;text-align:center;animation:pdfIn .25s ease}.pwd-box h2{margin:0 0 4px;font-size:19px;font-weight:900;color:var(--text)}.pwd-box .pwd-sub{font-size:12.5px;color:var(--gray-2);margin-bottom:20px}.pwd-box input{width:100%;box-sizing:border-box;padding:12px 14px;border:1.5px solid var(--line);border-radius:10px;font-size:15px;text-align:center;letter-spacing:2px;outline:none;transition:border-color .15s}.pwd-box input:focus{border-color:var(--h)}.pwd-box .pwd-err{color:var(--a);font-size:12.5px;height:18px;margin:8px 0 2px;font-weight:600}.pwd-box button{width:100%;margin-top:10px;padding:11px;border:none;border-radius:10px;background:var(--h);color:#fff;font-size:15px;font-weight:800;cursor:pointer;font-family:inherit;transition:background .15s}.pwd-box button:hover{background:#1756d6}.pwd-box .pwd-tip{font-size:11px;color:var(--gray-5);margin-top:14px}
:root{--bg:#e9eef9;--card:#ffffff;--text:#1a2438;--sub:#4d5b74;--line:#dbe4f2;--brand:#7fa8b9;--brand-soft:#eef4f7;--brand-dark:#5b8294;--a:#e03131;--a-soft:#fdecec;--down:#0ca678;--h:#1f6feb;--h-soft:#eaf1fe;--mkt-a:#b9656b;--mkt-a-soft:#faecee;--mkt-h:#5f82b0;--mkt-h-soft:#edf3fb;--link:#1a56db;--link-soft:#eef3ff;--warn:#e65100;--warn-soft:#fff3e0;--blk:#3b4a63;--gray-1:#475069;--gray-2:#6f7b94;--gray-3:#5f6b85;--gray-4:#6b7690;--gray-5:#8a97b3;--radius:12px;--r-sm:6px;--r-md:8px;--r-lg:12px;--shadow:0 1px 2px rgba(29,81,127,.045),0 6px 18px rgba(29,81,127,.055);--shadow-hover:0 2px 5px rgba(29,81,127,.09),0 12px 26px rgba(29,81,127,.10)}body{background:var(--bg);font-family:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif;letter-spacing:0;text-wrap:pretty}header{background:rgba(255,255,255,.98);border-bottom-color:var(--line);box-shadow:0 1px 8px rgba(29,81,127,.05)}.header-inner{max-width:1240px;padding:14px 28px;gap:26px}.brand{gap:11px}.brand-logo-box{width:38px;height:38px;border-radius:10px;background:var(--brand-soft);box-shadow:none}.brand .brand-logo{height:28px}.brand-name{font-size:15px;letter-spacing:0;background:none;color:var(--brand-dark)}.search-wrap{max-width:580px}.search-box{min-height:42px;background:#f8fbff;border-color:#c6dced;border-radius:8px;box-shadow:0 1px 2px rgba(29,81,127,.035)}.search-box:focus-within{background:#fff;border-color:#6ca5d0;box-shadow:0 0 0 3px rgba(47,120,183,.14)}.search-box .kbd{background:#eaf4fb;border-color:#cbe0ef;color:#4d7190}.sd-item:hover,.sd-item.is-active{background:#e9f5fc}.sd-hot{background:#f4faff;border-top-color:#d0e3f0}.sd-hot-tag{background:#eaf4fb;border-color:#c9deec;color:#356786}.sd-hot-tag:hover{background:#dceefa;border-color:#9bc3df}.header-status{font-size:11.5px;gap:8px}.header-status .dot{width:7px;height:7px;background:#5f8dad;box-shadow:0 0 0 3px rgba(95,141,173,.11)}.header-status b{color:#4b6d86;font-weight:700}.crumb,main,footer{max-width:1240px}.crumb{padding:15px 28px 0;font-size:12px}main{padding:22px 28px 68px}.dup-entry{margin-top:16px;padding:18px 20px;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:var(--shadow);transition:border-color .18s,box-shadow .18s,transform .18s}.dup-entry:hover{border-color:#91b9d6;box-shadow:var(--shadow-hover);transform:translateY(-1px)}.dup-entry-title{font-size:15px;letter-spacing:0}.dup-entry-sub{margin-top:2px}.dup-entry-stats{gap:0}.dup-entry-stats .it{padding:0 18px;border-left:1px solid #d2e2ef}.dup-entry-stats .it:first-child{border-left:0}.daily-entry{min-height:142px;margin-top:0;padding:26px 28px;gap:28px;border-color:var(--line);background:var(--card)}.daily-entry > div:first-child{flex:0 0 170px}.daily-entry .dup-entry-title{font-size:20px;gap:10px}.daily-entry .dup-entry-title{color:var(--brand-dark)}.daily-entry .dup-entry-title svg{width:19px;height:19px}.daily-entry .dup-entry-stats{width:auto;flex:1;display:grid;grid-template-columns:repeat(5,minmax(112px,1fr));align-items:center;margin-left:0}.daily-entry .dup-entry-stats .it{min-width:0;padding:6px 22px}.daily-entry .dup-entry-stats .it b{font-size:12px;line-height:1.4;letter-spacing:0}.daily-entry .dup-entry-stats .it span{font-size:29px;margin-top:7px;line-height:1.15}.daily-entry .dup-entry-stats .it em.cmp{margin-top:5px}.d20-entry-stocks{gap:8px}.d20-entry-stock{background:#edf6fc;border-color:#cde1ef;border-radius:6px;box-shadow:none}.ipo-row{gap:16px}.newstocks-wrap,.iporeview-wrap,.concept-strip,.stat-card,.table-card,.gcard,.d20-score{border-radius:12px;box-shadow:var(--shadow)}.newstocks-wrap,.iporeview-wrap{margin-top:16px}.newstocks-head,.newstocks-wrap .newstocks-head{padding:14px 18px;background:#f4f9fd}.iporeview-wrap .newstocks-head{background:#fff6e9;border-bottom-color:#ecd4af}.newstocks-title{font-size:14px}.newstocks-sub{color:#55738b}.head-action{border-radius:6px;border-color:#b9d2e4;background:#fff;color:#286da6}.head-action:hover{background:#e7f3fc;border-color:#82afd0}.ns-date-head{font-size:13px;padding-left:8px;border-left-width:2px;background:none;letter-spacing:0}.ns-date-head::after{display:none}.ns-item,.ipo-item{border-radius:6px}.ns-item:hover{background:#f0f8fd;box-shadow:none}.ipo-item:hover{background:#fff4e4;box-shadow:none}.ipo-body{padding:8px 14px 14px}.ipo-sub{border-left-width:2px;padding-left:7px}.market-grid{gap:12px;margin-top:16px}.mcard{min-height:0;border-radius:10px;padding:16px 18px;box-shadow:0 1px 2px rgba(29,81,127,.04);transition:transform .18s,box-shadow .18s,border-color .18s}.mcard::before,.mcard::after{display:none}.mcard:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(29,81,127,.085)}.mcard{display:grid;grid-template-columns:auto minmax(130px,1fr) auto auto;align-items:center;gap:18px;isolation:isolate}.mcard-code{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;padding:0;border-radius:8px;font:800 12px/1 Consolas,Menlo,monospace;letter-spacing:0;border:1px solid}.mcard-main{display:block;padding:0}.mcard .big{font-size:24px;font-weight:800;letter-spacing:0;line-height:1.2;font-variant-numeric:tabular-nums;color:#1d405c;margin-top:4px}.mcard .big small{font-size:11px;font-weight:600;color:#6b8397;margin-left:4px}.mcard .lbl{display:flex;align-items:baseline;gap:6px;font-size:14px;font-weight:800;letter-spacing:0;margin:0;color:#285775}.mcard .lbl span{font-size:12px;font-weight:600;color:inherit;opacity:.66}.mcard .stats{margin:0;display:flex;gap:0;padding:0;border-top:0}.mcard .stats .it{padding:0 18px;margin:0;border-right:1px solid #d3e1ed}.mcard .stats .it:first-child{border-left:1px solid #d3e1ed}.mcard .stats .it:last-child{border-right:0;padding-right:0;margin-right:0}.mcard .stats .it b{font-size:16px;color:#285774}.mcard .stats .it span{font-size:11px;color:#55738b;opacity:.9}.mcard .go{position:static;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;margin:0;border-radius:50%;padding:0;background:#f2f8fd;border:1px solid #d1e3ef;color:#3473a2}.mcard .go span{font-size:18px;line-height:1;transition:transform .18s}.mcard:hover .go{background:#e5f2fb}.mcard:hover .go span{transform:translateX(2px)}.mcard.a,.mcard.h{background:var(--card);border:1px solid var(--line)}.mcard.a .mcard-code{color:#2f76a3;background:#e6f3fb;border-color:#c5deed}.mcard.h .mcard-code{color:#516fa5;background:#ebf0fb;border-color:#cfdaf0}.mcard.a:hover,.mcard.h:hover{border-color:#91b9d6}.concept-strip{margin-top:16px;padding:16px 18px 18px}.concept-title{font-size:13px}.concept-chips{gap:6px}.concept-strip{border-color:var(--line);background:var(--card)}.concept-chip{border-radius:6px;background:#eaf4fb;border-color:#c8dfed;color:#28698f;padding:8px 10px;text-align:left}.concept-chip b{color:#4e85a7}.concept-chip:hover{background:#dceefa;border-color:#91bedd;transform:none}.home-stats{gap:0;margin-top:16px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.stat-card{border:0;border-left:1px solid #d2e2ed;border-radius:0;padding:18px 20px;box-shadow:none;transition:none}.stat-card:first-child{border-left:0;border-radius:12px 0 0 12px}.stat-card:last-child{border-radius:0 12px 12px 0}.stat-card:hover{transform:none;box-shadow:none;background:#f3f9fd}.stat-card .num{font-size:26px;letter-spacing:0}.stat-card:nth-child(1) .num{color:#27628c}.stat-card:nth-child(2) .num,.stat-card:nth-child(3) .num{color:#27628c}.stat-card .t{font-size:12px}.page-title{margin:6px 0 12px;padding-bottom:14px;border-bottom:1px solid var(--line)}.page-title h1{font-size:24px;letter-spacing:0}.page-title .sub{font-size:12px}.grid{gap:12px;margin-top:14px}.gcard{padding:16px 18px;transition:border-color .16s,box-shadow .16s,transform .16s}.gcard:hover{border-color:#8ebad8;box-shadow:var(--shadow-hover);transform:translateY(-1px)}.gcard .name{font-size:15px}.gcard .bar{height:3px;margin-top:10px}.table-card{margin-top:14px}.table-head{padding:13px 18px;background:#f3f9fd}.table-head .title{font-size:15px}.table-head .filter input{border-radius:6px;background:#fff}thead th{background:#e9f3fa;color:#2d668f;font-size:11px;letter-spacing:0;padding:10px 18px;border-bottom-color:#c4dcea}tbody td{padding:12px 18px;border-bottom-color:#e0ebf2}tbody tr:hover{background:#f1f8fd}td.code{font-size:12px;color:#2d6d9d}td.name{color:#1e405a}.src-chip,.src-chip.real,.src-chip.biz,.tag-chip,.ns-sector{border-radius:5px;background:#eaf4fb;border-color:#c9dfed;color:#2e678d}.tag-chip:hover{background:#dceefa;border-color:#94bfdd}.ns-sector .ns-pct{color:#4e84a4}.newstocks-title svg,.concept-title svg,.wk-grid-entry svg{color:#4d87ab}.iporeview-wrap .newstocks-title svg{color:#b37023}.ns-date-head{color:#36759e;border-left-color:#82b6d7}.ipo-sub,.ipo-sub.hk{color:#9b6225;border-left-color:#d6a663}.ipo-tag.new,.ipo-tag.apply{background:#fff0da;color:#a2611f}.src-chip .pct{color:#4e84a4}.tag-chip.is-on{background:#2d76b4;border-color:#2d76b4;color:#fff}.dup-tabs button.is-on{background:#2d76b4;border-color:#2d76b4;color:#fff}.lg-real,.lg-biz{background:#2d76b4;border-color:#2d76b4}.tf-clear{background:#e7f3fc;color:#246aa0}.tf-clear:hover{background:#d9ecfa}.dup-tabs button:hover,.dup-more button:hover{background:#e8f4fc;border-color:#8eb9d6}.page-title .mk-chip.a,.page-title .mk-chip.h{border-color:#c4dcea}.tag-chip.a:hover,.tag-chip.h:hover{color:#286a95;border-color:#95bfdb;background:#e2f0fa}.wk-grid-entry,.score-cell,.dup-day:hover td.score-cell,.day-head{background:#f3f9fd}.wk-grid-entry:hover,.dup-day:hover td,.day-nav button:hover{background:#e8f4fc}.wk-cell.null{background:#eff6fa;border-color:#d0e1ec}.wk-sum td{background:#f8fbfe}.amt-gold{color:#ab6b25}.ipo-link,.pdf-url{color:#1c6fa9;background:#eaf4fb;border-color:#c9dfed}.ipo-link:hover{background:#dceefa}.d20-score{padding:16px 18px}.d20-score:hover{transform:translateY(-1px);box-shadow:var(--shadow-hover)}footer{margin-top:24px;padding:20px 28px 32px;background:none}@media(max-width:760px){.header-inner{padding:10px 14px}.crumb{padding:12px 14px 0}main{padding:18px 14px 50px}.dup-entry{padding:15px 14px}.dup-entry-stats{margin-top:12px}.dup-entry-stats .it{padding:0 10px}.daily-entry{min-height:0;padding:20px 16px;gap:18px}.daily-entry > div:first-child{flex:0 0 auto;padding:12px 14px}.d20-entry > div:first-child{padding:12px 14px}.daily-entry .dup-entry-title{font-size:19px}.daily-entry .dup-entry-stats{width:100%;grid-template-columns:repeat(6,minmax(0,1fr));gap:20px 8px;margin-top:0}.daily-entry .dup-entry-stats .it{grid-column:span 2;padding:0 8px;border-left:0}.daily-entry .dup-entry-stats .it:nth-last-child(-n+2){grid-column:span 3}.daily-entry .dup-entry-stats .it span{font-size:25px;margin-top:5px}.daily-entry .dup-entry-stats .it em.cmp{margin-top:3px}.home-stats{grid-template-columns:1fr;border-radius:12px}.stat-card,.stat-card:first-child,.stat-card:last-child{border-radius:0;border-left:0;border-top:1px solid #e7ebf0}.stat-card:first-child{border-top:0;border-radius:12px 12px 0 0}.stat-card:last-child{border-radius:0 0 12px 12px}.mcard{min-height:0;grid-template-columns:auto minmax(110px,1fr) auto auto;padding:14px 16px;gap:13px}.concept-chip{text-align:center}.newstocks-head{padding:12px 14px}.mcard .stats .it{padding:0 12px}.mcard .stats .it b{font-size:15px}}@media(max-width:520px){.mcard{grid-template-columns:auto minmax(0,1fr) auto}.mcard .stats{grid-column:2/4;margin-top:2px}.mcard .stats .it:first-child{border-left:0;padding-left:0}.mcard .go{grid-column:3;grid-row:1}}
#view .d20-entry-stock{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;color:#0F172A!important;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;font-size:13px!important;font-weight:400!important}#view .trend-capsule-name{min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;color:#0F172A!important;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;font-size:13px!important;font-weight:400!important}#view .trend-capsule-values{display:inline-flex!important;align-items:center!important;justify-content:flex-end!important;flex:0 0 auto!important;white-space:nowrap!important}#view .trend-capsule-colon{color:#64748B!important;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;font-size:13px!important;font-weight:400!important;margin:0 4px!important}#view .trend-capsule-digits{color:#0F172A!important;font-family:Inter,Roboto,"Helvetica Neue",sans-serif!important;font-size:13px!important;font-weight:600!important;font-variant-numeric:tabular-nums!important;line-height:1!important}#view .trend-capsule-digits.digits-up,#view .trend-capsule-digits.up{color:#DC2626!important}#view .trend-capsule-digits.digits-down,#view .trend-capsule-digits.down{color:#16A34A!important}@media(max-width:520px){#view .d20-entry-stock,#view .trend-capsule-name{font-size:13px!important}#view .trend-capsule-digits,#view .trend-capsule-colon{font-size:13px!important}}#view .d20-entry-stock{min-height:60px!important;padding:12px 18px!important;gap:16px!important}#view .trend-capsule-name{font-size:19px!important;font-weight:700!important;line-height:1.2!important;letter-spacing:0!important}#view .trend-capsule-values{gap:0!important}#view .trend-capsule-digits{font-size:20px!important;font-weight:700!important;line-height:1.1!important}#view .trend-capsule-colon{font-size:18px!important;font-weight:700!important;margin:0 14px!important;line-height:1!important}@media(max-width:520px){#view .d20-entry-stock{min-height:52px!important;padding:10px 12px!important;gap:10px!important}#view .trend-capsule-name{font-size:16px!important}#view .trend-capsule-digits{font-size:17px!important}#view .trend-capsule-colon{font-size:16px!important;margin:0 8px!important}}#view .d20-entry-stock .trend-capsule-name{font-size:19px!important;line-height:22.8px!important;font-weight:700!important;letter-spacing:0!important}#view .d20-entry-stock .trend-capsule-digits,#view .d20-entry-stock b.up.trend-capsule-digits,#view .d20-entry-stock b.down.trend-capsule-digits{font-size:22px!important;line-height:24.2px!important;font-weight:800!important;font-variant-numeric:tabular-nums!important}#view .d20-entry-stock .trend-capsule-colon{font-size:18px!important;line-height:18px!important;font-weight:500!important;color:#94A3B8!important;margin:0 14px!important}#view .ipo-row{display:flex!important;align-items:stretch!important;gap:24px!important}#view .ipo-row > .newstocks-wrap,#view .ipo-row > .iporeview-wrap{flex:1 1 0%!important;width:auto!important;min-width:0!important;display:flex!important;flex-direction:column!important;background:#FFFFFF!important;border:1px solid #E2E8F0!important;border-radius:6px!important}#view .ipo-row > .newstocks-wrap .newstocks-list,#view .ipo-row > .iporeview-wrap .ipo-body{flex:1 1 auto!important;min-height:0!important}#view .ipo-row .ns-item,#view .ipo-row .ipo-item{background:#FFFFFF!important;background-color:#FFFFFF!important;border:0!important;border-bottom:1px solid #F1F5F9!important;border-radius:0!important;transition:background-color .15s ease!important}#view .ipo-row .ns-item:hover,#view .ipo-row .ipo-item:hover{background:#FAFAFA!important;cursor:pointer!important}#view:is( .finance-number,.market-main-number,.trend-capsule-digits,.concept-count-refined,.table-percentage-cell,.d20-entry-stock b,.dup-entry-stats .it span,.ns-pct,.ipo-pct,.mcard .big,.mcard .stats .it b,.mcard .stats .it span,.concept-chip b,.stat-card .num,td.num ){font-family:Inter,Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;font-variant-numeric:tabular-nums!important}@media(max-width:940px){#view .ipo-row{gap:16px!important}}@media(max-width:760px){#view .ipo-row{gap:12px!important}}#view .ipo-row .ipo-mkt,#view .ipo-row .ipo-mkt.a,#view .ipo-row .ipo-mkt.h,#view.year-view .ipo-mkt,#view.year-view .ipo-mkt.a,#view.year-view .ipo-mkt.h{background:#F1F5F9!important;color:#475569!important;border:0!important;border-radius:3px!important;padding:2px 6px!important;font-size:11px!important;font-weight:500!important}#view .ipo-row .ns-date-head,#view .ipo-row .ipo-date-head,#view.year-view .ns-date-head,#view.year-view .ipo-date-head{padding-top:10px!important;padding-bottom:6px!important;font-size:12px!important;color:#64748B!important;font-weight:400!important;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important}#view .concept-chips{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;column-gap:36px!important;row-gap:0!important}@media(max-width:760px){#view .concept-chips{grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:12px!important;row-gap:0!important}}html,body,input,button,select,textarea{font-family:Inter,Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;font-weight:400!important}#view:is(.finance-number,.market-main-number,.trend-capsule-digits,.concept-count-refined,.table-percentage-cell,td,th){font-family:Inter,Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;font-variant-numeric:tabular-nums!important}#view .font-bold-finance{font-weight:600!important}#view .ipo-pct{display:none!important}

:root{--ipo-a-bg:#FDECEC;--ipo-a-text:#B42318;--ipo-h-bg:#EAF2FF;--ipo-h-text:#2563EB}#view .ipo-row .ipo-mkt.a,#view.year-view .ipo-mkt.a{background:var(--ipo-a-bg)!important;color:var(--ipo-a-text)!important;border:1px solid #F4CACA!important}#view .ipo-row .ipo-mkt.h,#view.year-view .ipo-mkt.h{background:var(--ipo-h-bg)!important;color:var(--ipo-h-text)!important;border:1px solid #C8DDFB!important}
#view .announcements-entry{margin:14px 0 18px;background:#fff;border:1px solid #dfe8e6;border-radius:6px;overflow:hidden}
#view .ann-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #edf1f0;background:#f7faf9}
#view .ann-title{font-size:15px;font-weight:650;color:#18313e;display:flex;align-items:center;gap:7px}
#view .ann-mark{color:#527e90;font-size:16px;line-height:1}
#view .ann-sub{margin-top:3px;color:#7a8a92;font-size:11px}
#view .ann-more,.ann-portal{border:1px solid #b9c9ce;background:#fff;color:#3f6676;border-radius:4px;padding:5px 9px;font-size:12px;text-decoration:none;cursor:pointer}
#view .ann-more:hover,.ann-portal:hover{background:#eef3f2;border-color:#66879a}
#view .ann-list{display:flex;flex-direction:column}
#view .ann-item{display:grid;grid-template-columns:84px minmax(0,1fr) 118px 82px;gap:10px;align-items:center;padding:9px 16px;color:#41545d;text-decoration:none;border-bottom:1px solid #f0f3f2;font-size:12px}
#view .ann-item:last-child{border-bottom:0}
#view .ann-item:hover{background:#f7faf9}
#view .ann-stock{font-weight:600;color:#18313e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#view .ann-item-title{color:#30464f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#view .ann-item time{color:#7a8a92;font-variant-numeric:tabular-nums;white-space:nowrap}
#view .ann-source{font-size:11px;color:#6d858e;text-align:right;white-space:nowrap}
#view .ann-empty{padding:16px;color:#829098;font-size:12px;text-align:center}
#view .ann-page-card{background:#fff;border:1px solid #dfe8e6;border-radius:6px;overflow:hidden}
#view .ann-page-note{padding:12px 16px;background:#f7faf9;border-bottom:1px solid #edf1f0;color:#71828a;font-size:12px}
#view .ann-stock-group{border-bottom:1px solid #edf1f0}
#view .ann-stock-group:last-child{border-bottom:0}
#view .ann-stock-group>header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#fbfcfc}
#view .ann-stock-group strong{font-size:14px;color:#18313e}
#view .ann-code{margin-left:9px;color:#829098;font-size:11px}
@media(max-width:760px){#view .ann-item{grid-template-columns:72px minmax(0,1fr) 92px;gap:7px;padding:9px 12px}#view .ann-source{display:none}#view .ann-head{padding:11px 12px}}


/* =====================================================================
   bridgewater-001 · canonical final layer
   This is the only intentional final-theme layer. It follows the legacy
   rules above so historical theme fragments cannot win the cascade.
   ===================================================================== */
:root{
  --editorial-canvas:#F5F5F5;
  --editorial-surface:#FFFFFF;
  /* Bridgewater-inspired editorial palette: neutral paper, restrained navy/red accents. */
  --editorial-ink:#111111;
  --editorial-text:#333333;
  --editorial-muted:#666666;
  --editorial-line:#E6E6E6;
  --editorial-blue:#326891;
  --editorial-red:#80241E;
  --editorial-orange:#B85C1A;
}
html,body,main{background:var(--editorial-canvas)!important;color:var(--editorial-ink)!important}
body{font-family:"PingFang SC","Microsoft YaHei","Segoe UI",Arial,sans-serif!important;font-size:14px!important;line-height:1.45!important}
header{height:58px!important;background:#FFF!important;border-bottom:1px solid #D9DEE3!important;box-shadow:none!important;backdrop-filter:none!important}
.header-inner{max-width:1180px!important;height:58px!important;padding:0!important;gap:16px!important}
.brand{gap:9px!important}.brand-logo-box{width:32px!important;height:32px!important;border-radius:2px!important;background:#F1F3F4!important;box-shadow:none!important}.brand .brand-logo{height:23px!important}.brand-name{font-size:15px!important;letter-spacing:1px!important;font-weight:700!important;background:none!important;color:#20262D!important}
.search-wrap{max-width:512px!important;min-width:300px!important}.search-box{height:34px!important;padding:6px 12px!important;border:1px solid #CCD4DA!important;border-radius:0!important;background:#FFF!important;box-shadow:none!important}.search-box input{font-size:12px!important;color:var(--editorial-text)!important}.search-box .kbd{font-size:10px!important;border-radius:0!important;padding:1px 5px!important;background:#F7F7F7!important;border-color:#D9DEE3!important}.header-status{font-size:11px!important;color:#71808A!important}.header-status .dot{width:6px!important;height:6px!important;box-shadow:none!important;background:#3C7893!important}.header-status b{font-size:11px!important;color:#36434D!important}.header-status time{font-size:10px!important;color:#7A858D!important}
.crumb{max-width:1180px!important;padding:8px 0 0!important}
main{max-width:1180px!important;padding:26px 0 56px!important}
#view>.daily-entry,#view>.d20-entry{width:100%!important;box-sizing:border-box!important;border:1px solid #D9DEE3!important;border-radius:0!important;background:#FFF!important;box-shadow:none!important;color:var(--editorial-ink)!important}
#view>.daily-entry{min-height:114px!important;margin:0 0 10px!important;padding:20px 24px!important;display:grid!important;grid-template-columns:170px minmax(0,1fr)!important;gap:22px!important;align-items:center!important}
#view>.daily-entry>div:first-child,#view>.d20-entry>div:first-child{background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;padding:0!important;min-height:0!important;width:auto!important}
#view>.daily-entry .dup-entry-title,#view>.d20-entry .dup-entry-title{font-size:17px!important;line-height:1.25!important;font-weight:600!important;color:#2C4959!important;gap:7px!important}
#view>.daily-entry .dup-entry-title svg,#view>.d20-entry .dup-entry-title svg{width:15px!important;height:15px!important;color:var(--editorial-orange)!important}
#view>.daily-entry .dup-entry-stats{width:100%!important;margin:0!important;display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;align-items:center!important}
#view>.daily-entry .dup-entry-stats .it{padding:0 16px!important;margin:0!important;border-left:1px solid #E0E5E9!important;border-right:0!important;text-align:center!important}
#view>.daily-entry .dup-entry-stats .it:first-child{border-left:1px solid #E0E5E9!important}
#view>.daily-entry .dup-entry-stats .it b{font-size:11px!important;line-height:1.2!important;font-weight:400!important;color:#71808A!important;letter-spacing:0!important}
#view>.daily-entry .dup-entry-stats .it span{font-size:25px!important;line-height:1.12!important;margin-top:7px!important;font-weight:700!important;color:#111827!important}
#view>.daily-entry .dup-entry-stats .it span.up{color:#D92D2D!important}.dup-entry-stats .it span.down{color:#159447!important}
#view>.daily-entry .dup-entry-stats .it em.cmp{font-size:10px!important;margin-top:4px!important}
#view>.daily-entry .dup-entry-stats .it em.cmp.up{color:#D92D2D!important}
#view>.daily-entry .dup-entry-stats .it em.cmp.down{color:#159447!important}
#view>.d20-entry{min-height:200px!important;margin:0 0 16px!important;padding:18px 18px 16px!important;display:block!important}
#view>.d20-entry .dup-entry-title{font-size:16px!important;color:#334B58!important}
#view>.d20-entry .dup-entry-sub{font-size:11px!important;line-height:1.25!important;color:#7A8790!important;margin-top:2px!important}
#view>.d20-entry .d20-entry-stocks{width:100%!important;margin:18px 0 0!important;display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:12px!important}
#view>.d20-entry .d20-entry-stock,#view>.d20-entry .stock-trend-card{min-height:48px!important;padding:10px 14px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;background:#FFF!important;border:1px solid #E0E4E7!important;border-radius:2px!important;box-shadow:none!important;color:#111827!important}
#view>.d20-entry .d20-entry-stock:hover{background:#FAFBFB!important;border-color:#B9C8CE!important;transform:none!important;box-shadow:none!important}
#view>.d20-entry .trend-capsule-name{font-size:15px!important;line-height:1.2!important;font-weight:600!important;color:#111827!important}
#view>.d20-entry .trend-capsule-values{display:inline-flex!important;align-items:center!important;white-space:nowrap!important}
#view>.d20-entry .trend-capsule-digits{font-size:18px!important;line-height:1!important;font-weight:700!important;font-family:Inter,Roboto,"Segoe UI",sans-serif!important;font-variant-numeric:tabular-nums!important}
#view>.d20-entry .trend-capsule-colon{font-size:15px!important;line-height:1!important;margin:0 8px!important;color:#81909A!important}
#view>.d20-entry .trend-capsule-digits.digits-up{color:#D92D2D!important}#view>.d20-entry .trend-capsule-digits.digits-down{color:#159447!important}
#view>.announcements-entry{margin:0 0 16px!important;border:1px solid #D9DEE3!important;border-radius:0!important;background:#FFF!important;box-shadow:none!important}
#view>.announcements-entry .ann-head{padding:9px 14px!important;background:#F7F8F8!important;border-bottom:1px solid #E5E9EB!important}
#view>.announcements-entry .ann-title{font-size:13px!important;color:#334B58!important}.ann-sub{font-size:10px!important;color:#7A8790!important}.ann-item{padding:7px 14px!important;font-size:11px!important}
#view>.ipo-row{width:100%!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:20px!important;align-items:stretch!important}
#view>.ipo-row>.newstocks-wrap,#view>.ipo-row>.iporeview-wrap{width:auto!important;min-width:0!important;margin:0!important;border:1px solid #D9DEE3!important;border-radius:0!important;background:#FFF!important;box-shadow:none!important}
#view>.ipo-row .newstocks-head,#view>.ipo-row .newstocks-wrap .newstocks-head,#view>.ipo-row .iporeview-wrap .newstocks-head{min-height:52px!important;padding:13px 14px!important;background:#F0F2F3!important;border-top:2px solid var(--editorial-blue)!important;border-bottom:1px solid #D9DEE3!important}
#view>.ipo-row>.iporeview-wrap .newstocks-head{border-top-color:var(--editorial-orange)!important}
#view>.ipo-row .newstocks-title{font-size:13px!important;color:#334B58!important}.newstocks-sub{font-size:10px!important;color:#7A8790!important}.head-action{font-size:11px!important;border-radius:0!important;padding:3px 9px!important;background:#FFF!important;border:1px solid #CCD4DA!important;color:#334B58!important}
#view>.ipo-row .ns-item,#view>.ipo-row .ipo-item{min-height:32px!important;padding:5px 10px!important;border-bottom:1px solid #EEF1F2!important;border-radius:0!important;background:#FFF!important}.ns-item:hover,.ipo-item:hover{background:#FAFBFB!important}
#view>.ipo-row .ns-name,#view>.ipo-row .ipo-name{font-size:12px!important;font-weight:600!important;color:#1F2933!important}.ns-code,.ipo-date{font-size:10px!important;color:#82909A!important}.ns-sector,.ipo-main{font-size:10px!important;border-radius:0!important;background:#F5F6F6!important;border-color:#E2E6E8!important}.ipo-mkt{border-radius:0!important;font-size:10px!important;padding:1px 5px!important}
#view>.market-grid{width:100%!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:18px!important;margin-top:16px!important}
#view>.market-grid .mcard{min-height:74px!important;padding:14px 16px!important;display:flex!important;align-items:center!important;gap:12px!important;border:1px solid #D9DEE3!important;border-top:0!important;border-radius:0!important;background:#FFF!important;box-shadow:none!important;color:#111827!important;transform:none!important}
#view>.market-grid .mcard.a{border-left:1px solid #B65A52!important}#view>.market-grid .mcard.h{border-left:1px solid #668BA4!important}
#view>.market-grid .mcard::before,#view>.market-grid .mcard::after{display:none!important}.mcard-code{width:34px!important;height:34px!important;display:flex!important;align-items:center!important;justify-content:center!important;background:#F1F3F4!important;color:#55707E!important;font-size:10px!important;font-weight:600!important}.mcard-main{min-width:180px!important}.mcard .lbl{font-size:11px!important;margin:0!important;color:#687780!important}.mcard .lbl span{margin-left:4px!important;color:#87929A!important}.mcard .big{font-size:22px!important;line-height:1!important;margin-top:5px!important;color:#111827!important;text-shadow:none!important}.mcard .big small{font-size:11px!important;font-weight:400!important;color:#687780!important;margin-left:3px!important}.mcard .stats{margin:0 0 0 auto!important;display:flex!important}.mcard .stats .it{padding:0 18px!important;margin:0!important;border-left:1px solid #E0E5E9!important;border-right:0!important}.mcard .stats .it b{font-size:14px!important;color:#9A443A!important}.mcard .stats .it span{font-size:10px!important;color:#7A8790!important}.mcard .go{position:static!important;margin-left:8px!important;padding:0!important;background:transparent!important;border:0!important;color:#334B58!important;font-size:16px!important}
#view>.concept-strip{width:100%!important;margin-top:16px!important;padding:12px 14px 14px!important;border:1px solid #D9DEE3!important;border-top:2px solid var(--editorial-red)!important;border-radius:0!important;background:#FFF!important;box-shadow:none!important}
#view>.concept-strip .concept-title{font-size:13px!important;font-weight:600!important;color:#334B58!important}.concept-title svg{color:var(--editorial-orange)!important}
#view>.concept-strip .concept-chips{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;column-gap:28px!important;row-gap:0!important;margin-top:12px!important}
#view>.concept-strip .concept-chip{min-height:30px!important;padding:6px 8px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;background:#F4F5F5!important;border:0!important;border-bottom:1px solid #DCE2E4!important;border-radius:0!important;color:#334B58!important}.concept-chip span:first-child{font-size:11px!important;color:#445761!important}.concept-chip b{font-size:11px!important;font-family:Inter,Roboto,sans-serif!important;font-variant-numeric:tabular-nums!important;color:#9A443A!important;font-weight:500!important}
#view>.ipo-row .ipo-sub{border-left:1px solid var(--editorial-blue)!important;padding-left:8px!important}
#view>.ipo-row .ipo-sub.hk{border-left-color:var(--editorial-orange)!important}
#view>.home-stats{margin-top:14px!important;gap:14px!important}.stat-card{border:1px solid #D9DEE3!important;border-radius:0!important;box-shadow:none!important;background:#FFF!important}.stat-card .num{font-size:24px!important;color:#111827!important}
footer{max-width:1180px!important;padding:18px 0!important;background:var(--editorial-canvas)!important;border-top:1px solid #D9DEE3!important;color:#7A8790!important;box-shadow:none!important}
@media(max-width:940px){.header-inner{padding:0 16px!important}.crumb,main{padding-left:16px!important;padding-right:16px!important}#view>.daily-entry{grid-template-columns:1fr!important;gap:12px!important}.daily-entry .dup-entry-stats{grid-template-columns:repeat(5,minmax(0,1fr))!important}.mcard-main{min-width:0!important}.mcard .stats .it{padding:0 10px!important}}
@media(max-width:760px){#view>.ipo-row{grid-template-columns:1fr!important}.search-wrap{min-width:0!important}.header-status{display:none!important}#view>.d20-entry .d20-entry-stocks{grid-template-columns:repeat(2,minmax(0,1fr))!important}.concept-chips{grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:12px!important}.market-grid{grid-template-columns:1fr!important}}

/* bridgewater-editorial-v1 layout polish: 4/8px rhythm, clear focus,
   balanced intermediate breakpoints, and no mobile horizontal overflow. */
body{line-height:1.5!important;overflow-x:hidden!important}
#view>.daily-entry{margin-bottom:12px!important}
#view>.concept-strip .concept-chips{row-gap:8px!important}
#view>.daily-entry,#view>.d20-entry,#view>.announcements-entry,#view>.ipo-row .head-action,#view>.market-grid .mcard,#view>.concept-strip .concept-chip{touch-action:manipulation}
#view>.daily-entry:focus-visible,#view>.d20-entry:focus-visible,#view>.announcements-entry:focus-within,#view>.market-grid .mcard:focus-visible,#view>.concept-strip .concept-chip:focus-visible{outline:2px solid var(--editorial-blue)!important;outline-offset:3px!important}
#view>.ipo-row .head-action{min-height:30px!important}
@media(max-width:1100px){main,.crumb,.header-inner,footer{max-width:100%!important;padding-left:20px!important;padding-right:20px!important}.search-wrap{max-width:460px!important}.mcard-main{min-width:140px!important}}
@media(max-width:940px){.header-inner{padding-left:16px!important;padding-right:16px!important}.crumb,main{padding-left:16px!important;padding-right:16px!important}#view>.daily-entry{grid-template-columns:1fr!important;gap:12px!important}.daily-entry .dup-entry-stats{grid-template-columns:repeat(5,minmax(0,1fr))!important}.mcard-main{min-width:0!important}.mcard .stats .it{padding:0 10px!important}}
@media(max-width:760px){#view>.ipo-row{grid-template-columns:1fr!important}.search-wrap{min-width:0!important}.header-status{display:none!important}#view>.d20-entry .d20-entry-stocks{grid-template-columns:repeat(2,minmax(0,1fr))!important}.concept-chips{grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:12px!important;row-gap:8px!important}.market-grid{grid-template-columns:1fr!important}.mcard{min-height:78px!important}.mcard .stats .it{padding:0 8px!important}.ann-item{grid-template-columns:72px minmax(0,1fr) 92px!important}}
@media(max-width:520px){#view>.daily-entry{padding:16px!important}.daily-entry .dup-entry-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px 4px!important}.daily-entry .dup-entry-stats .it{border-left:0!important;padding:0 4px!important}.daily-entry .dup-entry-stats .it span{font-size:22px!important}.d20-entry{padding:16px 12px 14px!important}.d20-entry .d20-entry-stocks{gap:8px!important}.d20-entry .d20-entry-stock{min-height:46px!important;padding:9px 10px!important}.d20-entry .trend-capsule-name{font-size:13px!important}.d20-entry .trend-capsule-digits{font-size:15px!important}.d20-entry .trend-capsule-colon{font-size:13px!important;margin:0 5px!important}.concept-strip{padding-left:10px!important;padding-right:10px!important}.concept-strip .concept-chips{column-gap:8px!important}.concept-strip .concept-chip{padding-left:6px!important;padding-right:6px!important}.ann-item{grid-template-columns:64px minmax(0,1fr)!important}.ann-item time,.ann-source{display:none!important}}

/* Small structural rules retained from the maintained IPO/table layout. */
.ns-identity{display:inline-flex;align-items:center;gap:7px;min-width:0;white-space:nowrap}
.ns-biz{display:inline-flex;align-items:center;gap:3px;min-width:0;white-space:nowrap}
.newstocks-wrap .ns-biz{display:inline-flex!important;align-items:center!important;gap:3px!important}
#view .ipo-row .ns-item{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)!important}
td.name{font-weight:700;white-space:nowrap}
.concept-stock-table{table-layout:fixed}
.ipo-date-head{display:flex;align-items:center;gap:8px;color:var(--editorial-muted);font-size:12px;padding:10px 0 6px;border-bottom:1px solid #E5E9EB}

/* -------------------------------------------------------------------------
   Bridgewater editorial palette refinement
   Keep the existing layout and data intact; only harmonise semantic colors.
   ------------------------------------------------------------------------- */
:root{
  --bg:var(--editorial-canvas);
  --card:var(--editorial-surface);
  --text:var(--editorial-ink);
  --sub:var(--editorial-muted);
  --line:var(--editorial-line);
  /* Keep the established finance up/down colors unchanged. */
  --a:#e03131;
  --up:var(--a);
  --down:#0ca678;
  --h:var(--editorial-blue);
  --a-soft:#F7E9E7;
  --h-soft:#EAF2F7;
  --mkt-a:var(--editorial-red);
  --mkt-a-soft:#F7E9E7;
  --mkt-h:var(--editorial-blue);
  --mkt-h-soft:#EAF2F7;
  --brand:var(--editorial-blue);
  --brand-dark:var(--editorial-blue);
  --brand-soft:#EAF2F7;
  --link:var(--editorial-blue);
  --warn:var(--editorial-orange);
  --alarm:#C00000;
  --blk:#3b4a63;
  --gray-1:#333333;
  --gray-2:#666666;
  --gray-3:#666666;
  --gray-4:#777777;
}

/* Shared text, borders and controls use one neutral scale. */
header{border-bottom-color:var(--editorial-line)!important}
.brand-name{color:var(--editorial-ink)!important}
.brand-logo-box,.search-box .kbd{background:#F5F5F5!important}
.search-box,.search-box .kbd,.dup-export,.head-action,.stat-card,.dup-entry,
.newstocks-wrap,.iporeview-wrap,.pdf-actions a,.pdf-actions button,
.day-nav button{border-color:var(--editorial-line)!important}
.search-box input,.dup-export,.head-action,.pdf-actions a,.pdf-actions button,
.day-nav button{color:var(--editorial-text)!important}
.header-status,.header-status b,.header-status time,.page-title .sub,
.newstocks-sub,.ns-code,.ipo-date,.ipo-empty,.ann-sub,.ann-item time,
footer{color:var(--editorial-muted)!important}
.header-status .dot{background:var(--editorial-blue)!important}

/* Headings and accents follow the restrained navy/red/orange hierarchy. */
#view>.daily-entry .dup-entry-title,#view>.d20-entry .dup-entry-title,
#view>.announcements-entry .ann-title,#view>.ipo-row .newstocks-title,
#view>.concept-strip .concept-title{color:var(--editorial-blue)!important}
#view>.daily-entry .dup-entry-title svg,#view>.d20-entry .dup-entry-title svg,
#view>.concept-strip .concept-title svg{color:var(--editorial-orange)!important}
#view>.daily-entry .dup-entry-stats .it b,
#view>.d20-entry .dup-entry-sub,.newstocks-sub,.ann-sub{color:var(--editorial-muted)!important}
#view>.market-grid .mcard .big,
#view>.stat-card .num{color:var(--editorial-ink)!important}
/* Tables and concepts stay paper-white with fine neutral dividers. */
#view>.ipo-row .newstocks-head,
#view>.ipo-row .newstocks-wrap .newstocks-head,
#view>.ipo-row .iporeview-wrap .newstocks-head{background:#F5F5F5!important;border-bottom-color:var(--editorial-line)!important}
#view>.ipo-row .newstocks-head{border-top-color:var(--editorial-blue)!important}
#view>.ipo-row>.iporeview-wrap .newstocks-head{border-top-color:var(--editorial-orange)!important}
#view>.ipo-row .ns-item,#view>.ipo-row .ipo-item{border-bottom-color:var(--editorial-line)!important}
#view>.ipo-row .ns-item:hover,#view>.ipo-row .ipo-item:hover{background:#FAFAFA!important}
#view>.ipo-row .ns-name,#view>.ipo-row .ipo-name{color:var(--editorial-ink)!important}
#view>.ipo-row .ns-sector,#view>.ipo-row .ipo-main{background:#F5F5F5!important;border-color:var(--editorial-line)!important;color:var(--editorial-text)!important}
#view>.concept-strip{border-color:var(--editorial-line)!important;border-top-color:var(--editorial-red)!important}
#view>.concept-strip .concept-chip{background:#FAFAFA!important;border-bottom-color:var(--editorial-line)!important;color:var(--editorial-text)!important}
#view>.concept-strip .concept-chip span:first-child{color:var(--editorial-text)!important}
#view>.concept-strip .concept-chip b{color:var(--editorial-red)!important}

/* Market cards: neutral surface with a single, low-noise identity accent. */
#view>.market-grid .mcard{border-color:var(--editorial-line)!important}
#view>.market-grid .mcard.a{border-left-color:var(--editorial-red)!important}
#view>.market-grid .mcard.h{border-left-color:var(--editorial-blue)!important}
#view>.market-grid .mcard-code{background:#F5F5F5!important;color:var(--editorial-blue)!important}
#view>.market-grid .mcard .lbl,#view>.market-grid .mcard .lbl span,
#view>.market-grid .mcard .stats .it span{color:var(--editorial-muted)!important}
#view>.market-grid .mcard .stats .it{border-left-color:var(--editorial-line)!important}
#view>.market-grid .mcard .stats .it b{color:var(--editorial-red)!important}
#view>.market-grid .mcard .go{color:var(--editorial-ink)!important}

/* Preserve keyboard visibility while using the same navy focus color. */
#view>.daily-entry:focus-visible,#view>.d20-entry:focus-visible,
#view>.market-grid .mcard:focus-visible,#view>.concept-strip .concept-chip:focus-visible{outline-color:var(--editorial-blue)!important}

/* -------------------------------------------------------------------------
   bridgewater-editorial-v1 · layout and rhythm polish
   Structural selectors only; data rendering and navigation remain untouched.
   ------------------------------------------------------------------------- */
:root{
  --editorial-gap:16px;
  --editorial-radius:2px;
}

/* Homepage sections share one vertical rhythm and the existing 1180px grid. */
#view:has(> .daily-entry){display:flex!important;flex-direction:column!important;gap:var(--editorial-gap)!important}
#view:has(> .daily-entry)> .daily-entry,
#view:has(> .daily-entry)> .d20-entry,
#view:has(> .daily-entry)> .announcements-entry,
#view:has(> .daily-entry)> .ipo-row,
#view:has(> .daily-entry)> .market-grid,
#view:has(> .daily-entry)> .concept-strip,
#view:has(> .daily-entry)> .home-stats{margin-top:0!important;margin-bottom:0!important}

/* One compact corner rule for cards and their controls. */
#view>.daily-entry,#view>.d20-entry,#view>.announcements-entry,
#view>.ipo-row>.newstocks-wrap,#view>.ipo-row>.iporeview-wrap,
#view>.market-grid .mcard,#view>.concept-strip,#view>.home-stats,
#view>.home-stats .stat-card,.head-action,.ann-more,.ann-portal,
#view>.d20-entry .d20-entry-stock{border-radius:var(--editorial-radius)!important}
#view>.daily-entry,#view>.d20-entry,#view>.announcements-entry,
#view>.ipo-row>.newstocks-wrap,#view>.ipo-row>.iporeview-wrap,
#view>.market-grid .mcard,#view>.concept-strip,#view>.home-stats,
#view>.home-stats .stat-card{border-color:var(--editorial-line)!important}

/* Titles read as section labels; the data remains the visual priority. */
#view>.page-title{margin:0 0 16px!important;padding-bottom:12px!important;border-bottom:1px solid var(--editorial-line)!important}
#view>.page-title h1{font-size:22px!important;line-height:1.25!important;font-weight:700!important;color:var(--editorial-ink)!important;letter-spacing:0!important}
#view>.page-title .sub{font-size:11px!important;color:var(--editorial-muted)!important}

/* 20-day panel: clearer title-to-grid separation and measured density. */
#view>.d20-entry{padding:18px 20px 20px!important;background:var(--editorial-surface)!important}
#view>.d20-entry .d20-entry-stocks{margin-top:16px!important;gap:10px!important}
#view>.d20-entry .d20-entry-stock{background:#FAFAFA!important;border-color:var(--editorial-line)!important}
#view>.d20-entry .d20-entry-stock:hover{background:#F5F5F5!important;border-color:#C9D5DC!important}

/* Announcement list uses a stable four-column reading line. */
#view>.announcements-entry{border-top:2px solid var(--editorial-blue)!important}
#view>.announcements-entry .ann-head{background:#F5F5F5!important;border-bottom-color:var(--editorial-line)!important;padding:10px 16px!important}
#view>.announcements-entry .ann-item{grid-template-columns:112px minmax(0,1fr) 118px 88px!important;gap:12px!important;padding:9px 16px!important;border-bottom-color:var(--editorial-line)!important;color:var(--editorial-text)!important}
#view>.announcements-entry .ann-item:hover{background:#FAFAFA!important}
#view>.announcements-entry .ann-stock{color:var(--editorial-ink)!important}
#view>.announcements-entry .ann-item-title{color:var(--editorial-text)!important}

/* Date groups become quiet full-width dividers instead of colored tabs. */
#view .ns-date-head,#view .ipo-date-head{display:flex!important;align-items:center!important;gap:9px!important;margin:12px 2px 6px!important;padding:6px 0!important;border:0!important;border-bottom:1px solid var(--editorial-line)!important;background:transparent!important;color:var(--editorial-muted)!important;font-size:11px!important;font-weight:600!important;letter-spacing:.04em!important}
#view .ns-date-head::after,#view .ipo-date-head::after{content:""!important;display:block!important;flex:1!important;height:1px!important;background:var(--editorial-line)!important}
#view .ns-group:first-child .ns-date-head,#view .ipo-group:first-child .ipo-date-head{margin-top:4px!important}

/* Keep the two IPO panes aligned while preserving their existing markup. */
#view>.ipo-row{gap:16px!important}
#view>.ipo-row .ns-item,#view>.ipo-row .ipo-item{min-height:35px!important;padding:6px 10px!important;gap:9px!important;border-bottom-color:var(--editorial-line)!important}
#view>.ipo-row .ns-biz{justify-content:flex-end!important;min-width:0!important}
#view>.ipo-row .newstocks-list .ns-item>.ns-biz{margin-left:auto!important}
#view>.ipo-row .ns-sector,#view>.ipo-row .ipo-main{font-size:10.5px!important;color:var(--editorial-text)!important}
#view>.ipo-row .ns-pct{color:var(--editorial-red)!important;font-variant-numeric:tabular-nums!important}
#view>.ipo-row .ipo-mkt{background:#F5F5F5!important;color:var(--editorial-muted)!important;border:1px solid var(--editorial-line)!important;border-radius:var(--editorial-radius)!important}

/* Market summary cards sit on the same edges as the tables above. */
#view>.market-grid{gap:16px!important;margin-top:0!important}
#view>.market-grid .mcard{padding:15px 18px!important;gap:14px!important;transition:border-color .16s ease,background-color .16s ease,transform .16s ease!important}
#view>.market-grid .mcard:hover{background:#FAFAFA!important;border-color:#C9D5DC!important;transform:translateY(-1px)!important;box-shadow:0 4px 12px rgba(17,17,17,.05)!important}
#view>.market-grid .mcard-code{width:38px!important;height:38px!important;border:1px solid var(--editorial-line)!important;border-radius:var(--editorial-radius)!important;background:#F5F5F5!important}
#view>.market-grid .mcard .stats .it{padding:0 14px!important}
#view>.market-grid .mcard .go{width:30px!important;height:30px!important;border:1px solid var(--editorial-line)!important;border-radius:50%!important;background:#F5F5F5!important}
#view>.market-grid .mcard:hover .go{background:#FFF!important}

/* Concepts and totals use the same paper surface and divider weight. */
#view>.concept-strip{padding:15px 16px 16px!important}
#view>.concept-strip .concept-chips{column-gap:24px!important;row-gap:4px!important;margin-top:10px!important}
#view>.concept-strip .concept-chip{min-height:32px!important;padding:7px 4px!important;background:transparent!important;border-bottom:1px solid var(--editorial-line)!important}
#view>.concept-strip .concept-chip:hover{background:#FAFAFA!important}
#view>.home-stats{gap:16px!important;margin-top:0!important;background:transparent!important;border:0!important;box-shadow:none!important}
#view>.home-stats .stat-card{padding:16px 18px!important;background:var(--editorial-surface)!important}

@media(max-width:760px){
  #view>.announcements-entry .ann-item{grid-template-columns:84px minmax(0,1fr) 92px!important;gap:8px!important;padding:8px 12px!important}
  #view>.announcements-entry .ann-source{display:none!important}
  #view>.d20-entry .d20-entry-stocks{gap:8px!important}
  #view>.market-grid{gap:10px!important}
  #view>.concept-strip .concept-chips{column-gap:12px!important}
  #view>.home-stats{gap:0!important}
}

/* Announcement titles get the reading width; detail rows show up to two lines. */
#view>.announcements-entry .ann-item-title,
#view>.ann-page-card .ann-item-title{white-space:normal!important;overflow:hidden!important;display:-webkit-box!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:2!important;line-height:1.45!important;text-overflow:ellipsis!important}
#view>.announcements-entry .ann-item{min-height:42px!important}
#view>.ann-page-card .ann-item{grid-template-columns:minmax(0,1fr) 128px 92px!important;gap:14px!important;padding:10px 16px!important;align-items:start!important}
#view>.ann-page-card .ann-item time,#view>.ann-page-card .ann-source{padding-top:2px!important}
@media(max-width:760px){
  #view>.ann-page-card .ann-item{grid-template-columns:minmax(0,1fr) 92px!important;gap:8px!important;padding:9px 12px!important}
  #view>.ann-page-card .ann-source{display:none!important}
}

/* Homepage simplification: one neutral surface system, accents only for meaning. */
#view:has(> .daily-entry)> .daily-entry,
#view:has(> .daily-entry)> .d20-entry,
#view:has(> .daily-entry)> .announcements-entry,
#view:has(> .daily-entry)> .ipo-row>.newstocks-wrap,
#view:has(> .daily-entry)> .ipo-row>.iporeview-wrap,
#view:has(> .daily-entry)> .concept-strip,
#view:has(> .daily-entry)> .home-stats .stat-card{box-shadow:none!important;background:var(--editorial-surface)!important;border-color:var(--editorial-line)!important}
#view:has(> .daily-entry)> .announcements-entry{border-top:1px solid var(--editorial-line)!important}
#view:has(> .daily-entry)> .ipo-row .newstocks-head,
#view:has(> .daily-entry)> .ipo-row .newstocks-wrap .newstocks-head,
#view:has(> .daily-entry)> .ipo-row .iporeview-wrap .newstocks-head{border-top:1px solid var(--editorial-line)!important;background:#F5F5F5!important}
#view:has(> .daily-entry)> .concept-strip{border-top:1px solid var(--editorial-line)!important}
#view:has(> .daily-entry)> .daily-entry .dup-entry-title,
#view:has(> .daily-entry)> .d20-entry .dup-entry-title,
#view:has(> .daily-entry)> .announcements-entry .ann-title,
#view:has(> .daily-entry)> .ipo-row .newstocks-title,
#view:has(> .daily-entry)> .concept-strip .concept-title{color:var(--editorial-ink)!important}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock{background:#FFF!important;border-color:var(--editorial-line)!important}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock:hover{background:#FAFAFA!important}

/* Explicit homepage semantic colors: down values remain green. */
#view:has(> .daily-entry) .dup-entry-stats .it span.down,
#view:has(> .daily-entry) .dup-entry-stats .it span.score.down,
#view:has(> .daily-entry) .dup-stats-bar .score-down,
#view:has(> .daily-entry) .trend-capsule-digits.digits-down,
#view:has(> .daily-entry) .trend-capsule-digits.down,
#view:has(> .daily-entry) .d20-entry .trend-capsule-digits.digits-down,
#view:has(> .daily-entry) .d20-entry .trend-capsule-digits.down{color:#159447!important}

/* -------------------------------------------------------------------------
   bridgewater-editorial-v1 · shared card language
   Keep homepage behavior and data intact while making the market surfaces
   read as one system: paper-white surfaces, hairline dividers, quiet type,
   and color reserved for finance meaning.
   ------------------------------------------------------------------------- */
:root{
  --bw-surface:#FFFFFF;
  --bw-surface-soft:#FAFAFA;
  --bw-line:#E6E6E6;
  --bw-line-soft:#F1F3F4;
  --bw-ink:#111111;
  --bw-muted:#666666;
  --bw-blue:#326891;
  --bw-red:#80241E;
  --bw-orange:#B85C1A;
  --bw-radius:2px;
}

/* One physical card rule for the homepage's information groups. */
#view:has(> .daily-entry) > .d20-entry,
#view:has(> .daily-entry) > .ipo-row > .newstocks-wrap,
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap,
#view:has(> .daily-entry) > .market-grid .mcard,
#view:has(> .daily-entry) > .concept-strip,
#view:has(> .daily-entry) > .home-stats{
  background:var(--bw-surface)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  box-shadow:none!important;
}

/* 20-day panel: neutral section header + calm, evenly weighted entries. */
#view:has(> .daily-entry) > .d20-entry{
  padding:0 18px 16px!important;
}
#view:has(> .daily-entry) > .d20-entry > div:first-child{
  padding:15px 0 11px!important;
  border-bottom:1px solid var(--bw-line)!important;
}
#view:has(> .daily-entry) > .d20-entry .dup-entry-title{
  color:var(--bw-ink)!important;
  font-size:16px!important;
  font-weight:650!important;
}
#view:has(> .daily-entry) > .d20-entry .dup-entry-title svg{color:var(--bw-blue)!important}
#view:has(> .daily-entry) > .d20-entry .dup-entry-sub{
  color:var(--bw-muted)!important;
  font-size:11px!important;
}
#view:has(> .daily-entry) > .d20-entry .d20-entry-stocks{
  margin-top:14px!important;
  gap:8px!important;
}
#view:has(> .daily-entry) > .d20-entry .d20-entry-stock{
  min-height:48px!important;
  padding:10px 12px!important;
  background:var(--bw-surface)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  box-shadow:none!important;
}
#view:has(> .daily-entry) > .d20-entry .d20-entry-stock:hover{
  background:var(--bw-surface-soft)!important;
  border-color:#C7D2D8!important;
}
#view:has(> .daily-entry) > .d20-entry .trend-capsule-name{
  color:var(--bw-ink)!important;
  font-size:15px!important;
  font-weight:600!important;
}
#view:has(> .daily-entry) > .d20-entry .trend-capsule-colon{
  color:#94A0A7!important;
  margin:0 7px!important;
}
#view:has(> .daily-entry) > .d20-entry .trend-capsule-digits{
  font-size:18px!important;
  font-weight:700!important;
}
#view:has(> .daily-entry) > .d20-entry .trend-capsule-digits.digits-up{color:var(--editorial-red)!important}
#view:has(> .daily-entry) > .d20-entry .trend-capsule-digits.digits-down{color:#159447!important}

/* Daily new stocks / latest IPO: identical shell and header rhythm. */
#view:has(> .daily-entry) > .ipo-row{gap:16px!important}
#view:has(> .daily-entry) > .ipo-row > .newstocks-wrap,
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap{overflow:hidden!important}
#view:has(> .daily-entry) > .ipo-row .newstocks-head{
  min-height:52px!important;
  padding:13px 14px!important;
  background:var(--bw-surface-soft)!important;
  border-top:0!important;
  border-bottom:1px solid var(--bw-line)!important;
}
#view:has(> .daily-entry) > .ipo-row .iporeview-wrap .newstocks-head{border-top:0!important;background:var(--bw-surface-soft)!important}
#view:has(> .daily-entry) > .ipo-row .newstocks-title{
  color:var(--bw-ink)!important;
  font-size:14px!important;
  font-weight:650!important;
}
#view:has(> .daily-entry) > .ipo-row .newstocks-title svg{color:var(--bw-blue)!important}
#view:has(> .daily-entry) > .ipo-row .iporeview-wrap .newstocks-title svg{color:var(--bw-orange)!important}
#view:has(> .daily-entry) > .ipo-row .newstocks-sub{color:var(--bw-muted)!important}
#view:has(> .daily-entry) > .ipo-row .head-action{
  color:var(--bw-blue)!important;
  background:var(--bw-surface)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
}
#view:has(> .daily-entry) > .ipo-row .head-action:hover{background:#F4F7F8!important;border-color:#B8C9D2!important}
#view:has(> .daily-entry) > .ipo-row .ns-date-head,
#view:has(> .daily-entry) > .ipo-row .ipo-date-head{
  color:var(--bw-muted)!important;
  border-bottom-color:var(--bw-line)!important;
}
#view:has(> .daily-entry) > .ipo-row .ns-item,
#view:has(> .daily-entry) > .ipo-row .ipo-item{
  min-height:35px!important;
  padding:6px 10px!important;
  background:var(--bw-surface)!important;
  border-bottom:1px solid var(--bw-line-soft)!important;
  border-radius:0!important;
}
#view:has(> .daily-entry) > .ipo-row .ns-item:hover,
#view:has(> .daily-entry) > .ipo-row .ipo-item:hover{background:var(--bw-surface-soft)!important}
#view:has(> .daily-entry) > .ipo-row .ns-name,
#view:has(> .daily-entry) > .ipo-row .ipo-name{color:var(--bw-ink)!important}
#view:has(> .daily-entry) > .ipo-row .ns-sector,
#view:has(> .daily-entry) > .ipo-row .ipo-main{
  background:#F7F8F8!important;
  border-color:var(--bw-line)!important;
  color:#4B555B!important;
}
#view:has(> .daily-entry) > .ipo-row .ipo-mkt{
  background:#F5F6F6!important;
  color:#59636A!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
}
#view:has(> .daily-entry) > .ipo-row .ipo-mkt.a{color:var(--bw-red)!important}
#view:has(> .daily-entry) > .ipo-row .ipo-mkt.h{color:var(--bw-blue)!important}

/* A/H market cards: same shell; only the identity mark carries color. */
#view:has(> .daily-entry) > .market-grid{gap:16px!important;margin-top:0!important}
#view:has(> .daily-entry) > .market-grid .mcard{
  min-height:76px!important;
  padding:15px 16px!important;
  color:var(--bw-ink)!important;
  transition:background-color .16s ease,border-color .16s ease!important;
}
#view:has(> .daily-entry) > .market-grid .mcard:hover{background:var(--bw-surface-soft)!important;border-color:#C7D2D8!important;transform:none!important;box-shadow:none!important}
#view:has(> .daily-entry) > .market-grid .mcard-code{
  width:38px!important;height:38px!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  background:#F5F6F6!important;
  color:#59636A!important;
}
#view:has(> .daily-entry) > .market-grid .mcard.a .mcard-code{color:var(--bw-red)!important}
#view:has(> .daily-entry) > .market-grid .mcard.h .mcard-code{color:var(--bw-blue)!important}
#view:has(> .daily-entry) > .market-grid .mcard .lbl{color:var(--bw-ink)!important;font-size:13px!important}
#view:has(> .daily-entry) > .market-grid .mcard .lbl span{color:var(--bw-muted)!important}
#view:has(> .daily-entry) > .market-grid .mcard .big{color:var(--bw-ink)!important;font-size:23px!important}
#view:has(> .daily-entry) > .market-grid .mcard .stats .it{border-left-color:var(--bw-line)!important}
#view:has(> .daily-entry) > .market-grid .mcard .stats .it b{color:var(--bw-ink)!important;font-size:15px!important}
#view:has(> .daily-entry) > .market-grid .mcard .stats .it span{color:var(--bw-muted)!important}
#view:has(> .daily-entry) > .market-grid .mcard .go{
  width:30px!important;height:30px!important;
  border:1px solid var(--bw-line)!important;
  border-radius:50%!important;
  background:var(--bw-surface-soft)!important;
  color:var(--bw-ink)!important;
}
#view:has(> .daily-entry) > .market-grid .mcard:hover .go{background:var(--bw-surface)!important}

/* Full-market statistics: use the same paper/card grammar as the homepage. */
#view > .page-title + .grid,
#view > .page-title + .tag-filter-bar + .table-card,
#view > .page-title + .table-card{
  margin-top:14px!important;
}
#view > .page-title + .grid{
  gap:16px!important;
}
#view > .page-title + .grid .gcard{
  padding:16px 18px!important;
  background:var(--bw-surface)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  box-shadow:none!important;
  transition:background-color .16s ease,border-color .16s ease!important;
}
#view > .page-title + .grid .gcard:hover{
  background:var(--bw-surface-soft)!important;
  border-color:#C7D2D8!important;
  transform:none!important;
  box-shadow:none!important;
}
#view > .page-title + .grid .gcard .name{color:var(--bw-ink)!important;font-size:15px!important;font-weight:650!important}
#view > .page-title + .grid .gcard .name .cnt{
  color:var(--bw-ink)!important;
  background:#F5F6F6!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  padding:1px 8px!important;
}
#view > .page-title + .grid .gcard .name .cnt.a{color:var(--bw-red)!important}
#view > .page-title + .grid .gcard .name .cnt.h{color:var(--bw-blue)!important}
#view > .page-title + .grid .gcard .desc{color:var(--bw-muted)!important;margin-top:7px!important}
#view > .page-title + .grid .gcard .bar{height:3px!important;margin-top:11px!important;background:#EEF1F2!important;border-radius:0!important}
#view > .page-title + .grid .gcard .bar i{border-radius:0!important}
#view > .page-title + .grid .gcard .bar i.a{background:var(--bw-red)!important}
#view > .page-title + .grid .gcard .bar i.h{background:var(--bw-blue)!important}
#view > .page-title + .grid .gcard .chips{gap:5px!important;margin-top:11px!important}
#view > .page-title + .grid .gcard .chip{
  color:#59636A!important;
  background:#F7F8F8!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  padding:2px 8px!important;
}
#view > .page-title + .grid .gcard .chip b{color:var(--bw-ink)!important;font-variant-numeric:tabular-nums!important}

#view > .page-title + .tag-filter-bar + .table-card,
#view > .page-title + .table-card{
  background:var(--bw-surface)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  box-shadow:none!important;
  overflow:hidden!important;
}
#view > .page-title + .tag-filter-bar + .table-card .table-head,
#view > .page-title + .table-card .table-head{
  padding:13px 18px!important;
  background:var(--bw-surface-soft)!important;
  border-bottom:1px solid var(--bw-line)!important;
}
#view > .page-title + .tag-filter-bar + .table-card .table-head .title,
#view > .page-title + .table-card .table-head .title{color:var(--bw-ink)!important;font-size:15px!important;font-weight:650!important}
#view > .page-title + .tag-filter-bar + .table-card .table-head .count,
#view > .page-title + .table-card .table-head .count{color:var(--bw-muted)!important}
#view > .page-title + .tag-filter-bar + .table-card .table-head .filter input,
#view > .page-title + .table-card .table-head .filter input{
  background:var(--bw-surface)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
}
#view > .page-title + .tag-filter-bar + .table-card thead th,
#view > .page-title + .table-card thead th{
  background:var(--bw-surface-soft)!important;
  color:var(--bw-muted)!important;
  border-bottom:1px solid var(--bw-line)!important;
  font-weight:600!important;
}
#view > .page-title + .tag-filter-bar + .table-card tbody td,
#view > .page-title + .table-card tbody td{border-bottom:1px solid var(--bw-line-soft)!important;color:var(--bw-ink)!important}
#view > .page-title + .tag-filter-bar + .table-card tbody tr:hover,
#view > .page-title + .table-card tbody tr:hover{background:var(--bw-surface-soft)!important}
#view > .page-title + .tag-filter-bar + .table-card td.code,
#view > .page-title + .table-card td.code{color:var(--bw-muted)!important}
#view > .page-title + .tag-filter-bar + .table-card td.name,
#view > .page-title + .table-card td.name{color:var(--bw-ink)!important;font-weight:650!important}
#view > .page-title + .tag-filter-bar + .table-card .src-chip,
#view > .page-title + .table-card .src-chip,
#view > .page-title + .tag-filter-bar + .table-card .tag-chip,
#view > .page-title + .table-card .tag-chip{
  background:#F7F8F8!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  color:#59636A!important;
}
#view > .page-title + .tag-filter-bar + .table-card .src-chip .pct,
#view > .page-title + .table-card .src-chip .pct{color:var(--bw-red)!important}
#view > .page-title .tag-market{
  background:#F5F6F6!important;
  color:var(--bw-muted)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
}
#view > .page-title .tag-market.a{color:var(--bw-red)!important}
#view > .page-title .tag-market.h{color:var(--bw-blue)!important}

@media(max-width:760px){
  #view:has(> .daily-entry) > .d20-entry{padding:0 12px 12px!important}
  #view:has(> .daily-entry) > .d20-entry .d20-entry-stocks{gap:7px!important}
  #view:has(> .daily-entry) > .market-grid{gap:10px!important}
  #view > .page-title + .grid{gap:10px!important}
}

/* Latest IPO follows the daily-new-stock reading line: date is carried by
   the group divider only, while market/name stay on the left and business /
   prospectus controls stay on the right.  Market labels reuse the exact
   daily-new-stock semantic palette (A-share red, HK blue). */
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap .ipo-date{
  display:none!important;
}
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap .ipo-item{
  display:flex!important;
  align-items:center!important;
  gap:9px!important;
}
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap .ipo-name{
  flex:1 1 auto!important;
  min-width:0!important;
}
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap .ipo-main{
  margin-left:auto!important;
}
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap .ipo-mkt{
  border:0!important;
  border-radius:20px!important;
  padding:1px 8px!important;
  font-size:10.5px!important;
  font-weight:700!important;
}
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap .ipo-mkt.a{
  background:#F7E9E7!important;
  color:var(--bw-red)!important;
}
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap .ipo-mkt.h{
  background:#EAF2F7!important;
  color:var(--bw-blue)!important;
}

/* The archived IPO view uses the same market-tag component. */
#view.year-view .ipo-mkt{
  border:0!important;
  border-radius:20px!important;
  padding:1px 8px!important;
  font-size:10.5px!important;
  font-weight:700!important;
}
#view.year-view .ipo-mkt.a{background:#F7E9E7!important;color:var(--bw-red)!important}
#view.year-view .ipo-mkt.h{background:#EAF2F7!important;color:var(--bw-blue)!important}

/* 20-day change values: standard market red/green with a restrained,
   measurement-oriented typeface (no rounded/cartoon weight). */
#view:has(> .daily-entry) > .d20-entry .trend-capsule-name{
  font-family:"Helvetica Neue",Arial,"PingFang SC","Microsoft YaHei",sans-serif!important;
  font-weight:600!important;
}
#view:has(> .daily-entry) > .d20-entry .trend-capsule-digits{
  font-family:"Roboto Mono","SFMono-Regular","Cascadia Mono","Segoe UI Mono",monospace!important;
  font-size:18px!important;
  font-weight:600!important;
  font-variant-numeric:tabular-nums!important;
  letter-spacing:-.015em!important;
}
#view:has(> .daily-entry) > .d20-entry .d20-entry-stock b.trend-capsule-digits,
#view:has(> .daily-entry) > .d20-entry .d20-entry-stock b.up.trend-capsule-digits,
#view:has(> .daily-entry) > .d20-entry .d20-entry-stock b.down.trend-capsule-digits{font-weight:600!important}
#view:has(> .daily-entry) > .d20-entry .trend-capsule-digits.digits-up,
#view:has(> .daily-entry) > .d20-entry .trend-capsule-digits.up{color:#D92D2D!important}
#view:has(> .daily-entry) > .d20-entry .trend-capsule-digits.digits-down,
#view:has(> .daily-entry) > .d20-entry .trend-capsule-digits.down{color:#159447!important}

/* ========================================================================
   bridgewater-editorial-v1 · all clickable surfaces
   The homepage and every detail route share one quiet editorial grammar:
   white paper, hairline rules, 2px corners, restrained type, and semantic
   red/green only where the data requires it.  This layer is intentionally
   last so legacy route-specific rules cannot reintroduce the old card world.
   ======================================================================== */

/* Shared detail shell and section heading rhythm. */
#view > .dup-layout,
#view > .d20-score-grid,
#view > .ann-page-card,
#view > .table-card,
#view > .tag-filter-bar + .table-card {
  width:100%!important;
  box-sizing:border-box!important;
}

/* Daily up/down detail: sidebar and table are two calm columns on wide
   screens, then collapse naturally without horizontal overflow. */
#view > .dup-layout{
  display:grid!important;
  grid-template-columns:minmax(220px,280px) minmax(0,1fr)!important;
  gap:16px!important;
  align-items:start!important;
  margin-top:0!important;
}
#view > .dup-layout .dup-side{
  position:static!important;
  width:100%!important;
  min-width:1px!important;
  max-width:none!important;
  max-height:none!important;
  overflow:visible!important;
  margin:0!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
#view > .dup-layout .dup-stats-bar,
#view > .dup-layout .wk-grid-wrap,
#view > .dup-layout .dup-main .table-card{
  margin:0!important;
  background:var(--bw-surface)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  box-shadow:none!important;
}
#view > .dup-layout .dup-stats-bar{
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  gap:7px!important;
  padding:14px 16px!important;
  color:var(--bw-muted)!important;
  font-size:12px!important;
  line-height:1.35!important;
}
#view > .dup-layout .dup-stats-bar b{color:var(--bw-ink)!important;font-size:14px!important}
#view > .dup-layout .dup-stats-bar .score-up{color:var(--bw-red)!important}
#view > .dup-layout .dup-stats-bar .score-down{color:#159447!important}
#view > .dup-layout .wk-grid-wrap{margin-top:10px!important;padding:14px 16px!important}
#view > .dup-layout .wk-grid-head{font-size:13px!important;color:var(--bw-ink)!important;font-weight:650!important}
#view > .dup-layout .wk-grid{gap:5px!important;margin-top:10px!important}
#view > .dup-layout .wk-cell{border-radius:2px!important;min-height:28px!important;font-size:11px!important}
#view > .dup-layout .wk-grid-note,
#view > .dup-layout .wk-grid-stats .ws-item{color:var(--bw-muted)!important}
#view > .dup-layout .dup-main .table-card{overflow:hidden!important}
#view > .dup-layout .dup-main{min-width:0!important;width:100%!important;overflow:hidden!important}
#view > .dup-layout .dup-side > .dup-stats-bar,
#view > .dup-layout .dup-side > .wk-grid-wrap{min-width:0!important}
#view > .dup-layout .table-head{
  padding:12px 16px!important;
  background:var(--bw-surface-soft)!important;
  border-bottom:1px solid var(--bw-line)!important;
}
#view > .dup-layout .table-head .title{color:var(--bw-ink)!important;font-weight:650!important;font-size:14px!important}
#view > .dup-layout .table-head .count{color:var(--bw-muted)!important;font-size:11px!important}
#view > .dup-layout .table-head input{border-radius:var(--bw-radius)!important;border-color:var(--bw-line)!important;background:#FFF!important}
#view > .dup-layout .dup-table{background:#FFF!important}
#view > .dup-layout .dup-table thead th{background:var(--bw-surface-soft)!important;color:var(--bw-muted)!important;border-bottom:1px solid var(--bw-line)!important}
#view > .dup-layout .dup-table tbody td{background:#FFF!important;border-bottom:1px solid var(--bw-line-soft)!important;color:var(--bw-ink)!important}
#view > .dup-layout .dup-table tbody tr:hover td{background:var(--bw-surface-soft)!important}
#view > .dup-layout .dup-table td.num.up,
#view > .dup-layout .dup-table .wk-score.up{color:var(--bw-red)!important}
#view > .dup-layout .dup-table td.num.down,
#view > .dup-layout .dup-table .wk-score.down{color:#159447!important}
#view > .dup-layout .dup-more{padding:12px 0!important}
#view > .dup-layout .dup-more button{
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  box-shadow:none!important;
  color:var(--bw-ink)!important;
  background:#FFF!important;
}
#view > .dup-layout .dup-more button:hover{background:var(--bw-surface-soft)!important;border-color:#C7D2D8!important}

/* 20-day detail cards use the exact same shell as homepage trend cells. */
#view > .d20-score-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:16px!important;margin-top:0!important}
#view > .d20-score-grid .d20-score{
  min-width:0!important;
  padding:16px 18px!important;
  background:var(--bw-surface)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  box-shadow:none!important;
  transition:background-color .16s ease,border-color .16s ease!important;
}
#view > .d20-score-grid .d20-score:hover{transform:none!important;background:var(--bw-surface-soft)!important;border-color:#C7D2D8!important;box-shadow:none!important}
#view > .d20-score-grid .d20-sname{font-size:15px!important;font-weight:600!important;color:var(--bw-ink)!important}
#view > .d20-score-grid .d20-sratio{gap:7px!important;font-family:"Roboto Mono","SFMono-Regular","Cascadia Mono",monospace!important;font-variant-numeric:tabular-nums!important}
#view > .d20-score-grid .d20-sratio .up{font-size:22px!important;color:var(--bw-red)!important;font-weight:650!important}
#view > .d20-score-grid .d20-sratio .down{font-size:22px!important;color:#159447!important;font-weight:650!important}
#view > .d20-score-grid .d20-sratio .colon{font-size:16px!important;color:#94A0A7!important}
#view > .d20-score-grid .d20-detail{margin-top:12px!important;padding-top:10px!important;border-top:1px solid var(--bw-line)!important}
#view > .d20-score-grid .d20-detail-title{color:var(--bw-muted)!important;font-size:11px!important;font-weight:500!important}
#view > .d20-score-grid .d20-days{gap:3px!important}
#view > .d20-score-grid .d20-dcell{border-radius:2px!important;font-size:10px!important}
#view > .d20-score-grid .d20-dcell.up{background:var(--bw-red)!important}
#view > .d20-score-grid .d20-dcell.down{background:#159447!important}
#view > .d20-score-grid .d20-dcell.flat{background:#F5F5F5!important;color:var(--bw-muted)!important;border:1px solid var(--bw-line)!important}
#view > .d20-score-grid .d20-dcell.null{background:#FAFAFA!important;color:#B5BDC2!important;border:1px dashed var(--bw-line)!important}

/* Full announcement page: the same reading line as IPO tables. */
#view > .ann-page-card{
  background:var(--bw-surface)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  box-shadow:none!important;
  overflow:hidden!important;
}
#view > .ann-page-card .ann-page-note{padding:11px 16px!important;background:var(--bw-surface-soft)!important;border-bottom:1px solid var(--bw-line)!important;color:var(--bw-muted)!important;font-size:11px!important}
#view > .ann-page-card .ann-stock-group{border-bottom:1px solid var(--bw-line)!important}
#view > .ann-page-card .ann-stock-group > header{padding:11px 16px!important;background:#FFF!important;border-bottom:1px solid var(--bw-line-soft)!important}
#view > .ann-page-card .ann-stock-group strong{font-size:14px!important;color:var(--bw-ink)!important;font-weight:650!important}
#view > .ann-page-card .ann-code{color:var(--bw-muted)!important}
#view > .ann-page-card .ann-portal{border:1px solid var(--bw-line)!important;border-radius:var(--bw-radius)!important;color:var(--bw-blue)!important;background:#FFF!important;box-shadow:none!important}
#view > .ann-page-card .ann-portal:hover{background:var(--bw-surface-soft)!important;border-color:#C7D2D8!important}
#view > .ann-page-card .ann-item{grid-template-columns:minmax(0,1fr) 128px 92px!important;gap:14px!important;padding:10px 16px!important;background:#FFF!important;border-bottom:1px solid var(--bw-line-soft)!important;color:var(--bw-text)!important}
#view > .ann-page-card .ann-item:hover{background:var(--bw-surface-soft)!important}
#view > .ann-page-card .ann-item-title{color:var(--bw-text)!important;font-size:12px!important}
#view > .ann-page-card .ann-item time{color:var(--bw-muted)!important;font-size:10.5px!important}
#view > .ann-page-card .ann-source{color:var(--bw-blue)!important;font-size:10.5px!important}

/* Concept and market stock lists: table grammar and market chips are shared. */
#view > .table-card,
#view > .tag-filter-bar + .table-card{
  margin-top:0!important;
  background:var(--bw-surface)!important;
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  box-shadow:none!important;
  overflow:hidden!important;
}
#view > .table-card .table-head,
#view > .tag-filter-bar + .table-card .table-head{padding:12px 16px!important;background:var(--bw-surface-soft)!important;border-bottom:1px solid var(--bw-line)!important}
#view > .table-card .table-head .title,
#view > .tag-filter-bar + .table-card .table-head .title{font-size:14px!important;font-weight:650!important;color:var(--bw-ink)!important}
#view > .table-card .table-head .count,
#view > .tag-filter-bar + .table-card .table-head .count{font-size:11px!important;color:var(--bw-muted)!important}
#view > .table-card .table-head input,
#view > .tag-filter-bar + .table-card .table-head input{border:1px solid var(--bw-line)!important;border-radius:var(--bw-radius)!important;background:#FFF!important;color:var(--bw-ink)!important}
#view > .table-card thead th,
#view > .tag-filter-bar + .table-card thead th{background:var(--bw-surface-soft)!important;color:var(--bw-muted)!important;border-bottom:1px solid var(--bw-line)!important;font-size:11px!important;font-weight:600!important}
#view > .table-card tbody td,
#view > .tag-filter-bar + .table-card tbody td{background:#FFF!important;color:var(--bw-ink)!important;border-bottom:1px solid var(--bw-line-soft)!important}
#view > .table-card tbody tr:hover td,
#view > .tag-filter-bar + .table-card tbody tr:hover td{background:var(--bw-surface-soft)!important}
#view > .table-card td.code,
#view > .tag-filter-bar + .table-card td.code{color:var(--bw-muted)!important}
#view > .table-card td.name,
#view > .tag-filter-bar + .table-card td.name{color:var(--bw-ink)!important;font-weight:650!important}
#view > .table-card .src-chip,
#view > .table-card .tag-chip,
#view > .tag-filter-bar + .table-card .src-chip,
#view > .tag-filter-bar + .table-card .tag-chip{
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  background:#F7F8F8!important;
  color:var(--bw-muted)!important;
}
#view > .table-card .tag-chip.a,
#view > .tag-filter-bar + .table-card .tag-chip.a{color:var(--bw-red)!important}
#view > .table-card .tag-chip.h,
#view > .tag-filter-bar + .table-card .tag-chip.h{color:var(--bw-blue)!important}
#view > .table-card .tag-chip:hover,
#view > .tag-filter-bar + .table-card .tag-chip:hover{background:var(--bw-surface-soft)!important;border-color:#C7D2D8!important}
#view > .tag-filter-bar{
  display:flex!important;align-items:center!important;gap:8px!important;
  margin:0 0 10px!important;padding:8px 12px!important;
  background:var(--bw-surface-soft)!important;border:1px solid var(--bw-line)!important;border-radius:var(--bw-radius)!important;
  color:var(--bw-muted)!important;font-size:11px!important;
}
#view > .tag-filter-bar .tag-chip{background:#FFF!important;border:1px solid var(--bw-line)!important;color:var(--bw-blue)!important;border-radius:var(--bw-radius)!important}
#view > .tag-filter-bar .tf-clear{margin-left:auto;border:1px solid var(--bw-line)!important;border-radius:var(--bw-radius)!important;background:#FFF!important;color:var(--bw-muted)!important}

/* Date and PDF dialogs are part of the same interaction surface. */
.pdf-box,.day-box{
  border:1px solid var(--bw-line)!important;
  border-radius:var(--bw-radius)!important;
  box-shadow:0 18px 44px rgba(17,17,17,.16)!important;
}
.pdf-head,.day-head{background:var(--bw-surface-soft)!important;border-bottom:1px solid var(--bw-line)!important;padding:11px 16px!important}
.pdf-title,.day-title{color:var(--bw-ink)!important;font-size:14px!important;font-weight:650!important}
.pdf-actions a,.pdf-actions button,.day-nav button{border:1px solid var(--bw-line)!important;border-radius:var(--bw-radius)!important;background:#FFF!important;color:var(--bw-ink)!important;box-shadow:none!important}
.pdf-actions a:hover,.pdf-actions button:hover,.day-nav button:hover{background:var(--bw-surface-soft)!important;border-color:#C7D2D8!important}
.pdf-body{background:#F5F5F5!important}
.day-body{padding:14px 16px 16px!important;background:#FFF!important}
.day-grid{gap:8px!important}
.day-item{background:#FFF!important;border:1px solid var(--bw-line)!important;border-radius:var(--bw-radius)!important;padding:10px 12px!important}
.day-item b{color:var(--bw-muted)!important;font-weight:500!important}
.day-item span.up{color:var(--bw-red)!important}.day-item span.down{color:#159447!important}

@media(max-width:940px){
  #view > .dup-layout{grid-template-columns:1fr!important}
  #view > .dup-layout .dup-side{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important;min-width:0!important}
  #view > .dup-layout .dup-side > *{min-width:0!important;width:100%!important}
  #view > .dup-layout .wk-grid-wrap{margin-top:0!important;overflow:hidden!important}
  #view > .dup-layout .wk-grid{width:100%!important;min-width:0!important}
}
@media(max-width:760px){
  #view > .dup-layout .dup-side{grid-template-columns:1fr!important}
  #view > .d20-score-grid{grid-template-columns:1fr 1fr!important;gap:10px!important}
  #view > .ann-page-card .ann-item{grid-template-columns:minmax(0,1fr) 92px!important;gap:8px!important;padding:9px 12px!important}
  #view > .ann-page-card .ann-source{display:none!important}
  #view > .ann-page-card .ann-stock-group > header{padding:10px 12px!important}
}
@media(max-width:520px){
  #view > .d20-score-grid{grid-template-columns:1fr!important}
  #view > .table-card .table-head,#view > .tag-filter-bar + .table-card .table-head{padding:11px 12px!important}
  #view > .ann-page-card .ann-item time{font-size:10px!important}
}

/* Daily detail summary is a non-blocking companion, never a table column.
   On wide canvases it floats just outside the reading column; on compact
   screens the data table stays first and full-width instead of being pushed
   below a large weekly panel. */
#view > .dup-layout{
  display:block!important;
  position:relative!important;
}
#view > .dup-layout .dup-main{width:100%!important;min-width:0!important}
#view > .dup-layout .dup-side{
  display:none!important;
}
@media(min-width:1500px){
  #view > .dup-layout .dup-side{
    display:block!important;
    position:absolute!important;
    left:calc(100% + 16px)!important;
    top:0!important;
    width:280px!important;
    max-height:calc(100vh - 180px)!important;
    overflow:auto!important;
    margin:0!important;
    padding:0!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
  }
}

/* Final placement: keep the companion summary on the left, preserving the
   original compact 4-column weekly grid while the table remains its own
   independent surface. */
#view > .dup-layout{
  display:grid!important;
  grid-template-columns:280px minmax(0,1fr)!important;
  gap:16px!important;
  align-items:start!important;
}
#view > .dup-layout .dup-side{
  display:block!important;
  position:static!important;
  width:280px!important;
  min-width:0!important;
  max-width:none!important;
  max-height:none!important;
  overflow:visible!important;
  margin:0!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
#view > .dup-layout .dup-side .wk-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
#view > .dup-layout .dup-side .wk-grid-wrap{width:100%!important;min-width:0!important}
@media(max-width:940px){
  #view > .dup-layout{grid-template-columns:1fr!important}
  #view > .dup-layout .dup-side{width:100%!important}
  #view > .dup-layout .dup-side .wk-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
}

/* Weekly summary is a companion panel, never a column in the data table. */
#view > .dup-layout{
  display:block!important;
  position:relative!important;
  grid-template-columns:none!important;
}
#view > .dup-layout .dup-main{width:100%!important;min-width:0!important}
#view > .dup-layout .dup-side{
  display:block!important;
  position:static!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  max-height:none!important;
  overflow:visible!important;
  margin:0 0 16px!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
@media(min-width:1500px){
  #view > .dup-layout .dup-side{
    position:fixed!important;
    width:290px!important;
    margin:0!important;
    z-index:20!important;
  }
}

/* Standard market colors for the涨跌明细 table. Keep these values scoped to
   the table so the editorial palette of the remaining surfaces is unchanged. */
#view > .dup-layout .dup-table td.num.up,
#view > .dup-layout .dup-table .wk-score.up{color:#DC2626!important}
#view > .dup-layout .dup-table td.num.down,
#view > .dup-layout .dup-table .wk-score.down{color:#16A34A!important}

/* 涨跌明细：提高字号与字形清晰度，同时保持紧凑的表格密度。 */
#view > .dup-layout .dup-table{
  font-family:Inter,Roboto,"PingFang SC","Microsoft YaHei",sans-serif!important;
}
#view > .dup-layout .dup-table thead th{
  font-size:11.5px!important;
  font-weight:600!important;
  line-height:1.35!important;
}
#view > .dup-layout .dup-table tbody td{
  font-size:12px!important;
  line-height:1.45!important;
}
#view > .dup-layout .dup-table tbody td.code{
  font-size:12px!important;
  font-variant-numeric:tabular-nums!important;
}
#view > .dup-layout .dup-table tbody td.week{
  font-size:11px!important;
}
#view > .dup-layout .dup-table tbody td.num{
  font-family:Inter,Roboto,"Segoe UI",sans-serif!important;
  font-variant-numeric:tabular-nums!important;
}

/* 午环比 / 日环比：绝对值超过 10% 时使用醒目的深红预警色。 */
#view > .dup-layout .dup-table tbody td.alarm{
  color:var(--editorial-red)!important;
  font-weight:600!important;
}

/* 20日涨跌模块统一使用标准金融红绿（首页摘要 + 详情卡片）。 */
#view > .d20-entry .trend-capsule-digits.digits-up,
#view > .d20-entry .trend-capsule-digits.up,
#view > .d20-score-grid .d20-sratio .up{
  color:#DC2626!important;
}
#view > .d20-score-grid .d20-dcell.up{
  color:#FFF!important;
  background:#DC2626!important;
}
#view > .d20-entry .trend-capsule-digits.digits-down,
#view > .d20-entry .trend-capsule-digits.down,
#view > .d20-score-grid .d20-sratio .down{
  color:#16A34A!important;
}
#view > .d20-score-grid .d20-dcell.down{
  color:#FFF!important;
  background:#16A34A!important;
}

/* -------------------------------------------------------------------------
   bridgewater-editorial-v1 · restrained visual polish
   Visual-only refinement: a quieter paper canvas, a slightly clearer type
   scale, and one shared interaction language across every existing surface.
   No DOM, data, route, or interaction behavior is changed here.
   ------------------------------------------------------------------------- */
:root{
  --editorial-canvas:#F7F8F8;
  --editorial-surface:#FFFFFF;
  --editorial-surface-soft:#F8FAFA;
  --editorial-line:#DCE3E5;
  --editorial-line-soft:#EEF2F2;
  --editorial-ink:#1F2933;
  --editorial-text:#36434D;
  --editorial-muted:#68757D;
  --editorial-blue:#2F627B;
  --editorial-orange:#A96832;
}

html,body,main{
  background:var(--editorial-canvas)!important;
  color:var(--editorial-ink)!important;
}
body{
  font-family:"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif!important;
  font-size:14px!important;
  line-height:1.5!important;
  letter-spacing:0!important;
  -webkit-font-smoothing:antialiased!important;
  -moz-osx-font-smoothing:grayscale!important;
}

/* Shared reading line: headings and metadata now use the same vertical
   cadence on the homepage and all detail routes. */
#view:has(> .daily-entry){gap:18px!important}
#view>.page-title{
  margin-bottom:18px!important;
  padding-bottom:13px!important;
  border-bottom-color:var(--editorial-line)!important;
}
#view>.page-title h1{color:var(--editorial-ink)!important;font-weight:700!important}
#view>.page-title .sub{color:var(--editorial-muted)!important}

/* Keep surfaces paper-flat, but give rules enough contrast to preserve
   alignment without bringing back heavy grey blocks. */
#view:has(> .daily-entry)> .daily-entry,
#view:has(> .daily-entry)> .d20-entry,
#view:has(> .daily-entry)> .announcements-entry,
#view:has(> .daily-entry)> .ipo-row>.newstocks-wrap,
#view:has(> .daily-entry)> .ipo-row>.iporeview-wrap,
#view:has(> .daily-entry)> .market-grid .mcard,
#view:has(> .daily-entry)> .concept-strip,
#view:has(> .daily-entry)> .home-stats .stat-card,
#view>.table-card,
#view>.tag-filter-bar + .table-card,
#view>.ann-page-card{
  background:var(--editorial-surface)!important;
  border-color:var(--editorial-line)!important;
  box-shadow:none!important;
}

/* Section headers share one calm tint and one hairline divider. */
#view>.announcements-entry .ann-head,
#view>.ipo-row .newstocks-head,
#view>.table-card .table-head,
#view>.tag-filter-bar + .table-card .table-head,
#view>.ann-page-card .ann-page-note{
  background:var(--editorial-surface-soft)!important;
  border-bottom-color:var(--editorial-line)!important;
}
#view>.announcements-entry .ann-title,
#view>.ipo-row .newstocks-title,
#view>.table-card .table-head .title,
#view>.tag-filter-bar + .table-card .table-head .title,
#view>.ann-page-card .ann-stock-group strong{color:var(--editorial-ink)!important}

/* Metadata stays quiet; values remain semantic red/green and retain their
   existing sizes. */
#view>.announcements-entry .ann-sub,
#view>.announcements-entry .ann-item time,
#view>.ipo-row .newstocks-sub,
#view>.ipo-row .ns-code,
#view>.ipo-row .ipo-date,
#view>.table-card .table-head .count,
#view>.tag-filter-bar + .table-card .table-head .count,
footer{color:var(--editorial-muted)!important}

/* Neutral controls with a single, keyboard-visible focus treatment. */
:where(button,a,input,select,textarea):focus-visible{
  outline:2px solid #6A8795!important;
  outline-offset:2px!important;
}
.search-box:focus-within{border-color:#A9BBC3!important;box-shadow:0 0 0 3px rgba(47,98,123,.10)!important}
.head-action,.dup-export,.ann-more,.ann-portal,.pdf-actions a,.pdf-actions button,.day-nav button{
  border-color:var(--editorial-line)!important;
  background:#FFF!important;
  color:var(--editorial-text)!important;
}
.head-action:hover,.dup-export:hover,.ann-more:hover,.ann-portal:hover,
.pdf-actions a:hover,.pdf-actions button:hover,.day-nav button:hover{
  background:var(--editorial-surface-soft)!important;
  border-color:#BACAD0!important;
}

/* Tables and announcement rows use the same low-contrast rhythm. */
#view>.announcements-entry .ann-item,
#view>.ann-page-card .ann-item,
#view>.table-card tbody td,
#view>.tag-filter-bar + .table-card tbody td,
#view>.ipo-row .ns-item,
#view>.ipo-row .ipo-item{border-bottom-color:var(--editorial-line-soft)!important}
#view>.announcements-entry .ann-item:hover,
#view>.ann-page-card .ann-item:hover,
#view>.table-card tbody tr:hover td,
#view>.tag-filter-bar + .table-card tbody tr:hover td,
#view>.ipo-row .ns-item:hover,
#view>.ipo-row .ipo-item:hover{background:#FBFCFC!important}

/* Reduce only decorative roundness; content density and responsive breakpoints
   remain unchanged. */
#view>.market-grid .mcard-code,
#view>.market-grid .mcard .go,
#view>.ipo-row .ipo-mkt,
#view>.table-card .tag-chip,
#view>.table-card .src-chip,
#view>.tag-filter-bar .tag-chip{border-radius:3px!important}

/* Date/market subheads are already separated by a full-width rule; remove
   the legacy colored side tab so no section relies on a second accent cue. */
#view>.ipo-row .ipo-sub{border-left:0!important;padding-left:0!important}

@media(max-width:760px){
  #view:has(> .daily-entry){gap:14px!important}
  #view>.page-title{margin-bottom:14px!important;padding-bottom:10px!important}
}

/* Homepage focus pass: make the two market-change summaries easier to scan
   at a glance.  The existing grid and click targets stay exactly the same;
   only the visual scale and breathing room of their values increase. */
#view:has(> .daily-entry)> .daily-entry .dup-entry-title{
  font-size:18px!important;
}
#view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it span{
  font-size:28px!important;
  line-height:1.08!important;
  margin-top:8px!important;
}
#view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it b{
  font-size:11.5px!important;
}
#view:has(> .daily-entry)> .d20-entry .dup-entry-title{
  font-size:18px!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock{
  min-height:52px!important;
  padding-top:11px!important;
  padding-bottom:11px!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-name{
  font-size:16px!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{
  font-size:20px!important;
  line-height:1.05!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{
  font-size:16px!important;
}

@media(max-width:760px){
  #view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it span{font-size:26px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{min-height:50px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:15px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:18px!important}
}
@media(max-width:520px){
  #view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it span{font-size:24px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{min-height:48px!important;padding:10px 10px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:14px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:16px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{font-size:14px!important;margin:0 7px!important}
}

/* The market card itself remains the click target; the decorative arrow is
   removed so the two cards read as clean, balanced information blocks. */
#view:has(> .daily-entry)> .market-grid .mcard .go{
  display:none!important;
}
#view:has(> .daily-entry)> .market-grid .mcard{
  padding-right:20px!important;
}
#view:has(> .daily-entry)> .market-grid .mcard .stats{
  margin-left:auto!important;
}
@media(max-width:760px){
  #view:has(> .daily-entry)> .market-grid .mcard{padding-right:16px!important}
}

/* Scale the two homepage summaries as complete surfaces, not just as larger
   type: a little more canvas and breathing room makes the hierarchy visible
   while preserving the existing full-width composition. */
#view:has(> .daily-entry)> .daily-entry{
  min-height:132px!important;
  padding:24px 28px!important;
  gap:26px!important;
}
#view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it{
  padding-top:4px!important;
  padding-bottom:4px!important;
}
#view:has(> .daily-entry)> .d20-entry{
  min-height:228px!important;
  padding:22px 24px 24px!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stocks{
  margin-top:20px!important;
  gap:14px!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock{
  min-height:58px!important;
  padding:14px 16px!important;
}

@media(max-width:940px){
  #view:has(> .daily-entry)> .daily-entry{min-height:132px!important}
}
@media(max-width:760px){
  #view:has(> .daily-entry)> .daily-entry{min-height:0!important;padding:20px 18px!important;gap:18px!important}
  #view:has(> .daily-entry)> .d20-entry{min-height:0!important;padding:20px 18px 22px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stocks{margin-top:18px!important;gap:10px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{min-height:54px!important;padding:12px 14px!important}
}
@media(max-width:520px){
  #view:has(> .daily-entry)> .daily-entry{padding:18px 14px!important}
  #view:has(> .daily-entry)> .d20-entry{padding:18px 14px 20px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stocks{margin-top:16px!important;gap:8px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{min-height:50px!important;padding:11px 12px!important}
}

/* Final type scale for the 20-day rows: the labels and paired values in the
   screenshot become the primary scan target, without changing their grid. */
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock{
  min-height:62px!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-name{
  font-size:18px!important;
  line-height:1.2!important;
  font-weight:600!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{
  font-size:23px!important;
  line-height:1.05!important;
  font-weight:700!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{
  font-size:18px!important;
  margin-left:9px!important;
  margin-right:9px!important;
}
@media(max-width:760px){
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{min-height:56px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:16px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:20px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{font-size:16px!important;margin:0 8px!important}
}
@media(max-width:520px){
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{min-height:52px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:15px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:18px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{font-size:15px!important;margin:0 6px!important}
}

/* Extra emphasis pass for the 20-day panel.  This is intentionally a small
   step beyond the previous scale so the component stays legible at common
   desktop widths while remaining compact on phones. */
#view:has(> .daily-entry)> .d20-entry{
  min-height:246px!important;
  padding:26px 28px 28px!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stocks{
  margin-top:22px!important;
  gap:16px!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock{
  min-height:70px!important;
  padding:16px 18px!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:20px!important}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:26px!important}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{font-size:20px!important;margin:0 10px!important}
@media(max-width:760px){
  #view:has(> .daily-entry)> .d20-entry{min-height:0!important;padding:22px 18px 24px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stocks{margin-top:20px!important;gap:12px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{min-height:60px!important;padding:13px 14px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:17px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:21px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{font-size:17px!important;margin:0 8px!important}
}
@media(max-width:520px){
  #view:has(> .daily-entry)> .d20-entry{padding:20px 14px 22px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stocks{margin-top:18px!important;gap:9px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{min-height:54px!important;padding:12px 12px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:16px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:19px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{font-size:16px!important;margin:0 7px!important}
}

/* Match the daily-change panel to the enlarged 20-day treatment. */
#view:has(> .daily-entry)> .daily-entry{
  min-height:154px!important;
  padding:28px 32px!important;
  gap:30px!important;
}
#view:has(> .daily-entry)> .daily-entry .dup-entry-title{font-size:20px!important}
#view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it{
  padding:6px 20px!important;
}
#view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it b{font-size:12px!important}
#view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it span{
  font-size:30px!important;
  line-height:1.08!important;
  margin-top:9px!important;
}
@media(max-width:940px){
  #view:has(> .daily-entry)> .daily-entry{min-height:154px!important;padding:26px 28px!important}
}
@media(max-width:760px){
  #view:has(> .daily-entry)> .daily-entry{min-height:0!important;padding:22px 18px!important;gap:20px!important}
  #view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it{padding:5px 12px!important}
  #view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it span{font-size:28px!important}
}
@media(max-width:520px){
  #view:has(> .daily-entry)> .daily-entry{padding:20px 14px!important}
  #view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it{padding:4px 8px!important}
  #view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it span{font-size:26px!important}
}

/* bridgewater editorial icon polish: one quiet SVG system across headings,
   actions and dialogs. Icons remain decorative; labels and click targets stay
   exactly as before. */
:root{
  --bw-icon-ink:#326891;
  --bw-icon-muted:#687780;
  --bw-icon-size:17px;
}
.ui-icon{
  display:inline-block!important;
  width:var(--bw-icon-size)!important;
  height:var(--bw-icon-size)!important;
  flex:0 0 var(--bw-icon-size)!important;
  overflow:visible!important;
  vertical-align:-0.2em!important;
}
.dup-entry-title,.newstocks-title,.concept-title,.ann-title{
  display:inline-flex!important;
  align-items:center!important;
}
#view .dup-entry-title>svg.ui-icon,
#view .newstocks-title>svg.ui-icon,
#view .concept-title>svg.ui-icon,
#view .ann-title>svg.ui-icon{
  width:20px!important;
  height:20px!important;
  flex-basis:20px!important;
  padding:3px!important;
  border:1px solid var(--bw-line)!important;
  border-radius:3px!important;
  background:var(--bw-surface-soft)!important;
  color:var(--bw-icon-ink)!important;
  vertical-align:middle!important;
}
.ann-title>.ann-mark-icon{color:var(--bw-icon-ink)!important}
.dup-export,.ann-more,.head-action,.ann-portal,.back,
.pdf-actions a,.pdf-actions button,.day-nav button,.tf-clear{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:6px!important;
}
.dup-export>.ui-icon,.ann-more>.inline-icon{width:15px!important;height:15px!important;flex-basis:15px!important;vertical-align:middle!important}
.search-icon{width:16px!important;height:16px!important;flex-basis:16px!important;vertical-align:middle!important}
.back>.ui-icon{width:15px!important;height:15px!important;flex-basis:15px!important}
.pdf-close,.day-close{
  min-width:32px!important;
  min-height:30px!important;
  padding:5px 8px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.close-icon{width:16px!important;height:16px!important;flex-basis:16px!important}
.day-nav button>.nav-icon{width:14px!important;height:14px!important;flex-basis:14px!important}
.ui-icon-x{
  position:relative!important;
  width:13px!important;
  height:13px!important;
  flex:0 0 13px!important;
  display:inline-block!important;
  vertical-align:middle!important;
}
.ui-icon-x i{
  position:absolute!important;
  left:6px!important;
  top:1px!important;
  width:1px!important;
  height:11px!important;
  display:block!important;
  background:currentColor!important;
  transform:rotate(45deg)!important;
  transform-origin:center!important;
}
.ui-icon-x i+ i{transform:rotate(-45deg)!important}
@media(max-width:520px){
  #view .dup-entry-title>svg.ui-icon,#view .newstocks-title>svg.ui-icon,
  #view .concept-title>svg.ui-icon,#view .ann-title>svg.ui-icon{width:18px!important;height:18px!important;flex-basis:18px!important;padding:2px!important}
}

/* 20-day summary scale v6: keep the section label compact and move the
   visual emphasis to the stock/value capsules shown beneath it. */
#view:has(> .daily-entry)> .d20-entry{
  min-height:0!important;
  padding:0 18px 18px!important;
}
#view:has(> .daily-entry)> .d20-entry > div:first-child{
  padding:9px 0 7px!important;
}
#view:has(> .daily-entry)> .d20-entry .dup-entry-title{
  font-size:15px!important;
  line-height:1.2!important;
  gap:6px!important;
}
#view:has(> .daily-entry)> .d20-entry .dup-entry-sub{
  margin-top:1px!important;
  font-size:10px!important;
  line-height:1.2!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stocks{
  margin-top:12px!important;
  gap:12px!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock{
  min-height:80px!important;
  padding:17px 18px!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-name{
  font-size:21px!important;
  line-height:1.15!important;
  font-weight:650!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{
  font-size:28px!important;
  line-height:1!important;
  font-weight:700!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{
  font-size:21px!important;
  line-height:1!important;
  margin-left:10px!important;
  margin-right:10px!important;
}
@media(max-width:760px){
  #view:has(> .daily-entry)> .d20-entry{padding:0 16px 16px!important}
  #view:has(> .daily-entry)> .d20-entry > div:first-child{padding:8px 0 6px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stocks{margin-top:10px!important;gap:10px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{min-height:70px!important;padding:14px 15px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:18px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:23px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{font-size:18px!important;margin:0 8px!important}
}
@media(max-width:520px){
  #view:has(> .daily-entry)> .d20-entry{padding:0 12px 14px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{min-height:62px!important;padding:12px 12px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:17px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:21px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{font-size:17px!important;margin:0 7px!important}
}

/* Full-market toolbar polish: export and year filters share one compact
   control language, with the active year carrying the editorial blue accent. */
#view > .page-title .tag-market.a{
  min-height:30px!important;
  display:inline-flex!important;
  align-items:center!important;
  padding:4px 11px!important;
  background:var(--bw-surface-soft)!important;
  border:1px solid var(--bw-line)!important;
  border-left:1px solid var(--bw-line)!important;
  border-radius:3px!important;
  color:var(--bw-red)!important;
  font-size:11px!important;
  font-weight:650!important;
  line-height:1!important;
}
#view > .page-title .dup-export,
#view > .page-title .dup-tabs button{
  height:30px!important;
  min-height:30px!important;
  border:1px solid var(--bw-line)!important;
  border-radius:3px!important;
  background:var(--bw-surface)!important;
  color:var(--bw-muted)!important;
  font-size:11px!important;
  font-weight:500!important;
  line-height:1!important;
  box-shadow:none!important;
  transition:background-color .15s ease,border-color .15s ease,color .15s ease!important;
}
#view > .page-title .dup-export{
  padding:4px 11px!important;
  gap:6px!important;
  margin-left:0!important;
}
#view > .page-title .dup-export .ui-icon{color:var(--bw-blue)!important}
#view > .page-title .dup-tabs{
  display:inline-flex!important;
  align-items:center!important;
  gap:6px!important;
  margin-left:auto!important;
}
#view > .page-title .dup-tabs button{padding:4px 12px!important;cursor:pointer!important}
#view > .page-title .dup-export:hover,
#view > .page-title .dup-tabs button:hover{
  background:var(--bw-surface-soft)!important;
  border-color:#BACAD0!important;
  color:var(--bw-ink)!important;
}
#view > .page-title .dup-tabs button.is-on{
  background:var(--bw-blue)!important;
  border-color:var(--bw-blue)!important;
  color:#FFF!important;
  font-weight:650!important;
}
@media(max-width:760px){
  #view > .page-title .dup-tabs{margin-left:0!important;width:100%!important;justify-content:flex-start!important}
  #view > .page-title .dup-tabs button{flex:0 0 auto!important}
}

/* Flat title icons: remove the isolated badge treatment so the daily-change
   mark sits naturally with the editorial headings and the rest of the UI. */
#view .dup-entry-title>svg.ui-icon,
#view .newstocks-title>svg.ui-icon,
#view .concept-title>svg.ui-icon,
#view .ann-title>svg.ui-icon{
  width:18px!important;
  height:18px!important;
  flex-basis:18px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--bw-blue)!important;
}
#view .ipo-row>.iporeview-wrap .newstocks-title>svg.ui-icon{color:var(--bw-orange)!important}

/* Unified market tags v1: metadata chips share the editorial control rhythm.
   Remove the isolated red side bar and keep market semantics in restrained
   text/border tones so every page title reads as one coherent system. */
#view > .page-title .tag-market,
#view > .page-title .tag-market.a,
#view > .page-title .tag-market.h{
  display:inline-flex!important;
  align-items:center!important;
  min-height:24px!important;
  height:24px!important;
  padding:3px 9px!important;
  border:1px solid var(--bw-line)!important;
  border-left:1px solid var(--bw-line)!important;
  border-radius:3px!important;
  background:var(--bw-surface-soft)!important;
  color:var(--bw-muted)!important;
  font-size:11px!important;
  font-weight:600!important;
  line-height:1!important;
  letter-spacing:0!important;
}
#view > .page-title .tag-market.a{color:var(--bw-red)!important}
#view > .page-title .tag-market.h{color:var(--bw-blue)!important}

/* Announcement signal: corporate actions and periodic reports are easy to
   scan in deep red, including titles from Traditional-Chinese HK feeds. */
#view .announcements-entry .ann-item-title--signal,
#view .ann-page-card .ann-item-title--signal{
  color:#8F1D1D!important;
  font-weight:600!important;
}

/* 20-day ratio scale v2 (supersedes 20-day ratio scale v1): enlarge the key
   red/green counts so they use the available card width more directly, while
   preserving the existing grid. */
#view > .d20-score-grid .d20-sratio{
  align-items:baseline!important;
  gap:8px!important;
  flex-shrink:0!important;
  white-space:nowrap!important;
}
#view > .d20-score-grid .d20-sratio .up,
#view > .d20-score-grid .d20-sratio .down{
  font-size:40px!important;
  line-height:1!important;
  font-weight:700!important;
  letter-spacing:-.01em!important;
}
#view > .d20-score-grid .d20-sratio .colon{
  font-size:26px!important;
  line-height:1!important;
  font-weight:500!important;
}
@media(max-width:760px){
  #view > .d20-score-grid .d20-sratio .up,
  #view > .d20-score-grid .d20-sratio .down{font-size:36px!important}
  #view > .d20-score-grid .d20-sratio .colon{font-size:24px!important}
}
@media(max-width:520px){
  #view > .d20-score-grid .d20-sratio .up,
  #view > .d20-score-grid .d20-sratio .down{font-size:32px!important}
  #view > .d20-score-grid .d20-sratio .colon{font-size:22px!important}
}

/* -------------------------------------------------------------------------
   bridgewater-editorial-v1 · overall visual harmony pass
   A final, low-risk calibration layer for every route.  It standardises the
   reading rhythm, control geometry and focus/hover feedback without changing
   markup, data, dates or navigation behavior.
   ------------------------------------------------------------------------- */
:root{
  --editorial-line-strong:#CCD7DA;
  --editorial-hover:#F1F5F5;
  --editorial-focus:#5B8091;
  --editorial-control-radius:3px;
}

/* One quiet page rhythm: headings, tables and cards share the same baseline. */
#view > .page-title{
  min-height:36px!important;
  align-items:center!important;
  column-gap:10px!important;
  row-gap:7px!important;
}
#view > .page-title h1{
  font-size:23px!important;
  line-height:1.2!important;
  letter-spacing:-.01em!important;
}
#view > .page-title .sub{
  line-height:1.35!important;
  letter-spacing:.005em!important;
}
#view > .page-title .tag-market,
#view > .page-title .dup-export,
#view > .page-title .dup-tabs button{
  border-radius:var(--editorial-control-radius)!important;
}

/* Surface headers read as one family across homepage and detail routes. */
#view > .announcements-entry .ann-head,
#view > .ann-page-card .ann-page-note,
#view > .ipo-row .newstocks-head,
#view > .table-card .table-head,
#view > .tag-filter-bar + .table-card .table-head,
#view > .dup-layout .table-head{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  min-height:48px!important;
  box-shadow:none!important;
}
#view > .announcements-entry .ann-title,
#view > .ipo-row .newstocks-title,
#view > .table-card .table-head .title,
#view > .tag-filter-bar + .table-card .table-head .title,
#view > .dup-layout .table-head .title{
  line-height:1.25!important;
  letter-spacing:-.005em!important;
}

/* Keep long announcement titles legible while preserving the five-item list. */
#view > .announcements-entry .ann-item,
#view > .ann-page-card .ann-item{
  min-height:44px!important;
  align-items:center!important;
  transition:background-color .14s ease!important;
}
#view > .announcements-entry .ann-item-title,
#view > .ann-page-card .ann-item-title{
  line-height:1.45!important;
  text-wrap:pretty!important;
}

/* Hairline table rhythm and a single neutral hover treatment. */
#view > .table-card tbody tr,
#view > .tag-filter-bar + .table-card tbody tr,
#view > .dup-layout .dup-table tbody tr,
#view > .ipo-row .ns-item,
#view > .ipo-row .ipo-item{
  transition:background-color .14s ease!important;
}
#view > .table-card tbody tr:hover td,
#view > .tag-filter-bar + .table-card tbody tr:hover td,
#view > .dup-layout .dup-table tbody tr:hover td{
  background:var(--editorial-hover)!important;
}
#view > .table-card td,
#view > .tag-filter-bar + .table-card td,
#view > .dup-layout .dup-table td{
  vertical-align:middle!important;
}

/* Search and utility surfaces no longer use a separate rounded visual system. */
.search-dropdown,
.sd-hot,
.sd-hot-tag,
.sd-tag,
.crumb a,
.crumb .back{
  border-radius:var(--editorial-control-radius)!important;
}
.search-dropdown{border-color:var(--editorial-line)!important;box-shadow:0 14px 30px rgba(31,55,65,.12)!important}
.sd-item:hover,.sd-item.is-active{background:var(--editorial-hover)!important}
.sd-hot{background:var(--editorial-surface-soft)!important;border-top-color:var(--editorial-line)!important}
.sd-hot-tag{background:#FFF!important;border-color:var(--editorial-line)!important}
.sd-hot-tag:hover{background:var(--editorial-hover)!important;border-color:var(--editorial-line-strong)!important}

/* Icons use one optical weight and baseline; color remains semantic. */
#view .ui-icon,
header .ui-icon,
.pdf-box .ui-icon,
.day-box .ui-icon{
  stroke-width:1.7!important;
}
#view .head-action,
#view .dup-export,
#view .ann-more,
#view .ann-portal,
#view .ipo-link,
#view .tag-chip,
#view .src-chip,
#view .tf-clear,
.pdf-actions a,
.pdf-actions button,
.day-nav button{
  border-radius:var(--editorial-control-radius)!important;
  transition:background-color .14s ease,border-color .14s ease,color .14s ease,transform .14s ease!important;
}
#view .head-action:active,
#view .dup-export:active,
#view .ann-more:active,
#view .ann-portal:active,
#view .ipo-link:active,
.pdf-actions a:active,
.pdf-actions button:active,
.day-nav button:active{
  transform:translateY(1px)!important;
}

/* Footer and empty states sit on the same muted baseline as metadata. */
footer{line-height:1.45!important;font-size:11px!important;letter-spacing:.005em!important}
#view .ipo-empty,
#view .empty,
#view .none{line-height:1.5!important;color:var(--editorial-muted)!important}

@media(max-width:760px){
  #view > .page-title{min-height:32px!important}
  #view > .page-title h1{font-size:21px!important}
  #view > .announcements-entry .ann-head,
  #view > .ann-page-card .ann-page-note,
  #view > .ipo-row .newstocks-head,
  #view > .table-card .table-head,
  #view > .tag-filter-bar + .table-card .table-head,
  #view > .dup-layout .table-head{min-height:44px!important}
}
@media(max-width:520px){
  #view > .page-title h1{font-size:20px!important}
  #view > .announcements-entry .ann-item,
  #view > .ann-page-card .ann-item{min-height:42px!important}
}

/* Homepage 20-day summary scale v7: the homepage uses d20-entry capsules
   rather than the detail grid above. Keep its four-column structure intact,
   but give the stock names and paired counts enough scale to read at a glance. */
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock{
  min-height:74px!important;
  padding:13px 14px!important;
  gap:9px!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-name{
  min-width:0!important;
  font-size:21px!important;
  line-height:1.15!important;
  font-weight:650!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-values{
  flex-shrink:0!important;
  white-space:nowrap!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{
  font-size:30px!important;
  line-height:1!important;
  font-weight:700!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock b.up.trend-capsule-digits,
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock b.down.trend-capsule-digits{
  font-size:30px!important;
  line-height:1!important;
  font-weight:700!important;
}
#view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{
  font-size:22px!important;
  line-height:1!important;
  margin-left:8px!important;
  margin-right:8px!important;
}
@media(max-width:760px){
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{
    min-height:68px!important;
    padding:12px 14px!important;
  }
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:19px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:27px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock b.up.trend-capsule-digits,
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock b.down.trend-capsule-digits{font-size:27px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{font-size:20px!important;margin:0 7px!important}
}
@media(max-width:520px){
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock{
    min-height:62px!important;
    padding:12px 11px!important;
  }
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-name{font-size:17px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-digits{font-size:24px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock b.up.trend-capsule-digits,
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stock b.down.trend-capsule-digits{font-size:24px!important}
  #view:has(> .daily-entry)> .d20-entry .trend-capsule-colon{font-size:18px!important;margin:0 6px!important}
}

/* Site harmony v1: one restrained treatment for section headers, controls and
   concept rows across the homepage and every internal route. This is visual
   only; existing structure, interaction and content remain unchanged. */
#view>.announcements-entry .ann-head,
#view>.ipo-row .newstocks-head,
#view>.table-card .table-head,
#view>.tag-filter-bar + .table-card .table-head,
#view>.ann-page-card .ann-page-note{
  background:var(--editorial-surface-soft)!important;
  border-bottom:1px solid var(--editorial-line)!important;
}
#view:has(> .daily-entry)> .ipo-row > .newstocks-wrap .newstocks-head,
#view:has(> .daily-entry)> .ipo-row > .iporeview-wrap .newstocks-head{
  background:var(--editorial-surface-soft)!important;
  border-bottom:1px solid var(--editorial-line)!important;
}
#view>.announcements-entry .ann-head,
#view>.ipo-row .newstocks-head,
#view>.table-card .table-head,
#view>.tag-filter-bar + .table-card .table-head{
  min-height:52px!important;
  padding:11px 16px!important;
}
#view>.concept-strip .concept-chip{
  background:var(--editorial-surface-soft)!important;
  border:1px solid var(--editorial-line-soft)!important;
  border-bottom-color:var(--editorial-line)!important;
  border-radius:3px!important;
}
#view>.concept-strip .concept-chip:hover{
  background:#F3F6F6!important;
  border-color:#C9D5D8!important;
}
#view>.announcements-entry .ann-more,
#view>.ipo-row .head-action,
#view>.table-card .table-head .filter input,
#view>.tag-filter-bar .tag-chip,
#view>.tag-filter-bar .tf-clear{
  border-radius:3px!important;
}

/* Year archive shells use the same near-square editorial corners as the
   homepage cards.  The archive markup and data stay untouched; this scoped
   rule only removes the legacy rounded container treatment and shadow. */
#view.year-view > .newstocks-wrap,
#view.year-view > .iporeview-wrap{
  border-radius:var(--bw-radius)!important;
  box-shadow:none!important;
}

/* Final visual consistency pass: all archive headers, market badges, section
   labels and action affordances share the same quiet editorial grammar. */
#view.year-view > .newstocks-wrap .newstocks-head,
#view.year-view > .iporeview-wrap .newstocks-head{
  background:var(--bw-surface-soft)!important;
  border-top:0!important;
  border-bottom:1px solid var(--bw-line)!important;
}
#view .ns-board,
#view .ipo-mkt{
  border-radius:3px!important;
  padding:2px 6px!important;
  font-size:11px!important;
  line-height:1.2!important;
}
#view:has(> .daily-entry) > .d20-entry .dup-entry-title,
#view:has(> .daily-entry) > .announcements-entry .ann-title,
#view:has(> .daily-entry) > .ipo-row .newstocks-title,
#view:has(> .daily-entry) > .concept-strip .concept-title{
  font-size:14px!important;
  font-weight:650!important;
  color:var(--bw-ink)!important;
}
#view > .page-title h1{color:var(--bw-ink)!important}
#view > .market-grid .mcard .go{
  width:30px!important;
  height:30px!important;
  border-radius:var(--bw-radius)!important;
}
#view > .ann-page-card .ann-stock-group > header{
  background:var(--bw-surface-soft)!important;
  border-bottom:1px solid var(--bw-line-soft)!important;
}

/* Final consistency closure: remove the last route-specific rounded pills and
   row corners that escaped the shared editorial grammar.  These selectors
   intentionally match the higher-specificity homepage/archive rules above so
   an older component rule cannot reintroduce a different shape later. */
:root{
  --bw-line:var(--editorial-line);
  --bw-line-soft:var(--editorial-line-soft);
}
#view:has(> .daily-entry) > .home-stats,
#view:has(> .daily-entry) > .daily-entry,
#view:has(> .daily-entry) > .d20-entry,
#view:has(> .daily-entry) > .announcements-entry,
#view:has(> .daily-entry) > .ipo-row > .newstocks-wrap,
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap,
#view:has(> .daily-entry) > .market-grid .mcard,
#view:has(> .daily-entry) > .concept-strip,
#view > .table-card,
#view > .tag-filter-bar + .table-card,
#view > .ann-page-card,
#view.year-view > .newstocks-wrap,
#view.year-view > .iporeview-wrap{
  border-color:var(--editorial-line)!important;
}

/* Rows are separated by hairlines, never by rounded capsules, on both the
   rolling homepage lists and the full-year archives. */
#view .ns-item,
#view .ipo-item{
  border-radius:0!important;
}

/* Market labels and prospectus actions use the same compact 3px control shape
   in homepage, archive and concept surfaces. */
#view .ipo-mkt,
#view .ipo-link,
#view .mk-chip{
  border-radius:3px!important;
}
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap .ipo-mkt,
#view.year-view .ipo-mkt{
  border-radius:3px!important;
}

/* Final cascade closure: the canonical visual language wins after every
   historical compatibility layer, including route-specific mobile rules. */
#view > .page-title,
#view > .announcements-entry,
#view > .ann-page-card,
#view > .table-card,
#view > .tag-filter-bar,
#view > .ipo-row > .newstocks-wrap,
#view > .ipo-row > .iporeview-wrap,
#view.year-view > .newstocks-wrap,
#view.year-view > .iporeview-wrap{
  border-radius:var(--editorial-control-radius)!important;
}
#view > .page-title{border-bottom-color:var(--editorial-line)!important}
#view > .announcements-entry,
#view > .ann-page-card,
#view > .table-card,
#view > .tag-filter-bar,
#view > .ipo-row > .newstocks-wrap,
#view > .ipo-row > .iporeview-wrap,
#view.year-view > .newstocks-wrap,
#view.year-view > .iporeview-wrap{
  border-color:var(--editorial-line)!important;
  box-shadow:none!important;
}
#view > .announcements-entry .ann-item-title,
#view > .ann-page-card .ann-item-title,
#view > .table-card tbody td,
#view > .tag-filter-bar + .table-card tbody td,
#view > .dup-layout .dup-table tbody td{
  text-rendering:optimizeLegibility!important;
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    scroll-behavior:auto!important;
    transition-duration:.01ms!important;
  }
}

/* Browser-surface finish: native affordances inherit the same editorial
   neutrals instead of reverting to the legacy blue-gray defaults. */
html{
  scrollbar-color:#B7C4C8 var(--editorial-canvas)!important;
  scrollbar-width:thin!important;
}
::-webkit-scrollbar-thumb{
  background:#B7C4C8!important;
  border:2px solid var(--editorial-canvas)!important;
  border-radius:3px!important;
}
::-webkit-scrollbar-track{background:var(--editorial-canvas)!important}
::selection{
  background:#DDEAF0!important;
  color:var(--editorial-ink)!important;
}
input,textarea{caret-color:var(--editorial-blue)!important}
input::placeholder,textarea::placeholder{color:#89969B!important;opacity:1!important}

/* Keep the same optical corner on secondary row-level controls and links. */
#view .ns-sector,
#view .ipo-main,
#view .ipo-link,
#view .src-chip,
#view .tag-chip,
#view .chip,
#view .gcard .cnt{
  border-radius:var(--editorial-control-radius)!important;
}

/* Bottom summary cards: the grid is spacing only.  Keeping a border on both
   the wrapper and each child created the stray connecting lines in between. */
#view:has(> .daily-entry) > .home-stats{
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
}
#view:has(> .daily-entry) > .home-stats .stat-card{
  border:1px solid var(--editorial-line)!important;
  border-radius:var(--editorial-control-radius)!important;
  background:var(--editorial-surface)!important;
}
@media(max-width:760px){
  #view:has(> .daily-entry) > .home-stats{gap:10px!important}
}

/* Announcement archive: separate each stock into a quiet inset group so
   adjacent rows do not visually merge into one long list. */
#view > .ann-page-card .ann-stock-group{
  margin:12px 12px 12px!important;
  border:1px solid var(--editorial-line)!important;
  border-radius:var(--editorial-control-radius)!important;
  background:var(--editorial-surface)!important;
  overflow:hidden!important;
}
#view > .ann-page-card .ann-stock-group > header{
  padding:12px 16px!important;
  background:var(--editorial-surface-soft)!important;
  border-bottom:1px solid var(--editorial-line)!important;
}
@media(max-width:760px){
  #view > .ann-page-card .ann-stock-group{margin:10px 8px!important}
  #view > .ann-page-card .ann-stock-group > header{padding:10px 12px!important}
}

/* IPO market labels: A股 and 港股 use the same optical footprint.  A Latin
   glyph (A) is narrower than the Chinese glyphs, so content-driven widths made
   otherwise identical labels look misaligned. */
#view .ipo-mkt,
#view .ns-board{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:40px!important;
  min-width:40px!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}

/* Daily change title icon: use the same restrained deep red as upward market
   movement, while leaving the 20-day title icon's blue navigation cue intact. */
#view:has(> .daily-entry) > .daily-entry .dup-entry-title svg{
  color:var(--bw-red)!important;
}

/* bridgewater-001 · title icon harmony v1
   Keep the six homepage section marks in one optical family: a quiet
   near-square frame, identical 22px footprint and a restrained semantic
   stroke color.  The frame stays neutral so the icon reads as part of the
   heading rather than as a separate badge. */
:root{
  --bw-icon-frame:#F5F7F7;
  --bw-icon-line:#D7E0E3;
  --bw-icon-blue:#326891;
  --bw-icon-red:#80241E;
  --bw-icon-orange:#A96832;
  --bw-icon-muted:#5F7480;
}
#view .dup-entry-title,
#view .newstocks-title,
#view .concept-title,
#view .ann-title{
  gap:8px!important;
}
#view .dup-entry-title > svg.ui-icon,
#view .newstocks-title > svg.ui-icon,
#view .concept-title > svg.ui-icon,
#view .ann-title > svg.ui-icon{
  width:22px!important;
  height:22px!important;
  flex:0 0 22px!important;
  padding:3px!important;
  box-sizing:border-box!important;
  border:1px solid var(--bw-icon-line)!important;
  border-radius:3px!important;
  background:var(--bw-icon-frame)!important;
  color:var(--bw-icon-blue)!important;
  stroke-width:1.7!important;
  stroke-linecap:round!important;
  stroke-linejoin:round!important;
  vertical-align:middle!important;
}
#view:has(> .daily-entry) > .daily-entry .dup-entry-title > svg.ui-icon{
  color:var(--bw-icon-red)!important;
  background:#FBF6F5!important;
  border-color:#E5D4D1!important;
}
#view:has(> .daily-entry) > .d20-entry .dup-entry-title > svg.ui-icon{
  color:var(--bw-icon-blue)!important;
}
#view:has(> .daily-entry) > .announcements-entry .ann-title > svg.ui-icon{
  color:var(--bw-icon-muted)!important;
}
#view:has(> .daily-entry) > .ipo-row > .newstocks-wrap .newstocks-title > svg.ui-icon{
  color:var(--bw-icon-blue)!important;
}
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap .newstocks-title > svg.ui-icon{
  color:var(--bw-icon-orange)!important;
  background:#FAF7F2!important;
  border-color:#E5D9C9!important;
}
#view:has(> .daily-entry) > .concept-strip .concept-title > svg.ui-icon{
  color:var(--bw-icon-blue)!important;
}
@media(max-width:520px){
  #view .dup-entry-title > svg.ui-icon,
  #view .newstocks-title > svg.ui-icon,
  #view .concept-title > svg.ui-icon,
  #view .ann-title > svg.ui-icon{
    width:20px!important;
    height:20px!important;
    flex-basis:20px!important;
    padding:2px!important;
  }
}

/* bridgewater-001 · overall visual harmony v2
   Final low-risk polish across the shell, homepage cards and detail routes.
   This layer only harmonises spacing, type, borders and interaction states;
   data, dates, DOM structure and navigation behaviour remain unchanged. */
:root{
  --editorial-surface-muted:#F4F7F7;
  --editorial-line-faint:#E8EDEE;
  --editorial-green:#159447;
}

/* The shell is a quiet frame for the paper surfaces below. */
header{
  background:rgba(247,248,248,.96)!important;
  backdrop-filter:blur(8px)!important;
  border-bottom:1px solid var(--editorial-line)!important;
}
.header-inner{padding-top:10px!important;padding-bottom:10px!important;gap:18px!important}
.brand{gap:10px!important}
.brand-logo-box{
  width:38px!important;height:38px!important;
  border:1px solid var(--editorial-line)!important;
  border-radius:var(--editorial-control-radius)!important;
  background:var(--editorial-surface-soft)!important;
  box-shadow:none!important;
}
.brand .brand-logo{height:27px!important}
.brand-name{
  color:var(--editorial-ink)!important;
  background:none!important;
  -webkit-text-fill-color:currentColor!important;
  font-size:15px!important;
  font-weight:650!important;
  letter-spacing:.08em!important;
}
.search-box{
  min-height:36px!important;
  padding:8px 12px!important;
  border-radius:var(--editorial-control-radius)!important;
  background:var(--editorial-surface)!important;
  box-shadow:none!important;
}
.search-box .kbd{
  border-radius:var(--editorial-control-radius)!important;
  background:var(--editorial-surface-muted)!important;
  border-color:var(--editorial-line-faint)!important;
}
.header-status{gap:7px!important}
.header-status .dot{box-shadow:none!important}

/* Every content surface shares one optical edge and one quiet depth model. */
#view > .daily-entry,
#view > .d20-entry,
#view > .announcements-entry,
#view > .ipo-row > .newstocks-wrap,
#view > .ipo-row > .iporeview-wrap,
#view > .market-grid .mcard,
#view > .concept-strip,
#view > .home-stats .stat-card,
#view > .table-card,
#view > .tag-filter-bar,
#view > .ann-page-card,
#view.year-view > .newstocks-wrap,
#view.year-view > .iporeview-wrap,
#view > .d20-score-grid .d20-score,
#view > .dup-layout .dup-main .table-card{
  border-radius:var(--editorial-control-radius)!important;
  border-color:var(--editorial-line)!important;
  box-shadow:none!important;
}

/* Headers, metadata and values use a predictable vertical cadence. */
#view > .announcements-entry .ann-head,
#view > .ipo-row .newstocks-head,
#view > .table-card .table-head,
#view > .tag-filter-bar + .table-card .table-head,
#view > .dup-layout .table-head,
#view > .ann-page-card .ann-page-note{
  min-height:50px!important;
  padding:11px 16px!important;
  background:var(--editorial-surface-muted)!important;
  border-bottom:1px solid var(--editorial-line)!important;
}
#view > .announcements-entry .ann-title,
#view > .ipo-row .newstocks-title,
#view > .table-card .table-head .title,
#view > .tag-filter-bar + .table-card .table-head .title,
#view > .dup-layout .table-head .title{
  color:var(--editorial-ink)!important;
  font-size:14px!important;
  font-weight:650!important;
  line-height:1.3!important;
}
#view > .announcements-entry .ann-sub,
#view > .ipo-row .newstocks-sub,
#view > .table-card .table-head .count,
#view > .tag-filter-bar + .table-card .table-head .count,
#view > .dup-layout .table-head .count,
#view > .ann-page-card .ann-page-note{
  color:var(--editorial-muted)!important;
  line-height:1.4!important;
}

/* Lists and tables: readable rows with the same hairline and hover tone. */
#view > .announcements-entry .ann-item,
#view > .ann-page-card .ann-item{
  min-height:46px!important;
  padding:10px 16px!important;
  border-bottom:1px solid var(--editorial-line-faint)!important;
  background:var(--editorial-surface)!important;
}
#view > .announcements-entry .ann-item-title,
#view > .ann-page-card .ann-item-title{
  color:var(--editorial-text)!important;
  font-size:12.5px!important;
  line-height:1.45!important;
}
#view > .announcements-entry .ann-stock,
#view > .ann-page-card .ann-stock-group strong{font-weight:650!important;color:var(--editorial-ink)!important}
#view > .announcements-entry .ann-item time,
#view > .ann-page-card .ann-item time,
#view > .ann-page-card .ann-source{font-size:10.5px!important;color:var(--editorial-muted)!important}
#view > .announcements-entry .ann-item:hover,
#view > .ann-page-card .ann-item:hover,
#view > .table-card tbody tr:hover td,
#view > .tag-filter-bar + .table-card tbody tr:hover td,
#view > .dup-layout .dup-table tbody tr:hover td,
#view > .ipo-row .ns-item:hover,
#view > .ipo-row .ipo-item:hover{background:var(--editorial-hover)!important}

#view > .ipo-row .ns-item,
#view > .ipo-row .ipo-item{
  min-height:38px!important;
  padding:7px 10px!important;
  border-bottom:1px solid var(--editorial-line-faint)!important;
}
#view > .ipo-row .ns-name,
#view > .ipo-row .ipo-name{font-size:12px!important;font-weight:650!important;color:var(--editorial-ink)!important}
#view > .ipo-row .ns-code,
#view > .ipo-row .ipo-date{font-size:10.5px!important;color:var(--editorial-muted)!important}
#view > .ipo-row .ns-sector,
#view > .ipo-row .ipo-main{
  background:var(--editorial-surface-muted)!important;
  border-color:var(--editorial-line-faint)!important;
  border-radius:var(--editorial-control-radius)!important;
}
#view > .ipo-row .ipo-mkt,
#view.year-view .ipo-mkt,
#view > .page-title .tag-market,
#view > .page-title .mk-chip{
  min-height:24px!important;
  border-radius:var(--editorial-control-radius)!important;
  border:1px solid var(--editorial-line)!important;
  background:var(--editorial-surface-muted)!important;
  line-height:1!important;
}
#view > .ipo-row .ipo-mkt.a,
#view.year-view .ipo-mkt.a,
#view > .page-title .tag-market.a{color:var(--editorial-red)!important}
#view > .ipo-row .ipo-mkt.h,
#view.year-view .ipo-mkt.h,
#view > .page-title .tag-market.h{color:var(--editorial-blue)!important}

/* Detail tables keep data prominent and metadata quiet. */
#view > .table-card tbody td,
#view > .tag-filter-bar + .table-card tbody td,
#view > .dup-layout .dup-table tbody td{
  border-bottom:1px solid var(--editorial-line-faint)!important;
  line-height:1.45!important;
  vertical-align:middle!important;
}
#view > .table-card td.code,
#view > .tag-filter-bar + .table-card td.code,
#view > .dup-layout .dup-table td.code{color:var(--editorial-muted)!important}
#view > .table-card td.name,
#view > .tag-filter-bar + .table-card td.name{font-weight:650!important;color:var(--editorial-ink)!important}
#view > .dup-layout .dup-table td.num,
#view > .d20-score-grid .d20-sratio,
#view > .home-stats .stat-card .num,
#view > .market-grid .mcard .big,
#view > .market-grid .mcard .stats .it b{
  font-variant-numeric:tabular-nums!important;
  font-feature-settings:"tnum" 1!important;
}

/* Market, concept and total cards share the same spacing and icon balance. */
#view > .market-grid .mcard{
  min-height:82px!important;
  padding:16px 18px!important;
  background:var(--editorial-surface)!important;
}
#view > .market-grid .mcard-code{
  width:40px!important;height:40px!important;
  border-radius:var(--editorial-control-radius)!important;
  background:var(--editorial-surface-muted)!important;
  border:1px solid var(--editorial-line)!important;
}
#view > .market-grid .mcard .go{
  width:28px!important;height:28px!important;
  border-radius:var(--editorial-control-radius)!important;
  background:var(--editorial-surface-muted)!important;
  border:1px solid var(--editorial-line)!important;
}
#view > .concept-strip{padding:16px 16px 17px!important;background:var(--editorial-surface)!important}
#view > .concept-strip .concept-chips{margin-top:11px!important;column-gap:24px!important;row-gap:6px!important}
#view > .concept-strip .concept-chip{
  min-height:34px!important;
  padding:8px 10px!important;
  border:1px solid var(--editorial-line-faint)!important;
  border-bottom-color:var(--editorial-line)!important;
  border-radius:var(--editorial-control-radius)!important;
  background:var(--editorial-surface-muted)!important;
}
#view > .home-stats{gap:16px!important}
#view > .home-stats .stat-card{
  min-height:88px!important;
  padding:16px 18px!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  gap:5px!important;
  background:var(--editorial-surface)!important;
}
#view > .home-stats .stat-card .num{font-size:26px!important;line-height:1!important;color:var(--editorial-ink)!important}
#view > .home-stats .stat-card .t{font-size:11px!important;line-height:1.4!important;color:var(--editorial-muted)!important}

/* Keep action controls compact, square and visibly keyboard accessible. */
#view .head-action,
#view .dup-export,
#view .ann-more,
#view .ann-portal,
#view .ipo-link,
#view .tf-clear,
#view .dup-tabs button,
.pdf-actions a,
.pdf-actions button,
.day-nav button{
  min-height:30px!important;
  padding:5px 10px!important;
  border-radius:var(--editorial-control-radius)!important;
  box-shadow:none!important;
}
#view .head-action:hover,
#view .dup-export:hover,
#view .ann-more:hover,
#view .ann-portal:hover,
#view .ipo-link:hover,
#view .tf-clear:hover,
#view .dup-tabs button:hover,
.pdf-actions a:hover,
.pdf-actions button:hover,
.day-nav button:hover{
  background:var(--editorial-hover)!important;
  border-color:var(--editorial-line-strong)!important;
}

@media(max-width:760px){
  .header-inner{padding:9px 16px!important;gap:12px!important}
  .brand-logo-box{width:34px!important;height:34px!important}
  .brand .brand-logo{height:24px!important}
  .brand-name{font-size:14px!important}
  #view > .announcements-entry .ann-head,
  #view > .ipo-row .newstocks-head,
  #view > .table-card .table-head,
  #view > .tag-filter-bar + .table-card .table-head,
  #view > .dup-layout .table-head,
  #view > .ann-page-card .ann-page-note{min-height:46px!important;padding:10px 12px!important}
  #view > .announcements-entry .ann-item,
  #view > .ann-page-card .ann-item{min-height:44px!important;padding:9px 12px!important}
  #view > .ipo-row .ns-item,
  #view > .ipo-row .ipo-item{min-height:36px!important;padding:6px 8px!important}
  #view > .market-grid{grid-template-columns:1fr!important;gap:10px!important}
  #view > .market-grid .mcard-main{min-width:0!important;flex:1 1 auto!important}
  #view > .market-grid .mcard .stats{flex:0 0 auto!important}
  #view > .market-grid .mcard .stats .it{padding:0 10px!important}
  #view > .concept-strip{padding:14px 12px 15px!important}
  #view > .concept-strip .concept-chips{grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:12px!important;row-gap:5px!important}
  #view > .concept-strip .concept-chip span:first-child{min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
  #view > .home-stats .stat-card{min-height:80px!important;padding:14px!important}
}
@media(max-width:520px){
  .search-box{min-height:34px!important;padding:7px 10px!important}
  #view > .announcements-entry .ann-item-title,
  #view > .ann-page-card .ann-item-title{font-size:12px!important}
  #view > .market-grid .mcard{min-height:76px!important;padding:14px!important}
  #view > .market-grid .mcard-code{width:36px!important;height:36px!important}
  #view > .home-stats{grid-template-columns:1fr!important;gap:8px!important}
  #view > .home-stats .stat-card{min-height:72px!important}
}

/* Date divider cleanup v1
   Keep date labels as quiet grouping cues without a trailing rule.  The
   previous divider and pseudo-element made the date row read like an extra
   table border in the compact IPO/new-stock cards. */
#view .ns-date-head,
#view .ipo-date-head{
  border-bottom:0!important;
}
#view .ns-date-head::after,
#view .ipo-date-head::after{
  display:block!important;
  content:""!important;
  flex:1!important;
  height:1px!important;
  background:var(--editorial-line)!important;
}

/* title icon baseline alignment v1
   Keep the icon-to-label optical gap identical even when older route-specific
   heading rules have a higher selector specificity. */
#view:has(> .daily-entry) > .daily-entry .dup-entry-title,
#view:has(> .daily-entry) > .d20-entry .dup-entry-title,
#view:has(> .daily-entry) > .announcements-entry .ann-title,
#view:has(> .daily-entry) > .ipo-row > .newstocks-wrap .newstocks-title,
#view:has(> .daily-entry) > .ipo-row > .iporeview-wrap .newstocks-title,
#view:has(> .daily-entry) > .concept-strip .concept-title{
  gap:8px!important;
}

/* Weekly grid type scale v1
   The enlarged four-column cells must carry a proportionate score label;
   override the legacy compact 11px rule only inside the companion grid. */
#view > .dup-layout .dup-side .wk-cell{
  font-size:16px!important;
  line-height:1!important;
  font-weight:700!important;
}

/* bridgewater-001 · homepage 20-day DIN numerals v1
   The paired counts are the primary scan target in the homepage 20-day
   summary.  Keep the requested 26px desktop scale and use DIN when it is
   available, with metric-compatible fallbacks for systems without it. */
#view:has(> .daily-entry) > .d20-entry .trend-capsule-digits,
#view:has(> .daily-entry) > .d20-entry .d20-entry-stock b.trend-capsule-digits{
  font-family:"DIN","DIN Next","DIN Alternate",Inter,Roboto,"Segoe UI",sans-serif!important;
  font-size:26px!important;
  line-height:1!important;
  font-weight:700!important;
  font-variant-numeric:tabular-nums!important;
  font-feature-settings:"tnum" 1!important;
}

@media(max-width:760px){
  #view:has(> .daily-entry) > .d20-entry .trend-capsule-digits,
  #view:has(> .daily-entry) > .d20-entry .d20-entry-stock b.trend-capsule-digits{
    font-size:23px!important;
  }
}
@media(max-width:520px){
  #view:has(> .daily-entry) > .d20-entry .trend-capsule-digits,
  #view:has(> .daily-entry) > .d20-entry .d20-entry-stock b.trend-capsule-digits{
    font-size:21px!important;
  }
}

/* bridgewater-001 · global DIN numeric system v1
   Give every rendered numeric role one measurement-oriented face.  The
   selector set covers summary metrics, market/IPO counters, dates, codes,
   ratios and table values while leaving the surrounding Chinese copy on its
   established editorial family. */
:root{
  --bw-number-font:"DIN","DIN Next","DIN Alternate",Inter,Roboto,"Segoe UI",sans-serif;
}
#view .finance-number,
#view .market-main-number,
#view .trend-capsule-digits,
#view .concept-count-refined,
#view .table-percentage-cell,
#view .dup-entry-stats .it > span,
#view .dup-stats-bar b,
#view .wk-grid-head,
#view .wk-grid-note,
#view .wk-grid-stats .ws-item b,
#view .wk-cell,
#view .wk-score,
#view .d20-dcell,
#view .day-title,
#view .day-item > span,
#view .day-nav button,
#view .mcard .big,
#view .mcard .stats .it b,
#view .stat-card .num,
#view .concept-chip b,
#view .gcard .cnt,
#view .gcard .chip b,
#view .gcard .desc,
#view .table-card .count,
#view .dup-more button,
#view .ns-pct,
#view .ipo-pct,
#view .src-chip .pct,
#view .ns-code,
#view .ipo-date,
#view .ann-code,
#view .ann-item time,
#view .ns-date-head,
#view .ipo-date-head,
#view .header-status time,
#view .sd-code,
#view .page-title .sub,
#view .newstocks-sub,
#view .ann-sub,
#view [class~="num"],
#view [class~="pct"],
#view [class~="ratio"],
#view [class~="score"],
#view [class~="count"],
#view [class~="code"]{
  font-family:var(--bw-number-font)!important;
  font-variant-numeric:tabular-nums!important;
  font-feature-settings:"tnum" 1!important;
}

/* Historical route rules assigned a stronger monospace face to these data
   containers; repeat the high-specificity paths so DIN wins those overrides
   as well. */
#view > .dup-layout .dup-table,
#view > .dup-layout .dup-table tbody td,
#view > .dup-layout .dup-table tbody td.num,
#view > .dup-layout .dup-table thead th,
#view > .table-card table,
#view > .table-card table td,
#view > .table-card table th,
#view > .tag-filter-bar + .table-card table,
#view > .tag-filter-bar + .table-card table td,
#view > .tag-filter-bar + .table-card table th,
#view > .d20-score-grid .d20-sratio,
#view > .d20-score-grid .d20-sratio > span,
#view > .concept-strip .concept-chip b,
#view > .ipo-row .ns-date-head,
#view > .ipo-row .ipo-date-head,
#view.year-view .ns-date-head,
#view.year-view .ipo-date-head{
  font-family:var(--bw-number-font)!important;
  font-variant-numeric:tabular-nums!important;
  font-feature-settings:"tnum" 1!important;
}

/* Keep the 20-day homepage scale defined above; this block changes only the
   face globally, not the requested 26px/23px/21px responsive sizes. */

/* bridgewater-001 · announcement palette balance v1
   Give the announcement surface a small, intentional color hierarchy:
   blue-gray for disclosure context, market-colored code tags, deep red only
   for corporate-action signals, and a restrained source chip for provenance.
   The layout, five-item limit and all interaction behavior remain unchanged. */
:root{
  --ann-ink:#193B4A;
  --ann-text:#2A414A;
  --ann-blue:#326891;
  --ann-blue-soft:#EEF4F6;
  --ann-blue-line:#D5E3E7;
  /* A 股仍保留语义区分，但改用低饱和深红，避免整页出现米黄/橙黄块。 */
  --ann-warm:#8B3838;
  --ann-warm-soft:#FAF0F0;
  --ann-warm-line:#E6C8C8;
  --ann-red:#8F1D1D;
  --ann-line:#DEE7E9;
  --ann-line-soft:#ECF1F2;
  --ann-row-alt:#FBFCFC;
  --ann-hover:#F1F7F8;
}

/* Homepage preview: the announcement block now reads as a distinct
   editorial section without becoming a second accent-heavy card. */
#view > .announcements-entry{
  border-top:2px solid var(--ann-blue)!important;
  background:#FFF!important;
}
#view > .announcements-entry .ann-head{
  background:var(--ann-blue-soft)!important;
  border-bottom:1px solid var(--ann-blue-line)!important;
}
#view > .announcements-entry .ann-title{color:var(--ann-ink)!important}
#view > .announcements-entry .ann-sub{color:#5D7480!important}
#view > .announcements-entry .ann-item{
  background:#FFF!important;
  border-bottom:1px solid var(--ann-line-soft)!important;
}
#view > .announcements-entry .ann-item:nth-child(even){background:var(--ann-row-alt)!important}
#view > .announcements-entry .ann-item:hover{background:var(--ann-hover)!important}
#view > .announcements-entry .ann-stock{color:var(--ann-ink)!important}
#view > .announcements-entry .ann-item-title{color:var(--ann-text)!important}
#view > .announcements-entry .ann-source{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:20px!important;
  padding:2px 7px!important;
  border:1px solid var(--ann-blue-line)!important;
  border-radius:2px!important;
  background:var(--ann-blue-soft)!important;
  color:var(--ann-blue)!important;
  font-size:10px!important;
}

/* Full announcement page: inset groups create clear separation between
   stocks, while the page note and source chips provide the color rhythm. */
#view > .ann-page-card{
  border:1px solid var(--ann-line)!important;
  border-radius:2px!important;
  background:#FFF!important;
  overflow:visible!important;
  padding-bottom:4px!important;
}
#view > .ann-page-card .ann-page-note{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  min-height:44px!important;
  padding:11px 16px!important;
  background:var(--ann-blue-soft)!important;
  border-bottom:1px solid var(--ann-blue-line)!important;
  color:#4D6873!important;
  font-size:11.5px!important;
}
#view > .ann-page-card .ann-page-note::before{
  content:""!important;
  width:6px!important;
  height:6px!important;
  flex:0 0 6px!important;
  border-radius:50%!important;
  background:var(--ann-blue)!important;
}
#view > .ann-page-card .ann-stock-group{
  margin:12px 14px!important;
  border:1px solid var(--ann-line)!important;
  border-radius:2px!important;
  background:#FFF!important;
  overflow:hidden!important;
}
#view > .ann-page-card .ann-stock-group > header{
  padding:12px 16px!important;
  background:#F7FAFA!important;
  border-bottom:1px solid var(--ann-line)!important;
}
#view > .ann-page-card .ann-stock-group:nth-of-type(odd) > header{
  background:#F4F8FA!important;
  border-bottom-color:#D3E1E6!important;
}
#view > .ann-page-card .ann-stock-group strong{color:var(--ann-ink)!important}
#view > .ann-page-card .ann-code{
  display:inline-flex!important;
  align-items:center!important;
  gap:6px!important;
  margin-left:10px!important;
  color:#6C7D83!important;
  font-size:11px!important;
}
#view > .ann-page-card .ann-market-tag{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-width:34px!important;
  height:20px!important;
  padding:2px 6px!important;
  border:1px solid var(--ann-blue-line)!important;
  border-radius:2px!important;
  background:var(--ann-blue-soft)!important;
  color:var(--ann-blue)!important;
  font-size:10px!important;
  font-weight:650!important;
  line-height:1!important;
}
#view > .ann-page-card .ann-market-tag.a{
  border-color:var(--ann-warm-line)!important;
  background:var(--ann-warm-soft)!important;
  color:var(--ann-warm)!important;
}
#view > .ann-page-card .ann-code-value{
  color:#72838A!important;
  font-family:var(--bw-number-font)!important;
  font-variant-numeric:tabular-nums!important;
}
#view > .ann-page-card .ann-portal{
  border:1px solid var(--ann-blue-line)!important;
  border-radius:2px!important;
  background:var(--ann-blue-soft)!important;
  color:var(--ann-blue)!important;
  font-weight:650!important;
}
#view > .ann-page-card .ann-portal:hover{
  background:#E3EFF2!important;
  border-color:#B8D0D7!important;
  color:#244F6A!important;
}
#view > .ann-page-card .ann-item{
  min-height:48px!important;
  padding:10px 16px!important;
  background:#FFF!important;
  border-bottom:1px solid var(--ann-line-soft)!important;
}
#view > .ann-page-card .ann-item:nth-child(even){background:var(--ann-row-alt)!important}
#view > .ann-page-card .ann-item:hover{background:var(--ann-hover)!important}
#view > .ann-page-card .ann-item-title{
  color:var(--ann-text)!important;
  font-size:12.5px!important;
  line-height:1.45!important;
}
#view > .ann-page-card .ann-item-title--signal{
  color:var(--ann-red)!important;
  font-weight:650!important;
}
#view > .ann-page-card .ann-item time{
  color:#6C7D83!important;
  font-size:10.5px!important;
}
#view > .ann-page-card .ann-source{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:21px!important;
  max-width:100%!important;
  overflow:hidden!important;
  padding:2px 7px!important;
  border:1px solid var(--ann-blue-line)!important;
  border-radius:2px!important;
  background:var(--ann-blue-soft)!important;
  color:var(--ann-blue)!important;
  font-size:10px!important;
  text-overflow:ellipsis!important;
}
#view > .ann-page-card .ann-empty{
  background:#FBFCFC!important;
  color:#6C7D83!important;
}
#view > .ann-page-card .ann-item:focus-visible,
#view > .ann-page-card .ann-portal:focus-visible{
  outline:2px solid var(--ann-blue)!important;
  outline-offset:-2px!important;
}
@media(max-width:760px){
  #view > .ann-page-card .ann-stock-group{margin:10px 8px!important}
  #view > .ann-page-card .ann-stock-group > header{padding:10px 12px!important}
  #view > .ann-page-card .ann-item{padding:9px 12px!important}
  #view > .ann-page-card .ann-page-note{padding:10px 12px!important}
}
@media(max-width:520px){
  #view > .announcements-entry .ann-source{display:none!important}
  #view > .ann-page-card .ann-code{margin-left:7px!important;gap:4px!important}
  #view > .ann-page-card .ann-market-tag{min-width:31px!important;padding:2px 5px!important}
}

/* bridgewater-001 · announcement palette balance v2
   The announcement page uses cool editorial surfaces as its shared canvas;
   color is reserved for market meaning, provenance and material signals.
   This closes the former beige/yellow header variant without changing copy,
   data, ordering or the homepage subtitle. */
#view > .ann-page-card .ann-stock-group:nth-of-type(even) > header{
  background:#F8FBFC!important;
}
#view > .ann-page-card .ann-stock-group:nth-of-type(odd) > header{
  background:#F4F8FA!important;
  border-bottom-color:#D3E1E6!important;
}
#view > .ann-page-card .ann-market-tag.a{
  border-color:#E6C8C8!important;
  background:#FAF0F0!important;
  color:#8B3838!important;
}

/* bridgewater-001 · homepage announcement surface lock v1
   Match the approved homepage reference exactly: neutral paper surface,
   quiet gray header, white reading rows and text-only provenance.  This
   scope deliberately excludes the full announcement route. */
#view:has(> .daily-entry) > .announcements-entry{
  border:1px solid #D9DEE3!important;
  border-top:1px solid #D9DEE3!important;
  border-radius:0!important;
  background:#FFF!important;
  box-shadow:none!important;
}
#view:has(> .daily-entry) > .announcements-entry .ann-head{
  padding:9px 14px!important;
  background:#F7F8F8!important;
  border-bottom:1px solid #E5E9EB!important;
}
#view:has(> .daily-entry) > .announcements-entry .ann-title{
  font-size:13px!important;
  color:#111!important;
}
#view:has(> .daily-entry) > .announcements-entry .ann-sub{
  font-size:10px!important;
  color:#7A8790!important;
}
#view:has(> .daily-entry) > .announcements-entry .ann-item{
  grid-template-columns:112px minmax(0,1fr) 118px 88px!important;
  gap:12px!important;
  padding:9px 14px!important;
  background:#FFF!important;
  border-bottom:1px solid #E5E9EB!important;
  color:#1A3D51!important;
}
#view:has(> .daily-entry) > .announcements-entry .ann-item:nth-child(even){
  background:#FFF!important;
}
#view:has(> .daily-entry) > .announcements-entry .ann-item:hover{
  background:#FAFAFA!important;
}
#view:has(> .daily-entry) > .announcements-entry .ann-stock,
#view:has(> .daily-entry) > .announcements-entry .ann-item-title{
  color:#1A3D51!important;
}
#view:has(> .daily-entry) > .announcements-entry .ann-source{
  display:block!important;
  min-height:0!important;
  max-width:none!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:#52758A!important;
  font-size:11px!important;
  text-align:right!important;
}
@media(max-width:760px){
  #view:has(> .daily-entry) > .announcements-entry .ann-item{
    grid-template-columns:84px minmax(0,1fr) 92px!important;
    gap:8px!important;
    padding:8px 12px!important;
  }
}
@media(max-width:520px){
  #view:has(> .daily-entry) > .announcements-entry .ann-item{
    grid-template-columns:64px minmax(0,1fr)!important;
    padding:8px 10px!important;
  }
}

/* bridgewater-001 · announcement company-name type v2
   Match the approved “中塑股份” reference: a compact Chinese sans face,
   firm weight and deep editorial blue.  Apply the same role to homepage
   rows and detail-page group headers so company identity stays consistent. */
#view:has(> .daily-entry) > .announcements-entry .ann-stock,
#view > .ann-page-card .ann-stock-group > header strong{
  font-family:"PingFang SC","Microsoft YaHei","Segoe UI",Arial,sans-serif!important;
  font-size:13px!important;
  font-weight:650!important;
  letter-spacing:0!important;
  color:#111111!important;
}

/* bridgewater-001 · visual harmony refinement v1
   A final low-risk visual pass for the whole site.  The page remains a
   restrained editorial dashboard: paper-white content on a quiet canvas,
   one spacing rhythm, and semantic red/green values unchanged.  No DOM,
   data, route or interaction behavior is changed. */
:root{
  --bw-canvas-refined:#F3F6F5;
  --bw-surface-refined:#FFFFFF;
  --bw-surface-soft-refined:#F5F8F7;
  --bw-line-refined:#D6E0E1;
  --bw-line-soft-refined:#E9EFF0;
  --bw-hover-refined:#F1F6F5;
}

html,body,main{
  background:var(--bw-canvas-refined)!important;
}
main{
  padding-top:24px!important;
  padding-bottom:64px!important;
}
#view:has(> .daily-entry){
  gap:20px!important;
}

/* Keep all primary surfaces on the same paper plane with a barely-there
   edge.  The single-pixel rule gives long lists a readable frame without
   bringing back the old heavy shadows or rounded-card language. */
#view:has(> .daily-entry)> .daily-entry,
#view:has(> .daily-entry)> .d20-entry,
#view:has(> .daily-entry)> .announcements-entry,
#view:has(> .daily-entry)> .ipo-row>.newstocks-wrap,
#view:has(> .daily-entry)> .ipo-row>.iporeview-wrap,
#view:has(> .daily-entry)> .market-grid .mcard,
#view:has(> .daily-entry)> .concept-strip,
#view:has(> .daily-entry)> .home-stats .stat-card,
#view>.table-card,
#view>.tag-filter-bar + .table-card,
#view>.ann-page-card,
#view.year-view>.newstocks-wrap,
#view.year-view>.iporeview-wrap{
  background:var(--bw-surface-refined)!important;
  border-color:var(--bw-line-refined)!important;
  box-shadow:0 1px 0 rgba(26,55,63,.025)!important;
}

/* Shared header cadence across homepage, archives, tables and announcement
   detail.  The slightly cooler tint makes section boundaries visible while
   keeping the editorial palette quiet. */
#view>.announcements-entry .ann-head,
#view>.ipo-row .newstocks-head,
#view>.table-card .table-head,
#view>.tag-filter-bar + .table-card .table-head,
#view>.dup-layout .table-head,
#view>.ann-page-card .ann-page-note{
  background:var(--bw-surface-soft-refined)!important;
  border-bottom-color:var(--bw-line-refined)!important;
  min-height:52px!important;
  padding:12px 18px!important;
}
#view>.announcements-entry .ann-title,
#view>.ipo-row .newstocks-title,
#view>.table-card .table-head .title,
#view>.tag-filter-bar + .table-card .table-head .title,
#view>.dup-layout .table-head .title{
  font-size:14px!important;
  line-height:1.3!important;
  letter-spacing:.005em!important;
}

/* Homepage summaries: separate title/meta from the values with measured
   breathing room, then use the same inset treatment for every stock cell. */
#view:has(> .daily-entry)> .daily-entry{
  padding:22px 26px!important;
}
#view:has(> .daily-entry)> .daily-entry .dup-entry-stats .it b{
  color:#718087!important;
  letter-spacing:.01em!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stocks{
  gap:14px!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock{
  background:#FCFDFD!important;
  border-color:var(--bw-line-refined)!important;
  transition:background-color .14s ease,border-color .14s ease!important;
}
#view:has(> .daily-entry)> .d20-entry .d20-entry-stock:hover{
  background:var(--bw-hover-refined)!important;
  border-color:#B9CCCF!important;
}

/* Long reading surfaces use the same row rhythm and a restrained alternate
   tone, improving scanability without adding visual noise. */
#view>.announcements-entry .ann-item,
#view>.ann-page-card .ann-item,
#view>.ipo-row .ns-item,
#view>.ipo-row .ipo-item,
#view>.table-card tbody td,
#view>.tag-filter-bar + .table-card tbody td,
#view>.dup-layout .dup-table tbody td{
  border-bottom-color:var(--bw-line-soft-refined)!important;
}
#view>.announcements-entry .ann-item:nth-child(even),
#view>.ann-page-card .ann-item:nth-child(even),
#view>.table-card tbody tr:nth-child(even) td,
#view>.tag-filter-bar + .table-card tbody tr:nth-child(even) td,
#view>.dup-layout .dup-table tbody tr:nth-child(even) td{
  background:#FCFDFD!important;
}
#view>.announcements-entry .ann-item:hover,
#view>.ann-page-card .ann-item:hover,
#view>.table-card tbody tr:hover td,
#view>.tag-filter-bar + .table-card tbody tr:hover td,
#view>.dup-layout .dup-table tbody tr:hover td,
#view>.ipo-row .ns-item:hover,
#view>.ipo-row .ipo-item:hover{
  background:var(--bw-hover-refined)!important;
}

/* Market and total cards share the same inset geometry as the 20-day cells;
   only their existing A/H accent colors remain semantic. */
#view>.market-grid{gap:20px!important}
#view>.market-grid .mcard{
  min-height:86px!important;
  padding:17px 20px!important;
}
#view>.market-grid .mcard-code,
#view>.market-grid .mcard .go,
#view>.home-stats .stat-card{
  background:var(--bw-surface-soft-refined)!important;
  border-color:var(--bw-line-refined)!important;
}
#view>.market-grid .mcard .go{
  transition:background-color .14s ease,border-color .14s ease,color .14s ease!important;
}
#view>.market-grid .mcard:hover .go{
  background:#FFF!important;
  border-color:#B9CCCF!important;
}
#view>.concept-strip .concept-chip{
  background:var(--bw-surface-soft-refined)!important;
  border-color:var(--bw-line-soft-refined)!important;
  border-bottom-color:var(--bw-line-refined)!important;
}

/* Keep controls optically aligned with the same compact 3px geometry. */
#view .head-action,
#view .dup-export,
#view .ann-more,
#view .ann-portal,
#view .ipo-link,
#view .tf-clear,
#view .dup-tabs button,
#view .tag-chip,
#view .src-chip,
.search-box,
.search-dropdown,
.crumb .back{
  border-radius:3px!important;
}

@media(max-width:760px){
  main{padding-top:18px!important;padding-bottom:48px!important}
  #view:has(> .daily-entry){gap:16px!important}
  #view:has(> .daily-entry)> .daily-entry{padding:18px 18px!important}
  #view>.announcements-entry .ann-head,
  #view>.ipo-row .newstocks-head,
  #view>.table-card .table-head,
  #view>.tag-filter-bar + .table-card .table-head,
  #view>.dup-layout .table-head,
  #view>.ann-page-card .ann-page-note{min-height:46px!important;padding:10px 13px!important}
  #view>.market-grid{gap:12px!important}
}
@media(max-width:520px){
  main{padding-top:14px!important;padding-bottom:40px!important}
  #view:has(> .daily-entry)> .daily-entry{padding:16px 14px!important}
  #view:has(> .daily-entry)> .d20-entry .d20-entry-stocks{gap:9px!important}
}
