@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap";:root{--card-bg:#ffffff8c;--card-border:#0000000f;--text-primary:#0f172a;--text-secondary:#475569;--accent-color:#2563eb;--accent-light:#2563eb1a;--input-bg:#ffffffd9;--input-border:#00000014;--result-bg:#ffffff73;--tab-bg:#00000008;--tab-active-bg:#fffffff2;--tab-active-color:#2563eb;--success-color:#059669;--warning-color:#d97706;--danger-color:#dc2626;--header-gradient:linear-gradient(135deg, #2563eb 0%, #7c3aed 100%);--card-shadow:0 8px 32px #0000000f, 0 0 0 1px var(--card-border)}@media (prefers-color-scheme:dark){:root{--card-bg:#1e293b99;--card-border:#ffffff0f;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--accent-color:#60a5fa;--accent-light:#60a5fa26;--input-bg:#0f172ab3;--input-border:#ffffff0f;--result-bg:#0f172a66;--tab-bg:#ffffff0a;--tab-active-bg:#1e293bf2;--tab-active-color:#60a5fa;--header-gradient:linear-gradient(135deg, #60a5fa 0%, #c084fc 100%);--card-shadow:0 8px 32px #0000004d, 0 0 0 1px var(--card-border)}}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;min-height:100%}body{color:var(--text-primary);-webkit-font-smoothing:antialiased;background:linear-gradient(160deg,#fff 0%,#e8ecf0 100%);justify-content:center;align-items:center;min-height:100vh;padding:40px 20px;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,sans-serif;display:flex}@media (prefers-color-scheme:dark){body{background:linear-gradient(160deg,#0f172a 0%,#1e293b 100%)}}.app-container{z-index:1;background-color:var(--card-bg);-webkit-backdrop-filter:blur(32px)saturate(180%);border:1px solid var(--card-border);width:100%;max-width:1120px;box-shadow:var(--card-shadow);border-radius:20px;margin:0 auto;padding:36px 40px;animation:.6s cubic-bezier(.16,1,.3,1) forwards slideUp;position:relative}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.header{text-align:center;margin-bottom:36px}.header-brand{justify-content:center;align-items:center;gap:16px;margin-bottom:10px;display:flex}.brand-logo{object-fit:contain;filter:drop-shadow(0 2px 8px #0000001a);flex-shrink:0;width:64px;height:64px}.brand-company{letter-spacing:-.5px;color:var(--text-primary);font-size:28px;font-weight:800;line-height:1}.header-sub{color:var(--text-secondary);font-size:14px;font-weight:600}.tabs{background-color:var(--tab-bg);border:1px solid var(--card-border);border-radius:16px;margin-bottom:32px;padding:4px;display:flex}.tab-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:12px;flex:1;padding:12px 16px;font-family:inherit;font-size:14px;font-weight:700;transition:all .25s}.tab-btn:hover{color:var(--text-primary)}.tab-btn.active{background-color:var(--tab-active-bg);color:var(--tab-active-color);box-shadow:0 4px 16px #00000014}.fade-in{animation:.35s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.topology-section{border:1px solid var(--card-border);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:linear-gradient(#ffffff61,#ffffff2e),linear-gradient(135deg,#2563eb14,#7c3aed0d);border-radius:18px;margin-bottom:28px;padding:18px 20px;box-shadow:0 10px 28px #0f172a0d}.topology-toggle-row{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:0 2px;display:flex}.topology-toggle-btn{border:1px solid var(--card-border);color:var(--text-primary);cursor:pointer;background:#ffffffb8;border-radius:999px;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:800;box-shadow:0 6px 16px #0f172a0d}.topology-toggle-btn:hover{border-color:var(--accent-color);color:var(--accent-color)}.topology-toggle-hint{color:var(--text-secondary);text-align:right;font-size:12px;line-height:1.4}.topology-section-ratio .topology-node-primary,.topology-section-ratio .topology-node-accent{border-color:#2563eb2e}.topology-section-odc .topology-node-primary,.topology-section-odc .topology-node-accent{border-color:#14b8a62e}.topology-section-ratio .topology-link-line{background:linear-gradient(90deg,#2563eb26,#2563ebbf)}.topology-section-ratio .topology-link-arrow{color:#1d4ed8;background:#2563eb29;border-color:#2563eb3d}.topology-section-odc .topology-link-line{background:linear-gradient(90deg,#14b8a626,#14b8a6bf)}.topology-section-odc .topology-link-arrow{color:#0f766e;background:#14b8a629;border-color:#14b8a63d}.topology-heading{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}.section-kicker{letter-spacing:.8px;text-transform:uppercase;color:var(--accent-color);background:#2563eb1a;border-radius:999px;align-items:center;padding:4px 10px;font-size:11px;font-weight:800;display:inline-flex}.topology-title{letter-spacing:-.3px;color:var(--text-primary);margin-top:8px;font-size:18px;font-weight:800}.topology-note{max-width:360px;color:var(--text-secondary);font-size:13px;line-height:1.55}.topology-flow{justify-content:space-between;align-items:stretch;gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.topology-step-wrap{flex:none;align-items:center;gap:8px;min-width:0;display:flex}.topology-node{border:1px solid var(--card-border);background:#ffffffb8;border-radius:16px;flex-direction:column;flex:0 0 clamp(132px,14vw,164px);justify-content:flex-start;gap:5px;width:clamp(132px,14vw,164px);height:128px;padding:15px 14px 14px;display:flex;box-shadow:0 6px 18px #0f172a0a}.topology-node-icon{width:34px;height:34px;color:var(--accent-color);background:#2563eb14;border-radius:12px;justify-content:center;align-items:center;margin-bottom:2px;font-size:16px;font-weight:900;display:inline-flex}.topology-node-primary{background:linear-gradient(#2563eb24,#fffc)}.topology-node-accent{background:linear-gradient(#0596691f,#fffc)}.topology-node-label{letter-spacing:.2px;color:var(--text-primary);font-size:14px;font-weight:800}.topology-node-desc{color:var(--text-secondary);font-size:12px;line-height:1.45}.topology-node-summary{overflow-wrap:anywhere;font-size:11px;font-weight:700;line-height:1.35}.topology-summary-loss{color:var(--accent-color)}.topology-summary-neutral{color:var(--text-secondary)}.topology-link{width:58px;color:var(--accent-color);flex:0 0 58px;justify-content:center;align-items:center;gap:8px;display:flex}.topology-link-line{border-radius:999px;flex:1;height:4px;box-shadow:0 0 0 1px #2563eb14}.topology-link-arrow{background:#2563eb29;border:1px solid #2563eb3d;border-radius:999px;justify-content:center;align-items:center;width:24px;height:24px;font-size:16px;font-weight:900;display:inline-flex}.calc-layout{grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);align-items:start;gap:24px;display:grid}@media (width>=1200px){.calc-side{position:sticky;top:24px}}.calc-main,.calc-side{min-width:0}.form-group{margin-bottom:20px}.form-group label{color:var(--text-primary);margin-bottom:10px;font-size:14px;font-weight:700;display:block}.form-hint{color:var(--text-secondary);margin-top:-2px;margin-bottom:0;font-size:12px;line-height:1.4}.binding-card{border:1px solid var(--card-border);background:#ffffff61;border-radius:16px;margin-bottom:20px;padding:14px}.binding-card-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.binding-toggle{color:var(--text-primary);flex-shrink:0;align-items:center;gap:8px;font-size:12px;font-weight:800;display:inline-flex}.binding-toggle input{width:16px;height:16px;accent-color:var(--accent-color)}.binding-stack{gap:12px;display:grid}.binding-input label{color:var(--text-primary);margin-bottom:8px;font-size:13px;font-weight:700;display:block}.label-row{align-items:center;gap:10px;margin-bottom:10px;display:flex}.label-row label:first-child{flex:1;margin-bottom:0}.label-row .switch{flex-shrink:0;margin-bottom:0}.swap-hint{color:var(--text-secondary);white-space:nowrap;font-size:12px;font-weight:600}.input-wrapper{align-items:center;display:flex;position:relative}.input-suffix{color:var(--text-secondary);pointer-events:none;font-size:14px;font-weight:700;position:absolute;right:18px}input[type=number],input[type=text],select{background-color:var(--input-bg);border:1.5px solid var(--input-border);width:100%;color:var(--text-primary);appearance:none;-webkit-backdrop-filter:blur(8px);border-radius:16px;padding:15px 18px;font-family:inherit;font-size:15px;font-weight:600;transition:border-color .2s,box-shadow .2s,transform .2s,background-color .2s}input[type=number].input-error,input[type=text].input-error{background-color:#dc26260d;border-color:var(--danger-color)!important}input[type=number]:focus,input[type=text]:focus,select:focus{border-color:var(--accent-color);box-shadow:0 0 0 4px var(--accent-light);outline:none}.error-msg{color:var(--danger-color);align-items:center;gap:4px;margin-top:8px;font-size:12px;font-weight:600;display:flex}input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}select{cursor:pointer;background-image:linear-gradient(45deg, transparent 50%, var(--text-secondary) 50%), linear-gradient(135deg, var(--text-secondary) 50%, transparent 50%), linear-gradient(to right, transparent, transparent);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;background-position:calc(100% - 22px) calc(50% - 4px),calc(100% - 16px) calc(50% - 4px),0 0;background-repeat:no-repeat;background-size:6px 6px,6px 6px,100% 100%;padding-right:52px;box-shadow:0 6px 16px #0f172a0a}@media (prefers-color-scheme:dark){select{--lightningcss-light: ;--lightningcss-dark:initial}}select:hover{background-color:#fffffffa;border-color:#2563eb4d;transform:translateY(-1px)}select option{color:var(--text-primary);background:var(--tab-active-bg)}@media (prefers-color-scheme:dark){input[type=number].input-error,input[type=text].input-error{background-color:#7f1d1d2e}input[type=number]::placeholder,input[type=text]::placeholder,select{color:var(--text-primary)}select{background-color:#0f172ac7;background-image:linear-gradient(45deg,#0000 50%,#cbd5e1 50%),linear-gradient(135deg,#cbd5e1 50%,#0000 50%),linear-gradient(90deg,#0000,#0000);box-shadow:0 6px 16px #0003}select:hover{background-color:#0f172ae6}select option{color:#f8fafc;background:#0f172a}}.switch{width:38px;height:20px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;background-color:#0000001f;border-radius:24px;transition:all .3s;position:absolute;inset:0}@media (prefers-color-scheme:dark){.slider{background-color:#ffffff1a}}.slider:before{content:"";background-color:#fff;border-radius:50%;width:18px;height:18px;transition:all .3s cubic-bezier(.4,0,.2,1);position:absolute;bottom:2px;left:2px;box-shadow:0 2px 4px #00000026}input:checked+.slider{background-color:var(--accent-color)}input:checked+.slider:before{transform:translate(18px)}.results-section{border-top:1px solid var(--card-border);margin-top:28px;padding-top:24px}.results-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.results-title{text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);font-size:13px;font-weight:800}.results-actions{align-items:center;gap:8px;display:flex}.status-banner{border:1px solid #0000;border-radius:14px;align-items:flex-start;gap:10px;margin-bottom:14px;padding:12px 14px;font-size:13px;line-height:1.45;display:flex}.status-banner strong{text-transform:uppercase;letter-spacing:.8px;font-size:12px}.status-good{color:var(--success-color);background:#05966914;border-color:#0596692e}.status-warn{color:var(--warning-color);background:#d9770614;border-color:#d977062e}.status-bad{color:var(--danger-color);background:#dc262614;border-color:#dc26262e}.reset-btn{color:var(--text-secondary);border:1.5px solid var(--card-border);cursor:pointer;background:0 0;border-radius:8px;padding:6px 14px;font-family:inherit;font-size:13px;font-weight:700;transition:all .2s}.reset-btn:hover{color:var(--danger-color);border-color:var(--danger-color);background:#dc26260d}.tooltip-wrap{align-items:center;display:inline-flex;position:relative}.tooltip-btn{border:1.5px solid var(--card-border);width:26px;height:26px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:50%;justify-content:center;align-items:center;font-family:inherit;font-size:13px;font-weight:700;transition:all .2s;display:flex}.tooltip-btn:hover{color:var(--accent-color);border-color:var(--accent-color)}.tooltip-box{background:var(--tab-active-bg);border:1px solid var(--card-border);z-index:100;-webkit-backdrop-filter:blur(16px);border-radius:14px;min-width:220px;padding:16px;position:absolute;bottom:calc(100% + 10px);right:0;box-shadow:0 8px 24px #0000001f}.tooltip-box p{color:var(--text-primary);margin-bottom:4px;font-size:13px;font-weight:600;line-height:1.5}.tooltip-box p:last-child{margin-bottom:0}.results-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.result-card{background-color:var(--result-bg);border:1px solid var(--card-border);text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;padding:20px 16px;transition:all .2s}.result-card:hover{border-color:var(--accent-color);transform:translateY(-3px)}.result-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;font-size:11px;font-weight:800}.result-value{justify-content:center;align-items:baseline;gap:4px;font-size:28px;font-weight:800;display:flex}.result-unit{color:var(--text-secondary);font-size:13px;font-weight:700}.formula-card{border:1px solid var(--card-border);background:#ffffff59;border-radius:16px;margin-top:14px;padding:14px}.formula-card-title{letter-spacing:.8px;text-transform:uppercase;color:var(--text-secondary);margin-bottom:10px;font-size:12px;font-weight:800}.formula-list{gap:8px;list-style:none;display:grid}.formula-list li{color:var(--text-primary);background:#ffffff73;border:1px solid #ffffff59;border-radius:10px;padding:8px 10px;font-size:12px;line-height:1.5}.actions-row{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.action-btn,.history-clear{border:1px solid var(--card-border);color:var(--text-primary);cursor:pointer;background:#fff6;border-radius:10px;padding:8px 12px;font-family:inherit;font-size:12px;font-weight:700;transition:all .2s}.action-btn:hover,.history-clear:hover{border-color:var(--accent-color);color:var(--accent-color)}.status-msg{color:var(--text-secondary);margin-top:10px;font-size:12px}.history-panel{border:1px solid var(--card-border);background:#ffffff57;border-radius:16px;margin-top:16px;padding:14px}.history-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.history-sub{color:var(--text-secondary);margin-top:4px;font-size:12px}.history-empty{color:var(--text-secondary);padding:10px 0 2px;font-size:12px}.history-list{gap:10px;display:grid}.history-item{background:#ffffff73;border:1px solid #ffffff59;border-radius:12px;padding:10px 12px}.history-item-top{justify-content:space-between;align-items:baseline;gap:10px;font-size:12px;display:flex}.history-item-top strong{color:var(--text-primary)}.history-item-top span{color:var(--text-secondary);font-size:11px}.history-item-body{color:var(--text-secondary);margin-top:6px;font-size:12px;line-height:1.45}.app-footer{border-top:1px solid var(--card-border);text-align:center;letter-spacing:.2px;color:var(--text-secondary);opacity:.9;margin-top:22px;padding-top:14px;font-size:12px;font-weight:700}.value-good{color:var(--success-color)}.value-warn{color:var(--warning-color)}.value-bad{color:var(--danger-color)}.value-empty{color:var(--text-secondary)}.signal-badge{border-radius:20px;align-items:center;gap:5px;margin-top:10px;padding:4px 12px;font-size:12px;font-weight:700;display:inline-flex}.badge-good{color:var(--success-color);background:#0596691a}.badge-warn{color:var(--warning-color);background:#d977061a}.badge-bad{color:var(--danger-color);background:#dc26261a}@media (width<=1024px){.app-container{max-width:100%;padding:32px 28px}.calc-layout{grid-template-columns:1fr}.calc-side{position:static}.calc-side .results-grid{grid-template-columns:1fr 1fr}.topology-heading{flex-direction:column;align-items:flex-start}.topology-note{max-width:none}.topology-toggle-row{flex-direction:column;align-items:stretch;margin-bottom:10px}.topology-toggle-hint{text-align:left}.topology-toggle-btn{width:100%}.topology-flow{flex-direction:row;align-items:stretch;gap:10px;padding-bottom:2px;overflow:auto hidden}.topology-step-wrap{flex-direction:row;gap:8px;width:auto}.topology-link{flex-direction:row;flex-basis:34px;gap:4px;width:34px}.topology-link-line{width:10px;height:4px}.topology-link-arrow{width:18px;height:18px;font-size:12px}.topology-node{flex:0 0 110px;width:110px;height:102px;min-height:102px;padding:10px}.topology-node-desc{display:none}.topology-node-label{font-size:13px}.topology-node-summary{font-size:10px}.formula-card,.history-panel{padding:12px}.status-banner{padding:10px 12px;font-size:12px}}@media (width<=640px){body{align-items:flex-start;padding:14px 12px 18px}.app-container{box-shadow:0 8px 24px #0f172a14, 0 0 0 1px var(--card-border);background-color:#ffffffb8;border-radius:18px;padding:22px 16px}.header{margin-bottom:24px}.header-brand{gap:12px}.brand-logo{width:48px;height:48px}.brand-company{font-size:22px}.header-sub{font-size:12px;line-height:1.45}.tabs{margin-bottom:22px}.topology-section{border-radius:16px;margin-bottom:22px;padding:16px 14px}.topology-title{font-size:16px}.topology-note{font-size:12px}.topology-node-icon{border-radius:10px;width:30px;height:30px;font-size:14px}.topology-node-summary{font-size:10px}.tab-btn{padding:11px 12px;font-size:13px}.calc-layout{gap:16px}.form-group{margin-bottom:16px}.binding-card{margin-bottom:16px;padding:12px}.binding-card-head{flex-direction:column;align-items:flex-start}.form-group label{margin-bottom:8px;font-size:13px}input[type=number],select{border-radius:14px;padding:13px 14px;font-size:14px}.input-suffix{font-size:13px;right:14px}.results-section{margin-top:20px;padding-top:18px}.results-header{margin-bottom:12px}.results-title{font-size:12px}.results-grid,.calc-side .results-grid{grid-template-columns:1fr;gap:12px}.result-card{padding:16px 14px}.result-label{font-size:10px}.result-value{font-size:24px}.result-unit{font-size:12px}.signal-badge{margin-top:8px;padding:4px 10px;font-size:11px}.actions-row{flex-direction:column}.action-btn,.history-clear{justify-content:center;width:100%}.history-header{flex-direction:column;align-items:flex-start}.app-footer{margin-top:18px;padding-top:12px;font-size:11px}}@media (prefers-color-scheme:dark) and (width<=640px){.app-container{background-color:#1e293bc7}}@media (prefers-color-scheme:dark){.topology-section{background:linear-gradient(#0f172ab8,#0f172a7a),linear-gradient(135deg,#60a5fa1a,#c084fc0f)}.topology-toggle-btn{color:var(--text-primary);background:#0f172a7a;border-color:#ffffff14}.topology-toggle-btn:hover{color:#93c5fd;border-color:#60a5fa59}.binding-card{background:#0f172a80;border-color:#ffffff14}.binding-toggle,.binding-input label{color:var(--text-primary)}select{color:#f8fafc;background-color:#0f172ac7}.topology-node{background:#0f172aad}.topology-node-icon{color:#93c5fd;background:#60a5fa1f}.topology-summary-neutral{color:#bfdbfe}.formula-card,.history-panel{background:#0f172a8a}.formula-list li,.history-item{background:#0f172a8f;border-color:#ffffff0f}.action-btn,.history-clear{color:var(--text-primary);background:#0f172a66}.app-footer{color:var(--text-secondary);border-top-color:#ffffff14}.topology-node-primary{background:linear-gradient(#60a5fa2e,#0f172ab8)}.topology-node-accent{background:linear-gradient(#10b98129,#0f172ab8)}.topology-link-line{box-shadow:0 0 0 1px #60a5fa1a}}
