﻿
*{box-sizing:border-box} :root{--bg:#020f18;--panel:#031723;--line:#07577d;--cyan:#19c8ff;--green:#29f3a5;--orange:#ff9d25;--purple:#b55cff;--text:#edf7ff;--muted:#9ab8cc}html{scroll-behavior:smooth}body{margin:0;background:#010c14;color:var(--text);font-family:Segoe UI,Arial,sans-serif;min-width:1180px;overflow-y:auto}.app{min-height:100vh;display:grid;grid-template-rows:94px auto;overflow:visible}.header{display:grid;grid-template-columns:520px 280px 1fr 360px;align-items:center;border-bottom:1px solid #0b5274;background:#02121d;padding:0 24px;gap:20px}.brand{display:flex;gap:18px;align-items:center}.logo{width:52px;height:52px;border:1px solid #446779;border-radius:8px;display:grid;place-items:center;font-size:28px;background:#061b28}.brand h1{font-size:25px;letter-spacing:1px;margin:0}.brand p{margin:6px 0 0;color:var(--cyan);letter-spacing:5px;font-size:12px}.day{text-align:center}.day small,.status small{color:#82cce9}.day strong{display:block;font-size:42px;line-height:42px}.status b{display:block;color:#25efb3;font-size:18px;margin-top:5px}.status span{font-size:12px}.period{border:1px solid #0a4666;border-radius:14px;padding:12px 16px}.period-top{display:flex;justify-content:space-between;font-size:12px}.bar{height:7px;background:#26394a;border-radius:5px;margin-top:10px;overflow:hidden}.bar i{display:block;width:38%;height:100%;background:linear-gradient(90deg,#08aaff,#79e8ff);border-radius:5px}.main{display:grid;grid-template-columns:292px minmax(760px,1fr) 340px;gap:10px;padding:10px;align-items:start}.panel{background:#02131e;border:1px solid #075277;border-radius:13px}.left{padding:16px;overflow:visible}.section{padding-bottom:15px;margin-bottom:13px;border-bottom:1px solid #16445b}.section h3{font-size:13px;color:#50cfff;margin:0 0 11px}.icon-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.icon-btn{height:58px;border:1px solid #12608b;background:#031825;color:#d7eaff;border-radius:8px;font-size:24px;cursor:pointer}.icon-btn.active{border-color:#20caff;box-shadow:0 0 14px #079be9 inset,0 0 12px #078bcf}.icon-btn.green{color:var(--green);border-color:#16b980}.icon-btn.orange{color:var(--orange);border-color:#a96b28}.timeline{position:relative;margin-left:8px}.timeline:before{content:'';position:absolute;left:12px;top:12px;bottom:15px;width:2px;background:#7894a7}.trow{display:grid;grid-template-columns:28px 1fr;gap:10px;margin:8px 0;position:relative}.dot{width:25px;height:25px;border:2px solid #d5e9f5;border-radius:50%;background:#071824;display:grid;place-items:center;z-index:2}.dot.done{background:#1ae5a2;border-color:#1ae5a2;color:#003c2a}.dot.now{border-color:#1dbfff;box-shadow:0 0 12px #1dbfff}.tcard{border:1px solid #15557a;border-radius:7px;padding:7px 10px;font-size:13px;color:#cce2ef}.tcard.active{background:#073655;color:#3ad6ff;font-weight:700}.tcard small{display:block;color:#8cb4ca;margin-top:3px}.view{display:grid;grid-template-columns:1fr 1fr;gap:8px}.search{height:48px;border:1px solid #0879ad;border-radius:7px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;color:#42ceff}.center{display:grid;grid-template-rows:520px 300px;gap:10px;min-width:0}.map{position:relative;overflow:hidden;background:#010e17}.map-toolbar{position:absolute;right:12px;top:10px;z-index:10;display:flex;gap:8px}.tool{border:1px solid #12638d;background:#021827;color:#ccecff;border-radius:7px;padding:9px 13px;cursor:pointer}.map svg.routes{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.node{position:absolute;transform:translate(-50%,-50%);width:155px;text-align:center;cursor:grab;user-select:none;z-index:3}.orb{margin:auto;width:58px;height:58px;border:3px solid currentColor;border-radius:50%;display:grid;place-items:center;font-size:27px;background:#041724;box-shadow:0 0 12px currentColor,0 0 26px color-mix(in srgb,currentColor 45%,transparent)}.node b{display:block;font-size:14px;margin-top:8px;text-shadow:0 1px 2px #000}.dots{font-size:18px;letter-spacing:2px;line-height:14px}.done{color:var(--green)}.activeNode{color:var(--cyan)}.planned{color:#d9ebf7}.purple{color:var(--purple)}.decision{color:var(--orange)}.badge{display:inline-block;border:1px solid #0c8cc7;background:#053b5b;color:#35d3ff;border-radius:5px;padding:5px 10px;font-size:11px;margin-top:8px}.metrics{display:grid;grid-template-columns:1.12fr .92fr 1fr;gap:10px}.metric{padding:14px;overflow:hidden}.metric h3{font-size:13px;margin:0 0 8px}.metric .value{font-size:27px;font-weight:700}.up{color:#1ef0b4;font-size:16px;margin-left:8px}.tabs span{display:inline-block;border:1px solid #135274;border-radius:5px;padding:5px 10px;margin:8px 4px 5px 0;font-size:11px}.tabs .sel{border-color:#15bfff;box-shadow:0 0 8px #0877ad inset}.chart{width:100%;height:125px}.right{display:grid;grid-template-rows:auto 210px;gap:10px;min-height:0}.detail{padding:16px;overflow:auto}.detail-title{display:flex;align-items:center;gap:10px}.detail-title .round{width:40px;height:40px;border:2px solid var(--cyan);border-radius:50%;display:grid;place-items:center;color:var(--cyan)}.detail h2{font-size:20px;margin:0}.pill{margin-left:auto;border:1px solid #0ca8e9;color:#28cfff;padding:4px 7px;border-radius:5px;font-size:10px}.detail p{font-size:12px;line-height:1.5;color:#d2e3ed}.detail h4{font-size:11px;color:#41cfff;margin:18px 0 7px}.progress{display:flex;align-items:center;gap:10px}.progress .bar{flex:1;margin:0}.progress strong{color:#39d5ff;font-size:20px}.detail ul{padding-left:22px;font-size:12px;line-height:1.8}.results{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:12px}.results b{color:#1fe8b1}.details-btn{width:100%;margin-top:14px;padding:9px;border:1px solid #12b9f7;background:#04304a;color:#75e0ff;border-radius:6px}.activity{padding:14px}.activity h3{font-size:13px;margin:0 0 10px}.activity div{font-size:11px;margin:8px 0}.activity i{display:inline-block;width:7px;height:7px;background:#1ee8ad;border-radius:50%;margin-right:10px}.activity time{color:#8bb2ca;margin-right:10px}.route{fill:none;stroke-width:2;filter:drop-shadow(0 0 4px currentColor)}.routeDot{filter:drop-shadow(0 0 3px currentColor)}

.tab{border:1px solid #135274;border-radius:5px;padding:5px 10px;margin:8px 4px 5px 0;font-size:11px;background:#031825;color:#cce2ef;cursor:pointer}.tab.sel{border-color:#15bfff;box-shadow:0 0 8px #0877ad inset;color:#fff}.no-data{min-height:170px;border:1px dashed #1a506a;border-radius:9px;margin-top:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:22px;color:#8fb0c2;gap:10px}.no-data b{color:#4fd2ff;letter-spacing:1px}.connect-btn{border:1px solid #0d78a8;background:#032238;color:#62d8ff;border-radius:6px;padding:7px 12px;cursor:pointer}.unverified{border:1px dashed #1a506a;background:#031925;border-radius:7px;padding:10px;color:#91afbf;font-size:12px;line-height:1.4}.node.dim{opacity:.16;filter:grayscale(.8)}.compact2d .orb{box-shadow:none}.compact2d .route{filter:none}.notice{position:fixed;right:22px;bottom:22px;z-index:999;background:#052238;border:1px solid #18bdf6;box-shadow:0 0 22px #001;color:#dff7ff;border-radius:9px;padding:13px 44px 13px 15px;max-width:390px;display:flex;flex-direction:column;gap:4px}.notice b{color:#4fd7ff}.notice span{font-size:12px;line-height:1.4}.notice button{position:absolute;right:8px;top:8px;border:0;background:transparent;color:#fff;font-size:18px;cursor:pointer}.tcard,.search,.details-btn{cursor:pointer}@media(max-width:1450px){body{min-width:1000px}.main{grid-template-columns:260px minmax(650px,1fr) 315px}.header{grid-template-columns:480px 170px 1fr 320px}.brand h1{font-size:21px}}
.timeline-empty,.unconfigured{color:var(--muted)}
.timeline-empty{border:1px dashed #15557a;border-radius:8px;padding:14px;font-size:12px;line-height:1.45}
.timeline-empty b{display:block;color:#58d2ff;margin-bottom:6px}.timeline-empty span{display:block}
.view{grid-template-columns:1fr 1fr 1fr}.theme-btn{font-size:22px}
.day.unconfigured span,.period.unconfigured small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.status.unconfigured b{color:#8fb0c4}
[data-theme="light"]{--bg:#eef7fb;--panel:#fff;--line:#77b7d2;--text:#102b3a;--muted:#55798d}
[data-theme="light"] body{background:#eaf4f8;color:var(--text)}
[data-theme="light"] .header,[data-theme="light"] .panel,[data-theme="light"] .icon-btn,[data-theme="light"] .tool,[data-theme="light"] .orb,[data-theme="light"] .search{background:#f8fcfe;color:var(--text)}
[data-theme="light"] .map{background:#edf7fb}
[data-theme="light"] .detail p,[data-theme="light"] .tcard{color:#294b5e}
[data-theme="light"] .brand h1{color:#102b3a}
/* v0.5 corrections */
.ui-tooltip{position:fixed;z-index:5000;max-width:280px;padding:8px 10px;border:1px solid #19c8ff;border-radius:6px;background:#031925;color:#e9f8ff;font-size:12px;line-height:1.35;box-shadow:0 8px 24px rgba(0,0,0,.35);pointer-events:none;opacity:0;transform:translateY(3px);transition:opacity .12s,transform .12s}.ui-tooltip.show{opacity:1;transform:translateY(0)}
.neutral{color:#9fc4d8}.neutral .orb{box-shadow:0 0 10px rgba(65,200,255,.18)}.purpleAccent{color:var(--purple)}.cyanAccent{color:var(--cyan)}.orangeAccent{color:var(--orange)}
.neutral-pill{color:#9ab8cc!important;border-color:#45697b!important}.search{justify-content:center}.brand{min-width:0}.brand>div:last-child{min-width:0}.brand h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logo{flex:0 0 52px}
[data-theme="light"] .node.neutral{color:#31566a}[data-theme="light"] .node.purpleAccent{color:#7b31b5}[data-theme="light"] .node.cyanAccent{color:#007fae}[data-theme="light"] .node.orangeAccent{color:#b95e00}[data-theme="light"] .node b{text-shadow:0 1px 1px rgba(255,255,255,.8)}
[data-theme="light"] .unverified,[data-theme="light"] .no-data{background:#f4fbfe;color:#466b7e;border-color:#6caac5}[data-theme="light"] .no-data b{color:#007fae}[data-theme="light"] .tab,[data-theme="light"] .connect-btn,[data-theme="light"] .details-btn{background:#f4fbfe;color:#164b65}[data-theme="light"] .tab.sel{color:#003e58;background:#dff5ff}[data-theme="light"] .pill{background:#f4fbfe}
@media(max-width:1450px){.header{grid-template-columns:minmax(390px,1.5fr) 150px minmax(260px,1fr) 300px}.brand h1{font-size:20px}}
.node.node-hidden{opacity:0;visibility:hidden;pointer-events:none;transform:translate(-50%,-50%) scale(.82);transition:opacity .18s ease,transform .18s ease,visibility .18s ease}
.node.isolated-selected{z-index:8}
.node.isolated-selected .orb{transform:scale(1.08)}

/* v0.8.1 — graphical project timeline */
.project-timeline{margin:2px 0 0 4px;padding:2px 0 1px 0}
.project-timeline:before{left:13px;top:14px;bottom:18px;background:linear-gradient(#22d8ff,#6b8799)}
.project-timeline .trow{grid-template-columns:30px 1fr;gap:9px;margin:7px 0}
.project-timeline .dot{width:28px;height:28px;background:#03131f;border-color:#bdd4e5;box-shadow:0 0 0 1px rgba(74,144,184,.15)}
.project-timeline .dot.now{border-color:#20bfff;box-shadow:0 0 8px #20bfff,0 0 16px rgba(32,191,255,.45)}
.project-timeline .tcard{min-height:46px;padding:7px 9px;border-color:#0c4b6d;background:rgba(2,20,31,.62);color:#b8cfdd}
.project-timeline .tcard b{display:block;font-size:10px;letter-spacing:.25px;color:#a9c5d6;white-space:normal}
.project-timeline .tcard small{font-size:9px;color:#6f94aa;margin-top:4px}
.project-timeline .tcard.active{background:rgba(4,48,72,.78);border-color:#0b83ba;color:#41d6ff}
.project-timeline .tcard.active b{color:#44d7ff}
.project-timeline .tcard.active small{color:#9bcfe4}

/* Dynamic source-driven phase status */
.node.completed .orb {
    border-color: #26e7a6;
    color: #26e7a6;
    box-shadow:
        0 0 10px rgba(38,231,166,.55),
        0 0 24px rgba(38,231,166,.22);
}

.node.completed > b {
    color: #26e7a6;
}

.node.completed .dots {
    color: #26e7a6;
}

.node.in-progress .orb {
    box-shadow:
        0 0 10px rgba(54,205,255,.45),
        0 0 22px rgba(54,205,255,.15);
}

/* WORKFLOW V2 STATES */

.workflow-row.completed .dot {
    border-color: #26e7a6;
    color: #26e7a6;
    box-shadow:
        0 0 10px rgba(38,231,166,.55),
        0 0 22px rgba(38,231,166,.18);
}

.workflow-row.completed .tcard {
    border-color: rgba(38,231,166,.65);
}

.workflow-row.completed .tcard b {
    color: #26e7a6;
}

.workflow-row.current .dot {
    border-color: #21cfff;
    color: #21cfff;
    box-shadow:
        0 0 10px rgba(33,207,255,.65),
        0 0 22px rgba(33,207,255,.22);
}

.workflow-row.current .tcard {
    border-color: #21cfff;
    box-shadow: 0 0 14px rgba(33,207,255,.16);
}

.workflow-row.current .tcard b {
    color: #21cfff;
}

.workflow-row.planned .dot {
    opacity: .65;
}

