/* AI² WORLD INTERFACE V1
   Enhancement-only presentation layer over the canonical AI² conversation + Living Graph.
   Presentation state only. No authority, proof, capability, or knowledge state is created here.
*/
:root{
  --ai2-world-split:48%;
  --ai2-world-gap:12px;
  --ai2-world-control-h:34px;
  --ai2-world-radius:18px;
  --ai2-world-line:rgba(107,166,255,.14);
  --ai2-world-panel:linear-gradient(180deg,rgba(7,14,26,.94),rgba(4,9,18,.96));
  --ai2-world-glow:0 28px 90px rgba(0,0,0,.34),0 0 0 1px rgba(107,166,255,.03) inset;
}

/* One living workspace: conversation above composer, Living Graph immediately below. */
.ai2-world-interface{position:relative;display:grid;grid-template-rows:auto minmax(280px,var(--ai2-world-split)) 10px minmax(360px,1fr);gap:0;min-height:min(1180px,calc(100svh - 108px));margin:20px 0 42px;border:1px solid var(--ai2-world-line);border-radius:22px;background:linear-gradient(180deg,rgba(7,13,24,.78),rgba(4,9,18,.72));box-shadow:var(--ai2-world-glow);overflow:hidden;isolation:isolate}
.ai2-world-interface::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(900px 420px at 50% -10%,rgba(59,130,246,.09),transparent 62%),radial-gradient(680px 480px at 90% 64%,rgba(79,70,229,.055),transparent 70%);z-index:-1}
.ai2-world-interface .ai2-chat-shell,.ai2-world-interface #map{margin:0!important;border:0!important;border-radius:0!important;background:transparent!important;min-width:0}
.ai2-world-interface .ai2-chat-shell{grid-row:2;min-height:0;display:block;padding:0 14px 12px;overflow:hidden}
.ai2-world-interface #map{grid-row:4;min-height:0;padding:0 14px 14px;overflow:hidden}

/* Workspace command strip. */
.ai2-world-toolbar{grid-row:1;display:flex;align-items:center;gap:7px;min-height:46px;padding:7px 10px;border-bottom:1px solid var(--ai2-world-line);background:rgba(4,9,18,.76);backdrop-filter:blur(18px);z-index:30}
.ai2-world-toolbar .world-title{display:flex;align-items:center;gap:8px;min-width:0;margin-right:4px;color:#9fb4ca;font:700 9px/1 var(--mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);letter-spacing:.13em;text-transform:uppercase;white-space:nowrap}
.ai2-world-toolbar .world-live-dot{width:6px;height:6px;border-radius:50%;background:#61748b;box-shadow:0 0 0 3px rgba(97,116,139,.08)}
.ai2-world-interface[data-graph-state="live"] .world-live-dot{background:#34d399;box-shadow:0 0 12px rgba(52,211,153,.66)}
.ai2-world-toolbar .world-spacer{flex:1}
.ai2-world-toolbar button{height:30px;padding:0 10px;border:1px solid rgba(107,166,255,.13);border-radius:9px;background:rgba(255,255,255,.018);color:#70879f;font:650 9px/1 var(--mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);letter-spacing:.035em;transition:color .16s,border-color .16s,background .16s,transform .16s}
.ai2-world-toolbar button:hover,.ai2-world-toolbar button:focus-visible{color:#dceaff;border-color:rgba(107,166,255,.38);background:rgba(59,130,246,.075)}
.ai2-world-toolbar button[aria-pressed="true"],.ai2-world-toolbar button.on{color:#ecf5ff;border-color:rgba(82,160,255,.48);background:linear-gradient(180deg,rgba(59,130,246,.15),rgba(59,130,246,.07));box-shadow:0 0 0 1px rgba(79,153,255,.05) inset}
.ai2-world-toolbar .world-mode-group{display:flex;gap:4px;padding:3px;border:1px solid rgba(107,166,255,.08);border-radius:11px;background:rgba(0,0,0,.14)}

/* Conversation becomes a stable internally-scrolling viewport. */
.ai2-world-interface .ai2-chat-surface{height:100%;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;overflow:hidden;border-radius:16px!important}
.ai2-world-interface .thread-head{grid-row:1}
.ai2-world-interface #thread{grid-row:2;min-height:0;max-height:none!important;overflow-y:auto!important;overscroll-behavior:contain;scrollbar-gutter:stable;scroll-behavior:smooth;padding-bottom:22px!important;contain:layout paint;overflow-anchor:auto}
.ai2-world-interface .ai2-ui-host{grid-row:3;max-height:min(28vh,300px);overflow:auto;overscroll-behavior:contain}
.ai2-world-interface #composer{grid-row:4;position:relative!important;bottom:auto!important;z-index:12;margin:0!important;background:linear-gradient(180deg,rgba(8,15,27,.98),rgba(5,11,20,.995));box-shadow:0 -12px 36px rgba(4,9,18,.58)}
.ai2-live-edge-pill{position:absolute;left:50%;bottom:116px;z-index:42;transform:translateX(-50%) translateY(7px);opacity:0;pointer-events:none;height:31px;padding:0 12px;border-radius:999px;border:1px solid rgba(107,166,255,.28);background:rgba(7,17,31,.94);color:#bcd7f5;font:650 9px/1 var(--mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);box-shadow:0 12px 34px rgba(0,0,0,.36),0 0 18px rgba(59,130,246,.08);transition:opacity .16s,transform .16s}
.ai2-live-edge-pill[data-visible="true"]{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}

/* Direct surface divider. */
.ai2-world-divider{grid-row:3;position:relative;z-index:35;cursor:ns-resize;touch-action:none;background:linear-gradient(180deg,transparent,rgba(107,166,255,.055),transparent)}
.ai2-world-divider::before{content:"";position:absolute;left:50%;top:50%;width:58px;height:3px;transform:translate(-50%,-50%);border-radius:999px;background:rgba(113,143,176,.26);box-shadow:0 0 0 1px rgba(255,255,255,.015)}
.ai2-world-divider:hover::before,.ai2-world-divider:focus-visible::before,.ai2-world-interface[data-resizing="true"] .ai2-world-divider::before{background:rgba(107,166,255,.66);box-shadow:0 0 14px rgba(59,130,246,.25)}

/* Graph occupies the second live language surface, not a distant page section. */
.ai2-world-interface #map{display:flex;flex-direction:column}
.ai2-world-interface #map>.section-head{flex:0 0 auto;margin:0;padding:11px 2px 8px;border:0}
.ai2-world-interface #map .mapframe{flex:1;min-height:0;border-radius:16px!important;background:radial-gradient(560px 360px at 50% 48%,rgba(41,88,151,.095),transparent 70%),linear-gradient(180deg,rgba(6,13,24,.86),rgba(3,8,16,.92))!important}
.ai2-world-interface #map .mapstage{height:100%;min-height:330px!important}
.ai2-world-interface .mapfoot{position:relative;z-index:10}

/* Deep navigation / semantic breadcrumb rail. */
.ai2-world-breadcrumbs{display:flex;align-items:center;gap:4px;min-height:31px;padding:4px 8px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid rgba(107,166,255,.075);background:rgba(3,8,16,.54)}
.ai2-world-breadcrumbs::-webkit-scrollbar{display:none}
.ai2-world-breadcrumbs button{flex:0 0 auto;max-width:190px;height:23px;padding:0 7px;border-radius:7px;color:#68809a;font:600 9px/1 var(--mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai2-world-breadcrumbs button:hover,.ai2-world-breadcrumbs button:last-of-type{color:#b9d4ef;background:rgba(59,130,246,.055)}
.ai2-world-breadcrumbs .crumb-sep{color:#33475e;font-size:10px}

/* Node action dock: every grounded node can become a new center. */
.ai2-node-action-dock{position:absolute;z-index:50;display:none;align-items:center;gap:4px;padding:5px;border:1px solid rgba(107,166,255,.19);border-radius:12px;background:rgba(5,12,23,.95);backdrop-filter:blur(18px);box-shadow:0 18px 44px rgba(0,0,0,.44)}
.ai2-node-action-dock[data-visible="true"]{display:flex}
.ai2-node-action-dock button{height:27px;padding:0 8px;border-radius:8px;border:1px solid transparent;color:#7e97b1;font:650 8.5px/1 var(--mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);white-space:nowrap}
.ai2-node-action-dock button:hover,.ai2-node-action-dock button:focus-visible{color:#e2f0ff;border-color:rgba(107,166,255,.2);background:rgba(59,130,246,.075)}
.ai2-node-action-dock [data-world-node-action="deep"]{color:#a9cfff;border-color:rgba(107,166,255,.15);background:rgba(59,130,246,.055)}

/* Epistemic truth is visible, not hidden behind generic edges. */
.ai2-lg-node[data-epistemic="verified"],.ai2-lg-node[data-epistemic="observed"]{box-shadow:0 18px 38px rgba(0,0,0,.31),0 0 0 1px rgba(52,211,153,.08) inset}
.ai2-lg-node[data-epistemic="supported"]{border-style:solid}
.ai2-lg-node[data-epistemic="inferred"],.ai2-lg-node[data-epistemic="hypothesis"]{border-style:dashed}
.ai2-lg-node[data-epistemic="contradicted"]{border-color:rgba(255,119,131,.58)}
.ai2-lg-node[data-epistemic="superseded"]{opacity:.56;filter:saturate(.7)}
.ai2-lg-node[data-epistemic="unknown"] .ai2-lg-node-state{background:#60748d;box-shadow:none}
.ai2-lg-edge[data-relation="supports"]{stroke:rgba(52,211,153,.6)}
.ai2-lg-edge[data-relation="contradicts"]{stroke:rgba(255,119,131,.72);stroke-dasharray:6 4}
.ai2-lg-edge[data-relation="causes"]{stroke:rgba(139,173,255,.7);stroke-width:1.9}
.ai2-lg-edge[data-relation="correlates"]{stroke:rgba(171,147,255,.56);stroke-dasharray:2 5}
.ai2-lg-edge[data-relation="derived-from"],.ai2-lg-edge[data-relation="evolves-from"]{stroke:rgba(96,190,255,.56)}
.ai2-lg-edge[data-relation="cites"],.ai2-lg-edge[data-relation="replicates"]{stroke:rgba(52,211,153,.45);stroke-dasharray:2 4}
.ai2-lg-edge[data-relation="supersedes"]{stroke:rgba(155,169,188,.46);stroke-dasharray:8 5}
.ai2-lg-edge[data-relation="authorized-by"]{stroke:rgba(232,180,74,.72);stroke-width:1.8}
.ai2-lg-edge[data-relation="proven-by"]{stroke:rgba(80,231,180,.7);stroke-width:1.8}

/* Semantic sign-language micro grammar. */
.ai2-lg-node[data-world-signal="attention"]{animation:ai2-world-attention .72s cubic-bezier(.18,.78,.2,1)}
.ai2-lg-node[data-world-signal="authority"]{animation:ai2-world-authority .78s cubic-bezier(.18,.78,.2,1)}
.ai2-lg-node[data-world-signal="proof"]{animation:ai2-world-proof .82s cubic-bezier(.18,.78,.2,1)}
.ai2-lg-node[data-world-signal="danger"]{animation:ai2-world-danger .88s cubic-bezier(.16,.78,.18,1)}
@keyframes ai2-world-attention{0%,100%{filter:none}48%{filter:drop-shadow(0 0 16px rgba(87,163,255,.65))}}
@keyframes ai2-world-authority{0%,100%{box-shadow:0 14px 30px rgba(0,0,0,.25)}50%{box-shadow:0 18px 38px rgba(0,0,0,.34),0 0 0 5px rgba(232,180,74,.13),0 0 29px rgba(232,180,74,.26)}}
@keyframes ai2-world-proof{0%,100%{filter:none}46%{filter:drop-shadow(0 0 18px rgba(52,211,153,.68))}}
@keyframes ai2-world-danger{0%,100%{filter:none}18%,58%{filter:drop-shadow(0 0 19px rgba(255,83,103,.75))}36%,72%{filter:none}}

/* Temporal knowledge strip appears only when grounded history exists. */
.ai2-world-time{display:none;align-items:center;gap:8px;min-height:34px;padding:5px 9px;border-top:1px solid rgba(107,166,255,.08);background:rgba(3,8,16,.72)}
.ai2-world-time[data-visible="true"]{display:flex}
.ai2-world-time .time-label{color:#688099;font:700 8px/1 var(--mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);letter-spacing:.08em;text-transform:uppercase}
.ai2-world-time input[type="range"]{flex:1;accent-color:#6ba6ff;min-width:80px}
.ai2-world-time output{min-width:92px;text-align:right;color:#93abc4;font:600 9px var(--mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace)}

/* Focus modes preserve both languages while changing emphasis. */
.ai2-world-interface[data-mode="balanced"]{--ai2-world-split:48%}
.ai2-world-interface[data-mode="text"]{--ai2-world-split:68%}
.ai2-world-interface[data-mode="graph"]{--ai2-world-split:28%}
.ai2-world-interface[data-mode="text-full"]{position:fixed;inset:10px;z-index:1000;margin:0;min-height:0;grid-template-rows:auto minmax(0,1fr) 10px 62px}
.ai2-world-interface[data-mode="text-full"] #map{opacity:.78;pointer-events:auto;padding:2px 14px 8px}
.ai2-world-interface[data-mode="text-full"] #map>.section-head,.ai2-world-interface[data-mode="text-full"] #map .mapfoot,.ai2-world-interface[data-mode="text-full"] #map .ai2-lg-status{display:none}
.ai2-world-interface[data-mode="text-full"] #map .mapstage{min-height:42px!important;height:42px;overflow:hidden}
.ai2-world-interface[data-mode="graph-full"]{position:fixed;inset:10px;z-index:1000;margin:0;min-height:0;grid-template-rows:auto 74px 10px minmax(0,1fr)}
.ai2-world-interface[data-mode="graph-full"] .ai2-chat-shell{padding:2px 14px 4px}
.ai2-world-interface[data-mode="graph-full"] .ai2-chat-brand,.ai2-world-interface[data-mode="graph-full"] .thread-head,.ai2-world-interface[data-mode="graph-full"] #thread,.ai2-world-interface[data-mode="graph-full"] .ai2-ui-host{display:none}
.ai2-world-interface[data-mode="graph-full"] .ai2-chat-surface{display:block;height:auto;background:transparent!important;border:0!important}
.ai2-world-interface[data-mode="graph-full"] #composer{box-shadow:none;border-radius:12px!important}
body.ai2-world-modal{overflow:hidden}

/* Follow AI² never steals the user's viewport unless explicitly enabled. */
.ai2-world-interface[data-follow="true"] .world-follow{color:#cce2fa;border-color:rgba(107,166,255,.42)}

/* Mobile: same semantic state, different ergonomics. */
@media (max-width:900px){
  .ai2-world-interface{min-height:calc(100svh - 72px);grid-template-rows:auto minmax(280px,52svh) 12px minmax(300px,48svh);border-radius:16px;margin:10px 0 26px}
  .ai2-world-toolbar{overflow-x:auto;scrollbar-width:none;padding:6px 7px}.ai2-world-toolbar::-webkit-scrollbar{display:none}
  .ai2-world-toolbar .world-title{position:sticky;left:0;background:rgba(4,9,18,.94);z-index:2;padding-right:6px}
  .ai2-world-toolbar .world-mode-group{flex:0 0 auto}.ai2-world-toolbar button{flex:0 0 auto}
  .ai2-world-interface .ai2-chat-shell,.ai2-world-interface #map{padding-left:7px;padding-right:7px}
  .ai2-world-interface #map .mapstage{min-height:280px!important}
  .ai2-node-action-dock{left:8px!important;right:8px!important;bottom:42px!important;top:auto!important;overflow-x:auto;max-width:none;justify-content:flex-start}
}
@media (max-width:620px){
  .ai2-world-interface{grid-template-rows:auto minmax(260px,54svh) 12px minmax(250px,42svh);margin-left:-2px;margin-right:-2px}
  .ai2-world-toolbar .world-title span:last-child{display:none}
  .ai2-world-toolbar .world-mode-group button{padding:0 8px}
  .ai2-world-interface .ai2-chat-brand{display:none}
  .ai2-live-edge-pill{bottom:104px}
  .ai2-world-breadcrumbs{min-height:29px}
}

/* Keyboard/accessibility truth remains available when motion is reduced. */
.ai2-world-divider:focus-visible,.ai2-node-action-dock button:focus-visible,.ai2-world-breadcrumbs button:focus-visible{outline:2px solid rgba(107,166,255,.72);outline-offset:2px}
@media (prefers-reduced-motion:reduce){
  .ai2-world-interface *, .ai2-world-interface *::before,.ai2-world-interface *::after{scroll-behavior:auto!important}
  .ai2-lg-node[data-world-signal]{animation:none!important}
  .ai2-live-edge-pill,.ai2-world-toolbar button{transition:none!important}
}
