/* THREE PLUS presentation system. Independently rebuilt 2026-10-14.
   Class names used inside existing page blocks remain a content contract. */
:root {
    --paper:#f5f4ef; --ink:#22241f; --muted:#66695f; --accent:#d6f568;
    --accent-strong:#849e30; --surface:#e9ece1; --dark:#22241f; --on-dark:#f5f4ef;
    --white:#ffffff; --line:#d5d7cc; --max:1200px; --content-max:850px;
    --page-pad:36px; --section-space:95px; --body-size:15px; --body-leading:1.85;
    --font:system-ui,sans-serif; --heading-font:var(--font); --heading-weight:600;
    --hero-size:92px; --header-height:94px; --logo-height:44px; --menu-gap:26px; --menu-size:12px;
    --button-radius:0px; --button-y:15px; --button-x:22px; --button-bg:var(--dark); --button-text:var(--on-dark);
    --field-pad:12px; --field-radius:0px; --field-border:1px; --scroll-behavior:smooth;
}
*, *::before, *::after { box-sizing:border-box; }
html { scroll-behavior:var(--scroll-behavior); scroll-padding-block-start:calc(var(--header-height) + 24px); }
body { margin:0; background:var(--paper); color:var(--ink); font:var(--body-size)/var(--body-leading) var(--font); -webkit-font-smoothing:antialiased; }
a { color:inherit; text-decoration:none; }
button, input, textarea, select { font:inherit; }
button { cursor:pointer; }
img { height:auto; max-inline-size:100%; }
svg { display:block; }
h1, h2, h3, h4 { font-family:var(--heading-font); line-height:1.2; font-weight:var(--heading-weight); }
h1, h2, h3, h4, p { margin:0; }
:where(a,button,input,textarea,select,summary):focus-visible { outline:3px solid var(--accent-strong); outline-offset:4px; }
[hidden] { display:none!important; }
.wrap { inline-size:100%; max-inline-size:var(--max); padding-inline:var(--page-pad); margin-inline:auto; }
.screen-reader-text { position:absolute; inline-size:1px; block-size:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.skip-link { position:fixed; inset:8px auto auto 8px; transform:translateY(-150%); padding:12px 18px; background:var(--dark); color:var(--on-dark); z-index:100000; }
.skip-link:focus { transform:none; }
.site-header { position:sticky; inset-block-start:0; z-index:100; border-block-end:1px solid var(--line); background:var(--paper); }
.admin-bar .site-header { inset-block-start:32px; }
.tp-header-static .site-header { position:relative; inset-block-start:auto; }
.header-inner { min-block-size:var(--header-height); display:flex; align-items:center; gap:22px; }
.brand-logo-slot { flex:0 0 auto; display:flex; gap:12px; align-items:center; max-inline-size:30%; }
.brand { display:inline-flex; align-items:center; gap:12px; }
.brand-name, .footer-brand { font-size:22px; font-weight:750; letter-spacing:-1px; white-space:nowrap; }
.brand-logo-slot .custom-logo { display:block; inline-size:auto; block-size:var(--logo-height); max-inline-size:220px; object-fit:contain; }
.tp-logo-caption { font-size:12px; font-weight:600; }
.brand-mark { display:grid; grid-template-columns:repeat(2,9px); grid-template-rows:repeat(2,9px); gap:3px; transform:rotate(-12deg); }
.brand-mark i { background:var(--ink); }
.brand-mark i:nth-child(4) { background:var(--accent-strong); }
.primary-nav { margin-inline-start:auto; }
.primary-menu { display:flex; flex-wrap:wrap; align-items:center; gap:var(--menu-gap); margin:0; padding:0; list-style:none; font-size:var(--menu-size); font-weight:600; }
.primary-menu li { position:relative; }
.primary-menu a { display:block; padding-block:10px; }
.primary-menu a:hover, .primary-menu .current-menu-item>a { color:var(--accent-strong); }
.primary-menu .sub-menu { display:none; list-style:none; position:absolute; min-inline-size:180px; padding:12px 18px; margin:0; border:1px solid var(--line); background:var(--white); box-shadow:0 10px 20px #0001; }
.primary-menu li:is(:hover,:focus-within)>.sub-menu { display:block; }
.tp-nav-center .primary-nav { margin-inline:auto; }
.header-cta { border:1px solid var(--ink); padding:11px 16px; font-size:11px; font-weight:600; white-space:nowrap; }
.header-cta span { margin-inline-start:16px; }
.header-cta:hover { color:var(--on-dark); background:var(--dark); }
.menu-toggle { background:none; border:1px solid var(--line); padding:8px 12px; font-size:12px; }
.hero { padding-block:64px 26px; }
.hero-top, .hero-bottom { display:flex; justify-content:space-between; align-items:center; gap:20px; }
.eyebrow { font-size:10px; font-weight:700; letter-spacing:2px; text-transform:uppercase; }
.hero-note, .hero-keywords, .hero-bottom { font-size:10px; letter-spacing:1px; }
.hero-grid.wp-block-columns { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:58px; align-items:center; margin-block:40px 28px; }
.hero-grid h1 { font-size:clamp(44px,7.2vw,var(--hero-size)); letter-spacing:-0.065em; line-height:1.03; white-space:pre-line; }
.hero-subtitle { margin-block:30px 18px; font-size:clamp(18px,2.2vw,26px); font-weight:650; }
.hero-description { color:var(--muted); white-space:pre-line; }
.hero-grid .wp-block-buttons { margin-block-start:26px; }
.hero-art { position:relative; aspect-ratio:1; min-inline-size:0; overflow:hidden; background:var(--surface); }
.hero-art>img { inline-size:100%; block-size:100%; object-fit:cover; }
.hero-art::before { content:""; position:absolute; inset:0; pointer-events:none; opacity:.35; background:repeating-linear-gradient(45deg,transparent 0 35px,var(--line) 36px 37px); }
.art-caption, .art-number { position:absolute; z-index:2; font-size:9px; letter-spacing:1px; }
.art-caption { inset:24px auto auto 24px; }
.art-number { inset:auto 24px 24px auto; }
.art-cross { position:absolute; inset:25%; transform:rotate(-25deg); }
.art-cross::before, .art-cross::after { content:""; position:absolute; background:var(--accent); box-shadow:10px 14px 0 var(--accent-shade); }
.art-cross::before { inset:33% 0; }
.art-cross::after { inset:0 33%; }
.art-orbit { position:absolute; inset:24% 6%; border:1px solid var(--muted); border-radius:50%; transform:rotate(-27deg); opacity:.8; }
.art-orbit.two { inset:7% 23%; transform:rotate(-25deg); }
.hero-bottom { padding-block:14px; }
.hero-bottom .wp-block-button__link { padding:0; background:transparent; border:0; color:var(--ink); font-size:10px; }
.ticker { padding:22px 16px; background:var(--accent); color:var(--on-accent); text-align:center; overflow-wrap:anywhere; }
.ticker p { font-size:clamp(14px,1.8vw,20px); }
.section { padding-block:var(--section-space); }
.section-title { font-size:clamp(34px,4.7vw,58px); letter-spacing:-.045em; white-space:pre-line; margin-block:20px 28px; }
.section-intro { max-inline-size:620px; color:var(--muted); white-space:pre-line; margin-block:16px 36px; }
.about-grid.wp-block-columns { display:grid; grid-template-columns:1fr 1fr; gap:70px; }
.about-message { font-size:clamp(20px,3vw,30px); font-weight:600; white-space:pre-line; margin-block-end:22px; }
.about-copy { color:var(--muted); white-space:pre-line; }
.services { background:var(--surface); }
.service-row { display:grid; grid-template-columns:40px minmax(0,1fr) minmax(0,1.2fr) auto; align-items:start; gap:26px; padding-block:28px; border-block-start:1px solid var(--line); }
.service-row:last-child { border-block-end:1px solid var(--line); }
.service-num { font-size:10px; color:var(--muted); }
.service-row h3 { font-size:24px; line-height:1.35; }
.service-row p, .service-row small { color:var(--muted); font-size:13px; overflow-wrap:anywhere; }
.tp-service-button, .tp-project-button { display:inline-flex; align-items:center; justify-content:space-between; gap:18px; border:1px solid var(--line); border-radius:var(--button-radius); padding:10px 14px; font-size:12px; }
.tp-service-button:hover, .tp-project-button:hover { background:var(--dark); color:var(--on-dark); }
.tp-project-button { margin-block-start:18px; }
.work-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.project { min-inline-size:0; }
.project-visual { overflow:hidden; aspect-ratio:4/3; background:var(--surface); margin-block-end:20px; }
.project-visual figure { margin:0; inline-size:100%; block-size:100%; }
.project-visual img { inline-size:100%; block-size:100%; object-fit:cover; transition:transform .25s ease; }
.project-main-link:hover img { transform:scale(1.025); }
.project h3 { font-size:22px; }
.project p, .project-meta, .sample-note { font-size:11px; color:var(--muted); }
.project p { margin-block-start:12px; }
.sample-note { margin-block-start:24px; }
.process-grid.wp-block-columns { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; }
.process-card { border-block-start:1px solid var(--line); padding-block-start:24px; }
.step { color:var(--accent-strong); font-size:11px; margin-block-end:24px; }
.process-card h3 { font-size:28px; margin-block-end:12px; }
.process-card h4 { font-size:14px; margin-block-end:16px; }
.process-card>p:last-child { color:var(--muted); font-size:13px; }
.news-item { display:grid; grid-template-columns:120px minmax(0,1fr) 24px; gap:20px; align-items:center; border-block-start:1px solid var(--line); padding-block:24px; }
.news-item time { font-size:11px; color:var(--muted); }
.news-item h3 { font-size:18px; }
.text-link { display:inline-block; margin-block-start:20px; font-size:12px; border-block-end:1px solid var(--ink); }
.contact-section { background:var(--dark); color:var(--on-dark); padding-block:74px; }
.contact-inner { display:flex; align-items:center; justify-content:space-between; gap:40px; }
.contact-inner h2 { white-space:pre-line; margin-block:20px 24px; font-size:clamp(38px,6vw,76px); letter-spacing:-.045em; }
.contact-inner>div>p:last-child { white-space:pre-line; }
.contact-arrow { flex-shrink:0; inline-size:110px; block-size:110px; display:grid; place-items:center; border:1px solid currentColor; border-radius:50%; font-size:64px; }
.contact-arrow:hover { background:var(--accent); color:var(--on-accent); }
.site-footer { background:var(--paper); padding-block:50px 25px; }
.footer-top { display:flex; justify-content:space-between; gap:40px; padding-block-end:36px; }
.footer-tagline { font-size:10px; letter-spacing:1px; margin-block-start:10px; }
.footer-links ul { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:12px 24px; font-size:11px; }
.tp-footer-stacked .footer-top { flex-direction:column; }
.footer-widgets { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.footer-widgets:empty { display:none; }
.footer-bottom { display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; border-block-start:1px solid var(--line); padding-block-start:24px; font-size:9px; letter-spacing:.6px; }
.tp-back-top { position:fixed; inset:auto 24px 22px auto; z-index:110; background:var(--dark); color:var(--on-dark); border:0; padding:10px 18px; }
.page-head { padding-block:65px 45px; }
.page-head h1 { font-size:clamp(34px,5vw,64px); letter-spacing:-.045em; margin-block-start:18px; overflow-wrap:anywhere; }
.post-meta { display:block; color:var(--muted); font-size:12px; margin-block:18px; }
.tp-content-layout { padding-block-end:55px; }
.tp-content-layout.with-sidebar { display:grid; grid-template-columns:minmax(0,1fr) 270px; gap:45px; }
.sidebar-left .tp-sidebar { order:-1; }
.tp-main-column { min-inline-size:0; }
.tp-sidebar { min-inline-size:0; font-size:13px; }
.tp-widget { margin-block-end:32px; }
.widget-title { margin-block-end:14px; font-size:18px; }
.tp-widget-placeholder { border:1px dashed var(--line); padding:15px; }
.tp-block-content { inline-size:100%; max-inline-size:var(--max); margin-inline:auto; padding-block-end:40px; overflow-wrap:anywhere; }
.tp-block-content.is-reading, .content-body { max-inline-size:var(--content-max); margin-inline:auto; }
.tp-block-content::after { content:""; display:table; clear:both; }
.content-body>p, .content-body>ul, .content-body>ol, .content-body>blockquote { margin-block:24px; }
.content-body h2, .content-body h3 { margin-block:34px 20px; }
.content-body a:not(.text-link) { text-decoration:underline; text-underline-offset:4px; }
.post-thumbnail { margin:0 0 32px; }
.post-thumbnail img { display:block; inline-size:100%; }
.tp-post-list { display:grid; gap:32px; }
.tp-post-list.grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.post-card { padding-block-end:30px; border-block-end:1px solid var(--line); }
.post-card h2 { font-size:28px; margin-block:15px; }
.post-list-image img { inline-size:100%; aspect-ratio:16/10; object-fit:cover; }
.search-form { display:flex; gap:12px; margin-block:26px; }
.search-field { min-inline-size:0; flex:1; }
input:not([type=checkbox]):not([type=radio]):not([type=submit]), textarea, select { background:var(--white); color:var(--ink); border:var(--field-border) solid var(--line); border-radius:var(--field-radius); padding:var(--field-pad); }
textarea { max-inline-size:100%; }
.search-submit, .button, .button-row a, input[type=submit] { display:inline-flex; align-items:center; justify-content:center; gap:16px; border:1px solid var(--ink); border-radius:var(--button-radius); padding:var(--button-y) var(--button-x); background:var(--button-bg); color:var(--button-text); }
.button.outline { background:transparent; color:var(--ink); }
.tp-comments { border-block-start:1px solid var(--line); padding-block-start:32px; }
.tp-comments input, .tp-comments textarea { max-inline-size:100%; }
.comment-list { padding-inline-start:24px; }
.tp-content-collection { display:grid; gap:28px; margin-block:36px; }
.tp-content-collection.is-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.tp-content-card { min-inline-size:0; background:var(--white); padding:28px; border:1px solid var(--line); scroll-margin-block-start:130px; }
.tp-content-card :is(h2,h3) { font-size:clamp(24px,3vw,34px); margin-block:16px; }
.tp-content-card p { margin-block:14px; }
.tp-content-card>.wp-block-group { margin:0; }
.tp-card-tag { font-size:10px; color:var(--muted); letter-spacing:1px; }
.tp-block-content .wp-block-image { margin-inline:0; }
.tp-block-content .wp-block-image img { display:block; }
.tp-block-content .wp-block-buttons { gap:12px; flex-wrap:wrap; }
.wp-block-button__link { border-radius:var(--button-radius); padding:var(--button-y) var(--button-x); background:var(--button-bg); color:var(--button-text); line-height:1.6; font-size:14px; }
.wp-block-button.is-style-outline .wp-block-button__link { background:transparent; color:var(--ink); }
.wp-block-details { border-block-end:1px solid var(--line); padding-block:20px; }
.wp-block-details summary { font-weight:600; cursor:pointer; }
.wp-block-details p { margin-block:16px; }
.tp-icon { display:inline-grid; place-items:center; min-inline-size:32px; block-size:32px; color:var(--accent-strong); font-weight:700; }
.tp-editor-note { border:1px dashed var(--line); background:var(--surface); padding:16px; }
.tp-blog-intro { margin-block-end:36px; }
@media (max-width:1120px) {
    .header-inner { gap:14px; }
    .primary-menu { gap:14px; }
    .brand-name { font-size:19px; }
    .header-cta { padding:9px 12px; }
}
@media (max-width:1000px) {
    .header-inner { flex-wrap:wrap; position:relative; padding-block:14px; min-block-size:72px; gap:14px; }
    .brand-logo-slot { max-inline-size:65%; }
    .brand-logo-slot .custom-logo { max-inline-size:190px; }
    .menu-toggle:not([hidden]) { display:block; margin-inline-start:auto; }
    .tp-nav-ready .primary-nav { display:none; flex-basis:100%; order:10; margin:0; }
    .tp-nav-ready .primary-nav.is-open { display:block; }
    .primary-menu { display:flex; flex-wrap:wrap; gap:8px 20px; }
    .primary-menu .sub-menu { position:static; display:block; box-shadow:none; border:0; background:transparent; padding:0 0 0 14px; }
    .header-cta { display:none; }
    .tp-mobile-cta .header-cta { display:block; }
    .service-row { grid-template-columns:30px minmax(0,1fr) auto; gap:18px; }
    .service-row>p { grid-row:2; grid-column:2; }
    .tp-service-button { grid-column:3; grid-row:1/3; }
    .hero-grid.wp-block-columns { gap:30px; }
    .tp-content-layout.with-sidebar { grid-template-columns:minmax(0,1fr) 220px; gap:24px; }
}
@media (max-width:780px) {
    .admin-bar .site-header { inset-block-start:46px; }
    .wrap { padding-inline:20px; }
    .hero { padding-block-start:36px; }
    .hero-grid.wp-block-columns, .about-grid.wp-block-columns { grid-template-columns:1fr; gap:32px; }
    .hero-grid h1 { font-size:clamp(44px,11vw,72px); }
    .hero-art { max-inline-size:620px; }
    .hero-note { display:none; }
    .work-grid, .tp-content-collection.is-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .process-grid.wp-block-columns { grid-template-columns:repeat(2,minmax(0,1fr)); gap:30px; }
    .tp-content-layout.with-sidebar { grid-template-columns:1fr; }
    .sidebar-left .tp-sidebar { order:0; }
    .footer-top { flex-direction:column; }
    .contact-arrow { inline-size:76px; block-size:76px; font-size:42px; }
}
@media (max-width:600px) {
    .wrap { padding-inline:16px; }
    .site-header { position:relative; inset-block-start:auto!important; }
    .header-inner { min-block-size:64px; }
    .brand-logo-slot .custom-logo { max-inline-size:160px; block-size:min(var(--logo-height),48px); }
    .brand-name { font-size:18px; }
    .header-inner .tp-language-switcher { flex-basis:100%; justify-content:flex-end; order:5; }
    .tp-mobile-cta .header-cta { order:6; }
    .hero-bottom { align-items:start; flex-direction:column; gap:12px; }
    .section { padding-block:55px; }
    .service-row { grid-template-columns:24px minmax(0,1fr); }
    .tp-service-button { grid-row:3; grid-column:2; justify-self:start; }
    .service-row h3 { font-size:22px; }
    .work-grid, .tp-content-collection.is-grid, .tp-post-list.grid, .footer-widgets { grid-template-columns:1fr; }
    .news-item { grid-template-columns:80px minmax(0,1fr) 16px; gap:10px; }
    .contact-inner { gap:18px; }
    .contact-inner h2 { font-size:40px; }
    .contact-arrow { inline-size:54px; block-size:54px; font-size:32px; }
    .tp-content-card { padding:20px; }
    .tp-native-page .tp-block-content>.wp-block-group { padding-inline:16px!important; }
    .tp-content-card .wp-block-columns { flex-wrap:wrap!important; }
    .tp-content-card .wp-block-column { flex-basis:100%!important; }
    .tp-block-content .wp-block-cover { min-block-size:280px!important; }
    .wp-block-button__link { white-space:normal; max-inline-size:100%; }
}
@media (prefers-reduced-motion:reduce) {
    html { scroll-behavior:auto; }
    *, *::before, *::after { animation-duration:.01ms!important; transition-duration:.01ms!important; }
}
