:root{color:#1d2527;background:#eef3f0;font-family:Inter,Microsoft YaHei,PingFang SC,Noto Sans SC,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{cursor:pointer}.app{min-height:100vh;padding:24px}.topbar{align-items:center;display:flex;gap:16px;justify-content:space-between;margin:0 auto 18px;max-width:1440px}.eyebrow{color:#69777a;font-size:.82rem;margin:0 0 5px;text-transform:uppercase}h1,h2,h3,p{margin:0}h1{font-size:clamp(1.55rem,2.3vw,2.6rem);font-weight:760}.statusPill{align-items:center;border:1px solid #c8d5d1;border-radius:999px;display:inline-flex;font-weight:700;gap:8px;padding:10px 14px;white-space:nowrap}.statusPill.pass{background:#dff4e8;color:#14603a}.statusPill.watch{background:#fff2cf;color:#76520b}.statusPill.fail{background:#ffe0df;color:#8a2624}.heroBand{align-items:stretch;background:linear-gradient(90deg,#0e1f20d1,#0e1f2038),url(/roof-map.png) center / cover;border-radius:8px;color:#fff;display:grid;gap:22px;grid-template-columns:minmax(280px,.9fr) minmax(280px,1fr);margin:0 auto 18px;max-width:1440px;min-height:330px;overflow:hidden;padding:28px}.heroCopy{align-self:end;max-width:620px}.tag{background:#ffffff2e;border:1px solid rgba(255,255,255,.28);border-radius:999px;display:inline-flex;font-weight:700;margin-bottom:12px;padding:7px 11px}.heroCopy h2{font-size:clamp(2.2rem,6vw,5.8rem);line-height:.98;margin-bottom:14px}.heroCopy p{color:#ffffffe0;font-size:clamp(1rem,1.8vw,1.34rem);line-height:1.5}.roofVisual{align-self:center;aspect-ratio:2.95 / 1;background:#eef3f0e6;border:1px solid rgba(255,255,255,.6);border-radius:8px;box-shadow:0 20px 50px #00000038;color:#1d2527;display:grid;grid-template-rows:1fr auto;max-height:310px;min-height:188px;padding:18px;position:relative}.roofNorth{align-items:center;background:#f3c74a;border-radius:999px;display:flex;font-size:.78rem;font-weight:800;height:28px;justify-content:center;position:absolute;right:14px;top:14px;width:28px}.panelGrid{display:grid;gap:4px;height:100%;padding:22px 34px 10px 8px}.panelGrid span{background:linear-gradient(135deg,#1f3f4b,#4c7585);border:1px solid rgba(255,255,255,.65);border-radius:3px;box-shadow:inset 0 0 0 1px #0000001f;min-height:10px}.roofMeta{color:#526061;display:flex;font-size:.86rem;justify-content:space-between;padding-top:10px}.statsGrid{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr));margin:0 auto 18px;max-width:1440px}.stat,.controlsPanel,.resultsPanel,.summaryBox,.versionPanel,.detailPanel,.referenceStrip{background:#ffffffeb;border:1px solid #d9e2df;border-radius:8px}.stat{align-items:center;display:grid;gap:6px;grid-template-columns:auto 1fr;min-height:112px;padding:18px}.statIcon{align-items:center;background:#e3ece8;border-radius:8px;color:#315e68;display:flex;grid-row:span 2;height:42px;justify-content:center;width:42px}.stat span{color:#667376;font-size:.9rem}.stat strong{font-size:clamp(1.25rem,2vw,1.9rem)}.stat.good .statIcon{background:#dff4e8;color:#14603a}.stat.warn .statIcon{background:#fff2cf;color:#76520b}.stat.bad .statIcon{background:#ffe0df;color:#8a2624}.workspace{align-items:start;display:grid;gap:18px;grid-template-columns:minmax(330px,440px) minmax(0,1fr);margin:0 auto;max-width:1440px}.controlsPanel,.resultsPanel{padding:18px}.controlsPanel{display:grid;gap:18px;position:sticky;top:16px}.panelHeader,.summaryHeader,.modeRow,.groupTitle,.switchRow{align-items:center;display:flex}.panelHeader,.summaryHeader,.switchRow{justify-content:space-between}.panelHeader h3,.summaryHeader h3{font-size:1.08rem}.iconButton,.copyButton{align-items:center;background:#1f3f4b;border:0;border-radius:8px;color:#fff;display:inline-flex;gap:8px;min-height:38px;padding:9px 12px}.iconButton{justify-content:center;padding:9px;width:38px}.controlGroup{border-top:1px solid #e3ebe8;display:grid;gap:12px;padding-top:16px}.groupTitle{color:#315e68;font-weight:800;gap:8px}.switchRow{background:#f4f7f5;border-radius:8px;color:#445153;font-size:.92rem;padding:10px 12px}.switchRow input{accent-color:#1f7d63;height:18px;width:18px}.fieldGrid{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.field{display:grid;gap:6px}.field.full{grid-column:1 / -1}.field span{color:#657174;font-size:.84rem;font-weight:650}.field small{color:#718083;font-size:.76rem;line-height:1.35}.inputShell{align-items:center;background:#f8faf9;border:1px solid #d9e2df;border-radius:8px;display:grid;grid-template-columns:minmax(0,1fr) auto;overflow:hidden}.field input,select{background:#f8faf9;border:1px solid #d9e2df;border-radius:8px;color:#1d2527;min-height:42px;min-width:0;padding:0 10px;width:100%}.inputShell input{border:0}.inputShell em{color:#6a7779;font-size:.78rem;font-style:normal;padding-right:10px;white-space:nowrap}.resultsPanel{display:grid;gap:18px}.modeRow{align-items:stretch;flex-wrap:wrap;gap:10px}.planningRow{align-items:center;background:#f1f6f4;border:1px solid #d9e2df;border-radius:8px;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;padding:12px}.planningRow>span{color:#315e68;font-weight:800}.segmented{background:#e9f0ed;border:1px solid #d4dfdb;border-radius:8px;display:inline-flex;gap:4px;padding:4px}.segmented button{background:transparent;border:0;border-radius:6px;color:#445153;font-size:.9rem;min-height:34px;padding:7px 12px}.segmented button.active{background:#fff;box-shadow:0 1px 8px #1f3f4b24;color:#173b46;font-weight:800}.resultGrid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.conclusionPanel{background:#142f33;border-radius:8px;color:#fff;display:grid;gap:18px;grid-template-columns:minmax(260px,1.3fr) minmax(280px,1fr) auto;padding:20px}.conclusionPanel.pass{background:linear-gradient(135deg,#173f38,#255e68)}.conclusionPanel.watch{background:linear-gradient(135deg,#5d4514,#856425)}.conclusionPanel.fail{background:linear-gradient(135deg,#641f24,#8b3434)}.conclusionMain{display:grid;gap:7px}.conclusionMain span,.conclusionMetrics span{color:#ffffffb8;font-size:.85rem;font-weight:700}.conclusionMain strong{font-size:clamp(1.8rem,4vw,3.25rem);line-height:1.05}.conclusionMain p{color:#ffffffd6;line-height:1.55}.conclusionMetrics{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.conclusionMetrics div{background:#ffffff1f;border:1px solid rgba(255,255,255,.18);border-radius:8px;display:grid;gap:8px;padding:12px}.conclusionMetrics strong{font-size:1.25rem}.detailToggle{align-items:center;align-self:center;background:#fff;border:0;border-radius:8px;color:#173b46;display:inline-flex;font-weight:800;gap:8px;min-height:44px;padding:10px 13px;white-space:nowrap}.detailToggle .open{transform:rotate(180deg)}.resultBlock,.weightTable div{background:#f6f8f7;border:1px solid #e1e8e5;border-radius:8px;display:grid;gap:8px;padding:14px}.resultBlock span,.weightTable span{color:#6a7779;font-size:.86rem}.resultBlock strong{font-size:1.35rem}.weightTable{display:grid;gap:10px;grid-template-columns:repeat(4,minmax(0,1fr))}.warningBox{align-items:flex-start;background:#fff8e8;border:1px solid #f0d99d;border-radius:8px;color:#65470a;display:flex;gap:10px;padding:14px}.warningBox div{display:grid;gap:5px}.summaryBox,.versionPanel,.detailPanel,.comparisonPanel,.marketPanel,.taobaoPanel,.assumptionPanel,.caseModelPanel,.mechanicsPanel,.fieldworkPanel,.drawingPanel,.measurementPanel,.sourcePanel,.referenceStrip{padding:16px}.assumptionPanel,.taobaoPanel,.caseModelPanel,.mechanicsPanel,.fieldworkPanel,.drawingPanel,.measurementPanel,.sourcePanel{background:#fff;border:1px solid #d9e2df;border-radius:8px}.assumptionPanel .summaryHeader span,.taobaoPanel .summaryHeader span,.caseModelPanel .summaryHeader span,.mechanicsPanel .summaryHeader span,.fieldworkPanel .summaryHeader span,.drawingPanel .summaryHeader span,.measurementPanel .summaryHeader span,.sourcePanel .summaryHeader span{color:#657174;font-size:.88rem;font-weight:700}.caseModelGrid,.assumptionGrid{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:12px}.caseModelGrid{grid-template-columns:repeat(3,minmax(0,1fr))}.caseModelGrid article,.assumptionGrid article{background:#f7faf8;border:1px solid #e1e8e5;border-radius:8px;display:grid;gap:7px;padding:13px}.caseModelGrid span{color:#2d7a6a;font-size:.8rem;font-weight:800}.caseModelGrid strong{color:#243f43;font-size:1.12rem}.assumptionGrid strong{color:#254e59}.caseModelGrid p,.assumptionGrid p{color:#586668;font-size:.9rem;line-height:1.55}.mechanicsBody{display:grid;gap:14px;grid-template-columns:minmax(0,1.45fr) minmax(280px,.75fr);margin-top:12px}.mechanicsCanvas{background:#eef3f0;border:1px solid #d8e2de;border-radius:8px;min-height:320px;overflow:hidden;position:relative}.modelMarkerLayer{inset:0;pointer-events:none;position:absolute;z-index:4}.modelMarker{background:#fffffff0;border:1px solid #d3ded9;border-radius:8px;box-shadow:0 8px 24px #15272b24;color:#1d2527;display:grid;gap:2px;max-width:156px;min-width:90px;padding:7px 8px;pointer-events:auto;position:absolute;text-align:left;transform:translate(-50%,-50%)}.modelMarker span{color:#1b5c6c;font-size:.74rem;font-weight:900}.modelMarker strong{font-size:.8rem}.modelMarker em{color:#687679;font-size:.7rem;font-style:normal;line-height:1.25}.modelMarker.required{border-color:#ddb55e}.modelMarker.engineer{border-color:#d28383}.modelMarker.verified{background:#e7f7ed;border-color:#1f8a5b}.modelMarker.active{box-shadow:0 0 0 3px #237e682e,0 10px 28px #15272b2e}.mechanicsCanvas canvas{display:block;width:100%}.mechanicsLegend{display:grid;gap:10px}.mechanicsLegend article{background:#f7faf8;border:1px solid #e1e8e5;border-radius:8px;display:grid;gap:7px;padding:13px}.mechanicsLegend span{color:#2d7a6a;font-size:.8rem;font-weight:850}.mechanicsLegend strong{color:#243f43;font-size:1.08rem}.mechanicsLegend p,.mechanicsNote{color:#586668;font-size:.9rem;line-height:1.55}.mechanicsNote{background:#fff8e8;border:1px solid #efd99d;border-radius:8px;margin-top:12px;padding:12px}.verificationGate{border-radius:8px;display:grid;gap:6px;padding:13px}.verificationGate.fail{background:#fff8e8;border:1px solid #efd99d;color:#65470a}.verificationGate.pass{background:#e7f7ed;border:1px solid #9fd0b4;color:#14603a}.verificationGate p{line-height:1.5}.fieldworkList,.materialPresetGrid{display:grid;gap:10px;margin-top:12px}.databaseToolbar{align-items:center;background:#eef5f2;border:1px solid #d6e4df;border-radius:8px;display:flex;gap:10px;justify-content:space-between;margin-top:12px;padding:10px}.databaseToolbar strong{color:#315e68}.databaseToolbar div{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.databaseToolbar button{background:#1f3f4b;border:0;border-radius:8px;color:#fff;font-weight:800;min-height:36px;padding:8px 11px}.databaseToolbar button.danger{background:#8a3434}.fieldworkCard{border:1px solid #e1e8e5;border-radius:8px;display:grid;gap:10px;padding:13px}.fieldworkCard.missing{background:#fffaf0;border-color:#efd99d}.fieldworkCard.complete{background:#f1fbf5;border-color:#9fd0b4}.fieldworkCard.active{box-shadow:inset 0 0 0 2px #2d7a6a}.fieldworkTop{align-items:flex-start;display:grid;gap:10px;grid-template-columns:auto 1fr auto}.fieldworkTop div{display:grid;gap:4px}.fieldworkTop span,.fieldworkMethod small{color:#657174;font-size:.82rem;line-height:1.45}.fieldworkTop em{color:#76520b;font-size:.78rem;font-style:normal;font-weight:900}.fieldworkCard.complete .fieldworkTop em{color:#14603a}.fieldworkCode{background:#1f3f4b;border:0;border-radius:8px;color:#fff;font-weight:900;min-height:42px;min-width:48px;padding:8px}.fieldworkInput{display:grid;gap:6px}.fieldworkInput span{color:#465457;font-size:.84rem;font-weight:800}.fieldworkInput b{color:#2d7a6a}.fieldworkInput input,.fieldworkInput textarea{background:#fff;border:1px solid #d9e2df;border-radius:8px;color:#1d2527;min-height:42px;padding:9px 10px;width:100%}.fieldworkInput textarea{min-height:74px;resize:vertical}.fieldworkMethod{background:#f7faf8;border-radius:8px;display:grid;gap:5px;padding:10px}.photoUpload{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.photoUpload label{align-items:center;background:#1f3f4b;border-radius:8px;color:#fff;display:inline-flex;gap:7px;min-height:38px;overflow:hidden;padding:8px 11px;position:relative}.photoUpload input{cursor:pointer;inset:0;opacity:0;position:absolute}.photoUpload span{color:#657174;font-size:.84rem;font-weight:800}.photoPreviewGrid{display:grid;gap:8px;grid-template-columns:repeat(4,minmax(0,1fr))}.photoPreviewGrid img{aspect-ratio:1}.verifiedCheck{align-items:center;color:#3f4d50;display:flex;gap:8px;font-weight:800}.verifiedCheck input{accent-color:#1f8a5b;height:18px;width:18px}.materialPresetGrid{grid-template-columns:repeat(3,minmax(0,1fr))}.materialPresetGrid button{background:#f4f7f5;border:1px solid #dbe5e1;border-radius:8px;color:#1d2527;display:grid;gap:5px;padding:11px;text-align:left}.materialPresetGrid span,.materialPresetGrid em{color:#657174;font-size:.78rem;font-style:normal;line-height:1.35}.mechanicsCalc{background:#f4f6fb;border-color:#b8c6e2}.drawingGroups,.findingList,.measurementList,.sourceList{display:grid;gap:12px;margin-top:12px}.drawingGroup{background:#f8faf9;border:1px solid #e1e8e5;border-radius:8px;padding:13px}.drawingGroup h4{color:#254e59;margin:0 0 10px}.findingList{margin-top:0}.findingCard,.measurementCard,.sourceCard{background:#fff;border:1px solid #dfe8e5;border-radius:8px;display:grid;gap:8px;padding:12px}.findingTop{align-items:center;display:flex;gap:8px;justify-content:space-between}.findingTop strong{color:#243f43}.findingCard p,.measurementCard p,.sourceCard p{color:#586668;font-size:.9rem;line-height:1.5}.findingCard b{color:#273b40}.findingCard em,.measurementCard small,.sourceCard small{color:#657174;font-size:.82rem;font-style:normal;line-height:1.45}.sourceCard code{background:#eef5f2;border-radius:6px;color:#294d56;font-family:Cascadia Mono,Consolas,monospace;padding:5px 7px;width:fit-content}.badge{border-radius:999px;display:inline-flex;font-size:.75rem;font-weight:900;padding:5px 8px;white-space:nowrap}.badge.confirmed{background:#dff4e8;color:#14603a}.badge.visible{background:#e5efff;color:#255084}.badge.fieldMeasure{background:#fff2cf;color:#76520b}.badge.engineer{background:#ffe0df;color:#8a2624}.taobaoBody{display:grid;gap:12px;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);margin-top:12px}.taobaoPrimary,.taobaoNotes{background:#fff8e8;border:1px solid #efd99d;border-radius:8px;display:grid;gap:8px;padding:13px}.taobaoPrimary span{color:#76520b;font-size:.8rem;font-weight:800}.taobaoPrimary strong{color:#243f43;font-size:1.15rem}.taobaoPrimary p,.taobaoNotes p{color:#5e533d;line-height:1.55}.marketPanel{background:#ffffffeb;border:1px solid #d9e2df;border-radius:8px}.marketPanel .summaryHeader span{color:#657174;font-size:.88rem;font-weight:700}.marketGrid{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:12px}.marketCard{background:#f8faf9;border:1px solid #dfe8e5;border-radius:8px;color:#1d2527;display:grid;gap:7px;padding:13px;text-decoration:none}.marketCard:hover{border-color:#2d7a6a}.marketCard span{color:#315e68;font-weight:800}.marketCard strong{font-size:1.05rem}.marketCard em{color:#657174;font-size:.85rem;font-style:normal;line-height:1.45}.comparisonPanel{background:#ffffffeb;border:1px solid #d9e2df;border-radius:8px}.comparisonPanel .summaryHeader span{color:#657174;font-size:.88rem;font-weight:700}.comparisonGrid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:12px}.comparisonCard{background:#f8faf9;border:1px solid #dfe8e5;border-radius:8px;color:#1d2527;display:grid;gap:6px;padding:13px;text-align:left}.comparisonCard.active,.comparisonCard:hover{border-color:#2d7a6a;box-shadow:inset 0 0 0 1px #2d7a6a}.comparisonCard span{color:#2d7a6a;font-size:.78rem;font-weight:800}.comparisonCard strong{font-size:1.05rem}.comparisonCard em,.comparisonCard small{color:#657174;font-style:normal}.detailPanel{display:grid;gap:16px}.detailIntro{align-items:flex-start;background:#eef5f2;border-radius:8px;color:#304043;display:flex;gap:10px;padding:14px}.detailIntro h3{font-size:1.08rem;margin-bottom:5px}.detailIntro p{color:#586668;line-height:1.55}.detailGrid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.calcCard{border:1px solid #dfe8e5;border-radius:8px;display:grid;gap:10px;padding:14px}.calcCard h4{color:#254e59;font-size:1rem;margin:0}.windCalc{border-color:#d8c48b;background:#fffaf0}.decisionCalc{background:#eef7f5;border-color:#9cc7bd}.dataCalc{background:#f4f6fb;border-color:#b8c6e2}.structureCalc{background:#f7fbf8;border-color:#a9c9bb}.parameterGuide{background:#f4f7f5;border:1px solid #dbe5e1;border-radius:8px;display:grid;gap:8px;padding:12px}.parameterGuide strong{color:#315e68}.parameterGuide p{color:#586668;font-size:.84rem;line-height:1.5}.parameterGuide b{color:#273b40}.formulaLine{background:#f8faf9;border-radius:8px;display:grid;gap:6px;padding:10px}.formulaLine span{color:#657174;font-size:.82rem;font-weight:800}.formulaLine code{color:#294d56;font-family:Cascadia Mono,Consolas,monospace;font-size:.82rem;line-height:1.45;white-space:normal}.formulaLine strong{font-size:1.05rem}.summaryActions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.summaryBox pre{background:#f6f8f7;border-radius:8px;line-height:1.65;margin:12px 0 0;overflow:auto;padding:14px;white-space:pre-wrap}.versionPanel .summaryHeader span{color:#657174;font-size:.88rem;font-weight:700}.versionList{display:grid;gap:10px;margin-top:12px}.versionItem{background:#f7faf8;border:1px solid #dfe8e5;border-radius:8px;color:#1d2527;display:grid;gap:5px;padding:13px;text-align:left}.versionItem:hover{border-color:#88aaa6}.versionItem span{color:#315e68;font-weight:800}.versionItem strong{font-size:1.1rem}.versionItem em,.versionItem small{color:#657174;font-style:normal}.versionItem small{font-size:.78rem}.referenceGrid{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:12px}figure{margin:0}figure img{aspect-ratio:4 / 3;border-radius:8px;display:block;object-fit:cover;width:100%}figcaption{color:#5f6d6f;font-size:.82rem;margin-top:6px}footer{color:#5d6c6f;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;line-height:1.5;margin:24px auto 0;max-width:1180px;text-align:center}footer a{color:#1c6f58;font-weight:800}@media(max-width:1040px){.heroBand,.workspace{grid-template-columns:1fr}.controlsPanel{position:static}.statsGrid,.referenceGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.conclusionPanel{grid-template-columns:1fr}.detailToggle{justify-content:center;width:100%}}@media(max-width:700px){.app{padding:14px}.topbar{align-items:flex-start;flex-direction:column}.heroBand{min-height:0;padding:18px}.statsGrid,.fieldGrid,.resultGrid,.weightTable,.detailGrid,.comparisonGrid,.marketGrid,.taobaoBody,.assumptionGrid,.caseModelGrid,.mechanicsBody,.materialPresetGrid,.photoPreviewGrid,.referenceGrid,.conclusionMetrics{grid-template-columns:1fr}.modeRow{display:grid}.planningRow{align-items:stretch;display:grid}.segmented{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.segmented:first-child{grid-template-columns:repeat(2,minmax(0,1fr))}.heroCopy h2{font-size:2.15rem}.heroCopy p{font-size:.96rem}.roofVisual{min-height:128px;padding:12px}.mechanicsCanvas{min-height:300px}.modelMarker{max-width:128px;min-width:74px;padding:6px}.modelMarker em{display:none}.fieldworkTop{grid-template-columns:auto 1fr}.fieldworkTop em{grid-column:1 / -1}.databaseToolbar{align-items:stretch;display:grid}.databaseToolbar div,.databaseToolbar button{width:100%}.conclusionPanel{padding:16px}.conclusionMain strong{font-size:1.7rem}.summaryHeader{align-items:flex-start;flex-direction:column;gap:8px}.summaryActions,.copyButton{width:100%}.copyButton{justify-content:center}.assumptionGrid article,.taobaoPrimary,.taobaoNotes,.marketCard,.comparisonCard,.formulaLine{padding:12px}}
