:root{color-scheme:light;--paper:#fbfbf2;--ink:#1c211c;--green:#2d6147;--muted:#596255;--line:#b2baac;--soft:#e9ecdf}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;line-height:1.45}button,textarea{font:inherit;color:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.48;cursor:default}a{color:inherit;text-underline-offset:4px}button:focus-visible,a:focus-visible,textarea:focus-visible{outline:3px solid #8a583a;outline-offset:3px}button{min-height:44px}h1,h2,h3,p{margin:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-80px;left:20px;z-index:30;background:var(--ink);color:#fff;padding:12px}.skip-link:focus{top:10px}.canvas-app{height:100dvh;min-height:440px;display:flex;flex-direction:column}.canvas-header{flex-shrink:0;height:72px;margin:0 28px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line)}.canvas-brand{font-family:Georgia,serif;font-size:24px;text-decoration:none;white-space:nowrap}.date-tag{font-size:15px;white-space:nowrap;background:var(--ink);color:var(--paper);padding:6px 12px;border-radius:7px}.canvas-header nav{display:flex;gap:3px}.icon-button{display:grid;place-items:center;border:0;background:transparent;width:44px;height:44px;border-radius:50%;padding:10px;flex-shrink:0}.icon-button:hover:not(:disabled){background:var(--soft)}.canvas-stage{flex:1;min-height:0;overflow-y:auto;padding:28px max(28px,calc((100vw - 1100px)/2));scrollbar-gutter:stable}.generated-scene{display:flex;flex-direction:column;gap:30px;max-width:1100px;margin:auto}.visual-row{display:flex;align-items:flex-start;flex-wrap:wrap;gap:34px}.visual-row>*{flex:1;min-width:260px}.visual-block{min-width:0}.visual-heading{display:flex;justify-content:space-between;gap:12px;margin-bottom:14px}.visual-heading h2{font-size:14px;font-weight:500;letter-spacing:.03em}.trajectory{display:block;width:100%;max-height:290px}.trajectory text,.network text,.allocation text{font-family:inherit;font-size:11px;fill:var(--ink)}.chart-axis{fill:none;stroke:#77816f;stroke-width:1}.chart-grid{stroke:#d9ddcf;stroke-width:1;stroke-dasharray:3 5}.chart-legend{display:flex;flex-wrap:wrap;gap:5px 16px}.inspect{border:0;background:transparent;padding:6px 0;text-align:left;display:flex;align-items:center;gap:8px;font-size:12px;min-height:44px;line-height:1.4}.inspect:hover:not(:disabled){text-decoration:underline;text-underline-offset:4px}.inspect small{font-size:10px;color:var(--muted)}.legend-line{display:inline-block;width:23px;height:3px;flex-shrink:0}.capability-list{display:grid;grid-template-columns:1fr;gap:12px}.capability .inspect{width:100%;font-size:14px;gap:12px}.capability strong{margin-left:auto;font-weight:500}.capability-symbol{display:grid;place-items:center;background:var(--ink);color:var(--paper);font-size:20px;width:35px;height:35px;border-radius:5px}.bar-track{height:9px;margin-left:47px;background:#dce0d1;border-radius:1px;overflow:hidden}.bar-track>div{height:100%;background:var(--green);transition:width .55s ease}.allocation{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.allocation svg{width:210px;max-width:100%;flex-shrink:0}.allocation .donut-total{font-size:22px;font-weight:700}.allocation-legend{flex:1;min-width:130px}.allocation-legend .inspect{width:100%}.allocation-legend i{width:10px;height:10px;flex-shrink:0}.allocation-legend strong{margin-left:auto}.donut-segment{transition:stroke-dasharray .55s ease,stroke-dashoffset .55s ease}.population-label{display:flex;flex-wrap:wrap;gap:7px 12px;align-items:baseline;font-size:15px;margin-bottom:12px}.population-label strong{font-size:20px}.population-grid{display:flex;flex-wrap:wrap;gap:4px;min-height:14px}.population-grid i{display:block;width:13px;height:13px;background:var(--green);border-radius:1px;animation:appear .4s ease}.visual-caption{font-size:10px;color:var(--muted);margin-top:8px}.indicator-row{display:flex;flex-wrap:wrap;gap:20px 35px;justify-content:space-between}.indicator-row>div{min-width:100px;flex:1}.indicator-row .inspect{min-height:44px}.indicator-row strong{font-family:Arial,sans-serif;font-size:25px;display:block;line-height:1.2}.indicator-row small{font-size:12px;margin-left:4px;font-weight:400}.maturity{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.maturity h3{font-size:12px;font-weight:400;margin-bottom:10px}.maturity>div:nth-child(2) h3{color:var(--green)}.technology-marks .inspect{font-size:11px;align-items:center}.tech-square{display:block;width:17px;height:17px;border-radius:5px;background:var(--ink);flex-shrink:0}.tech-square.emerging{background:var(--green)}.tech-square.speculative{background:transparent;border:2px solid var(--ink)}.network{display:block;width:100%;max-height:400px}.network .entity-label{font-size:13px}.map-grid{stroke:#c9cebd;stroke-width:1}.entity-controls{display:flex;flex-wrap:wrap;gap:8px 18px}.entity-controls .inspect{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.event-timeline{list-style:none;padding:0;margin:0;display:flex;gap:20px;flex-wrap:wrap}.event-timeline li{position:relative;flex:1;min-width:130px;border-top:1px solid var(--line);padding-top:12px}.event-timeline time{font-size:11px;color:var(--muted)}.event-mark{position:absolute;top:-4px;left:0;width:7px;height:7px;border-radius:50%;background:var(--green)}.event-mark.setback{background:var(--ink)}.annotation{font-size:15px;font-weight:500;max-width:850px}.generated-action .inspect{border-bottom:1px solid var(--ink);font-size:14px}.scenario-label{font-size:10px;color:var(--muted);text-align:right;margin:28px auto 0;max-width:1100px}.composer-dock{flex-shrink:0;width:min(100%,1160px);padding:15px 28px 20px;margin:0 auto;background:var(--paper)}.decision-prompt{font-size:13px;margin:0 4px 12px;max-width:950px}.canvas-composer{border:1px solid #7b8872;border-radius:16px;background:#fffef8;padding:12px 12px 9px}.canvas-composer textarea{display:block;border:0;resize:vertical;min-height:45px;max-height:180px;width:100%;background:transparent;padding:3px 7px;font-size:15px;line-height:1.5}.canvas-composer textarea:focus{outline:none}.canvas-composer:focus-within{outline:2px solid var(--green);outline-offset:2px}.composer-controls{display:flex;align-items:center;gap:7px}.composer-status{font-size:11px;color:var(--muted);margin-right:auto;padding-left:7px}.send-button{background:var(--ink);color:var(--paper)}.send-button:hover:not(:disabled){background:var(--green)}.composer-mic.recording{background:var(--green);color:#fff}.empty-canvas{height:100%;min-height:190px;display:flex;align-items:center;justify-content:center;opacity:.25}.empty-canvas svg{width:75%;max-width:800px;fill:none;stroke:var(--green);stroke-width:2}.empty-canvas circle{fill:var(--green)}.session-panel{position:absolute;right:20px;top:80px;z-index:5;width:min(420px,calc(100vw - 40px));max-height:calc(100dvh - 105px);overflow:auto;background:var(--paper);border:1px solid var(--line);box-shadow:0 10px 30px #1c211c18;padding:20px}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.panel-heading h2{font-size:17px}.session-panel h3{font-size:12px;font-weight:600;margin:18px 0 8px}.session-panel p,.session-panel li{font-size:12px;line-height:1.7;margin:8px 0}.session-panel a{display:block;font-size:12px;padding:12px 0;min-height:44px}.history-item{display:flex;flex-direction:column;width:100%;background:none;border:0;border-top:1px solid var(--line);padding:13px 0;text-align:left;gap:5px}.history-item time{font-size:11px;color:var(--muted)}.history-item span{font-size:12px}.history-item small{font-size:10px;color:var(--muted)}.text-button,.return-latest{border:0;background:none;text-decoration:underline;text-underline-offset:4px;padding:10px;font-size:12px;min-height:44px}.return-latest{display:block;margin:20px auto}.canvas-error{display:flex;align-items:center;flex-wrap:wrap;gap:10px;color:#773d22;border-left:3px solid #773d22;padding:10px 15px;margin-bottom:20px;font-size:13px}.canvas-progress{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--muted);padding:0 0 18px}.canvas-progress span{width:7px;height:7px;background:var(--green);border-radius:50%;animation:pulse 1.3s ease infinite}@keyframes appear{from{opacity:.25}to{opacity:1}}@keyframes pulse{50%{opacity:.3}}@media(max-width:700px){.canvas-header{height:64px;margin:0 14px;gap:6px}.canvas-brand{font-size:19px}.date-tag{font-size:11px;padding:5px 7px}.canvas-header nav{gap:0}.canvas-header .icon-button{width:44px;min-width:44px}.canvas-stage{padding:20px 18px}.composer-dock{padding:10px 16px 14px}.visual-row{gap:24px}.visual-row>*{min-width:min(260px,100%)}.generated-scene{gap:24px}.allocation{justify-content:center}.allocation-legend{max-width:250px}.maturity{gap:12px}.technology-marks .inspect{flex-wrap:wrap;font-size:10px}.indicator-row{gap:15px}.indicator-row strong{font-size:22px}.trajectory text{font-size:13px}.decision-prompt{font-size:12px}.canvas-composer textarea{font-size:16px}.network .entity-label{font-size:15px}}@media(max-width:420px){.canvas-brand{font-size:17px}.canvas-header{flex-wrap:wrap;height:100px;padding:10px 0}.date-tag{order:3;margin:0 auto 4px}.canvas-header nav{margin-left:auto}.canvas-header .icon-button{width:44px;min-width:44px}.canvas-stage{padding:16px}.maturity{grid-template-columns:1fr}.technology-marks{display:flex;gap:4px 12px;flex-wrap:wrap}.population-label{font-size:12px}.population-label strong{font-size:17px}.population-grid i{width:10px;height:10px}.annotation{font-size:13px}.composer-status{font-size:10px}.trajectory text{font-size:16px}.chart-legend{gap:0 10px}.chart-legend .inspect{flex-wrap:wrap;max-width:100%}.event-timeline{display:block}.event-timeline li{margin:0 0 14px}.allocation svg{width:180px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(forced-colors:active){button,.canvas-composer{border:1px solid ButtonText}.bar-track>div,.tech-square,.population-grid i{background:CanvasText}.send-button{color:ButtonText}}
.visual-detail{position:fixed;z-index:20;background:var(--green);color:#fffef4;border-radius:12px;padding:16px 18px;box-shadow:0 8px 28px #15281928;overflow:auto;font-size:12px;line-height:1.55;overflow-wrap:anywhere}.detail-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:14px;margin-bottom:8px}.detail-heading button{color:inherit;border:0;background:none;min-width:44px;height:44px;font-size:25px;margin:-9px -12px -7px 0}.visual-detail p{margin:8px 0 12px}.visual-detail dl{margin:12px 0}.visual-detail dl>div{display:flex;justify-content:space-between;gap:18px;margin:5px 0}.visual-detail dd{margin:0;text-align:right;font-weight:600}.visual-detail dt{min-width:0}.detail-basis{display:block;opacity:.86;font-size:10px;margin-top:10px}.detail-ask{color:inherit;border:0;border-top:1px solid #ffffff60;background:none;text-align:left;width:100%;padding:10px 0 0;margin-top:12px}.detail-scale{display:flex;border:1px solid #ffffffb0;border-radius:4px;overflow:hidden;margin:12px 0}.detail-scale>div{flex:1;padding:5px;border-right:1px solid #ffffffb0;font-size:10px}.detail-scale>div:last-child{border:0}.detail-scale small{display:block;font-size:9px}.detail-scale .current{background:var(--paper);color:var(--ink)}.visual-detail :focus-visible{outline-color:#fff}.inspect-surface{cursor:help}.inspect-surface:focus-visible{outline:3px solid #8a583a;outline-offset:3px}.trajectory-point{fill:var(--paper);stroke:var(--green);stroke-width:2;cursor:help}.trajectory-point:hover,.trajectory-point:focus{fill:var(--green);r:6}.donut-segment{cursor:help}.donut-segment:hover,.donut-segment:focus{stroke-width:42;outline:none}.network-node{cursor:help}.network-node:focus{outline:2px solid var(--green)}
.reference-label{font-size:10px;color:var(--muted);margin:-6px 0 18px}.reference-milestones .upcoming{border-top-style:dashed}.reference-milestones .upcoming .event-mark{background:var(--paper);border:1px solid var(--green);width:8px;height:8px}
.sent-message{font-size:12px;border-left:2px solid var(--green);padding-left:12px;margin:0 0 8px;max-height:130px;overflow:auto}.sent-message summary{display:flex;gap:12px;align-items:center;cursor:pointer;min-height:44px}.sent-message summary span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sent-message p{white-space:pre-wrap;overflow-wrap:anywhere;margin:5px 0 10px}.request-progress{display:flex;align-items:center;justify-content:space-between;font-size:12px;min-height:44px}.request-entry{border-top:1px solid var(--line);padding:14px 0;overflow-wrap:anywhere}.request-entry ol{padding-left:20px;line-height:1.8}.request-entry summary{cursor:pointer;min-height:44px;padding:12px 0}.request-message{white-space:pre-wrap}.join-session{max-width:450px;margin:30px auto}.join-session h1{font-size:22px}.join-session label{display:block}.join-session input{font:inherit;padding:12px;width:100%;margin:12px 0;border:1px solid var(--green);background:var(--paper)}.inspect{min-height:44px}.detail-ask{min-height:44px}.composer-dock{max-height:55dvh;overflow:auto}.canvas-header nav .icon-button{flex-shrink:0}@media(max-width:420px){.composer-dock{padding:8px 12px}.sent-message{max-height:95px}.request-progress{font-size:11px}.canvas-header{height:auto;min-height:100px}.canvas-header nav{gap:0}}
.chart-point-target:hover .trajectory-point,.chart-point-target:focus .trajectory-point{fill:var(--green);r:6}.chart-point-target:focus{outline:2px solid var(--green)}.sent-message summary:focus-visible,.request-entry summary:focus-visible{outline:3px solid #8a583a;outline-offset:3px}
.past-values{font-size:12px;margin-top:8px}.past-values summary{min-height:44px;cursor:pointer;padding:12px 0}.past-values summary:focus-visible{outline:3px solid #8a583a;outline-offset:3px}.past-values-scroll{overflow-x:auto}.past-values table{border-collapse:collapse;width:100%;text-align:left}.past-values th,.past-values td{padding:10px;border-bottom:1px solid var(--line);font-weight:400}.past-values th{font-weight:600}

.conversation{max-width:1100px;margin:0 auto}.conversation-turn{padding:0 0 44px;scroll-margin-top:20px}.conversation-user.sent-message{margin:0 0 28px auto;padding:16px 20px;max-width:85%;max-height:none;overflow:visible;border:0;border-radius:16px;background:var(--soft);font-size:14px}.conversation-user strong{font-size:11px;color:var(--muted)}.conversation-user p{margin:6px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.turn-heading{display:flex;align-items:center;gap:14px;margin-bottom:22px;font-size:12px}.turn-heading time{font-size:11px;color:var(--muted)}.conversation-agent{min-width:0}.conversation-agent .decision-prompt{margin:24px 0 0;font-size:14px}.conversation-agent .scenario-label{margin-top:20px}.conversation-agent .request-progress{justify-content:flex-start;gap:16px}.conversation-agent .generated-scene{margin:0}.conversation-turn+.conversation-turn{border-top:1px solid var(--line);padding-top:32px}@media(max-width:700px){.conversation-user.sent-message{max-width:95%;padding:12px 14px}.conversation-turn{padding-bottom:32px}}

.waiting-animation{display:flex;align-items:center;gap:16px;margin:12px 0 20px}.waiting-animation .text-button{font-size:11px;color:var(--muted)}.dotmatrix-spiral{display:grid;grid-template-columns:repeat(5,5px);gap:3px;color:var(--green)}.dotmatrix-spiral i{display:block;width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.24;animation:dotmatrix-spiral 1500ms linear infinite}.dotmatrix-spiral.paused i{animation-play-state:paused}@keyframes dotmatrix-spiral{0%,100%{opacity:.08}8%{opacity:1}16%{opacity:.644}24%{opacity:.442}32%{opacity:.24}40%{opacity:.12}}@media(prefers-reduced-motion:reduce){.dotmatrix-spiral i{animation:none;opacity:.5}}

.response-intro{font-size:15px;line-height:1.65;max-width:850px;margin:0 0 24px;white-space:pre-wrap;overflow-wrap:anywhere}.streaming-label{display:block;font-size:11px;color:var(--muted);margin:12px 0}.streaming-response{margin-top:14px}

/* Older saved responses also use the visual-only presentation. */
.conversation-agent .annotation{display:none}
