:root{--bg:#0b0e14;--panel:#131722;--panel2:#1a2030;--border:#232a3b;--text:#e6e9f0;--muted:#8a93a6;--accent:#4f9dff;--green:#35c07f;--red:#ff5c6c;--amber:#f2b53c}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--bg:#f4f6fb;--panel:#fff;--panel2:#f0f3fa;--border:#e2e7f0;--text:#1a2030;--muted:#6b7488;--accent:#2f7ff0;--green:#1f9d63;--red:#e0384a;--amber:#cf9316}}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.bar-row,.calc-res,.fnum,.health-card text,.kpi .sub,.kpi .value,.price-grid .cell .v,td,th{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes modalIn{0%{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.fade-up{animation:fadeUp .42s cubic-bezier(.22,.8,.26,1) both}.card{transition:border-color .18s ease,box-shadow .2s ease}.card:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--border))}.badge,.chip,.hint,.seg button,.tabs button,button.save,tbody tr{transition:color .15s ease,background .15s ease,border-color .15s ease,transform .12s ease}button.save:hover{filter:brightness(1.08)}button.save:active{transform:translateY(1px)}.tabs button:not(.active):hover{color:var(--text)}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}a{color:var(--accent);text-decoration:none}.wrap{max-width:1200px;margin:0 auto;padding:16px}.header{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px}.brand{font-size:20px;font-weight:700;letter-spacing:.5px}.brand span{color:var(--accent)}.spacer{flex:1 1}.controls{display:flex;gap:8px;flex-wrap:wrap}.seg{display:inline-flex;background:var(--panel2);border:1px solid var(--border);border-radius:8px;overflow:hidden}.seg button{background:transparent;border:none;color:var(--muted);padding:6px 12px;cursor:pointer;font-size:13px}.seg button.active{background:var(--accent);color:#fff}.tabs{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:16px;border-bottom:1px solid var(--border)}.tabs button{background:transparent;color:var(--muted);padding:8px 14px;cursor:pointer;font-size:14px;border:none;border-bottom:2px solid transparent}.tabs button.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.grid{display:grid;grid-gap:12px;gap:12px}.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px 16px}.card h3{margin:0 0 10px;font-size:13px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.kpi .label{font-size:12px;margin-bottom:6px;display:flex;gap:5px}.hint,.kpi .label{color:var(--muted);align-items:center}.hint{display:inline-flex;justify-content:center;width:14px;height:14px;border-radius:50%;border:1px solid var(--border);font-size:10px;line-height:1;cursor:help;position:relative;flex:none}.hint:hover{color:var(--accent);border-color:var(--accent)}.hint .tip{display:none;position:absolute;bottom:150%;left:-8px;width:240px;background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:9px 11px;font-size:12px;font-weight:400;line-height:1.45;color:var(--text);z-index:30;box-shadow:0 6px 20px rgba(0,0,0,.35);white-space:normal;text-transform:none;letter-spacing:0}.hint:hover .tip{display:block}.hint .tip:after{content:"";position:absolute;top:100%;left:12px;border:6px solid transparent;border-top:6px solid var(--border)}.kpi .value{font-size:22px;font-weight:700}.kpi .sub{font-size:12px;color:var(--muted);margin-top:4px}.green{color:var(--green)}.red{color:var(--red)}.amber{color:var(--amber)}.accent{color:var(--accent)}.brand{background:linear-gradient(95deg,var(--text) 30%,var(--accent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.brand span{-webkit-text-fill-color:var(--accent)}.kpi{transition:transform .16s cubic-bezier(.22,.8,.26,1),box-shadow .2s ease,border-color .2s ease;will-change:transform}.kpi:hover{transform:translateY(-3px);box-shadow:0 10px 28px rgba(0,0,0,.35);border-color:color-mix(in srgb,var(--accent) 45%,var(--border))}.kpi .value{font-size:23px;letter-spacing:-.4px;line-height:1.15}.seg button.active{box-shadow:inset 0 -2px 0 rgba(0,0,0,.15)}.seg button:not(.active):hover{color:var(--text)}.chip:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--border))}.chip.on{background:color-mix(in srgb,var(--accent) 10%,var(--panel2))}tbody tr{transition:background .12s ease}.bar-fill{transition:width .7s cubic-bezier(.22,.8,.26,1)}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:6px;border:2px solid var(--panel)}::-webkit-scrollbar-thumb:hover{background:var(--muted)}.recharts-cartesian-grid line{opacity:.6}.recharts-default-tooltip{border-radius:8px!important}.card h3{letter-spacing:.6px}table{width:100%;border-collapse:collapse;font-size:13px}td,th{text-align:right;padding:7px 8px;border-bottom:1px solid var(--border);white-space:nowrap}td:first-child,th:first-child{text-align:left}th{color:var(--muted);font-weight:600;position:-webkit-sticky;position:sticky;top:0;background:var(--panel)}tbody tr:hover{background:var(--panel2)}.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600}.badge.ok{background:rgba(53,192,127,.15);color:var(--green)}.badge.out{background:rgba(255,92,108,.15);color:var(--red)}.badge.arch{background:rgba(138,147,166,.15);color:var(--muted)}.rec{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.rec .ic{font-size:18px}.rec .body{flex:1 1}.rec .t{font-weight:600}.rec .d{color:var(--muted);font-size:12px;margin-top:2px}.rec .p{font-weight:700;white-space:nowrap}.muted{color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.chip{display:inline-flex;align-items:center;gap:6px;background:var(--panel2);border:1px solid var(--border);color:var(--muted);border-radius:20px;padding:4px 10px;font-size:12px;cursor:pointer}.chip.on{color:var(--text)}.chip .dot{width:8px;height:8px;border-radius:50%;opacity:.35}.chip.on .dot{opacity:1}.bar-row{display:grid;grid-template-columns:180px 1fr 110px;align-items:center;grid-gap:10px;gap:10px;padding:4px 0;font-size:13px}.bar-track{position:relative;height:16px;background:var(--panel2);border-radius:4px;overflow:hidden}.bar-fill{position:absolute;top:0;bottom:0;border-radius:4px}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:100;overflow-y:auto;animation:overlayIn .16s ease both;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:var(--panel);border:1px solid var(--border);border-radius:14px;width:100%;max-width:620px;padding:20px 22px;box-shadow:0 20px 60px rgba(0,0,0,.5);animation:modalIn .24s cubic-bezier(.22,.8,.26,1) both}.modal.wide{max-width:880px}.modal h2{margin:0 0 2px;font-size:18px}.modal .close{float:right;background:var(--panel2);border:1px solid var(--border);color:var(--muted);border-radius:8px;width:30px;height:30px;cursor:pointer;font-size:16px}.price-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:10px;gap:10px;margin:14px 0}.price-grid .cell{background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:10px 12px}.price-grid .cell .l{color:var(--muted);font-size:11px}.price-grid .cell .v{font-size:17px;font-weight:700;margin-top:3px}.clickable{cursor:pointer}.clickable:hover{background:var(--panel2)}.scroll{overflow-x:auto}.section-note{color:var(--muted);font-size:12px;margin:4px 0 12px}.loading{color:var(--muted);padding:40px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.load-msg{font-size:13px;animation:fadeUp .35s ease both}input[type=number]{background:var(--panel2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:4px 8px;width:90px}button.save{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:5px 12px;cursor:pointer}.crit-badge{display:inline-flex;align-items:center;gap:7px;margin-left:10px;background:rgba(255,92,108,.12);border:1px solid var(--red);color:var(--red);border-radius:20px;padding:4px 12px;font-size:12px;font-weight:600;cursor:pointer}.crit-badge:hover{background:rgba(255,92,108,.2)}.crit-dot{width:9px;height:9px;border-radius:50%;background:var(--red);animation:blink 1s infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.25}}.chat-fab{position:fixed;right:22px;bottom:22px;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;border:none;font-size:24px;cursor:pointer;box-shadow:0 8px 24px rgba(0,0,0,.4);z-index:90}.chat-fab:hover{filter:brightness(1.08)}.chat-panel{position:fixed;right:22px;bottom:22px;width:min(390px,calc(100vw - 32px));height:min(560px,calc(100vh - 100px));background:var(--panel);border:1px solid var(--border);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.5);display:flex;flex-direction:column;z-index:95;overflow:hidden}.chat-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}.chat-head .close{background:var(--panel2);border:1px solid var(--border);color:var(--muted);border-radius:8px;width:28px;height:28px;cursor:pointer;font-size:16px}.chat-body{flex:1 1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px}.chat-bubble{max-width:85%;padding:9px 12px;border-radius:12px;white-space:pre-wrap;line-height:1.5;font-size:13.5px}.chat-bubble.user{background:var(--accent);color:#fff}.chat-bubble.assistant{background:var(--panel2);color:var(--text);border:1px solid var(--border)}.chat-input{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--border)}.chat-input input{flex:1 1;width:auto;height:38px;padding:0 12px;background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:8px;font-size:14px}.chat-input .save{padding:0 16px}.chat-bubble.assistant{animation:fadeUp .25s ease both}.chat-cursor{display:inline-block;width:7px;height:14px;margin-left:2px;vertical-align:text-bottom;background:var(--accent);border-radius:1px;animation:blink 1s steps(2) infinite}.chat-typing{display:inline-flex;gap:4px;align-items:center;height:16px}.chat-typing i{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:typedot 1.1s ease-in-out infinite}.chat-typing i:nth-child(2){animation-delay:.18s}.chat-typing i:nth-child(3){animation-delay:.36s}@keyframes typedot{0%,60%,to{transform:translateY(0);opacity:.5}30%{transform:translateY(-5px);opacity:1}}.goal-track{position:relative;height:16px;background:var(--panel2);border-radius:8px;overflow:visible}.goal-fill{height:100%;border-radius:8px;transition:width .9s cubic-bezier(.22,.8,.26,1);box-shadow:0 0 10px color-mix(in srgb,var(--green) 40%,transparent)}.goal-proj{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--text);opacity:.55;border-radius:2px}.goal-proj:after{content:"прогноз";position:absolute;top:-15px;left:50%;transform:translateX(-50%);font-size:9px;color:var(--muted);white-space:nowrap}.health-card .health-wrap{display:flex;gap:22px;align-items:center;flex-wrap:wrap}.health-gauge{display:flex;flex-direction:column;align-items:center;gap:6px;flex:none}.health-grade{font-size:14px;font-weight:700;letter-spacing:.3px}.health-comps{flex:1 1;min-width:260px;display:grid;grid-template-columns:1fr 1fr;grid-gap:10px 20px;gap:10px 20px}@media (max-width:560px){.health-comps{grid-template-columns:1fr}}.hcomp{animation:fadeUp .5s cubic-bezier(.22,.8,.26,1) both}.hcomp-top{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:4px}.hcomp-top span{color:var(--muted)}.hcomp-top b{font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hbar{height:7px;background:var(--panel2);overflow:hidden}.hbar,.hbar-fill{border-radius:6px}.hbar-fill{height:100%;width:0;transition:width .9s cubic-bezier(.22,.8,.26,1)}.pick-row{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:8px;cursor:pointer;font-size:13px}.pick-row:hover{background:var(--panel)}.pick-row.on{background:color-mix(in srgb,var(--accent) 12%,transparent)}.pick-row input{accent-color:var(--accent);width:16px;height:16px;flex:none;cursor:pointer}.pick-name{line-height:1.25}.pick-clear{font-size:12px;color:var(--red);cursor:pointer;padding:5px 8px;margin-bottom:4px}.pick-clear:hover{text-decoration:underline}.calc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));grid-gap:12px;gap:12px;margin-top:10px}.calc-f{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--muted);min-width:0}.calc-f>span{white-space:nowrap;display:flex;align-items:center;gap:6px}.calc-f input{width:100%;box-sizing:border-box}.calc-sec{font-size:11px;font-weight:600;margin:16px 0 0}.calc-drop{position:absolute;z-index:20;top:100%;left:0;right:0;max-height:240px;overflow-y:auto;background:var(--panel2);border:1px solid var(--border);border-radius:8px;margin-top:3px;box-shadow:0 6px 24px rgba(0,0,0,.35)}.calc-res{display:grid;grid-template-columns:1fr auto auto;grid-column-gap:24px;column-gap:24px;grid-row-gap:6px;row-gap:6px;align-items:center;font-size:13px;margin-top:10px}.calc-res-h,.calc-res-r{display:contents}.calc-res-h span{font-size:11px;color:var(--muted);padding-bottom:2px}.calc-res-h span:nth-child(n+2),.calc-res-r b:nth-child(n+2),.calc-res-r span:nth-child(n+2){text-align:right;white-space:nowrap}.calc-res-total b{border-top:1px solid var(--border);padding-top:8px;margin-top:2px}