:root{--ink: #1c1e21;--muted: #6b7280;--line: #d8dbe0;--bg: #f7f8fa;--card: #ffffff;--accent: #1f5f8b;--bad: #a12a2a;--bad-bg: #fdf2f2;--good: #1f7a3d;--ctx-0-bg: #eaf2fb;--ctx-0-line: #5b8fc7;--ctx-1-bg: #fdf1e3;--ctx-1-line: #d08a3c;--ctx-2-bg: #eaf6ec;--ctx-2-line: #4f9a5f;--ctx-3-bg: #f4ecf8;--ctx-3-line: #9366b4;--ctx-4-bg: #fcebee;--ctx-4-line: #c8596d;--ctx-5-bg: #eef0f2;--ctx-5-line: #7d8590;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.5rem;background:var(--card);border-bottom:1px solid var(--line)}nav{display:flex;gap:1rem}nav a{color:var(--muted);text-decoration:none;font-weight:600;padding:.25rem 0;border-bottom:2px solid transparent}nav a.active{color:var(--accent);border-bottom-color:var(--accent)}main{margin:0;padding:1.5rem}.stack{display:flex;flex-direction:column;gap:1.25rem}.card{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:1rem 1.25rem}h1{font-size:1.5rem;margin:0 0 .5rem}h2{font-size:1.1rem;margin:0 0 .75rem}table{width:100%;border-collapse:collapse;font-size:.9rem}th{text-align:left;color:var(--muted);font-weight:600;border-bottom:1px solid var(--line);padding:.4rem .5rem}td{padding:.4rem .5rem;border-bottom:1px solid var(--line)}tr.spent td{color:var(--muted);text-decoration:line-through}tr.due td{background:var(--bad-bg)}.muted,.hint{color:var(--muted)}.error{color:var(--bad)}.kind{font-size:.75rem;border:1px solid var(--line);border-radius:3px;padding:.05rem .35rem;color:var(--muted)}.lifecycle.active{color:var(--good)}.lifecycle.sunsetting{color:#9a6b00}.lifecycle.retired{color:var(--muted)}.who{display:flex;align-items:center;gap:.75rem;font-size:.9rem}button{font:inherit;padding:.35rem .75rem;border:1px solid var(--line);border-radius:4px;background:var(--card);cursor:pointer}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button:disabled{opacity:.6;cursor:default}input,select{font:inherit;padding:.35rem .5rem;border:1px solid var(--line);border-radius:4px;background:var(--card)}.row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem}.row label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--muted)}.row label.grow{flex:1 1 24rem}.login{max-width:30rem;margin:4rem auto;background:var(--card);border:1px solid var(--line);border-radius:6px;padding:2rem}.login form{display:flex;flex-direction:column;gap:.5rem;margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--line)}.login label{font-size:.85rem;color:var(--muted)}pre.xml,pre.secret{background:#f2f3f5;border:1px solid var(--line);border-radius:4px;padding:.75rem;overflow-x:auto;font-size:.85rem;white-space:pre-wrap;word-break:break-all}.issued{border-color:var(--accent)}.stack.tight{gap:.6rem}.between{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.between h1,.between h2{margin:0}.warn{background:#fdf6e3;border-left:3px solid #9a6b00;padding:.6rem .8rem;margin:.5rem 0 0;font-size:.9rem}.rejected{border-color:var(--bad)}label.block{display:block;font-size:.85rem;color:var(--muted)}textarea.xml-input{display:block;width:100%;margin-top:.35rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;line-height:1.45;padding:.6rem;border:1px solid var(--line);border-radius:4px;resize:vertical;-moz-tab-size:4;tab-size:4}ul.report,ul.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}ul.report>li{border-left:3px solid var(--line);padding:.4rem 0 .4rem .7rem}ul.report>li.attention,ul.steps>li.attention{border-left-color:#9a6b00}ul.report>li.decision{border-left-color:var(--bad)}.report-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.badge{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;font-weight:700;border:1px solid var(--line);border-radius:3px;padding:.05rem .35rem;background:#eef1f4}.badge.k4,.badge.k5,.badge.k6,.badge.view{background:#f7e4e4;border-color:#d9b3b3}.badge.k2,.badge.k3,.badge.data{background:#fdf3dd;border-color:#ddc79a}.badge-title{font-size:.8rem;color:var(--muted);font-weight:600}.report-what{margin-top:.2rem;font-size:.9rem}.report-meaning{margin-top:.15rem;font-size:.82rem;color:var(--muted)}.report-rollout{margin-top:.45rem;padding:.4rem .6rem;border-left:3px solid var(--line);background:#00000005}.report-rollout-head{font-size:.78rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.report-rollout ol{margin:.3rem 0 0;padding-left:1.2rem;font-size:.86rem}.report-rollout li+li{margin-top:.25rem}.verdict{display:inline-block;padding:.05rem .4rem;border-radius:3px;font-size:.72rem;font-weight:700;letter-spacing:.03em;border:1px solid var(--line)}.verdict-migrated{background:#e6f4ea;border-color:#b7dfc3}.verdict-in_use{background:#fdecea;border-color:#f3c0bb}.verdict-unobserved{background:#fff6e0;border-color:#ddc79a}.verdict-settled{background:transparent;color:var(--muted)}ul.steps>li{border-left:3px solid var(--line);padding:.25rem 0 .25rem .7rem;font-size:.9rem}.confirm{margin-top:.75rem;padding:.75rem 1rem;border:1px solid var(--line);border-radius:4px;background:#f2f3f5;font-size:.9rem}.confirm.grave{border-color:var(--bad);background:#fdf1f1}.confirm p{margin:0 0 .6rem}a.button-link{display:inline-block;font-size:.9rem;padding:.35rem .75rem;border:1px solid var(--line);border-radius:4px;background:var(--card);color:var(--ink);text-decoration:none}a.button-link.primary{background:var(--accent);border-color:var(--accent);color:#fff}.editor-frame{margin-top:.5rem}.editor-host{border:1px solid var(--line);border-radius:4px;overflow:hidden}.editor-host.editor-loading{display:flex;align-items:center;justify-content:center;background:#f2f3f5}.view-switch{display:flex;align-items:center;gap:.35rem;margin-bottom:.5rem}.view-switch button{font-size:.85rem;padding:.25rem .7rem;color:var(--muted)}.view-switch button.active{background:var(--accent);border-color:var(--accent);color:#fff}.badge-count{margin-left:auto;font-size:.8rem;color:var(--muted)}.badge-count.bad{color:var(--bad);font-weight:600}ul.problems{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.3rem;font-size:.88rem}ul.problems>li{display:flex;gap:.5rem;align-items:baseline;border-left:3px solid var(--bad);padding:.25rem 0 .25rem .6rem}ul.problems>li.warning{border-left-color:#9a6b00}.badge.schema{background:#e8eef3;border-color:#c3d0da}.badge.server{background:#f0e8f3;border-color:#d3c3da}.hint.ok{color:var(--good)}.form-view{border:1px solid var(--line);border-radius:4px;padding:.75rem;background:var(--card);max-height:40rem;overflow-y:auto}.form-element{border-left:2px solid var(--line);padding:.35rem 0 .35rem .7rem;margin-bottom:.35rem}.form-element.depth-0{border-left-color:var(--accent)}.form-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.disclosure{border:none;background:none;padding:0 .15rem;cursor:pointer;color:var(--muted);font-size:.8rem}.disclosure-spacer{display:inline-block;width:1rem}.element-name{font-size:.85rem;color:var(--accent)}.form-head .remove{margin-left:auto;font-size:.78rem;padding:.1rem .45rem;color:var(--bad)}.element-doc{margin:.2rem 0 .4rem 1.5rem;font-size:.82rem;max-width:44rem}.attribute-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:.4rem .75rem;margin:.35rem 0 .5rem 1.5rem}label.attribute{display:flex;flex-direction:column;gap:.15rem;font-size:.8rem}.attribute-name{color:var(--muted)}label.attribute.missing input,label.attribute.missing select{border-color:var(--bad)}label.attribute.missing .attribute-name{color:var(--bad)}.form-children{margin-left:1.5rem}.add-row{margin-top:.3rem}.add-row button{font-size:.78rem;padding:.15rem .5rem}tr.highlighted>td{background:#eef4f8}ul.environments,ul.apps,ul.instances{list-style:none;margin:0;padding:0}ul.environments>li+li{margin-top:.5rem}ul.apps{margin-left:.9rem}ul.apps>li{margin-bottom:.3rem}strong.environment{display:inline-block;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;color:#445}ul.instances{margin-left:.9rem;font-size:.85rem}ul.instances li.superseded{opacity:.55}ul.instances li.superseded code{text-decoration:line-through}.grave-note{margin:0 0 .6rem;padding:.5rem .7rem;border-left:3px solid var(--bad);background:#fff;font-size:.9rem}.in-use{font-size:.8rem;color:var(--muted)}.in-use.some{color:var(--good);font-weight:600}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c1e2173;display:flex;align-items:flex-start;justify-content:center;padding:3rem 1rem;overflow-y:auto;z-index:50}.modal{background:var(--card);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 32px #0000002e;width:min(46rem,100%);outline:none}.modal.grave{border-top:4px solid var(--bad)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:1.25rem;padding:.9rem 1.2rem;border-bottom:1px solid var(--line)}.modal-head button.icon{flex-shrink:0}.modal-head h2{margin:0;font-size:1.05rem}.modal-meaning{margin:0;padding:.8rem 1.2rem 0;color:var(--muted)}.modal-body{padding:1.2rem}button.icon{background:none;border:none;font-size:1.4rem;line-height:1;padding:0 .3rem;color:var(--muted);cursor:pointer;position:relative}button.icon:after{content:"";position:absolute;top:-.7rem;right:-.7rem;bottom:-.7rem;left:-.7rem}button.icon:hover{color:var(--ink)}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--line);margin-bottom:1rem;flex-wrap:wrap}.tabs button{background:none;border:none;border-bottom:2px solid transparent;border-radius:0;padding:.55rem .9rem;color:var(--muted);cursor:pointer}.tabs button:hover{color:var(--ink)}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.tabs .tab-count{display:inline-block;margin-left:.45rem;padding:0 .4rem;border-radius:999px;background:var(--bg);border:1px solid var(--line);font-size:.78rem;color:var(--muted)}.tabs .tab-count.attention{background:#fdf3f3;border-color:var(--bad);color:var(--bad)}.contexts{display:grid;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));gap:.9rem}.context-card{border:1px solid var(--line);border-radius:6px;padding:.9rem;background:var(--card);display:flex;flex-direction:column;gap:.55rem}.context-card h3{margin:0;font-size:1rem}.context-card .where{font-size:.85rem;color:var(--muted)}.context-card .where.silent{font-style:italic}.role{display:inline-block;padding:0 .4rem;border-radius:3px;font-size:.78rem;border:1px solid var(--line);color:var(--muted)}.role.owned{border-color:var(--accent);color:var(--accent);background:#eef4f9}.lifecycle.draft{background:#fff6e5;color:#8a5a00}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.8rem}.kpi{border:1px solid var(--line);border-radius:6px;padding:.8rem;background:var(--card)}.kpi .value{font-size:1.6rem;font-weight:600;line-height:1.2}.kpi .label{color:var(--muted);font-size:.85rem}.kpi.attention .value{color:var(--bad)}.open-points li{margin-bottom:.4rem}.graph-controls,.graph-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}.graph-toolbar button{min-width:2.25rem}.graph-toggle,.graph-focus{display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap}.graph-chip{display:inline-flex;align-items:center;gap:.3rem;padding:.1rem .55rem;border-radius:999px;border:1px solid}.graph-frame{position:relative;height:max(34rem,calc(100vh - 22rem));border:1px solid var(--line);border-radius:6px;background:var(--card);overflow:hidden;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.graph-frame:active{cursor:grabbing}.graph-loading{padding:1rem}.graph-svg{display:block;width:100%;height:100%;font-family:inherit}.graph-area rect{stroke-width:1.5}.graph-area-title{font-size:14px;font-weight:700;fill:var(--ink)}.graph-node rect{fill:var(--card);stroke-width:1.5}.graph-node.assignment rect{stroke-dasharray:2 3}.graph-node.process rect{fill:#fffbe6}.graph-node.stub rect{fill:var(--bg);stroke:var(--muted);stroke-dasharray:5 4}.graph-node.replica rect{stroke-dasharray:6 3}.graph-node.clickable{cursor:pointer}.graph-node.clickable:hover rect{stroke-width:3}.graph-node-label{font-size:14px;font-weight:600;fill:var(--ink)}.graph-node-detail{font-size:11px;fill:var(--muted)}.graph-edge path{fill:none;stroke:var(--muted);stroke-width:1.3}.graph-edge.crossing path{stroke:var(--accent);stroke-width:2}.graph-edge.participates path{stroke-dasharray:2 3}.graph-edge.reads path{stroke-dasharray:7 4}.graph-edge-label{font-size:11px;fill:var(--muted);paint-order:stroke;stroke:var(--card);stroke-width:3px}.graph-arrowhead{fill:var(--muted)}.ctx-0.graph-area rect,.graph-chip.ctx-0{fill:var(--ctx-0-bg);background:var(--ctx-0-bg);stroke:var(--ctx-0-line);border-color:var(--ctx-0-line)}.graph-node.ctx-0:not(.stub) rect{stroke:var(--ctx-0-line)}.graph-node.context-node.ctx-0 rect{fill:var(--ctx-0-bg)}.ctx-1.graph-area rect,.graph-chip.ctx-1{fill:var(--ctx-1-bg);background:var(--ctx-1-bg);stroke:var(--ctx-1-line);border-color:var(--ctx-1-line)}.graph-node.ctx-1:not(.stub) rect{stroke:var(--ctx-1-line)}.graph-node.context-node.ctx-1 rect{fill:var(--ctx-1-bg)}.ctx-2.graph-area rect,.graph-chip.ctx-2{fill:var(--ctx-2-bg);background:var(--ctx-2-bg);stroke:var(--ctx-2-line);border-color:var(--ctx-2-line)}.graph-node.ctx-2:not(.stub) rect{stroke:var(--ctx-2-line)}.graph-node.context-node.ctx-2 rect{fill:var(--ctx-2-bg)}.ctx-3.graph-area rect,.graph-chip.ctx-3{fill:var(--ctx-3-bg);background:var(--ctx-3-bg);stroke:var(--ctx-3-line);border-color:var(--ctx-3-line)}.graph-node.ctx-3:not(.stub) rect{stroke:var(--ctx-3-line)}.graph-node.context-node.ctx-3 rect{fill:var(--ctx-3-bg)}.ctx-4.graph-area rect,.graph-chip.ctx-4{fill:var(--ctx-4-bg);background:var(--ctx-4-bg);stroke:var(--ctx-4-line);border-color:var(--ctx-4-line)}.graph-node.ctx-4:not(.stub) rect{stroke:var(--ctx-4-line)}.graph-node.context-node.ctx-4 rect{fill:var(--ctx-4-bg)}.ctx-5.graph-area rect,.graph-chip.ctx-5{fill:var(--ctx-5-bg);background:var(--ctx-5-bg);stroke:var(--ctx-5-line);border-color:var(--ctx-5-line)}.graph-node.ctx-5:not(.stub) rect{stroke:var(--ctx-5-line)}.graph-node.context-node.ctx-5 rect{fill:var(--ctx-5-bg)}table.terms td{vertical-align:top}table.terms tr.open>td{background:#eef4f9}table.terms tr.detail>td{background:var(--card);border-left:3px solid var(--accent)}.badge.term-status{font-family:inherit;font-weight:600}.badge.term-status.reviewed{background:#e7f4ec;border-color:#a9d3b6;color:var(--good)}.badge.term-status.machine{background:#fdf3dd;border-color:#ddc79a}.badge.term-status.stale,.badge.term-status.missing{background:var(--bad-bg);border-color:#d9b3b3;color:var(--bad)}.term-locale{border-top:1px solid var(--line);padding-top:.5rem}.term-locale textarea{width:100%;font:inherit}.term-history{font-size:.85rem}
