:root{color-scheme:light;--bg:#f5f7fa;--fg:#17273d;--muted:#617086;--line:#dce3eb;--surface:#fff;--accent:#477caa;--on-accent:#fff;--stage:#edf2f7}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.45 "Aptos","Inter","Segoe UI",Arial,sans-serif}main{max-width:1600px;margin:auto;padding:18px 24px}h1{font-size:20px;font-weight:600;margin:0}h1 span{font-size:12px;font-weight:500;color:var(--muted);margin-left:6px}p{margin:3px 0;color:var(--muted)}header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:15px}a{color:var(--accent);text-underline-offset:3px}button,select,input{font:inherit}button,select{border:1px solid var(--line);border-radius:7px;color:var(--fg);background:var(--surface);padding:8px 11px;min-height:36px}button{cursor:pointer}button:hover{background:color-mix(in srgb,var(--accent) 10%,var(--surface))}button:disabled{opacity:.5;cursor:wait}button.primary{background:var(--accent);color:var(--on-accent);border-color:transparent}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.view-tools{display:flex;flex-wrap:wrap;align-items:end;gap:10px 16px;margin-bottom:12px}.view-tools label:not(.check){display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:12px}.view-tools select{color:var(--fg);font-size:14px;max-width:100%}.check{display:flex;align-items:center;gap:7px;min-height:36px}.check input{width:16px;height:16px;accent-color:var(--accent)}.stage{position:relative;height:clamp(330px,calc(100dvh - 290px),760px);background:var(--stage);overflow:hidden;border-radius:10px}#canvas{width:100%;height:100%;display:block;touch-action:none}#labels{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#labels text{fill:var(--fg);font:12px "Aptos","Inter","Segoe UI",Arial,sans-serif;paint-order:stroke;stroke:var(--stage);stroke-width:3px;stroke-linejoin:round}#labels line{stroke:var(--muted);stroke-width:1;opacity:.7}#loading{position:absolute;top:14px;left:16px;color:var(--muted);padding:6px 10px;background:var(--surface);border-radius:6px}#loading[hidden]{display:none}.zoom{position:absolute;right:12px;bottom:12px;display:flex;gap:6px}.zoom button{font-size:20px;line-height:1;min-width:38px}.timeline{padding-top:16px}.progress-label{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.progress-label label{font-weight:600}#progress-value{font-variant-numeric:tabular-nums}#phase{color:var(--muted);margin-left:auto}#progress{width:100%;accent-color:var(--accent);margin:13px 0 6px;cursor:ew-resize}.milestones{display:flex;justify-content:space-between;gap:4px}.milestones button{background:none;border:0;border-radius:0;color:var(--muted);font-size:12px;padding:3px 4px;min-height:28px}.milestones button.active{color:var(--accent);font-weight:600}.actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:15px 0}.hint{font-size:12px;color:var(--muted);margin-left:6px}.selection{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;padding:11px 0;border-top:1px solid var(--line)}.selection strong{font-weight:600}.selection span{color:var(--muted);overflow-wrap:anywhere}footer{color:var(--muted);font-size:12px;margin:8px 0 4px}[hidden]{display:none!important}@media(max-width:640px){main{padding:12px}header{align-items:flex-start}h1{font-size:17px}.view-tools{gap:8px}.view-tools label:not(.check){flex:1 1 140px}.view-tools label:first-child{flex-basis:100%}.stage{height:clamp(300px,calc(100dvh - 400px),470px)}.milestones{flex-wrap:wrap;justify-content:flex-start;gap:4px 9px}#phase{margin-left:0;flex-basis:100%}.hint{margin-left:0;flex-basis:100%}.selection{gap:4px}header>a{font-size:12px;white-space:nowrap}}@media(pointer:coarse){button,select{min-height:44px}.milestones button{min-height:44px}#progress{min-height:34px}}

.gap-status{font-size:12px;color:var(--muted);margin-top:8px;min-height:18px;font-variant-numeric:tabular-nums}.milestones button{white-space:nowrap}.milestones{flex-wrap:wrap}button:disabled{cursor:default}

.breadcrumb{display:inline-block;font-size:11px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;margin-bottom:8px}header{padding-bottom:12px;border-bottom:1px solid var(--line)}header>div>p{font-size:12px}.stage{border:1px solid var(--line);border-radius:12px;background:radial-gradient(ellipse at 50% 35%,#fbfcfe,#edf2f7)}button,select{border-radius:7px}.source-article{max-width:960px}.source-article table{width:100%;border-collapse:collapse;margin:20px 0;font-size:13px}.source-article th,.source-article td{padding:12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}.source-article h2{font-size:18px;margin:28px 0 10px}.source-article p,.source-article li{line-height:1.65}.source-article .lead{font-size:17px;color:var(--fg)}
html[data-embed] body{background:#fff}html[data-embed] main{padding:10px;max-width:none;height:100dvh;display:flex;flex-direction:column;min-height:0}html[data-embed] header,html[data-embed] .selection,html[data-embed] footer{display:none}html[data-embed] .view-tools{flex:none;gap:5px 9px;margin-bottom:8px}html[data-embed] .view-tools label:not(.check){font-size:10px;gap:2px}html[data-embed] .view-tools select,html[data-embed] .view-tools button{min-height:31px;font-size:11px;padding:5px 7px}html[data-embed] .view-tools .check{min-height:30px;gap:4px;font-size:11px}html[data-embed] .check input{width:14px;height:14px}html[data-embed] .stage{flex:1 1 auto;height:auto;min-height:230px}html[data-embed] .timeline{flex:none;padding-top:8px}html[data-embed] .progress-label{font-size:11px;gap:7px}html[data-embed] #progress{margin:8px 0 2px}html[data-embed] .milestones button{font-size:10px;min-height:24px;padding:2px}html[data-embed] .gap-status{font-size:10px;margin-top:4px}html[data-embed] .actions{flex:none;margin:8px 0 0;gap:5px}html[data-embed] .actions button{font-size:11px;min-height:30px;padding:5px 8px}html[data-embed] .hint{display:none}
@media(max-width:640px){html[data-embed] .view-tools label:first-child{flex-basis:180px}html[data-embed] .view-tools label:not(.check){flex-grow:1}html[data-embed] .progress-label #phase{flex-basis:auto;margin-left:auto}html[data-embed] .stage{min-height:230px}html[data-embed] .milestones{gap:2px 6px}html[data-embed] .view-tools{gap:4px 8px}.source-article table{font-size:11px}.source-article th,.source-article td{padding:7px}}
