:root{--navy:#112642;--navy-2:#1a3557;--gold:#c9a45c;--gold-light:#f4ecd9;--ink:#1b2b40;--muted:#8290a2;--line:#e5eaf1;--canvas:#f4f6fa;--green:#268b63;--red:#c65a54;--blue:#4775bf}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:#e8edf4;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.phone-shell{position:relative;display:flex;flex-direction:column;width:min(100%,30rem);height:100dvh;min-height:35rem;margin:auto;overflow:hidden;background:var(--canvas)}
.finance-header{flex:none;padding:.62rem .82rem .58rem;color:#f4f7fc;background:linear-gradient(125deg,#112642,#1a3556 72%,#263d5b)}
.header-main{display:flex;align-items:center;gap:.45rem}
.brand{display:flex;align-items:center;gap:.45rem;flex:1;min-width:0}
.brand-mark{display:grid;place-items:center;flex:none;width:2.15rem;height:2.15rem;border:1px solid #e8d5a46b;border-radius:.68rem;color:#e5ca89;background:linear-gradient(145deg,#294362,#192f4c);box-shadow:0 .3rem .8rem #08172d55;font-size:.94rem}
.brand-copy{display:grid;gap:.08rem;min-width:0}.brand-copy strong{color:#fff;font-size:.86rem;letter-spacing:.04rem}.brand-copy small{color:#9eafc4;font-size:.43rem;letter-spacing:.11rem}
.icon-button,.avatar{position:relative;display:grid;place-items:center;flex:none;width:1.78rem;height:1.78rem;border:1px solid #ffffff33;border-radius:50%;color:#e8d49f;background:#ffffff0d;font-size:.72rem}
.icon-button b{position:absolute;top:.02rem;right:.02rem;display:grid;place-items:center;width:.7rem;height:.7rem;border:1px solid #162d49;border-radius:50%;color:#fff;background:#c85c56;font-size:.38rem}
.avatar{color:#f1dba5;font-size:.6rem;font-weight:750;background:#c9a45c1e}
.header-split{display:grid;grid-template-columns:.9fr 1.1fr;gap:.42rem;margin-top:.58rem}
.role-zone{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:.52rem .6rem;border:1px solid #ffffff15;border-radius:.62rem;background:linear-gradient(140deg,#1d3859,#182f4d)}
.overline{color:#c8aa68;font-size:.38rem;font-weight:800;letter-spacing:.13rem}
.role-zone strong{margin:.12rem 0;color:#fff;font-size:.82rem;font-weight:700;white-space:nowrap}
.role-zone small{overflow:hidden;color:#b9c5d3;font-size:.48rem;text-overflow:ellipsis;white-space:nowrap}.role-zone small i{margin-right:.12rem;color:#d0b474}
.snapshot-zone{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;padding:.38rem .3rem;border:1px solid #d6bd8055;border-radius:.62rem;background:linear-gradient(145deg,#f4ecd9,#e7d7b5)}
.snapshot-zone>div{display:grid;justify-items:center;gap:.1rem;border-right:1px solid #b99c6448}.snapshot-zone>div:last-child{border:0}.snapshot-zone b{color:#20334d;font-size:.87rem;line-height:1}.snapshot-zone small{color:#677285;font-size:.4rem;white-space:nowrap}.snapshot-zone .due b{color:#bb6256}
.header-foot{display:flex;justify-content:space-between;margin:.47rem .08rem 0;color:#9fb0c3;font-size:.43rem}.header-foot span{display:flex;align-items:center;gap:.23rem}.status-dot{width:.34rem;height:.34rem;border-radius:50%;background:#56bd8c;box-shadow:0 0 .4rem #56bd8c88}
.app-body{flex:1;min-height:0;overflow:auto;padding:.58rem .78rem .95rem;scrollbar-width:none}.app-body::-webkit-scrollbar{display:none}
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.32rem;margin-bottom:.62rem}
.kpi{display:grid;align-content:start;gap:.18rem;min-width:0;min-height:4.45rem;padding:.49rem .4rem .42rem;border:1px solid #e4e9f0;border-radius:.68rem;background:#fff;box-shadow:0 .24rem .7rem #1931500a}
.kpi>span{overflow:hidden;color:#748398;font-size:.49rem;white-space:nowrap;text-overflow:ellipsis}
.kpi strong{overflow:hidden;color:#1c2e45;font-size:.91rem;line-height:1.12;white-space:nowrap}.kpi strong small{margin-left:.08rem;color:#8090a3;font-size:.42rem;font-weight:550}
.kpi em{overflow:hidden;color:#929dad;font-size:.36rem;font-style:normal;white-space:nowrap;text-overflow:ellipsis}.kpi .gold{color:#9d7937}.kpi .profit{color:#268b63}.kpi .risk{color:#bd5d57}
.risk-kpi{border-color:#eddcda;background:linear-gradient(145deg,#fff,#fffafa)}.scale-kpi{border-top:2px solid var(--gold)}
.yield-card{padding:.72rem .75rem .58rem;border:1px solid #e3e8ef;border-radius:.82rem;background:#fff;box-shadow:0 .32rem .9rem #1931500b}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:.4rem}.eyebrow{color:#9aa6b5;font-size:.4rem;font-weight:800;letter-spacing:.12rem}.section-head h1,.section-head h2{margin:.14rem 0 0;color:#20324a;font-size:.82rem;font-weight:750;letter-spacing:.01rem}
.period-switch{display:flex;gap:.12rem;padding:.15rem;border-radius:.45rem;background:#f2f4f7}.period-switch button{min-width:1.65rem;padding:.25rem .34rem;border-radius:.32rem;color:#7e8998;font-size:.44rem}.period-switch button.active{color:#fff;background:var(--navy);box-shadow:0 .1rem .25rem #182a432a}
.yield-summary{display:flex;align-items:baseline;gap:.4rem;margin:.5rem 0 .05rem}.yield-summary>strong{color:#20324a;font-size:1.13rem;line-height:1}.yield-summary>strong small{margin-left:.04rem;color:#75869a;font-size:.58rem}.yield-summary>span{color:#268b63;font-size:.43rem}.yield-summary>small{margin-left:auto;color:#929dad;font-size:.42rem}
.chart-wrap{height:6.1rem}.yield-chart{display:block;width:100%;height:100%;overflow:visible}.yield-chart text{fill:#a0aab7;font:9px Inter,-apple-system,sans-serif}.chart-grid{fill:none;stroke:#e9edf2;stroke-width:1;stroke-dasharray:3 4}.chart-area{fill:url(#yieldFill)}.chart-line{fill:none;stroke:#bc9850;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}.chart-point{fill:#fff;stroke:#b8944c;stroke-width:2.4}
.chart-legend{display:flex;align-items:center;justify-content:space-between;padding-top:.15rem;border-top:1px solid #f0f2f5;color:#8995a5;font-size:.42rem}.chart-legend span{display:flex;align-items:center;gap:.22rem}.chart-legend span i{width:.44rem;height:.12rem;border-radius:1rem;background:var(--gold)}.chart-legend b{color:#53647b;font-weight:650}
.module-heading{margin:.76rem .04rem .4rem}.module-heading h2,.project-heading h2{font-size:.78rem}.text-link{color:#9b793d;font-size:.45rem;white-space:nowrap}
.module-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.36rem}
.module-card{display:flex;align-items:center;gap:.4rem;min-width:0;padding:.48rem .46rem;border:1px solid #e4e8ef;border-radius:.68rem;background:#fff;text-align:left;box-shadow:0 .2rem .55rem #19315008;transition:transform .15s ease,border-color .15s ease}
.module-card:active{transform:scale(.98);border-color:#cbb276}.module-icon{display:grid;place-items:center;flex:none;width:1.85rem;height:1.85rem;border-radius:.58rem;font-size:.78rem}.module-icon.navy{color:#395d8b;background:#eaf0f7}.module-icon.gold-bg{color:#ad8543;background:#f6f0e2}.module-icon.green-bg{color:#338566;background:#e7f3ec}.module-icon.blue-bg{color:#547db4;background:#eaf0fa}
.module-card>span:nth-child(2){display:grid;flex:1;gap:.15rem;min-width:0}.module-card strong{overflow:hidden;color:#2a394c;font-size:.57rem;text-overflow:ellipsis;white-space:nowrap}.module-card small{overflow:hidden;color:#94a0af;font-size:.41rem;text-overflow:ellipsis;white-space:nowrap}.module-card .arrow{flex:none;color:#a5afbc;font-size:.48rem}
.project-heading{margin:.82rem .04rem .4rem}.project-list{overflow:hidden;border:1px solid #e3e8ef;border-radius:.75rem;background:#fff}
.project-row{display:flex;align-items:center;gap:.42rem;min-width:0;padding:.54rem .48rem;border-bottom:1px solid #edf0f4;cursor:pointer}.project-row:last-child{border:0}.project-logo{display:grid;place-items:center;flex:none;width:2rem;height:2rem;border-radius:.64rem;font-size:.84rem}.project-logo.semiconductor{color:#536fa5;background:#edf1f8}.project-logo.energy{color:#b68a3e;background:#f7f1e2}.project-logo.health{color:#498b77;background:#eaf4ef}
.project-main{display:grid;flex:1;gap:.18rem;min-width:0}.project-title{display:flex;align-items:center;gap:.3rem;min-width:0}.project-title strong{overflow:hidden;color:#28394e;font-size:.59rem;text-overflow:ellipsis;white-space:nowrap}.status{flex:none;padding:.15rem .28rem;border-radius:1rem;font-size:.37rem;white-space:nowrap}.status.active{color:#348264;background:#eaf5ef}.status.due-soon{color:#a77c37;background:#f8f1e3}.status.diligence{color:#5975aa;background:#edf1f9}
.project-main>small{overflow:hidden;color:#8794a5;font-size:.43rem;text-overflow:ellipsis;white-space:nowrap}.project-progress{display:flex;align-items:center;gap:.28rem}.project-progress>span{flex:1;height:.2rem;overflow:hidden;border-radius:1rem;background:#eef1f5}.project-progress>span i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#c5a55f,#dfc583)}.project-progress small{flex:none;color:#9aa5b2;font-size:.37rem}.project-row>button{display:grid;place-items:center;flex:none;width:1rem;height:1.5rem;color:#a3adba;font-size:.56rem}
.risk-strip{display:flex;align-items:center;gap:.4rem;margin-top:.58rem;padding:.53rem .5rem;border:1px solid #ecd9d7;border-radius:.68rem;background:linear-gradient(100deg,#fff9f8,#fff)}.risk-icon{display:grid;place-items:center;flex:none;width:1.68rem;height:1.68rem;border-radius:.52rem;color:#bd5d57;background:#f9e9e7;font-size:.75rem}.risk-strip>div{display:grid;flex:1;gap:.14rem;min-width:0}.risk-strip strong{color:#60403f;font-size:.52rem}.risk-strip small{overflow:hidden;color:#997b78;font-size:.4rem;text-overflow:ellipsis;white-space:nowrap}.risk-strip button{flex:none;color:#b15c54;font-size:.43rem}
footer{padding:.68rem .05rem .1rem;color:#8492a4;font-size:.44rem}footer span{display:block;margin-top:.16rem;color:#a2acb8;font-size:.4rem}
.bottom-nav{position:relative;z-index:2;display:flex;flex:none;align-items:center;justify-content:space-around;padding:.4rem .18rem max(.43rem,env(safe-area-inset-bottom));border-top:1px solid #e3e8ef;background:#fff}.bottom-nav button{display:grid;justify-items:center;gap:.13rem;min-width:2.4rem;color:#99a5b4;font-size:.43rem}.bottom-nav button>i{font-size:.78rem}.bottom-nav button.active{color:#ad8844}.bottom-nav button.active>i{color:#ba9857}
.toast{position:absolute;z-index:8;bottom:4.2rem;left:50%;max-width:88%;padding:.5rem .7rem;border-radius:.55rem;color:#fff;background:#18304f;font-size:.55rem;text-align:center;white-space:nowrap;opacity:0;pointer-events:none;transform:translate(-50%,.4rem);transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}
.modal-wrap{position:absolute;inset:0;z-index:9;display:none;align-items:end;background:#0e20387d;backdrop-filter:blur(2px)}.modal-wrap.open{display:flex}.modal{position:relative;width:100%;max-height:78%;overflow:auto;padding:1.3rem 1rem 1.4rem;border-radius:1rem 1rem 0 0;background:#fff;box-shadow:0 -.5rem 1.5rem #10233c2a}.close{position:absolute;top:.78rem;right:.8rem;display:grid;place-items:center;width:1.55rem;height:1.55rem;border-radius:50%;color:#77869a;background:#f1f3f6}.modal h2{margin:0 2rem .35rem 0;color:#21334b;font-size:.9rem}.modal p{margin:.15rem 0 .75rem;color:#8390a2;font-size:.55rem;line-height:1.7}.modal-row{margin:.32rem 0;padding:.57rem .62rem;border-radius:.5rem;color:#53647a;background:#f3f5f8;font-size:.54rem}.modal-primary{width:100%;margin-top:.55rem;padding:.62rem;border-radius:.55rem;color:#fff;background:linear-gradient(105deg,#1d3a5e,#122947);font-size:.58rem;font-weight:650}
@media(min-width:600px){body{display:grid;min-height:100dvh;place-items:center;padding:1rem}.phone-shell{width:26rem;height:min(56rem,calc(100dvh - 2rem));border:.58rem solid #151b26;border-radius:2.1rem;box-shadow:0 1.5rem 3.3rem #1c304a38}.bottom-nav{border-radius:0 0 1.48rem 1.48rem}.modal-wrap{border-radius:1.5rem}}
@media(max-width:360px){.finance-header{padding-right:.65rem;padding-left:.65rem}.app-body{padding-right:.65rem;padding-left:.65rem}.header-split{grid-template-columns:.86fr 1.14fr;gap:.32rem}.role-zone{padding:.48rem}.role-zone strong{font-size:.74rem}.snapshot-zone{padding-right:.2rem;padding-left:.2rem}.snapshot-zone small{font-size:.37rem}.kpi-grid{gap:.24rem}.kpi{padding-right:.28rem;padding-left:.28rem}.kpi>span{font-size:.44rem}.kpi strong{font-size:.82rem}.module-card{gap:.3rem;padding-right:.34rem;padding-left:.34rem}.module-icon{width:1.65rem;height:1.65rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Usable navigation sizing and viewport-contained mockup preview. */
.phone-shell,.app-shell{min-height:0!important}
.bottom-nav,.app-nav{box-sizing:border-box;min-height:4.2rem;padding-block:.42rem max(.48rem,env(safe-area-inset-bottom))}
.bottom-nav button,.bottom-nav a,.app-nav button,.app-nav a{box-sizing:border-box;min-width:2.75rem;min-height:2.85rem;padding:.22rem .12rem;gap:.24rem;font-size:.68rem;line-height:1.15;touch-action:manipulation}
.bottom-nav button>i,.bottom-nav a>i,.app-nav button>i,.app-nav a>i{font-size:1.3rem;line-height:1}
.bottom-nav button.scan,.bottom-nav button.nav-center{min-width:2.9rem;min-height:2.9rem}
.bottom-nav button.scan>i,.bottom-nav button.nav-center>i{font-size:1.35rem}.bottom-nav button.scan>span,.bottom-nav button.nav-center>span{font-size:.58rem}

.phone-shell,.app-shell{position:relative}.modal-wrap,.modal-backdrop{background:rgba(20,32,45,.34);backdrop-filter:none}.modal,.app-modal{max-height:68%}
