/* Ludofax Labs: a distinct research identity, as the MOJIN pages have their own.
   Scoped stylesheet. No changes to corporate tokens or application styling. */
:root{color-scheme:dark;--ground:#191d1c;--ink:#f2f3eb;--muted:#b3bcb4;--line:#424b45;--accent:#d8ea83;--paper:#f0f0e7;--dark:#232c26;--display:Archivo,Arial,sans-serif;--body:'Zen Kaku Gothic New',Arial,sans-serif;--mono:'IBM Plex Mono',monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.7}a{color:inherit;text-underline-offset:5px}a:hover{text-decoration-thickness:2px}a:focus-visible{outline:2px solid currentColor;outline-offset:6px}img{max-width:100%;display:block}h1,h2,h3,p,figure,blockquote{margin:0}h1,h2,h3{font-family:var(--display);font-weight:500;letter-spacing:-.045em;line-height:1.08;text-wrap:balance}h1{font-size:clamp(46px,4.7vw,72px)}h2{font-size:clamp(36px,4vw,54px)}h3{font-size:34px}p{text-wrap:pretty}em{font-family:Georgia,serif;font-weight:400;letter-spacing:-.05em;color:var(--accent)}.wrap{width:min(1240px,calc(100% - 96px));margin-inline:auto}.skip{position:absolute;left:24px;top:-80px;background:var(--accent);color:var(--ground);padding:12px;z-index:5}.skip:focus{top:12px}.masthead{min-height:98px;display:flex;align-items:center;justify-content:space-between;gap:32px;border-bottom:1px solid var(--line)}.identity{display:flex;align-items:center;gap:17px;font-family:var(--display);font-size:19px;letter-spacing:.04em;font-weight:600;text-decoration:none;white-space:nowrap}.identity img{filter:invert(1);width:28px;height:28px}.identity-labs{font-weight:400;color:var(--muted);padding-left:8px}.masthead nav{display:flex;align-items:center;gap:32px;font-size:13px}.masthead nav a{text-decoration:none;min-height:44px;display:inline-flex;align-items:center;gap:10px}.masthead nav a:hover{text-decoration:underline}.parent{color:var(--muted);border-left:1px solid var(--line);padding-left:28px}.hero{padding-block:80px 72px;display:grid;grid-template-columns:1.08fr 1fr;gap:48px;align-items:center}.eyebrow{font-family:var(--mono);font-size:10px;letter-spacing:.12em;line-height:1.7;text-transform:uppercase}.hero .eyebrow{margin-bottom:28px;color:var(--muted);font-size:10px;letter-spacing:.075em}.square{display:inline-block;width:7px;height:7px;background:var(--accent);margin-right:9px}.lede{margin-top:28px;font-size:21px;line-height:1.5;max-width:470px}.hero-detail{font-size:15px;color:var(--muted);margin-top:18px;max-width:430px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:38px;background:var(--accent);color:var(--ground);text-decoration:none;font-size:14px;font-weight:700;padding:15px 22px;min-height:52px;border:1px solid var(--accent)}.button:hover{background:var(--ink);border-color:var(--ink)}.button span{font-size:20px;font-weight:400}.hero .button{margin-top:30px}.hero-figure{align-self:center;border:1px solid var(--line)}.hero-figure img{width:100%;height:auto}.hero-figure figcaption{display:flex;justify-content:space-between;gap:16px;padding:15px 18px;font-family:var(--mono);font-size:9px;letter-spacing:.025em;color:var(--muted);border-top:1px solid var(--line)}.paper{background:var(--paper);color:var(--dark);color-scheme:light}.work{padding-block:76px 32px}.section-heading{display:grid;grid-template-columns:1fr 2.15fr;gap:40px;margin-bottom:56px}.section-heading>.eyebrow{padding-top:10px}.section-heading p:not(.eyebrow){font-size:18px;max-width:640px;margin-top:20px;color:#505e51}.project{border-top:1px solid #a9b4a6;padding-top:24px}.project-meta{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}.index{font-family:var(--mono);font-size:12px}.status{font-family:var(--mono);font-size:9px;letter-spacing:.02em;border:1px solid #9ca998;padding:5px 9px}.featured{display:grid;grid-template-columns:.55fr 1.5fr 1fr;gap:40px;padding-bottom:54px}.featured .project-meta{display:block}.featured .index{display:block;margin:4px 0 24px}.featured .status{display:inline-block}.project .eyebrow{color:#53634e;margin-bottom:14px}.project p:not(.eyebrow){font-size:16px;line-height:1.75;margin-top:20px}.project .text-link{display:inline-block;font-size:13px;margin-top:24px}.question{align-self:start;border-left:1px solid #a9b4a6;padding:0 0 0 30px;margin-top:6px}.question blockquote{font-family:Georgia,serif;font-size:25px;line-height:1.4;letter-spacing:-.02em;margin-top:20px}.question p:not(.eyebrow){font-size:14px;color:#53634e}.project-pair{display:grid;grid-template-columns:1fr 1fr;gap:64px}.project-pair .project{padding-bottom:42px}.project-pair h3{font-size:32px}.open-question{color:#53634e;font-style:italic}.work-foot{border-top:1px solid #a9b4a6;display:flex;justify-content:space-between;gap:24px;padding-top:24px;font-size:12px;color:#53634e}.about{display:grid;grid-template-columns:1fr 2.15fr;gap:40px;padding-block:88px}.about>.eyebrow{padding-top:10px;color:var(--muted)}.about>div{max-width:660px}.about p:not(.eyebrow):not(.signature){margin-top:24px;font-size:18px;color:var(--muted)}.signature{font-family:Georgia,serif;font-style:italic;font-size:32px;margin-top:30px}.signature span{display:block;font-family:var(--mono);font-style:normal;font-size:10px;letter-spacing:.07em;color:var(--muted);margin-top:2px}.contact{border-top:1px solid var(--line);background:#222a24;padding-block:72px}.contact-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:100px}.contact .eyebrow{color:var(--muted);margin-bottom:22px}.contact p:not(.eyebrow){max-width:450px;color:var(--muted);margin-top:22px}.contact-action{align-self:center}.email{display:block;width:fit-content;margin-top:20px;font-family:var(--mono);font-size:13px}.contact-action p{font-size:13px;line-height:1.8}.footer{display:flex;justify-content:space-between;gap:24px;padding-block:28px;color:var(--muted);font-size:11px}.footer>a{text-decoration:none}.note-main{padding-block:40px 88px}.back{font-size:12px;color:var(--muted)}.note{max-width:780px;margin:60px auto 0}.note .eyebrow{color:var(--accent)}.byline{font-size:12px;color:var(--muted);margin-top:18px}.note h1{font-size:clamp(48px,6vw,80px);margin-top:28px}.note-lede{font-size:23px;line-height:1.6;color:var(--muted);max-width:640px;margin-top:28px}.note-body{max-width:640px;border-top:1px solid var(--line);margin-top:42px;padding-top:8px}.note-body>p{margin-top:26px}.note-body h2{font-size:31px;margin-top:48px}.note-body .button{margin-top:32px}.note-body .note-context{font-size:12px;color:var(--muted);border-top:1px solid var(--line);padding-top:24px;margin-top:40px}.note-context a{display:block;margin-top:8px}
@media(min-width:1600px){.hero{padding-block:100px 90px}}
@media(max-width:1050px){.wrap{width:calc(100% - 64px)}.hero{gap:30px}.hero h1{font-size:52px}.hero .eyebrow{max-width:280px}.hero-figure figcaption{flex-direction:column;gap:3px}.featured{grid-template-columns:.55fr 1.5fr;gap:28px}.featured .question{grid-column:2}.contact-grid{gap:48px}.masthead nav{gap:20px}.parent{padding-left:20px}}
@media(max-width:760px){.wrap{width:calc(100% - 40px)}.masthead{min-height:84px;gap:20px}.identity{font-size:15px;gap:10px}.identity-labs{padding-left:4px}.identity img{width:24px;height:24px}.masthead nav{gap:16px;font-size:12px}.masthead .parent{display:none}.hero{grid-template-columns:1fr;padding-block:48px 36px;gap:40px}.hero h1{font-size:clamp(43px,8.5vw,62px)}.hero .eyebrow{max-width:none;margin-bottom:24px;font-size:9px}.lede{font-size:20px;max-width:520px}.hero-detail{max-width:490px}.hero-figure{width:100%}.hero-figure figcaption{flex-direction:row;font-size:8px}.work{padding-block:48px 28px}.section-heading,.about{grid-template-columns:1fr;gap:24px}.section-heading{margin-bottom:36px}.section-heading p:not(.eyebrow){font-size:16px}.featured{grid-template-columns:1fr;gap:20px;padding-bottom:36px}.featured .project-meta{display:flex;margin-bottom:0}.featured .index{margin:0}.featured .question{grid-column:auto;margin-top:10px;padding-left:20px}.project-pair{grid-template-columns:1fr;gap:0}.project h3{font-size:32px}.project-meta{margin-bottom:22px}.project-pair .project{padding-bottom:32px}.question blockquote{font-size:23px}.work-foot{flex-direction:column;gap:8px}.about{padding-block:52px}.about p:not(.eyebrow):not(.signature){font-size:17px}.contact{padding-block:48px}.contact-grid{grid-template-columns:1fr;gap:32px}.contact p:not(.eyebrow){max-width:100%}.footer{flex-direction:column;gap:8px;padding-block:24px}.note-main{padding-block:28px 56px}.note{margin-top:40px}.note h1{font-size:clamp(45px,9vw,68px)}.note-lede{font-size:20px}.note-body{margin-top:32px}.note-body h2{font-size:28px}.note-body p{font-size:16px}}
@media(max-width:370px){.masthead{flex-wrap:wrap;gap:0;padding-block:14px}.masthead nav{width:100%;justify-content:space-between}.hero h1{font-size:41px}.hero-figure figcaption{font-size:7px}.button{gap:24px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media print{body{background:white;color:#222}.masthead,.footer,.button,.back{display:none}.wrap{width:100%}em,.byline,.note-lede,.note-context{color:inherit}.note{margin:0}.note-main{padding:0}a{color:inherit}.note-body{max-width:none}.note-body .note-context{color:inherit}}

/* Keep the real conference photograph uncropped at every viewport width. */
.note-photo { margin-top: 40px; }
.note-photo a { display: block; }
.note-photo img { width: 100%; height: auto; }
.note-photo figcaption { margin-top: 12px; color: var(--muted); font-size: 12px; line-height: 1.6; }
@media print { .note-photo figcaption { color: inherit; } }

/* The whole conference feature links to the note; no nested controls. */
.eccv-invitation { background: #dae6f2; color: #182e4a; }
.eccv-invitation__link { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 64px; padding-block: 40px; text-decoration: none; }
.eccv-invitation__copy { max-width: 800px; }
.eccv-invitation .eyebrow { color: #344d69; font-size: 11px; }
.eccv-invitation h2 { margin-top: 14px; font-size: clamp(36px, 4vw, 54px); }
.eccv-invitation__intro { max-width: 700px; margin-top: 18px; font-size: 17px; line-height: 1.6; }
.eccv-invitation__cta { display: inline-flex; align-items: center; gap: 28px; margin-top: 22px; border-bottom: 1px solid currentColor; padding-bottom: 4px; font-size: 15px; font-weight: 700; }
.eccv-invitation__link:hover .eccv-invitation__cta { border-bottom-width: 3px; padding-bottom: 2px; }
.eccv-invitation__link:focus-visible { outline-offset: -6px; }
@media (max-width: 1050px) {
  .eccv-invitation__link { grid-template-columns: 1fr auto; gap: 36px; }
}
@media (max-width: 760px) {
  .eccv-invitation__link { grid-template-columns: 1fr; gap: 28px; padding-block: 32px; }
  .eccv-invitation__intro { font-size: 16px; }
  .eccv-invitation .eyebrow { font-size: 9px; }
}

.eccv-invitation__cta { white-space: nowrap; align-self: center; margin-top: 0; }
@media (max-width: 760px) { .eccv-invitation__cta { justify-self: start; } }

/* Company homepage reuses the Labs identity and shared invitation. */
.company-hero { display: grid; grid-template-columns: 1.3fr 1fr; gap: 72px; padding-block: 92px 72px; align-items: center; }
.company-hero .eyebrow { color: var(--muted); margin-bottom: 28px; }
.company-hero h1 { font-size: clamp(48px, 5.4vw, 78px); }
.company-intro > p:first-child { font-size: 24px; line-height: 1.5; }
.company-intro > p + p { margin-top: 20px; color: var(--muted); }
.company-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 28px; margin-top: 30px; }
.company-actions .text-link { font-size: 14px; }
.company-location { display: flex; justify-content: space-between; gap: 24px; padding-block: 22px; border-top: 1px solid var(--line); color: var(--muted); font-family: var(--mono); font-size: 10px; }
.company-work { padding-block: 72px 48px; }
.company-path { display: grid; grid-template-columns: 1fr 2fr 32px; gap: 40px; padding-block: 40px; border-top: 1px solid #a9b4a6; text-decoration: none; }
.company-path > .eyebrow { padding-top: 7px; }
.company-path p:not(.eyebrow) { max-width: 640px; margin-top: 18px; color: #505e51; font-size: 17px; }
.company-path__cta { display: inline-block; margin-top: 24px; font-size: 13px; text-decoration: underline; text-underline-offset: 5px; }
.company-path__arrow { font-size: 32px; line-height: 1; }
.company-path:hover h3 { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 6px; }
.company-foundation { display: grid; grid-template-columns: 1fr 2.15fr; gap: 40px; border-top: 1px solid #a9b4a6; padding-top: 28px; color: #505e51; }
.company-foundation p:not(.eyebrow) { max-width: 650px; font-size: 15px; }
.company-practice { padding-block: 76px; }
.company-practice .section-heading { margin-bottom: 42px; }
.company-principles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
.company-principles article { border-top: 1px solid var(--line); padding-top: 24px; }
.company-principles .eyebrow { color: var(--muted); }
.company-principles h3 { font-size: 24px; margin-top: 18px; }
.company-principles p { margin-top: 16px; color: var(--muted); font-size: 15px; }
@media (max-width: 1050px) { .company-hero { gap: 40px; grid-template-columns: 1fr 1fr; } }
@media (max-width: 760px) {
  .company-hero { grid-template-columns: 1fr; gap: 32px; padding-block: 48px; }
  .company-hero h1 { font-size: clamp(44px, 8.5vw, 62px); }
  .company-intro > p:first-child { font-size: 21px; }
  .company-location { flex-direction: column; gap: 8px; }
  .company-work { padding-block: 48px 36px; }
  .company-path { grid-template-columns: 1fr; gap: 20px; padding-block: 30px; }
  .company-path h3 { font-size: 30px; }
  .company-path__arrow { display: none; }
  .company-foundation { grid-template-columns: 1fr; gap: 16px; }
  .company-practice { padding-block: 48px; }
  .company-principles { grid-template-columns: 1fr; gap: 28px; }
}

/* Applications catalogue: Labs identity around the MOJIN collection band. */
.masthead nav a[aria-current="page"] { text-decoration: underline; text-underline-offset: 8px; }
.apps-hero { display: grid; grid-template-columns: 1.3fr 1fr; gap: 72px; padding-block: 88px 64px; align-items: end; }
.apps-hero .eyebrow { color: var(--muted); margin-bottom: 28px; }
.apps-hero h1 { font-size: clamp(48px, 5.4vw, 78px); }
.apps-intro > p:first-child { font-size: 24px; line-height: 1.5; }
.apps-intro > p + p { margin-top: 16px; color: var(--muted); }
.apps-page .mj-wrap { width: min(1240px, calc(100% - 96px)); max-width: none; }
.apps-more { padding-block: 76px 40px; }
.apps-more .section-heading { margin-bottom: 40px; }
.app-row { display: grid; grid-template-columns: 1fr 2fr 32px; gap: 40px; padding-block: 36px; border-top: 1px solid var(--line); text-decoration: none; }
.app-row__meta { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; padding-top: 4px; }
.app-row__meta img { width: 62px; height: 62px; border-radius: 14px; }
.app-row .status { color: var(--muted); border-color: var(--line); }
.app-row .status--live { color: var(--accent); border-color: currentColor; }
.app-row .eyebrow { color: var(--muted); }
.app-row h3 { margin-top: 12px; }
.app-row p:not(.eyebrow) { max-width: 640px; margin-top: 16px; color: var(--muted); font-size: 17px; }
.app-row__cta { display: inline-block; margin-top: 22px; font-size: 13px; text-decoration: underline; text-underline-offset: 5px; }
.app-row__arrow { font-size: 32px; line-height: 1; }
.app-row:hover h3 { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 6px; }
@media (max-width: 1050px) { .apps-hero { gap: 40px; grid-template-columns: 1fr 1fr; } .apps-page .mj-wrap { width: calc(100% - 64px); } }
@media (max-width: 760px) {
  .apps-hero { grid-template-columns: 1fr; gap: 28px; padding-block: 48px; }
  .apps-hero h1 { font-size: clamp(44px, 8.5vw, 62px); }
  .apps-intro > p:first-child { font-size: 21px; }
  .apps-page .mj-wrap { width: calc(100% - 40px); }
  .apps-more { padding-block: 48px 24px; }
  .app-row { grid-template-columns: 1fr; gap: 18px; padding-block: 30px; }
  .app-row__meta { flex-direction: row; align-items: center; }
  .app-row h3 { font-size: 30px; }
  .app-row__arrow { display: none; }
}
