:root{--ic-navy:#07162d;--ic-blue:#12365d;--ic-gold:#d4af37;--ic-bg:#f4f7fb;--ic-card:#fff;--ic-line:#dbe5f0;--ic-muted:#65758a;--ic-ink:#0f1f35;--ic-good:#0f7a55;--ic-warn:#b7791f;--ic-risk:#b4232a}
.infracluster-page{background:var(--ic-bg);color:var(--ic-ink)}
.cluster-hero{background:radial-gradient(circle at 80% 16%,rgba(212,175,55,.18),transparent 30%),linear-gradient(135deg,#06111f,#12365d);color:#fff;padding:78px 0}
.cluster-hero-grid{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(300px,.82fr);gap:34px;align-items:center}
.cluster-hero h1{font-family:'Playfair Display',serif;font-size:clamp(2.35rem,5vw,4.6rem);line-height:1.02;margin:12px 0 18px}
.cluster-hero p{color:#dce7f4;max-width:820px}
.cluster-hero-card{border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.075);border-radius:22px;padding:24px;box-shadow:0 24px 60px rgba(0,0,0,.18)}
.cluster-hero-card strong{display:block;color:#fff;font-size:1.18rem;margin-bottom:8px}
.cluster-shell{width:min(1360px,94vw);margin:0 auto;padding:44px 0 88px}
.cluster-app{display:grid;grid-template-columns:240px minmax(0,1fr) 330px;gap:18px;align-items:start}
.cluster-sidebar,.cluster-summary,.cluster-step,.cluster-results-panel{background:#fff;border:1px solid var(--ic-line);border-radius:20px;box-shadow:0 12px 28px rgba(9,27,55,.07)}
.cluster-sidebar,.cluster-summary{position:sticky;top:86px;padding:16px}
.cluster-progress{display:grid;gap:8px}
.cluster-progress button{display:flex;align-items:center;gap:8px;border:1px solid var(--ic-line);background:#fff;border-radius:12px;padding:10px;text-align:left;font-weight:900;color:#314960;cursor:pointer}
.cluster-progress span{width:26px;height:26px;border-radius:999px;display:grid;place-items:center;background:#edf3fa;color:#102f58}
.cluster-progress button.active{background:#102f58;color:#fff;border-color:#102f58}
.cluster-progress button.done span{background:#e8f7ef;color:#0f6b49}
.cluster-note{font-size:.82rem;color:var(--ic-muted);line-height:1.5;margin:14px 0 0}
.cluster-form{display:grid;gap:16px}
.cluster-step{padding:24px}
.cluster-step[hidden]{display:none}
.step-head span{color:#8a6a10;font-size:.78rem;font-weight:950;text-transform:uppercase;letter-spacing:.12em}
.step-head h2{font-family:'Playfair Display',serif;font-size:clamp(1.55rem,2.8vw,2.4rem);margin:5px 0 18px}
.cluster-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.cluster-grid label,.cluster-item label{display:grid;gap:6px;font-weight:850;font-size:.86rem;color:#34465d}
.cluster-grid input,.cluster-grid select,.cluster-grid textarea,.cluster-item input,.cluster-item select,.cluster-item textarea{width:100%;border:1px solid #cdd8e6;border-radius:12px;padding:11px;font:inherit;color:#10233c;background:#fff}
.cluster-grid textarea{min-height:86px;resize:vertical}.full{grid-column:1/-1}
.cluster-actions,.cluster-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.cluster-toolbar{margin:0 0 14px}
.upload-panel{border:1px solid #d8e4f1;background:linear-gradient(135deg,#fbfdff,#f3f8ff);border-radius:18px;padding:18px;margin-bottom:16px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:start}
.upload-panel h3{margin:4px 0 6px;color:#102f58;font-size:1.2rem}
.upload-panel p{margin:0;color:#51677f;line-height:1.55;max-width:760px}
.upload-kicker{display:inline-flex;align-items:center;border:1px solid rgba(212,175,55,.35);background:#fff8e5;color:#7a5d09;border-radius:999px;padding:5px 9px;font-size:.72rem;font-weight:950;text-transform:uppercase;letter-spacing:.08em}
.upload-controls{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.file-drop{position:relative;display:inline-grid!important;place-items:center;border:1px solid #c8a94a!important;background:#102f58!important;color:#fff!important;border-radius:999px!important;padding:10px 15px!important;font-weight:950!important;cursor:pointer;min-height:42px}
.file-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.upload-status{grid-column:1/-1;border-left:4px solid var(--ic-gold);background:#fff;padding:11px 13px;border-radius:12px;color:#415771;font-size:.86rem;font-weight:800}
.upload-status.error{border-left-color:var(--ic-risk);background:#fff5f5;color:#8f1f2a}
.upload-status.success{border-left-color:var(--ic-good);background:#f1fbf6;color:#0f6045}
.mapping-panel{grid-column:1/-1;border-top:1px solid #dce7f4;padding-top:14px}
.mapping-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px;color:#102f58}
.mapping-head span{color:#65758a;font-size:.86rem;font-weight:850}
.mapping-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}
.mapping-grid label{display:grid;gap:6px;font-weight:850;font-size:.8rem;color:#34465d}
.mapping-grid select{width:100%;border:1px solid #cdd8e6;border-radius:12px;padding:10px;font:inherit;color:#10233c;background:#fff}
.import-preview-wrap{max-height:260px}
.cluster-list{display:grid;gap:12px}
.cluster-item{border:1px solid var(--ic-line);background:#fbfdff;border-radius:16px;padding:14px}
.cluster-item-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.cluster-item-head strong{color:#102f58}.cluster-item-head button{border:0;background:#fff1f1;color:#9d2830;border-radius:999px;padding:7px 10px;font-weight:950}
.mini-grid{display:grid;grid-template-columns:1.1fr .8fr .8fr .8fr .9fr;gap:10px}
.cluster-results-panel{padding:18px}
.result-map{min-height:260px;border:1px solid #cfdae8;border-radius:18px;background:linear-gradient(135deg,#eef5fd,#fff);position:relative;overflow:hidden;margin-bottom:16px}
.map-axis{position:absolute;inset:20px;border-left:2px solid rgba(16,47,88,.18);border-bottom:2px solid rgba(16,47,88,.18)}
.map-point{position:absolute;width:13px;height:13px;border-radius:50%;background:#102f58;border:2px solid #fff;box-shadow:0 6px 14px rgba(9,27,55,.25)}
.map-point.cluster-1{background:#0f7a55}.map-point.cluster-2{background:#b7791f}.map-point.cluster-3{background:#2563eb}.map-point.cluster-4{background:#b4232a}
.map-label{position:absolute;transform:translate(14px,-10px);font-size:.72rem;font-weight:900;color:#243c5a;background:rgba(255,255,255,.88);border:1px solid #dbe5f0;border-radius:999px;padding:3px 7px;white-space:nowrap}
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.kpi-grid div,.summary-card{border:1px solid var(--ic-line);border-radius:14px;background:#fbfdff;padding:12px}
.kpi-grid span,.summary-card span{display:block;color:var(--ic-muted);font-size:.72rem;font-weight:950;text-transform:uppercase;letter-spacing:.04em}
.kpi-grid strong,.summary-card strong{color:#102f58;font-size:1.04rem}
.cluster-output-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.cluster-card{border:1px solid var(--ic-line);border-radius:16px;background:#fff;padding:15px}
.cluster-card h3{margin:0 0 8px;color:#102f58}
.cluster-card ul{margin:8px 0 0;padding-left:18px;color:#40566f}.cluster-card li{margin:5px 0}
.bridge-panel{margin-top:16px;border:1px solid rgba(212,175,55,.38);background:linear-gradient(135deg,#102f58,#0a1a2f);color:#fff;border-radius:20px;padding:18px;box-shadow:0 18px 46px rgba(9,27,55,.14)}
.bridge-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:start;margin-bottom:14px}
.bridge-head h3{margin:7px 0 6px;color:#fff;font-size:1.25rem}
.bridge-head p{margin:0;color:#d9e4f2;line-height:1.6;max-width:780px}
.bridge-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.bridge-panel .cluster-card{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16);box-shadow:none}
.bridge-panel .cluster-card h3{color:#fff}
.bridge-panel .cluster-card p,.bridge-panel .cluster-card li{color:#d9e4f2}
.bridge-panel .cluster-card strong{color:#fff}
.bridge-card{border-top:3px solid var(--ic-gold)!important}
.cluster-table-wrap{overflow:auto;border:1px solid var(--ic-line);border-radius:16px;background:#fff;max-height:440px}
.cluster-table{width:100%;border-collapse:collapse;min-width:980px}
.cluster-table th,.cluster-table td{padding:9px 10px;border-bottom:1px solid #e8eef6;text-align:left;font-size:.8rem}
.cluster-table th{position:sticky;top:0;background:#eef4fb;color:#28425f;text-transform:uppercase;font-size:.7rem;z-index:1}
.summary-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.risk-box{margin-top:12px;border-left:4px solid var(--ic-gold);background:#fff8e7;padding:13px;border-radius:12px;color:#56461a}
.database-filter{display:grid;grid-template-columns:1.4fr .9fr .9fr .9fr auto;gap:10px;margin-bottom:12px}
.step-controls{display:flex;justify-content:space-between;gap:12px}
.step-controls .btn[disabled]{opacity:.55;cursor:not-allowed}
@media(max-width:1180px){.cluster-app{grid-template-columns:1fr}.cluster-sidebar,.cluster-summary{position:static}.cluster-progress{grid-template-columns:repeat(4,minmax(0,1fr))}.cluster-hero-grid{grid-template-columns:1fr}}
@media(max-width:980px){.upload-panel,.bridge-head{grid-template-columns:1fr}.upload-controls,.bridge-actions{justify-content:flex-start}.mapping-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.cluster-grid,.mini-grid,.kpi-grid,.cluster-output-grid,.summary-cards,.database-filter,.cluster-progress,.mapping-grid{grid-template-columns:1fr}.cluster-step{padding:18px}.cluster-actions .btn,.cluster-toolbar .btn,.step-controls .btn,.upload-controls .btn,.file-drop{width:100%}.step-controls{display:grid}}
@media print{.site-header,.cluster-hero,.cluster-sidebar,.cluster-summary,.step-controls,.cluster-toolbar,.footer{display:none!important}.cluster-app{display:block;width:100%}.cluster-step{display:block!important;border:0;box-shadow:none}.cluster-shell{padding:0}}
