*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0f1117;--bg-surface: #1a1d27;--bg-panel: #22252f;--border: #2e3240;--text: #e4e6eb;--text-muted: #8b8fa3;--accent: #4f8ff7;--accent-dim: rgba(79, 143, 247, .15);--color-personnel: #f59e0b;--color-facility: #8b5cf6;--color-equipment: #06b6d4;--color-license: #a78bfa;--color-certification: #f43f5e;--color-hardware_product: #22c55e;--color-software: #3b82f6;--color-service: #ec4899}html,body{height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);overflow:hidden}#app{display:flex;flex-direction:column;height:100vh}header{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:48px;background:var(--bg-surface);border-bottom:1px solid var(--border);flex-shrink:0}header .logo{font-weight:700;font-size:15px;letter-spacing:.04em;color:var(--text)}header .logo span{color:var(--text-muted);font-weight:400}header nav{display:flex;gap:4px}header nav a{padding:6px 14px;border-radius:6px;font-size:13px;color:var(--text-muted);text-decoration:none;transition:background .15s,color .15s}header nav a:hover{background:var(--accent-dim);color:var(--text)}header nav a.hidden{display:none}header nav a.nav-settings{margin-left:8px;border-left:1px solid var(--border);padding-left:16px}header nav a.active{background:var(--accent-dim);color:var(--accent)}header .actions{display:flex;gap:8px;align-items:center}.btn-sm{padding:5px 12px;border-radius:6px;font-size:12px;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.btn-sm:hover{background:var(--accent-dim);color:var(--text)}#app-content{flex:1;overflow:hidden;position:relative}.data-toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%) translateY(20px);background:var(--bg-panel);border:1px solid var(--border);padding:8px 18px;border-radius:8px;font-size:12px;color:var(--text-muted);opacity:0;transition:opacity .3s,transform .3s;z-index:9999;pointer-events:none}.data-toast.visible{opacity:1;transform:translate(-50%) translateY(0)}.tech-tree-container{display:flex;height:100%;overflow:hidden;position:relative}#cy{flex:1;background:var(--bg)}.toolbar{position:absolute;top:12px;left:12px;display:flex;gap:6px;z-index:10}.toolbar .search-box{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:6px 12px;font-size:13px;color:var(--text);width:220px;outline:none}.toolbar .search-box:focus{border-color:var(--accent)}.toolbar .search-box::placeholder{color:var(--text-muted)}.filter-panel{position:absolute;top:12px;right:12px;background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:12px;z-index:10;min-width:180px}.filter-panel h3{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:8px}.filter-panel label{display:flex;align-items:center;gap:8px;font-size:13px;padding:3px 0;cursor:pointer;color:var(--text)}.filter-panel label .swatch{width:12px;height:12px;border-radius:3px;flex-shrink:0}.filter-panel input[type=checkbox]{accent-color:var(--accent)}.detail-panel{width:380px;max-width:40vw;background:var(--bg-surface);border-left:1px solid var(--border);overflow-y:auto;padding:20px;position:absolute;right:0;top:0;bottom:0;z-index:20;transform:translate(100%);transition:transform .25s ease;box-shadow:-4px 0 20px #0006}.detail-panel.open{transform:translate(0)}.detail-panel .close-btn{float:right;background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:0 4px;line-height:1}.detail-panel .close-btn:hover{color:var(--text)}.detail-panel h2{font-size:16px;font-weight:600;margin-bottom:4px;padding-right:28px}.detail-panel .node-type{display:inline-block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:4px;margin-bottom:12px}.detail-panel .description{font-size:13px;color:var(--text-muted);line-height:1.5;margin-bottom:16px}.detail-panel .section-title{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-top:16px;margin-bottom:6px;padding-top:12px;border-top:1px solid var(--border)}.detail-panel .cost-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}.detail-panel .cost-item{background:var(--bg-panel);border-radius:6px;padding:8px 10px}.detail-panel .cost-item .label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.detail-panel .cost-item .value{font-size:15px;font-weight:600;margin-top:2px}.detail-panel .dep-list{list-style:none;margin:4px 0 0}.detail-panel .dep-list li{font-size:13px;padding:3px 0;color:var(--text)}.detail-panel .dep-list li .dep-type{font-size:10px;color:var(--text-muted);text-transform:uppercase;margin-left:4px}.detail-panel .unlock-summary{background:var(--bg-panel);border-radius:8px;padding:12px;margin-top:12px}.detail-panel .unlock-summary h4{font-size:12px;font-weight:600;margin-bottom:8px;color:var(--accent)}.cy-tooltip{position:absolute;background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-size:12px;color:var(--text);pointer-events:none;z-index:100;max-width:280px;box-shadow:0 4px 12px #0006}.cy-tooltip .tt-name{font-weight:600;margin-bottom:2px}.cy-tooltip .tt-type{color:var(--text-muted);font-size:11px}.cy-tooltip .tt-cost{margin-top:4px;color:var(--accent);font-size:11px}.btn-sm.select-active{background:var(--accent);color:#fff;border-color:var(--accent)}.selection-counter{font-size:12px;color:var(--accent);padding:5px 0}.detail-panel .collapse-btn{margin:12px 0;width:100%;padding:8px 12px;font-size:13px;text-align:left;background:var(--bg-panel);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;transition:background .15s,border-color .15s}.detail-panel .collapse-btn:hover{background:var(--accent-dim);border-color:var(--accent)}.cy-tooltip .tt-collapsed{margin-top:4px;color:#ff6b35;font-size:11px;font-weight:600}.sim-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.sim-controls{display:flex;align-items:center;gap:12px;padding:10px 20px;background:var(--bg-surface);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}.sim-controls .control-label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-muted)}.sim-controls input[type=date],.sim-controls input[type=number]{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:5px 10px;font-size:13px;color:var(--text);outline:none;font-family:inherit;width:120px}.sim-controls input:focus{border-color:var(--accent)}.sim-summary{font-size:12px;color:var(--text-muted);margin-left:auto}.view-toggle{display:flex;gap:2px;background:var(--bg-panel);border-radius:6px;padding:2px}.view-toggle .btn-sm{border:none;background:transparent;color:var(--text-muted);border-radius:4px;padding:4px 10px;font-size:12px}.view-toggle .btn-sm.active{background:var(--accent);color:#fff}.sim-chart-wrapper{flex:1;overflow-y:auto;padding:0}.no-selection-msg{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:300px;color:var(--text-muted);text-align:center;padding:40px}.no-selection-msg h3{font-size:18px;color:var(--text);margin-bottom:8px}.no-selection-msg p{font-size:14px;max-width:400px;line-height:1.5}.sim-chart-area{flex:1;display:flex;position:relative;overflow:hidden}.sim-chart-area .sim-chart-wrapper{flex:1;overflow-y:auto}.cf-detail-panel{width:320px;max-width:35vw;background:var(--bg-surface);border-left:1px solid var(--border);overflow-y:auto;padding:20px;position:absolute;right:0;top:0;bottom:0;z-index:20;transform:translate(100%);transition:transform .25s ease;box-shadow:-4px 0 20px #0006}.cf-detail-panel.open{transform:translate(0)}.cf-detail-panel .close-btn{float:right;background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:0 4px;line-height:1}.cf-detail-panel .close-btn:hover{color:var(--text)}.cf-detail-panel h3{font-size:16px;font-weight:600;margin-bottom:6px;padding-right:28px}.cf-detail-type{display:inline-block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:4px;margin-bottom:10px}.cf-detail-desc{font-size:13px;color:var(--text-muted);line-height:1.5;margin-bottom:14px;margin-top:8px}.cf-detail-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border)}.cf-detail-label{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.cf-detail-value{font-size:14px;font-weight:600;color:var(--text)}.cf-detail-recurring{margin-top:10px;font-size:12px;color:var(--color-personnel);font-weight:600}.cf-cluster-picker{position:fixed;z-index:1000;background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:6px 0;min-width:200px;max-width:320px;box-shadow:0 8px 24px #00000080;animation:picker-in .15s ease}@keyframes picker-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.cf-cluster-picker-title{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:4px 12px 6px;border-bottom:1px solid var(--border);margin-bottom:2px}.cf-cluster-picker-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 12px;background:none;border:none;color:var(--text);font-size:13px;cursor:pointer;text-align:left;font-family:inherit;transition:background .1s}.cf-cluster-picker-item:hover{background:var(--accent-dim)}.cf-cluster-picker-swatch{width:10px;height:10px;border-radius:3px;flex-shrink:0}.settings-container{height:100%;overflow-y:auto;padding:40px}.settings-content{max-width:720px;margin:0 auto}.settings-title{font-size:24px;font-weight:700;color:var(--text);margin-bottom:4px}.settings-subtitle{font-size:13px;color:var(--text-muted);margin-bottom:32px}.settings-section{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:24px;margin-bottom:24px}.settings-section h2{font-size:16px;font-weight:600;color:var(--text);margin-bottom:6px}.settings-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.settings-hint{font-size:13px;color:var(--text-muted);line-height:1.5;margin-bottom:16px}.settings-form{display:flex;flex-direction:column;gap:12px}.settings-input-row{display:flex;gap:10px}.settings-input-row input{flex:1;background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:10px 14px;font-size:14px;color:var(--text);outline:none;font-family:inherit;transition:border-color .2s}.settings-input-row input:focus{border-color:var(--accent)}.settings-input-row input::placeholder{color:var(--text-muted)}.btn-primary{padding:10px 20px;border:none;border-radius:8px;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;color:#fff;background:var(--accent);transition:background .15s,opacity .15s;display:flex;align-items:center;gap:6px;white-space:nowrap}.btn-primary:hover:not(:disabled){background:#3b6fd4}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.settings-spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}.settings-result{font-size:13px;min-height:20px;line-height:1.5}.settings-result.success{color:#22c55e}.settings-result.error{color:#f43f5e}.settings-code-display{display:inline-block;margin-top:6px}.settings-code-display code{font-size:15px;font-weight:700;letter-spacing:.12em;color:var(--accent);background:var(--bg-panel);padding:4px 10px;border-radius:4px}.settings-table-wrap{overflow-x:auto}.settings-table{width:100%;border-collapse:collapse;font-size:13px}.settings-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:8px 12px;border-bottom:1px solid var(--border)}.settings-table td{padding:10px 12px;border-bottom:1px solid var(--border);color:var(--text)}.settings-table tr.used td{color:var(--text-muted);opacity:.6}.settings-table code{font-family:monospace;letter-spacing:.08em;font-size:12px}.settings-badge{display:inline-block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:4px}.badge-active{background:#22c55e26;color:#22c55e}.badge-used{background:#8b8fa326;color:#8b8fa3}.btn-revoke{color:#f43f5e!important;border-color:#f43f5e4d!important}.btn-revoke:hover{background:#f43f5e1a!important;color:#f43f5e!important}.landing{position:relative;width:100vw;height:100vh;overflow:hidden;background:#0a0d14}.landing-canvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}.landing-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:40px;gap:40px}.landing-hero{text-align:center;animation:hero-in 1s ease-out}@keyframes hero-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.landing-badge{display:inline-block;font-size:10px;letter-spacing:.25em;text-transform:uppercase;color:#4f8ff7;border:1px solid rgba(79,143,247,.3);padding:4px 14px;border-radius:20px;margin-bottom:20px;background:#4f8ff70f;animation:badge-glow 3s ease-in-out infinite}@keyframes badge-glow{0%,to{box-shadow:0 0 8px #4f8ff71a}50%{box-shadow:0 0 20px #4f8ff740}}.landing-title{display:flex;flex-direction:column;gap:0;line-height:1}.landing-title-main{font-size:clamp(48px,10vw,96px);font-weight:800;letter-spacing:.2em;color:#e4e6eb;text-shadow:0 0 60px rgba(79,143,247,.15)}.landing-title-sub{font-size:clamp(14px,3vw,24px);font-weight:400;letter-spacing:.55em;color:#4f8ff7;margin-top:4px}.landing-tagline{font-size:clamp(13px,2vw,17px);color:#8b8fa3;margin-top:16px;letter-spacing:.04em}.landing-chips{display:flex;justify-content:center;gap:10px;margin-top:20px;flex-wrap:wrap}.landing-chip{font-size:10px;letter-spacing:.08em;color:#8b8fa3;border:1px solid #2e3240;padding:3px 10px;border-radius:4px;background:#1a1d2799}.landing-login{background:#1a1d27d9;border:1px solid #2e3240;border-radius:16px;padding:36px 40px;width:100%;max-width:420px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 16px 64px #00000080,0 0 1px #4f8ff733;animation:card-in .8s ease-out .3s both}@keyframes card-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.landing-login h2{font-size:18px;font-weight:600;color:#e4e6eb;margin-bottom:4px}.landing-login-hint{font-size:13px;color:#8b8fa3;margin-bottom:24px;line-height:1.4}.landing-field{margin-bottom:16px}.landing-field label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#8b8fa3;margin-bottom:6px}.landing-field input{width:100%;background:#0f1117;border:1px solid #2e3240;border-radius:8px;padding:12px 14px;font-size:15px;color:#e4e6eb;outline:none;font-family:Inter,sans-serif;transition:border-color .2s,box-shadow .2s}.landing-field input:focus{border-color:#4f8ff7;box-shadow:0 0 0 3px #4f8ff71f}.landing-field input::placeholder{color:#555970}.landing-error{color:#f43f5e;font-size:13px;min-height:20px;margin-bottom:8px;text-align:center}.landing-btn{width:100%;padding:14px;border:none;border-radius:10px;font-size:15px;font-weight:600;font-family:Inter,sans-serif;cursor:pointer;color:#fff;background:linear-gradient(135deg,#4f8ff7,#3b6fd4);box-shadow:0 4px 16px #4f8ff740;transition:transform .15s,box-shadow .15s,background .3s;display:flex;align-items:center;justify-content:center;gap:8px}.landing-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 24px #4f8ff759}.landing-btn:active:not(:disabled){transform:translateY(0)}.landing-btn:disabled{opacity:.7;cursor:not-allowed}.landing-btn.success{background:linear-gradient(135deg,#22c55e,#16a34a);box-shadow:0 4px 16px #22c55e4d}.landing-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.shake{animation:shake .4s ease-in-out}.landing-footer{display:flex;flex-direction:column;align-items:center;gap:10px;animation:hero-in 1s ease-out .6s both}.landing-footer span{font-size:11px;letter-spacing:.12em;color:#555970}.landing-footer-lines{display:flex;align-items:center;gap:6px}.landing-footer-line{width:40px;height:1px;background:linear-gradient(90deg,transparent,#2e3240,transparent)}.landing-footer-dot{width:4px;height:4px;border-radius:50%;background:#4f8ff7;box-shadow:0 0 8px #4f8ff766}@media(max-width:500px){.landing-login{padding:28px 24px}.landing-content{padding:20px;gap:30px}}
