/* components.css — controls, drawing, lists, panel */

/* ---------- site / building switcher ---------- */
.sw-sel{min-height:44px!important;appearance:none;-webkit-appearance:none;border:0;border-bottom:1.5px solid var(--ink);border-radius:0;background:#fff;
  padding:4px 24px 4px 0;font:700 14px/1.25 var(--f-sans);width:100%;min-height:32px;cursor:pointer;color:var(--ink);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M0,0 L12,0 L6,8 Z' fill='%23101010'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 2px center;text-overflow:ellipsis}
.sw-sel:hover{background-color:var(--grey-l)}

/* ---------- buttons ---------- */
.btn{border:1.5px solid var(--ink);background:#fff;padding:9px 14px;font:700 13px/1 var(--f-sans);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:0;min-height:44px}
.btn:hover{background:var(--grey-l)}
.btn.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.ink.on{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.sm{padding:6px 12px;font-size:12px;min-height:44px}
.btn i{display:inline-block;width:10px;height:10px;margin-right:7px;flex:0 0 auto;outline:1px solid rgba(16,16,16,.25)}
.btn:disabled{border-color:var(--grey-m);color:var(--grey-m);background:#fff;text-decoration:line-through;text-decoration-thickness:1px}
.btn .two{display:block;font:500 12px/1 var(--f-mono);letter-spacing:.06em;margin-bottom:4px;opacity:.8}
.phaserow .btn{flex-direction:column;align-items:flex-start;text-align:left;padding:7px 12px}

/* analytical view tabs */
.views{display:flex;margin-bottom:16px;border:1.5px solid var(--ink);width:max-content;max-width:100%;overflow-x:auto;scrollbar-width:none}
.views::-webkit-scrollbar{display:none}
.views .btn{border:0;border-right:1.5px solid var(--ink);padding:0 20px;min-height:48px;font-size:14px;font-weight:800;flex:0 0 auto}
.views .btn:last-child{border-right:0}
.views .btn .n{font:500 12px var(--f-mono);margin-right:8px;opacity:.65}
.views .btn .vsw{width:10px;height:10px;margin-right:8px;outline:1.5px solid var(--ink);outline-offset:0}
.views .btn.on .vsw{outline-color:currentColor}

/* toolbar rows (rails on mobile) */
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px;max-width:100%}
.row .lab{font:600 12px/1 var(--f-mono);letter-spacing:.12em;color:var(--grey-d);min-width:96px}
.sep{width:1.5px;align-self:stretch;background:var(--ink);margin:0 6px}
.hint{font-size:13px;color:#555;margin:6px 0 18px}
.hint b{color:var(--ink)}
.h-touch{display:none}

/* ---------- stage ---------- */
.stagebar{display:flex;justify-content:space-between;align-items:flex-end;border-top:3px solid var(--ink);padding-top:10px;gap:12px;flex-wrap:wrap}
.stagebar h3{margin:0;font:800 18px/1.1 var(--f-sans);letter-spacing:-.01em;text-transform:uppercase;min-width:0}
.stagebar h3 small{display:block;font:500 12px/1.6 var(--f-mono);letter-spacing:.08em;color:var(--grey-d);text-transform:none}
.stagectl{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.zoomctl{display:flex}
.zoomctl .btn{min-width:40px;margin-left:-1.5px}
.zoomctl .btn:first-child{margin-left:0}
.zoomctl .zpct{min-width:64px;font-family:var(--f-mono);font-weight:600}
.stagebtns2{display:flex;gap:8px}
.zoomdock .zoomctl{margin-right:auto}
.zoomdock{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0 0;flex-wrap:wrap}
.zoomdock .zh{flex:1 1 100%;font:500 12px var(--f-mono);color:var(--grey-d)}
details.regbox>summary{cursor:pointer;list-style:none;min-height:44px;display:flex;align-items:center}
details.regbox>summary::-webkit-details-marker{display:none}
details.regbox>summary h4{flex:1;margin:0}
details.regbox:not([open])>summary h4::after{content:"+ show"}

.dwrap{position:relative;width:100%;max-width:100%;overflow:hidden;margin-top:8px;background:#fff}
.dwrap.zoomed{outline:1.5px solid var(--ink);outline-offset:-1.5px}
.dwrap .zbadge{position:absolute;right:8px;top:8px;background:var(--ink);color:#fff;font:600 12px var(--f-mono);padding:4px 7px;pointer-events:none;display:none}
.dwrap.zoomed .zbadge{display:block}
#dwg{display:block;width:100%;height:auto;background:#fff;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:pan-y}
.dwrap.zoomed #dwg{touch-action:none;cursor:grab}
.dwrap.zoomed #dwg:active{cursor:grabbing}

/* ---------- drawing (SVG) ---------- */
#dwg text{font-family:var(--f-mono)}
.lbl{font-weight:600;font-size:calc(10.5px * var(--ls,1));fill:var(--ink)}
.lbl.s{font-size:calc(9px * var(--ls,1));fill:#444}
.lbl.th{font-family:var(--f-thai);font-weight:500}
#dwg.z1 .zm2,#dwg.z1 .zm3,#dwg.z2 .zm3{display:none}
#dwg.ico.z2 .bud .zm3{display:inline}
.ln{fill:none;stroke:var(--ink);stroke-width:1.2;stroke-linejoin:miter}
.ln.thin{stroke-width:.7}
.ln.wall{stroke-width:4.2}
.ln.cut{stroke-width:5}
.ln.swing{stroke-width:.6;stroke:#777}
.ln.proj{stroke-width:.8;stroke-dasharray:10 3 2 3;stroke:#555}
.ln.ped{stroke-width:2.6;stroke-dasharray:10 3 2 3}
.ln.grey{stroke:#9a9a9a}
.fl{fill:#fff;stroke:var(--ink);stroke-width:1}
.face{fill:#fff;stroke:var(--ink);stroke-width:1.1}
.face.glass{fill-opacity:.84}
.poche{fill:var(--ink);stroke:var(--ink)}
.hatchf{fill:url(#hatch);stroke:var(--ink);stroke-width:1}
.hit{fill:none;stroke:transparent;stroke-width:12;pointer-events:stroke}
.hitr{fill:transparent;stroke:none;pointer-events:all}
.el{cursor:pointer}
@media (hover:hover){.el:hover .ln,.el:hover .fl,.el:hover .face{stroke:var(--purple)}}
.bud circle{fill:#fff;stroke:var(--ink);stroke-width:1}
.ico .bud circle{stroke:var(--magenta);stroke-width:1.5}
.bud text{font-weight:600;font-size:8.5px;fill:var(--ink)}
#dwg .empt1{font:900 54px var(--f-sans);fill:var(--ink);letter-spacing:-1px}
#dwg .empt2{font:700 24px var(--f-sans);fill:var(--ink)}
#dwg .empt3{font:600 16px var(--f-mono);fill:var(--grey-d);letter-spacing:1px}
/* phase line conventions */
.st-recon .ln,.st-recon .fl,.st-recon .face{stroke:var(--magenta);stroke-dasharray:6 4}
.st-recon .fl,.st-recon .face{fill:none}
.st-earlier .ln,.st-earlier .fl,.st-earlier .face{stroke:#c3c3c3}
.st-earlier .poche{fill:#c3c3c3;stroke:#c3c3c3}
.st-earlier .leaf{fill:#fff!important}
.st-earlier text{fill:#bbb}
.st-lost .ln,.st-lost .fl,.st-lost .face{stroke:#9a9a9a}
.deco{pointer-events:none}
.ovl,.ovl *{pointer-events:none!important}
/* cross-filter highlight (colour = meaning; light colours receive an ink keyline layer) */
.el.dim{opacity:.12}
.el.dimc{opacity:.32}
.hl .ln{stroke:var(--hlc);stroke-width:2}
.hl .ln.wall{stroke-width:5.5}
.hl .ln.thin,.hl .ln.proj,.hl .ln.ped{stroke-width:2.4;stroke-dasharray:none}
.hl .ln.swing{stroke-width:.8}
.hl .fl{fill:var(--hlc);stroke:var(--hlc)}
.hl .face{stroke:var(--hlc);stroke-width:3}
.hl .poche{fill:var(--hlc);stroke:var(--hlc)}
.hl.bud circle{fill:var(--hlc);stroke:var(--hlc)}
.hl.bud text{fill:#fff}
.hl.lt.bud text{fill:var(--ink)}
.muted .el:not(.hl):not(.sel) .ln,.muted .el:not(.hl):not(.sel) .fl,.muted .el:not(.hl):not(.sel) .face{stroke:#cfcfcf}
.muted .el:not(.hl) .poche{fill:#ddd;stroke:#ddd}
.muted .el:not(.hl) text{fill:#bbb}
/* selection A (purple) / comparison B (ink) */
.sel .ln{stroke:var(--purple)!important;stroke-dasharray:none}
.sel .fl:not(.leaf){fill:var(--purple)!important;stroke:var(--purple)!important}
.sel .face{stroke:var(--purple)!important;stroke-width:3}
.sel .ln.wall{stroke-width:6.5}
.sel.bud circle{fill:var(--purple)!important;stroke:var(--purple)!important}
.sel.bud text{fill:#fff!important}
.cmp .ln{stroke:var(--ink)!important;stroke-width:3}
.cmp .fl:not(.leaf){fill:var(--ink)!important;stroke:var(--ink)!important}
.cmp .face{stroke:var(--ink)!important;stroke-width:3.5}
.rel .ln,.rel .face{stroke:var(--purple)}
.rel .fl:not(.leaf){stroke:var(--purple);stroke-width:2.2}
.peek .ln,.peek .fl,.peek .face{stroke:var(--purple)!important;stroke-width:3!important}
.peek.dim,.peek.dimc{opacity:1}

/* legend */
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;border-top:1px solid var(--ink);padding:10px 0;font-size:12px;align-items:center}
.legend .it{display:flex;align-items:center;gap:6px}
.legend .sw{width:12px;height:12px;display:inline-block;outline:1px solid rgba(16,16,16,.3)}
.legend svg{display:block;flex:0 0 auto}
.legend .ttl{font:600 12px var(--f-mono);letter-spacing:.12em;color:var(--grey-d)}

/* ---------- lower analytical area ---------- */
.lower{margin-top:6px;min-width:0}
.lower h4,.panel h4{margin:22px 0 8px;font:600 12px/1.25 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:#444;border-bottom:1px solid var(--ink);padding-bottom:6px;display:flex;justify-content:space-between;align-items:flex-end;gap:10px}
.reg{display:grid;grid-template-columns:120px minmax(0,1fr);gap:8px;margin-bottom:6px}
.reg>span{font:600 12px var(--f-mono);letter-spacing:.08em;color:var(--grey-d);padding-top:5px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.pair{border:1.5px solid #d8d8d8;background:#fff;padding:5px 8px 5px 6px;font:600 12px var(--f-mono);display:inline-flex;align-items:center;gap:2px;min-height:32px}
.pair i{width:6px;height:16px;display:inline-block}
.pair i:nth-child(2){margin-right:6px}
.pair.on{border-color:var(--magenta);outline:1.5px solid var(--magenta)}
.ref{border:1px solid var(--ink);background:#fff;padding:3px 6px;font:500 12px var(--f-mono);margin:0 4px 4px 0;display:inline-flex;align-items:center;gap:5px;min-height:26px;max-width:100%;text-align:left}
.ref:hover{background:var(--ink);color:#fff}
.ref i{width:9px;height:9px;display:inline-block;flex:0 0 auto}
.tbwrap{max-height:420px;overflow:auto;border-bottom:1.5px solid var(--ink);-webkit-overflow-scrolling:touch}
table.tb{width:100%;border-collapse:collapse;font-size:13px}
.tb th{text-align:left;font:600 12px var(--f-mono);letter-spacing:.08em;color:#555;border-bottom:1.5px solid var(--ink);padding:6px 8px 6px 0;white-space:nowrap;position:sticky;top:0;background:#fff}
.tb td{border-bottom:1px solid #e3e3e3;padding:6px 8px 6px 0;vertical-align:top}
.tb tr[data-ref]{cursor:pointer}
.tb tr:hover td{background:var(--grey-l)}
.tb tr.on td{background:var(--ink);color:#fff}
.tb .sw{display:inline-block;width:10px;height:10px;margin-right:6px;vertical-align:-1px}
.blocks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1.5px solid var(--ink)}
.blocks>div{padding:14px;border-right:1.5px solid var(--ink);cursor:pointer;min-width:0}
.blocks>div:last-child{border-right:0}
.blocks>div.on{outline:4px solid var(--cyan);outline-offset:-4px}
.blocks .big{font:900 40px/1 var(--f-sans)}
.blocks .k{font:600 12px var(--f-mono);letter-spacing:.08em;display:block}
.blocks .dk{display:inline-block;width:12px;height:12px;margin-right:6px;vertical-align:-1px;outline:1px solid var(--ink)}
.bar{display:flex;height:12px;margin:10px 0 6px;border:1px solid var(--ink)}
.bar span{display:block;height:100%}
.phrows>div{display:grid;grid-template-columns:170px minmax(0,1fr) 76px 76px 76px;gap:12px;padding:10px 6px;border-bottom:1px solid #ddd;cursor:pointer;align-items:baseline;border-left:6px solid transparent}
.phrows>div.on{background:var(--ink);color:#fff}
.phrows .c{font:800 14px var(--f-sans)}
.phrows .n{font:800 22px var(--f-sans);text-align:right}
.phrows .n small{display:block;font:500 12px var(--f-mono);letter-spacing:.04em}
.phrows small{font-size:12px}

/* ---------- panel ---------- */
.sheet-bar{display:none}
.ph{padding:20px 24px 18px}
.ph.accent{background:var(--accent);color:var(--accent-ink)}
.ph.ev{background:var(--lime);color:var(--ink)}
.ph.int{background:var(--purple);color:#fff}
.ph.rst{background:var(--amber);color:var(--ink)}
.ph.plain{border-bottom:3px solid var(--ink)}
.ph .k{font:500 15px var(--f-mono);letter-spacing:.02em}
.ph .k .dbid{font-size:12px;opacity:.8;margin-left:8px}
.ph .big{font:900 64px/.95 var(--f-sans);letter-spacing:-.03em;margin:6px 0 4px}
.ph .h2{font:800 28px/1.05 var(--f-sans);letter-spacing:-.02em;margin:6px 0 4px}
.ph .sub{font-size:16px;font-weight:600}
.back{border:0;background:none;font:600 12px var(--f-mono);letter-spacing:.1em;padding:0 0 10px;color:inherit;opacity:.85;min-height:32px}
.pb{padding:4px 24px 26px}
.kv{display:grid;grid-template-columns:120px minmax(0,1fr);gap:7px 12px;margin:16px 0 4px;font-size:13.5px}
.kv dt{color:#555;font-size:13px}
.kv dd{margin:0;font-weight:600}
.kv dd small{font-weight:400;color:#555;font-size:12px}
.counts{display:grid;grid-template-columns:1fr 1fr;border-top:1.5px solid var(--ink);margin-top:18px}
.counts div{padding:12px 0;border-bottom:1px solid #ddd}
.counts b{display:block;font:900 34px/1 var(--f-sans)}
.counts span{font:600 12px var(--f-mono);letter-spacing:.1em}
.facts{display:grid;grid-template-columns:1fr 1fr;border-top:1.5px solid var(--ink);margin-top:16px}
.facts div{padding:9px 8px 9px 0;border-bottom:1px solid #e3e3e3;min-width:0}
.facts .wide{grid-column:1/-1}
.facts .k{display:block;font:600 12px var(--f-mono);letter-spacing:.1em;color:#555}
.facts .v{font-weight:700;font-size:13.5px;overflow-wrap:anywhere}
.facts .v.mono{font-family:var(--f-mono);font-weight:600}
.leafrow{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid #e3e3e3;cursor:pointer}
.leafrow .side{font:800 13px var(--f-thai);padding:8px 0;text-align:center}
.leafrow .nm{font-weight:700;font-family:var(--f-thai)}
.leafrow .nm small{display:block;font:600 12px var(--f-thai);color:var(--grey-d)}
.qbtn{width:44px;height:44px;border-radius:50%;border:1.5px dashed var(--ink);background:#fff;font:800 16px var(--f-sans)}
.rels{font:12px/1.9 var(--f-mono);margin:0}
.rels>div{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 4px;margin-bottom:4px}
.rels .rk{color:#666;min-width:132px;font-size:12px}
.tree{font:12px/1.75 var(--f-mono);white-space:pre;overflow-x:auto;border-left:4px solid var(--purple);padding:4px 0 4px 12px;margin:8px 0}
.tree .r{cursor:pointer;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.layer{border-top:1.5px solid var(--ink);margin-top:20px;padding-top:2px}
.layer>.lh{display:flex;align-items:baseline;gap:10px;font:800 13px var(--f-sans);letter-spacing:.06em;margin:8px 0}
.layer>.lh .no{font:500 12px var(--f-mono);color:#666}
.layer>.lh .c{font:400 12px var(--f-mono)}
.stmt{display:grid;grid-template-columns:48px minmax(0,1fr);gap:10px;padding:5px 0;font-size:13px;align-items:start}
.evrow{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:8px;padding:8px 0;border-bottom:1px solid #e6e6e6;cursor:pointer;font-size:13px}
.evrow:hover{background:var(--grey-l)}
.evrow .id{font:600 12px var(--f-mono)}
.evrow .ty{font:500 12px var(--f-mono);letter-spacing:.04em;color:#555;display:block}
.par{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));border:1.5px solid var(--ink)}
.par>div{padding:12px;border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);margin:0 -1.5px -1.5px 0;min-width:0}
.intr{padding:12px 0;border-bottom:1px solid #e3e3e3}
.ihead{font:12px var(--f-mono);display:flex;justify-content:space-between;gap:6px}
.intr .q,.par .q{font:600 13.5px/1.4 var(--f-sans);margin:6px 0 4px}
.qth{font-size:13px;color:#333;margin:0 0 8px}
.intr .m,.par .m{font-size:12px;color:#444;line-height:1.6}
.cfrow{margin:8px 0 6px}
.parhead{font:600 12px var(--f-mono);letter-spacing:.08em;background:var(--ink);color:#fff;padding:7px 8px;margin-top:10px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6'%3E%3Cpath d='M-1,1 l2,-2 M0,6 l6,-6 M5,7 l2,-2' stroke='%23ffffff' stroke-opacity='.22' stroke-width='1.2'/%3E%3C/svg%3E")}
.tg{display:inline-block;font:600 12px/1 var(--f-mono);padding:4px 5px;border:1.2px solid var(--ink);letter-spacing:.03em;white-space:nowrap;text-align:center;vertical-align:middle}
.mini{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px;align-items:center}
.mini .lab{font:600 12px var(--f-mono);letter-spacing:.12em;color:#555;margin-right:4px}
.recrow{display:grid;grid-template-columns:120px minmax(0,1fr);gap:8px;padding:7px 0;border-bottom:1px solid #e6e6e6;font-size:13px}
.recrow .k{font:600 12px var(--f-mono);letter-spacing:.08em;color:#555;padding-top:2px}
.cmpt{width:100%;border-collapse:collapse;font-size:13px;margin-top:14px;table-layout:fixed}
.cmpt th{font:800 20px var(--f-sans);text-align:left;padding:8px 6px 8px 0;border-bottom:3px solid var(--ink);overflow-wrap:anywhere}
.cmpt th.a{color:var(--purple)}
.cmpt td{padding:7px 6px 7px 0;border-bottom:1px solid #e3e3e3;vertical-align:top;overflow-wrap:anywhere}
.cmpt td:first-child{font:600 12px var(--f-mono);letter-spacing:.06em;color:#555;width:92px}
.note{font-size:12.5px;color:#555;margin:10px 0 0}
.note.callout{border-left:4px solid var(--lime);padding:6px 0 6px 10px;color:var(--ink)}

#tip{position:fixed;pointer-events:none;background:var(--ink);color:#fff;font:600 12px var(--f-mono);padding:5px 8px;z-index:40;display:none;max-width:280px}
#tip small{display:block;font:400 12px var(--f-thai);opacity:.85}
.fatal{padding:24px;border:3px solid var(--ink);background:var(--grey-l);font-size:15px}
/* rank view (ฐานานุศักดิ์) */
.lvc{display:inline-block;font:700 12px/1 var(--f-mono);padding:4px 6px;border:1px solid var(--ink);white-space:nowrap;vertical-align:middle}
.lvc .th{font-weight:500}
.tb.rk tr.cat td{background:var(--grey-l);font:700 12px var(--f-mono);letter-spacing:.06em;padding-top:10px}
.tb.rk tr.dimr{opacity:.35}
.tb.rk td:nth-child(4){min-width:220px}
.rkrow{border-top:1px solid var(--rule);padding:10px 0}
.rkrow .rkh{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:6px}
.rkrow.absent,.rkrow.not_recorded{opacity:.8}
.rklv>div{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;padding:8px 0;border-top:1px solid var(--rule)}
/* compare view */
#dwg .bfp{cursor:pointer}
#dwg .bfp:hover rect:not(.hit),#dwg .bfp:focus rect:not(.hit){stroke-width:2.5}
#dwg .bfp:focus{outline:none}
#dwg .cmph{font:600 12px var(--f-mono);letter-spacing:.08em;fill:#101010}
#dwg .cmpn{font:600 11px var(--f-mono);fill:#555}
#dwg .cmpl{font:600 13px var(--f-thai);fill:#101010}
#dwg .cmps{font:500 11px var(--f-mono);fill:#555}
.tb.cmpt2 td .sw{display:inline-block;width:10px;height:10px;margin-right:6px;outline:1px solid #101010;vertical-align:middle}
.tb.cmpt2 tr[data-act]{cursor:pointer}
@media (min-width:769px){
  .views{flex-wrap:wrap;overflow:visible;width:auto;border-width:1.5px 0 0 1.5px}
  .views .btn,.views .btn:last-child{border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink)}
}

/* ---------- category switch (อุโบสถ · วิหาร | เจดีย์) ---------- */
.cats{display:flex;margin:0 0 14px;border:1.5px solid var(--ink);width:max-content;max-width:100%}
.cats .btn{border:0;border-right:1.5px solid var(--ink);min-height:52px;padding:0 22px;gap:10px;text-transform:none;letter-spacing:0}
.cats .btn:last-child{border-right:0}
.cats .btn .th{font:700 17px/1 var(--f-thai)}
.cats .btn small{font:500 12px var(--f-mono);letter-spacing:.08em;opacity:.75}
.cats .btn.on{background:var(--ink);border-color:var(--ink);color:#fff}
.views .btn .vth{font:600 13px var(--f-thai);text-transform:none;letter-spacing:0;margin-left:8px;opacity:.8}

/* ---------- chedi drawings ---------- */
#dwg.chedi text{font-family:var(--f-thai)}
#dwg .cs{fill:#fff;stroke:var(--ink);stroke-width:1.05;stroke-linejoin:round}
#dwg .cl{fill:none;stroke:var(--ink);stroke-width:.6}
#dwg .cl.k{stroke-width:1}
#dwg .cl.t{stroke-width:1.3}
#dwg .cl.br{stroke-width:1.3;stroke-dasharray:4 3}
#dwg .cdk{fill:var(--ink);stroke:var(--ink);stroke-width:.8}
#dwg .cgnd{stroke:var(--ink);stroke-width:2.2}
#dwg .cnts{fill:var(--grey-d);font-family:var(--f-mono)!important;letter-spacing:.04em}
#dwg .cel{cursor:pointer}
#dwg .cel.on .cs{fill:var(--zc)}
#dwg .cel.on .cdk{fill:var(--ink)}
#dwg .cel.dim,#dwg .clab.dim{opacity:.22}
@media (hover:hover){#dwg .cel:hover .cs,#dwg .cel:hover .cl{stroke:var(--purple)}#dwg .clab:hover text{fill:var(--purple)}}
#dwg .clab{cursor:pointer}
#dwg .clab .lt{fill:var(--ink);font-weight:500}
#dwg .clab .sq{font-family:var(--f-mono);fill:var(--grey-d);font-weight:600}
#dwg .clab .ldr{fill:none;stroke:#8c8c8c;stroke-width:.7}
#dwg .clab .zch{fill:var(--zc);stroke:var(--ink);stroke-width:.6}
#dwg .clab .ul{fill:var(--zc);opacity:0}
#dwg .clab.on .ul{opacity:1}
#dwg .clab.on .lt{font-weight:700}
#dwg .clab.on .ldr{stroke:var(--ink);stroke-width:1.5}
#dwg .zt{fill:var(--ink);font-weight:600}
#dwg .mini .cs,#dwg .mini .cl,#dwg .mini .cdk{vector-effect:non-scaling-stroke}
#dwg .mini .cs{stroke-width:.8}
#dwg .mini .cl{stroke-width:.4}
#dwg .mini .cel.on .cs{fill:#fff}
#dwg .tycell,#dwg .rnode[data-act],#dwg .mxc[data-act],#dwg .mxr,#dwg .mxd,#dwg .dmark{cursor:pointer}
#dwg .tycell.cur .cs{fill:var(--purple);stroke:var(--ink)}
#dwg .rnode.cur .cs{fill:var(--purple)}
#dwg .tysel{fill:none;stroke:var(--purple);stroke-width:2.5}
@media (hover:hover){#dwg .tycell:hover .cs,#dwg .rnode[data-act]:hover .cs{stroke:var(--purple)}}
#dwg .dim{opacity:.18}
#dwg .tyh{fill:var(--ink)}
#dwg .tyht{fill:#fff;font-weight:700}
#dwg .tyht .en{font-family:var(--f-mono);font-weight:500;opacity:.75}
#dwg .tyc{font-family:var(--f-mono)!important;font-weight:600;fill:var(--ink);font-size:11px}
#dwg .tyn{fill:#444;font-size:11px}
#dwg .pband{fill:#fff}
#dwg .pband2{fill:var(--grey-l)}
#dwg .pt{fill:var(--ink);font-weight:700;font-size:14px}
#dwg .pts{fill:var(--grey-d);font-family:var(--f-mono)!important;font-size:10px}
#dwg .cf{fill:var(--ink);font-weight:700}
#dwg .dm{fill:var(--cyan);stroke:var(--ink);stroke-width:1}
#dwg .dl{stroke-dasharray:3 3;stroke-width:.9}
#dwg .mxg{fill:var(--ink)}
#dwg .mxgt{fill:#fff;font-size:12px;font-weight:700}
#dwg .mxct{font-family:var(--f-mono)!important;font-size:11px;font-weight:600;fill:var(--ink)}
#dwg .mxc.cur .mxct{fill:var(--purple)}
#dwg .mxcur{fill:none;stroke:var(--purple);stroke-width:2}
#dwg .mxrt{font-size:12px;fill:var(--ink)}
#dwg .mxrt .sq{font-family:var(--f-mono);fill:var(--grey-d);font-weight:600}
#dwg .mxr.on .mxrt{font-weight:700}
#dwg .mxon{fill:var(--grey-l)}
#dwg .mxz{stroke:var(--ink);stroke-width:1.2}
#dwg .mxcell{stroke:var(--ink);stroke-width:.7}
#dwg .mxn{font-family:var(--f-mono)!important;font-size:10.5px;font-weight:700;fill:var(--ink)}
#dwg .mxn.w{fill:#fff}
#dwg .mxk{font-family:var(--f-mono)!important;font-size:11px;fill:var(--grey-d)}
@media (hover:hover){#dwg .mxd:hover .mxcell{stroke:var(--purple);stroke-width:2}#dwg .mxr:hover .mxrt{fill:var(--purple)}}
#dwg .sxh{font-size:12px;font-weight:700;fill:var(--ink)}
#dwg .sty rect{fill:#fff;stroke:var(--ink);stroke-width:1.5}
#dwg .styt{font-size:15px;font-weight:700;fill:var(--ink)}
#dwg .stye{font-family:var(--f-mono)!important;font-size:10px;fill:var(--grey-d)}
#dwg .re{fill:none;stroke:var(--ink);stroke-width:1.5}
#dwg .ie{fill:none;stroke:var(--ink);stroke-width:1.2;stroke-dasharray:5 4}
#dwg .rele,#dwg .infl{cursor:pointer}
#dwg .rele.on .re,#dwg .infl.on .ie{stroke:var(--magenta);stroke-width:3}
#dwg .ret{font-size:12px;fill:var(--ink);paint-order:stroke;stroke:#fff;stroke-width:4px;font-weight:600}
#dwg .stub{fill:none;stroke:var(--grey-m);stroke-dasharray:4 3}
#dwg .stubt{font-size:10px;fill:var(--grey-d)}
.tb tr[data-act]{cursor:pointer}
.ref.contra{cursor:default}
@media (max-width:768px){
  .cats{width:100%;margin-bottom:10px}
  .cats .btn{flex:1 1 0;padding:0 6px;min-height:48px;flex-direction:column;gap:3px}
  .cats .btn .th{font-size:15px}
  .views .btn .vth{display:none}
}
#dwg .itag{cursor:pointer}
#dwg .itag rect{fill:#fff;stroke:var(--ink);stroke-width:1}
#dwg .itag text{font-size:11px;fill:var(--ink);font-weight:600}
#dwg .itag.on rect{fill:var(--magenta);stroke:var(--magenta)}
#dwg .itag.on text{fill:#fff}
#dwg .dmt{fill:var(--ink);font-family:var(--f-mono)!important;font-weight:600;paint-order:stroke;stroke:#fff;stroke-width:3px}
#dwg .cgap rect{fill:none;stroke:var(--grey-m);stroke-width:1.2;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}
#dwg .cgap text{fill:var(--grey-d)}
#dwg .rele.t-name .re{stroke-dasharray:2 3;stroke-width:1.3}
#dwg .rele.t-inferred .re{stroke-dasharray:7 4;stroke:var(--grey-d)}
#dwg .rele.t-inferred .ret{fill:var(--grey-d)}
/* chedi · similarity & traits */
#dwg .dend{fill:none;stroke:var(--ink);stroke-width:1.2}
#dwg .sdiag{fill:var(--grey-l)}
#dwg .sdot{fill:var(--ink)}
#dwg .shot{fill:var(--purple)}
#dwg .sst{fill:none;stroke:var(--magenta);stroke-width:2}
#dwg .scell{cursor:pointer}
#dwg .scell.on .hitr{fill:none;stroke:var(--ink);stroke-width:2.5}
@media (hover:hover){#dwg .scell:hover .sdot,#dwg .scell:hover .shot{fill:var(--orange)}}
#dwg .tspan{stroke:var(--ink);stroke-width:1.2}
#dwg .tbar{stroke:var(--ink);stroke-width:.7}
#dwg .tycell.has .tysel,#dwg .tycell.has>.hitr{stroke:var(--lime);stroke-width:4;fill:none}
.fitrow{display:grid;grid-template-columns:110px minmax(0,1fr) 44px;gap:8px;align-items:center;font-size:13px;padding:3px 0}
.fitbar{height:12px;border:1px solid var(--ink);display:block}
.fitbar i{display:block;height:100%}
/* ---------- mandala ---------- */
#dwg .mframe{fill:none;stroke:var(--ink);stroke-width:2.5}
#dwg .mcell,#dwg .mzone,#dwg .mch.live{cursor:pointer}
#dwg .mcell rect{fill:#fff;stroke:var(--ink);stroke-width:.8}
#dwg .mcell.g-inner rect{fill:var(--lime)}
#dwg .mcell.g-brahma rect{fill:var(--purple)}
#dwg .mcell.g-brahma text{fill:#fff}
#dwg .mcell.on rect{fill:var(--orange);stroke-width:3}
#dwg .mcell.g-brahma.on rect{fill:var(--purple);stroke:var(--lime);stroke-width:5}
@media (hover:hover){#dwg .mcell:hover rect,#dwg .mzone:hover rect{stroke:var(--purple);stroke-width:2.5}}
#dwg .mno{font-family:var(--f-mono)!important;font-weight:700;fill:var(--ink);opacity:.6}
#dwg .mnm{font-family:var(--f-sans)!important;font-weight:600;fill:var(--ink)}
#dwg .mnm.big{font-weight:900;letter-spacing:.04em}
#dwg .mguard{fill:var(--orange);stroke:var(--ink);stroke-width:.6}
#dwg .mkarna line{stroke:var(--ink);stroke-width:1;stroke-dasharray:8 6;opacity:.7;pointer-events:none}
#dwg .mbody{fill:none;stroke:var(--purple);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
#dwg .mbody circle{fill:#fff}
#dwg .mbody .mbl{fill:var(--lime);stroke:none}
#dwg .mbody text{font-size:3.2px;font-weight:800;fill:var(--ink);stroke:none}
#dwg .mgd{font-family:var(--f-sans)!important;font-weight:900;font-size:16px;fill:var(--ink)}
#dwg .mzone rect{fill:#fff;stroke:var(--ink);stroke-width:1.2}
#dwg .mzone.ctr rect{fill:var(--purple)}
#dwg .mzone.ctr text{fill:#fff}
#dwg .mzone.on rect{fill:var(--orange);stroke-width:3}
#dwg .mzone.ctr.on rect{fill:var(--purple);stroke:var(--lime);stroke-width:5}
#dwg .mz1{font-family:var(--f-sans)!important;font-weight:900;fill:var(--ink)}
#dwg .mz2{font-family:var(--f-sans)!important;font-weight:700;fill:var(--ink)}
#dwg .mz3{fill:var(--ink)}
#dwg .mch rect{fill:#fff;stroke:var(--ink);stroke-width:1.5}
#dwg .mch.live rect{fill:var(--purple)}
#dwg .mch.live text{fill:#fff}
#dwg .mchn{font-family:var(--f-sans)!important;font-weight:900;font-size:40px;fill:var(--ink)}
#dwg .mcht{font-family:var(--f-sans)!important;font-weight:700;font-size:16px;fill:var(--ink)}
#dwg .mchs{font-size:14px;fill:var(--ink)}
#dwg .mcht2{font-family:var(--f-mono)!important;font-size:11px;font-weight:700;letter-spacing:.1em;fill:var(--ink)}
#dwg .movl{pointer-events:none}
#dwg .mov{fill:none;stroke:var(--purple);stroke-width:.9;opacity:.9}
#dwg .mov.g-inner{stroke-dasharray:4 3}
#dwg .mov.g-brahma{stroke-width:3}
#dwg .mov.on{stroke:var(--ink);stroke-width:3.5;stroke-dasharray:none}
#dwg .movt{font-family:var(--f-mono)!important;font-size:8px;font-weight:700;fill:var(--purple)}
#dwg .movt.b{font-size:13px;font-family:var(--f-sans)!important;font-weight:900;opacity:.6}
#dwg .movk{stroke:var(--purple);stroke-width:.8;stroke-dasharray:6 5;opacity:.7}
#dwg .movd{font-family:var(--f-sans)!important;font-weight:900;font-size:15px;fill:var(--purple)}
#dwg .movhit rect{fill:transparent;cursor:pointer}
#dwg .mcell .mguard{fill:var(--orange);stroke:var(--ink)}
