
:root { --paper:#f2ebdd; --paper-2:#e5ddcf; --ink:#263b33; --green:#3f705d; --mint:#b7c4ad; --wood:#a9784f; --line:rgba(38,59,51,.18); --scroll-y:0px; --scroll-progress:0; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:"Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif; overflow-x:hidden; }
a { color:inherit; text-decoration:none; } button { color:inherit; font:inherit; } img { max-width:100%; } .site { overflow:clip; }

.loader { position:fixed; inset:0; z-index:999; display:grid; place-items:center; background:#2f5144; transition:clip-path 1.05s cubic-bezier(.76,0,.24,1) .2s; clip-path:inset(0); animation:loader-failsafe 1.05s cubic-bezier(.76,0,.24,1) 4s forwards; }
.loader svg { position:absolute; inset:0; width:100%; height:100%; }
.loader path { fill:none; stroke:var(--paper); stroke-width:2; stroke-dasharray:1600; stroke-dashoffset:1600; animation:loader-line 1.45s ease forwards; }
.loader img { width:86px; height:86px; object-fit:cover; opacity:0; animation:loader-logo .55s ease .55s forwards; }
.is-loaded .loader { clip-path:inset(0 0 100% 0); pointer-events:none; }
@keyframes loader-line { to { stroke-dashoffset:0; } } @keyframes loader-logo { to { opacity:1; } }
@keyframes loader-failsafe { to { clip-path:inset(0 0 100% 0); visibility:hidden; pointer-events:none; } }

.site-header { position:fixed; inset:0 0 auto; height:92px; padding:0 clamp(24px,3.2vw,52px); z-index:80; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; color:var(--ink); transition:color .45s,background .45s,height .45s,border-color .45s; border-bottom:1px solid transparent; }
.site-header.is-scrolled { height:78px; color:var(--ink); background:rgba(242,235,221,.9); backdrop-filter:blur(12px); border-color:var(--line); }
.brand { justify-self:start; } .brand img { width:58px; height:58px; object-fit:cover; display:block; transition:transform .35s; } .brand:hover img { transform:rotate(-3deg) scale(1.04); }
.desktop-nav { display:flex; gap:clamp(20px,2.4vw,40px); font-size:13px; font-weight:600; letter-spacing:.04em; }
.desktop-nav a { position:relative; } .desktop-nav a::after { content:""; position:absolute; left:0; right:100%; bottom:-7px; height:1px; background:currentColor; transition:right .3s; } .desktop-nav a:hover::after { right:0; }
.header-contact { justify-self:end; border:1px solid currentColor; border-radius:999px; padding:14px 22px; font-size:13px; font-weight:700; transition:background .3s,color .3s,border-color .3s; }
.site-header.is-scrolled .header-contact { background:var(--green); color:#fff; border-color:var(--green); } .header-contact span { margin-left:12px; }
.menu-button,.menu-panel { display:none; }

.hero { min-height:820px; height:100svh; background:linear-gradient(135deg,#f2ebdd 0%,#e5ddcf 100%); color:var(--ink); position:relative; overflow:hidden; }
.hero::before { content:""; position:absolute; inset:0; opacity:.22; background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px); background-size:90px 90px; mask-image:linear-gradient(90deg,#000,transparent 72%); }
.hero-plan { position:absolute; inset:-4%; width:108%; height:108%; z-index:1; pointer-events:none; }
.hero-plan path,.hero-plan circle { fill:none; stroke:rgba(38,59,51,.35); stroke-width:1.5; vector-effect:non-scaling-stroke; stroke-dasharray:2100; stroke-dashoffset:2100; }
.hero-plan .plan-measure { stroke:rgba(169,120,79,.78); stroke-width:1; }
.is-loaded .hero-plan path,.is-loaded .hero-plan circle { animation:hero-line 3.2s cubic-bezier(.2,.7,.2,1) .55s forwards; }
@keyframes hero-line { to { stroke-dashoffset:0; } }
.hero-copy { position:relative; z-index:4; padding:clamp(145px,18vh,190px) 0 60px clamp(28px,7vw,110px); width:62%; }
.hero-en { margin:0 0 58px; font:700 13px/1.6 Arial,sans-serif; letter-spacing:.28em; opacity:0; transform:translateY(14px); transition:.7s ease .85s; }
.is-loaded .hero-en { opacity:1; transform:none; }
h1 { margin:0; font-size:clamp(50px,5.6vw,86px); line-height:1.22; font-weight:600; letter-spacing:.05em; }
h1 span { display:block; overflow:hidden; opacity:0; transform:translateY(80%); transition:transform 1s cubic-bezier(.16,1,.3,1),opacity .45s; }
.is-loaded h1 span { opacity:1; transform:none; } .is-loaded h1 span:first-child { transition-delay:1s; } .is-loaded h1 span:last-child { transition-delay:1.13s; margin-left:.7em; white-space:nowrap; }
.hero-sub { margin:48px 0 0; font-size:16px; line-height:2.15; letter-spacing:.08em; opacity:0; transform:translateY(18px); transition:.7s ease 1.35s; }
.is-loaded .hero-sub { opacity:.88; transform:none; }
.hero-visual { position:absolute; z-index:2; width:58%; height:84%; right:-2%; bottom:-2%; overflow:hidden; background:transparent; }
.hero-illustration { position:absolute; inset:0; background:url('../images/bosco-main-illustration.png') center bottom/contain no-repeat; clip-path:inset(0 100% 0 0); opacity:0; mix-blend-mode:multiply; }
.is-loaded .hero-illustration { animation:draw-image 3.1s cubic-bezier(.22,.75,.18,1) .8s forwards; }
.draw-scan { position:absolute; z-index:2; top:0; bottom:0; left:-10%; width:80px; border-right:1px solid rgba(38,59,51,.35); background:linear-gradient(90deg,transparent,rgba(38,59,51,.08),transparent); opacity:0; }
.is-loaded .draw-scan { animation:scan 3.1s cubic-bezier(.22,.75,.18,1) .8s forwards; }
@keyframes draw-image { 0% { clip-path:inset(0 100% 0 0); opacity:0; filter:grayscale(1) contrast(1.5); } 12% { opacity:.6; } 100% { clip-path:inset(0); opacity:1; filter:none; } }
@keyframes scan { 5% { opacity:.7; } 90% { opacity:.45; } 100% { left:105%; opacity:0; } }
.hero-side { position:absolute; z-index:5; right:24px; bottom:42px; margin:0; writing-mode:vertical-rl; font:700 8px/1 Arial,sans-serif; letter-spacing:.26em; }
.hero-scroll { position:absolute; z-index:5; left:50%; bottom:22px; display:flex; flex-direction:column; align-items:center; gap:9px; font:700 8px/1 Arial,sans-serif; letter-spacing:.2em; }
.hero-scroll i { width:1px; height:46px; background:currentColor; animation:scroll-pulse 1.8s infinite; transform-origin:top; }
@keyframes scroll-pulse { 0%,100% { transform:scaleY(.2); } 50% { transform:scaleY(1); } }

.section-index { margin:0; font:700 13px/1.4 Arial,sans-serif; letter-spacing:.22em; }
[data-reveal] { opacity:0; transform:translateY(60px); transition:opacity .9s ease,transform 1.1s cubic-bezier(.16,1,.3,1); }
[data-reveal].is-visible { opacity:1; transform:none; }

.statement { min-height:1550px; padding:150px clamp(28px,7vw,105px); background:var(--paper); position:relative; overflow:hidden; }
.statement-copy { width:100%; max-width:1200px; margin:170px auto 280px; display:grid; grid-template-columns:minmax(0,1fr) minmax(380px,440px); gap:clamp(56px,7vw,110px); align-items:end; }
.statement h2,.services h2,.process h2,.contact h2 { margin:0; font-size:clamp(44px,5.8vw,88px); line-height:1.38; letter-spacing:.055em; font-weight:600; }
.statement h2 span,.illustration-message p span { display:block; white-space:nowrap; }
.statement-lead { margin:0 0 16px; font-size:clamp(20px,2vw,30px); line-height:1.9; letter-spacing:.08em; white-space:nowrap; } .statement-lead em { color:var(--green); font-style:normal; }
.about-stage { display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(60px,11vw,170px); align-items:center; position:relative; z-index:2; }
.about-media { position:relative; } .about-media img { width:100%; aspect-ratio:1.28; object-fit:cover; display:block; filter:saturate(.78) contrast(.97); }
.about-media span { position:absolute; left:18px; bottom:16px; padding:10px 13px; background:rgba(242,235,221,.88); font:700 13px/1 Arial,sans-serif; letter-spacing:.2em; }
.about-body { max-width:470px; } .about-body h3 { margin:0 0 48px; font-size:clamp(28px,3vw,43px); letter-spacing:.08em; }
.about-body p { margin:0 0 24px; font-size:16px; line-height:2.25; letter-spacing:.05em; } .about-body .about-closing { margin-top:40px; font-size:17px; font-weight:600; }
.thread { position:absolute; pointer-events:none; } .thread::before { content:""; position:absolute; inset:0; border-left:1px solid var(--line); transform:rotate(28deg); }
.thread span,.thread i { position:absolute; width:58px; height:58px; background:transparent; border-top:13px solid var(--mint); border-left:13px solid var(--mint); animation:float-shape 6s ease-in-out infinite; }
.thread i { width:36px; height:36px; border-color:var(--wood); border-width:9px; animation-delay:-2s; } .thread-a { width:560px; height:950px; right:-80px; top:120px; } .thread-a span { top:250px; left:120px; } .thread-a i { bottom:170px; left:360px; }
@keyframes float-shape { 50% { transform:translate(14px,-18px) rotate(20deg); } }

.illustration-stage { min-height:1450px; padding:170px 4vw 140px; background:var(--paper); position:relative; display:grid; align-content:center; overflow:hidden; }
.big-illustration { width:min(1120px,88vw); margin:120px auto 0; position:relative; z-index:2; }
.big-illustration.vector-draw { isolation:isolate; }
.vector-draw-layer { position:relative; z-index:2; width:100%; opacity:1; transition:opacity .85s ease; mix-blend-mode:multiply; }
.vector-draw-layer svg { width:100%; height:auto; display:block; overflow:visible; }
.vector-draw-layer svg path,
.vector-draw-layer svg polygon,
.vector-draw-layer svg rect { fill:none !important; stroke:var(--ink) !important; stroke-width:1.15px !important; stroke-linecap:round; stroke-linejoin:round; vector-effect:non-scaling-stroke; opacity:0; }
.vector-draw-layer svg .st0 { fill:none !important; }
.vector-draw-final { position:absolute; inset:0; z-index:3; width:100%; height:100%; object-fit:contain; display:block; opacity:0; mix-blend-mode:multiply; transition:opacity 1s ease; }
.vector-draw.is-draw-complete .vector-draw-layer { opacity:0; }
.vector-draw.is-draw-complete .vector-draw-final { opacity:1; }
.illustration-message { max-width:560px; margin:-40px 12vw 0 auto; position:relative; z-index:4; background:var(--paper); padding:30px 0 30px 45px; }
.illustration-message small { font:700 13px/1 Arial,sans-serif; letter-spacing:.25em; color:var(--green); } .illustration-message p { margin:22px 0 0; font-size:clamp(28px,3vw,48px); line-height:1.65; font-weight:600; letter-spacing:.07em; }
.floating-word { position:absolute; margin:0; color:transparent; -webkit-text-stroke:1px rgba(38,59,51,.10); font:700 clamp(70px,12vw,180px)/1 Arial,sans-serif; white-space:nowrap; transform:translateX(calc(var(--scroll-y) * -.025)); }
.word-one { top:7%; left:-5%; } .word-two { bottom:10%; right:-2%; transform:translateX(calc(var(--scroll-y) * .012)); }
.shape { position:absolute; display:block; background:transparent; animation:float-shape 7s ease-in-out infinite; } .shape-yellow { width:82px; height:82px; right:11%; top:20%; border-top:18px solid var(--wood); border-right:18px solid var(--wood); }
.shape-green { width:72px; height:52px; left:10%; bottom:16%; border:12px solid var(--green); border-bottom:0; animation-delay:-3s; }

.services { min-height:1500px; padding:150px clamp(28px,7vw,105px) 220px; background:var(--paper-2); position:relative; overflow:hidden; }
.services-head { max-width:850px; margin-left:8vw; } .services-head .section-index { margin-bottom:52px; } .services-head > p:last-child { margin:45px 0 0 45%; font-size:16px; line-height:2.2; }
.service-grid { margin-top:160px; display:grid; grid-template-columns:1fr 1fr; gap:8vw; }
.service-card { border-top:1px solid var(--ink); padding-top:30px; } .card-shift { margin-top:180px; }
.service-image { background:transparent; overflow:hidden; } .service-image img { width:100%; display:block; transition:transform 1.1s cubic-bezier(.16,1,.3,1); mix-blend-mode:multiply; } .service-image:hover img { transform:scale(1.025); }
.service-meta { display:flex; align-items:center; gap:18px; margin:28px 0 22px; } .service-meta span { width:38px; height:38px; border-radius:50%; display:grid; place-items:center; background:var(--green); color:#fff; font:700 13px/1 Arial,sans-serif; }
.service-meta p { margin:0; font:700 13px/1 Arial,sans-serif; letter-spacing:.2em; } .service-card h3 { margin:0 0 26px; font-size:clamp(29px,3vw,45px); letter-spacing:.07em; } .service-card > p { margin:0; max-width:590px; font-size:16px; line-height:2.15; }
.thread-b { width:450px; height:700px; right:-50px; top:60px; } .thread-b span { top:220px; left:120px; border-color:var(--wood); } .thread-b i { bottom:80px; left:260px; border-color:var(--mint); }

.office-band { min-height:980px; padding:150px clamp(28px,7vw,105px); background:var(--paper); display:grid; grid-template-columns:minmax(390px,.9fr) minmax(0,1.1fr); gap:clamp(60px,8vw,130px); align-items:stretch; position:relative; }
.office-band::before { content:""; position:absolute; width:360px; height:360px; border:1px solid var(--line); border-radius:50%; left:-140px; top:80px; }
.office-band-copy { align-self:start; position:relative; z-index:2; }
.office-band-copy .section-index { display:block; margin:0 0 56px; font-size:13px; font-style:normal; letter-spacing:.22em; }
.company-title { margin:0; font:600 clamp(46px,5.1vw,78px)/.98 Arial,sans-serif; letter-spacing:-.035em; }
.company-profile { margin-top:64px; padding-top:28px; border-top:1px solid var(--ink); }
.company-profile p { margin:0; }
.company-name { font-size:18px; line-height:1.7; font-weight:600; letter-spacing:.06em; }
.company-business { margin-top:24px !important; font:700 13px/1.8 Arial,sans-serif; letter-spacing:.14em; opacity:.72; }
.company-profile address { margin-top:40px; font-style:normal; font-size:16px; line-height:2; letter-spacing:.055em; }
.company-profile address span { display:block; font-size:inherit; letter-spacing:inherit; }
.company-phone { display:block; margin-top:18px; font-size:16px; line-height:2; font-weight:400; letter-spacing:.055em; }
.company-map { margin-top:46px; }
.company-map iframe { display:block; width:100%; height:250px; border:1px solid var(--line); filter:grayscale(.18) saturate(.72) contrast(.96); }
.company-map-link { margin-top:16px; display:flex; justify-content:space-between; align-items:center; padding-bottom:10px; border-bottom:1px solid var(--ink); font:700 13px/1.4 Arial,sans-serif; letter-spacing:.14em; }
.company-map-link span { font-size:18px; letter-spacing:0; }
.office-band-image { position:relative; z-index:2; height:100%; min-height:720px; }
.office-band-image img { width:100%; height:100%; object-fit:cover; display:block; filter:saturate(.82); }

.process { padding:160px clamp(28px,7vw,105px) 200px; background:var(--paper); }
.process-head { display:grid; grid-template-columns:.5fr 1.5fr; gap:6vw; align-items:start; margin-bottom:120px; }
.process-list { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--ink); }
.process-list li { min-height:320px; padding:28px 25px; border-right:1px solid var(--line); transition:background .35s,transform .35s; } .process-list li:first-child { padding-left:0; } .process-list li:last-child { border-right:0; } .process-list li:hover { background:var(--mint); transform:translateY(-8px); }
.process-list span { color:var(--green); font:700 13px/1 Arial,sans-serif; } .process-list h3 { margin:58px 0 25px; font-size:clamp(30px,3vw,44px); } .process-list p { margin:0; font-size:16px; line-height:2; }

.contact { min-height:880px; padding:150px clamp(28px,7vw,105px); background:var(--green); color:#fff; display:grid; place-items:center; text-align:center; position:relative; overflow:hidden; }
.contact::before,.contact::after { content:""; position:absolute; border:1px solid rgba(255,255,255,.28); border-radius:50%; } .contact::before { width:700px; height:700px; left:-250px; bottom:-360px; } .contact::after { width:380px; height:380px; right:-100px; top:-170px; }
.contact > div { position:relative; z-index:2; } .contact .section-index { margin-bottom:45px; } .contact-kicker { margin:0 0 22px; font-size:16px; letter-spacing:.12em; } .contact > div > p:not(.section-index):not(.contact-kicker) { margin:42px 0 0; font-size:16px; line-height:2.2; }
.contact-button { width:270px; min-height:92px; margin:65px auto 0; border-radius:999px; background:#fff; color:var(--ink); display:grid; place-items:center; padding:20px; font:700 13px/1.6 Arial,sans-serif; letter-spacing:.15em; transition:transform .35s,background .35s; } .contact-button:hover { transform:scale(1.04); background:var(--mint); }
.contact-shape { position:absolute; width:90px; height:90px; background:transparent; border-top:18px solid var(--wood); border-right:18px solid var(--wood); top:14%; right:16%; animation:float-shape 6s ease-in-out infinite; }

footer { min-height:190px; padding:50px clamp(28px,5vw,75px); display:grid; grid-template-columns:1fr auto 1fr; align-items:center; background:#2f5144; color:#fff; gap:25px; }
footer img { width:75px; height:75px; object-fit:cover; } footer p { margin:0; font-size:11px; letter-spacing:.1em; } footer p:last-child { justify-self:end; font:9px/1 Arial,sans-serif; opacity:.6; }
.scroll-progress { position:fixed; z-index:100; left:0; top:0; height:3px; width:calc(var(--scroll-progress) * 100%); background:var(--wood); pointer-events:none; }

@media (max-width:1100px) {
  .statement-copy { grid-template-columns:1fr; }
}

@media (max-width:900px) {
  .site-header { grid-template-columns:1fr auto; } .desktop-nav,.header-contact { display:none; }
  .menu-button { display:grid; place-items:center; width:58px; height:58px; border:1px solid currentColor; border-radius:50%; background:transparent; font:700 8px/1 Arial,sans-serif; letter-spacing:.15em; position:relative; z-index:92; }
  .menu-panel { position:fixed; inset:0; z-index:70; background:var(--green); color:#fff; padding:130px 8vw 60px; display:flex; flex-direction:column; clip-path:circle(0 at calc(100% - 55px) 45px); transition:clip-path .8s cubic-bezier(.77,0,.18,1); pointer-events:none; }
  .menu-panel.is-open { clip-path:circle(150% at calc(100% - 55px) 45px); pointer-events:auto; } .menu-panel > p { font:700 9px/1 Arial,sans-serif; letter-spacing:.22em; } .menu-panel nav { margin-top:70px; display:flex; flex-direction:column; } .menu-panel nav a { font-size:clamp(34px,7vw,62px); line-height:1.65; }
  .hero-copy { width:92%; } .hero-visual { width:72%; height:58%; opacity:.62; } h1 { font-size:clamp(46px,8vw,72px); }
  .statement { min-height:1350px; } .statement-copy { grid-template-columns:1fr; margin-bottom:180px; } .about-stage { grid-template-columns:1fr; } .about-media { width:78%; } .about-body { margin-left:auto; }
  .illustration-stage { min-height:1100px; } .service-grid { gap:5vw; } .services-head > p:last-child { margin-left:20%; }
  .office-band { grid-template-columns:1fr; } .office-band-copy { padding-top:0; } .office-band-image { width:83%; min-height:560px; margin-left:auto; }
  .process-head { grid-template-columns:1fr; } .process-list { grid-template-columns:1fr 1fr; } .process-list li:nth-child(2) { border-right:0; }
}

@media (max-width:560px) {
  .site-header { height:78px; padding-inline:18px; } .brand img { width:50px; height:50px; } .menu-button { width:50px; height:50px; }
  .hero { min-height:760px; } .hero-copy { padding:128px 20px 30px; width:100%; } .hero-en { margin-bottom:42px; } h1 { font-size:42px; line-height:1.35; } .is-loaded h1 span:last-child { margin-left:.25em; } .hero-sub { margin-top:36px; font-size:16px; }
  .hero-visual { width:115%; height:45%; right:-42%; opacity:.55; clip-path:polygon(8% 0,100% 0,100% 100%,0 100%); } .hero-side { display:none; } .hero-scroll { left:22px; }
  .statement { min-height:auto; padding:100px 16px 130px; } .statement-copy { margin:110px 0 130px; gap:45px; } .statement h2 { font-size:min(9.5vw,39px); letter-spacing:.02em; } .services h2,.process h2,.contact h2 { font-size:39px; } .statement-lead { font-size:20px; } .about-stage { gap:60px; } .about-media { width:100%; } .about-body h3 { margin-bottom:35px; } .thread-a { opacity:.6; }
  .illustration-stage { min-height:820px; padding:100px 10px; } .big-illustration { width:125%; margin-left:-12%; } .illustration-message { margin:-10px 8px 0 8%; padding-left:12px; } .illustration-message p { font-size:min(7vw,27px); letter-spacing:.015em; } .floating-word { font-size:72px; } .shape-yellow { width:48px; height:48px; }
  .services { min-height:auto; padding:100px 22px 130px; } .services-head { margin-left:0; } .services-head > p:last-child { margin:35px 0 0; } .service-grid { margin-top:100px; grid-template-columns:1fr; gap:100px; } .card-shift { margin-top:0; }
  .office-band { min-height:auto; padding:100px 22px 120px; gap:60px; } .office-band-copy .section-index { margin-bottom:42px; } .company-title { font-size:46px; } .company-profile { margin-top:48px; } .company-map iframe { height:220px; } .office-band-image { width:100%; min-height:0; height:auto; } .office-band-image img { height:auto; aspect-ratio:1.25; }
  .process { padding:100px 22px 120px; } .process-head { margin-bottom:75px; } .process-list { grid-template-columns:1fr; } .process-list li,.process-list li:first-child { min-height:230px; padding:28px 0; border-right:0; border-bottom:1px solid var(--line); } .process-list h3 { margin:32px 0 18px; }
  .contact { min-height:760px; padding:110px 22px; } .contact > div > p br { display:none; }
  footer { grid-template-columns:1fr; text-align:center; } footer img,footer p:last-child { justify-self:center; }
}

@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; } [data-reveal] { opacity:1; transform:none; } .loader { display:none; } .vector-draw-layer { display:none; } .vector-draw-final { position:relative; opacity:1; } }

/* WordPress logged-in toolbar compensation (front-end preview only). */
body.admin-bar .site-header { top:32px; }
body.admin-bar .scroll-progress { top:32px; }
@media screen and (max-width:782px) {
  body.admin-bar .site-header { top:46px; }
  body.admin-bar .scroll-progress { top:46px; }
}

/* News / single post */
.journal-hero {
  min-height:520px;
  padding:180px clamp(28px,7vw,105px) 90px;
  background:linear-gradient(135deg,var(--paper) 0%,var(--paper-2) 100%);
  position:relative;
  overflow:hidden;
  display:flex;
  align-items:flex-end;
}
.journal-hero::after {
  content:"NEWS";
  position:absolute;
  right:-.02em;
  bottom:-.28em;
  color:rgba(38,59,51,.055);
  font:700 clamp(150px,23vw,430px)/.8 Arial,sans-serif;
  letter-spacing:-.08em;
  pointer-events:none;
}
.journal-hero-grid {
  position:absolute;
  inset:0;
  opacity:.22;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:90px 90px;
  mask-image:linear-gradient(90deg,#000,transparent 86%);
}
.journal-hero-inner { width:100%; position:relative; z-index:2; }
.journal-hero .section-index { margin-bottom:60px; color:var(--green); }
.journal-heading { display:grid; grid-template-columns:minmax(110px,.35fr) minmax(0,1.65fr); gap:6vw; align-items:start; border-top:1px solid var(--ink); padding-top:30px; }
.journal-date { margin:6px 0 0; font:700 11px/1.5 Arial,sans-serif; letter-spacing:.16em; }
.journal-title { margin:0; max-width:1100px; font-size:clamp(42px,5.4vw,78px); line-height:1.35; letter-spacing:.045em; font-weight:600; }
.journal-title span { display:inline; opacity:1; transform:none; }

.journal-body { padding:110px clamp(28px,7vw,105px) 170px; background:var(--paper); }
.journal-article { max-width:1180px; margin:0 auto; }
.journal-featured { margin:0 0 90px; overflow:hidden; }
.journal-featured img { display:block; width:100%; max-height:720px; object-fit:cover; filter:saturate(.88); }
.journal-content { width:min(100%,820px); margin:0 auto; font-size:16px; line-height:2.15; letter-spacing:.045em; }
.journal-content > *:first-child { margin-top:0; }
.journal-content p { margin:0 0 1.8em; }
.journal-content h2 { margin:3em 0 1.2em; padding-top:.85em; border-top:1px solid var(--ink); font-size:clamp(28px,3.2vw,42px); line-height:1.55; letter-spacing:.055em; font-weight:600; }
.journal-content h3 { margin:2.4em 0 1em; font-size:clamp(22px,2.4vw,30px); line-height:1.6; letter-spacing:.05em; font-weight:600; }
.journal-content ul,.journal-content ol { margin:1.8em 0; padding-left:1.5em; }
.journal-content li { margin:.55em 0; }
.journal-content a { color:var(--green); text-decoration:underline; text-underline-offset:.25em; }
.journal-content blockquote { margin:2.8em 0; padding:1.35em 1.6em; background:rgba(183,196,173,.30); border-left:3px solid var(--green); }
.journal-content blockquote p:last-child { margin-bottom:0; }
.journal-content figure { margin:3em 0; }
.journal-content figcaption { margin-top:.8em; font-size:11px; line-height:1.8; opacity:.7; }
.journal-content img { height:auto; }
.journal-content hr { border:0; border-top:1px solid var(--line); margin:4em 0; }
.journal-footer { width:min(100%,820px); margin:100px auto 0; padding-top:28px; border-top:1px solid var(--ink); }
.journal-back { display:inline-flex; align-items:center; gap:18px; font-size:12px; font-weight:700; letter-spacing:.08em; transition:transform .3s,color .3s; }
.journal-back:hover { transform:translateX(-6px); color:var(--green); }

@media (max-width:900px) {
  .journal-hero { min-height:470px; padding-top:150px; }
  .journal-heading { grid-template-columns:1fr; gap:18px; }
  .journal-title { font-size:clamp(40px,7vw,64px); }
  .journal-body { padding-top:90px; }
}

@media (max-width:560px) {
  .journal-hero { min-height:410px; padding:125px 22px 60px; }
  .journal-hero .section-index { margin-bottom:42px; }
  .journal-heading { padding-top:22px; }
  .journal-title { font-size:36px; line-height:1.45; letter-spacing:.035em; }
  .journal-hero::after { font-size:170px; bottom:-.12em; }
  .journal-body { padding:70px 22px 110px; }
  .journal-featured { margin-bottom:60px; }
  .journal-content { font-size:14px; line-height:2.1; }
  .journal-footer { margin-top:70px; }
}

/* CONTACT fixed page */
.contact-page-hero {
  position:relative;
  min-height:610px;
  padding:190px clamp(28px,7vw,105px) 90px;
  background:linear-gradient(135deg,var(--paper) 0%,var(--paper-2) 100%);
  overflow:hidden;
  display:flex;
  align-items:flex-end;
}
.contact-page-grid {
  position:absolute;
  inset:0;
  opacity:.24;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:90px 90px;
  mask-image:linear-gradient(90deg,#000,transparent 90%);
}
.contact-page-hero::after {
  content:"CONTACT";
  position:absolute;
  right:-.04em;
  bottom:-.22em;
  color:rgba(38,59,51,.05);
  font:700 clamp(120px,20vw,360px)/.85 Arial,sans-serif;
  letter-spacing:-.07em;
  pointer-events:none;
}
.contact-page-hero-inner { width:100%; position:relative; z-index:2; }
.contact-page-hero .section-index { margin-bottom:58px; }
.contact-page-heading {
  display:grid;
  grid-template-columns:minmax(180px,.55fr) minmax(0,1.45fr);
  gap:7vw;
  border-top:1px solid var(--ink);
  padding-top:30px;
  align-items:start;
}
.contact-page-heading > p { margin:7px 0 0; font:700 13px/1.75 Arial,sans-serif; letter-spacing:.16em; }
.contact-page-heading h1 { margin:0; font-size:clamp(54px,6vw,92px); line-height:1.28; letter-spacing:.04em; }
.contact-page-heading h1 span { opacity:1; transform:none; }

.contact-page-main { padding:120px clamp(28px,7vw,105px) 170px; background:var(--paper); }
.contact-page-intro {
  display:grid;
  grid-template-columns:minmax(280px,.9fr) minmax(0,1.1fr);
  gap:9vw;
  max-width:1320px;
  margin:0 auto 100px;
}
.contact-page-kicker { margin:0 0 28px; color:var(--green); font:700 13px/1 Arial,sans-serif; letter-spacing:.16em; }
.contact-page-intro h2 { margin:0; font-size:clamp(34px,4vw,58px); line-height:1.5; letter-spacing:.045em; font-weight:600; }
.contact-page-copy { padding-top:5px; font-size:16px; line-height:2.05; letter-spacing:.04em; }
.contact-page-copy p { margin:0 0 1.3em; }
.contact-page-editor-content { margin-top:35px; padding-top:28px; border-top:1px solid var(--line); }

.contact-notice { max-width:1120px; margin:0 auto 45px; padding:24px 28px; display:flex; flex-wrap:wrap; gap:10px 24px; border:1px solid var(--line); font-size:15px; line-height:1.8; }
.contact-notice strong { font-weight:700; }
.contact-notice.is-success { background:rgba(183,196,173,.28); }
.contact-notice.is-error { background:rgba(167,108,66,.10); border-color:rgba(167,108,66,.42); }

.bosco-contact-form { max-width:1120px; margin:0 auto; border-top:1px solid var(--ink); }
.contact-field { display:grid; grid-template-columns:260px 1fr; gap:40px; align-items:center; padding:31px 0; border-bottom:1px solid var(--line); }
.contact-field label { font-size:15px; line-height:1.6; font-weight:600; letter-spacing:.045em; }
.contact-field label span { display:inline-block; margin-left:10px; padding:3px 7px; border-radius:999px; background:var(--green); color:#fff; font:700 10px/1.2 Arial,sans-serif; letter-spacing:.08em; vertical-align:2px; }
.contact-field label small { margin-left:10px; font-size:11px; font-weight:500; opacity:.55; }
.contact-field input,.contact-field select,.contact-field textarea {
  width:100%;
  min-height:58px;
  border:1px solid rgba(38,59,51,.25);
  border-radius:0;
  background:rgba(255,255,255,.36);
  color:var(--ink);
  padding:14px 16px;
  font:inherit;
  font-size:16px;
  line-height:1.7;
  outline:none;
  transition:border-color .25s,background .25s,box-shadow .25s;
}
.contact-field select { appearance:auto; }
.contact-field textarea { min-height:210px; resize:vertical; }
.contact-field input:focus,.contact-field select:focus,.contact-field textarea:focus { border-color:var(--green); background:rgba(255,255,255,.68); box-shadow:0 0 0 3px rgba(47,81,68,.07); }
.contact-field-message { align-items:start; }
.contact-field-message label { padding-top:14px; }
.contact-consent { display:flex; align-items:flex-start; gap:14px; margin:34px 0 0 300px; font-size:14px; line-height:1.8; cursor:pointer; }
.contact-consent input { width:18px; height:18px; margin-top:4px; accent-color:var(--green); flex:0 0 auto; }
.contact-submit-wrap { margin:55px 0 0 300px; display:flex; align-items:center; gap:32px; flex-wrap:wrap; }
.contact-submit { min-width:250px; min-height:64px; border:0; border-radius:999px; background:var(--green); color:#fff; padding:0 28px; font:700 13px/1 Arial,sans-serif; letter-spacing:.09em; cursor:pointer; display:inline-flex; align-items:center; justify-content:space-between; gap:28px; transition:transform .3s,background .3s; }
.contact-submit:hover { transform:translateY(-3px); background:#244338; }
.contact-submit-wrap p { margin:0; font-size:12px; line-height:1.8; opacity:.65; }
.contact-honeypot { position:absolute !important; width:1px !important; height:1px !important; overflow:hidden !important; clip:rect(1px,1px,1px,1px) !important; white-space:nowrap !important; }

@media (max-width:900px) {
  .contact-page-heading { grid-template-columns:1fr; gap:22px; }
  .contact-page-intro { grid-template-columns:1fr; gap:45px; }
  .contact-field { grid-template-columns:200px 1fr; gap:28px; }
  .contact-consent,.contact-submit-wrap { margin-left:228px; }
}
@media (max-width:560px) {
  .contact-page-hero { min-height:470px; padding:135px 22px 60px; }
  .contact-page-hero .section-index { margin-bottom:42px; }
  .contact-page-heading { padding-top:22px; }
  .contact-page-heading > p { font-size:11px; }
  .contact-page-heading h1 { font-size:40px; line-height:1.4; }
  .contact-page-hero::after { font-size:125px; bottom:-.08em; }
  .contact-page-main { padding:80px 22px 110px; }
  .contact-page-intro { margin-bottom:70px; }
  .contact-page-intro h2 { font-size:32px; }
  .contact-page-copy { font-size:15px; }
  .contact-field { grid-template-columns:1fr; gap:12px; padding:24px 0; }
  .contact-field-message label { padding-top:0; }
  .contact-consent,.contact-submit-wrap { margin-left:0; }
  .contact-submit-wrap { margin-top:42px; align-items:flex-start; flex-direction:column; }
  .contact-submit { width:100%; }
}


/* CONTACT v1.0.17 additions */
.contact-consent a { color:var(--green); text-decoration:underline; text-underline-offset:.25em; }
.contact-consent a:hover { opacity:.72; }

.legal-page-hero { padding:190px clamp(28px,7vw,105px) 100px; background:var(--paper); border-bottom:1px solid var(--line); }
.legal-page-hero-inner { max-width:1120px; margin:0 auto; }
.legal-page-hero .section-index { margin-bottom:50px; }
.legal-page-hero h1 { margin:0 0 35px; font-size:clamp(46px,6vw,82px); line-height:1.3; letter-spacing:.045em; }
.legal-page-hero-inner > p:last-child { max-width:760px; margin:0; font-size:16px; line-height:2; letter-spacing:.04em; }
.legal-page-main { padding:90px clamp(28px,7vw,105px) 150px; background:var(--paper); }
.legal-page-content { max-width:1120px; margin:0 auto; border-top:1px solid var(--ink); }
.legal-page-content section { display:grid; grid-template-columns:70px 280px 1fr; gap:30px; padding:38px 0; border-bottom:1px solid var(--line); align-items:start; }
.legal-page-content section > span { color:var(--green); font:700 12px/1.4 Arial,sans-serif; letter-spacing:.08em; }
.legal-page-content h2 { margin:0; font-size:20px; line-height:1.6; letter-spacing:.04em; }
.legal-page-content p { margin:0; font-size:15px; line-height:2; letter-spacing:.035em; }
.legal-page-back { margin-top:52px; }
.legal-page-back a { display:inline-flex; min-width:230px; min-height:58px; padding:0 25px; align-items:center; justify-content:space-between; gap:28px; border:1px solid var(--ink); border-radius:999px; font:700 12px/1 Arial,sans-serif; letter-spacing:.09em; transition:.3s; }
.legal-page-back a:hover { background:var(--green); color:#fff; border-color:var(--green); transform:translateY(-2px); }

.contact-complete-page { min-height:calc(100vh - 100px); padding:180px clamp(28px,7vw,105px) 130px; background:var(--green); color:#fff; display:flex; align-items:center; }
.contact-complete-inner { width:min(1120px,100%); margin:0 auto; position:relative; }
.contact-complete-page .section-index { color:#fff; margin-bottom:70px; }
.contact-complete-kicker { margin:0 0 25px; font:700 13px/1 Arial,sans-serif; letter-spacing:.16em; }
.contact-complete-page h1 { margin:0 0 38px; font-size:clamp(48px,6vw,86px); line-height:1.35; letter-spacing:.04em; color:#fff; }
.contact-complete-copy { margin:0 0 55px; font-size:16px; line-height:2; letter-spacing:.04em; }
.contact-complete-button { display:inline-flex; min-width:245px; min-height:62px; padding:0 28px; align-items:center; justify-content:space-between; gap:30px; background:#fff; color:var(--ink); border-radius:999px; font:700 12px/1 Arial,sans-serif; letter-spacing:.1em; transition:.3s; }
.contact-complete-button:hover { transform:translateY(-3px); background:var(--mint); }

@media (max-width:700px) {
  .legal-page-hero { padding:140px 22px 70px; }
  .legal-page-main { padding:70px 22px 110px; }
  .legal-page-content section { grid-template-columns:45px 1fr; gap:16px; }
  .legal-page-content section p { grid-column:2; }
  .contact-complete-page { padding:140px 22px 100px; }
}
