/* Client imagery is editorial content, never the customer's uploaded artwork. */
.theo-client-picture{display:block;max-width:100%}
.theo-client-picture img{display:block;width:100%;height:auto}
.theo-client-gallery{padding:64px 0;background:#fff}
.theo-client-gallery__heading{margin-bottom:28px}
.theo-client-gallery h2{font-size:clamp(24px,2.3vw,34px);margin:0;line-height:1.35}
.theo-client-gallery__heading p{margin:10px 0 0;color:#626a73;font-size:14px;line-height:1.6}
.theo-client-gallery__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.theo-client-gallery__grid:has(>figure:only-child){grid-template-columns:minmax(0,640px);justify-content:center}
.theo-client-gallery__grid:has(>figure:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr));max-width:1120px;margin-inline:auto}
.theo-client-gallery figure{display:flex;flex-direction:column;margin:0;min-width:0;background:#fff;border:1px solid #dedede}
.theo-client-gallery__open{display:block;position:relative;overflow:hidden;color:#111111;flex:none}
.theo-client-gallery picture{aspect-ratio:4/3;overflow:hidden;background:#f6f6f6}
.theo-client-gallery picture img{width:100%;height:100%;object-fit:cover;object-position:var(--theo-photo-position,50% 50%)}
.theo-client-gallery__zoom{position:absolute;top:14px;right:14px;display:grid;place-items:center;width:32px;height:32px;background:#fff;color:#111111;border:1px solid #dedede;font-size:21px;line-height:1;box-shadow:0 2px 8px #00000012;pointer-events:none}
.theo-client-gallery__open:hover .theo-client-gallery__zoom{background:#111111;color:#fff}
.theo-client-gallery__open:focus-visible{outline:3px solid #111111;outline-offset:-4px}
.theo-client-gallery figcaption{padding:18px 20px;font-size: 16px;line-height:1.6;border-top:1px solid #dedede;flex:1;overflow-wrap:anywhere}
.theo-editorial-viewer{width:min(1120px,calc(100vw - 40px));height:min(900px,calc(100dvh - 40px));max-width:none;max-height:none;padding:0;border:1px solid #dedede;background:#fff;color:#111111}
.theo-editorial-viewer[open]{display:flex;flex-direction:column}
.theo-editorial-viewer::backdrop{background:#111111dd}
.theo-editorial-viewer__bar{display:flex;align-items:center;gap:16px;flex:none;padding:12px 20px;border-bottom:1px solid #dedede;background:#fff}
.theo-editorial-viewer h2{margin:0;flex:1;min-width:0;font-size:18px;line-height:1.5;overflow-wrap:anywhere}
.theo-editorial-viewer__close{display:grid;place-items:center;flex:none;width:48px;height:48px;padding:0;border:1px solid #dedede;background:#fff;color:#111111;font-size:28px;cursor:pointer}
.theo-editorial-viewer__close:focus-visible{outline:2px solid #111111;outline-offset:2px}
.theo-editorial-viewer__canvas{display:grid;place-items:center;flex:1;min-height:0;min-width:0;padding:20px;background:#f6f6f6;overflow:auto}
.theo-editorial-viewer__canvas img{display:block;width:100%;height:100%;min-height:0;object-fit:contain}
.theo-editorial-viewer__error{max-width:32em;text-align:center;line-height:1.7}
.theo-editorial-viewer__error[hidden],.theo-editorial-viewer__canvas img[hidden]{display:none}
@media(max-width:600px){.theo-editorial-viewer{width:calc(100vw - 24px);height:calc(100dvh - 24px)}.theo-editorial-viewer__bar{padding:10px 12px;gap:10px}.theo-editorial-viewer h2{font-size:16px}.theo-editorial-viewer__canvas{padding:10px}.theo-client-gallery__zoom{top:10px;right:10px}}
.client-card>.theo-client-picture,.portfolio-slide>.theo-client-picture{height:100%}
.client-card>.theo-client-picture img,.portfolio-slide>.theo-client-picture img{height:100%;object-fit:cover}
.theo-paper-surface{display:grid;place-items:center;min-width:0;width:100%;aspect-ratio:8/5;background:linear-gradient(135deg,#efeee8,#f6f6f6);color:#6b675e;font-size: 14px;letter-spacing:.12em}
.theo-material-photo>.theo-paper-surface{min-height:0}
/* Material options must show the whole part: remove the artificial image box,
   not the part's edges. Real aspect ratio avoids both bars and distortion. */
.theo-material-choice-group li img{display:block;width:100%;max-width:240px;height:auto;aspect-ratio:auto;object-fit:contain;margin-bottom:12px}
.theo-order .theo-option-image{height:auto;aspect-ratio:auto;max-width:100%}
.image-compare .theo-client-picture{height:100%}
.image-compare .theo-client-picture img{height:100%;object-fit:cover;filter:none}
.image-compare .image-compare__before{filter:none;transform:none}
.theo-canvas-video{display:grid;grid-template-columns:minmax(240px,1fr) minmax(0,2fr);align-items:center;gap:32px;margin:48px 0 0;background:#f6f6f6;padding:32px}
.theo-canvas-video>div{min-width:0}
.theo-canvas-video__player{position:relative;aspect-ratio:16/9;background:#111111;overflow:hidden}
.theo-canvas-video video{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain}
.theo-canvas-video h2{font-size:clamp(24px,2vw,30px);line-height:1.4;margin:0 0 18px}
.theo-canvas-video p{font-size: 16px;line-height:1.75}
.theo-canvas-video .theo-video-note{font-size: 14px;color:#6b6b6b;margin-bottom:0}
.theo-policy-table{max-width:100%;margin:20px 0}.theo-policy-table table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:14px;line-height:1.7}.theo-policy-table th,.theo-policy-table td{border:1px solid #ddd8cf;padding:12px;vertical-align:top;overflow-wrap:anywhere;word-break:normal}.theo-policy-table th{background:#f4f2ed;text-align:left}.theo-policy-excerpt{max-height:350px;overflow-y:auto;overscroll-behavior:auto;padding:12px 4px;font-size:14px;line-height:1.8}.theo-policy-excerpt h2{font-size:17px;margin:24px 0 10px}.theo-policy-excerpt p{margin:12px 0}.theo-policy-effective{color:#666;font-size:14px}.theo-upload-policy,.theo-file-retention-policy{font-size: 14px;line-height:1.8;color:#6b6b6b}.theo-institution p{font-size: 14px;line-height:1.8}.theo-institution select{appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%23203040' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 16px center;padding:12px 44px 12px 12px;min-height:48px;width:100%;border:1px solid #aaa}
@media(max-width:760px){.theo-policy-table th,.theo-policy-table td{padding:8px 6px;font-size: 14px}.theo-policy-excerpt{max-height:320px}.theo-material-page>.layout>.theo-client-gallery>.layout{width:100%;padding-inline:0}}
@media(max-width:760px){.theo-client-gallery{padding:40px 0}.theo-client-gallery__grid,.theo-client-gallery__grid:has(>figure:nth-child(2):last-child){grid-template-columns:1fr;gap:18px}.theo-client-gallery figcaption{padding:14px 16px}.theo-material-photo>.theo-paper-surface{min-height:0}}

/* Slot geometry belongs to the layout, not the supplied photograph's ratio.
   These rules are intentionally scoped: never crop customer order artwork. */
.hero__media .theo-client-picture,
.hero__media .theo-client-picture img{position:absolute;inset:0;width:100%;height:100%}
.hero__media .theo-client-picture img{object-fit:cover;object-position:58% center}
.studio .media-frame>.theo-client-picture{aspect-ratio:3/2;overflow:hidden}
.studio .media-frame>.theo-client-picture img{width:100%;height:100%;object-fit:cover}
.frame-mockup__visual{min-height:0;aspect-ratio:4/3;align-self:center;width:100%;background:#111111}
.frame-mockup__visual>.theo-client-picture,
.frame-mockup__visual>.theo-client-picture img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.theo-material-page>.layout>.theo-client-gallery>.layout{width:100%;padding-inline:0}
.theo-material-page>.layout>.theo-client-gallery{background:transparent;padding-bottom:0}

/* Separate audience information from the full-bleed service cards. */
.clients .client-card{display:flex;flex-direction:column;min-height:0;background:#fff;color:#111;border:1px solid var(--color-line)}
.clients .client-card::after{display:none}
.clients .client-card>.theo-client-picture{height:auto;aspect-ratio:8/5;position:relative;overflow:hidden;flex:none}
.clients .client-card>.theo-client-picture img{width:100%;height:100%;object-fit:cover}
.clients .client-card>div{position:static;padding:24px}
.clients .client-card span{color:#6b6b6b;margin-bottom:8px}
.clients .client-card h3{color:#111;font-size:22px}
.clients .client-card p{color:#6b6b6b}
.works .portfolio-slide{aspect-ratio:auto;display:flex;flex-direction:column}
.works .portfolio-slide::after{display:none}
.works .portfolio-slide>.theo-client-picture{height:auto;aspect-ratio:4/3;overflow:hidden;background:#f6f6f6;flex:none}
.works .portfolio-slide>.theo-client-picture img{width:100%;height:100%;object-fit:cover}
.works .portfolio-slide:hover img{transform:none;opacity:1}
.works .portfolio-slide figcaption{position:static;display:flex;flex-wrap:wrap;gap:8px;padding:20px;color:#fff}
.works .portfolio-position{text-align:right;color:rgba(255,255,255,.8);font-size:14px;margin:16px 0 0;font-variant-numeric:tabular-nums}
.journal-card .theo-client-picture{aspect-ratio:4/3;overflow:hidden;background:#f6f6f6;margin-bottom:24px}
.journal-card .theo-client-picture img{height:100%;width:100%;object-fit:cover;margin:0}
.journal-card>a>span:not(.text-link){color:var(--color-deep);font-size: 14px;font-weight: 600;letter-spacing:.12em}
.journal-card .text-link{display:inline-flex;min-height:44px;align-items:center;margin-top:12px}
@media(max-width:960px){.theo-canvas-video{grid-template-columns:1fr;gap:24px}}
@media(max-width:640px){
 .hero__media .theo-client-picture img{object-position:64% center}
 .clients .client-card>.theo-client-picture{aspect-ratio:16/9}
 .clients .client-card>div{padding:20px}
 .theo-canvas-video{padding:20px;margin-top:32px}
}
@media(prefers-reduced-motion:reduce){.theo-client-picture img{animation:none!important;transition:none!important}}
.brand__logo,.brand__wordmark { object-fit:contain; }
/* Site-wide editorial image policy. Specificity intentionally exceeds the
   catalogue plugin's desktop/mobile rules regardless of stylesheet order.
   Listing cards fill their slots; primary detail photos retain their true
   ratio without a coloured letterbox. Order artwork and logos are excluded. */
.theo-material-card figure>img{object-fit:cover;object-position:center}
.theo-material-card figure{background:#f6f6f6}
.theo-material-page .theo-material-photo>img{width:100%;height:auto;aspect-ratio:auto;max-height:none;object-fit:contain;background:transparent}
.theo-managed-menu { display:flex; align-items:center; flex-wrap:wrap; gap:24px; margin:0; padding:0; list-style:none; }
.theo-managed-menu li { position:relative; list-style:none; }
.theo-managed-menu .sub-menu { display:none; position:absolute; top:100%; left:0; min-width:220px; margin:0; padding:16px; list-style:none; background:#fff; color:#17232e; box-shadow:0 8px 24px #0002; z-index:40; }
.theo-managed-menu li:hover>.sub-menu,.theo-managed-menu li:focus-within>.sub-menu { display:grid; gap:14px; }
.theo-managed-menu--mobile { display:grid; gap:0; width:100%; }
.theo-managed-menu--mobile .sub-menu { display:grid; position:static; background:transparent; color:inherit; box-shadow:none; gap:8px; padding:8px 0 8px 20px; }
.theo-managed-menu--footer { display:grid; grid-column:1/-1; grid-template-columns:repeat(4,minmax(0,1fr)); align-items:start; }
.theo-managed-menu--footer .sub-menu { display:grid; position:static; background:none; box-shadow:none; padding:18px 0 0; color:inherit; min-width:0; gap:14px; }
@media(max-width:700px) { .theo-managed-menu--footer { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.theo-home-banner-slide { width:100%; }
.theo-home-banner-slide[hidden],.theo-banner-controls[hidden] { display:none!important; }
.hero .theo-home-banner-title { max-width:680px;font-size:clamp(40px,4.2vw,56px);line-height:1.16;letter-spacing:-.055em;overflow-wrap:anywhere; }
.hero__copy p { margin:0; }
.theo-banner-controls { display:flex;align-items:center;gap:14px; }
.theo-banner-controls button { display:grid;place-items:center;width:42px;height:42px;border:1px solid #ffffff80;background:transparent;color:white;cursor:pointer; }
.theo-banner-controls button:focus-visible { outline:2px solid white;outline-offset:3px; }
.hero__foot { z-index:3; }
.theo-empty-hero { padding-top:var(--header-height,88px); }
@media(max-width:700px){.hero .theo-home-banner-title{font-size:clamp(32px,9vw,44px)}.hero__foot:has(.theo-banner-controls:not([hidden]))>span{display:none;}.hero__foot:has(.theo-banner-controls:not([hidden])){justify-content:flex-end;}}
