/* =====================================================================
   Group structure — interactive diagram + detail panel
   ===================================================================== */
.structure{--act:#d8b45e;--rtl:1;position:relative;overflow:hidden;color:#fff;background:radial-gradient(circle at 50% 28%,#16295a,var(--c-dark) 72%)}
html[dir="rtl"] .structure{--rtl:-1}
.structure .container{position:relative}

/* every element that carries --cat also gets a lighter tint that stays visible on navy */
.ln-g,.st-node,.st-sat,.struct-pane,.panel-tabs button{--catL:color-mix(in srgb,var(--cat) 55%,#fff)}

.struct-bg i{position:absolute;display:block;pointer-events:none}
.struct-bg i:nth-child(1){width:64vmin;height:64vmin;inset-block-start:-24vmin;inset-inline-start:-16vmin;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--act) 36%,transparent),transparent 66%);transition:background 1s;animation:float 14s ease-in-out infinite}
.struct-bg i:nth-child(2){inset:0;background-image:radial-gradient(rgba(255,255,255,.13) 1.2px,transparent 1.5px);background-size:28px 28px;-webkit-mask-image:radial-gradient(circle at 50% 50%,#000,transparent 75%);mask-image:radial-gradient(circle at 50% 50%,#000,transparent 75%)}

.struct-wrap{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(24px,4vw,60px);align-items:center}

/* ---------------- diagram ---------------- */
.struct-stage-box{perspective:1100px}
.struct-stage{--nd:13%;position:relative;width:100%;max-width:560px;aspect-ratio:1/1;margin-inline:auto;transform-style:preserve-3d;transition:transform .3s ease-out}

.st-ring{position:absolute;left:50%;top:50%;width:66%;aspect-ratio:1/1;translate:-50% -50%;border-radius:50%;border:1.5px dashed rgba(201,162,75,.55);animation:spin 90s linear infinite;pointer-events:none}
.st-ring.r2{width:38%;border:1px solid rgba(255,255,255,.16);animation-direction:reverse;animation-duration:60s}
.st-ring.r3{width:94%;border:1.5px dotted rgba(255,255,255,.16);animation-duration:150s}

.st-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.ln{stroke:var(--catL);stroke-opacity:.28;stroke-width:1.5;stroke-dasharray:3 7;vector-effect:non-scaling-stroke;transition:stroke-opacity .4s,stroke-width .4s}
.sl{stroke:var(--catL);stroke-opacity:0;stroke-width:1.2;stroke-dasharray:2 4;vector-effect:non-scaling-stroke;transition:stroke-opacity .5s}
.pk{fill:var(--catL);opacity:0;transition:opacity .4s}
.ln-g.is-active .ln{stroke-opacity:1;stroke-width:2.6;stroke-dasharray:7 7;animation:dashflow .9s linear infinite}
.ln-g.is-active .sl{stroke-opacity:.8}
.ln-g.is-active .pk{opacity:1}

.st-core{position:absolute;left:50%;top:50%;z-index:2;width:25%;aspect-ratio:1/1;translate:-50% -50%;transform:translateZ(40px);border-radius:50%;display:grid;place-content:center;text-align:center;color:#0b1730;background:radial-gradient(circle at 30% 25%,#f1d98f,#b88a2c);box-shadow:0 0 0 8px color-mix(in srgb,var(--act) 28%,transparent),0 0 64px color-mix(in srgb,var(--act) 70%,transparent);transition:box-shadow .8s}
.st-core b{font-size:clamp(1.4rem,4.2vw,2.5rem);font-weight:900;line-height:1}
.st-core small{font-weight:800;font-size:clamp(.55rem,1.5vw,.78rem)}
.core-ring{position:absolute;inset:-6%;border-radius:50%;border:2px solid var(--act);opacity:0;animation:ripple 2.8s ease-out infinite}

.st-node{position:absolute;z-index:3;width:var(--nd);padding:0;border:0;background:none;color:#fff;font-family:inherit;cursor:pointer;translate:-50% -50%;transform:translateZ(30px)}
.nd-dot{position:relative;display:grid;place-items:center;width:100%;aspect-ratio:1/1;border-radius:50%;background:var(--cat);border:3px solid rgba(255,255,255,.6);font-size:clamp(1rem,2.6vw,1.5rem);font-weight:900;box-shadow:0 0 0 6px rgba(255,255,255,.06),0 10px 24px rgba(0,0,0,.45);transition:transform .45s var(--ease),box-shadow .45s,border-color .3s}
.nd-dot img{width:56%;height:56%;object-fit:contain}
.nd-dot::after{content:'';position:absolute;inset:-5px;border-radius:50%;border:2px solid var(--catL);opacity:0}
.st-node em{position:absolute;left:50%;top:calc(100% + 10px);translate:-50% 0;padding:2px 12px;border-radius:999px;background:rgba(0,0,0,.55);backdrop-filter:blur(4px);font-style:normal;font-weight:700;font-size:.78rem;white-space:nowrap;transition:background .3s}
.st-node:hover .nd-dot,.st-node:focus-visible .nd-dot{transform:scale(1.14)}
.st-node.is-active .nd-dot{transform:scale(1.3);border-color:#fff;box-shadow:0 0 0 8px color-mix(in srgb,var(--catL) 38%,transparent),0 0 46px var(--catL)}
.st-node.is-active .nd-dot::after{animation:ripple 2s ease-out infinite}
.st-node.is-active em{background:var(--cat);box-shadow:0 0 0 1px var(--catL)}

.st-sat{position:absolute;z-index:2;width:3.4%;min-width:10px;aspect-ratio:1/1;translate:-50% -50%;scale:0;opacity:0;border-radius:50%;background:var(--catL);border:2px solid #fff;cursor:pointer;transition:scale .5s var(--ease),opacity .4s,box-shadow .3s}
.st-sat.is-on{scale:1;opacity:1;transition-delay:calc(var(--j)*.07s + .15s),calc(var(--j)*.07s + .15s),0s}
.st-sat.is-hot{scale:1.8;transition-delay:0s;box-shadow:0 0 0 5px color-mix(in srgb,var(--catL) 40%,transparent),0 0 22px var(--catL)}

/* ---------------- detail panel ---------------- */
.struct-panel{position:relative;overflow:hidden;min-height:430px;padding:clamp(24px,3vw,40px);border:1px solid rgba(255,255,255,.16);border-radius:26px;background:linear-gradient(160deg,rgba(255,255,255,.1),rgba(255,255,255,.03));backdrop-filter:blur(16px);box-shadow:0 30px 60px rgba(0,0,0,.35)}
.struct-panel::before{content:'';position:absolute;width:75%;aspect-ratio:1/1;inset-block-start:-32%;inset-inline-end:-24%;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--act) 42%,transparent),transparent 65%);transition:background .8s;pointer-events:none}
.panel-prog{position:absolute;inset:0 0 auto 0;height:4px;background:rgba(255,255,255,.1)}
.panel-prog i{display:block;height:100%;background:var(--act);transform-origin:0 50%;transform:scaleX(0)}
html[dir="rtl"] .panel-prog i{transform-origin:100% 50%}
.panel-prog.run i{animation:fill var(--T,5.2s) linear forwards}
.panel-prog.idle i{transform:scaleX(1);opacity:.35}

.panel-tabs{display:none;gap:8px;overflow-x:auto;margin:0 -4px 20px;padding:2px 4px 6px;scrollbar-width:none;position:relative}
.panel-tabs::-webkit-scrollbar{display:none}
.panel-tabs button{flex:none;display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border:1px solid rgba(255,255,255,.25);border-radius:999px;background:rgba(255,255,255,.06);color:#fff;font:inherit;font-weight:700;font-size:.85rem;white-space:nowrap;cursor:pointer;transition:background .3s,border-color .3s}
.panel-tabs i{width:9px;height:9px;border-radius:50%;background:var(--catL)}
.panel-tabs button.is-active{background:var(--cat);border-color:#fff}

.panes{position:relative}
.struct-pane{--k:1;position:relative}
.struct-pane+.struct-pane{margin-top:34px;padding-top:30px;border-top:1px solid rgba(255,255,255,.14)}
.js .struct-pane{display:none;margin:0;padding:0;border:0}
.js .struct-pane.is-active{display:block;animation:paneIn .65s var(--ease) both}
.struct-pane[data-dir="prev"]{--k:-1}

.pane-no{position:absolute;inset-block-start:-8px;inset-inline-end:0;font-size:clamp(4rem,9vw,6.5rem);font-weight:900;line-height:1;color:transparent;-webkit-text-stroke:1.5px var(--catL);opacity:.45;pointer-events:none}
.pane-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px}
.pane-badge{display:inline-flex;align-items:center;gap:8px;padding:4px 14px;border-radius:999px;background:color-mix(in srgb,var(--cat) 60%,rgba(255,255,255,.1));border:1px solid var(--catL);font-size:.82rem;font-weight:800}
.pane-badge i{width:8px;height:8px;border-radius:50%;background:#fff}
.pane-count{font-size:.9rem;opacity:.9}
.pane-count b{color:var(--c-accent);font-size:1.15rem}
.struct-pane h3{margin:0;color:#fff;font-size:clamp(1.6rem,3vw,2.4rem);font-weight:900}
.pane-en{display:block;margin:2px 0 12px;color:var(--c-accent);font-weight:800;letter-spacing:.05em}
.struct-pane p{margin:0 0 18px;line-height:1.95;opacity:.93}
.pane-list-label{display:block;margin:6px 0 10px;font-size:.9rem;font-weight:900;color:var(--catL,var(--c-accent));letter-spacing:.03em}
.pane-list{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px}
.pane-list li{padding:6px 16px;border:1px solid var(--catL);border-radius:999px;background:color-mix(in srgb,var(--cat) 40%,rgba(255,255,255,.12));font-weight:700;font-size:.92rem;cursor:default;transition:background .3s,transform .3s,box-shadow .3s}
.pane-list li.d1{border-style:dashed;font-size:.85rem}
.pane-list li:hover,.pane-list li.is-hot{background:var(--cat);transform:translateY(-3px);box-shadow:0 8px 18px rgba(0,0,0,.35)}
.struct-pane.is-active .pane-list li{animation:chipIn .5s var(--ease) both;animation-delay:calc(var(--j)*.07s + .2s)}

@keyframes paneIn{from{opacity:0;transform:translateX(calc(var(--k)*var(--rtl)*34px))}to{opacity:1;transform:none}}
@keyframes chipIn{from{opacity:0;transform:translateY(12px) scale(.9)}to{opacity:1;transform:none}}
@keyframes ripple{0%{transform:scale(.9);opacity:.8}100%{transform:scale(1.55);opacity:0}}
@keyframes dashflow{to{stroke-dashoffset:-14}}

/* ---------------- responsive ---------------- */
@media (max-width:900px){
	.struct-wrap{grid-template-columns:1fr}
	.struct-stage{max-width:460px}
	.panel-tabs{display:flex}
	.struct-panel{min-height:0}
}
@media (max-width:600px){
	.struct-stage{--nd:15%}
	.st-node em{display:none}
	.pane-list li{font-size:.85rem;padding:5px 12px}
}
@media (prefers-reduced-motion:reduce){
	.pk{display:none}
	.st-sat.is-on{transition-delay:0s}
}
