:root{
  --bg:#ffffff;
  --bg-alt:#f6f7f9;
  --ink:#1a1d24;
  --muted:#5b6472;
  --line:#e5e8ee;
  --accent:#4f46e5;      /* indigo */
  --accent-2:#0ea5a4;    /* teal   */
  --best:#c9f2d0;
  --second:#fdf0c2;
  --maxw:1180px;
  --radius:14px;
  --shadow:0 6px 24px rgba(20,25,40,.08);
  --display:'Space Grotesk','Inter',system-ui,sans-serif;
  --content:'Newsreader',Georgia,serif;
  --aff1:#4f46e5;   /* indigo  */
  --aff2:#0ea5a4;   /* teal    */
  --aff3:#7c3aed;   /* violet  */
  --brand-grad:linear-gradient(105deg,#c8b593 0%,#a3906a 46%,#7a6142 100%);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:70px}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  line-height:1.65;-webkit-font-smoothing:antialiased;
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.container{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.container.narrow{max-width:860px}
sup{font-size:.62em}

/* ---------------- NAV ---------------- */
#nav{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.86);
  backdrop-filter:saturate(160%) blur(10px);border-bottom:1px solid var(--line)}
.nav-inner{max-width:var(--maxw);margin:0 auto;padding:10px 24px;display:flex;align-items:center;gap:18px}
.nav-brand{display:flex;align-items:center;gap:9px}
.nav-brand img{height:34px;width:34px;display:block;border-radius:9px;object-fit:cover;
  box-shadow:0 2px 8px rgba(20,25,40,.12),0 0 0 1px rgba(0,0,0,.04)}
.nav-brand .brandtext{font-family:var(--content);font-weight:700;font-size:1.32rem;letter-spacing:-.01em;
  background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.nav-brand:hover{text-decoration:none;opacity:.85}
.nav-links{margin-left:auto;display:flex;gap:22px}
.nav-links a{color:var(--muted);font-weight:500;font-size:.92rem}
.nav-links a:hover{color:var(--accent);text-decoration:none}
#nav-toggle{display:none;margin-left:auto;background:none;border:none;font-size:1.4rem;cursor:pointer;color:var(--ink)}

/* ---------------- HERO ---------------- */
.hero{padding:56px 0 20px;text-align:center;background:
  radial-gradient(1000px 400px at 50% -120px, #eef0ff 0%, rgba(238,240,255,0) 70%)}
.venue{display:inline-block;font-weight:600;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--accent);background:#eef0ff;padding:6px 14px;border-radius:999px;margin-bottom:18px}
.title{font-family:var(--content);font-size:clamp(2rem,4.2vw,3.15rem);line-height:1.18;letter-spacing:-.012em;font-weight:600;margin:.1em auto .5em;max-width:21em;text-wrap:balance;color:#141824;text-align:center}
.title-icon{height:.82em;width:auto;vertical-align:-.09em;margin-right:.26em;border-radius:.14em;
  box-shadow:0 3px 10px rgba(20,25,40,.13),0 0 0 1px rgba(0,0,0,.04)}
.title .brand{font-weight:700;
  background:var(--brand-grad);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 2px 8px rgba(140,110,60,.20))}
.authors{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 18px;font-size:1.05rem;margin:10px auto;max-width:860px}
.authors a{color:var(--ink);font-weight:500}
.authors a:hover{color:var(--accent)}
.authors sup{font-size:.62em;font-weight:700}
sup.mk{color:#111827;margin-left:1px}
sup.aff .a1,.affil sup.a1{color:var(--aff1)}
sup.aff .a2,.affil sup.a2{color:var(--aff2)}
sup.aff .a3,.affil sup.a3{color:var(--aff3)}
sup.aff{font-weight:700}
.affil{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 22px;color:var(--muted);font-size:.95rem;margin-bottom:10px}
.affil sup{font-weight:700}
.notes{display:flex;flex-wrap:wrap;justify-content:center;gap:2px 20px;color:var(--muted);font-size:.82rem;margin-bottom:22px}
.notes sup{font-weight:700}
.links{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:8px 0 6px}
.btn{display:inline-flex;align-items:center;gap:8px;background:var(--ink);color:#fff;padding:10px 19px;border-radius:999px;
  font-family:var(--display);font-weight:600;font-size:.92rem;letter-spacing:.01em;border:none;cursor:pointer;transition:transform .12s ease,background .2s}
.btn:hover{background:#000;text-decoration:none;transform:translateY(-1px)}
.btn .ico{font-size:.95em}
.btn.small{background:var(--accent);padding:8px 16px;font-size:.85rem}
.teaser{max-width:var(--maxw);margin:30px auto 0;padding:0 24px;text-align:center}
.teaser img{width:72%;border-radius:var(--radius);box-shadow:var(--shadow);display:block;margin:0 auto}
.caption{font-family:var(--content);color:var(--muted);font-size:1rem;margin:14px auto 0;max-width:720px}

/* ---------------- SECTIONS ---------------- */
.section{padding:64px 0;border-top:1px solid var(--line)}
.section.alt{background:var(--bg-alt)}
.section h2{font-family:var(--content);font-size:2.1rem;letter-spacing:-.015em;font-weight:700;margin:0 0 .55em;text-align:left}
.section h2::after{content:'';display:block;width:52px;height:4px;margin-top:12px;border-radius:3px;
  background:linear-gradient(90deg,var(--accent),var(--accent-2))}
.section h3{font-size:1.25rem;font-weight:700;margin:1.6em 0 .5em}
.sub{font-family:var(--content);color:#4a5262;text-align:left;max-width:none;margin:0 0 26px;font-size:1.08rem;line-height:1.7}
.lead{font-family:var(--content);font-size:1.16rem;line-height:1.8;text-align:justify}
.hint{font-family:var(--content);color:var(--muted);font-size:.9rem;text-align:center;margin-top:10px}
code{background:#eef0f4;padding:2px 6px;border-radius:6px;font-size:.86em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

figure{margin:20px 0;text-align:center}
figure img{max-width:100%;border-radius:10px;box-shadow:var(--shadow)}
figcaption{font-family:var(--content);color:var(--muted);font-size:.95rem;margin-top:10px}

/* ---------------- VIDEO ---------------- */
.video-wrap{position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);background:#000}
.video-wrap video{width:100%;display:block;aspect-ratio:16/9}

/* ---------------- INTERACTIVE GALLERY ---------------- */
.thumbs{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-bottom:26px}
.thumb{width:150px;border-radius:10px;overflow:hidden;border:2px solid transparent;cursor:pointer;
  background:#fff;box-shadow:var(--shadow);transition:transform .12s,border-color .15s}
.thumb:hover{transform:translateY(-2px)}
.thumb.active{border-color:var(--accent)}
.thumb img{width:100%;height:74px;object-fit:cover;display:block;background:#eee}
.thumb .tlabel{padding:5px 8px;display:flex;flex-direction:column;line-height:1.25;overflow:hidden}
.thumb .tname{font-size:.74rem;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thumb .tnum{font-size:.62rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.stage{display:grid;grid-template-columns:280px 1fr;gap:20px;align-items:start}
@media(max-width:900px){.stage{grid-template-columns:1fr}}
.stage-input{display:flex;flex-direction:column;gap:14px}
.input-card{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}
.input-label{font-size:.78rem;font-weight:600;color:var(--muted);padding:8px 12px;border-bottom:1px solid var(--line)}
.input-card img{width:100%;display:block;background:#eee}

.stage-viewers{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:620px){.stage-viewers{grid-template-columns:1fr}}
.viewer-col{display:flex;flex-direction:column}
.viewer-title{text-align:center;font-weight:700;margin-bottom:8px;font-size:1rem}
.viewer-title.accent{color:var(--accent)}
.viewer-title span{font-weight:500;color:var(--muted);font-size:.85em}
.viewer{position:relative;width:100%;aspect-ratio:1/1;background:
  linear-gradient(180deg,#fbfcfe 0%,#eef1f6 100%);
  border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow);cursor:grab}
.viewer:active{cursor:grabbing}
.viewer canvas{display:block}
.viewer-load{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.9rem}

.controls{display:flex;flex-wrap:wrap;align-items:center;gap:22px;margin-top:22px;
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 22px;box-shadow:var(--shadow)}
.ctrl-group{display:flex;align-items:center;gap:12px}
.ctrl-group.grow{flex:1;min-width:220px}
.ctrl-label{font-weight:600;font-size:.85rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.seg{display:inline-flex;background:#eef0f4;border-radius:10px;padding:3px}
.seg button{border:none;background:none;padding:7px 14px;border-radius:8px;font-weight:600;font-size:.85rem;color:var(--muted);cursor:pointer}
.seg button.active{background:#fff;color:var(--accent);box-shadow:0 1px 3px rgba(0,0,0,.1)}
input[type=range]{flex:1;accent-color:var(--accent);height:4px}
.chk{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--muted);cursor:pointer;font-weight:500}

/* ---------------- METHOD ---------------- */
.method-stage{margin:36px 0}
.method-stage h3{display:flex;align-items:center;gap:12px;font-family:var(--content);font-weight:700}
.reveal-btn{display:inline-flex;align-items:center;gap:9px;margin:6px 0 4px;background:#fff;border:1px solid var(--line);
  color:var(--accent);font-weight:600;font-size:.9rem;padding:9px 18px;border-radius:999px;cursor:pointer;box-shadow:var(--shadow);transition:transform .12s,background .2s}
.reveal-btn:hover{transform:translateY(-1px);background:#f7f8ff}
.reveal-btn .chev{transition:transform .2s}
.reveal-btn.open .chev{transform:rotate(180deg)}
.reveal-fig{overflow:hidden;max-height:0;opacity:0;transition:max-height .5s ease,opacity .4s ease}
.reveal-fig.open{max-height:1600px;opacity:1;margin-top:8px}
.step{background:var(--accent);color:#fff;font-size:.72rem;font-weight:700;padding:4px 10px;border-radius:999px;
  text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.method-stage p{font-family:var(--content);color:#2a2f3a;text-align:justify;font-size:1.06rem;line-height:1.75}

/* ---------------- GENERATION GALLERY ---------------- */
.gen-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px}
.gen-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
.gen-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--line)}
.gen-head .rname{font-weight:700;font-size:.92rem}
.gen-head .rtag{font-size:.72rem;color:var(--muted);background:#eef0f4;padding:3px 9px;border-radius:999px}
.gen-erp{width:100%;height:120px;object-fit:cover;display:block;background:#eee}
.gen-pair{display:grid;grid-template-columns:1fr 1fr}
.gen-slot{position:relative;aspect-ratio:1/1;border-top:1px solid var(--line);
  background:linear-gradient(180deg,#fbfcfe,#eef1f6)}
.gen-slot+.gen-slot{border-left:1px solid var(--line)}
.gen-slot .slot-label{position:absolute;top:8px;left:8px;z-index:2;font-size:.72rem;font-weight:700;
  padding:3px 9px;border-radius:999px;background:rgba(255,255,255,.9);color:var(--muted)}
.gen-slot.ours .slot-label{color:var(--accent)}
.gen-load-btn{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  border:none;background:transparent;cursor:pointer;color:var(--accent);font-weight:700;font-size:.9rem;gap:8px}
.gen-load-btn:hover{background:rgba(79,70,229,.06)}
.gen-load-btn .pin{width:34px;height:34px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:1.1rem}
.gen-slot canvas{display:block}

/* ---------------- CAROUSEL ---------------- */
.carousel{position:relative;display:flex;align-items:center;gap:8px;justify-content:center}
.car-frame{flex:1;text-align:center}
.car-frame img{max-width:100%;border-radius:10px;box-shadow:var(--shadow)}
.car-prev,.car-next{background:#fff;border:1px solid var(--line);width:42px;height:42px;border-radius:50%;
  font-size:1.4rem;cursor:pointer;color:var(--ink);box-shadow:var(--shadow);flex:none}
.car-prev:hover,.car-next:hover{color:var(--accent)}
.car-dots{position:absolute;bottom:-26px;left:0;right:0;display:flex;justify-content:center;gap:8px}
.car-dots span{width:9px;height:9px;border-radius:50%;background:var(--line);cursor:pointer}
.car-dots span.active{background:var(--accent)}

/* ---------------- TABLE ---------------- */
.res-sub{font-family:var(--content);text-align:left;font-size:1.5rem;font-weight:700;margin-top:2.2em}
.res-sub::after{content:'';display:block;width:40px;height:3px;margin-top:9px;border-radius:2px;
  background:linear-gradient(90deg,var(--accent),var(--accent-2))}
.table-wrap{overflow-x:auto;margin-top:14px;border-radius:14px;box-shadow:var(--shadow);border:1px solid var(--line)}
.qt{border-collapse:collapse;margin:0;font-size:.82rem;background:#fff;min-width:860px;width:100%}
.qt th,.qt td{padding:8px 11px;text-align:center;white-space:nowrap;border-bottom:1px solid var(--line)}
.qt thead th{font-family:var(--display);background:linear-gradient(180deg,#1f2433,#171b28);color:#dfe3ee;font-weight:600;border-bottom:none}
.qt thead tr:first-child th{font-size:.86rem;letter-spacing:.01em}
.qt th.grp{background:linear-gradient(180deg,#232a3d,#1a1f2e);color:#fff;font-weight:700;font-size:1rem;letter-spacing:.01em}
.qt thead tr:first-child th:nth-of-type(2){box-shadow:inset 0 -3px 0 var(--aff1)}
.qt thead tr:first-child th:nth-of-type(4){box-shadow:inset 0 -3px 0 var(--aff2)}
.qt thead th+th{border-left:1px solid rgba(255,255,255,.08)}
.qt tbody td{border-right:1px solid #eef0f4}
.qt .lft{text-align:left;font-weight:500}
.qt tbody tr:hover td{background:#fafbff}
.qt .subhdr td{background:#eef0f6;font-weight:600;text-align:left;color:var(--muted);letter-spacing:.02em;text-transform:uppercase;font-size:.72rem}
.qt .subhdr td.as{color:var(--accent-2)}
.qt tr.cont td{border-top:none;color:var(--muted)}
.qt td.best{background:var(--best)!important;font-weight:700;border-radius:2px}
.qt td.second{background:var(--second)!important}
.lg{display:inline-block;padding:1px 8px;border-radius:5px;font-size:.85em;font-weight:600}
.lg.best{background:var(--best)}
.lg.second{background:var(--second)}

/* ---------------- ACKNOWLEDGEMENTS ---------------- */
.ack{font-family:var(--content);color:#2a2f3a;text-align:justify;font-size:1.04rem;line-height:1.75;margin:0}

/* ---------------- BIBTEX ---------------- */
.bib{background:#0f1320;color:#e6e8ef;border-radius:12px;padding:20px 22px;overflow-x:auto;
  font-size:.84rem;line-height:1.6;box-shadow:var(--shadow)}
.bib code{background:none;color:inherit;padding:0}
#copy-bib{margin-top:12px}

/* ---------------- FOOTER ---------------- */
footer{padding:40px 0;text-align:center;color:var(--muted);border-top:1px solid var(--line)}
footer p{margin:4px 0}
.tiny{font-size:.8rem}

/* ---------------- MOBILE NAV ---------------- */
@media(max-width:760px){
  #nav-toggle{display:block}
  .nav-links{display:none;position:absolute;top:52px;left:0;right:0;flex-direction:column;gap:0;
    background:#fff;border-bottom:1px solid var(--line);padding:8px 0}
  .nav-links.open{display:flex}
  .nav-links a{padding:12px 24px}
}
