/* RIS Composer — Blockly-like visual causal lab */
.composer-header .active{color:var(--accent);font-weight:800}
.composer-main{padding:28px 0 46px}
.composer-hero{display:grid;grid-template-columns:1fr minmax(260px,360px);gap:18px;align-items:end;margin-top:8px;margin-bottom:18px}
.eyebrow{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-weight:800;margin:0 0 8px}
.composer-hero h1{font-size:clamp(2rem,4.4vw,4.25rem);line-height:1.08;letter-spacing:-.045em;margin:0 0 10px;color:var(--ink)}
.composer-hero .lead{max-width:880px;color:var(--soft);line-height:1.92;margin:0;font-size:var(--text-md)}
.hero-status{border:2px solid var(--line);background:var(--glass-strong);padding:18px;display:grid;grid-template-columns:auto 1fr;gap:8px 12px;align-items:center;min-height:112px}
.phase-dot{width:14px;height:14px;border-radius:50%;background:var(--accent);box-shadow:0 0 26px rgba(138,106,20,.35)}
.hero-status strong{font-size:.86rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.hero-status small{grid-column:2;color:var(--soft);line-height:1.55}

.composer-layout{display:grid;grid-template-columns:300px minmax(360px,1fr) 320px;gap:14px;align-items:stretch}
.composer-panel,.composer-stage{border:2px solid var(--line);background:rgba(255,255,255,.64);backdrop-filter:blur(16px);box-shadow:0 12px 42px rgba(20,18,12,.055)}
.composer-panel{padding:16px;min-height:720px}
.composer-stage{padding:16px;min-height:720px;display:grid;grid-template-rows:auto 1fr auto;gap:12px;overflow:hidden}
.panel-head,.stage-topline{display:flex;align-items:start;justify-content:space-between;gap:12px;border-bottom:1px solid var(--faint);padding-bottom:12px;margin-bottom:12px}
.panel-head span,.stage-topline span{font-size:.66rem;letter-spacing:.17em;text-transform:uppercase;color:var(--muted);font-weight:800}
.panel-head strong,.stage-topline strong{font-size:.84rem;color:var(--ink);line-height:1.55;text-align:left;direction:rtl}

.block-stack{display:grid;gap:8px;margin-bottom:16px}
.logic-block{border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(255,255,255,.56));padding:12px 12px;text-align:right;display:grid;gap:4px;cursor:pointer;transition:.18s ease;color:var(--ink);font:inherit;position:relative;overflow:hidden}
.logic-block::before{content:"";position:absolute;right:0;top:0;bottom:0;width:4px;background:var(--accent)}
.logic-block:hover,.logic-block.active{transform:translateY(-1px);border-color:rgba(138,106,20,.45);box-shadow:0 10px 24px rgba(138,106,20,.09)}
.logic-block .block-type{font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:900}
.logic-block strong{font-size:.82rem;line-height:1.45}
.logic-block small{font-size:.68rem;color:var(--soft);direction:ltr;text-align:right}
.logic-block.negative::before{background:#c0392b}.logic-block.negative .block-type{color:#c0392b}
.logic-block.delay::before{background:#2267e8}.logic-block.delay .block-type{color:#2267e8}
.logic-block.decision::before{background:#7c42ff}.logic-block.decision .block-type{color:#7c42ff}

.composer-controls{display:grid;gap:12px;border-top:1px solid var(--faint);padding-top:14px}
.composer-controls label{display:grid;gap:6px}
.composer-controls label>span{font-size:.72rem;color:var(--ink2);font-weight:800}
.composer-controls output{justify-self:start;color:var(--accent);font-weight:900;font-size:.82rem;direction:ltr}
.composer-controls input[type=range]{width:100%;accent-color:var(--accent)}
.composer-actions{display:grid;grid-template-columns:1fr;gap:8px;margin-top:15px}
.primary-action,.ghost-action{border:2px solid var(--accent);font:800 .78rem/1.2 inherit;padding:12px 10px;cursor:pointer;transition:.18s ease}
.primary-action{background:var(--accent);color:white}.primary-action:hover{background:var(--accent2);border-color:var(--accent2)}
.ghost-action{background:transparent;color:var(--accent)}.ghost-action:hover{background:rgba(138,106,20,.08)}

.impact-graph-wrap{position:relative;min-height:470px;border:1px solid var(--faint);background:radial-gradient(circle at 50% 42%,rgba(138,106,20,.08),transparent 38%),linear-gradient(135deg,rgba(255,255,255,.42),rgba(255,255,255,.08));overflow:hidden}
.impact-graph{width:100%;height:100%;min-height:470px;display:block;direction:ltr}
.impact-graph marker path{fill:var(--accent)}
.edge{fill:none;stroke:url(#pulseGrad);stroke-width:4;stroke-linecap:round;stroke-dasharray:10 14;opacity:.36;marker-end:url(#arrow);transition:stroke-width .3s,opacity .3s,filter .3s;animation:edgeFlow 2.2s linear infinite paused}
.edge.negative{stroke:#c0392b}.edge.risk{stroke:#7c42ff}
.edge.hot{opacity:.95;stroke-width:6;filter:drop-shadow(0 0 5px rgba(138,106,20,.35));animation-play-state:running}
@keyframes edgeFlow{to{stroke-dashoffset:-48}}
.node circle{fill:rgba(255,255,255,.88);stroke:rgba(138,106,20,.42);stroke-width:3;filter:drop-shadow(0 8px 18px rgba(20,16,8,.10));transition:.25s}
.node text{text-anchor:middle;font-family:inherit;fill:var(--ink);font-size:18px;font-weight:800;direction:rtl}
.node .node-val{font-size:20px;fill:var(--accent);direction:ltr}
.node.negative circle{stroke:rgba(192,57,43,.52)}.node.negative .node-val{fill:#c0392b}
.node.risk circle{stroke:rgba(124,66,255,.48)}.node.risk .node-val{fill:#7c42ff}
.node.hot circle{stroke-width:6;transform:scale(1.06);filter:drop-shadow(0 0 18px rgba(138,106,20,.22))}
.node.hot.negative circle{filter:drop-shadow(0 0 18px rgba(192,57,43,.24))}.node.hot.risk circle{filter:drop-shadow(0 0 18px rgba(124,66,255,.25))}

.timeline{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.t-step{border:1px solid var(--line);background:rgba(255,255,255,.58);padding:10px 8px;text-align:center;color:var(--muted);transition:.18s}
.t-step b{display:block;color:inherit;font-size:1rem}.t-step span{font-size:.62rem;letter-spacing:.08em;text-transform:uppercase}
.t-step.active{background:rgba(138,106,20,.1);border-color:rgba(138,106,20,.42);color:var(--accent);transform:translateY(-2px)}

.orb-panel{display:grid;grid-template-rows:auto auto auto auto 1fr;gap:10px}
.orb-shell{position:relative;border:1px solid var(--faint);background:radial-gradient(circle at 50% 45%,rgba(124,66,255,.09),transparent 34%),radial-gradient(circle at 50% 50%,rgba(138,106,20,.08),transparent 48%);min-height:300px;display:grid;place-items:center;overflow:hidden}
#composerOrb{width:100%;height:auto;max-height:330px;display:block;mix-blend-mode:normal}
.orb-readout{position:absolute;left:14px;bottom:14px;border:1px solid rgba(138,106,20,.28);background:rgba(255,255,255,.76);padding:8px 10px;min-width:76px;text-align:center;backdrop-filter:blur(12px)}
.orb-readout strong{display:block;font-size:1.55rem;color:var(--accent);line-height:1}.orb-readout span{font-size:.56rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.metric-grid div{border:1px solid var(--line);background:rgba(255,255,255,.58);padding:10px;text-align:center}
.metric-grid span{display:block;font-size:.56rem;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}.metric-grid strong{color:var(--accent);font-size:.94rem}
.decision-box{border-top:1px solid var(--faint);padding-top:12px}.decision-box h2{font-size:.86rem;margin:0 0 8px;color:var(--ink)}
.decision-box ul{margin:0;padding:0;display:grid;gap:7px;list-style:none}.decision-box li{border:1px solid var(--line);background:rgba(255,255,255,.58);padding:9px 10px;font-size:.75rem;line-height:1.65;color:var(--soft)}
.json-box{margin-top:4px;border:1px solid var(--line);background:rgba(255,255,255,.5);padding:8px 10px}.json-box summary{cursor:pointer;font-size:.72rem;font-weight:800;color:var(--accent)}.json-box pre{white-space:pre-wrap;direction:ltr;text-align:left;font-size:.64rem;max-height:180px;overflow:auto;color:var(--ink2)}

@media(max-width:1180px){.composer-layout{grid-template-columns:1fr}.composer-panel,.composer-stage{min-height:auto}.orb-shell{min-height:280px}.composer-hero{grid-template-columns:1fr}}
@media(max-width:720px){.composer-main{padding-top:18px}.timeline{grid-template-columns:repeat(3,1fr)}.impact-graph-wrap,.impact-graph{min-height:420px}.composer-hero h1{font-size:2rem}.panel-head,.stage-topline{display:grid}.composer-layout{gap:10px}.node text{font-size:16px}.node .node-val{font-size:18px}}
