@font-face {
    font-family: "NSRegular";
    src: url("./fonts/NanumSquareOTFRegular.otf");
}

@font-face {
    font-family: "NSBold";
    src: url("./fonts/NanumSquareOTFBold.otf");
}

@font-face {
    font-family: "NSExtrabold";
    src: url("./fonts/NanumSquareOTFExtraBold.otf");
}

@font-face {
    font-family: "NSLight";
    src: url("./fonts/NanumSquareOTFLight.otf");
}

body {
    font-family: NSRegular;
    background-color: #fff;
    margin: 0;
    padding: 0;
}

/*header and navbar designs*/
header {
    overflow: hidden;
    border-bottom: 1px solid #e8e8e8;
    min-height: 55.95px;
    font-family: NSRegular;
}

.nav-wrapper {
    width: 100%;
    height: 50px;
    display: flex;
    justify-content: flex;
    padding-left: 30px;
    -webkit-transition: background-color 0.6s; /* Safari */
    transition: background-color 0.6s;
}

.nav-button {
    text-align: center;
    float: left;
    display: flex;
    padding: 17px 20px;
    color: black;
    font-family: NSRegular;
}

a .nav-button {
    font-size: 0.875rem;
    text-decoration: none;
    font-family: NSRegular;
}

.nav-button:hover {
    color: #00000046;
}

body {
    /* font: 400 16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; */
    color: #111;
    background-color: #fdfdfd;
    -webkit-text-size-adjust: 100%;
    /* -webkit-font-feature-settings: "kern" 1;
    -moz-font-feature-settings: "kern" 1;
    -o-font-feature-settings: "kern" 1;
    font-feature-settings: "kern" 1; */
    /* font-kerning: normal; */
    display: flex;
    min-height: 100vh;
    flex-direction: column;
}

.home-wrapper {
    /* margin: 50px auto 30px;
    padding: 0px 30px; */
    max-width: calc(940px - (20px * 2));
    margin-right: auto;
    margin-left: auto;
    padding-right: 30px;
    padding-left: 30px;
}

/* adjust with media screen */
@media  screen and (max-width: 600px) {
    ul {
        padding-inline-start: 0px;
    }
    /* title and author font size */

    .title-wrapper #title {
        font-size: 24px; 
    }
    .author-wrapper {
        font-size: 16px;
    }
    .author-wrapper #author-1 {
        margin-right: 10px;
    }
    .author-wrapper #author-2 {
        margin-left: 15px;
    }
    .author-wrapper #author-3 {
        margin-left: 20px;
    }
    .author-wrapper #aff {
        font-size: 15px;
    }
    pre code {
        font-size: 12px;
    }
}

@media  screen and (min-width: 601px) {
    ul {
        padding-inline-start: 0px;
    }
    /* title and author font size */

    .title-wrapper #title {
        font-size: 27px;
    }
    .author-wrapper {
        font-size: 17.5px;
    }
    .author-wrapper #author-1 {
        margin-right: 20px;
    }
    .author-wrapper #author-2 {
        margin-left: 10px;
    }
    .author-wrapper #author-3 {
        margin-left: 20px;
    }
    .author-wrapper #aff {
        font-size: 15.5px;
    }
    pre code {
        font-size: 13.5px;
    }
}

@media screen and (min-width: 601px) and (max-width: 800px){
    .teaser-wrapper {
        margin-left: 30px;
        margin-right: 30px;
        align-items: center;
    }
}

@media  screen and (max-width: 800px) {

    #teaser-grid-1{
        margin-top: 15px;
    }

    .section-wrapper {
        grid-template-rows: auto auto;
        grid-template-columns: 1fr;    
        margin-top: 50px;
    }

    /* .teaser-wrapper video {
        max-width: 430px;
    } */

    .section-title {
        text-align: left;
        text-transform: capitalize;
        font-weight: 700;
        color: #464646;
        margin-bottom: 25px;
        letter-spacing: 1px;
        font-family: NSRegular;
    }

    .page-content {    
        padding-top: 25px;
        margin-bottom: 60px;
        flex: 1;
    }

    ul {
        padding-inline-start: 0px;
    }
}

@media screen and (min-width: 801px) {

    .section-content {
        text-align: justify;
    }
    .paper-info-wrapper {
        margin-top: 20px;
    }
    
    .single-section-wrapper {
         margin-left: 30px; margin-right: 30px;
    }

    .section-wrapper {
        display: block;       /* title centered on top, content full width */
        margin-top: 60px;
    }

    .teaser-wrapper {
        display: grid;
        align-items: center;
        grid-template-columns:  auto auto;
        column-gap: 30px;
        grid-template-rows: 1fr;
    }   

    #bibtex{
        margin-bottom: 60px;
    }   

    #bibtex pre {
        margin-top: -8px;
    }
    .section-title {
        font-weight: 700;
        color: #464646;
        text-align: right;
        text-transform: capitalize;
        letter-spacing: 1px;
        padding-top: 8px;
        font-family: NSRegular;

    }    

    .page-content {    
        padding-top: 30px;
        padding-bottom: 0px;
        flex: 1;
    }

}

@media screen and (min-width: 801px) and (max-width: 1000px) {
    ul {
        padding-inline-start: 20px;
    }
}


div {
    display: block;
}

#video-youtube-embed{
    padding-top: 15px;
}

iframe { 
    width: 100%;
    aspect-ratio: 16/9;
}

video {
    width: 100%;
    aspect-ratio: 16/9;
    border: 0;
}

.teaser-image-wrapper {
    display: flex;
    flex-direction: column;
}

.teaser-image-wrapper img,
.teaser-image-wrapper #profile {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 4px;
    margin-bottom: 10px;
}


.single-section-wrapper {
    margin-top: 30px;
}

.teaser-caption{
    /* padding: 10px 15px 0; */
    text-align: justify;
    font-size: 18px;
    font-weight: 500;
    color: #000000;
    line-height: 1.5;
}

#subtitle {
    margin-top: 0;
    font-weight: 300;
    font-family: NSRegular;
}

.links-row {
    display: flex;
    justify-content: center;
    gap: 19px;
    margin-top: 0.9em;
    margin-bottom: 0.3em;
}


.link-button {
    background-color: #2c4a8a; /* This will make the button color blue */
    color: white; /* This will make the text color white */
    border-radius: 20px; /* This will make the corners round, adjust the value if needed */
    border: none; /* This will remove the default button border */
    padding: 8px 13px; /* This will add some space around the text inside the button, adjust the values if needed */
    font-size: 15px; /* This will set the font size, adjust the value if needed */
    cursor: pointer; /* This will change the cursor to a hand when hovering over the button */
}

.link-button:hover {
    background-color: #203767; /* This will darken the button color when hovered */
}

.section-content #abstract {
    display: block;
    margin-block-start: 1em;
    margin-block-end: 1em;
    margin-inline-start: 0px;
    margin-inline-end: 0px;
    font-size: 18px;
    color: #1e1e21;
    font-family: NSRegular;
    font-weight: 500;
    /* line-height: 1.5; */
    margin-top: 0px; margin-bottom: 0px; padding-top:4px; line-height: 1.6;

}

.section-content #ack {
    display: block;
    font-size: 18px;
    color: #1e1e21;
    font-family: NSRegular;
    font-weight: 500;
    line-height: 1.6;
    /* boxed panel, like the BibTeX block */
    background: #eee;
    padding: 12px 16px;
    border-radius: 4px;
    margin: 0;
}

.title-wrapper #title {
    font-weight: 700; margin-bottom: 0.2em; margin-top: 0em; text-align:center; line-height:1.4;
}

.author-wrapper {
    text-align:center; margin-bottom: 0.4em; margin-top: 1.0em;
}

.author-wrapper #aff {
    text-align:center; margin-bottom: 0.3em; margin-top: 0.6em; 
}

.pub-source-wrapper {
    text-align: center; font-size: 18px;
}

/* .section-content {
    margin-top: 0px; margin-bottom: 0px; padding-top:4px; line-height: 1.6;
} */

a {
    color: #2c4a8a;
    font-weight: 600;
    text-decoration: none;
    font-family: NSRegular;
}

pre code {
    background-color: #eee;

    /* border: 1px solid #999; */
    display: block;
    padding: 10px;
    font-weight: 400;
    line-height: 1.5;
    font-family: Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
  }
pre {
    white-space: pre-wrap;
    /* word-wrap: normal; */
    margin-bottom: 0px;
    overflow:auto;
}



.site-wrapper {
    max-width: calc(1000px - (30px * 2));
    margin-right: auto;
    margin-left: auto;
    padding-right: 30px;
    padding-left: 30px;
}

.footer {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
}

.site-footer {
    padding: 30px 0;
    border-top: 1px solid #e8e8e8;
}

.footer-list {
    list-style: none;
    margin-top: 0px;
    line-height: 1.6;
    font-size: 15px;
}

.footer-ui {
    font-weight:700;
    color: #444552;
    font-size: 15px;
    padding-bottom: 8px;
    font-family: "Roboto", sans-serif;
    line-height: 1.6;
}

.u-email {
    font-weight: 700;
    /* width: fit-content; */
    font-size: 15px;
    font-family: "Roboto", sans-serif;
}

.icon {
    font-size: 27px;
    margin-right: 15px;
    color: #2c4a8a;
}

/* ============================================================
   SimuScene additions (on top of the GTU template base)
   ============================================================ */

/* Author list (adaptive: each name stays whole, list wraps author-by-author) */
.author-wrapper .author {
    display: inline-block;
    margin: 0 6px;
    white-space: nowrap;
    line-height: 1.8;
    font-size: 18px;
}
.author-wrapper sup {
    color: #2c4a8a;
    font-weight: 700;
}
.author-wrapper #eq-contrib {
    font-size: 14px;
    color: #57606a;
    margin: 0.5em 0 0;
}
@media screen and (max-width: 600px) {
    .author-wrapper .author { font-size: 16px; margin: 0 4px; }
}

/* Venue tag under the authors (e.g. "NeurIPS 2026") */
.pub-source-wrapper .venue-tag {
    color: #2c4a8a;
    font-weight: 700;
    letter-spacing: 0.5px;
}

/* Disabled "Coming soon" link buttons (no URL yet) */
.link-button.disabled,
.links-row a.disabled .link-button {
    background-color: #b8b8bf;
    cursor: not-allowed;
}
.link-button.disabled:hover {
    background-color: #b8b8bf;
}
.links-row a.disabled {
    pointer-events: none;
}

/* Teaser caption already exists; small helper for method/results captions */
.method-caption,
.results-caption {
    text-align: center;
    color: #000;
    font-size: 18px;
    line-height: 1.6;
    margin: 10px auto 4px;   /* centered, not full width */
    max-width: 760px;
}
.results-caption {
    color: #464646;
}

/* Method overview figure */
.method-figure {
    width: 100%;
    margin: 6px 0 4px;
}
.method-figure img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 4px;
}

/* Sequential per-object reconstruction strip (process shown step by step) */
.process-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin: 6px 0 4px;
}
.process-cell {
    display: flex;
    flex-direction: column;
    border: 1px solid #e2e2e7;
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
}
.process-cell .process-label {
    font-size: 12px;
    padding: 5px 6px;
    text-align: center;
    background: #f4f4f6;
    border-bottom: 1px solid #e2e2e7;
    color: #1e1e21;
}
.process-cell .cmp-media { /* reuse square black media box */
    aspect-ratio: 1 / 1;
}
/* On phones the 4-step strip becomes 2x2 (still reads left-to-right, top-to-bottom). */
@media screen and (max-width: 700px) {
    .process-grid { grid-template-columns: repeat(2, 1fr); gap: 5px; }
    .process-cell .process-label { font-size: 11px; padding: 4px; }
}

/* Black-box media placeholder (shown until a real image/video is dropped in) */
.media-placeholder {
    width: 100%;
    aspect-ratio: 16 / 9;
    background: #000;
    color: #6a6a6a;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-size: 13px;
    letter-spacing: 0.5px;
}

/* ---- Comparison grid: one scene = baselines + Ours side by side ---- */
.scene-caption {
    text-align: center;
    font-size: 14px;
    color: #464646;
    margin: 0 0 10px;
    font-weight: 700;
}
/* Flexbox (not grid) so hidden columns redistribute automatically. Every cell
   flexes to equal width; all cells in one scene share the same aspect (set via
   --ar on the row), so equal width => equal height => the row stays aligned. */
.cmp-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    align-items: center;  /* center cells (various aspect ratios align nicely) */
}
.cmp-cell {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    border: 1px solid #e2e2e7;
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
}
.cmp-cell.ours {
    border: 2.5px solid #c79a2b; /* gold highlight for "Ours" */
}
.cmp-cell .cmp-label {
    font-size: 13px;
    padding: 5px 6px;
    min-height: 2.6em;            /* fixed so 1- and 2-line labels keep media tops aligned */
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    background: #f4f4f6;
    border-bottom: 1px solid #e2e2e7;
    color: #1e1e21;
    line-height: 1.2;
}
.cmp-cell.ours .cmp-label {
    color: #a87f1c;
    font-weight: 700;
    background: #fbf4e2;
}
/* Show each clip at its OWN aspect ratio (no black letterbox). --ar is set per
   scene on .cmp-grid; defaults to square. Space is reserved so there is no
   layout shift while the video lazy-loads. */
.cmp-media {
    width: 100%;
    aspect-ratio: var(--ar, 1 / 1);
    background: transparent;
    overflow: hidden;
}
.cmp-media video,
.cmp-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;   /* --ar matches the media aspect, so no crop happens */
    display: block;
}

/* ---- Adaptive columns: the "(our bg)" variants only show when there is room ---- */
/* >=1024px: all columns (incl. our-bg) visible.
   700-1024px: hide our-bg columns -> baselines + Ours stay readable.
   <700px: 2 per row (our-bg hidden). */
@media screen and (max-width: 1024px) {
    .cmp-cell--ourbg { display: none; }
}
@media screen and (max-width: 700px) {
    .cmp-cell { flex: 0 0 calc(50% - 4px); } /* 2 per row */
}

/* Supplementary call-to-action button (links out to the full supp page) */
.supp-link-row {
    display: flex;
    justify-content: center;
    margin: 8px 0 4px;
}

/* ---- Applications: tabbed (Character Control / Robotic Manipulation) ---- */
.tab-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    margin: 4px 0 18px;
}
.tab-btn {
    background: #f0f2f5;
    color: #1e1e21;
    border: 1px solid #d0d7de;
    border-radius: 999px;
    padding: 8px 20px;
    font-size: 14px;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.tab-btn:hover { border-color: #2c4a8a; color: #2c4a8a; }
.tab-btn.active { background: #2c4a8a; color: #fff; border-color: #2c4a8a; }

.tab-panel { display: none; }
.tab-panel.active { display: block; }

/* Each application scene block (Apple / Kettle / Scene 1 / Scene 2) */
.app-scene { margin: 0 auto 22px; }
.app-scene:first-of-type { margin-top: 22px; } /* breathing room under the tab caption */
.app-scene:last-child { margin-bottom: 4px; }

/* Application rows mix aspect ratios. Each .cmp-cell gets inline flex-grow = its
   aspect ratio (W/H), so column widths are proportional to aspect => all cells in
   a row resolve to the SAME height with no letterbox, at any container width.
   (.cmp-cell media keeps its own inline aspect-ratio.) */
.cmp-grid--apps {
    max-width: 760px;
    margin: 0 auto;
    gap: 10px;
}
/* Phone: stack vertically, each full width at its native aspect. */
@media screen and (max-width: 600px) {
    .cmp-grid--apps { flex-direction: column; max-width: 440px; }
    .cmp-grid--apps .cmp-cell { flex-grow: 0 !important; width: 100%; }
}

/* ============================================================
   Section titles: centered header on top (was a left side-column),
   so content gets the full width. ~+12% larger than before.
   ============================================================ */
.section-title {
    text-align: center;
    font-size: 21px;
    font-weight: 700;
    color: #464646;
    letter-spacing: 1px;
    text-transform: capitalize;
    margin: 0 0 18px;
    padding: 0;
    font-family: NSRegular;
}

/* ============================================================
   Subtle per-section tints as FULL-BLEED bands. The colored
   background spans the whole viewport width via box-shadow, while
   the content stays in the centered column — so there is NO
   left/right shift between tinted and untinted sections.
   ============================================================ */
.section-wrapper.tint {
    padding: 30px 0 34px;
    margin-top: 40px;
    background: var(--band);
    box-shadow: 0 0 0 100vmax var(--band);
    clip-path: inset(0 -100vmax);   /* extend horizontally, clip top/bottom to the section */
}
/* Neutral gray bands; Applications gets a very soft orange accent. */
.section-wrapper.tint-abstract { --band: #f4f5f7; } /* gray */
.section-wrapper.tint-method   { --band: #f4f5f7; } /* gray */
.section-wrapper.tint-results  { --band: #f4f5f7; } /* gray */
.section-wrapper.tint-apps     { --band: #fdf8f1; } /* very soft orange */

@media screen and (max-width: 600px) {
    .section-wrapper.tint { padding: 24px 0 26px; }
}

/* ============================================================
   "Show all baselines" toggle — reveals the (our bg) columns that
   auto-hide on narrow screens. Only shown when they are hidden.
   ============================================================ */
.carousel-extra {
    text-align: center;
    margin-top: 12px;
}
.ourbg-toggle {
    display: none;               /* irrelevant on wide screens (columns already shown) */
    background: #eef1f6;
    color: #2c4a8a;
    border: 1px solid #c7d0db;
    border-radius: 999px;
    padding: 6px 16px;
    font-size: 13px;
    font-family: inherit;
    cursor: pointer;
}
.ourbg-toggle:hover { border-color: #2c4a8a; }
@media screen and (max-width: 1024px) {
    .ourbg-toggle { display: inline-flex; }
}
/* When opted in, force the hidden columns back even on narrow screens. */
.carousel.show-ourbg .cmp-cell--ourbg { display: flex; }

/* Explanation for the (our bg) columns — only visible while those columns are
   shown (toggled on, or auto-shown on wide screens). */
.ourbg-note {
    display: none;
    max-width: 700px;
    margin: 10px auto 0;
    font-size: 13px;
    line-height: 1.5;
    color: #57606a;
}
.carousel.show-ourbg .ourbg-note { display: block; }
@media screen and (min-width: 1025px) {
    .ourbg-note { display: block; }
}

/* ---- "Examples" block under METHOD (slightly separated, shows the solving process) ---- */
.examples-block {
    margin-top: 30px;
    padding-top: 24px;
    border-top: 1px solid #ececf0;
}
.examples-title {
    text-align: center;
    font-size: 18px;
    font-weight: 700;
    color: #464646;   /* same gray as the section titles (was too strong in blue) */
    letter-spacing: 0.5px;
    text-transform: capitalize;
    margin: 0 0 8px;
}
/* Keep the Examples carousel compact — closer in size to the Results thumbnails. */
.examples-block .cmp-grid--apps { max-width: 420px; }