/* The Tofu Media Group Studio — v3.15: operator portfolio, calmer editorial design & micro-motion.
   Kept separate from the legacy stylesheet so future updates remain maintainable. */
:root {
  --studio-accent:#3154c7;
  --studio-accent-dark:#243e98;
  --studio-tint:#eaf0ff;
  --studio-ink:#1b2b28;
  --studio-quiet:#5a6662;
  --studio-cream:#fbf8f2;
  --studio-white:#fffefa;
  --studio-line:rgba(27,43,40,.13);
  --studio-shadow:0 16px 45px rgba(34,42,37,.065);
  --studio-radius:18px;
}
body.ttg-v314-accent-green {--studio-accent:#225c4d;--studio-accent-dark:#174339;--studio-tint:#e7f2ed}
body.ttg-v314-accent-rust {--studio-accent:#aa4031;--studio-accent-dark:#863023;--studio-tint:#f9ece5}
html {scroll-padding-top:90px}
body {color:var(--studio-ink)}
:where(a,button,input,select,textarea,summary):focus-visible {outline:3px solid var(--studio-accent);outline-offset:4px}
:where(.ttg-v31-home,.ttg-v31-index-page,.ttg-v31-detail-page,.ttg-book35) a {text-underline-offset:4px}
.ttg-v31-nav {background:rgba(255,254,250,.96);border-bottom:1px solid var(--studio-line);box-shadow:none;transition:background-color .24s ease,box-shadow .24s ease}
.ttg-v31-nav.ttg-nav-scrolled {background:rgba(255,254,250,.985);box-shadow:0 10px 26px rgba(24,41,35,.07)}
.ttg-v31-nav-inner {min-height:76px;gap:20px}
.ttg-v31-brand {font-size:clamp(19px,1.8vw,24px);letter-spacing:-.055em;color:var(--studio-ink)}
.ttg-v31-brand i {width:9px;height:9px;background:#de8069;border-radius:3px;transform:rotate(26deg)}
.ttg-v31-brand-meta {font-size:10px;letter-spacing:.085em}
.ttg-v31-menu .ttg-menu-list {gap:clamp(10px,1.3vw,22px);font-size:11px;letter-spacing:.025em;text-transform:none}
.ttg-v31-menu .ttg-menu-item a {font-weight:700;color:var(--studio-ink)}
.ttg-v31-menu .ttg-menu-item a:hover {color:var(--studio-accent)}
.ttg-v31-header-contact {background:var(--studio-accent);color:#fff;border:0;border-radius:100px;padding:13px 19px;font-size:12px;box-shadow:0 8px 20px rgba(38,67,158,.14);transition:background-color .2s ease,translate .2s ease,box-shadow .2s ease}
.ttg-v31-header-contact span {color:#fff;margin-left:10px}
.ttg-v31-header-contact:hover {color:#fff;background:var(--studio-accent-dark);translate:0 -2px;box-shadow:0 12px 25px rgba(38,67,158,.18)}

/* The homepage opens as a typographic composition, not a split-screen ad. */
.ttg-v31-hero {background:radial-gradient(circle at 82% 25%,rgba(231,224,208,.4),transparent 37%),linear-gradient(145deg,#fffefa,#f8f4eb);overflow:hidden}
.ttg-v31-hero:before {opacity:.42;mask-image:linear-gradient(to bottom,#000,transparent 85%)}
.ttg-v31-hero:after {content:"";position:absolute;right:-170px;top:55px;width:450px;height:450px;border:1px solid rgba(49,84,199,.12);border-radius:50%;pointer-events:none}
.ttg-v31-hero-meta {position:relative;z-index:1;border-bottom:1px solid var(--studio-line);color:#5b6962;font-size:11px;letter-spacing:.065em}
.ttg-v31-hero-main {grid-template-columns:minmax(0,1.4fr) minmax(308px,.6fr);gap:clamp(34px,4.5vw,74px);min-height:600px;padding-top:78px;padding-bottom:100px;position:relative}
.ttg-v31-hero-title-wrap {position:relative;align-self:center;z-index:1}
.ttg-v31-hero-title-wrap h1 {font-size:clamp(60px,6.9vw,108px);line-height:.99;letter-spacing:-.07em;font-weight:800;max-width:850px;text-wrap:balance}
.ttg-v31-hero-title-wrap em {color:var(--studio-accent);font-style:normal;position:relative;white-space:nowrap}
.ttg-v31-hero-title-wrap em:after {content:"";position:absolute;left:2%;right:2%;bottom:-.07em;height:.075em;border-radius:10px;background:currentColor;opacity:.24}
.ttg-v314-hero-glyph {position:absolute;top:9%;right:30%;font-size:clamp(38px,5vw,72px);font-weight:400;line-height:1;color:#e6a98a;opacity:.66;pointer-events:none;transform:rotate(-12deg)}
.ttg-v314-scroll-cue {display:inline-flex;align-items:center;gap:11px;margin-top:36px;color:#4e5b56;text-decoration:none;font-size:12px;font-weight:750;letter-spacing:.01em}
.ttg-v314-scroll-cue span {display:grid;place-items:center;width:31px;height:31px;border:1px solid var(--studio-line);border-radius:50%;color:var(--studio-accent);font-size:16px;transition:translate .25s ease,background-color .25s ease}
.ttg-v314-scroll-cue:hover span {background:var(--studio-tint);translate:0 4px}
.ttg-v31-hero-side {background:rgba(255,255,255,.91);border:1px solid var(--studio-line);border-radius:var(--studio-radius);padding:35px 32px;box-shadow:var(--studio-shadow);transform:none;align-self:center;position:relative;z-index:1}
.ttg-v31-hero-side:before {content:"";display:block;width:54px;height:4px;background:#dd856e;border-radius:12px}
.ttg-v31-hero-side>p:first-child {font-size:clamp(22px,2.2vw,27px);line-height:1.26;letter-spacing:-.042em;margin:24px 0 19px}
.ttg-v31-hero-note {color:var(--studio-quiet);font-size:13px;line-height:1.7;margin-bottom:22px}
.ttg-v31-hero-actions {gap:16px 26px}
.ttg-v31-arrow-link {font-size:13px;transition:color .2s ease}
.ttg-v31-arrow-link span {color:var(--studio-accent);display:inline-block;transition:translate .2s ease}
.ttg-v31-arrow-link:hover {color:var(--studio-accent)}
.ttg-v31-arrow-link:hover span {translate:3px -3px}
.ttg-v31-service-rail {z-index:2;margin-top:-35px}
.ttg-v31-service-rail>.ttg-container {transform:none;border:1px solid var(--studio-line);border-radius:15px;background:#fff;box-shadow:var(--studio-shadow);overflow:hidden}
.ttg-v31-service-rail a,.ttg-v31-service-rail a+a {padding:29px 19px;min-height:114px;transition:background-color .2s ease,color .2s ease;position:relative}
.ttg-v31-service-rail a:first-child {padding-left:22px}
.ttg-v31-service-rail a:hover,.ttg-v31-service-rail a+a:hover {padding-left:19px;background:var(--studio-tint);color:var(--studio-accent-dark)}
.ttg-v31-service-rail a:first-child:hover {padding-left:22px}
.ttg-v31-service-rail a:before {content:"";position:absolute;left:0;top:0;width:100%;height:3px;background:var(--studio-accent);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
.ttg-v31-service-rail a:hover:before,.ttg-v31-service-rail a:focus-visible:before {transform:scaleX(1)}
.ttg-v31-service-rail strong {font-size:clamp(20px,2vw,25px);letter-spacing:-.035em}
.ttg-v31-service-rail small {font-size:11px;line-height:1.5;letter-spacing:0;text-transform:none;color:var(--studio-quiet)}
.ttg-v31-service-rail span {font-size:11px;color:var(--studio-accent)}

/* Sharper information hierarchy, with significantly fewer loud boxes. */
.ttg-v31-kicker,.ttg-v31-section-label {color:#586862;font-size:11px;letter-spacing:.095em}
.ttg-v31-section-label {border-top-color:var(--studio-line)}
.ttg-v31-display-heading {font-size:clamp(42px,5.2vw,76px);letter-spacing:-.055em;line-height:1.06}
.ttg-v31-proof {background:var(--studio-cream);padding:118px 0 120px}
.ttg-v31-proof .ttg-v31-display-heading {margin:30px 0 50px;max-width:850px}
.ttg-v31-project-list {gap:20px;border:0}
.ttg-v31-project,.ttg-v31-project.is-dark {border:1px solid var(--studio-line)!important;border-radius:var(--studio-radius);padding:clamp(27px,3.4vw,48px)!important;margin:0!important;transform:none;background:#fff!important;color:var(--studio-ink)!important;grid-template-columns:110px minmax(0,1.05fr) minmax(215px,.7fr);column-gap:clamp(18px,3vw,45px);row-gap:32px;box-shadow:var(--studio-shadow);transition:translate .28s ease,box-shadow .28s ease}
.ttg-v31-project.is-dark {background:#1b403b!important;color:#fff!important;border-color:#1b403b!important}
.ttg-v31-project-index {font-size:11px;color:var(--studio-quiet)}
.ttg-v31-project-copy h3 {font-size:clamp(32px,3.2vw,48px);line-height:1.12;letter-spacing:-.05em;margin-bottom:16px}
.ttg-v31-project-copy p {font-size:14px;line-height:1.73}
.ttg-v31-project-copy a {font-size:13px;display:inline-block}
.ttg-v31-project-stat strong {font-size:clamp(59px,6.1vw,95px);line-height:1;letter-spacing:-.06em;color:var(--studio-accent);overflow-wrap:anywhere}
.ttg-v31-project.is-dark .ttg-v31-project-stat strong {color:#e8d39d}
.ttg-v31-project-stat span {font-size:11px;line-height:1.5;letter-spacing:.045em;color:#52635d}
.ttg-v31-project-foot {font-size:11px;line-height:1.55;letter-spacing:.035em;gap:15px 30px}
.ttg-v312-source-note {font-size:12px;opacity:.88}
.ttg-v312-stat-support {font-size:13px;line-height:1.6}
.ttg-v31-footnote {font-size:12px;line-height:1.7}
.ttg-v31-project.is-dark .ttg-v31-project-index,.ttg-v31-project.is-dark .ttg-v31-project-stat span,.ttg-v31-project.is-dark .ttg-v31-project-foot {color:#d4e4dc}
.ttg-v31-project.is-dark .ttg-v31-project-copy p {color:#e3ede8}
.ttg-v31-project.is-dark .ttg-v312-stat-support {color:#e3ede8}
.ttg-v31-project.is-stat-only {grid-template-columns:110px minmax(0,1fr)}
.ttg-v31-project.is-stat-only .ttg-v31-project-stat {grid-column:2}
.ttg-v31-project.is-stat-only .ttg-v31-project-foot {grid-column:2}
.ttg-v31-method {background:#eaf2ed;border:0;padding:112px 0}
.ttg-v31-method-layout {gap:clamp(44px,7vw,100px)}
.ttg-v31-method-statement h2 {font-size:clamp(43px,5.3vw,72px);line-height:1.04}
.ttg-v31-method-list {border-top-color:var(--studio-line)}
.ttg-v31-method-list li {gap:16px;padding:29px 12px 29px 0;transition:background-color .23s ease,padding-left .23s ease}
.ttg-v31-method-list li>span {color:var(--studio-accent);font-size:12px;font-weight:800;padding-top:3px}
.ttg-v31-method-list h3 {font-size:clamp(29px,3vw,37px)}
.ttg-v31-method-list p {font-size:14px;line-height:1.65;color:#4a6256}
.ttg-v31-services {background:var(--studio-white);padding:108px 0 120px}
.ttg-v31-services-head {margin:34px 0 54px}
.ttg-v31-service-index {border:0;box-shadow:none;background:transparent;padding:0}
.ttg-v31-service-index>a {border-bottom:1px solid var(--studio-line);padding:29px 12px;transition:background-color .24s ease,color .24s ease,translate .24s ease}
.ttg-v31-service-index>a:first-child {border-top:1px solid var(--studio-line)}
.ttg-v31-service-index>a:hover {background:var(--studio-tint);color:var(--studio-accent-dark);padding-left:12px;padding-right:12px}
.ttg-v31-service-index span,.ttg-v31-service-index b {font-size:12px;color:var(--studio-accent)}
.ttg-v31-service-index b {display:inline-block;transition:translate .23s ease}
.ttg-v31-service-index>a:hover b {translate:4px -4px}
.ttg-v31-service-index h3 {font-size:clamp(27px,3vw,37px)}
.ttg-v31-service-index p {font-size:13px;line-height:1.6}
.ttg-v31-publisher {background:#183e39;color:white;padding:120px 0}
.ttg-v31-publisher-word {color:rgba(255,255,255,.055)}
.ttg-v31-publisher-nav {border-radius:var(--studio-radius);overflow:hidden;background:rgba(255,255,255,.07);box-shadow:none}
.ttg-v31-publisher-nav a {transition:background-color .22s ease}
.ttg-v31-publisher-nav a:hover {background:rgba(255,255,255,.12)}
.ttg-v31-publisher-copy h2 {font-size:clamp(45px,6vw,86px);line-height:1.04}
.ttg-v31-utility {background:#f5f7f4;padding:100px 0}
.ttg-v31-utility-grid {gap:22px;align-items:stretch}
.ttg-v31-tools-panel,.ttg-v31-diagnostic-panel {background:#fff;border:1px solid var(--studio-line);border-radius:var(--studio-radius);box-shadow:var(--studio-shadow);padding:clamp(25px,3vw,43px);transform:none}
.ttg-v31-diagnostic-panel {background:#edf2fc}
.ttg-v31-tools-panel>h2,.ttg-v31-diagnostic-panel>h2 {font-size:clamp(37px,4.5vw,59px)}
.ttg-v31-tool-list a {transition:background-color .2s ease}
.ttg-v31-tool-list a:hover {background:var(--studio-tint)}
.ttg-v31-diagnostic-panel input {accent-color:var(--studio-accent)}
.ttg-v31-diagnostic-button {color:var(--studio-accent-dark);border-bottom-color:var(--studio-accent)}
.ttg-v31-singapore {background:#173e38;color:#fff;padding:110px 0}
.ttg-v31-singapore-copy h2 {font-size:clamp(43px,5vw,76px);line-height:1.06}
.ttg-v35-book-home {background:#faf0e9;padding:105px 0}
.ttg-v35-book-home-grid {gap:clamp(34px,6vw,80px)}
.ttg-v35-book-home-copy h2 {font-size:clamp(42px,5vw,76px);line-height:1.04}
.ttg-v35-book-home-subtitle {color:var(--studio-accent-dark)}
.ttg-v35-book-home-art {border-radius:10px;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s ease;transform:rotate(1deg);overflow:visible}
.ttg-v35-book-home-art:before {background:var(--studio-accent)}
.ttg-v31-insights {background:var(--studio-white);padding:105px 0}
.ttg-v31-insight-list article {transition:background-color .2s ease}
.ttg-v31-insight-list article:hover {background:rgba(230,238,255,.55)}
.ttg-v31-insight-num,.ttg-v31-insight-arrow {color:var(--studio-accent)}
.ttg-v31-close {background:linear-gradient(125deg,#273f9a,#345bd1);color:white;padding:110px 0}
.ttg-v31-close h2 {font-size:clamp(60px,8vw,108px)}
.ttg-v31-close-link {transition:translate .2s ease}
.ttg-v31-close-link:hover {translate:4px 0}
.ttg-v31-footer {background:#142a28}
.ttg-v31-footer-wordmark {font-size:clamp(50px,9vw,128px);line-height:.95;letter-spacing:-.06em}
.ttg-v31-footer-grid a {font-size:13px;line-height:1.5}
.ttg-v31-footer-topline,.ttg-v31-footer-grid>div>span,.ttg-v31-footer-bottom {font-size:11px}

/* A consistent visual language on secondary pages and sign-up flows. */
.ttg-v31-index-hero,.ttg-v31-detail-hero {background:linear-gradient(145deg,#fffefa,#f7f2e8)}
.ttg-v31-index-hero h1,.ttg-v31-detail-hero h1 {font-size:clamp(45px,6vw,82px);line-height:1.05;letter-spacing:-.055em}
.ttg-v31-index-row,.ttg-v31-tool-row {transition:background-color .2s ease}
.ttg-v31-index-row:hover,.ttg-v31-tool-row:hover {background:var(--studio-tint)}
.ttg-v31-index-arrow {color:var(--studio-accent)}
.ttg-v31-index-close {background:var(--studio-accent)}
.ttg-v312-review-proof {background:var(--studio-cream)}
.ttg-v312-review-count {border-top-color:var(--studio-accent)}
.ttg-v312-review-count strong {color:var(--studio-accent)}
.ttg-gr34-hero {background:linear-gradient(135deg,#fffefa,#f4f0e7)}
.ttg-gr34-next,.ttg-gr34-submit {transition:background-color .2s ease,translate .2s ease}
.ttg-gr34-next:hover,.ttg-gr34-submit:hover {translate:0 -2px}
.ttg-gr34-step:focus-within {outline-color:var(--studio-accent)}
.ttg-book35-hero {background:linear-gradient(135deg,#fffefa,#f8f1e8)}
.ttg-book35-hero:after {border-color:rgba(49,84,199,.07)}
.ttg-book35-subtitle,.ttg-book35-kicker {color:var(--studio-accent-dark)}
.ttg-book35-primary,.ttg-emma-interest-form button {background:var(--studio-accent);transition:background-color .2s ease,translate .2s ease}
.ttg-book35-primary:hover,.ttg-emma-interest-form button:hover {background:var(--studio-accent-dark);translate:0 -2px}
.ttg-book35-cover,.ttg-book35-spread-card {transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.ttg-book35-order-interest {background:#24458f}
.ttg-book-interest-panel {border-radius:var(--studio-radius)}
.ttg-book35-place-list>div,.ttg-book35-character-list article {transition:background-color .2s ease}
.ttg-book35-place-list>div:hover,.ttg-book35-character-list article:hover {background:rgba(239,244,250,.62)}

/* No-JS content is always fully visible. The reveal class is only added if IntersectionObserver is available. */
@media (prefers-reduced-motion:no-preference) {
  body.ttg-motion-on .ttg-reveal {opacity:0;translate:0 19px;transition:opacity .62s cubic-bezier(.2,.7,.2,1),translate .62s cubic-bezier(.2,.7,.2,1);transition-delay:var(--ttg-reveal-delay,0ms);will-change:opacity,translate}
  body.ttg-motion-on .ttg-reveal.is-visible {opacity:1;translate:0 0;will-change:auto}
  body.ttg-motion-on .ttg-v314-hero-glyph {animation:ttg-v314-glyph 15s ease-in-out infinite alternate}
  body.ttg-motion-on .ttg-v31-hero-title-wrap h1 {animation:ttg-v314-hero-in .68s ease-out both}
  @keyframes ttg-v314-glyph {from {transform:rotate(-12deg) translateY(0)}to {transform:rotate(19deg) translateY(-14px)}}
  @keyframes ttg-v314-hero-in {from {opacity:.15;translate:0 14px}to {opacity:1;translate:0 0}}
}
@media (hover:hover) and (prefers-reduced-motion:no-preference) {
  body.ttg-motion-on .ttg-v31-project:hover {translate:0 -4px;box-shadow:0 24px 55px rgba(34,42,37,.11)}
  body.ttg-motion-on .ttg-v35-book-home-art:hover {transform:rotate(0deg) translateY(-6px);box-shadow:0 26px 64px rgba(25,43,37,.14)}
  body.ttg-motion-on .ttg-book35-visual:hover .ttg-book35-cover {transform:rotate(-.8deg) translateY(-6px)}
}
/* Motion-off also disables unnecessary hover movement (not hover affordances). */
body.ttg-motion-off .ttg-v31-header-contact:hover,
body.ttg-motion-off .ttg-v31-close-link:hover,
body.ttg-motion-off .ttg-v31-arrow-link:hover span,
body.ttg-motion-off .ttg-v314-scroll-cue:hover span,
body.ttg-motion-off .ttg-v31-service-index>a:hover b,
body.ttg-motion-off .ttg-book35-primary:hover,
body.ttg-motion-off .ttg-gr34-next:hover,
body.ttg-motion-off .ttg-gr34-submit:hover {translate:0 0}

@media (max-width:1180px) {
  .ttg-v31-hero-main {grid-template-columns:1fr;gap:32px;min-height:0;padding-top:70px;padding-bottom:72px}
  .ttg-v31-hero-title-wrap h1 {font-size:clamp(64px,9vw,104px);max-width:1000px}
  .ttg-v31-hero-side {max-width:780px}
  .ttg-v314-hero-glyph {right:10%;top:6%}
}
@media (max-width:980px) {
  .ttg-v31-menu {border:1px solid var(--studio-line);border-radius:14px;box-shadow:0 18px 45px rgba(24,42,35,.12);background:var(--studio-white);overflow:auto;max-height:calc(100dvh - 110px)}
  body.ttg-menu-open .ttg-v31-menu {display:block}
  .ttg-v31-menu .ttg-menu-list {font-size:14px}
  .ttg-v31-menu .ttg-menu-item a {padding:15px 11px!important;min-height:45px}
  .ttg-v31-project,.ttg-v31-project.is-dark {grid-template-columns:90px minmax(0,1fr)}
  .ttg-v31-project-stat,.ttg-v31-project-foot {grid-column:2;text-align:left;justify-content:flex-start}
  .ttg-v31-project.is-stat-only {grid-template-columns:90px minmax(0,1fr)}
  .ttg-v31-service-rail>.ttg-container {transform:none}
  .ttg-v31-diagnostic-panel {transform:none}
}
@media (max-width:760px) {
  html {scroll-padding-top:72px}
  .ttg-v31-nav-inner {min-height:66px}
  .ttg-v31-brand {font-size:clamp(17px,5vw,22px);white-space:normal;line-height:1.15}
  .ttg-v31-hero {background:linear-gradient(165deg,#fffefa,#f8f3e9)!important}
  .ttg-v31-hero-meta {font-size:10px;gap:10px}
  .ttg-v31-hero-main {padding:55px 0 69px;gap:34px}
  .ttg-v31-hero-title-wrap h1 {font-size:clamp(50px,12vw,76px);line-height:1.02;letter-spacing:-.065em;max-width:700px}
  .ttg-v314-hero-glyph {top:5%;right:5%;font-size:36px;opacity:.34}
  .ttg-v314-scroll-cue {margin-top:24px}
  .ttg-v31-hero-side {max-width:none;padding:28px 24px;box-shadow:0 12px 32px rgba(25,43,38,.07)}
  .ttg-v31-hero-side>p:first-child {font-size:22px}
  .ttg-v31-service-rail {margin-top:-23px}
  .ttg-v31-service-rail>.ttg-container {border-radius:13px}
  .ttg-v31-service-rail a,.ttg-v31-service-rail a+a {padding:18px 13px;min-height:102px}
  .ttg-v31-service-rail a:nth-child(even) {padding-left:13px}
  .ttg-v31-service-rail a:hover,.ttg-v31-service-rail a+a:hover {padding-left:13px}
  .ttg-v31-service-rail a:first-child:hover {padding-left:13px}
  .ttg-v31-service-rail strong {font-size:19px}
  .ttg-v31-service-rail small {font-size:10px}
  .ttg-v31-proof,.ttg-v31-services,.ttg-v31-insights {padding:78px 0 88px}
  .ttg-v31-proof .ttg-v31-display-heading {margin:26px 0 34px}
  .ttg-v31-display-heading {font-size:clamp(40px,9vw,58px);line-height:1.08}
  .ttg-v31-project,.ttg-v31-project.is-dark {grid-template-columns:1fr;padding:28px 23px!important;gap:19px;row-gap:19px}
  .ttg-v31-project-stat,.ttg-v31-project-foot,.ttg-v31-project.is-stat-only .ttg-v31-project-stat,.ttg-v31-project.is-stat-only .ttg-v31-project-foot {grid-column:1}
  .ttg-v31-project.is-stat-only {grid-template-columns:1fr}
  .ttg-v31-project-copy h3 {font-size:clamp(31px,8.5vw,39px)}
  .ttg-v31-project-stat strong {font-size:clamp(56px,13vw,76px)}
  .ttg-v31-method {padding:75px 0}
  .ttg-v31-method-statement h2,.ttg-v31-publisher-copy h2,.ttg-v31-singapore-copy h2 {font-size:clamp(40px,9vw,56px);line-height:1.09}
  .ttg-v31-method-list li {grid-template-columns:40px 1fr;padding:26px 0}
  .ttg-v31-method-list p {font-size:14px}
  .ttg-v31-services-head {margin:26px 0 37px}
  .ttg-v31-service-index {padding:0}
  .ttg-v31-service-index>a {padding:23px 8px}
  .ttg-v31-service-index>a:hover {padding-left:8px;padding-right:8px}
  .ttg-v31-publisher {padding:82px 0}
  .ttg-v31-utility {padding:70px 0}
  .ttg-v31-tools-panel,.ttg-v31-diagnostic-panel {border:1px solid var(--studio-line);border-radius:15px;padding:27px 22px;box-shadow:var(--studio-shadow)}
  .ttg-v31-tools-panel>h2,.ttg-v31-diagnostic-panel>h2 {font-size:clamp(38px,10vw,52px)}
  .ttg-v31-singapore {padding:80px 0}
  .ttg-v35-book-home {padding:78px 0}
  .ttg-v35-book-home-copy h2 {font-size:clamp(40px,9vw,58px)}
  .ttg-v31-close {padding:83px 0}
  .ttg-v31-close h2 {font-size:clamp(56px,14vw,86px)}
  .ttg-v31-footer-wordmark {font-size:clamp(46px,11vw,78px)}
  .ttg-v31-index-hero h1,.ttg-v31-detail-hero h1 {font-size:clamp(44px,10vw,64px)}
  .ttg-book35-hero {padding:65px 0 75px}
  .ttg-book35-hero h1 {font-size:clamp(48px,12vw,74px)}
  .ttg-gr34-hero {background:#fffefa}
}
@media (max-width:420px) {
  .ttg-v31-hero-title-wrap h1 {font-size:clamp(42px,11.2vw,53px)}
  .ttg-v31-hero-side {padding:23px 20px}
  .ttg-v31-service-rail a,.ttg-v31-service-rail a+a {grid-template-columns:24px 1fr;padding:16px 10px}
  .ttg-v31-service-rail strong {font-size:18px}
  .ttg-v31-service-rail small {font-size:10px}
  .ttg-v31-footer-wordmark {font-size:clamp(41px,10vw,55px)}
}
@media (prefers-reduced-motion:reduce) {
  html {scroll-behavior:auto}
  .ttg-reveal,.ttg-reveal.is-visible {opacity:1!important;translate:none!important}
  .ttg-v314-hero-glyph {animation:none!important}
  .ttg-v31-header-contact,.ttg-v31-project,.ttg-v35-book-home-art,.ttg-v31-arrow-link span,.ttg-book35-primary {transition:none!important}
}

/* ======================================================================
   v3.15 — operator portfolio as homepage proof
   ====================================================================== */
.ttg-v315-portfolio {background:var(--studio-white);padding:145px 0 118px;border-bottom:1px solid var(--studio-line)}
.ttg-v315-portfolio .ttg-v31-section-label {margin-bottom:34px}
.ttg-v315-portfolio-intro {display:grid;grid-template-columns:minmax(0,1.03fr) minmax(320px,.72fr);gap:clamp(44px,7vw,105px);align-items:start}
.ttg-v315-portfolio-intro .ttg-v31-display-heading {margin:0;max-width:820px;font-size:clamp(48px,5.8vw,82px)}
.ttg-v315-portfolio-copy {padding-top:8px;max-width:660px}
.ttg-v315-portfolio-copy>p {font-size:15px;line-height:1.78;color:#475b54;margin:0 0 18px}
.ttg-v315-portfolio-copy>p:first-child {font-size:clamp(19px,1.8vw,24px);line-height:1.5;letter-spacing:-.025em;color:var(--studio-ink)}
.ttg-v315-rotator-line {margin-top:28px!important;padding-top:21px;border-top:1px solid var(--studio-line);font-size:13px!important;font-weight:700;color:#61706a!important}
.ttg-v315-rotator-line strong {display:inline-block;color:var(--studio-accent);font-size:clamp(17px,1.6vw,21px);letter-spacing:-.025em;min-width:9ch;transition:opacity .18s ease,translate .18s ease}
.ttg-v315-rotator-line strong.is-changing {opacity:0;translate:0 5px}

.ttg-v315-metrics {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:66px;border-top:1px solid var(--studio-line);border-bottom:1px solid var(--studio-line)}
.ttg-v315-metric {padding:27px clamp(18px,2.2vw,31px) 29px;min-width:0;position:relative}
.ttg-v315-metric:first-child {padding-left:0}
.ttg-v315-metric+.ttg-v315-metric {border-left:1px solid var(--studio-line)}
.ttg-v315-metric strong {display:block;font-size:clamp(42px,4.7vw,68px);letter-spacing:-.065em;line-height:1;color:var(--studio-accent);font-weight:820;overflow-wrap:anywhere}
.ttg-v315-metric span {display:block;margin-top:10px;font-size:11px;line-height:1.45;font-weight:800;letter-spacing:.055em;text-transform:uppercase;color:#41524c}
.ttg-v315-metric p {margin:9px 0 0;font-size:12px;line-height:1.58;color:#6a7772;max-width:250px}

.ttg-v315-portfolio-head {display:flex;justify-content:space-between;gap:25px;align-items:baseline;margin-top:66px;margin-bottom:17px;padding-top:14px;border-top:1px solid var(--studio-line);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:#697670;font-weight:800}
.ttg-v315-property-grid {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.ttg-v315-property {display:flex;flex-direction:column;min-height:264px;padding:23px 22px 20px;border:1px solid var(--studio-line);border-radius:15px;background:#fff;color:var(--studio-ink);text-decoration:none;box-shadow:0 8px 24px rgba(34,42,37,.035);transition:translate .23s ease,box-shadow .23s ease,border-color .23s ease,background-color .23s ease}
.ttg-v315-property:nth-child(3n+2) {background:#fbfcff}
.ttg-v315-property:nth-child(3n+3) {background:#fbf7f1}
.ttg-v315-property-top {display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:29px}
.ttg-v315-badge {display:inline-flex;align-items:center;min-height:25px;padding:5px 9px;border-radius:999px;background:#edf2ef;color:#355548;font-size:9px;line-height:1.2;font-weight:850;letter-spacing:.075em;text-transform:uppercase}
.ttg-v315-property:nth-child(4n+2) .ttg-v315-badge {background:var(--studio-tint);color:var(--studio-accent-dark)}
.ttg-v315-property:nth-child(4n+3) .ttg-v315-badge {background:#f6e9e3;color:#914433}
.ttg-v315-property-index {font-size:10px;color:#909994;font-weight:700}
.ttg-v315-property h3 {font-size:clamp(23px,2vw,29px);line-height:1.08;letter-spacing:-.047em;margin:0 0 13px}
.ttg-v315-property p {font-size:12px;line-height:1.65;color:#65716d;margin:0 0 24px}
.ttg-v315-property-foot {display:flex;justify-content:space-between;gap:12px;align-items:flex-end;margin-top:auto;padding-top:15px;border-top:1px solid var(--studio-line);font-size:10px;line-height:1.35;color:#66746f;font-weight:750;text-transform:uppercase;letter-spacing:.055em}
.ttg-v315-property-foot b {font-size:17px;line-height:1;color:var(--studio-accent);font-weight:500;transition:translate .2s ease}
.ttg-v315-portfolio-bottom {display:grid;grid-template-columns:minmax(0,1fr) auto;gap:30px;align-items:start;margin-top:27px}
.ttg-v315-portfolio-bottom>p {margin:0;max-width:760px;font-size:11px;line-height:1.65;color:#737c78}
.ttg-v315-portfolio-bottom .ttg-v31-arrow-link {white-space:nowrap}

/* Selected case studies now support the portfolio story rather than carrying it alone. */
.ttg-v31-proof {padding-top:104px}
.ttg-v31-proof .ttg-v31-display-heading {max-width:760px;margin-bottom:38px}
.ttg-v31-project-list {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:18px}
.ttg-v31-project,.ttg-v31-project.is-dark {display:grid;grid-template-columns:1fr!important;grid-template-rows:auto auto auto 1fr;border-radius:16px;padding:31px 29px!important;gap:19px!important;row-gap:19px!important;min-width:0}
.ttg-v31-project-index {grid-column:1!important;font-weight:800;text-transform:uppercase;letter-spacing:.07em}
.ttg-v31-project-copy {grid-column:1!important}
.ttg-v31-project-copy h3 {font-size:clamp(28px,2.9vw,39px);line-height:1.11;margin-bottom:13px}
.ttg-v31-project-copy p {font-size:13px;line-height:1.7}
.ttg-v31-project-stat,.ttg-v31-project.is-stat-only .ttg-v31-project-stat {grid-column:1!important;text-align:left!important;border-top:1px solid var(--studio-line);padding-top:18px;margin-top:3px}
.ttg-v31-project.is-dark .ttg-v31-project-stat {border-top-color:rgba(255,255,255,.2)}
.ttg-v31-project-stat strong {font-size:clamp(48px,5.2vw,68px)}
.ttg-v31-project-foot,.ttg-v31-project.is-stat-only .ttg-v31-project-foot {grid-column:1!important;justify-content:flex-start!important;align-self:end}
.ttg-v31-project.is-stat-only {grid-template-columns:1fr!important}

@media (hover:hover) and (prefers-reduced-motion:no-preference) {
  body.ttg-motion-on .ttg-v315-property:hover {translate:0 -5px;box-shadow:0 18px 38px rgba(34,42,37,.09);border-color:rgba(49,84,199,.24)}
  body.ttg-motion-on .ttg-v315-property:hover .ttg-v315-property-foot b {translate:3px -3px}
}

@media (max-width:1100px) {
  .ttg-v315-metrics {grid-template-columns:repeat(2,minmax(0,1fr))}
  .ttg-v315-metric:nth-child(3) {border-left:0;border-top:1px solid var(--studio-line);padding-left:0}
  .ttg-v315-metric:nth-child(4) {border-top:1px solid var(--studio-line)}
  .ttg-v315-property-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:900px) {
  .ttg-v315-portfolio {padding-top:120px}
  .ttg-v315-portfolio-intro {grid-template-columns:1fr;gap:28px}
  .ttg-v315-portfolio-copy {max-width:760px;padding-top:0}
  .ttg-v31-project-list {grid-template-columns:1fr}
}
@media (max-width:620px) {
  .ttg-v315-portfolio {padding:103px 0 82px}
  .ttg-v315-portfolio .ttg-v31-section-label {margin-bottom:25px}
  .ttg-v315-portfolio-intro .ttg-v31-display-heading {font-size:clamp(40px,10.5vw,57px)}
  .ttg-v315-portfolio-copy>p:first-child {font-size:19px}
  .ttg-v315-metrics {grid-template-columns:1fr;margin-top:44px}
  .ttg-v315-metric,.ttg-v315-metric:first-child,.ttg-v315-metric:nth-child(3) {padding:22px 0;border-left:0;border-top:1px solid var(--studio-line)}
  .ttg-v315-metric:first-child {border-top:0}
  .ttg-v315-metric strong {font-size:50px}
  .ttg-v315-portfolio-head {align-items:flex-start;flex-direction:column;gap:5px;margin-top:47px}
  .ttg-v315-property-grid {grid-template-columns:1fr}
  .ttg-v315-property {min-height:230px}
  .ttg-v315-portfolio-bottom {grid-template-columns:1fr;gap:18px}
  .ttg-v31-proof {padding-top:75px}
  .ttg-v31-project,.ttg-v31-project.is-dark {padding:27px 22px!important}
}
@media (prefers-reduced-motion:reduce) {
  .ttg-v315-property,.ttg-v315-property-foot b,.ttg-v315-rotator-line strong {transition:none!important;translate:none!important}
}
