| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423 |
- <!DOCTYPE html>
- <html lang="zh-CN" data-theme="light">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <title>深空蓝 · 深浅主题规范</title>
- <style>
- /* ============================================================
- 共赢票据投资者 APP — 深空蓝设计系统 (Deep-Space Blue)
- 双主题:data-theme="light" | "dark",可作用于 :root 或任意容器
- ============================================================ */
- /* ---------- 浅色(默认) ---------- */
- :root,
- [data-theme="light"]{
- --canvas:#E7ECF4; /* 图纸底 */
- --canvas-2:#F4F7FB; /* 图纸卡片 */
- --canvas-line:#D3DCE8;
- --canvas-ink:#0F1B33;
- --canvas-mute:#647591;
- --app-bg:#F6F8FB; /* App 页面底 */
- --surface:#FFFFFF; /* 卡片/导航 */
- --surface-2:#F1F4F9; /* 次级面/表头 */
- --surface-3:#E8EDF5; /* 三级面 */
- --line:#E3E9F1;
- --line-2:#CFD9E7;
- --ink-1:#0F1B33;
- --ink-2:#4C5C78;
- --ink-3:#8A99B2;
- --ink-4:#AEBACD;
- --brand:#1B4FD8;
- --brand-2:#123CAE;
- --brand-weak:#E7EEFF;
- --brand-line:#B9CDFF;
- --on-brand:#FFFFFF;
- --accent:#B4700E; /* 琥珀 强调 */
- --accent-weak:#FDF2DE;
- --accent-line:#EBCD97;
- --rise:#E5484D; /* 涨 / 盈利 */
- --fall:#12A594; /* 跌 / 亏损 */
- --rise-weak:#FDECEC;
- --fall-weak:#E3F7F3;
- --warn:#C2410C;
- --warn-weak:#FEF0E6;
- --danger:#DC2626;
- --danger-weak:#FDEBEB;
- --ok:#0F7B4F;
- --ok-weak:#E4F5EC;
- --shadow-card:0 1px 2px rgba(15,27,51,.05),0 8px 24px rgba(15,27,51,.06);
- --shadow-phone:0 18px 44px rgba(15,27,51,.16),0 2px 6px rgba(15,27,51,.08);
- --shadow-pop:0 12px 40px rgba(15,27,51,.20);
- --scrim:rgba(11,18,34,.42);
- --bezel:#C7D2E2;
- --glow:none;
- }
- /* ---------- 深色 ---------- */
- [data-theme="dark"]{
- --canvas:#060A14;
- --canvas-2:#0E1526;
- --canvas-line:#1E2A44;
- --canvas-ink:#E9EFFA;
- --canvas-mute:#8797B4;
- --app-bg:#0B1020;
- --surface:#131B2E;
- --surface-2:#18223A;
- --surface-3:#1E2A45;
- --line:#232F4B;
- --line-2:#32436A;
- --ink-1:#EAF0FA;
- --ink-2:#A5B4D0;
- --ink-3:#7486A5;
- --ink-4:#54658A;
- --brand:#5B8CFF;
- --brand-2:#7FA6FF;
- --brand-weak:rgba(91,140,255,.16);
- --brand-line:rgba(91,140,255,.42);
- --on-brand:#05122E;
- --accent:#F0A93B;
- --accent-weak:rgba(240,169,59,.15);
- --accent-line:rgba(240,169,59,.42);
- --rise:#FF6B6E;
- --fall:#2FD4B9;
- --rise-weak:rgba(255,107,110,.14);
- --fall-weak:rgba(47,212,185,.14);
- --warn:#F59E42;
- --warn-weak:rgba(245,158,66,.14);
- --danger:#FF6B6E;
- --danger-weak:rgba(255,107,110,.14);
- --ok:#2FD4B9;
- --ok-weak:rgba(47,212,185,.14);
- --shadow-card:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.34);
- --shadow-phone:0 20px 50px rgba(0,0,0,.6),0 0 0 1px rgba(91,140,255,.10);
- --shadow-pop:0 14px 44px rgba(0,0,0,.62);
- --scrim:rgba(2,6,16,.62);
- --bezel:#26324C;
- --glow:0 0 0 1px rgba(91,140,255,.14);
- }
- /* ---------- 基础 ---------- */
- *{box-sizing:border-box;margin:0;padding:0}
- html{-webkit-text-size-adjust:100%}
- body{
- background:var(--canvas);color:var(--canvas-ink);
- font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",sans-serif;
- -webkit-font-smoothing:antialiased;
- padding:44px 46px 110px;
- transition:background .28s ease,color .28s ease;
- }
- .mono{font-family:"SF Mono",ui-monospace,"JetBrains Mono",Menlo,Consolas,monospace}
- .num{font-variant-numeric:tabular-nums;letter-spacing:.01em}
- /* ---------- 图纸头 ---------- */
- .sheet-head{
- display:flex;flex-wrap:wrap;gap:32px;align-items:flex-end;justify-content:space-between;
- padding-bottom:24px;margin-bottom:44px;border-bottom:1px solid var(--canvas-line);
- }
- .brandmark{display:flex;align-items:center;gap:14px}
- .brandmark .glyph{
- width:44px;height:44px;border-radius:12px;flex:none;position:relative;
- background:linear-gradient(145deg,var(--brand),var(--brand-2));
- box-shadow:0 6px 18px rgba(27,79,216,.28);
- }
- .brandmark .glyph::before{
- content:"";position:absolute;inset:12px 11px;border:1.6px solid rgba(255,255,255,.9);
- border-radius:2px;border-bottom-width:4px;
- }
- .brandmark .glyph::after{
- content:"";position:absolute;right:8px;top:8px;width:7px;height:7px;border-radius:50%;background:var(--accent);
- }
- .sheet-title{font-size:26px;font-weight:650;letter-spacing:.02em;line-height:1.2}
- .sheet-sub{margin-top:6px;font-size:12.5px;color:var(--canvas-mute);letter-spacing:.02em}
- .head-right{display:flex;align-items:center;gap:26px;flex-wrap:wrap}
- .meta{display:flex;gap:26px}
- .meta div{font-size:10.5px;color:var(--canvas-mute);letter-spacing:.1em;text-transform:uppercase}
- .meta b{display:block;margin-top:5px;font-size:12.5px;color:var(--canvas-ink);font-weight:550;letter-spacing:0;text-transform:none}
- /* 换肤开关 */
- .skin{
- display:flex;align-items:center;gap:0;padding:3px;border-radius:9px;
- background:var(--canvas-2);border:1px solid var(--canvas-line);
- }
- .skin button{
- border:0;background:transparent;cursor:pointer;font:inherit;
- padding:7px 13px;border-radius:6px;font-size:12px;color:var(--canvas-mute);
- display:flex;align-items:center;gap:6px;letter-spacing:.04em;transition:.2s;
- }
- .skin button.on{background:var(--brand);color:#fff;box-shadow:0 2px 8px rgba(27,79,216,.3)}
- [data-theme="dark"] .skin button.on{color:#04122F}
- .skin svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
- /* ---------- 章节 ---------- */
- .sec{margin-bottom:60px}
- .sec-head{display:flex;align-items:baseline;gap:14px;margin-bottom:24px}
- .sec-num{
- font-family:"SF Mono",ui-monospace,Menlo,monospace;font-size:11px;color:var(--brand);
- letter-spacing:.12em;padding:3px 8px;border:1px solid var(--brand-line);border-radius:5px;background:var(--brand-weak);
- }
- .sec-name{font-size:17px;font-weight:600;letter-spacing:.04em}
- .sec-rule{flex:1;height:1px;background:var(--canvas-line)}
- .sec-note{font-size:12px;color:var(--canvas-mute)}
- /* ---------- 说明卡 ---------- */
- .cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
- .card-x{background:var(--canvas-2);border:1px solid var(--canvas-line);border-radius:12px;padding:18px 20px}
- .card-x h4{font-size:11px;font-weight:600;letter-spacing:.14em;color:var(--canvas-mute);margin-bottom:14px;text-transform:uppercase}
- .kv{display:flex;flex-direction:column;gap:10px}
- .kv .r{display:flex;justify-content:space-between;gap:14px;font-size:12.5px;line-height:1.5}
- .kv .r span{color:var(--canvas-mute)}
- .kv .r b{font-weight:520;text-align:right;font-variant-numeric:tabular-nums}
- .bullets{display:flex;flex-direction:column;gap:9px}
- .bullets li{list-style:none;font-size:12.5px;line-height:1.65;color:var(--canvas-mute);padding-left:14px;position:relative}
- .bullets li::before{content:"";position:absolute;left:0;top:8px;width:6px;height:1.5px;background:var(--brand);border-radius:1px}
- .bullets b{color:var(--canvas-ink);font-weight:560}
- code{font-family:"SF Mono",ui-monospace,Menlo,monospace;font-size:11.5px;background:var(--surface-3);color:var(--canvas-ink);padding:1px 5px;border-radius:4px}
- /* ---------- 色板 ---------- */
- .pal{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px}
- .sw{border:1px solid var(--canvas-line);border-radius:10px;overflow:hidden;background:var(--canvas-2)}
- .sw .chip{height:56px;display:flex;align-items:flex-end;justify-content:flex-end;padding:7px 9px}
- .sw .chip i{font-style:normal;font-size:9.5px;color:rgba(255,255,255,.85);font-family:"SF Mono",monospace}
- .sw .lb{padding:9px 11px}
- .sw .lb b{display:block;font-size:12px;font-weight:560}
- .sw .lb em{font-style:normal;display:block;font-size:10.5px;color:var(--canvas-mute);margin-top:3px;font-family:"SF Mono",monospace}
- /* ---------- 表 ---------- */
- table.spec{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--canvas-2);border:1px solid var(--canvas-line);border-radius:12px;overflow:hidden}
- table.spec th{
- background:var(--surface-2);text-align:left;padding:11px 14px;font-size:10.5px;font-weight:600;
- letter-spacing:.1em;color:var(--canvas-mute);text-transform:uppercase;border-bottom:1px solid var(--canvas-line);
- }
- table.spec td{padding:11px 14px;border-bottom:1px solid var(--canvas-line);color:var(--canvas-mute);line-height:1.6;vertical-align:top}
- table.spec tr:last-child td{border-bottom:0}
- table.spec td b{color:var(--canvas-ink);font-weight:550}
- table.spec td.m{font-family:"SF Mono",ui-monospace,Menlo,monospace;color:var(--canvas-ink);font-size:11.5px}
- /* ---------- 画板 ---------- */
- .frames{display:grid;grid-template-columns:repeat(auto-fit,minmax(390px,390px));gap:52px 36px;justify-content:start}
- .frame{width:390px}
- .frame.w2{grid-column:span 2}
- .phone{
- width:390px;height:844px;border-radius:42px;overflow:hidden;position:relative;
- background:var(--app-bg);border:1px solid var(--bezel);box-shadow:var(--shadow-phone);
- font-size:15px;color:var(--ink-1);transition:background .28s ease,border-color .28s ease;
- isolation:isolate;
- }
- .cap{margin-top:18px;padding-left:13px;border-left:2px solid var(--brand)}
- .cap-num{font-family:"SF Mono",ui-monospace,Menlo,monospace;font-size:10.5px;color:var(--brand);letter-spacing:.12em}
- .cap-title{font-size:14.5px;font-weight:600;margin:5px 0 8px;letter-spacing:.02em}
- .cap ul{list-style:none;display:flex;flex-direction:column;gap:6px}
- .cap li{font-size:12px;line-height:1.62;color:var(--canvas-mute);padding-left:12px;position:relative}
- .cap li::before{content:"";position:absolute;left:0;top:8px;width:5px;height:1px;background:var(--canvas-line)}
- .cap li b{color:var(--canvas-ink);font-weight:550}
- .cap code{font-size:11px;background:var(--surface-3)}
- /* ============================================================
- App 内部组件
- ============================================================ */
- .screen{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;background:var(--app-bg)}
- .statusbar{height:52px;flex:none;display:flex;align-items:flex-end;justify-content:space-between;padding:0 24px 6px;font-size:14.5px;font-weight:600;color:var(--ink-1)}
- .statusbar .ic{display:flex;gap:6px;align-items:center;opacity:.9}
- .statusbar svg{height:12px;fill:currentColor}
- .homebar{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);width:132px;height:5px;border-radius:3px;background:var(--ink-1);opacity:.26;z-index:60}
- /* 顶栏 */
- .navbar{height:46px;flex:none;display:flex;align-items:center;padding:0 16px;position:relative;background:var(--app-bg)}
- .navbar h2{position:absolute;left:0;right:0;text-align:center;font-size:16.5px;font-weight:600;letter-spacing:.03em}
- .navbar .bk,.navbar .rt{position:relative;z-index:2;color:var(--ink-2);display:flex;align-items:center;gap:5px;font-size:13px}
- .navbar .rt{margin-left:auto;color:var(--brand)}
- .icn{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
- .icn.sm{width:14px;height:14px}
- .icn.lg{width:22px;height:22px}
- .appbar{padding:4px 20px 0;flex:none}
- .appbar h1{font-size:22px;font-weight:650;letter-spacing:.02em;display:flex;align-items:center;gap:9px}
- .appbar h1 .tiny{font-size:11px;font-weight:500;color:var(--ink-3);letter-spacing:.1em;padding:3px 7px;border:1px solid var(--line-2);border-radius:5px}
- /* 顶栏铃铛 · 未读红点 */
- .bellwrap{position:relative;display:inline-flex;flex:none}
- .bellwrap .rd{position:absolute;top:-1px;right:0;width:8px;height:8px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--app-bg);font-style:normal}
- /* 两行顶栏(标题 + 分段控件)的标题行:标题左、铃铛右 */
- .apphd{display:flex;align-items:center;justify-content:space-between}
- /* 分段控件 */
- .seg{display:flex;padding:3px;background:var(--surface-2);border-radius:9px;gap:2px}
- .seg span{flex:1;text-align:center;padding:7px 0;font-size:13.5px;color:var(--ink-3);border-radius:7px;transition:.2s}
- .seg span.on{background:var(--surface);color:var(--ink-1);font-weight:600;box-shadow:var(--shadow-card)}
- [data-theme="dark"] .seg span.on{background:var(--surface-3);color:var(--brand)}
- /* 下划线 tab */
- .tabs{display:flex;gap:24px;padding:0 20px;border-bottom:1px solid var(--line);flex:none;background:var(--app-bg)}
- .tabs span{padding:12px 1px 11px;font-size:14.5px;color:var(--ink-3);position:relative;white-space:nowrap}
- .tabs span.on{color:var(--ink-1);font-weight:600}
- .tabs span.on::after{content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:-1px;width:22px;height:2.5px;border-radius:2px;background:var(--brand)}
- .tabs span .dot{position:absolute;top:9px;right:-7px;width:6px;height:6px;padding:0;font-size:0;border-radius:50%;background:var(--danger)}
- .tabs span em{font-style:normal;color:var(--danger)}
- /* 底部 tabbar */
- .tabbar{height:72px;flex:none;display:flex;background:var(--surface);border-top:1px solid var(--line);padding-bottom:10px}
- .tb{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:10.5px;color:var(--ink-3)}
- .tb.on{color:var(--brand)}
- .tb .icn{width:21px;height:21px;stroke-width:1.6}
- /* 滚动体 */
- .body{flex:1;overflow:hidden;position:relative}
- .pad{padding:0 16px}
- /* 卡片 */
- .card{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card);overflow:hidden}
- [data-theme="dark"] .card{border:1px solid var(--line)}
- .card + .card:not(.pos):not(.qc){margin-top:11px}
- .card-hd{display:flex;align-items:center;justify-content:space-between;padding:13px 15px 0}
- .card-hd h3{font-size:14.5px;font-weight:600}
- .card-hd .more{font-size:12px;color:var(--ink-3);display:flex;align-items:center;gap:2px}
- /* 资金看板 */
- .hero{
- margin:10px 16px 0;border-radius:16px;padding:18px 18px 16px;position:relative;overflow:hidden;
- background:linear-gradient(150deg,#1B4FD8 0%,#123CAE 58%,#0C2C86 100%);color:#fff;
- box-shadow:0 12px 30px rgba(18,60,174,.30);
- }
- [data-theme="dark"] .hero{background:linear-gradient(150deg,#1A2C5C 0%,#132347 55%,#101B39 100%);box-shadow:0 12px 30px rgba(0,0,0,.5);border:1px solid rgba(91,140,255,.24)}
- .hero::after{content:"";position:absolute;right:-40px;top:-52px;width:180px;height:180px;border-radius:50%;background:rgba(255,255,255,.07)}
- [data-theme="dark"] .hero::after{background:rgba(91,140,255,.10)}
- .hero .lb{display:flex;align-items:center;gap:6px;font-size:12.5px;color:rgba(255,255,255,.76)}
- .hero .lb .cur{display:flex;align-items:center;gap:3px;padding:2px 6px;border-radius:5px;background:rgba(255,255,255,.14);font-size:11.5px}
- .hero .amt{margin-top:7px;font-size:33px;font-weight:600;letter-spacing:.01em;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:8px}
- .hero .amt .eye{opacity:.6}
- .hero .arrow{position:absolute;right:18px;top:20px;opacity:.75}
- .hero .grid3{display:flex;margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.16)}
- .hero .grid3 div{flex:1}
- .hero .grid3 span{display:block;font-size:11px;color:rgba(255,255,255,.7)}
- .hero .grid3 b{display:block;margin-top:5px;font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums}
- /* 币种表 */
- .fxtab{width:100%;border-collapse:collapse;font-size:12.5px}
- .fxtab th{padding:9px 15px;font-size:10.5px;font-weight:500;color:var(--ink-3);letter-spacing:.06em;text-align:right;background:var(--surface-2)}
- .fxtab th:first-child{text-align:left}
- .fxtab td{padding:10px 15px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-1);border-top:1px solid var(--line)}
- .fxtab td:first-child{text-align:left;font-family:"SF Mono",monospace;font-size:12px;color:var(--ink-2)}
- /* 快捷入口 */
- .quick{display:flex;gap:11px;margin:11px 16px 0}
- .qk{flex:1;background:var(--surface);border-radius:13px;padding:13px 12px;display:flex;align-items:center;gap:10px;box-shadow:var(--shadow-card);position:relative}
- [data-theme="dark"] .qk{border:1px solid var(--line)}
- .qk .ib{width:32px;height:32px;border-radius:9px;background:var(--brand-weak);color:var(--brand);display:flex;align-items:center;justify-content:center;flex:none}
- .qk b{font-size:13.5px;font-weight:550}
- .qk .rd{position:absolute;top:9px;right:9px;width:7px;height:7px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--surface)}
- /* 列表行 */
- .row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 15px;border-bottom:1px solid var(--line);font-size:14.5px}
- .row:last-child{border-bottom:0}
- .row .k{color:var(--ink-2);display:flex;align-items:center;gap:7px;flex:none}
- .row .k .icn{color:var(--ink-3)}
- .row .v{color:var(--ink-1);font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:6px;text-align:right}
- .row .v.ph{color:var(--ink-4)}
- .row .v.m{font-family:"SF Mono",monospace;font-size:13.5px}
- .hint{width:13px;height:13px;border-radius:50%;border:1px solid var(--ink-4);color:var(--ink-3);font-size:8.5px;display:inline-flex;align-items:center;justify-content:center;font-style:normal;flex:none}
- /* 标签 / 徽标 */
- .tag{font-size:10.5px;padding:2px 6px;border-radius:4px;letter-spacing:.02em;font-weight:520;display:inline-flex;align-items:center;gap:3px;flex:none}
- .t-brand{background:var(--brand-weak);color:var(--brand)}
- .t-accent{background:var(--accent-weak);color:var(--accent)}
- .t-rise{background:var(--rise-weak);color:var(--rise)}
- .t-fall{background:var(--fall-weak);color:var(--fall)}
- .t-ok{background:var(--ok-weak);color:var(--ok)}
- .t-warn{background:var(--warn-weak);color:var(--warn)}
- .t-mute{background:var(--surface-3);color:var(--ink-3)}
- .t-solid{background:var(--brand);color:var(--on-brand)}
- .t-danger{background:var(--danger);color:#fff}
- .cmark{width:14px;height:14px;border-radius:50%;background:var(--brand);color:var(--on-brand);font-size:9px;display:inline-flex;align-items:center;justify-content:center;font-weight:600;flex:none;font-style:normal}
- .corner{position:absolute;left:0;top:0;padding:2px 9px 2px 7px;font-size:9.5px;color:#fff;background:var(--danger);border-radius:12px 0 12px 0;letter-spacing:.04em;z-index:3}
- .corner.due{background:var(--accent)}
- .corner.pend{background:var(--ink-3)}
- /* 状态点 */
- .st{display:inline-flex;align-items:center;gap:5px;font-size:12.5px}
- .st i{width:6px;height:6px;border-radius:50%;flex:none;background:currentColor}
- .st.wait{color:var(--ink-3)}
- .st.live{color:var(--accent)}
- .st.live i{background:transparent;border:1.6px solid currentColor}
- .st.done{color:var(--ok)}
- .st.rej{color:var(--danger)}
- .st.exp{color:var(--ink-4)}
- /* 按钮 */
- .btn{
- height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:6px;
- background:var(--brand);color:var(--on-brand);font-size:15.5px;font-weight:600;letter-spacing:.06em;
- box-shadow:0 6px 16px rgba(27,79,216,.24);
- }
- [data-theme="dark"] .btn{box-shadow:0 6px 18px rgba(91,140,255,.20)}
- .btn.sm{height:38px;font-size:14px;border-radius:10px;box-shadow:none}
- .btn.off{background:var(--surface-3);color:var(--ink-4);box-shadow:none}
- .btn.ghost{background:transparent;border:1px solid var(--line-2);color:var(--ink-2);box-shadow:none;font-weight:500}
- .btn.danger{background:var(--danger);box-shadow:none;color:#fff}
- .btn.wide{width:100%}
- .iconbtn{width:46px;height:46px;border-radius:12px;border:1px solid var(--line-2);display:flex;align-items:center;justify-content:center;color:var(--ink-2);flex:none;background:var(--surface)}
- /* 输入 */
- .field{background:var(--surface);border:1px solid var(--line-2);border-radius:11px;height:44px;display:flex;align-items:center;gap:9px;padding:0 13px;font-size:14.5px;color:var(--ink-1)}
- .field.focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-weak)}
- .field.err{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-weak)}
- .field .ph{color:var(--ink-4)}
- .field .icn{color:var(--ink-3)}
- .field .unit{margin-left:auto;color:var(--ink-2);font-size:13.5px}
- .lbl{font-size:11.5px;color:var(--ink-3);letter-spacing:.06em;margin-bottom:7px;display:block}
- .errtip{font-size:11.5px;color:var(--danger);margin-top:6px;display:flex;align-items:center;gap:4px}
- /* chips */
- .chips{display:flex;gap:7px;flex-wrap:wrap}
- .chip{height:32px;padding:0 12px;border-radius:9px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-size:13px;display:flex;align-items:center;font-variant-numeric:tabular-nums}
- .chip.on{background:var(--brand-weak);border-color:var(--brand-line);color:var(--brand);font-weight:560}
- .chip.dash{border-style:dashed}
- /* 单选 / 复选 */
- .rad{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--ink-2)}
- .rad i{width:15px;height:15px;border-radius:50%;border:1.4px solid var(--line-2);position:relative;flex:none}
- .rad.on{color:var(--ink-1)}
- .rad.on i{border-color:var(--brand)}
- .rad.on i::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--brand)}
- .cb{width:16px;height:16px;border-radius:4.5px;border:1.4px solid var(--line-2);flex:none;display:flex;align-items:center;justify-content:center;color:transparent}
- .cb.on{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
- .cb .icn{width:11px;height:11px;stroke-width:2.6}
- /* 步进器 */
- .stepper{height:38px;border:1px solid var(--line-2);border-radius:10px;display:flex;align-items:center;overflow:hidden;background:var(--surface)}
- .stepper b{width:34px;text-align:center;font-weight:400;font-size:17px;color:var(--ink-3)}
- .stepper i{flex:1;text-align:center;font-style:normal;font-variant-numeric:tabular-nums;font-size:15px;border-left:1px solid var(--line);border-right:1px solid var(--line);line-height:36px}
- .stepper.err{border-color:var(--danger)}
- .stepper.err i{color:var(--danger)}
- /* 搜索 */
- .search{height:38px;border-radius:10px;background:var(--surface-2);display:flex;align-items:center;gap:8px;padding:0 12px;font-size:14px;color:var(--ink-4)}
- .search .icn{color:var(--ink-3)}
- .search b{color:var(--ink-1);font-weight:500}
- .sug{background:var(--surface);border-radius:12px;box-shadow:var(--shadow-pop);overflow:hidden;margin-top:6px}
- .sug div{padding:11px 13px;font-size:14px;border-bottom:1px solid var(--line);display:flex;gap:8px}
- .sug div:last-child{border-bottom:0}
- .sug em{font-style:normal;color:var(--brand)}
- .sug span{font-family:"SF Mono",monospace;font-size:12.5px;color:var(--ink-3)}
- /* 弹窗 */
- .scrim{position:absolute;inset:0;background:var(--scrim);z-index:40;display:flex;align-items:center;justify-content:center;padding:0 30px}
- .scrim.bottom{align-items:flex-end;padding:0}
- .dlg{width:100%;background:var(--surface);border-radius:16px;overflow:hidden;box-shadow:var(--shadow-pop)}
- .dlg.sheet{border-radius:18px 18px 0 0;padding-bottom:22px}
- .dlg-hd{padding:18px 18px 0;text-align:center}
- .dlg-hd h3{font-size:16.5px;font-weight:600}
- .dlg-bd{padding:14px 18px 4px;font-size:14px;color:var(--ink-2);line-height:1.65}
- .dlg-ft{display:flex;border-top:1px solid var(--line);margin-top:16px}
- .dlg-ft span{flex:1;text-align:center;padding:14px 0;font-size:15.5px;color:var(--brand);font-weight:550}
- .dlg-ft span:first-child{color:var(--ink-2);border-right:1px solid var(--line)}
- .dlg-ft.single span{color:var(--brand)}
- .dlg-btns{display:flex;gap:11px;padding:16px 18px 0}
- .dlg-btns .btn{flex:1}
- /* toast */
- .toast{
- position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);z-index:50;
- background:rgba(15,25,45,.90);color:#fff;padding:12px 20px;border-radius:11px;font-size:14px;max-width:290px;text-align:center;line-height:1.55;
- }
- [data-theme="dark"] .toast{background:rgba(230,238,250,.94);color:#0B1020}
- /* 提示条 */
- .notice{display:flex;gap:8px;padding:10px 12px;border-radius:10px;font-size:12.5px;line-height:1.6}
- .notice.warn{background:var(--warn-weak);color:var(--warn)}
- .notice.info{background:var(--brand-weak);color:var(--brand)}
- .notice.danger{background:var(--danger-weak);color:var(--danger)}
- .notice .icn{flex:none;margin-top:1px}
- /* 空态 */
- .empty{padding:44px 0;text-align:center;color:var(--ink-4);font-size:13.5px}
- .empty .icn{width:34px;height:34px;stroke-width:1.2;margin-bottom:10px;color:var(--ink-4)}
- /* 分组标题 */
- .gtitle{padding:16px 16px 8px;font-size:12px;color:var(--ink-3);letter-spacing:.06em}
- /* 骨架/遮罩说明用 */
- .dim{opacity:.45}
- /* ============================================================
- 业务组件
- ============================================================ */
- /* 筛选栏 */
- .filterbar{display:flex;gap:8px;padding:10px 16px;background:var(--app-bg);flex:none;align-items:center}
- .fb{height:34px;padding:0 11px;border-radius:9px;background:var(--surface-2);color:var(--ink-2);font-size:13px;display:flex;align-items:center;gap:5px;white-space:nowrap}
- .fb.on{background:var(--brand-weak);color:var(--brand);font-weight:550}
- .fb .icn{width:13px;height:13px}
- .fb.flex{flex:1;min-width:0}
- /* 筛选栏 v2 —— 搜索行 + 条件行(时间在左,筛选入口在右) */
- .fsearch{margin:10px 16px 0;height:40px;border-radius:12px;background:var(--surface-2);display:flex;align-items:center;gap:9px;padding:0 13px;font-size:14px;color:var(--ink-4);flex:none}
- .fsearch .icn{width:16px;height:16px;color:var(--ink-3);flex:none}
- .fsearch b{color:var(--ink-1);font-weight:500}
- .fsearch .clr{margin-left:auto;color:var(--ink-4)}
- .fcond{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;flex:none;background:var(--app-bg)}
- .fpill{height:34px;padding:0 14px;border-radius:17px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-size:13.5px;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
- .fpill .icn{width:13px;height:13px;color:var(--ink-3)}
- .fpill.on{background:var(--brand-weak);border-color:var(--brand-line);color:var(--brand);font-weight:560}
- .fpill.on .icn{color:var(--brand)}
- .fmore{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--ink-2);position:relative;padding-right:2px}
- .fmore .icn{width:15px;height:15px;color:var(--ink-3)}
- .fmore.on{color:var(--brand);font-weight:560}
- .fmore.on .icn{color:var(--brand)}
- .fmore.on::after{content:"";position:absolute;right:-5px;top:-3px;width:6px;height:6px;border-radius:50%;background:var(--danger)}
- /* 筛选面板 —— 底部弹层 */
- .fsheet{padding-bottom:20px}
- .fsheet-hd{display:flex;align-items:center;justify-content:space-between;padding:20px 20px 2px}
- .fsheet-hd b{font-size:17px;font-weight:600;letter-spacing:.02em}
- .fsheet-hd .icn{width:19px;height:19px;color:var(--ink-3)}
- .fsec{padding:16px 20px 0}
- .fsec .lbl{margin-bottom:10px}
- .optgrid{display:grid;grid-template-columns:1fr 1fr;gap:11px}
- .opt{height:42px;border-radius:21px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-size:14px;display:flex;align-items:center;justify-content:center;white-space:nowrap;padding:0 10px}
- .opt.on{background:var(--brand-weak);border-color:var(--brand);color:var(--brand);font-weight:600}
- .opt.dis{background:var(--surface-2);border-color:var(--line);color:var(--ink-4)}
- .fline{height:1px;background:var(--line);margin:18px 20px 0}
- /* 自定义区间 · 日期段 + 滚轮 */
- .dtrow{display:flex;gap:11px}
- .dt{flex:1;min-width:0;background:var(--surface);border:1px solid var(--line-2);border-radius:12px;padding:8px 12px 10px}
- .dt em{display:block;font-style:normal;font-size:11px;color:var(--ink-3);letter-spacing:.04em}
- .dt b{display:block;margin-top:3px;font-size:16px;font-weight:600;color:var(--ink-1);font-variant-numeric:tabular-nums;font-family:"SF Mono",ui-monospace,Menlo,monospace}
- .dt.act{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-weak)}
- .dt.act em{color:var(--brand)}
- .dt.err{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-weak)}
- .wheel{position:relative;margin:14px 20px 0;padding:4px 8px;display:grid;grid-template-columns:repeat(3,1fr);text-align:center}
- .wheel .band{position:absolute;left:6px;right:6px;top:50%;height:40px;transform:translateY(-50%);background:var(--surface-2);border-radius:10px}
- .wcol{position:relative;z-index:1;display:flex;flex-direction:column}
- .wcol span{height:40px;line-height:40px;font-size:14px;color:var(--ink-2);font-variant-numeric:tabular-nums}
- .wcol span.far{color:var(--ink-4);opacity:.5}
- .wcol span.now{color:var(--ink-1);font-size:16px;font-weight:600}
- .fsheet-ft{display:flex;gap:12px;padding:20px 20px 0}
- .fsheet-ft .btn{flex:1.18}
- .fsheet-ft .btn.ghost{flex:.82;background:var(--surface-2);border:0;color:var(--ink-2);font-weight:600}
- /* 持仓卡片 */
- .pos{position:relative;margin:0 16px 11px;padding:13px 0 0}
- .pos-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:0 14px}
- .pos-name{font-size:15.5px;font-weight:600;display:flex;align-items:center;gap:6px}
- .pos-code{font-size:11px;color:var(--ink-3);margin-top:4px;letter-spacing:.02em;font-family:"SF Mono",monospace}
- .pos-val{text-align:right;flex:none}
- .pos-val b{display:block;font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}
- .pos-val span{display:block;font-size:10.5px;color:var(--ink-3);margin-top:3px}
- .pos-pl{display:flex;justify-content:flex-end;gap:9px;padding:6px 14px 0;font-size:12.5px;font-variant-numeric:tabular-nums}
- .up{color:var(--rise)} .down{color:var(--fall)} .flat{color:var(--ink-3)}
- .pos-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 6px;padding:12px 14px 13px;margin-top:10px;border-top:1px solid var(--line)}
- .pos-grid div span{display:block;font-size:10px;color:var(--ink-3);letter-spacing:.02em}
- .pos-grid div b{display:block;margin-top:4px;font-size:12.5px;font-weight:550;font-variant-numeric:tabular-nums;white-space:nowrap}
- .pos-grid div b em{font-style:normal;color:var(--ink-3);font-weight:400;font-size:11px}
- .pos-ops{display:flex;border-top:1px solid var(--line);background:var(--surface-2)}
- .pos-ops span{flex:1;text-align:center;padding:11px 0;font-size:13.5px;color:var(--ink-2);border-right:1px solid var(--line)}
- .pos-ops span:last-child{border-right:0}
- .pos-ops span.pri{color:var(--brand);font-weight:550}
- .pos-ops span.hot{color:var(--danger);font-weight:550}
- .pos-ops span.off{color:var(--ink-4)}
- /* 冻结列表格(数据模式) */
- .gridtab{display:flex;font-size:12px;overflow:hidden}
- .gt-fix{flex:none;width:118px;border-right:1px solid var(--line-2);background:var(--surface);position:relative;z-index:2;box-shadow:4px 0 10px rgba(15,27,51,.06)}
- [data-theme="dark"] .gt-fix{box-shadow:4px 0 10px rgba(0,0,0,.35)}
- .gt-scroll{flex:1;overflow:hidden;background:var(--surface)}
- .gt-h{height:36px;display:flex;align-items:center;background:var(--surface-2);color:var(--ink-3);font-size:10.5px;letter-spacing:.02em;padding:0 10px;border-bottom:1px solid var(--line);white-space:nowrap;gap:14px}
- .gt-r{height:52px;display:flex;align-items:center;padding:0 10px;border-bottom:1px solid var(--line);white-space:nowrap;gap:14px;font-variant-numeric:tabular-nums}
- .gt-fix .gt-r{flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;position:relative;padding-left:14px}
- .gt-fix .gt-h{padding-left:14px}
- /* 表格形式的「新报价」角标:斜切丝带,带 NEW 文案;冻结列左内边距统一 14px 给丝带让位,行内文字不被压 */
- .gt-new{position:absolute;left:0;top:0;width:34px;height:34px;overflow:hidden;z-index:3;pointer-events:none}
- .gt-new::before{content:"NEW";position:absolute;left:-17px;top:1px;width:48px;padding:1px 0;transform:rotate(-45deg);background:var(--danger);color:#fff;font-size:7.5px;font-weight:600;font-style:normal;letter-spacing:.04em;text-align:center;line-height:1.35}
- .gt-r i{font-style:normal;display:inline-block;text-align:right}
- .gt-h i{display:inline-block;text-align:right}
- /* 询价 / 订单卡片 */
- .qc{margin:0 16px 10px;padding:13px 14px;position:relative}
- .qc-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
- .qc-name{font-size:15px;font-weight:600;display:flex;align-items:center;gap:6px}
- .qc-sub{font-size:11px;color:var(--ink-3);margin-top:4px;font-family:"SF Mono",monospace}
- .qc-r{text-align:right;flex:none}
- .qc-time{font-size:10.5px;color:var(--ink-3);margin-top:5px;font-family:"SF Mono",monospace}
- .qc-meta{display:flex;gap:16px;margin-top:10px;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
- .qc-meta em{font-style:normal;color:var(--ink-3);font-size:11px;margin-right:4px}
- .qc-open{margin-top:12px;border-top:1px dashed var(--line-2);padding-top:10px}
- .qt{display:grid;grid-template-columns:1.1fr .8fr .8fr .9fr;font-size:12px;font-variant-numeric:tabular-nums;align-items:center}
- .qt.h{color:var(--ink-3);font-size:10.5px;padding-bottom:7px}
- .qt.r{padding:9px 8px;margin:0 -8px;border-radius:8px}
- .qt.r:hover,.qt.r.hl{background:var(--brand-weak)}
- .qt .p{color:var(--brand);font-weight:600}
- .qt .t{color:var(--ink-3);font-size:10.5px;text-align:right}
- /* 「新」标记分工:卡片角标(丝带)表明本单有新报价,行内红点指出具体是哪一条 */
- .qt span:first-child{position:relative;padding-left:12px}
- .qt .newdot{position:absolute;left:0;top:50%;margin:0;transform:translateY(-50%);vertical-align:0}
- .newdot{width:6px;height:6px;border-radius:50%;background:var(--danger);display:inline-block;margin-right:5px;vertical-align:1px}
- /* 时间线(流水) */
- .tl{padding:0 16px}
- .tl-i{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
- .tl-i .dot{width:9px;height:9px;border-radius:50%;background:var(--brand);flex:none;margin-top:5px;box-shadow:0 0 0 3px var(--brand-weak)}
- .tl-i .dot.out{background:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}
- .tl-i .c{flex:1}
- .tl-i .c b{font-size:14.5px;font-weight:550}
- .tl-i .c span{display:block;font-size:11px;color:var(--ink-3);margin-top:4px;font-family:"SF Mono",monospace}
- .tl-i .amt{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
- /* 设置项列表 */
- .menu{background:var(--surface);border-radius:14px;overflow:hidden;margin:0 16px 12px;box-shadow:var(--shadow-card)}
- [data-theme="dark"] .menu{border:1px solid var(--line)}
- .mi{display:flex;align-items:center;gap:12px;padding:15px 15px;border-bottom:1px solid var(--line);font-size:15px}
- .mi:last-child{border-bottom:0}
- .mi .ib{width:30px;height:30px;border-radius:9px;background:var(--brand-weak);color:var(--brand);display:flex;align-items:center;justify-content:center;flex:none}
- .mi .ib.am{background:var(--accent-weak);color:var(--accent)}
- .mi .tx{flex:1}
- .mi .tx em{font-style:normal;display:block;font-size:11.5px;color:var(--ink-3);margin-top:3px}
- .mi .rv{color:var(--ink-3);font-size:13.5px;display:flex;align-items:center;gap:4px}
- /* 开关 */
- .sw2{width:44px;height:26px;border-radius:14px;background:var(--line-2);position:relative;flex:none;transition:.2s}
- .sw2::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:.2s}
- .sw2.on{background:var(--brand)}
- .sw2.on::after{left:21px}
- /* 数据表(App 内) */
- .dt{width:100%;border-collapse:collapse;font-size:12.5px}
- .dt th{background:var(--surface-2);color:var(--ink-3);font-size:10.5px;font-weight:500;padding:9px 10px;text-align:right;letter-spacing:.02em}
- .dt th:first-child{text-align:left}
- .dt td{padding:10px;text-align:right;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}
- .dt td:first-child{text-align:left;color:var(--ink-2)}
- /* 键盘 */
- .kbd{background:var(--surface-2);padding:8px 6px 26px;display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
- .kbd span{height:44px;border-radius:8px;background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:21px;font-weight:500;box-shadow:0 1px 2px rgba(15,27,51,.10)}
- [data-theme="dark"] .kbd span{box-shadow:none;border:1px solid var(--line)}
- .kbd span.fn{background:transparent;box-shadow:none;font-size:15px;color:var(--ink-2)}
- .kbd span.ok{background:var(--brand);color:var(--on-brand);font-size:16px}
- /* 对照页专用 */
- .pair{display:grid;grid-template-columns:390px 390px;gap:36px;justify-content:start}
- .pair-lb{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--canvas-mute);margin-bottom:12px;letter-spacing:.08em}
- .pair-lb i{width:12px;height:12px;border-radius:3px;border:1px solid var(--canvas-line);flex:none}
- /* 角标占位:有角标的卡片顶部让出空间,避免压住标的名 */
- .pos:has(.corner) .pos-hd{padding-top:15px}
- .qc:has(.corner){padding-top:26px}
- /* ==== v1.3 · 00 专用 BEGIN ==== */
- /* 整页对照引用 04 / 02 的专用样式(P1 / P2 与 04-A1、02-Q1 同一份 DOM) */
- /* 钱包表:DataTable 小表版式(表头 36 / 行 38、单元格 12、列距 14、左右 10,币种列冻结按内容宽) */
- .wtab .wr{display:flex;align-items:center;gap:14px;padding:0 10px;height:38px;border-bottom:1px solid var(--line);font-size:12px;white-space:nowrap}
- .wtab .wr.h{height:36px;background:var(--surface-2);font-size:10.5px;letter-spacing:.02em;color:var(--ink-3)}
- .wtab .wr>*{flex:1;text-align:right;font-family:var(--font-num);font-variant-numeric:tabular-nums}
- .wtab .wr.h>*{font-family:inherit}
- .wtab .wr>*:first-child{flex:none;width:22px;text-align:left;font-family:var(--font-mono);color:var(--ink-2)}
- .wtab .wr.h>*:first-child{font-family:inherit;color:var(--ink-3)}
- .wtab .wr:last-child{border-bottom:0}
- .wfoot{display:flex;justify-content:flex-end;padding:9px 15px;border-top:1px solid var(--line)}
- .wfoot span{font-size:12.5px;color:var(--brand);display:flex;align-items:center;gap:3px}
- .warnbar{margin:11px 16px 0}
- /* 持仓区标题行 */
- .card-hd h3 .cnt{color:var(--ink-3);font-weight:400;font-size:12.5px;margin-left:6px}
- .card-hd .more .icn{width:13px;height:13px}
- /* 增额试算表 */
- .simt{font-size:12px;color:var(--ink-3);margin-bottom:9px}
- .simtab{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--surface)}
- .simtab div{display:flex;align-items:center;padding:10px}
- .simtab div+div{border-top:1px solid var(--line)}
- .simtab div span{flex:1;text-align:right;font-size:12.5px;font-family:var(--font-num);font-variant-numeric:tabular-nums}
- .simtab div span:first-child{text-align:left;color:var(--ink-2);font-family:inherit}
- .simtab .h{background:var(--surface-2);padding:8px 10px}
- .simtab .h span{font-size:10.5px;font-weight:500;color:var(--ink-3);font-family:inherit}
- .simtab .good{color:var(--ok);font-weight:600}
- .simtab .na{color:var(--ink-4)}
- /* 询价表单面板(代码 InquiryFormPanel):面色块、底线分隔;检索下拉绝对定位盖在下方表单上 */
- .ipanel{padding:13px 16px 14px;background:var(--surface);border-bottom:1px solid var(--line);position:relative;z-index:5}
- .ipanel .search{height:38px}
- .ipanel .search.focus{background:var(--surface);box-shadow:0 0 0 1px var(--brand),0 0 0 4px var(--brand-weak)}
- .ipanel .search b{font-weight:500;color:var(--ink-1)}
- .ipanel .search .clr{margin-left:auto;color:var(--ink-3);width:14px;height:14px}
- .frm2{display:flex;gap:10px;margin-top:12px}
- .frm2>div{flex:1}
- .rofield{height:38px;border-radius:11px;background:var(--surface-2);display:flex;align-items:center;padding:0 13px;font-size:13.5px}
- .rofield b{font-family:var(--font-mono);font-weight:600;color:var(--ink-1)}
- .rofield span{margin-left:auto;font-size:10.5px;color:var(--ink-4)}
- .rofield .icn{margin-left:auto;width:14px;height:14px;color:var(--ink-3)}
- .frm-btns{display:flex;gap:10px;margin-top:14px}
- .frm-btns .btn{flex:1}
- .iconbtn .icn{color:var(--ink-2)}
- /* 检索下拉(代码 SearchField):在搜 = 转圈 +「加载中…」;续查 = 旧行 30% + 转圈浮层;无结果 = 一行提示;失败静默不出 */
- .ipanel .sug{position:absolute;left:16px;right:16px;top:51px;margin-top:6px;z-index:10;border-radius:11px}
- .ipanel .sug .r{display:flex;align-items:center;gap:8px;padding:11px 13px;border-bottom:1px solid var(--line);font-size:14px}
- .ipanel .sug .r:last-child{border-bottom:0}
- .ipanel .sug .r .cd{flex:1;font-family:var(--font-mono);font-size:12.5px;color:var(--ink-3)}
- .ipanel .sug .r em{font-style:normal;color:var(--brand)}
- .ipanel .sug .ld,.ipanel .sug .em{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 0;font-size:12.5px;letter-spacing:.04em;color:var(--ink-3)}
- .ipanel .sug .em{font-size:13px;letter-spacing:0}
- .ipanel .sug div.rows{display:block;padding:0;border:0}
- .ipanel .sug div.ov{padding:0;border:0}
- .ipanel .sug .r span:last-child{font-family:inherit;font-size:14px;color:var(--ink-1)}
- .ipanel .sug .ov span{font-family:inherit}
- .ipanel .sug .rows.fade{opacity:.3}
- .ipanel .sug .ov{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
- .ipanel .sug .ov span{display:flex;align-items:center;gap:8px;background:var(--surface);padding:6px 12px;border-radius:11px;font-size:12.5px;letter-spacing:.04em;color:var(--ink-3)}
- /* 询价卡片:展开时品牌描边;报价子表(DataTable:表头 36、行 36、列距 8,下单键 46×26) */
- .qc.open{box-shadow:var(--shadow-card),0 0 0 1px var(--brand-line)}
- .qc-meta em{margin-right:4px}
- .qc-open{border-top-style:dashed}
- .qtab{margin:0 -14px -13px}
- .qtab>div{display:flex;align-items:center;gap:8px;padding:0 10px 0 14px;border-top:1px solid var(--line)}
- .qtab>div:first-child{border-top:0}
- .qtab .qh{height:36px;font-size:10.5px;letter-spacing:.02em;color:var(--ink-3)}
- .qtab .qr{height:40px;font-size:12px;position:relative}
- .qtab>div>span{flex:1;text-align:right;font-family:var(--font-num);font-variant-numeric:tabular-nums;white-space:nowrap}
- .qtab>div>span:first-child{text-align:left;font-family:var(--font-mono)}
- .qtab .qh>span{font-family:inherit}
- .qtab>div>span:last-child{flex:none;width:46px}
- .qtab .p{color:var(--brand);font-weight:600}
- .qtab .t{color:var(--ink-3);font-size:10.5px}
- .qtab .nd{position:absolute;left:4px;top:50%;margin-top:-3px;width:6px;height:6px;border-radius:50%;background:var(--danger)}
- .mbtn{display:flex;align-items:center;justify-content:center;width:46px;height:26px;border-radius:8px;background:var(--brand);color:var(--on-brand);font-size:12.5px;font-weight:600;font-family:"PingFang SC",system-ui,sans-serif}
- .mbtn.dis{opacity:.45}
- .qc .notice{margin-top:2px}
- /* 自定义名义本金小键盘:退格键用图标 */
- .kbd span.fn .icn{width:22px;height:22px;color:var(--ink-2)}
- .kbd span{font-family:var(--font-num)}
- .kbd span.ok,.kbd span.fn{font-family:"PingFang SC",system-ui,sans-serif}
- /* 下单页:分组 Section、总金额行、购买力回显、协议勾选、底栏 */
- .ocard{margin:0 16px}
- .frow .rads{display:flex;gap:12px}
- .frow b em{font-style:normal;color:var(--ink-2);margin-left:6px;font-family:"PingFang SC",system-ui,sans-serif}
- .frow b .icn{width:14px;height:14px;color:var(--ink-3);vertical-align:-2px;margin-left:5px}
- .frow.tot{background:var(--surface-2);padding:13px 15px}
- .frow.tot>span{color:var(--ink-1);font-weight:600}
- .frow.tot>b{display:flex;flex-direction:column;align-items:flex-end;font-size:17px;font-weight:600}
- .frow.tot>b small{font-size:10.5px;font-weight:400;color:var(--ink-3);margin-top:4px}
- .ocard.over{box-shadow:none;border:1px solid var(--danger)}
- .frow.tot.over{background:var(--danger-weak)}
- .frow.tot.over>span,.frow.tot.over>b,.frow.tot.over>b small{color:var(--danger)}
- .lp{padding:0 15px 12px;display:flex;flex-direction:column;align-items:flex-end;gap:6px;border-bottom:1px solid var(--line)}
- .lp .stepper{width:160px}
- .lp .lim{display:flex;gap:14px;font-size:10.5px;color:var(--ink-3)}
- .lp .lim b{font-weight:400;font-family:var(--font-num)}
- .lp .errtip{margin-top:0}
- .agree{padding:14px 16px 0;display:flex;flex-direction:column;gap:11px}
- .agree label{display:flex;gap:9px;font-size:12.5px;color:var(--ink-2);line-height:1.5;align-items:flex-start}
- .agree label b{color:var(--brand);font-weight:600}
- .agree .cb{margin-top:2px}
- .bbar{padding:12px 16px 30px;display:flex;gap:11px;border-top:1px solid var(--line);background:var(--surface)}
- /* 合适性评估弹窗:四列表 + 结论条 + 申报理由单选 */
- .stab{margin:0 0 0;border-top:1px solid var(--line)}
- .stab>div{display:grid;grid-template-columns:1.2fr 1.15fr 1fr 52px;gap:6px;padding:9px 10px;border-bottom:1px solid var(--line);font-size:11px;line-height:1.45;color:var(--ink-1);align-items:start}
- .stab>div span{text-align:right}
- .stab>div span:first-child{text-align:left;color:var(--ink-2)}
- .stab .sh{background:var(--surface-2);font-size:10.5px;color:var(--ink-3);padding:8px 10px;white-space:nowrap}
- .stab .sh span:first-child{color:var(--ink-3)}
- .stab .y{color:var(--ok)} .stab .n{color:var(--danger)}
- .reasons{padding:10px 16px 0;display:flex;flex-direction:column;gap:9px}
- .reasons .rad{font-size:12.5px;align-items:flex-start;line-height:1.5}
- .reasons .rad i{margin-top:2px}
- .reasons .oth{display:flex;align-items:center;gap:10px}
- .reasons .oth .field{flex:1;height:36px;font-size:12.5px}
- /* 协议文档页 */
- .doc{padding:16px 20px 0}
- .doc h4{font-size:17px;font-weight:600}
- .doc .no{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-3);margin-top:6px}
- .doc .sect{margin-top:18px;font-size:13.5px;line-height:1.9;color:var(--ink-2)}
- .doc .sect b{display:block;color:var(--ink-1);margin:14px 0 4px}
- .doc .sect b:first-child{margin-top:0}
- .fright{display:flex;align-items:center;gap:12px}
- /* 00 自身 */
- .tokrow .nm small{display:block;font-size:10px;color:var(--canvas-mute);margin-top:2px;letter-spacing:.02em}
- .btn.tonal{background:var(--surface-2);color:var(--ink-1);box-shadow:none;border:0}
- .btn.dgtext{background:transparent;border:1px solid var(--line-2);color:var(--danger);box-shadow:none}
- .cmp-col{display:flex;flex-direction:column;gap:10px}
- .cmp-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
- .cmp-pl{display:flex;flex-direction:column;gap:8px;font-family:var(--font-num);font-size:14px;font-weight:600}
- .cmp-pl span small{font-size:12px;margin-left:10px;font-weight:500}
- .cmp-field .field{background:var(--surface)}
- .cmp-field .field .u{margin-left:auto;color:var(--ink-3);font-size:14px}
- .cmp-field .field b{font-family:var(--font-num);font-weight:500}
- .cmp-cornerrow{display:flex;gap:8px;align-items:flex-start}
- .cmp-cornerrow .corner{position:static;display:inline-flex;border-radius:12px 0 12px 0}
- .cmp-panel{background:var(--surface);border-radius:14px;padding:12px 0 6px;box-shadow:var(--shadow-card)}
- [data-theme="dark"] .cmp-panel{border:1px solid var(--line)}
- .cmp-panel .filterbar{padding:10px 12px 4px}
- /* ==== v1.3 · 00 专用 END ==== */
- /* ==== v1.3 公共覆盖 BEGIN · 2026-10-14 按代码现状对齐(同一段注入全部图纸,改动从清单目录的 common-v13.css 同步) ==== */
- /* 字体:数值走 Inter(代码 NumText),代码 / 编号走 iOS 的 Menlo(代码 MonoText),正文仍是系统字 */
- @font-face{font-family:"Inter";src:url("assets/fonts/Inter-Regular.subset.otf") format("opentype");font-weight:400}
- @font-face{font-family:"Inter";src:url("assets/fonts/Inter-Medium.subset.otf") format("opentype");font-weight:500}
- @font-face{font-family:"Inter";src:url("assets/fonts/Inter-SemiBold.subset.otf") format("opentype");font-weight:600}
- @font-face{font-family:"Inter";src:url("assets/fonts/Inter-Bold.subset.otf") format("opentype");font-weight:700}
- :root{--font-num:"Inter","PingFang SC","Hiragino Sans GB",system-ui,sans-serif;--font-mono:Menlo,"SF Mono",ui-monospace,monospace}
- .phone .num,.hero .amt,.hero .grid3 b,.fxtab td,.pos-val b,.pos-pl,.pos-grid div b,.qt,.gt-r,.stepper i,.kbd span,.tl-i .amt{font-family:var(--font-num)}
- .statusbar .num{font-family:inherit}
- .phone .mono,.pos-code,.qc-sub,.qc-time,.fxtab td:first-child,.sug span,.tl-i .c span,.row .v.m{font-family:var(--font-mono)}
- /* 底栏:四个 Tab(票据 / 账户 / 消息 / 我的);消息 Tab 只有红点,后端不给条数 */
- .tb .tbi{position:relative;display:inline-flex;flex:none}
- .tb .tbi .rdot{position:absolute;top:-2px;left:14px;width:8px;height:8px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--surface)}
- /* 二级页导航栏:iOS 系统导航栏,表面色底、居中 17 / 600 标题、品牌色返回箭头、无分隔线(H5 标题靠左,见 00 规范) */
- .navbar{height:44px;background:var(--surface)}
- .statusbar:has(+ .navbar){background:var(--surface)}
- .navbar h2{font-size:17px;font-weight:600;letter-spacing:0}
- .navbar .bk{color:var(--brand)}
- .navbar .bk .icn{width:22px;height:22px;stroke-width:2.1}
- /* 图注里的身份标记:本期未上线 / v1.3 新增 / 平台限定 */
- .cap-flags{display:inline-flex;gap:6px;margin-left:8px;vertical-align:1px}
- .cap-flag{font-family:"PingFang SC",system-ui,sans-serif;font-size:10px;letter-spacing:.04em;padding:1px 6px;border-radius:4px;border:1px solid var(--canvas-line);color:var(--canvas-mute);background:var(--canvas-2)}
- .cap-flag.off{color:var(--accent);border-color:var(--accent-line);background:var(--accent-weak)}
- .cap-flag.new{color:var(--brand);border-color:var(--brand-line);background:var(--brand-weak)}
- .cap-flag.plat{color:var(--ok);border-color:rgba(15,123,79,.35);background:var(--ok-weak)}
- /* 实心底上的文字(角标 / 实心标签 / 危险按钮):浅色白字,深色下底色被提亮、改配近黑字(代码 $onFill / $onDanger) */
- [data-theme="dark"] .corner,[data-theme="dark"] .t-danger,[data-theme="dark"] .btn.danger,[data-theme="dark"] .mb,[data-theme="dark"] .gt-new::before{color:#05122E}
- /* 表格首列的迷你角标(代码 CornerBadge variant="mini"):9 / 600、左右 4 */
- .mb{display:inline-flex;align-items:center;font-size:9px;font-weight:600;line-height:12px;padding:1px 4px;border-radius:4px;color:#fff;background:var(--ink-3);white-space:nowrap}
- .mb.d{background:var(--danger)} .mb.a{background:var(--accent)} .mb.m{background:var(--ink-3)} .mb.b{background:var(--brand)}
- /* Toast:按内容定宽、最宽 290(代码 maxW 290),单行放得下就不折行;位置 top 76% */
- .toast{width:max-content;max-width:290px}
- /* ---- 通用组件(代码 components/ 的对应件) ---- */
- /* 资金看板右上「>」用 lg 档 */
- .hero .arrow{width:22px;height:22px}
- /* 只读行:InfoRow(无分隔线)/ FieldRow(带分隔线,.frow),左 ink2 右 Inter */
- .irow{display:flex;justify-content:space-between;align-items:center;padding:14px 15px;font-size:14.5px}
- .irow span{color:var(--ink-2)}
- .irow b{font-weight:400;font-family:var(--font-num);font-variant-numeric:tabular-nums}
- .irow b.dg{color:var(--danger)}
- .frow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 15px;border-bottom:1px solid var(--line);font-size:14.5px}
- .frow>span{color:var(--ink-2);display:flex;align-items:center;gap:6px}
- .frow>b{font-weight:400;font-family:var(--font-num);font-variant-numeric:tabular-nums;text-align:right}
- .frow.hl{background:var(--brand-weak)}
- .frow.hl>span,.frow.hl>b{color:var(--brand)}
- .frow.hl>b{font-weight:600}
- .frow.last,.frow:last-child{border-bottom:0}
- /* 字段说明 ⓘ(代码 IconButton name="info",ink4 14) */
- .xi{width:14px;height:14px;color:var(--ink-4);flex:none}
- /* 弹窗里的证券行(代码在前)与行情行 */
- .secl{display:flex;align-items:center;gap:7px}
- .secl .mono{font-size:12px;color:var(--ink-3)}
- .secl b{font-size:14.5px;font-weight:600}
- .phint{display:flex;gap:14px;margin-top:9px;font-size:12px;color:var(--ink-3)}
- .phint b{font-weight:400;font-family:var(--font-num);font-variant-numeric:tabular-nums}
- .field .num{font-family:var(--font-num)}
- .errtip .icn{width:13px;height:13px}
- .errtip.r{justify-content:flex-end}
- /* 时间片块(代码 TradingWindowDialog) */
- .twin{border-radius:10px;background:var(--surface-2);padding:13px 0;display:flex;flex-direction:column;align-items:center;gap:5px}
- .twin span{font-size:13px;color:var(--ink-3)}
- .twin b{font-size:17px;font-weight:600;font-family:var(--font-num)}
- /* 弹窗标题区(代码 DialogHeading):图标圆 44 + 标题 16.5 / 600 + 说明 14 / ink2 / 行高 23 */
- .dicon{width:44px;height:44px;border-radius:22px;display:flex;align-items:center;justify-content:center;margin:0 auto 6px}
- .dicon.warn{background:var(--warn-weak);color:var(--warn)}
- .dicon.danger{background:var(--danger-weak);color:var(--danger)}
- .dicon.ok{background:var(--ok-weak);color:var(--ok)}
- .dicon.brand{background:var(--brand-weak);color:var(--brand)}
- .dlg-hd .dsc{margin-top:6px;font-size:14px;color:var(--ink-2);line-height:23px}
- .dlg-ft span{font-weight:500}
- .dlg-ft span.off{color:var(--brand);opacity:.4}
- .dlg-ft span.dg{color:var(--danger)}
- /* 底部面板标题行(代码 SheetFrame 的四套头):select 左标题 + 右 × / centered 居中无关闭 / centered-close 居中 + 右 × / filter 左大标题 + 右 × */
- .shd{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 6px}
- .shd b{font-size:15.5px;font-weight:600}
- .shd .icn{color:var(--ink-3)}
- .shd-c{padding:16px 18px 4px;text-align:center;position:relative}
- .shd-c b{font-size:16.5px;font-weight:600}
- .shd-c .icn{position:absolute;right:18px;top:17px;color:var(--ink-3)}
- /* 单选面板的选项行(代码 SelectSheet) */
- .opt-row{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);font-size:14.5px;color:var(--ink-2)}
- .opt-row .icn{width:14px;height:14px;color:var(--brand)}
- .opt-row b{font-weight:400;color:var(--ink-1)}
- .opt-row.sel b{font-weight:600}
- .opt-row:last-child{border-bottom:0}
- /* 叠在另一层弹窗之上的第二层遮罩 */
- .scrim.top2{z-index:45}
- /* 列表尾的文字入口(历史票据 > 等) */
- .listfoot{display:flex;justify-content:center;align-items:center;gap:3px;padding:12px 0;font-size:13px;color:var(--brand)}
- .listfoot .icn{width:13px;height:13px}
- /* 分组标题(代码 Section 的标题:12 / ink3,上 16 下 8) */
- .gtitle{padding:16px 16px 8px}
- /* 转圈(代码 ProgressRing,下拉刷新 / 上拉加载 / 检索在搜共用) */
- @keyframes hh-spin{from{transform:rotate(-90deg)}to{transform:rotate(270deg)}}
- .ring{width:16px;height:16px;position:relative;flex:none;display:inline-block}
- .ring>svg{width:100%;height:100%;transform:rotate(-90deg);display:block}
- .ring .trk{fill:none;stroke:var(--line-2);stroke-width:2.8}
- .ring .bar{fill:none;stroke:var(--brand);stroke-width:2.8;stroke-linecap:round}
- .spin{animation:hh-spin .9s linear infinite}
- .ring.lg{width:24px;height:24px}
- .ring.lg .trk,.ring.lg .bar{stroke-width:2.2}
- /* 空态(代码 EmptyState):整页 120×104 / sm 72×62 / row 30×26 三档,插画取色走 --il-* */
- .emptyslot{flex:1;display:flex;align-items:center;justify-content:center;padding:0 0 204px}
- .emptybox{--il-a:#E7EDF6;--il-b:#D8E0EC;--il-c:#F8FAFE;display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 32px}
- [data-theme="dark"] .emptybox{--il-a:#1F2A45;--il-b:#161F38;--il-c:#28355A}
- .emptybox .illu{width:120px;height:104px;display:block}
- .emptybox .etxt{margin-top:16px;font-size:14px;color:var(--ink-3);letter-spacing:.1em}
- .emptybox .esub{margin-top:8px;font-size:12px;line-height:1.65;color:var(--ink-4);max-width:236px}
- .emptybox .eact{margin-top:20px}
- .emptybox.sm{padding:26px 20px}
- .emptybox.sm .illu{width:72px;height:62px}
- .emptybox.sm .etxt{margin-top:11px;font-size:12.5px;letter-spacing:.08em}
- .emptybox.row{flex-direction:row;align-items:center;justify-content:center;gap:10px;padding:9px 0}
- .emptybox.row .illu{width:30px;height:26px}
- .emptybox.row .etxt{margin-top:0;font-size:12.5px;letter-spacing:.06em}
- /* 状态点「已提交」档(代码 StatusSemantic submitted:未报 / 待报 / 待审批):品牌色空心 */
- .st.sub{color:var(--brand)}
- .st.sub i{background:transparent;border:1.6px solid currentColor}
- /* ---- 持仓卡片(代码 PositionCard)与通用表格(代码 DataTable) ---- */
- /* 持仓卡片:多枚角标并排;有角标时顶部只让到 15;估值后的币种小一号 */
- .pos .corners{position:absolute;left:0;top:0;display:flex;z-index:3}
- .pos .corners .corner{position:static}
- .pos:has(.corners) .pos-hd{padding-top:2px}
- .pos-val b small{font-size:13.5px;font-weight:400;color:var(--ink-2)}
- .pos-code b{font-weight:400;color:var(--accent)}
- /* 信息格五项一行:整行按宽度降档 12.5 / 11.5 / 10.5,最小档仍放不下时成对的值拆成两行(i) */
- .pos-grid.f5{display:flex;flex-wrap:wrap;column-gap:6px;row-gap:10px}
- .pos-grid.f5>div{flex:1 0 auto}
- .pos-grid.f5 div span{font-size:10px;letter-spacing:.02em}
- .pos-grid.f5 div b{font-size:12.5px;font-weight:500}
- .pos-grid.f5 div b em{font-size:11px;font-weight:400}
- .pos-grid.f5 div i{display:block;font-style:normal;font-size:11px;color:var(--ink-3);font-family:var(--font-num);font-variant-numeric:tabular-nums;white-space:nowrap}
- .pos-grid.f5.s115 div b{font-size:11.5px}.pos-grid.f5.s115 div b em{font-size:10px}
- .pos-grid.f5.s105 div b{font-size:10.5px}.pos-grid.f5.s105 div b em{font-size:9px}
- .pos-ops span.pri,.pos-ops span.hot{font-weight:500}
- /* 表格模式(DataTable):表头 36 / 行 52、单元格 12、列距 14,前两列冻结带右投影 */
- .ptab{background:var(--surface);overflow:hidden}
- .ptab .r{display:flex;align-items:stretch;height:52px;border-bottom:1px solid var(--line);font-size:12px;white-space:nowrap}
- .ptab .r.h{height:36px;background:var(--surface-2);font-size:10.5px;letter-spacing:.02em;color:var(--ink-3)}
- .ptab .fz,.ptab .sc{display:flex;align-items:center;gap:14px;flex:none}
- .ptab .fz{padding:0 14px 0 10px;background:var(--surface);position:relative;z-index:2;box-shadow:4px 0 10px rgba(15,27,51,.06)}
- [data-theme="dark"] .ptab .fz{box-shadow:4px 0 10px rgba(0,0,0,.35)}
- .ptab .r.h .fz{background:var(--surface-2)}
- .ptab .c{flex:none}
- .ptab .c.n{text-align:right;font-family:var(--font-num);font-variant-numeric:tabular-nums}
- .ptab .r.h .c.n{font-family:inherit}
- .ptab .c.n .sub{display:block;font-size:11px;color:var(--ink-3);margin-top:2px}
- .ptab .cat b{display:block;font-size:12px;font-weight:600}
- .ptab .cat b.db{color:var(--accent)}
- .ptab .cat .mbs{display:flex;gap:3px;margin-top:3px}
- .ptab .scd b{display:block;font-size:12px;font-weight:400}
- .ptab .scd span{display:flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:11px;color:var(--ink-3);margin-top:3px}
- .ptab .scd .cmark{width:13px;height:13px;font-size:8.5px}
- .ptab .opsrow{border-bottom:1px solid var(--line)}
- .ptab .opsrow .pos-ops{border-top:0}
- .ptab .r.sel,.ptab .r.sel .fz{background:var(--brand-weak)}
- .ptab .xrow{background:var(--surface-2);border-bottom:1px solid var(--line)}
- /* ---- 卡片 / 表格切换(代码 ViewModeToggle) ---- */
- .viewtog{display:inline-flex;padding:2px;background:var(--surface-2);border-radius:8px;gap:2px;flex:none;position:relative}
- .viewtog.sep{margin-left:4px}
- .viewtog.sep::before{content:"";position:absolute;left:-7px;top:2px;bottom:2px;width:1px;background:var(--line-2)}
- .viewtog span{width:28px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:6px;color:var(--ink-3)}
- .viewtog span.on{background:var(--surface);color:var(--brand);box-shadow:var(--shadow-card)}
- [data-theme="dark"] .viewtog span.on{background:var(--surface-3)}
- .viewtog .icn{width:15px;height:15px;stroke-width:1.8}
- /* ==== v1.3 公共覆盖 END ==== */
- </style>
- </head>
- <body>
- <svg width="0" height="0" style="position:absolute" aria-hidden="true"><defs>
- <g id="i-back"><polyline points="15 4 7 12 15 20"/></g>
- <g id="i-right"><polyline points="9 4 17 12 9 20"/></g>
- <g id="i-down"><polyline points="5 9 12 16 19 9"/></g>
- <g id="i-up"><polyline points="5 15 12 8 19 15"/></g>
- <g id="i-search"><circle cx="11" cy="11" r="6.5"/><line x1="16" y1="16" x2="21" y2="21"/></g>
- <g id="i-x"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></g>
- <g id="i-check"><polyline points="4 12.5 9.5 18 20 6"/></g>
- <g id="i-plus"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></g>
- <g id="i-minus"><line x1="5" y1="12" x2="19" y2="12"/></g>
- <g id="i-eye"><path d="M2 12s3.6-6.5 10-6.5S22 12 22 12s-3.6 6.5-10 6.5S2 12 2 12z"/><circle cx="12" cy="12" r="2.6"/></g>
- <g id="i-eyeoff"><path d="M4 5l16 14"/><path d="M9.5 6.2A9.7 9.7 0 0 1 12 5.5c6.4 0 10 6.5 10 6.5a17 17 0 0 1-3.3 4"/><path d="M6.2 8.3A16.6 16.6 0 0 0 2 12s3.6 6.5 10 6.5a10 10 0 0 0 3.3-.55"/></g>
- <g id="i-clock"><circle cx="12" cy="12" r="8.5"/><polyline points="12 7 12 12 15.5 14"/></g>
- <g id="i-history"><path d="M3.5 12a8.5 8.5 0 1 0 2.6-6.1"/><polyline points="3 4 3 9 8 9"/><polyline points="12 7.5 12 12 15.5 14"/></g>
- <g id="i-filter"><path d="M4 6h16l-6.2 7.4V19l-3.6-2v-3.6z"/></g>
- <g id="i-calendar"><rect x="3.5" y="5" width="17" height="15.5" rx="2.5"/><line x1="3.5" y1="9.5" x2="20.5" y2="9.5"/><line x1="8" y1="3" x2="8" y2="6.5"/><line x1="16" y1="3" x2="16" y2="6.5"/></g>
- <g id="i-note"><path d="M6 3h8l4.5 4.5V21H6z"/><polyline points="14 3 14 8 18.5 8"/><line x1="9" y1="13" x2="15" y2="13"/><line x1="9" y1="17" x2="13" y2="17"/></g>
- <g id="i-wallet"><rect x="3" y="6" width="18" height="14" rx="3"/><path d="M3 10h18"/><circle cx="16.5" cy="15" r="1.3" fill="currentColor" stroke="none"/></g>
- <g id="i-user"><circle cx="12" cy="8.5" r="3.8"/><path d="M4.5 20.5a7.5 7.5 0 0 1 15 0"/></g>
- <g id="i-transfer"><polyline points="7 7 4 10 7 13"/><path d="M4 10h12a4 4 0 0 1 0 8h-3"/><polyline points="17 17 20 14 17 11" opacity="0"/></g>
- <g id="i-swap"><polyline points="8 5 4.5 8.5 8 12"/><line x1="4.5" y1="8.5" x2="19" y2="8.5"/><polyline points="16 19 19.5 15.5 16 12"/><line x1="19.5" y1="15.5" x2="5" y2="15.5"/></g>
- <g id="i-refresh"><path d="M20 12a8 8 0 1 1-2.4-5.7"/><polyline points="20 4 20 9 15 9"/></g>
- <g id="i-help"><circle cx="12" cy="12" r="8.6"/><path d="M9.6 9.6a2.5 2.5 0 1 1 3.2 2.4c-.6.2-.9.7-.9 1.4v.5"/><circle cx="11.9" cy="16.6" r=".9" fill="currentColor" stroke="none"/></g>
- <g id="i-info"><circle cx="12" cy="12" r="8.6"/><line x1="12" y1="11" x2="12" y2="16.5"/><circle cx="12" cy="7.8" r=".9" fill="currentColor" stroke="none"/></g>
- <g id="i-alert"><path d="M12 4.5 21 19.5H3z"/><line x1="12" y1="10" x2="12" y2="14.5"/><circle cx="12" cy="17" r=".9" fill="currentColor" stroke="none"/></g>
- <g id="i-lock"><rect x="5" y="10.5" width="14" height="10" rx="2.5"/><path d="M8.2 10.5V8a3.8 3.8 0 0 1 7.6 0v2.5"/></g>
- <g id="i-key"><circle cx="8" cy="14" r="4"/><path d="M11 11.5 20 3"/><line x1="17" y1="6" x2="19" y2="8"/></g>
- <g id="i-shield"><path d="M12 3.5 19 6v6c0 4.2-2.9 7.2-7 8.5-4.1-1.3-7-4.3-7-8.5V6z"/><polyline points="9 12 11.3 14.3 15.3 10.3"/></g>
- <g id="i-font"><path d="M4 19 10 5l6 14"/><line x1="6.2" y1="14.5" x2="13.8" y2="14.5"/><path d="M17 19l3-8 3 8" transform="scale(.72) translate(6.5 5)"/></g>
- <g id="i-doc"><rect x="4.5" y="3.5" width="15" height="17" rx="2.5"/><line x1="8" y1="9" x2="16" y2="9"/><line x1="8" y1="13" x2="16" y2="13"/><line x1="8" y1="17" x2="12.5" y2="17"/></g>
- <g id="i-logout"><path d="M14 5H6.5A2.5 2.5 0 0 0 4 7.5v9A2.5 2.5 0 0 0 6.5 19H14"/><polyline points="16.5 8 20.5 12 16.5 16"/><line x1="20.5" y1="12" x2="10" y2="12"/></g>
- <g id="i-fee"><circle cx="12" cy="12" r="8.5"/><path d="M9.5 9h5M9.5 12h5M12 9v8"/></g>
- <g id="i-theme"><circle cx="12" cy="12" r="7.5"/><path d="M12 4.5v15a7.5 7.5 0 0 0 0-15z" fill="currentColor" stroke="none"/></g>
- <g id="i-sun"><circle cx="12" cy="12" r="4.2"/><line x1="12" y1="2.5" x2="12" y2="5"/><line x1="12" y1="19" x2="12" y2="21.5"/><line x1="2.5" y1="12" x2="5" y2="12"/><line x1="19" y1="12" x2="21.5" y2="12"/><line x1="5.4" y1="5.4" x2="7.1" y2="7.1"/><line x1="16.9" y1="16.9" x2="18.6" y2="18.6"/><line x1="5.4" y1="18.6" x2="7.1" y2="16.9"/><line x1="16.9" y1="7.1" x2="18.6" y2="5.4"/></g>
- <g id="i-moon"><path d="M20 14.2A8.4 8.4 0 0 1 9.8 4 8.6 8.6 0 1 0 20 14.2z"/></g>
- <g id="i-bell"><path d="M18 16V11a6 6 0 1 0-12 0v5l-1.6 2.5h15.2z"/><path d="M9.8 21a2.4 2.4 0 0 0 4.4 0"/></g>
- <g id="i-list"><line x1="4" y1="7" x2="20" y2="7"/><line x1="4" y1="12" x2="20" y2="12"/><line x1="4" y1="17" x2="20" y2="17"/></g>
- <g id="i-sort"><polyline points="7 9 10 6 13 9"/><polyline points="7 15 10 18 13 15"/></g>
- <g id="i-trend"><polyline points="3 16 9 10 13 14 21 6"/><polyline points="15.5 6 21 6 21 11.5"/></g>
- <g id="i-img"><rect x="3.5" y="5" width="17" height="14" rx="2.5"/><circle cx="9" cy="10" r="1.6"/><polyline points="5 17 10 12 13.5 15.5 16.5 13 19.5 16"/></g>
- <g id="i-upload"><path d="M12 16V5"/><polyline points="7.5 9.5 12 5 16.5 9.5"/><path d="M4 15v3.5A2.5 2.5 0 0 0 6.5 21h11a2.5 2.5 0 0 0 2.5-2.5V15"/></g>
- <g id="i-face"><rect x="4" y="4" width="16" height="16" rx="4"/><circle cx="9.3" cy="10.5" r=".9" fill="currentColor" stroke="none"/><circle cx="14.7" cy="10.5" r=".9" fill="currentColor" stroke="none"/><path d="M9 15c1.8 1.5 4.2 1.5 6 0"/></g>
- </defs></svg>
- <div class="sheet-head">
- <div class="brandmark">
- <div class="glyph"></div>
- <div>
- <div class="sheet-title">深空蓝 · 深浅主题规范</div>
- <div class="sheet-sub">票据投资者 APP / 设计基调 · 语义 Token · 双主题对照 · 换肤机制与落地</div>
- </div>
- </div>
- <div class="head-right">
- <div class="meta">
- <div>模块<b>设计规范 FOUNDATION</b></div>
- <div>规格<b>iOS 390 × 844 @3x</b></div>
- <div>主题<b>深空蓝 Light / Dark</b></div>
- <div>版本<b>v1.3 · 2026-10-14</b></div>
- </div>
- <div class="skin" role="group" aria-label="主题切换">
- <button data-set="light" class="on"><svg viewBox="0 0 24 24"><use href="#i-sun"/></svg>浅色</button>
- <button data-set="dark"><svg viewBox="0 0 24 24"><use href="#i-moon"/></svg>深色</button>
- </div>
- </div>
- </div>
- <style>
- .dual{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--canvas-line);border:1px solid var(--canvas-line);border-radius:12px;overflow:hidden}
- .dual > div{padding:20px 22px}
- .dual .lt{background:#F6F8FB;color:#0F1B33}
- .dual .dk{background:#0B1020;color:#EAF0FA}
- .dualbar{display:flex;align-items:center;gap:8px;font-size:10.5px;letter-spacing:.14em;margin-bottom:16px;opacity:.6}
- .tokrow{display:grid;grid-template-columns:150px 1fr 1fr 1fr;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--canvas-line);font-size:12px}
- .tokrow:last-child{border-bottom:0}
- .tokrow .nm{font-family:"SF Mono",monospace;font-size:11.5px;color:var(--canvas-ink)}
- .tokrow .cell{display:flex;align-items:center;gap:8px;font-family:"SF Mono",monospace;font-size:11px;color:var(--canvas-mute)}
- .tokrow .cell i{width:20px;height:20px;border-radius:5px;flex:none;border:1px solid rgba(128,140,160,.35)}
- .tokrow .use{font-size:11.5px;color:var(--canvas-mute)}
- .tokhd{display:grid;grid-template-columns:150px 1fr 1fr 1fr;gap:12px;padding:0 0 10px;font-size:10px;letter-spacing:.12em;color:var(--canvas-mute);border-bottom:1px solid var(--canvas-line);margin-bottom:4px}
- .scale{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap}
- .scale div{text-align:left}
- .scale div em{font-style:normal;display:block;font-size:10.5px;color:var(--canvas-mute);margin-top:8px;font-family:"SF Mono",monospace}
- .radbox{display:flex;gap:14px;flex-wrap:wrap}
- .radbox div{text-align:center}
- .radbox i{display:block;width:64px;height:44px;background:var(--brand-weak);border:1.5px solid var(--brand-line);margin-bottom:8px}
- .radbox span{font-size:11px;color:var(--canvas-mute);font-family:"SF Mono",monospace}
- .compo{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1px;background:var(--canvas-line);border:1px solid var(--canvas-line);border-radius:12px;overflow:hidden}
- .compo > div{padding:18px 18px 20px}
- .compo h5{font-size:10.5px;letter-spacing:.12em;opacity:.55;margin-bottom:14px;font-weight:500}
- .compo .lt{background:#F6F8FB;color:#0F1B33}
- .compo .dk{background:#0B1020;color:#EAF0FA}
- </style>
- <div class="sec">
- <div class="sec-head"><span class="sec-num">01</span><span class="sec-name">设计基调</span><span class="sec-rule"></span><span class="sec-note">深空蓝 Deep-Space Blue · v1.3 按代码现状改写(色值唯一来源 theme/colors.ts 即抄自本页)</span></div>
- <div class="cards">
- <div class="card-x">
- <h4>气质 TONE</h4>
- <div class="bullets">
- <li><b>克制的蓝</b>:品牌色只出现在可点击与关键结论上,不做装饰</li>
- <li><b>琥珀作第二强调</b>:进行中 / 费用 / 到期这类要注意但不危险的信息</li>
- <li><b>数字优先</b>:金额与数字用 <b>Inter</b>(等宽数字,纵向对齐便于比价);账号、代码、BCP 47 标签用 <b>Menlo</b> 等宽</li>
- <li><b>线性图标</b>;全站唯一的插画是空态文件夹,三色随主题</li>
- <li><b>机构档案</b>:应用名、Logo、持牌信息取 <code>brands/<id>/brand.json</code>;品牌配色可按机构覆盖,泓衍票据用本页基线</li>
- </div>
- </div>
- <div class="card-x">
- <h4>换肤机制 SKIN</h4>
- <div class="bullets">
- <li>三态:<b>跟随系统</b>(缺省)/ 浅色 / 深色,入口「我的 → 外观」,存本机</li>
- <li>同一套语义键两套取值,组件零改动;<b>只换颜色</b>,布局、字号、间距、圆角、图标不变</li>
- <li>涨跌色两套:<b>红涨绿跌</b>(缺省)/ 绿涨红跌,全站盈亏色一起对调</li>
- <li>外观偏好同步给原生层:液态玻璃底栏、键盘、系统选择器跟着变</li>
- <li>启动页固定品牌蓝,不跟主题</li>
- </div>
- </div>
- <div class="card-x">
- <h4>无障碍 A11Y</h4>
- <div class="kv">
- <div class="r"><span>正文对比度</span><b>≥ 7:1(AAA)</b></div>
- <div class="r"><span>次要文字</span><b>≥ 4.5:1(AA)</b></div>
- <div class="r"><span>最小触控热区</span><b>44 × 44 pt(不足的补热区)</b></div>
- <div class="r"><span>最小字号</span><b>正文 12;表头与标签 10.5</b></div>
- <div class="r"><span>字号档位</span><b>标准 / 中等 / 大字(1 / 1.12 / 1.24,仅原生)</b></div>
- <div class="r"><span>状态传达</span><b>颜色 + 文字双通道</b></div>
- <div class="r"><span>深色纯黑</span><b>禁用(用 #0B1020)</b></div>
- </div>
- </div>
- </div>
- </div>
- <div class="sec">
- <div class="sec-head"><span class="sec-num">02</span><span class="sec-name">语义 Token 对照</span><span class="sec-rule"></span><span class="sec-note">组件只引用语义名;第二行小字是代码里的键(theme/colors.ts)</span></div>
- <div class="card-x" style="padding:22px 24px">
- <div class="tokhd"><span>TOKEN</span><span>LIGHT</span><span>DARK</span><span>用途</span></div>
- <div class="tokrow"><span class="nm">--app-bg<small>appBg</small></span><span class="cell"><i style="background:#F6F8FB"></i>#F6F8FB</span><span class="cell"><i style="background:#0B1020"></i>#0B1020</span><span class="use">页面底色</span></div>
- <div class="tokrow"><span class="nm">--surface<small>surface</small></span><span class="cell"><i style="background:#FFFFFF"></i>#FFFFFF</span><span class="cell"><i style="background:#131B2E"></i>#131B2E</span><span class="use">卡片 / 导航 / 弹窗</span></div>
- <div class="tokrow"><span class="nm">--surface-2<small>surface2</small></span><span class="cell"><i style="background:#F1F4F9"></i>#F1F4F9</span><span class="cell"><i style="background:#18223A"></i>#18223A</span><span class="use">表头 / 次级面 / 输入底</span></div>
- <div class="tokrow"><span class="nm">--surface-3<small>surface3</small></span><span class="cell"><i style="background:#E8EDF5"></i>#E8EDF5</span><span class="cell"><i style="background:#1E2A45"></i>#1E2A45</span><span class="use">置灰主按钮底 / 灰标签底 / 深色分段选中</span></div>
- <div class="tokrow"><span class="nm">--line<small>line</small></span><span class="cell"><i style="background:#E3E9F1"></i>#E3E9F1</span><span class="cell"><i style="background:#232F4B"></i>#232F4B</span><span class="use">分割线;深色下卡片描边</span></div>
- <div class="tokrow"><span class="nm">--line-2<small>line2</small></span><span class="cell"><i style="background:#CFD9E7"></i>#CFD9E7</span><span class="cell"><i style="background:#32436A"></i>#32436A</span><span class="use">描边按钮 / 输入框 / 复选框</span></div>
- <div class="tokrow"><span class="nm">--ink-1<small>ink1</small></span><span class="cell"><i style="background:#0F1B33"></i>#0F1B33</span><span class="cell"><i style="background:#EAF0FA"></i>#EAF0FA</span><span class="use">主文字 / 金额</span></div>
- <div class="tokrow"><span class="nm">--ink-2<small>ink2</small></span><span class="cell"><i style="background:#4C5C78"></i>#4C5C78</span><span class="cell"><i style="background:#A5B4D0"></i>#A5B4D0</span><span class="use">字段名 / 正文</span></div>
- <div class="tokrow"><span class="nm">--ink-3<small>ink3</small></span><span class="cell"><i style="background:#8A99B2"></i>#8A99B2</span><span class="cell"><i style="background:#7486A5"></i>#7486A5</span><span class="use">辅助说明 / 时间戳</span></div>
- <div class="tokrow"><span class="nm">--ink-4<small>ink4</small></span><span class="cell"><i style="background:#AEBACD"></i>#AEBACD</span><span class="cell"><i style="background:#54658A"></i>#54658A</span><span class="use">占位 / 置灰文字 / 已失效</span></div>
- <div class="tokrow"><span class="nm">--brand<small>brand</small></span><span class="cell"><i style="background:#1B4FD8"></i>#1B4FD8</span><span class="cell"><i style="background:#5B8CFF"></i>#5B8CFF</span><span class="use">主按钮 / 选中 / 链接</span></div>
- <div class="tokrow"><span class="nm">--brand-2<small>brand2</small></span><span class="cell"><i style="background:#123CAE"></i>#123CAE</span><span class="cell"><i style="background:#7FA6FF"></i>#7FA6FF</span><span class="use">品牌渐变第二色</span></div>
- <div class="tokrow"><span class="nm">--brand-weak<small>brandWeak</small></span><span class="cell"><i style="background:#E7EEFF"></i>#E7EEFF</span><span class="cell"><i style="background:#1B2748"></i>rgba(91,140,255,.16)</span><span class="use">选中弱底 / 高亮行 / 信息条</span></div>
- <div class="tokrow"><span class="nm">--on-brand<small>onBrand</small></span><span class="cell"><i style="background:#FFFFFF"></i>#FFFFFF</span><span class="cell"><i style="background:#05122E"></i>#05122E</span><span class="use">品牌实心底上的文字(深色下转近黑)</span></div>
- <div class="tokrow"><span class="nm">--accent<small>amber</small></span><span class="cell"><i style="background:#B4700E"></i>#B4700E</span><span class="cell"><i style="background:#F0A93B"></i>#F0A93B</span><span class="use">进行中 / 费用 / 到期角标</span></div>
- <div class="tokrow"><span class="nm">--rise<small>rise</small></span><span class="cell"><i style="background:#E5484D"></i>#E5484D</span><span class="cell"><i style="background:#FF6B6E"></i>#FF6B6E</span><span class="use">涨 / 盈利(可切方案)</span></div>
- <div class="tokrow"><span class="nm">--fall<small>fall</small></span><span class="cell"><i style="background:#12A594"></i>#12A594</span><span class="cell"><i style="background:#2FD4B9"></i>#2FD4B9</span><span class="use">跌 / 亏损(可切方案)</span></div>
- <div class="tokrow"><span class="nm">--danger<small>danger</small></span><span class="cell"><i style="background:#DC2626"></i>#DC2626</span><span class="cell"><i style="background:#FF6B6E"></i>#FF6B6E</span><span class="use">校验失败 / 强平 / 撤单</span></div>
- <div class="tokrow"><span class="nm">--warn<small>warn</small></span><span class="cell"><i style="background:#C2410C"></i>#C2410C</span><span class="cell"><i style="background:#F59E42"></i>#F59E42</span><span class="use">风险提示条 / 通知未开启</span></div>
- <div class="tokrow"><span class="nm">--ok<small>ok</small></span><span class="cell"><i style="background:#0F7B4F"></i>#0F7B4F</span><span class="cell"><i style="background:#2FD4B9"></i>#2FD4B9</span><span class="use">通过 / 成功 / 已完成</span></div>
- <div class="tokrow"><span class="nm">--scrim<small>scrim</small></span><span class="cell"><i style="background:#6B7280"></i>rgba(11,18,34,.42)</span><span class="cell"><i style="background:#020610"></i>rgba(2,6,16,.62)</span><span class="use">弹窗遮罩</span></div>
- <div class="tokrow"><span class="nm">Toast<small>toastBg</small></span><span class="cell"><i style="background:#101A2E"></i>rgba(15,25,45,.90)</span><span class="cell"><i style="background:#E3EAF5"></i>rgba(230,238,250,.94)</span><span class="use">Toast 胶囊(深色下反白,字 #0B1020)</span></div>
- </div>
- </div>
- <div class="sec">
- <div class="sec-head"><span class="sec-num">03</span><span class="sec-name">字号 · 圆角 · 间距 · 控件</span><span class="sec-rule"></span><span class="sec-note">两套主题共用,切换时全部不变(代码 theme/tokens.ts)</span></div>
- <div class="cards">
- <div class="card-x">
- <h4>字号 TYPE SCALE</h4>
- <div class="scale">
- <div><span style="font-size:33px;font-weight:600;font-family:var(--font-num)">18,268,671</span><em>33 / 600 资产主数值(Inter)</em></div>
- </div>
- <div class="scale" style="margin-top:18px">
- <div><span style="font-size:22px;font-weight:600">共赢票据</span><em>22 / 600 大标题</em></div>
- <div><span style="font-size:17px;font-weight:600">费用信息</span><em>17 / 600 导航栏标题</em></div>
- <div><span style="font-size:15px">贵州茅台</span><em>15 / 400 列表主文</em></div>
- <div><span style="font-size:12.5px;color:var(--canvas-mute)">2026-08-15 14:25</span><em>12.5 辅助说明</em></div>
- <div><span style="font-size:10.5px;color:var(--canvas-mute)">名义本金</span><em>10.5 表头 / Tab 文字</em></div>
- </div>
- <div class="kv" style="margin-top:16px">
- <div class="r"><span>中文 / 英文</span><b>系统字体(PingFang SC · TC / SF Pro)</b></div>
- <div class="r"><span>数字</span><b>Inter(随包内置)</b></div>
- <div class="r"><span>等宽</span><b>Menlo</b></div>
- </div>
- </div>
- <div class="card-x">
- <h4>圆角 RADIUS</h4>
- <div class="radbox">
- <div><i style="border-radius:4px;height:36px"></i><span>4 · 标签</span></div>
- <div><i style="border-radius:9px;height:36px"></i><span>9 · Chip / 筛选</span></div>
- <div><i style="border-radius:10px;height:36px"></i><span>10 · 小按钮 / 搜索</span></div>
- <div><i style="border-radius:11px;height:36px"></i><span>11 · 输入框</span></div>
- <div><i style="border-radius:12px;height:36px"></i><span>12 · 主按钮</span></div>
- <div><i style="border-radius:14px;height:36px"></i><span>14 · 卡片</span></div>
- <div><i style="border-radius:16px;height:36px"></i><span>16 · 弹窗 / Hero</span></div>
- </div>
- <div class="kv" style="margin-top:18px">
- <div class="r"><span>底部面板</span><b>18 18 0 0</b></div>
- <div class="r"><span>手机外框</span><b>42(仅图纸)</b></div>
- </div>
- </div>
- <div class="card-x">
- <h4>间距 SPACING</h4>
- <div class="kv">
- <div class="r"><span>页面左右边距</span><b>16</b></div>
- <div class="r"><span>卡片内边距</span><b>15(询价 / 订单卡 13)</b></div>
- <div class="r"><span>卡片间距</span><b>11</b></div>
- <div class="r"><span>分组标题上 / 下</span><b>16 / 8</b></div>
- <div class="r"><span>列表行上下内边距</span><b>14</b></div>
- <div class="r"><span>Hero 内边距</span><b>18</b></div>
- <div class="r"><span>居中弹窗 / 筛选面板左右</span><b>18 / 20</b></div>
- <div class="r"><span>大标题栏左右</span><b>20</b></div>
- </div>
- </div>
- <div class="card-x">
- <h4>控件 CONTROLS</h4>
- <div class="kv">
- <div class="r"><span>主按钮 / 导航栏</span><b>46</b></div>
- <div class="r"><span>输入框(也是最小热区)</span><b>44</b></div>
- <div class="r"><span>小按钮 / 搜索框 / 步进器</span><b>38</b></div>
- <div class="r"><span>筛选按钮</span><b>34</b></div>
- <div class="r"><span>Chip</span><b>32</b></div>
- <div class="r"><span>复选框 / 批量复选框 / 单选</span><b>16 / 20 / 15</b></div>
- <div class="r"><span>底部 Tab</span><b>H5 自绘 72 + 安全区;原生用系统底栏</b></div>
- </div>
- </div>
- </div>
- </div>
- <div class="sec">
- <div class="sec-head"><span class="sec-num">04</span><span class="sec-name">整页对照</span><span class="sec-rule"></span><span class="sec-note">左浅右深 · 同一份 DOM 只换 data-theme · 取自 04-A1 / 02-Q1</span></div>
- <div class="pair-lb"><i style="background:#F6F8FB"></i>LIGHT <i style="background:#0B1020"></i>DARK</div>
- <div class="pair" style="margin-bottom:44px">
- <div class="frame">
- <div class="phone" id="p-account" data-lock data-theme="light">
- <div class="screen">
- <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
- <div class="appbar"><h1>资金账户</h1></div>
- <div class="body">
- <div class="hero">
- <div class="lb">合计资产净值 <span class="cur">HKD <svg class="icn" style="width:11px;height:11px" viewBox="0 0 24 24"><use href="#i-down"/></svg></span></div>
- <div class="amt num">18,268,671.64 <svg class="icn sm eye" viewBox="0 0 24 24"><use href="#i-eye"/></svg></div>
- <svg class="icn lg arrow" viewBox="0 0 24 24"><use href="#i-right"/></svg>
- <div class="grid3">
- <div><span>票据估值</span><b class="num">368,000.00</b></div>
- <div><span>冻结金额</span><b class="num">0.00</b></div>
- <div><span>现金可用</span><b class="num">123,456.00</b></div>
- </div>
- </div>
- <div class="card wtab" style="margin:11px 16px 0">
- <div class="wr h"><span>币种</span><span>现金余额</span><span>可取金额</span><span>购买力</span></div>
- <div class="wr"><span>HKD</span><span>3,456.00</span><span>3,456.00</span><span>3,456.00</span></div>
- <div class="wr"><span>USD</span><span>23,456.00</span><span>23,456.00</span><span>23,456.00</span></div>
- <div class="wr"><span>CNY</span><span>123,456.00</span><span>123,456.00</span><span>123,456.00</span></div>
- <div class="wfoot"><span>资金流水 <svg class="icn sm" viewBox="0 0 24 24"><use href="#i-right"/></svg></span></div>
- </div>
- <div class="quick">
- <div class="qk"><span class="ib"><svg class="icn sm" viewBox="0 0 24 24"><use href="#i-swap"/></svg></span><b>资金划转</b></div>
- <div class="qk"><span class="ib"><svg class="icn sm" viewBox="0 0 24 24"><use href="#i-calendar"/></svg></span><b>展期记录</b><span class="rd"></span></div>
- </div>
- <div class="card-hd" style="padding:16px 16px 9px">
- <h3>持仓票据<span class="cnt">8</span></h3>
- <div class="fright">
- <span class="more">默认排序(创建时间倒序)<svg class="icn" viewBox="0 0 24 24"><use href="#i-down"/></svg></span>
- <span class="viewtog sep"><span class="on"><svg class="icn" viewBox="0 0 24 24"><rect x="3.5" y="4" width="17" height="7" rx="2"/><rect x="3.5" y="13" width="17" height="7" rx="2"/></svg></span><span><svg class="icn" viewBox="0 0 24 24"><rect x="3.5" y="4.5" width="17" height="15" rx="2"/><line x1="3.5" y1="9.5" x2="20.5" y2="9.5"/><line x1="3.5" y1="14.5" x2="20.5" y2="14.5"/><line x1="9.6" y1="4.5" x2="9.6" y2="19.5"/></svg></span></span>
- </div>
- </div>
- <div class="card pos">
- <div class="corners"><span class="corner">增额</span><span class="corner due">到期</span></div>
- <div class="pos-hd">
- <div><div class="pos-name">贵州茅台 <i class="cmark">C</i></div><div class="pos-code">600519.SH · Delta A</div></div>
- <div class="pos-val"><b class="num">221,234.00<small> HKD</small></b><span>票据估值</span></div>
- </div>
- <div class="pos-pl"><span class="down">-178,766.00 HKD</span><span class="down">-89.38%</span></div>
- <div class="pos-grid f5"><div><span>名义/冻结名义</span><b>200万 CNY</b><i>20万 CNY</i></div><div><span>票据面值</span><b>20万 HKD</b></div><div><span>现价/期初价</span><b>1,234.56</b><i>1,204.56</i></div><div><span>强平价</span><b style="color:var(--danger)">1,000.00</b></div><div><span>到期日</span><b>12/16</b></div></div>
- <div class="pos-ops"><span class="pri">详情</span><span>卖出</span><span>增额</span><span class="hot">展期</span></div>
- </div>
- <div class="card pos">
- <div class="corners"><span class="corner due">到期</span></div>
- <div class="pos-hd">
- <div><div class="pos-name">贵州茅台 <i class="cmark">C</i></div><div class="pos-code">600519.SH · Delta A</div></div>
- <div class="pos-val"><b class="num">161,234.00<small> HKD</small></b><span>票据估值</span></div>
- </div>
- <div class="pos-pl"><span class="down">-38,766.00 HKD</span><span class="down">-19.38%</span></div>
- <div class="pos-grid f5 s105"><div><span>名义/冻结名义</span><b>200万<em> / 0 CNY</em></b></div><div><span>票据面值</span><b>20万 HKD</b></div><div><span>现价/期初价</span><b>1,234.56<em> / 1,204.56</em></b></div><div><span>强平价</span><b style="color:var(--danger)">1,000.00</b></div><div><span>到期日</span><b>12/16</b></div></div>
- <div class="pos-ops"><span class="pri">详情</span><span>卖出</span><span>增额</span><span class="hot">展期</span></div>
- </div>
- </div>
- <div class="tabbar"><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-note"/></svg></span>票据</div><div class="tb on"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-wallet"/></svg></span>账户</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-bell"/></svg><i class="rdot"></i></span>消息</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-user"/></svg></span>我的</div></div>
- <div class="homebar"></div>
- </div>
- </div>
- <div class="cap"><div class="cap-num">P1 · LIGHT</div><div class="cap-title">资金账户 · 浅色</div>
- <ul><li>白卡浮在 <code>#F6F8FB</code> 页面底上,靠<b>投影</b>分层</li><li>Hero 是全页唯一大面积彩色(品牌蓝渐变)</li></ul>
- </div>
- </div>
- <div class="frame">
- <div class="phone" data-lock data-theme="dark" data-clone="#p-account"></div>
- <div class="cap"><div class="cap-num">P1 · DARK</div><div class="cap-title">资金账户 · 深色</div>
- <ul><li>卡片改用 <code>--line</code> <b>描边</b>分层(深色下投影不可见)</li><li>Hero 渐变压暗并加品牌色描边;角标等实心底上的文字转近黑</li></ul>
- </div>
- </div>
- </div>
- <div class="pair">
- <div class="frame">
- <div class="phone" id="p-inq" data-lock data-theme="light">
- <div class="screen">
- <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
- <div class="appbar"><h1>共赢票据</h1></div>
- <div class="tabs" style="margin-top:12px"><span class="on">询价</span><span>订单</span></div>
- <div class="body">
- <div class="ipanel">
- <div class="search"><svg class="icn" viewBox="0 0 24 24"><use href="#i-search"/></svg><span class="ph">股票代码/拼音/名称</span></div>
-
- <div class="frm2">
- <div><span class="lbl">方向</span><div class="rofield"><b>CALL</b><span>只读</span></div></div>
- <div><span class="lbl">周期</span><div class="rofield"><b>1M</b><svg class="icn" viewBox="0 0 24 24"><use href="#i-down"/></svg></div></div>
- </div>
- <span class="lbl" style="margin-top:13px">名义本金</span>
- <div class="chips"><span class="chip on">100万</span><span class="chip">200万</span><span class="chip">300万</span><span class="chip">500万</span><span class="chip">1000万</span><span class="chip dash">自定义</span></div>
- <div class="frm-btns"><div class="btn off">询价</div><div class="iconbtn"><svg class="icn" viewBox="0 0 24 24"><use href="#i-history"/></svg></div></div>
- </div>
- <div class="card-hd" style="padding:13px 16px 9px"><h3 style="font-size:13px;color:var(--ink-3);font-weight:500">今日询价 · 倒序</h3><span class="viewtog"><span class="on"><svg class="icn" viewBox="0 0 24 24"><rect x="3.5" y="4" width="17" height="7" rx="2"/><rect x="3.5" y="13" width="17" height="7" rx="2"/></svg></span><span><svg class="icn" viewBox="0 0 24 24"><rect x="3.5" y="4.5" width="17" height="15" rx="2"/><line x1="3.5" y1="9.5" x2="20.5" y2="9.5"/><line x1="3.5" y1="14.5" x2="20.5" y2="14.5"/><line x1="9.6" y1="4.5" x2="9.6" y2="19.5"/></svg></span></span></div>
- <div class="card qc">
- <span class="corner">NEW</span>
- <div class="qc-top">
- <div><div class="qc-name">贵州茅台 <i class="cmark">C</i></div><div class="qc-sub">600519.SH · CALL · 1M</div></div>
- <div class="qc-r"><span class="st done"><i></i>已完成</span><div class="qc-time">11:15:15</div></div>
- </div>
- <div class="qc-meta"><span><em>名义本金</em>200万</span><span><em>报价</em>3 条</span></div>
- </div>
- <div class="card qc">
-
- <div class="qc-top">
- <div><div class="qc-name">贵州燃气 <i class="cmark">C</i></div><div class="qc-sub">600903.SH · CALL · 1M</div></div>
- <div class="qc-r"><span class="st live"><i></i>询价中</span><div class="qc-time">11:42:40</div></div>
- </div>
- <div class="qc-meta"><span><em>名义本金</em>100万</span><span><em>报价</em>--</span></div>
- </div>
- <div class="card qc">
-
- <div class="qc-top">
- <div><div class="qc-name">贵州三力 <i class="cmark">C</i></div><div class="qc-sub">603439.SH · CALL · 1M</div></div>
- <div class="qc-r"><span class="st live"><i></i>待处理</span><div class="qc-time">10:49:41</div></div>
- </div>
- <div class="qc-meta"><span><em>名义本金</em>500万</span><span><em>报价</em>--</span></div>
- </div>
- <div class="card qc">
-
- <div class="qc-top">
- <div><div class="qc-name">平安银行 <i class="cmark">C</i></div><div class="qc-sub">000001.SZ · CALL · 1M</div></div>
- <div class="qc-r"><span class="st rej"><i></i>已拒绝</span><div class="qc-time">09:40:12</div></div>
- </div>
- <div class="qc-meta"><span><em>名义本金</em>100万</span><span><em>报价</em>--</span></div>
- </div>
- </div>
- <div class="tabbar"><div class="tb on"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-note"/></svg></span>票据</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-wallet"/></svg></span>账户</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-bell"/></svg><i class="rdot"></i></span>消息</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-user"/></svg></span>我的</div></div>
- <div class="homebar"></div>
- </div>
- </div>
- <div class="cap"><div class="cap-num">P2 · LIGHT</div><div class="cap-title">询价主页 · 浅色</div>
- <ul><li>筛选区是白色面板,列表卡片在灰底上</li><li>只读字段用次级面底 + 「只读」字样,不靠置灰</li></ul>
- </div>
- </div>
- <div class="frame">
- <div class="phone" data-lock data-theme="dark" data-clone="#p-inq"></div>
- <div class="cap"><div class="cap-num">P2 · DARK</div><div class="cap-title">询价主页 · 深色</div>
- <ul><li>品牌色提亮为 <code>#5B8CFF</code>,主按钮文字转 <code>#05122E</code></li><li>置灰按钮用 <code>--surface-3</code> 底 + <code>--ink-4</code> 字,辉光消失</li></ul>
- </div>
- </div>
- </div>
- </div>
- <div class="sec">
- <div class="sec-head"><span class="sec-num">05</span><span class="sec-name">组件级对照</span><span class="sec-rule"></span><span class="sec-note">同一组件在两套主题下的取值差异 · 变体以代码为准(AppButton / StatusDot / Tag / CornerBadge)</span></div>
- <div class="compo">
- <div class="lt">
- <h5>按钮 BUTTON · LIGHT</h5>
- <div data-theme="light"><div class="cmp-col"><div class="btn">主按钮</div><div class="btn ghost">次按钮(描边)</div><div class="btn tonal">次级面按钮(重置)</div><div class="btn off">禁用</div><div class="btn dgtext">登出(危险文字)</div></div></div>
- </div>
- <div class="dk">
- <h5>按钮 BUTTON · DARK</h5>
- <div data-theme="dark"><div class="cmp-col"><div class="btn">主按钮</div><div class="btn ghost">次按钮(描边)</div><div class="btn tonal">次级面按钮(重置)</div><div class="btn off">禁用</div><div class="btn dgtext">登出(危险文字)</div></div></div>
- </div>
- <div class="lt">
- <h5>状态 STATUS · LIGHT</h5>
- <div data-theme="light"><div class="cmp-col" style="gap:11px;font-size:13px"><span class="st wait"><i></i>待报</span><span class="st live"><i></i>询价中</span><span class="st sub"><i></i>待审批</span><span class="st done"><i></i>已完成</span><span class="st rej"><i></i>已拒绝</span><span class="st exp"><i></i>已失效</span></div></div>
- </div>
- <div class="dk">
- <h5>状态 STATUS · DARK</h5>
- <div data-theme="dark"><div class="cmp-col" style="gap:11px;font-size:13px"><span class="st wait"><i></i>待报</span><span class="st live"><i></i>询价中</span><span class="st sub"><i></i>待审批</span><span class="st done"><i></i>已完成</span><span class="st rej"><i></i>已拒绝</span><span class="st exp"><i></i>已失效</span></div></div>
- </div>
- </div>
- <div class="compo" style="margin-top:14px">
- <div class="lt">
- <h5>输入与提示 · LIGHT</h5>
- <div data-theme="light"><div class="cmp-col cmp-field">
- <span class="lbl" style="margin:0">增额金额</span>
- <div class="field"><span class="ph">最低增额10万</span><span class="u">万</span></div>
- <div class="field focus"><b>50</b><span class="u">万</span></div>
- <div class="field err"><b>5</b><span class="u">万</span></div>
- <div class="errtip" style="margin-top:-4px"><svg class="icn sm" viewBox="0 0 24 24"><use href="#i-alert"/></svg>最低增额10万</div>
- <div class="notice info"><svg class="icn sm" viewBox="0 0 24 24"><use href="#i-info"/></svg><span>本条为通知副本,以询价单实时状态为准。</span></div>
- <div class="notice warn"><svg class="icn sm" viewBox="0 0 24 24"><use href="#i-alert"/></svg><span>本次为强制更新,请升级后继续使用。</span></div>
- </div></div>
- </div>
- <div class="dk">
- <h5>输入与提示 · DARK</h5>
- <div data-theme="dark"><div class="cmp-col cmp-field">
- <span class="lbl" style="margin:0">增额金额</span>
- <div class="field"><span class="ph">最低增额10万</span><span class="u">万</span></div>
- <div class="field focus"><b>50</b><span class="u">万</span></div>
- <div class="field err"><b>5</b><span class="u">万</span></div>
- <div class="errtip" style="margin-top:-4px"><svg class="icn sm" viewBox="0 0 24 24"><use href="#i-alert"/></svg>最低增额10万</div>
- <div class="notice info"><svg class="icn sm" viewBox="0 0 24 24"><use href="#i-info"/></svg><span>本条为通知副本,以询价单实时状态为准。</span></div>
- <div class="notice warn"><svg class="icn sm" viewBox="0 0 24 24"><use href="#i-alert"/></svg><span>本次为强制更新,请升级后继续使用。</span></div>
- </div></div>
- </div>
- <div class="lt">
- <h5>标签 · 角标 · 涨跌 · LIGHT</h5>
- <div data-theme="light"><div class="cmp-col">
- <div class="cmp-row"><span class="tag t-brand">买入</span><span class="tag t-danger">卖出</span><span class="tag t-ok">已开通</span><span class="tag t-warn">增额</span><span class="tag t-accent">到期</span><span class="tag t-mute">已撤</span></div>
- <div class="cmp-cornerrow"><span class="corner">增额</span><span class="corner due">到期</span><span class="corner pend">待生效</span><span class="corner">NEW</span></div>
- <div class="cmp-pl" style="margin-top:6px"><span class="up">+221,234.00 HKD<small>+10.62%</small></span><span class="down">-178,766.00 HKD<small>-89.38%</small></span><span class="flat">0.00 HKD<small>0.00%</small></span></div>
- </div></div>
- </div>
- <div class="dk">
- <h5>标签 · 角标 · 涨跌 · DARK</h5>
- <div data-theme="dark"><div class="cmp-col">
- <div class="cmp-row"><span class="tag t-brand">买入</span><span class="tag t-danger">卖出</span><span class="tag t-ok">已开通</span><span class="tag t-warn">增额</span><span class="tag t-accent">到期</span><span class="tag t-mute">已撤</span></div>
- <div class="cmp-cornerrow"><span class="corner">增额</span><span class="corner due">到期</span><span class="corner pend">待生效</span><span class="corner">NEW</span></div>
- <div class="cmp-pl" style="margin-top:6px"><span class="up">+221,234.00 HKD<small>+10.62%</small></span><span class="down">-178,766.00 HKD<small>-89.38%</small></span><span class="flat">0.00 HKD<small>0.00%</small></span></div>
- </div></div>
- </div>
- </div>
- <div class="compo" style="margin-top:14px">
- <div class="lt">
- <h5>筛选组件 · LIGHT</h5>
- <div data-theme="light"><div class="cmp-panel">
- <div class="fsearch" style="margin:0 12px"><svg class="icn" viewBox="0 0 24 24"><use href="#i-search"/></svg>股票代码/拼音/名称</div>
- <div class="fcond" style="padding:10px 12px 0"><span class="fpill on">近三月 <svg class="icn" viewBox="0 0 24 24"><use href="#i-down"/></svg></span><span class="fright"><span class="fmore">筛选 <svg class="icn" viewBox="0 0 24 24"><use href="#i-filter"/></svg></span><span class="viewtog sep"><span class="on"><svg class="icn" viewBox="0 0 24 24"><rect x="3.5" y="4" width="17" height="7" rx="2"/><rect x="3.5" y="13" width="17" height="7" rx="2"/></svg></span><span><svg class="icn" viewBox="0 0 24 24"><rect x="3.5" y="4.5" width="17" height="15" rx="2"/><line x1="3.5" y1="9.5" x2="20.5" y2="9.5"/><line x1="3.5" y1="14.5" x2="20.5" y2="14.5"/><line x1="9.6" y1="4.5" x2="9.6" y2="19.5"/></svg></span></span></span></div>
- <div class="filterbar"><span class="fb on">全部</span><span class="fb">待审批</span><span class="fb">已驳回</span><span class="fb">已通过</span></div>
- </div></div>
- </div>
- <div class="dk">
- <h5>筛选组件 · DARK</h5>
- <div data-theme="dark"><div class="cmp-panel">
- <div class="fsearch" style="margin:0 12px"><svg class="icn" viewBox="0 0 24 24"><use href="#i-search"/></svg>股票代码/拼音/名称</div>
- <div class="fcond" style="padding:10px 12px 0"><span class="fpill on">近三月 <svg class="icn" viewBox="0 0 24 24"><use href="#i-down"/></svg></span><span class="fright"><span class="fmore">筛选 <svg class="icn" viewBox="0 0 24 24"><use href="#i-filter"/></svg></span><span class="viewtog sep"><span class="on"><svg class="icn" viewBox="0 0 24 24"><rect x="3.5" y="4" width="17" height="7" rx="2"/><rect x="3.5" y="13" width="17" height="7" rx="2"/></svg></span><span><svg class="icn" viewBox="0 0 24 24"><rect x="3.5" y="4.5" width="17" height="15" rx="2"/><line x1="3.5" y1="9.5" x2="20.5" y2="9.5"/><line x1="3.5" y1="14.5" x2="20.5" y2="14.5"/><line x1="9.6" y1="4.5" x2="9.6" y2="19.5"/></svg></span></span></span></div>
- <div class="filterbar"><span class="fb on">全部</span><span class="fb">待审批</span><span class="fb">已驳回</span><span class="fb">已通过</span></div>
- </div></div>
- </div>
- </div>
- <div class="bullets" style="margin-top:14px;color:var(--canvas-mute)">
- <li>按钮三种变体:主按钮(实心)· 次按钮(描边)· 次级面(筛选面板「重置」、弹层「取消」);<b>没有实心危险按钮</b>,危险动作用次按钮 + 危险色字或确认框里的危险色文字</li>
- <li>主按钮置灰是三件套:<code>--surface-3</code> 底 + <code>--ink-4</code> 字 + 去辉光;次按钮置灰用透明度</li>
- <li>状态点:进行中两档画<b>空心圈</b>(询价中 = 琥珀、待审批 = 品牌),已终结的画实心点;认不出的状态只写文字、不画点</li>
- <li>标签九种色调:brand · amber · rise · fall · ok · warn · mute(弱底)+ solid · danger(实心)</li>
- </div>
- </div>
- <div class="sec" style="margin-bottom:20px">
- <div class="sec-head"><span class="sec-num">06</span><span class="sec-name">换肤落地</span><span class="sec-rule"></span><span class="sec-note">三端同一份主题代码,只有跟随系统的信号来源不同</span></div>
- <table class="spec">
- <tr><th style="width:110px">端</th><th style="width:250px">主题载体</th><th style="width:200px">跟随系统</th><th>切换与注意</th></tr>
- <tr><td><b>iOS</b></td><td class="m">Tamagui 主题 light / dark(色值来自 theme/colors.ts)</td><td class="m">系统外观(traitCollection)</td><td>强制模式把偏好下发 <code>overrideUserInterfaceStyle</code>:液态玻璃底栏、键盘、系统选择器跟着变;状态栏随主题;不重启</td></tr>
- <tr><td><b>Android</b></td><td class="m">同上</td><td class="m">系统外观(uiMode)</td><td>下发 <code>AppCompatDelegate</code> 夜间模式;根窗口底色同步刷,返回手势时屏幕边缘不闪浅色</td></tr>
- <tr><td><b>H5</b></td><td class="m">同上(react-native-web)</td><td class="m">prefers-color-scheme</td><td>静态渲染的首屏固定浅色,水合后切到偏好(与语言同一做法)</td></tr>
- <tr><td colspan="4" style="background:var(--surface-2)">
- <b style="color:var(--canvas-ink)">硬规则</b> ① 十六进制色值<b>只允许出现在 theme/colors.ts</b>,组件一律引用语义键;② 切主题<b>不得改变任何尺寸</b>(布局、字号、间距、圆角、图标);③ 状态传达必须<b>颜色 + 文字</b>双通道;④ 机构换品牌色只改 <code>BRAND_PALETTES</code> 的深浅两套覆盖,不改组件。
- </td></tr>
- </table>
- </div>
- <script>
- (function(){
- var root=document.documentElement,btns=document.querySelectorAll('.skin button');
- document.querySelectorAll('[data-clone]').forEach(function(el){
- var src=document.querySelector(el.getAttribute('data-clone'));
- if(src) el.innerHTML=src.innerHTML;
- });
- function set(t){
- root.setAttribute('data-theme',t);
- btns.forEach(function(b){b.classList.toggle('on',b.dataset.set===t)});
- document.querySelectorAll('.phone:not([data-lock])').forEach(function(p){p.setAttribute('data-theme',t)});
- try{localStorage.setItem('hh-skin',t)}catch(e){}
- }
- btns.forEach(function(b){b.addEventListener('click',function(){set(b.dataset.set)})});
- document.body.setAttribute('data-h',String(document.body.scrollHeight));
- var hash=(location.hash||'').replace('#','');
- var saved=null;try{saved=localStorage.getItem('hh-skin')}catch(e){}
- set(hash==='dark'||hash==='light'?hash:(saved||'light'));
- })();
- </script>
- </body>
- </html>
|