{"id":332,"date":"2026-05-29T11:47:08","date_gmt":"2026-05-29T11:47:08","guid":{"rendered":"https:\/\/www.cottini1925.cybeartest.it\/our-brands\/"},"modified":"2026-09-11T08:22:58","modified_gmt":"2026-09-11T08:22:58","slug":"our-brands","status":"publish","type":"page","link":"https:\/\/www.cottini1925.cybeartest.it\/en\/our-brands\/","title":{"rendered":"Our brands"},"content":{"rendered":"\n<style id=\"cot-hello-reset\">\nbody.elementor-template-canvas { padding:0 !important; margin:0 !important; }\nheader.site-header { max-width:none !important; width:100% !important; }\nfooter.site-footer { max-width:none !important; width:100% !important; }\nmain { max-width:none !important; width:100% !important; padding:0 !important; margin:0 !important; }\nhtml, body { margin:0 !important; padding:0 !important; }\nhtml { margin-top:0 !important; }\n\n\/* Button hover overrides (Claude design fidelity) *\/\n.btn-trade, a.btn-trade {\n  font-family:'Epilogue','Helvetica Neue',Arial,sans-serif !important;\n  font-size:11px !important; letter-spacing:.28em !important; text-transform:uppercase !important;\n  background:#BF863C !important; color:#F1E6DD !important;\n  padding:11px 22px !important; border:1px solid #BF863C !important; border-radius:999px !important;\n  transition: background .85s cubic-bezier(.22,1,.36,1), border-color .85s cubic-bezier(.22,1,.36,1), color .85s cubic-bezier(.22,1,.36,1), transform .85s cubic-bezier(.22,1,.36,1), box-shadow .85s cubic-bezier(.22,1,.36,1) !important;\n  text-decoration: none !important;\n  display: inline-block !important;\n}\n.btn-trade:hover, a.btn-trade:hover {\n  background:#A06E32 !important; border-color:#A06E32 !important;\n  color:#F1E6DD !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 8px 18px -8px rgba(67,44,32,.4) !important;\n  text-decoration: none !important;\n}\n\n.btn-pill, a.btn-pill {\n  display:inline-flex !important; align-items:center !important; gap:14px !important;\n  font-family:'Epilogue','Helvetica Neue',Arial,sans-serif !important;\n  font-size:11.5px !important; letter-spacing:.3em !important; text-transform:uppercase !important;\n  background:#BF863C !important; color:#F1E6DD !important;\n  padding:14px 30px !important; border:none !important; border-radius:999px !important;\n  transition: background 1s cubic-bezier(.22,1,.36,1), transform 1s cubic-bezier(.22,1,.36,1), box-shadow 1s cubic-bezier(.22,1,.36,1) !important;\n  text-decoration: none !important;\n}\n.btn-pill:hover, a.btn-pill:hover {\n  background:#A06E32 !important;\n  color:#F1E6DD !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 10px 22px -10px rgba(67,44,32,.45) !important;\n  text-decoration: none !important;\n}\n.btn-pill svg, a.btn-pill svg {\n  transition: transform 1.4s cubic-bezier(.6,.04,.2,1) !important;\n}\n.btn-pill:hover svg, a.btn-pill:hover svg {\n  transform: translateX(10px) !important;\n}\n\n\/* Disable any Hello Elementor button styling that interferes *\/\na.btn-trade:focus, a.btn-pill:focus {\n  outline: 2px solid #BF863C !important;\n  outline-offset: 3px !important;\n}\n\n.hero-h1 .w { margin-right: .28em !important; }\n.hero-h1 .w:last-child { margin-right: 0 !important; }\nh1.hero-h1 { max-width: 20ch !important; }\n<\/style>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,500;0,8..60,600;1,8..60,400;1,8..60,500&#038;family=Epilogue:wght@400;500;600&#038;family=Cormorant+Garamond:ital,wght@0,400;0,500;1,400&#038;family=Playfair+Display:ital,wght@0,500;0,600;1,500&#038;family=Cormorant:wght@300;400&#038;display=swap\" rel=\"stylesheet\">\n<style>\n\/* ---------------- TOKENS ---------------- *\/\n:root{\n  --cream:#F1E6DD;\n  --cream-2:#FAF4EC;\n  --cream-3:#E9DCCF;\n  --gold:#BF863C;\n  --gold-dark:#A06E32;\n  --gold-light:#D9A862;\n  --logo-gold:#654916;\n  --brand:#654916;\n  --bordeaux:#521419;\n  --brown:#432C20;\n  --brown-deep:#2E1E15;\n  --ink:#1A1209;\n  --ink-2:#3A2A1F;\n\n  --serif:\"Source Serif 4\",\"Minion Pro\",\"EB Garamond\",Georgia,serif;\n  --sans:\"Epilogue\",\"Helvetica Neue\",Arial,sans-serif;\n\n  --ease:cubic-bezier(.165,.84,.44,1);\n  --ease-soft:cubic-bezier(.22,1,.36,1); \/* expo-out: more languid for hovers *\/\n  --ease-graceful:cubic-bezier(.6,.04,.2,1); \/* soft S-curve, slow start + soft landing *\/\n}\n*{box-sizing:border-box}\nhtml{scroll-behavior:auto;scroll-padding-top:90px} \/* JS handles smooth scroll *\/\nhtml,body{margin:0;padding:0;background:var(--cream);color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}\nbody{overflow-x:hidden}\nimg{max-width:100%;display:block}\na{color:inherit;text-decoration:none}\nbutton{font:inherit;cursor:pointer}\n\n\/* selection *\/\n::selection{background:var(--gold);color:var(--cream)}\n\n\/* ---------------- BRAND LOGO (real artwork via CSS mask) ---------------- *\/\n.brand-logo{\n  display:block;flex:none;\n  background-color:var(--brand);\n  -webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini.svg\");\n          mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini.svg\");\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;\n  -webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n  transition:background-color .9s var(--ease-soft);\n}\n.brand-logo--mark{\n  -webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n}\n.brand-logo--light{background-color:var(--cream)}\n.brand-logo--gold{background-color:var(--gold)}\n.brand-logo--brand{background-color:var(--brand)}\n\n\/* sizes \u2014 preserve 190:155 aspect of the full logo *\/\n.brand-logo--xs{width:30px;height:30px}                 \/* mark *\/\n.brand-logo--sm{width:34px;height:34px}                 \/* mark in scroll disc *\/\n.brand-logo--md{width:69px;height:56px}                 \/* header full *\/\n.brand-logo--md.brand-logo--mark{width:42px;height:42px}\n.brand-logo--lg{width:122px;height:100px}               \/* footer full *\/\n\n\/* ---------------- LOGO (placeholder wordmark) ---------------- *\/\n.logo{display:inline-flex;align-items:center;gap:14px;color:var(--logo-gold)}\n.logo .quad{width:34px;height:34px;color:currentColor;flex:none}\n.logo .wm{font-family:var(--serif);font-style:italic;font-weight:500;line-height:1;letter-spacing:.02em}\n.logo .wm-top{font-size:22px;display:block}\n.logo .wm-bot{font-family:var(--sans);font-style:normal;font-weight:500;font-size:10px;letter-spacing:.42em;display:block;margin-top:4px;color:inherit}\n.logo--light{color:var(--cream)}\n.logo--footer{color:var(--cream)}\n.logo--footer .quad{width:42px;height:42px}\n.logo--footer .wm-top{font-size:26px}\n\n\/* ---------------- HEADER ---------------- *\/\n.site-header{\n  position:fixed;inset:0 0 auto 0;z-index:50;\n  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:32px;\n  padding:18px 40px;\n  transition:background .6s var(--ease-soft), backdrop-filter .6s var(--ease-soft), border-color .6s var(--ease-soft), padding .6s var(--ease-soft);\n  border-bottom:1px solid transparent;\n}\n.site-header.scrolled{\n  background:rgba(241,230,221,.82);\n  backdrop-filter:blur(14px);\n  -webkit-backdrop-filter:blur(14px);\n  border-bottom-color:rgba(140,119,81,.18);\n  padding:12px 40px;\n}\n.site-header .logo--light{transition:opacity .3s var(--ease);}\n.site-header.scrolled .logo--light{opacity:0;pointer-events:none;position:absolute;left:40px;top:14px}\n.site-header .logo--dark{opacity:0;pointer-events:none;position:absolute;left:40px;top:14px;transition:opacity .3s var(--ease)}\n.site-header.scrolled .logo--dark{opacity:1;pointer-events:auto;position:static}\n\n.site-nav{justify-self:center;display:flex;gap:32px}\n.site-nav a{\n  font-family:var(--serif);font-size:15.5px;color:var(--cream);\n  position:relative;padding:6px 2px;letter-spacing:.005em;\n  transition:color .75s var(--ease-soft);\n}\n.site-nav a::after{content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .85s var(--ease-soft);opacity:.6}\n.site-nav a:hover::after{transform:scaleX(1)}\n.site-header.scrolled .site-nav a{color:var(--ink)}\n\n.header-right{justify-self:end;display:flex;align-items:center;gap:22px}\n.lang{font-family:var(--sans);font-size:11px;letter-spacing:.32em;color:var(--cream);display:flex;gap:8px;align-items:center;transition:color .3s var(--ease)}\n.lang .sep{opacity:.45}\n.lang .active{font-weight:600;border-bottom:1px solid currentColor;padding-bottom:2px}\n.site-header.scrolled .lang{color:var(--ink)}\n\n.btn-trade{\n  font-family:var(--sans);font-size:11px;letter-spacing:.28em;text-transform:uppercase;\n  background:var(--gold);color:var(--cream);\n  padding:11px 22px;border:1px solid var(--gold);border-radius:999px;\n  transition:background .85s var(--ease-soft), border-color .85s var(--ease-soft), color .85s var(--ease-soft), transform .85s var(--ease-soft), box-shadow .85s var(--ease-soft);\n}\n.btn-trade:hover{background:var(--gold-dark);border-color:var(--gold-dark);transform:translateY(-1px);box-shadow:0 8px 18px -8px rgba(67,44,32,.4)}\n\n\/* ---------------- HERO ---------------- *\/\n.hero{\n  position:relative;min-height:100vh;background:var(--cream);\n  overflow:visible;\n}\n.hero-photo{position:absolute;inset:0;overflow:hidden;z-index:1}\n.hero-photo img{width:100%;height:120%;object-fit:cover;transform:translate3d(0,0,0) scale(1.08);will-change:transform}\n\/* veil top-left for legibility + dedicated top veil so the header always reads *\/\n.hero-photo::before{\n  content:\"\";position:absolute;inset:0;\n  background:\n    linear-gradient(180deg, rgba(20,12,7,.58) 0%, rgba(20,12,7,.34) 16%, rgba(20,12,7,0) 34%),\n    linear-gradient(135deg, rgba(20,12,7,.62) 0%, rgba(20,12,7,.28) 38%, rgba(20,12,7,0) 64%);\n  z-index:2;\n}\n\/* cream crescent bottom *\/\n.hero-photo::after{\n  content:\"\";position:absolute;\n  left:-32%;right:-32%;bottom:-72%;\n  height:94%;width:164%;\n  background:var(--cream);\n  border-radius:50%;\n  filter:drop-shadow(0 -22px 36px rgba(46,30,21,.75)) drop-shadow(0 -6px 12px rgba(46,30,21,.4));\n  z-index:3;\n}\n\n.hero-text{\n  position:absolute;top:172px;left:5vw;right:5vw;max-width:880px;z-index:4;color:var(--cream);\n}\n.eyebrow{\n  font-family:var(--sans);font-size:11px;letter-spacing:.42em;text-transform:uppercase;\n  color:var(--gold-light);display:inline-flex;align-items:center;gap:14px;\n}\n.rule{display:inline-block;width:48px;height:1px;background:var(--gold-light);vertical-align:middle}\n.rule-h{display:block;width:48px;height:1px;background:var(--gold);margin-bottom:18px}\n\nh1.hero-h1{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(40px,4.6vw,72px);line-height:1.06;letter-spacing:-.008em;\n  text-wrap:balance;color:var(--cream);\n  margin:18px 0 22px;max-width:14ch;\n}\nh1.hero-h1 .w{display:inline-block;opacity:0;transform:translateY(28px);animation:rise 1.1s var(--ease) forwards}\n@keyframes rise{to{opacity:1;transform:translateY(0)}}\n\n.hero-sub{\n  font-family:var(--serif);font-size:18px;line-height:1.55;max-width:46ch;\n  color:rgba(241,230,221,.86);font-weight:400;margin:0 0 32px;\n}\n.hero-cta{\n  position:relative;\n  display:inline-flex;align-items:center;gap:14px;\n  font-family:var(--sans);font-size:12px;letter-spacing:.32em;text-transform:uppercase;\n  color:var(--cream);padding:14px 0;\n  transition:color 1s var(--ease-soft);\n}\n.hero-cta::after{\n  content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px;\n  background:var(--gold-light);transform-origin:left center;transform:scaleX(1);\n  transition:transform 1.4s var(--ease-graceful), background-color 1s var(--ease-soft);\n}\n.hero-cta:hover{color:var(--gold-light)}\n.hero-cta:hover::after{transform:scaleX(1.14)}\n.hero-cta svg{transition:transform 1.4s var(--ease-graceful)}\n.hero-cta:hover svg{transform:translateX(14px)}\n\n\/* ---------------- SCORRI DISC ---------------- *\/\n.scroll-disc{\n  position:absolute;left:50%;bottom:calc(22% - 60px);transform:translateX(-50%);\n  width:120px;height:120px;border-radius:50%;background:var(--cream);\n  z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;\n  box-shadow:\n    0 28px 50px -14px rgba(67,44,32,.45),\n    0 6px 14px rgba(67,44,32,.18),\n    inset 0 0 0 1px rgba(140,119,81,.45);\n  color:var(--logo-gold);\n  transition:transform .85s var(--ease-soft), box-shadow .85s var(--ease-soft);\n  cursor:pointer;\n}\n.scroll-disc:hover{transform:translate(-50%,3px);box-shadow:0 18px 32px -12px rgba(67,44,32,.4),0 4px 10px rgba(67,44,32,.16),inset 0 0 0 1px rgba(140,119,81,.45)}\n.scroll-disc .quad{width:36px;height:36px;animation:bounce 2.4s var(--ease) infinite}\n.scroll-disc .label{font-family:var(--sans);font-size:12px;letter-spacing:.38em;color:var(--brand);font-weight:500;padding-left:.38em}\n.scroll-disc-mark{animation:bounce 2.4s var(--ease) infinite}\n@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}\n\n\/* ---------------- SECTION: VALORI ---------------- *\/\n.valori{padding:0 56px 30px;background:var(--cream);position:relative}\n.valori-inner{display:grid;grid-template-columns:38% 1fr;gap:80px;align-items:start;max-width:1320px;margin:0 auto;padding-top:40px}\n.valori-text h2{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(34px,3.2vw,52px);line-height:1.08;letter-spacing:-.008em;\n  color:var(--ink);margin:18px 0 22px;text-wrap:balance;max-width:14ch;\n}\n.valori-text p{font-size:17px;line-height:1.7;color:var(--ink-2);max-width:38ch;margin:0 0 28px}\n.valori-text .link-cta{\n  position:relative;\n  font-family:var(--sans);font-size:11.5px;letter-spacing:.32em;text-transform:uppercase;\n  color:var(--gold-dark);padding-bottom:6px;\n  display:inline-flex;align-items:center;gap:10px;\n  transition:color 1s var(--ease-soft)\n}\n.valori-text .link-cta::after{\n  content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px;\n  background:currentColor;transform-origin:left center;transform:scaleX(1);\n  transition:transform 1.4s var(--ease-graceful);\n}\n.valori-text .link-cta:hover{color:var(--gold)}\n.valori-text .link-cta:hover::after{transform:scaleX(1.18)}\n.valori-text .link-cta svg{transition:transform 1.4s var(--ease-graceful)}\n.valori-text .link-cta:hover svg{transform:translateX(14px)}\n\n.cards{display:grid;grid-template-columns:1fr 1fr;gap:48px 56px}\n.card{display:flex;flex-direction:column;align-items:flex-start;gap:18px}\n.card-icon{\n  position:relative;width:86px;height:86px;display:grid;place-items:center;\n  border-radius:50%;\n  transition:transform .9s var(--ease-soft);\n}\n.card-icon::before{\n  content:\"\";position:absolute;inset:0;border-radius:50%;\n  border:1px solid rgba(140,119,81,.4);\n  transition:transform .9s var(--ease-soft), border-color .9s var(--ease-soft);\n}\n.card-icon .ring{\n  position:absolute;inset:7px;border-radius:50%;\n  border:1px solid var(--gold);\n  display:grid;place-items:center;\n  background:var(--cream-2);\n  transition:transform .9s var(--ease-soft), background-color .9s var(--ease-soft);\n}\n.card-icon svg{width:32px;height:32px;color:var(--gold);transition:transform .9s var(--ease-soft)}\n.card:hover .card-icon::before{transform:scale(1.08)}\n.card:hover .card-icon .ring{transform:scale(1.04)}\n.card h3{font-family:var(--serif);font-style:italic;font-weight:500;font-size:24px;letter-spacing:-.005em;margin:0;color:var(--ink)}\n.card p{font-family:var(--serif);font-style:italic;font-weight:400;font-size:15.5px;line-height:1.55;color:var(--ink-2);margin:0;max-width:28ch}\n\n.valori-divider{\n  display:flex;align-items:center;justify-content:center;gap:18px;\n  margin:32px auto 0;max-width:520px;color:var(--gold);\n}\n.valori-divider .line{flex:1;height:1px;background:currentColor;opacity:.45}\n.valori-divider .quad{width:22px;height:22px}\n\n\/* ---------------- SECTION: NUMERI ---------------- *\/\n.numeri{\n  position:relative;padding:160px 56px 180px;\n  background:var(--brown-deep);color:var(--cream);overflow:hidden;\n}\n.numeri .bg{position:absolute;inset:0;overflow:hidden;z-index:0}\n.numeri .bg img{width:100%;height:120%;object-fit:cover;opacity:.55;will-change:transform}\n.numeri .veil{\n  position:absolute;inset:0;z-index:1;\n  background:linear-gradient(180deg, rgba(46,30,21,.55) 0%, rgba(46,30,21,.78) 50%, rgba(46,30,21,.55) 100%);\n}\n.numeri::before, .numeri::after{\n  content:\"\";position:absolute;left:-32%;right:-32%;width:164%;\n  background:var(--cream);border-radius:50%;\n  z-index:3;height:60%;\n  filter:drop-shadow(0 -22px 36px rgba(46,30,21,.6)) drop-shadow(0 -6px 12px rgba(46,30,21,.35));\n}\n.numeri::before{top:-46%}\n.numeri::after{bottom:-46%;filter:drop-shadow(0 22px 36px rgba(46,30,21,.6)) drop-shadow(0 6px 12px rgba(46,30,21,.35))}\n\n.numeri-inner{position:relative;z-index:4;max-width:1180px;margin:0 auto;text-align:center}\n.numeri .eyebrow{color:var(--gold-light)}\n.numeri h2{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(34px,3.4vw,54px);line-height:1.1;letter-spacing:-.008em;\n  margin:20px auto 12px;max-width:18ch;text-wrap:balance;color:var(--cream);\n}\n.numeri .lede{font-size:17px;line-height:1.65;max-width:54ch;margin:0 auto 80px;color:rgba(241,230,221,.78)}\n.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:48px}\n.stat{display:flex;flex-direction:column;align-items:center;gap:14px}\n.stat .num{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(48px,5.4vw,88px);line-height:1;letter-spacing:-.012em;\n  color:var(--cream);\n}\n.stat .div{width:32px;height:1px;background:var(--gold-light)}\n.stat .lab{font-family:var(--serif);font-style:italic;font-weight:400;font-size:14.5px;letter-spacing:.02em;color:rgba(241,230,221,.78);max-width:14ch;text-align:center;line-height:1.4}\n\n\/* ---------------- SECTION: CTA FINALE ---------------- *\/\n.cta-final{padding:60px 56px 0;background:var(--cream);position:relative;text-align:center}\n.cta-final .rule-h{margin:18px auto 28px}\n.cta-final h2{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(34px,3.4vw,56px);line-height:1.08;letter-spacing:-.008em;\n  color:var(--ink);margin:0 auto 22px;max-width:18ch;text-wrap:balance;\n}\n.cta-final p{font-size:17px;line-height:1.65;max-width:56ch;margin:0 auto 36px;color:var(--ink-2)}\n.btn-pill{\n  display:inline-flex;align-items:center;gap:14px;\n  font-family:var(--sans);font-size:11.5px;letter-spacing:.3em;text-transform:uppercase;\n  background:var(--gold);color:var(--cream);padding:14px 30px;border:none;border-radius:999px;\n  transition:background 1s var(--ease-soft), transform 1s var(--ease-soft), box-shadow 1s var(--ease-soft);\n}\n.btn-pill:hover{background:var(--gold-dark);transform:translateY(-1px);box-shadow:0 10px 22px -10px rgba(67,44,32,.45)}\n.btn-pill svg{transition:transform 1.4s var(--ease-graceful)}\n.btn-pill:hover svg{transform:translateX(10px)}\n\n.family-crescent{\n  position:relative;width:min(960px,92vw);aspect-ratio:2\/1;margin:80px auto -1px;\n  background:var(--gold);\n  clip-path:ellipse(50% 100% at 50% 100%);\n  filter:drop-shadow(0 -8px 26px rgba(46,30,21,.4)) drop-shadow(0 -2px 8px rgba(46,30,21,.25));\n}\n.family-crescent::before{\n  content:\"\";position:absolute;inset:5px;background:var(--cream);\n  clip-path:ellipse(50% 100% at 50% 100%);\n}\n.family-crescent img{\n  position:absolute;inset:18px;width:calc(100% - 36px);height:calc(100% - 18px);object-fit:cover;\n  clip-path:ellipse(50% 100% at 50% 100%);\n}\n\n\/* ---------------- FOOTER ---------------- *\/\n.site-footer{background:var(--brown);color:var(--cream);padding:80px 56px 0;position:relative;z-index:2}\n.foot-grid{\n  display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;gap:56px;\n  max-width:1320px;margin:0 auto;padding-bottom:60px;\n  border-bottom:1px solid rgba(217,168,98,.22);\n}\n.foot-grid h4{\n  font-family:var(--sans);font-size:11px;letter-spacing:.32em;text-transform:uppercase;\n  color:var(--gold-light);font-weight:500;margin:0 0 22px;\n}\n.foot-grid ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}\n.foot-grid li a, .foot-grid p, .foot-grid address{font-family:var(--serif);font-size:16px;color:var(--cream);line-height:1.55;font-style:normal}\n.foot-grid li a{position:relative;display:inline-block}\n.foot-grid li a{transition:color .75s var(--ease-soft)}\n.foot-grid li a:hover{color:var(--gold-light)}\n.foot-grid li a::after{content:\"\";position:absolute;left:0;bottom:-3px;height:1px;width:0;background:var(--gold-light);transition:width .85s var(--ease-soft)}\n.foot-grid li a:hover::after{width:100%}\n.foot-grid address{font-style:normal}\n.foot-grid .col-logo{display:flex;flex-direction:column;gap:20px}\n.foot-grid .col-logo p{font-style:italic;color:rgba(241,230,221,.75);font-size:15px;max-width:30ch;margin:0}\n\n.foot-bottom{\n  max-width:1320px;margin:0 auto;padding:24px 0 28px;\n  display:flex;justify-content:space-between;align-items:center;gap:24px;\n  font-family:var(--sans);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:rgba(241,230,221,.55);\n}\n.foot-bottom a{transition:color .75s var(--ease-soft)}\n.foot-bottom a:hover{color:var(--gold-light)}\n.foot-bottom .links{display:flex;gap:24px}\n\n\/* ---------------- SCROLL PROGRESS ---------------- *\/\n.scroll-prog{\n  position:fixed;left:0;top:0;bottom:0;width:3px;z-index:90;pointer-events:none;\n  background:rgba(140,119,81,.08);\n}\n.scroll-prog::before{\n  content:\"\";position:absolute;left:0;top:0;width:100%;height:var(--p, 0%);\n  background:linear-gradient(180deg, var(--gold-light), var(--gold));\n  transition:height .2s linear;\n}\n\n\/* ---------------- HERO SCROLL TRANSFORM ---------------- *\/\n.hero-text{will-change:transform,opacity}\n.hero-photo img{will-change:transform}\n\n\/* ---------------- CARD HORIZONTAL ENTRY ---------------- *\/\n[data-card]{will-change:transform,opacity}\n\n\/* ---------------- CHI SIAMO \u2014 HERO (editorial composition v2) ---------------- *\/\n.hero-about{\n  background:var(--cream);\n  padding:160px 56px 110px;\n  position:relative;\n  overflow:hidden;\n}\n.hero-about-inner{\n  max-width:1320px;margin:0 auto;\n  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,0.95fr);\n  gap:80px;align-items:center;\n  position:relative;\n}\n\n\/* ---- text column ---- *\/\n.hero-about-text{padding-top:0;max-width:560px;position:relative;z-index:3}\n.hero-about-eyebrow{\n  display:inline-flex;align-items:center;gap:14px;\n  font-family:var(--sans);font-size:11px;letter-spacing:.42em;text-transform:uppercase;\n  color:var(--gold-dark);margin:0 0 24px;\n}\n.hero-about-eyebrow::before{\n  content:\"\";display:block;width:40px;height:1px;background:currentColor;\n}\n.hero-about-h1{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(48px,5.6vw,84px);line-height:1.02;letter-spacing:-.015em;\n  color:var(--brand);\n  margin:0 0 30px;\n}\n.hero-about-h1 .w{display:inline-block;opacity:0;transform:translateY(28px);animation:rise 1.1s var(--ease) forwards;margin-right:.22em}\n.hero-about-lede{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(20px,1.6vw,26px);line-height:1.3;color:var(--ink);\n  margin:0 0 24px;text-wrap:balance;max-width:24ch;\n}\n.hero-about-body{\n  font-family:var(--serif);font-size:16px;line-height:1.7;color:var(--ink-2);\n  margin:0;max-width:44ch;text-wrap:pretty;\n}\n\n\/* ---- photo column \u2014 height matches text, no excess ---- *\/\n.hero-about-photo{\n  position:relative;width:100%;\n  aspect-ratio:4\/5;\n  max-height:520px;\n  justify-self:end;\n  align-self:center;\n}\n\n\/* Soft gold square offset behind photo \u2014 peeks above and to the lower-left only *\/\n.hero-deco-square{\n  position:absolute;\n  inset:-8% 0 -6% -6%;\n  background:linear-gradient(135deg, rgba(217,168,98,.18), rgba(191,134,60,.10));\n  border:1px solid rgba(140,119,81,.32);\n  z-index:0;\n  pointer-events:none;\n  animation:hero-deco-drift 14s ease-in-out infinite;\n}\n@keyframes hero-deco-drift{\n  0%,100%{transform:translate(0,0)}\n  50%{transform:translate(-4px,-4px)}\n}\n\n\/* Brand mark (small) upper-right \u2014 peeks out from behind the photo *\/\n.hero-deco-ring{\n  position:absolute;\n  top:-14%;right:-16%;\n  width:34%;aspect-ratio:1;\n  z-index:0;pointer-events:none;\n  animation:hero-deco-spin 42s linear infinite;\n  opacity:.55;\n}\n.hero-deco-ring .brand-logo{\n  width:100%;height:100%;\n  -webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  background-color:var(--gold);\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;\n  -webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n}\n\n\/* Brand mark (large) lower-left counter-rotating \u2014 sits in the open space below the text *\/\n.hero-deco-ring-2{\n  position:absolute;\n  bottom:-22%;left:-22%;\n  width:58%;aspect-ratio:1;\n  z-index:0;pointer-events:none;\n  animation:hero-deco-spin-rev 56s linear infinite;\n  opacity:.32;\n}\n.hero-deco-ring-2 .brand-logo{\n  width:100%;height:100%;\n  -webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  background-color:var(--gold-dark);\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;\n  -webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n}\n\n\/* Solid gold quarter-arc that sweeps across the upper edge *\/\n.hero-deco-arc{\n  position:absolute;\n  top:-4%;left:-8%;\n  width:120%;aspect-ratio:2.4\/1;\n  z-index:0;pointer-events:none;\n}\n.hero-deco-arc svg{width:100%;height:100%;overflow:visible}\n.hero-deco-arc path{\n  fill:none;stroke:var(--gold);\n  stroke-width:.6;opacity:.45;\n  stroke-dasharray:240;stroke-dashoffset:240;\n  animation:hero-arc-draw 6s var(--ease-soft) 1s forwards, hero-arc-float 9s ease-in-out 7s infinite;\n}\n@keyframes hero-arc-draw{\n  to{stroke-dashoffset:0}\n}\n@keyframes hero-arc-float{\n  0%,100%{transform:translate(0,0)}\n  50%{transform:translate(0,-4px)}\n}\n\n\/* Floating gold sparkles *\/\n.hero-deco-sparkle{\n  position:absolute;\n  width:6px;height:6px;border-radius:50%;\n  background:var(--gold);\n  z-index:0;pointer-events:none;\n  box-shadow:0 0 0 4px rgba(191,134,60,.12);\n}\n.hero-deco-sparkle--1{top:18%;left:-4%;animation:sparkle-float-1 8s ease-in-out infinite}\n.hero-deco-sparkle--2{top:62%;right:-3%;animation:sparkle-float-2 11s ease-in-out infinite}\n.hero-deco-sparkle--3{bottom:24%;left:8%;width:4px;height:4px;background:var(--gold-light);animation:sparkle-float-3 9s ease-in-out infinite}\n@keyframes sparkle-float-1{\n  0%,100%{transform:translate(0,0);opacity:.7}\n  50%{transform:translate(8px,-12px);opacity:1}\n}\n@keyframes sparkle-float-2{\n  0%,100%{transform:translate(0,0);opacity:.6}\n  50%{transform:translate(-10px,8px);opacity:1}\n}\n@keyframes sparkle-float-3{\n  0%,100%{transform:translate(0,0);opacity:.5}\n  50%{transform:translate(6px,-8px);opacity:.9}\n}\n\n@keyframes hero-deco-spin{\n  to{transform:rotate(360deg)}\n}\n@keyframes hero-deco-spin-rev{\n  to{transform:rotate(-360deg)}\n}\n\n\/* Photo card *\/\n.hero-photo-card{\n  position:absolute;\n  inset:0;\n  border-radius:3px;\n  overflow:hidden;\n  z-index:1;\n}\n.hero-photo-card img{\n  position:absolute;inset:0;width:100%;height:100%;\n  object-fit:cover;object-position:50% 22%;\n  will-change:transform;\n}\n\n\/* Year stamp \u2014 small, integrated *\/\n.hero-photo-year{\n  position:absolute;\n  bottom:-18px;right:8%;\n  display:inline-flex;align-items:center;gap:12px;\n  background:var(--brand);color:var(--cream);\n  padding:10px 18px;\n  z-index:3;\n  box-shadow:0 14px 28px -14px rgba(46,30,21,.4);\n}\n.hero-photo-year .year-dot{\n  width:6px;height:6px;border-radius:50%;\n  background:var(--gold-light);\n  flex:none;\n  animation:year-pulse 3.2s ease-in-out infinite;\n}\n@keyframes year-pulse{\n  0%,100%{opacity:1;transform:scale(1)}\n  50%{opacity:.6;transform:scale(1.3)}\n}\n.hero-photo-year .year-text{\n  font-family:var(--sans);font-size:10.5px;letter-spacing:.36em;text-transform:uppercase;\n  line-height:1;color:var(--cream);\n}\n.hero-photo-year .year-text em{font-style:normal;font-weight:600;color:var(--gold-light);letter-spacing:.04em}\n.hero-about-photo img{\n  position:absolute;inset:-6%;width:112%;height:112%;object-fit:cover;\n  will-change:transform;\n}\n\n\/* ---------------- THREE PILLARS \u2014 Vision \/ Mission \/ Storia ---------------- *\/\n.pillars{\n  background:var(--cream);\n  padding:80px 56px 60px;\n  position:relative;\n}\n.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n.pillars-grid{\n  max-width:1320px;margin:0 auto;\n  display:grid;\n  grid-template-columns:1fr 1px 1fr 1px 1fr;\n  gap:48px 56px;align-items:start;\n}\n.pillar{display:flex;flex-direction:column;gap:18px;min-width:0}\n.pillar-kicker{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:14.5px;color:var(--gold-dark);letter-spacing:.01em;\n}\n.pillar-h{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(24px,2vw,30px);line-height:1.15;letter-spacing:-.005em;\n  color:var(--brand);margin:0 0 4px;text-wrap:balance;\n}\n.pillar-body{display:flex;flex-direction:column;gap:18px}\n.pillar-body p{\n  font-family:var(--serif);font-size:16px;line-height:1.6;color:var(--ink-2);\n  margin:0;max-width:36ch;\n}\n.pillar-body em{font-style:italic;color:var(--brand);font-weight:500}\n.drop{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  color:var(--brand);\n}\n\n\/* Vision pillar \u2014 decorative element filling the empty column space *\/\n.pillar-deco{\n  position:relative;\n  margin-top:48px;\n  min-height:240px;\n  display:flex;flex-direction:column;align-items:flex-start;gap:0;\n}\n.pillar-deco-mark{\n  display:block;width:96px;height:96px;\n  background-color:var(--gold);\n  -webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;\n  -webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n  opacity:.22;\n  animation:pillar-deco-spin 36s linear infinite;\n}\n.pillar-deco-rule{\n  display:block;width:1px;height:40px;\n  background:linear-gradient(180deg, var(--gold), transparent);\n  margin:18px 0 16px 48px;\n  opacity:.6;\n}\n.pillar-deco-line{\n  display:block;width:48px;height:1px;background:var(--gold);\n  opacity:.65;margin-bottom:18px;\n}\n.pillar-deco-quote{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:18px;line-height:1.55;color:var(--brand);\n  opacity:.78;letter-spacing:-.005em;\n}\n.pillar-deco-quote em{font-style:italic}\n\/* Two small orbiting dots that float in the empty space *\/\n.pillar-deco-orbit{\n  position:absolute;border-radius:50%;\n  background:var(--gold);\n  box-shadow:0 0 0 4px rgba(191,134,60,.14);\n  pointer-events:none;\n}\n.pillar-deco-orbit--1{\n  top:30px;right:0;width:6px;height:6px;\n  animation:pillar-orbit-1 9s ease-in-out infinite;\n}\n.pillar-deco-orbit--2{\n  bottom:6px;right:28%;width:4px;height:4px;background:var(--gold-light);\n  box-shadow:0 0 0 3px rgba(217,168,98,.16);\n  animation:pillar-orbit-2 12s ease-in-out infinite;\n}\n@keyframes pillar-deco-spin{\n  to{transform:rotate(360deg)}\n}\n@keyframes pillar-orbit-1{\n  0%,100%{transform:translate(0,0);opacity:.7}\n  50%{transform:translate(-14px,10px);opacity:1}\n}\n@keyframes pillar-orbit-2{\n  0%,100%{transform:translate(0,0);opacity:.55}\n  50%{transform:translate(10px,-8px);opacity:.95}\n}\n\n\/* Vertical divider with mark in the middle *\/\n.pillar-div{\n  display:flex;flex-direction:column;align-items:center;justify-content:center;\n  gap:18px;width:1px;align-self:stretch;\n  padding-top:48px;\n}\n.pillar-div-line{\n  flex:1;width:1px;background:linear-gradient(180deg, transparent, rgba(140,119,81,.35) 12%, rgba(140,119,81,.35) 88%, transparent);\n  min-height:60px;\n}\n.pillar-div-mark{flex:none;width:22px;height:22px;opacity:.85}\n\n\/* ---------------- BROTHERS PORTRAIT + DECORATIVE CURVE ---------------- *\/\n.brothers-wrap{\n  position:relative;background:var(--cream);\n  padding:0 56px;\n  height:240px;\n  display:flex;align-items:flex-start;justify-content:center;\n  margin-top:-60px;\n}\n.brothers-curve{\n  position:absolute;left:50%;top:80px;transform:translateX(-50%);\n  width:min(1500px,96vw);height:520px;\n  border-radius:50%;\n  background:transparent;\n  border:1px solid rgba(140,119,81,.18);\n  border-bottom:none;\n  pointer-events:none;\n}\n.brothers-portrait{\n  position:relative;margin:0;\n  width:260px;height:260px;border-radius:50%;\n  overflow:hidden;\n  background:var(--brown-deep);\n  box-shadow:\n    0 30px 60px -22px rgba(46,30,21,.55),\n    0 6px 16px -8px rgba(46,30,21,.4),\n    inset 0 0 0 6px var(--cream),\n    inset 0 0 0 7px rgba(140,119,81,.4);\n  z-index:2;\n  transform-origin:center;\n}\n.brothers-portrait img{\n  position:absolute;inset:-4%;width:108%;height:108%;object-fit:cover;\n  will-change:transform;\n}\n\n\/* ---------------- TERRITORI ---------------- *\/\n.territori{\n  background:var(--cream);\n  padding:60px 56px 140px;\n  position:relative;\n}\n.territori-inner{\n  max-width:1320px;margin:0 auto;\n  display:grid;grid-template-columns:0.85fr 1.15fr;gap:64px;align-items:center;\n}\n.territori-text h2{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(30px,3vw,46px);line-height:1.08;letter-spacing:-.005em;\n  color:var(--brand);margin:14px 0 26px;text-wrap:balance;max-width:14ch;\n}\n.territori-text p{\n  font-family:var(--serif);font-size:16.5px;line-height:1.7;color:var(--ink-2);\n  margin:0 0 20px;max-width:40ch;\n}\n.territori-text p em{font-style:italic;font-weight:500;color:var(--brand)}\n.territori-text .link-cta{\n  margin-top:8px;\n  font-family:var(--sans);font-size:11.5px;letter-spacing:.32em;text-transform:uppercase;\n  color:var(--gold-dark);padding-bottom:6px;\n  display:inline-flex;align-items:center;gap:10px;\n  position:relative;\n  transition:color 1s var(--ease-soft);\n}\n.territori-text .link-cta::after{\n  content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px;\n  background:currentColor;transform-origin:left center;transform:scaleX(1);\n  transition:transform 1.4s var(--ease-graceful);\n}\n.territori-text .link-cta:hover{color:var(--gold)}\n.territori-text .link-cta:hover::after{transform:scaleX(1.18)}\n.territori-text .link-cta svg{transition:transform 1.4s var(--ease-graceful)}\n.territori-text .link-cta:hover svg{transform:translateX(14px)}\n\n.territori-map{\n  position:relative;width:100%;\n}\n.territori-map .territori-map-img,\n.territori-map svg.territori-map-svg{\n  display:block;width:100%;height:auto;\n  filter:drop-shadow(0 14px 40px rgba(46,30,21,.12)) drop-shadow(0 4px 12px rgba(46,30,21,.06));\n}\n\n\/* Map animations \u2014 start when parent .territori-map has .in (revealed via scroll) *\/\n\n\/* Pin pop-in: graceful arrival. Pins are visible by default \u2014 entrance is transform-only\n   so a missed\/late animation start never leaves them invisible. *\/\n.territori-map.in .territori-map-svg .map-pins{\n  transform-origin:50% 100%;\n  animation:\n    map-pin-pop 1.6s cubic-bezier(.22,1,.36,1) .3s backwards,\n    map-pin-float 7.5s ease-in-out 2s infinite;\n}\n@keyframes map-pin-pop{\n  0%{opacity:0;transform:translate(0,-18px) scale(.92)}\n  60%{opacity:1;transform:translate(0,3px) scale(1.02)}\n  100%{opacity:1;transform:translate(0,0) scale(1)}\n}\n\/* Combined gentle bob + sway in one keyframe so they don't fight over transform *\/\n@keyframes map-pin-float{\n  0%,100%{transform:translate(0,0) rotate(0)}\n  25%{transform:translate(0,-3px) rotate(.5deg)}\n  50%{transform:translate(0,-5px) rotate(0)}\n  75%{transform:translate(0,-3px) rotate(-.5deg)}\n}\n\n\/* Pin pulse rings \u2014 radiating outward from each dot continuously *\/\n.territori-map.in .territori-map-svg .pin-pulse{\n  transform-origin:center;transform-box:fill-box;\n  animation:map-pin-ring 3.6s ease-out infinite;\n  pointer-events:none;\n}\n.territori-map.in .territori-map-svg .pin-pulse-2{animation-delay:1.2s}\n.territori-map.in .territori-map-svg .pin-pulse-3{animation-delay:2.4s}\n@keyframes map-pin-ring{\n  0%{opacity:.65;stroke-width:1.4;r:4.84}\n  85%{opacity:0;stroke-width:.3;r:26}\n  100%{opacity:0;r:26}\n}\n\n\/* Water (lake + rivers) \u2014 entrance + perpetual subtle shimmer *\/\n.territori-map.in .territori-map-svg [fill=\"#5aacc3\"]{\n  animation:\n    map-water-in 2s cubic-bezier(.22,1,.36,1) .05s backwards,\n    map-water-shimmer 7s ease-in-out 2.2s infinite;\n}\n@keyframes map-water-in{\n  0%{opacity:0;transform:scale(1.015)}\n  100%{opacity:1;transform:scale(1)}\n}\n@keyframes map-water-shimmer{\n  0%,100%{opacity:1}\n  50%{opacity:.88}\n}\n\n\/* Land regions: drift up gently *\/\n.territori-map.in .territori-map-svg [fill=\"#c5b7ac\"],\n.territori-map.in .territori-map-svg [fill=\"#c4b5ab\"],\n.territori-map.in .territori-map-svg [fill=\"#a08e81\"],\n.territori-map.in .territori-map-svg [fill=\"#a18c80\"],\n.territori-map.in .territori-map-svg [fill=\"#a69184\"]{\n  animation:map-land-in 1.8s cubic-bezier(.22,1,.36,1) .15s backwards;\n}\n@keyframes map-land-in{\n  0%{opacity:0;transform:translateY(10px)}\n  100%{opacity:1;transform:translateY(0)}\n}\n\n\/* Highlighted San Pietro region \u2014 perpetual subtle glow *\/\n.territori-map.in .territori-map-svg [fill=\"#a18c80\"]{\n  animation:\n    map-land-in 1.8s cubic-bezier(.22,1,.36,1) .15s backwards,\n    map-region-glow 5.2s ease-in-out 2.5s infinite;\n}\n@keyframes map-region-glow{\n  0%,100%{filter:brightness(1)}\n  50%{filter:brightness(1.06)}\n}\n\n\/* Labels (dark brown text) fade up after land settles *\/\n.territori-map.in .territori-map-svg [fill=\"#63463b\"]{\n  animation:map-label-in 1.4s ease-out .45s backwards;\n}\n@keyframes map-label-in{\n  0%{opacity:0;transform:translateY(4px)}\n  100%{opacity:1;transform:translateY(0)}\n}\n\n\/* Lighter beige background frame *\/\n.territori-map.in .territori-map-svg [fill=\"#dfd6d1\"]{\n  animation:map-frame-in 1.3s ease-out backwards;\n}\n@keyframes map-frame-in{\n  0%{opacity:0}\n  100%{opacity:1}\n}\n\n\/* Hover: gentle lift + slow pause on bob *\/\n.territori-map-svg:hover .map-pins{\n  transform:translate(0,-5px) scale(1.01);\n  transition:transform 1.4s var(--ease-soft);\n  animation-play-state:paused !important;\n}\n\n\/* ---------------- PERCH\u00c9 SCEGLIERCI ---------------- *\/\n.perche{\n  background:var(--cream-2);\n  padding:100px 56px 130px;\n  position:relative;\n  border-top:1px solid rgba(140,119,81,.18);\n}\n.perche-inner{max-width:1320px;margin:0 auto}\n.perche-head{display:flex;flex-direction:column;align-items:center;gap:18px;margin-bottom:64px;text-align:center}\n.perche-head h2{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(32px,3.4vw,52px);line-height:1.08;letter-spacing:-.008em;\n  color:var(--brand);margin:0;\n}\n.perche-grid{\n  display:grid;grid-template-columns:repeat(3,1fr);gap:0;\n  align-items:stretch;\n  border-top:1px solid rgba(140,119,81,.22);\n  padding-top:140px;\n  position:relative;\n}\n\/* Vertical dividers between cards (only between, not on outside) *\/\n.perche-grid::before,\n.perche-grid::after{\n  content:\"\";position:absolute;top:140px;bottom:0;width:1px;\n  background:linear-gradient(180deg,\n    transparent 0%,\n    rgba(140,119,81,.22) 18%,\n    rgba(140,119,81,.22) 82%,\n    transparent 100%);\n}\n.perche-grid::before{left:33.333%}\n.perche-grid::after{left:66.666%}\n\n.perche-card{\n  position:relative;\n  display:flex;flex-direction:column;align-items:center;gap:18px;\n  text-align:center;padding:0 36px 24px;\n  transition:transform 1.1s var(--ease-soft);\n}\n.perche-card:hover{transform:translateY(-6px)}\n\n\/* Large faded italic numeral watermark \u2014 sits fully above the medallion, visible *\/\n.perche-num{\n  position:absolute;top:-104px;left:50%;transform:translateX(-50%);\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:104px;line-height:1;color:var(--brand);\n  opacity:.32;letter-spacing:-.02em;\n  pointer-events:none;user-select:none;\n  z-index:0;\n  transition:opacity 1.2s var(--ease-soft), transform 1.4s var(--ease-soft);\n}\n.perche-card:hover .perche-num{opacity:.55;transform:translateX(-50%) translateY(-4px)}\n\n\/* Medallion wrapping the icon *\/\n.perche-medallion{\n  position:relative;width:92px;height:92px;display:grid;place-items:center;\n  z-index:1;\n  transition:transform 1.1s var(--ease-soft);\n}\n.perche-medallion::before{\n  content:\"\";position:absolute;inset:0;border-radius:50%;\n  border:1px solid rgba(140,119,81,.35);\n  transition:transform 1.2s var(--ease-soft), border-color 1.2s var(--ease-soft);\n}\n.perche-medallion::after{\n  content:\"\";position:absolute;inset:9px;border-radius:50%;\n  border:1px solid var(--gold);\n  background:var(--cream-2);\n  transition:transform 1.2s var(--ease-soft), background-color 1.2s var(--ease-soft);\n}\n.perche-card:hover .perche-medallion::before{transform:scale(1.08);border-color:var(--gold)}\n.perche-card:hover .perche-medallion::after{transform:scale(1.04)}\n\n\/* Continuously rotating gold \"halo\" \u2014 slow, perpetual *\/\n.perche-halo{\n  position:absolute;inset:-6px;border-radius:50%;pointer-events:none;\n}\n.perche-halo svg{position:absolute;inset:0;width:100%;height:100%;animation:perche-halo-spin 24s linear infinite}\n.perche-halo circle{fill:none;stroke:var(--gold);stroke-width:.6;stroke-dasharray:2 8;opacity:.45}\n@keyframes perche-halo-spin{\n  to{transform:rotate(360deg)}\n}\n\n.perche-icon{\n  position:relative;width:42px;height:42px;display:grid;place-items:center;\n  color:var(--brand);z-index:1;\n  transition:transform 1.2s var(--ease-soft);\n}\n.perche-card:hover .perche-icon{transform:scale(1.06)}\n.perche-icon svg{width:100%;height:100%;overflow:visible}\n\n\/* Icon-specific perpetual micro-animations *\/\n.icon-shield .icon-check{\n  stroke-dasharray:22;stroke-dashoffset:22;\n  animation:icon-check-draw 3.6s ease-in-out 1s infinite;\n}\n@keyframes icon-check-draw{\n  0%,15%{stroke-dashoffset:22}\n  35%,75%{stroke-dashoffset:0}\n  95%,100%{stroke-dashoffset:22}\n}\n\n.icon-truck .truck-body,\n.icon-truck .truck-wheel-1,\n.icon-truck .truck-wheel-2{\n  animation:icon-truck-roll 4.5s ease-in-out infinite;\n  transform-origin:center;\n}\n.icon-truck .truck-wheel-1{transform-origin:13px 33px;animation:icon-wheel-spin 4.5s ease-in-out infinite}\n.icon-truck .truck-wheel-2{transform-origin:35px 33px;animation:icon-wheel-spin 4.5s ease-in-out infinite}\n@keyframes icon-truck-roll{\n  0%,100%{transform:translateX(-1.5px)}\n  50%{transform:translateX(1.5px)}\n}\n@keyframes icon-wheel-spin{\n  0%{transform:rotate(0)}\n  50%{transform:rotate(180deg)}\n  100%{transform:rotate(360deg)}\n}\n\n.icon-house .house-window{\n  transform-origin:24px 18px;\n  animation:icon-house-glow 4.2s ease-in-out infinite;\n}\n@keyframes icon-house-glow{\n  0%,100%{fill:var(--brand);transform:scale(1)}\n  50%{fill:var(--gold);transform:scale(1.5)}\n}\n\n.perche-card h3{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:22px;color:var(--brand);margin:8px 0 0;\n  position:relative;z-index:1;\n}\n\/* Slim gold underline that grows on hover *\/\n.perche-card h3::after{\n  content:\"\";display:block;width:28px;height:1px;\n  background:var(--gold);margin:14px auto 0;\n  transform-origin:center;transform:scaleX(.6);\n  transition:transform 1.2s var(--ease-soft), background-color 1.2s var(--ease-soft);\n}\n.perche-card:hover h3::after{transform:scaleX(1.4);background:var(--gold-dark)}\n\n.perche-list{\n  list-style:none;padding:0;margin:8px 0 0;\n  display:flex;flex-direction:column;gap:10px;\n  position:relative;z-index:1;\n}\n.perche-list li{\n  font-family:var(--serif);font-size:15.5px;line-height:1.55;color:var(--ink-2);\n  max-width:30ch;text-wrap:balance;\n}\n.perche-list em{font-style:italic;color:var(--brand);font-weight:500}\n.perche-cta{display:flex;justify-content:center;margin-top:80px}\n\n\/* Reveal stagger \u2014 already triggered by JS via .reveal -> .in *\/\n.perche-card{\n  opacity:0;transform:translateY(36px);\n}\n.perche-card.reveal.in,\n.perche-card.in{\n  opacity:1;transform:translateY(0);\n  transition:opacity 1.2s var(--ease-soft), transform 1.4s var(--ease-soft);\n}\n\/* Numeral and medallion get their own slight stagger on entrance *\/\n.perche-card .perche-num{transform:translateX(-50%) translateY(8px)}\n.perche-card.in .perche-num{\n  transform:translateX(-50%) translateY(0);\n  transition:opacity 1.6s var(--ease-soft) .25s, transform 1.6s var(--ease-soft) .25s;\n}\n.perche-card .perche-medallion{transform:scale(.86) rotate(-6deg)}\n.perche-card.in .perche-medallion{\n  transform:scale(1) rotate(0);\n  transition:transform 1.4s var(--ease-soft) .15s;\n}\n\n\/* ---------------- RESPONSIVE for Chi Siamo ---------------- *\/\n@media (max-width:1100px){\n  .pillars-grid{\n    grid-template-columns:1fr;\n    gap:48px;\n  }\n  .pillar-div{\n    width:100%;height:1px;flex-direction:row;padding-top:0;\n  }\n  .pillar-div-line{width:100%;height:1px;min-height:0;\n    background:linear-gradient(90deg, transparent, rgba(140,119,81,.35) 12%, rgba(140,119,81,.35) 88%, transparent);}\n  .hero-about-inner{grid-template-columns:1fr;gap:48px}\n  .hero-about-text{padding-top:0}\n  .territori-inner{grid-template-columns:1fr;gap:48px}\n}\n@media (max-width:680px){\n  .hero-about{padding:120px 24px 40px}\n  .pillars,.territori,.perche{padding-left:24px;padding-right:24px}\n  .perche-grid{grid-template-columns:1fr;gap:40px;padding-top:48px}\n  .brothers-portrait{width:200px;height:200px}\n  .brothers-wrap{height:200px}\n  .brothers-curve{height:380px;top:60px}\n}\n\n\/* ============================================================\n   SOSTENIBILIT\u00c0 \u2014 unique editorial layout\n   ============================================================ *\/\n\n\/* HERO \u2014 large title block, photo strip below *\/\n.sost-hero{\n  background:var(--cream);\n  padding:160px 56px 0;\n  position:relative;\n  overflow:hidden;\n}\n.sost-hero-inner{\n  max-width:1320px;margin:0 auto 56px;\n  display:grid;grid-template-columns:1.3fr 0.7fr;gap:60px;align-items:end;\n}\n.sost-eyebrow{\n  display:inline-flex;align-items:center;gap:14px;\n  font-family:var(--sans);font-size:11px;letter-spacing:.42em;text-transform:uppercase;\n  color:var(--gold-dark);margin:0 0 28px;\n}\n.sost-eyebrow::before{\n  content:\"\";display:block;width:40px;height:1px;background:currentColor;\n}\n.sost-title{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(56px,8vw,128px);line-height:.98;letter-spacing:-.018em;\n  color:var(--brand);margin:0;text-wrap:balance;\n}\n.sost-title .w{display:inline-block;opacity:0;transform:translateY(28px);animation:rise 1.1s var(--ease) forwards;margin-right:.16em}\n.sost-lede{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(17px,1.45vw,22px);line-height:1.45;color:var(--ink-2);\n  margin:0;max-width:32ch;text-wrap:pretty;padding-bottom:18px;\n}\n\n\/* Wide cinematic photo strip below the title *\/\n.sost-hero-photo{\n  position:relative;width:100%;\n  height:clamp(360px,46vw,620px);\n  overflow:hidden;\n}\n.sost-hero-photo img{\n  position:absolute;inset:0;width:100%;height:108%;\n  object-fit:cover;object-position:50% 60%;\n  will-change:transform;\n}\n\/* gold rule overlay top *\/\n.sost-hero-photo::before{\n  content:\"\";position:absolute;left:56px;right:56px;top:0;height:1px;\n  background:var(--gold);opacity:.5;z-index:2;\n  transform-origin:left;animation:rule-extend 1.6s var(--ease-soft) forwards;\n}\n@keyframes rule-extend{\n  from{transform:scaleX(0)}\n  to{transform:scaleX(1)}\n}\n\/* corner badge *\/\n.sost-hero-badge{\n  position:absolute;bottom:32px;right:32px;\n  display:inline-flex;align-items:center;gap:14px;\n  background:var(--cream);padding:14px 22px;\n  z-index:3;\n  box-shadow:0 16px 32px -14px rgba(46,30,21,.4);\n}\n.sost-hero-badge .brand-logo{\n  width:24px;height:24px;\n  -webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  background-color:var(--brand);\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;\n  -webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n  animation:hero-deco-spin 28s linear infinite;\n}\n.sost-hero-badge-text{\n  font-family:var(--sans);font-size:10.5px;letter-spacing:.4em;text-transform:uppercase;\n  color:var(--brand);font-weight:600;line-height:1;\n}\n\n\/* ============================================================\n   IMPEGNI \u2014 vertical timeline\n   ============================================================ *\/\n.impegni{\n  background:var(--cream);\n  padding:140px 56px 140px;\n  position:relative;\n}\n.impegni-inner{\n  max-width:1080px;margin:0 auto;\n  display:grid;grid-template-columns:280px 1fr;gap:80px;align-items:start;\n}\n.impegni-intro{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(20px,1.7vw,26px);line-height:1.35;color:var(--brand);\n  margin:0;text-wrap:balance;\n  position:sticky;top:130px;\n}\n.impegni-intro::before{\n  content:\"\";display:block;width:48px;height:1px;background:var(--gold);margin-bottom:24px;\n}\n.impegni-list{\n  list-style:none;padding:0;margin:0;\n  position:relative;\n}\n\/* vertical rail *\/\n.impegni-list::before{\n  content:\"\";position:absolute;left:46px;top:6px;bottom:6px;width:1px;\n  background:linear-gradient(180deg,\n    transparent 0%,\n    rgba(140,119,81,.35) 8%,\n    rgba(140,119,81,.35) 92%,\n    transparent 100%);\n}\n.impegno{\n  position:relative;\n  display:grid;grid-template-columns:92px 1fr;gap:32px;align-items:center;\n  padding:36px 0;\n  border-bottom:1px solid rgba(140,119,81,.16);\n}\n.impegno:first-child{padding-top:0}\n.impegno:last-child{border-bottom:none;padding-bottom:0}\n.impegno-marker{\n  position:relative;width:92px;height:92px;\n  display:grid;place-items:center;\n  background:var(--cream);\n  z-index:1;\n}\n.impegno-marker::before{\n  content:\"\";position:absolute;inset:0;border-radius:50%;\n  border:1px solid var(--gold);background:var(--cream-2);\n  transition:transform 1s var(--ease-soft), border-color 1s var(--ease-soft);\n}\n.impegno:hover .impegno-marker::before{transform:scale(1.06);border-color:var(--gold-dark)}\n\/* Number stamp REMOVED \u2014 icons now stand alone *\/\n.impegno-icon{\n  position:relative;z-index:2;width:38px;height:44px;color:var(--brand);overflow:visible;\n}\n.impegno-icon.icon-renewable, .impegno-icon.icon-pv{height:38px}\n.impegno-name{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(24px,2.2vw,34px);line-height:1.12;letter-spacing:-.008em;\n  color:var(--brand);margin:0;text-wrap:balance;\n}\n\n\/* impegno icon perpetual animations *\/\n\n\/* 01 Water: cloud floats, 3 raindrops fall in sequence into the cistern, fill ripples *\/\n.impegno-icon.icon-water .icon-cloud{\n  transform-origin:24px 14px;\n  animation:cloud-drift 6s ease-in-out infinite;\n}\n@keyframes cloud-drift{\n  0%,100%{transform:translateX(-1px)}\n  50%{transform:translateX(1px)}\n}\n.impegno-icon.icon-water .drop{\n  transform-origin:center;\n}\n.impegno-icon.icon-water .drop-1{animation:drop-fall 2.4s ease-in infinite;animation-delay:0s}\n.impegno-icon.icon-water .drop-2{animation:drop-fall 2.4s ease-in infinite;animation-delay:.4s}\n.impegno-icon.icon-water .drop-3{animation:drop-fall 2.4s ease-in infinite;animation-delay:.8s}\n@keyframes drop-fall{\n  0%{transform:translateY(-5px);opacity:0}\n  20%{opacity:1}\n  70%{transform:translateY(8px);opacity:1}\n  85%{transform:translateY(8px);opacity:0}\n  100%{transform:translateY(-5px);opacity:0}\n}\n.impegno-icon.icon-water .icon-fill{\n  animation:water-fill 2.4s ease-in-out infinite;\n}\n@keyframes water-fill{\n  0%,100%{opacity:.18}\n  50%{opacity:.4}\n}\n\n\/* 02 Wind turbine: blades (3 properly spread at 120\u00b0 each) spin around the hub *\/\n.impegno-icon.icon-renewable .icon-blades{\n  transform-origin:24px 22px;\n  animation:blades-spin 4s linear infinite;\n}\n@keyframes blades-spin{\n  to{transform:rotate(360deg)}\n}\n.impegno-icon.icon-renewable .icon-breeze{\n  animation:breeze-flow 3.2s ease-in-out infinite;\n}\n.impegno-icon.icon-renewable .breeze-2{animation-delay:.5s}\n.impegno-icon.icon-renewable .breeze-3{animation-delay:1.2s}\n@keyframes breeze-flow{\n  0%{opacity:0;transform:translateX(-4px)}\n  35%{opacity:.7}\n  65%{opacity:.7}\n  100%{opacity:0;transform:translateX(4px)}\n}\n\n\/* 03 PV + biomass \u2014 richly animated: sun pulses, beam streams down, cells light up\n   in sequence, plant stem draws itself, leaves sway, energy sparks rise from biomass *\/\n.impegno-icon.icon-pv .icon-pv-sun{\n  transform-origin:24px 11px;\n  animation:pv-sun-pulse 3s ease-in-out infinite;\n}\n.impegno-icon.icon-pv .icon-pv-sun-grp line{\n  animation:rays-flicker 2.4s ease-in-out infinite;\n}\n.impegno-icon.icon-pv .icon-pv-sun-grp line:nth-child(2){animation-delay:.3s}\n.impegno-icon.icon-pv .icon-pv-sun-grp line:nth-child(3){animation-delay:.6s}\n@keyframes pv-sun-pulse{\n  0%,100%{transform:scale(1)}\n  50%{transform:scale(1.18)}\n}\n@keyframes rays-flicker{0%,100%{opacity:1}50%{opacity:.45}}\n\n\/* Beam streaming down from sun to panel *\/\n.impegno-icon.icon-pv .icon-pv-beam{\n  stroke-dasharray:2 2;\n  stroke-dashoffset:0;\n  animation:pv-beam-flow 1.6s linear infinite;\n  opacity:.55;\n}\n@keyframes pv-beam-flow{\n  from{stroke-dashoffset:0}\n  to{stroke-dashoffset:-12}\n}\n\n\/* Panel slowly tilts; cells light up one after another in a wave *\/\n.impegno-icon.icon-pv .icon-pv-panel{\n  transform-origin:15px 28px;\n  animation:pv-panel-tilt 5s ease-in-out infinite;\n}\n@keyframes pv-panel-tilt{\n  0%,100%{transform:rotate(-1deg) translateY(0)}\n  50%{transform:rotate(1deg) translateY(-.6px)}\n}\n.impegno-icon.icon-pv .icon-pv-cell{\n  animation:pv-cell-glow 3.2s ease-in-out infinite;\n}\n.impegno-icon.icon-pv .cell-1{animation-delay:0s}\n.impegno-icon.icon-pv .cell-2{animation-delay:.18s}\n.impegno-icon.icon-pv .cell-3{animation-delay:.36s}\n.impegno-icon.icon-pv .cell-4{animation-delay:.54s}\n.impegno-icon.icon-pv .cell-5{animation-delay:.72s}\n.impegno-icon.icon-pv .cell-6{animation-delay:.90s}\n@keyframes pv-cell-glow{\n  0%,80%,100%{opacity:0}\n  20%,40%{opacity:.35}\n}\n\n\/* Biomass plant: stem grows by stroke-dash; leaves alternate; sparks rise & fade *\/\n.impegno-icon.icon-pv .icon-pv-stem{\n  stroke-dasharray:22;stroke-dashoffset:22;\n  animation:pv-stem-grow 4.6s ease-in-out infinite;\n  transform-origin:36px 38px;\n}\n@keyframes pv-stem-grow{\n  0%{stroke-dashoffset:22;transform:rotate(-3deg)}\n  35%,75%{stroke-dashoffset:0;transform:rotate(0)}\n  95%,100%{stroke-dashoffset:22;transform:rotate(3deg)}\n}\n.impegno-icon.icon-pv .icon-pv-leaf--l{\n  transform-origin:36px 30px;\n  animation:pv-leaf-l 3.6s ease-in-out infinite;\n}\n.impegno-icon.icon-pv .icon-pv-leaf--r{\n  transform-origin:36px 24px;\n  animation:pv-leaf-r 4s ease-in-out infinite;\n}\n@keyframes pv-leaf-l{\n  0%,100%{transform:rotate(-8deg) scale(.96)}\n  50%{transform:rotate(8deg) scale(1.04)}\n}\n@keyframes pv-leaf-r{\n  0%,100%{transform:rotate(10deg) scale(.96)}\n  50%{transform:rotate(-10deg) scale(1.04)}\n}\n\n\/* ============================================================\n   CIFRE \u2014 horizontal numbers strip on a textured warm band\n   ============================================================ *\/\n.cifre{\n  background:\n    linear-gradient(180deg, var(--cream-3) 0%, var(--cream-2) 100%);\n  padding:120px 56px;\n  position:relative;\n  border-top:1px solid rgba(140,119,81,.2);\n  border-bottom:1px solid rgba(140,119,81,.2);\n}\n.cifre-inner{\n  max-width:1280px;margin:0 auto;\n  display:grid;grid-template-columns:repeat(3,1fr);gap:0;\n  position:relative;\n}\n.cifre-inner::before,\n.cifre-inner::after{\n  content:\"\";position:absolute;top:10%;bottom:10%;width:1px;\n  background:linear-gradient(180deg, transparent, rgba(140,119,81,.4), transparent);\n}\n.cifre-inner::before{left:33.333%}\n.cifre-inner::after{left:66.666%}\n.cifra{\n  display:flex;flex-direction:column;align-items:center;gap:18px;\n  padding:0 32px;text-align:center;\n}\n.cifra-num{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(54px,6vw,96px);line-height:.95;letter-spacing:-.018em;\n  color:var(--brand);\n}\n.cifra-rule{display:block;width:32px;height:1px;background:var(--gold)}\n.cifra-label{\n  font-family:var(--serif);font-style:italic;font-weight:400;\n  font-size:15px;line-height:1.5;color:var(--ink-2);\n  max-width:18ch;\n}\n\n\/* ============================================================\n   CERTIFICAZIONE \u2014 closing band\n   ============================================================ *\/\n.cert{\n  background:var(--cream);\n  padding:140px 56px 160px;\n  text-align:center;\n  position:relative;\n}\n.cert-inner{\n  max-width:780px;margin:0 auto;\n  display:flex;flex-direction:column;align-items:center;gap:36px;\n}\n.cert-eyebrow{\n  font-family:var(--sans);font-size:11px;letter-spacing:.42em;text-transform:uppercase;\n  color:var(--gold-dark);margin:0;\n}\n.cert-h{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(36px,4vw,60px);line-height:1.08;letter-spacing:-.008em;\n  color:var(--brand);margin:0;text-wrap:balance;\n}\n.cert-h em{font-style:italic;font-weight:600;color:var(--gold-dark);letter-spacing:.02em}\n.cert-body{\n  font-family:var(--serif);font-style:italic;font-size:19px;line-height:1.55;\n  color:var(--ink-2);margin:0;max-width:38ch;text-wrap:balance;\n}\n\/* Equalitas certification mark (linked from official source) *\/\n.cert-equalitas{\n  position:relative;\n  display:inline-grid;place-items:center;\n  width:clamp(220px, 22vw, 280px);\n  aspect-ratio:1\/1;\n  padding:36px;\n  margin-bottom:8px;\n  transition:transform 1.2s var(--ease-soft);\n}\n.cert-equalitas img{\n  display:block;width:100%;height:auto;\n  position:relative;z-index:2;\n  filter:drop-shadow(0 6px 14px rgba(46,30,21,.08));\n  animation:cert-breathe 5.4s ease-in-out infinite;\n  transform-origin:center;\n}\n.cert-equalitas:hover{transform:translateY(-3px)}\n@keyframes cert-breathe{\n  0%,100%{transform:scale(1)}\n  50%{transform:scale(1.025)}\n}\n\n\/* Rotating dashed border around the logo *\/\n.cert-equalitas::before{\n  content:\"\";position:absolute;inset:0;\n  border-radius:50%;\n  border:1px dashed var(--gold);\n  opacity:.7;\n  animation:cert-ring-spin 28s linear infinite;\n}\n\/* Static inner hairline ring *\/\n.cert-equalitas::after{\n  content:\"\";position:absolute;inset:14px;\n  border-radius:50%;\n  border:1px solid rgba(140,119,81,.22);\n  pointer-events:none;\n}\n@keyframes cert-ring-spin{\n  to{transform:rotate(360deg)}\n}\n\n\/* SVG overlay with stroke-dash animation \u2014 adds an animated arc that \"draws\" around *\/\n.cert-equalitas-arc{\n  position:absolute;inset:0;width:100%;height:100%;\n  z-index:1;pointer-events:none;\n}\n.cert-equalitas-arc circle{\n  fill:none;stroke:var(--gold-dark);stroke-width:1.2;\n  stroke-dasharray:60 380;stroke-linecap:round;\n  animation:cert-arc-orbit 6s linear infinite;\n  transform-origin:center;\n}\n@keyframes cert-arc-orbit{\n  0%{stroke-dashoffset:0;opacity:.85}\n  50%{opacity:.4}\n  100%{stroke-dashoffset:-440;opacity:.85}\n}\n\n@media (max-width:900px){\n  .sost-hero{padding:120px 24px 0}\n  .sost-hero-inner{grid-template-columns:1fr;gap:24px}\n  .sost-hero-photo{margin:0 -24px}\n  .sost-hero-photo::before{left:24px;right:24px}\n  .impegni{padding:80px 24px}\n  .impegni-inner{grid-template-columns:1fr;gap:48px}\n  .impegni-intro{position:static}\n  .cifre{padding:80px 24px}\n  .cifre-inner{grid-template-columns:1fr;gap:48px}\n  .cifre-inner::before, .cifre-inner::after{display:none}\n  .cert{padding:80px 24px 100px}\n}\n\n\/* ============================================================\n   I NOSTRI MARCHI \u2014 typographic color bands (no photos)\n   ============================================================ *\/\n\n\/* HERO \u2014 kinetic portfolio intro with animated brand index *\/\n.mk-hero{\n  position:relative;background:var(--cream);\n  padding:170px 56px 110px;overflow:hidden;\n}\n.mk-hero-inner{max-width:1320px;margin:0 auto;position:relative;z-index:2}\n.mk-hero-eyebrow{margin-bottom:26px}\n.mk-hero-title{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(48px,7vw,116px);line-height:.98;letter-spacing:-.018em;\n  color:var(--brand);margin:0 0 32px;max-width:16ch;\n}\n.mk-hero-title .w{display:inline-block;opacity:0;transform:translateY(30px);animation:rise 1.1s var(--ease) forwards;margin-right:.18em}\n.mk-hero-lede{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(18px,1.5vw,24px);line-height:1.45;color:var(--ink-2);\n  margin:0 0 64px;max-width:40ch;\n}\n.mk-index-list{\n  list-style:none;margin:0;padding:0;\n  border-top:1px solid rgba(140,119,81,.25);\n}\n.mk-index-item{border-bottom:1px solid rgba(140,119,81,.25)}\n.mk-index-item a{\n  display:grid;grid-template-columns:64px 1fr auto;align-items:center;gap:28px;\n  padding:24px 8px;position:relative;overflow:hidden;\n  transition:padding-left .9s var(--ease-soft);\n}\n\/* sliding color wash on hover *\/\n.mk-index-item a::before{\n  content:\"\";position:absolute;inset:0;background:var(--c);\n  transform:scaleX(0);transform-origin:left;z-index:0;\n  transition:transform .9s var(--ease-soft);\n}\n.mk-index-item a > *{position:relative;z-index:1;transition:color .7s var(--ease-soft)}\n.mk-index-item a:hover{padding-left:28px}\n.mk-index-item a:hover::before{transform:scaleX(1)}\n.mk-index-item a:hover .mk-ix-n,\n.mk-index-item a:hover .mk-ix-name,\n.mk-index-item a:hover .mk-ix-tag{color:var(--cream)}\n.mk-ix-n{font-family:var(--serif);font-style:italic;font-size:22px;color:var(--gold-dark)}\n.mk-ix-name{font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(26px,3vw,46px);color:var(--brand);line-height:1}\n.mk-ix-tag{font-family:var(--sans);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--ink-2);justify-self:end}\n.mk-hero-glyph{\n  position:absolute;right:-120px;top:8%;width:440px;height:440px;z-index:0;opacity:.05;\n  animation:hero-deco-spin 70s linear infinite;\n}\n.mk-hero-glyph .brand-logo{\n  width:100%;height:100%;background-color:var(--brand);\n  -webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;\n}\n\n.bb{\n  position:sticky;top:0;width:100%;\n  min-height:100vh;\n  display:flex;align-items:center;\n  overflow:hidden;\n  border-radius:44px 44px 0 0;\n  box-shadow:0 -30px 60px -28px rgba(20,12,7,.5);\n}\n.bb--annaberta{z-index:3}\n.bb--sogara{z-index:4}\n.bb--naturale{z-index:5}\n\/* the colour field wipes up from below as the band enters *\/\n.bb::before{\n  content:\"\";position:absolute;inset:0;z-index:0;background:inherit;\n}\n.bb-inner{\n  position:relative;z-index:2;\n  max-width:1240px;margin:0 auto;width:100%;\n  padding:90px clamp(40px,5vw,88px);\n  display:grid;grid-template-columns:132px 1fr;gap:clamp(32px,5vw,80px);align-items:center;\n}\n.bb-side{display:flex;flex-direction:column;align-items:flex-start;gap:14px;padding-top:4px}\n.bb-index{font-family:var(--serif);font-style:italic;font-weight:500;font-size:58px;line-height:.9;opacity:.55}\n.bb-side-rule{display:block;width:36px;height:1px;background:currentColor;opacity:.4}\n.bb-of{font-family:var(--sans);font-size:10px;letter-spacing:.24em;text-transform:uppercase;line-height:1.7;opacity:.55;max-width:128px}\n.bb-main{display:flex;flex-direction:column;align-items:flex-start;gap:22px;max-width:640px}\n.bb-logo{\n  display:block;width:min(380px,82%);height:84px;\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;\n  -webkit-mask-position:left center;mask-position:left center;\n  -webkit-mask-size:contain;mask-size:contain;\n}\n.bb-logo--tall{height:158px;width:min(190px,54%)}\n.bb-tag{font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(22px,2vw,32px);line-height:1.2}\n.bb-desc{font-family:var(--serif);font-size:17px;line-height:1.7;margin:0;max-width:46ch;opacity:.85}\n.bb-cta{\n  margin-top:10px;\n  font-family:var(--sans);font-size:11.5px;letter-spacing:.3em;text-transform:uppercase;\n  display:inline-flex;align-items:center;gap:12px;\n  padding:13px 26px;border-radius:999px;border:1px solid currentColor;\n  transition:gap 1.2s var(--ease-graceful), color .8s var(--ease-soft), background-color .8s var(--ease-soft), border-color .8s var(--ease-soft);\n}\n.bb-cta svg{transition:transform 1.2s var(--ease-graceful)}\n.bb-cta:hover{gap:20px}\n.bb-cta:hover svg{transform:translateX(6px)}\n\/* per-brand CTA colours \u2014 hover fills with brand ink, text flips to field colour *\/\n.bb--annaberta .bb-cta{color:#cdb079}\n.bb--annaberta .bb-cta:hover{background:#be8545;border-color:#be8545;color:#263b2f}\n.bb--sogara .bb-cta{color:#2c2e35}\n.bb--sogara .bb-cta:hover{background:#2c2e35;border-color:#2c2e35;color:#efe6d6}\n.bb--naturale .bb-cta{color:#f3f1e6}\n.bb--naturale .bb-cta:hover{background:#f3f1e6;border-color:#f3f1e6;color:#4f7d43}\n\n\/* oversized brand mark watermark, parallax drift *\/\n.bb-watermark{\n  position:absolute;right:-70px;top:50%;margin-top:-190px;\n  width:380px;height:380px;opacity:.08;pointer-events:none;z-index:0;\n  -webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n  animation:hero-deco-spin 60s linear infinite;\n}\n\n\/* --- 01 Annaberta \u2014 deep forest green, gold + cream --- *\/\n.bb--annaberta{background:#263b2f;color:#f1e6dd}\n.bb--annaberta .bb-index{color:#be8545}\n.bb--annaberta .bb-logo{background-color:#f1e6dd;-webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-annaberta.svg\");mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-annaberta.svg\")}.bb--annaberta .bb-tag{color:#cdb079}\n.bb--annaberta .bb-watermark{background-color:#be8545;opacity:.10}\n\n\/* --- 02 La Sogara \u2014 warm parchment, charcoal + bronze --- *\/\n.bb--sogara{background:#efe6d6;color:#2c2e35}\n.bb--sogara .bb-index{color:#a3825d}\n.bb--sogara .bb-logo{background-color:#2c2e35;-webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-la-sogara.svg\");mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-la-sogara.svg\");height:160px;width:min(200px,60%)}\n.bb--sogara .bb-tag{color:#a3825d}\n.bb--sogara .bb-watermark{background-color:#a3825d;opacity:.12}\n\n\/* --- 03 Stile Naturale \u2014 natural leaf green, cream + sage --- *\/\n.bb--naturale{background:#4f7d43;color:#f3f1e6}\n.bb--naturale .bb-index{color:#cdd9b0}\n.bb--naturale .bb-logo{background-color:#f3f1e6;-webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-stile-naturale.svg\");mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-stile-naturale.svg\");height:108px;width:min(420px,88%)}\n.bb--naturale .bb-tag{color:#dbe4c4}\n.bb--naturale .bb-watermark{background-color:#f3f1e6;opacity:.12}\n\n\/* ============================================================\n   MARCHI \u2014 closing CTA\n   ============================================================ *\/\n.marchi-cta{\n  background:var(--brown-deep);color:var(--cream);\n  padding:120px 56px;text-align:center;position:relative;overflow:hidden;\n}\n.marchi-cta-inner{\n  max-width:760px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:32px;position:relative;z-index:2;\n}\n.marchi-cta-mark{width:60px;height:60px;display:block;animation:hero-deco-spin 30s linear infinite}\n.marchi-cta-mark .brand-logo{\n  width:100%;height:100%;\n  -webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  background-color:var(--gold-light);\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n}\n.marchi-cta h2{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(32px,3.6vw,56px);line-height:1.08;letter-spacing:-.01em;color:var(--cream);margin:0;text-wrap:balance;\n}\n\n@media (max-width:760px){\n  .mk-hero{padding:130px 24px 80px}\n  .mk-index-item a{grid-template-columns:40px 1fr;gap:14px}\n  .mk-ix-tag{display:none}\n  .bb-inner{grid-template-columns:1fr;gap:28px;padding:72px 24px}\n  .bb-side{flex-direction:row;align-items:baseline;gap:14px}\n  .bb-index{font-size:40px}\n  .bb-watermark{width:240px;height:240px;margin-top:-120px;right:-90px}\n  .marchi-cta{padding:80px 24px}\n}\n\n\/* ---------------- GRAIN ---------------- *\/\/* ---------------- GRAIN ---------------- *\/\/* ---------------- GRAIN ---------------- *\/\/* ---------------- GRAIN ---------------- *\/\n.grain{position:fixed;inset:0;z-index:80;pointer-events:none;opacity:.07;mix-blend-mode:multiply;\n  background-image:url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'\/><feColorMatrix values='0 0 0 0 0.12 0 0 0 0 0.08 0 0 0 0 0.05 0 0 0 1 0'\/><\/filter><rect width='100%' height='100%' filter='url(#n)'\/><\/svg>\");\n}\n\n\/* ---------------- REVEALS ---------------- *\/\n.reveal{opacity:0;transform:translateY(28px);transition:opacity 1.1s var(--ease), transform 1.2s var(--ease)}\n.reveal.in{opacity:1;transform:translateY(0)}\n.anim-fade{opacity:0;transition:opacity 1.2s var(--ease)}\n.anim-fade.in{opacity:1}\n.anim-zoom{opacity:0;transform:scale(1.08);transition:opacity 1.2s var(--ease), transform 1.4s var(--ease)}\n.anim-zoom.in{opacity:1;transform:scale(1)}\n\n\/* focus *\/\na:focus-visible, button:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:2px}\n\n\/* ---------------- RESPONSIVE ---------------- *\/\n@media (max-width:1180px){\n  .valori-inner{grid-template-columns:1fr;gap:48px}\n  .valori-text p, .valori-text h2{max-width:none}\n  .cards{gap:40px 40px}\n}\n@media (max-width:960px){\n  .site-nav{display:none}\n  .site-header{grid-template-columns:1fr auto;padding:14px 24px}\n  .site-header.scrolled{padding:10px 24px}\n  .hero{min-height:88vh}\n  .hero-text{top:130px;left:24px;right:24px}\n  .scroll-disc{width:96px;height:96px}\n  .scroll-disc .quad{width:30px;height:30px}\n  .scroll-disc .label{font-size:10.5px}\n  .valori,.numeri,.cta-final,.site-footer{padding-left:24px;padding-right:24px}\n  .stats{grid-template-columns:1fr 1fr;gap:48px 32px}\n  .foot-grid{grid-template-columns:1fr;gap:40px}\n}\n@media (max-width:560px){\n  .cards{grid-template-columns:1fr;gap:32px}\n  .hero-photo::after{height:84%;bottom:-66%}\n  .numeri{padding:120px 24px 140px}\n  .numeri::before, .numeri::after{height:50%}\n}\n\n@media (prefers-reduced-motion:reduce){\n  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}\n  h1.hero-h1 .w, h1.hero-about-h1 .w{opacity:1;transform:none}\n}\n<\/style>\n\n\n\n<!-- Quadrifoglio sprite (4-petal knot, stylized) -->\n<svg width=\"0\" height=\"0\" style=\"position:absolute\" aria-hidden=\"true\">\n  <defs>\n    <!-- Crescent (mezzaluna) clip \u2014 bite from the LEFT side (facing the text column).\n         Photo fills the right + top + bottom edges; cream curve dips in from the left. -->\n    <clipPath id=\"petalClip\" clipPathUnits=\"objectBoundingBox\">\n      <path d=\"M 0.02 0, C 0.5 0.22, 0.5 0.78, 0.02 1, L 1 1, L 1 0, Z\"\/>\n    <\/clipPath>\n  <\/defs>\n  <symbol id=\"quad\" viewBox=\"0 0 100 100\" fill=\"currentColor\" fill-rule=\"evenodd\">\n    <!-- four teardrop petals meeting at center, with center void -->\n    <path d=\"M50 6 C 62 6 70 18 70 32 C 70 42 62 46 50 50 C 38 46 30 42 30 32 C 30 18 38 6 50 6 Z\"\/>\n    <path d=\"M94 50 C 94 62 82 70 68 70 C 58 70 54 62 50 50 C 54 38 58 30 68 30 C 82 30 94 38 94 50 Z\"\/>\n    <path d=\"M50 94 C 38 94 30 82 30 68 C 30 58 38 54 50 50 C 62 54 70 58 70 68 C 70 82 62 94 50 94 Z\"\/>\n    <path d=\"M6 50 C 6 38 18 30 32 30 C 42 30 46 38 50 50 C 46 62 42 70 32 70 C 18 70 6 62 6 50 Z\"\/>\n    <circle cx=\"50\" cy=\"50\" r=\"4\" fill=\"var(--cream,#F1E6DD)\"\/>\n  <\/symbol>\n  <symbol id=\"ic-quality\" viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n    <path d=\"M16 8 H32 C32 18 29 26 24 26 C 19 26 16 18 16 8 Z\"\/>\n    <line x1=\"24\" y1=\"26\" x2=\"24\" y2=\"40\"\/>\n    <line x1=\"17\" y1=\"41\" x2=\"31\" y2=\"41\"\/>\n  <\/symbol>\n  <symbol id=\"ic-respect\" viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n    <path d=\"M24 7 C 27 11 31 10 34 12 C 37 15 37 19 34 21 C 38 24 36 28 32 29 C 31 33 27 35 24 39 C 21 35 17 33 16 29 C 12 28 10 24 14 21 C 11 19 11 15 14 12 C 17 10 21 11 24 7 Z\"\/>\n    <line x1=\"24\" y1=\"22\" x2=\"24\" y2=\"42\"\/>\n    <line x1=\"24\" y1=\"26\" x2=\"18\" y2=\"22\" opacity=\".55\"\/>\n    <line x1=\"24\" y1=\"26\" x2=\"30\" y2=\"22\" opacity=\".55\"\/>\n    <line x1=\"24\" y1=\"33\" x2=\"17\" y2=\"31\" opacity=\".55\"\/>\n    <line x1=\"24\" y1=\"33\" x2=\"31\" y2=\"31\" opacity=\".55\"\/>\n  <\/symbol>\n  <symbol id=\"ic-tradition\" viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n    <path d=\"M14 11 C 17 8 21 7 24 7 C 27 7 31 8 34 11 L34 37 C 31 40 27 41 24 41 C 21 41 17 40 14 37 Z\"\/>\n    <path d=\"M14 18 C 17 16 21 15 24 15 C 27 15 31 16 34 18\"\/>\n    <path d=\"M14 30 C 17 32 21 33 24 33 C 27 33 31 32 34 30\"\/>\n    <line x1=\"24\" y1=\"7\" x2=\"24\" y2=\"41\" opacity=\".4\"\/>\n  <\/symbol>\n  <symbol id=\"ic-people\" viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n    <circle cx=\"14\" cy=\"18\" r=\"3.6\"\/>\n    <circle cx=\"24\" cy=\"13\" r=\"3.6\"\/>\n    <circle cx=\"34\" cy=\"18\" r=\"3.6\"\/>\n    <path d=\"M7 39 C 7 31 10 27 14 27 C 18 27 21 31 21 39\"\/>\n    <path d=\"M17 39 C 17 29 20 25 24 25 C 28 25 31 29 31 39\"\/>\n    <path d=\"M27 39 C 27 31 30 27 34 27 C 38 27 41 31 41 39\"\/>\n  <\/symbol>\n  <symbol id=\"arrow\" viewBox=\"0 0 24 12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n    <path d=\"M0 6 L22 6 M16 1 L22 6 L16 11\"\/>\n  <\/symbol>\n<\/svg>\n\n<!-- ============ HEADER ============ -->\n<header class=\"site-header\" role=\"banner\">\n    <a href=\"\/en\/\" class=\"logo logo--light\" aria-label=\"Cottini 1925 \u2014 Home\">\n    <span class=\"brand-logo brand-logo--md brand-logo--light\"><\/span>\n  <\/a>\n  <a href=\"\/en\/\" class=\"logo logo--dark\" aria-label=\"Cottini 1925 \u2014 Home\">\n    <span class=\"brand-logo brand-logo--md brand-logo--brand\"><\/span>\n  <\/a>\n\n  <nav class=\"site-nav\" aria-label=\"Main navigation\">\n    <a href=\"\/en\/\">Home<\/a>\n    <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/about-us\/\">About us<\/a>\n    <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/our-brands\/\" aria-current=\"page\">Our brands<\/a>\n    <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/sustainability\/\">Sustainability<\/a>\n    <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/trade-area\/\">Trade Area<\/a>\n    <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/press-area\/\">Press Area<\/a>\n    <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/contacts\/\">Contacts<\/a>\n  <\/nav>\n\n  <div class=\"header-right\">\n    <div class=\"lang\" aria-label=\"Language\">\n      <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/our-brands\/\" data-it=\"\/i-nostri-marchi\/\">IT<\/a><span class=\"sep\">\u00b7<\/span><a class=\"active\" href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/our-brands\/\">EN<\/a>\n    <\/div>\n    <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/trade-area\/\" class=\"btn-trade\">Trade Login<\/a>\n  <\/div>\n<\/header>\n\n<style id=\"cot-marchi-fix\">\n\/* I NOSTRI MARCHI \u2014 fine tuning: intro a due colonne (testo + foto come Chi Siamo) *\/\n.mk-hero-inner--split{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,0.95fr);gap:80px;align-items:center}\n.mk-hero-text{max-width:560px;position:relative;z-index:3}\n.mk-hero-inner--split .mk-hero-title{font-size:clamp(48px,5.6vw,84px);line-height:1.02;letter-spacing:-.015em;margin:0 0 30px;max-width:none}\n.mk-hero-inner--split .mk-hero-lede{font-size:clamp(19px,1.4vw,24px);line-height:1.4;max-width:42ch;margin:0}\n.hero-about-photo{position:relative;width:100%;aspect-ratio:4\/5;max-height:520px;justify-self:end;align-self:center}\n.hero-deco-square{position:absolute;inset:-8% 0 -6% -6%;background:linear-gradient(135deg,rgba(217,168,98,.18),rgba(191,134,60,.10));border:1px solid rgba(140,119,81,.32);z-index:0;pointer-events:none;animation:hero-deco-drift 14s ease-in-out infinite}\n.hero-deco-ring{position:absolute;top:-14%;right:-16%;width:34%;aspect-ratio:1;z-index:0;pointer-events:none;animation:hero-deco-spin 42s linear infinite;opacity:.55}\n.hero-deco-ring-2{position:absolute;bottom:-22%;left:-22%;width:58%;aspect-ratio:1;z-index:0;pointer-events:none;animation:hero-deco-spin-rev 56s linear infinite;opacity:.32}\n.hero-deco-ring .brand-logo,.hero-deco-ring-2 .brand-logo{width:100%;height:100%;-webkit-mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");mask-image:url(\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}\n.hero-deco-ring .brand-logo{background-color:var(--gold)}\n.hero-deco-ring-2 .brand-logo{background-color:var(--gold-dark)}\n.hero-deco-sparkle{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--gold);z-index:0;pointer-events:none;box-shadow:0 0 0 4px rgba(191,134,60,.12)}\n.hero-deco-sparkle--1{top:18%;left:-4%;animation:sparkle-float-1 8s ease-in-out infinite}\n.hero-deco-sparkle--2{top:62%;right:-3%;animation:sparkle-float-2 11s ease-in-out infinite}\n.hero-deco-sparkle--3{bottom:24%;left:8%;width:4px;height:4px;background:var(--gold-light);animation:sparkle-float-3 9s ease-in-out infinite}\n.hero-photo-card{position:absolute;inset:0;border-radius:3px;overflow:hidden;z-index:1}\n.mk-hero .hero-photo-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}\n.hero-photo-year{position:absolute;bottom:-18px;right:8%;display:inline-flex;align-items:center;gap:12px;background:var(--brand);color:var(--cream);padding:10px 18px;z-index:3;box-shadow:0 14px 28px -14px rgba(46,30,21,.4)}\n.hero-photo-year .year-dot{width:6px;height:6px;border-radius:50%;background:var(--gold-light);flex:none;animation:year-pulse 3.2s ease-in-out infinite}\n.hero-photo-year .year-text{font-family:var(--sans);font-size:10.5px;letter-spacing:.36em;text-transform:uppercase;line-height:1;color:var(--cream)}\n.hero-photo-year .year-text em{font-style:normal;font-weight:600;color:var(--gold-light);letter-spacing:.04em}\n@keyframes hero-deco-drift{0%,100%{transform:translate(0,0)}50%{transform:translate(-4px,-4px)}}\n@keyframes hero-deco-spin-rev{to{transform:rotate(-360deg)}}\n@keyframes sparkle-float-1{0%,100%{transform:translate(0,0);opacity:.7}50%{transform:translate(8px,-12px);opacity:1}}\n@keyframes sparkle-float-2{0%,100%{transform:translate(0,0);opacity:.6}50%{transform:translate(-10px,8px);opacity:1}}\n@keyframes sparkle-float-3{0%,100%{transform:translate(0,0);opacity:.5}50%{transform:translate(6px,-8px);opacity:.9}}\n@keyframes year-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.72)}}\n@media (max-width:880px){.mk-hero-inner--split{grid-template-columns:1fr;gap:44px}.mk-hero-text{max-width:none}.hero-about-photo{justify-self:stretch;max-width:520px;margin-inline:auto}}\n\/* Foto definitiva intro (27\/08\/2026): bleed 112% neutralizzato, la foto e gia tagliata 4:5 *\/\n\/* Cornice decorativa centrata sulla foto: il quadrato oro nasce con inset -8% 0 -6% -6%,\n   cioe sborda a sinistra ma finisce esattamente sul bordo destro della foto. Su Chi Siamo\n   l'asimmetria e compensata per caso (li l'immagine e spostata a sinistra dal max-width del\n   reset), qui no: la foto risultava a filo a destra e staccata a sinistra. Pareggio i due lati. *\/\n.mk-hero .hero-deco-square{inset:-8% -6% -6% -6%}\n.mk-hero .hero-about-photo img{inset:0;width:100%;height:100%;object-position:center}\n<\/style>\n\n<style id=\"cot-lang-fix\">\n\/* Selettore di lingua reso funzionante (WPML, 27\/08\/2026): erano <span> inerti. *\/\n.lang a{color:inherit;text-decoration:none;transition:opacity .3s var(--ease)}\n.lang a:not(.active){opacity:.62}\n.lang a:hover{opacity:1}\n<\/style>\n<style id=\"cot-mobile-fix\">\n\/* ============================================================\n   SOLO MOBILE - 27\/08\/2026\n   Ogni regola di questo blocco vive dentro una media query:\n   sopra i 960px il rendering desktop resta identico a prima.\n   ============================================================ *\/\n\n\/* Gli elementi del menu mobile sono creati dal bootstrap JS.\n   Questa guardia garantisce che su desktop non compaiano mai. *\/\n@media (min-width:961px){\n  .cot-burger,.cot-mnav{display:none !important}\n}\n\n@media (max-width:960px){\n\n  \/* --- pulsante hamburger --- *\/\n  .cot-burger{\n    display:inline-flex;align-items:center;justify-content:center;\n    width:44px;height:44px;flex:0 0 44px;margin:0 -10px 0 -2px;\n    background:none;border:0;padding:0;color:inherit;cursor:pointer;\n    -webkit-tap-highlight-color:transparent;\n  }\n  .cot-burger i{display:block;position:relative;width:22px;height:1px;background:currentColor}\n  .cot-burger i::before,.cot-burger i::after{\n    content:\"\";position:absolute;left:0;width:22px;height:1px;background:currentColor;\n  }\n  .cot-burger i::before{top:-7px}\n  .cot-burger i::after{top:7px}\n\n  \/* --- pannello di navigazione --- *\/\n  .cot-mnav{\n    position:fixed;inset:0;z-index:60;background:var(--cream);\n    display:flex;flex-direction:column;padding:18px 24px 34px;\n    opacity:0;visibility:hidden;transform:translateY(-10px);\n    transition:opacity .4s var(--ease-soft),transform .4s var(--ease-soft),visibility .4s;\n    overflow-y:auto;-webkit-overflow-scrolling:touch;\n  }\n  .cot-mnav.is-open{opacity:1;visibility:visible;transform:none}\n  body.cot-menu-open{overflow:hidden}\n\n  .cot-mnav-top{display:flex;align-items:center;justify-content:space-between;min-height:44px}\n  .cot-mnav-top .brand-logo{width:104px;height:38px}\n  .cot-mnav-x{\n    width:44px;height:44px;margin-right:-10px;\n    background:none;border:0;padding:0;color:var(--brand);cursor:pointer;\n    display:grid;place-items:center;-webkit-tap-highlight-color:transparent;\n  }\n  .cot-mnav-x i{display:block;position:relative;width:20px;height:1px;background:transparent}\n  .cot-mnav-x i::before,.cot-mnav-x i::after{\n    content:\"\";position:absolute;left:0;top:0;width:20px;height:1px;background:var(--brand);\n  }\n  .cot-mnav-x i::before{transform:rotate(45deg)}\n  .cot-mnav-x i::after{transform:rotate(-45deg)}\n\n  .cot-mnav-links{display:flex;flex-direction:column;margin:26px 0 0}\n  .cot-mnav-links a{\n    font-family:var(--serif);font-style:italic;font-weight:500;\n    font-size:clamp(24px,7vw,32px);line-height:1.2;color:var(--ink);\n    text-decoration:none;padding:14px 0;\n    border-bottom:1px solid rgba(140,119,81,.18);\n  }\n  .cot-mnav-links a:first-child{border-top:1px solid rgba(140,119,81,.18)}\n  .cot-mnav-links a[aria-current]{color:var(--gold-dark)}\n\n  .cot-mnav-foot{\n    margin-top:auto;padding-top:30px;\n    display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;\n  }\n  .cot-mnav-foot .lang{color:var(--ink-2)}\n  .cot-mnav-foot .btn-trade{white-space:nowrap}\n\n  \/* --- aree di tocco del selettore lingua ---\n     erano 16x20px: sotto la soglia utilizzabile con il pollice --- *\/\n  .lang{gap:2px}\n  .lang a{padding:12px 8px}\n\n  \/* ---------- 2\u00b0 giro mobile, 27\/08\/2026 ---------- *\/\n\n  \/* Trade Login fuori dall'header: su 390px occupava 114px e andava a capo\n     su due righe. Resta nel menu a tutto schermo, dove ha spazio. *\/\n  \/* il reset del tema impone display:inline-block !important sul bottone:\n     serve la stessa forza per toglierlo dall'header su mobile *\/\n  .site-header .btn-trade{display:none !important}\n\n  \/* Selettore lingua: la voce attiva era piu bassa dell'altra perche il\n     design le toglie padding sotto per fare spazio al filetto. Pareggio\n     le due scatole, cosi le basi del testo coincidono. *\/\n  .lang a{padding:12px 8px}\n  .lang a.active{padding-bottom:11px;border-bottom-width:1px}\n\n  \/* Hamburger: seguiva il colore del testo dell'header, che resta scuro\n     anche sopra le foto. Ora e' chiaro sull'immagine e scuro sul crema,\n     come fanno gia' menu e selettore lingua. Tratti ispessiti a 2px. *\/\n  .cot-burger{color:var(--cream)}\n  .site-header.scrolled .cot-burger{color:var(--ink)}\n  .cot-burger i,.cot-burger i::before,.cot-burger i::after{height:2px;border-radius:2px}\n  .cot-burger i{box-shadow:0 1px 5px rgba(46,30,21,.45)}\n  .cot-burger i::before,.cot-burger i::after{box-shadow:0 1px 5px rgba(46,30,21,.45)}\n  .site-header.scrolled .cot-burger i,\n  .site-header.scrolled .cot-burger i::before,\n  .site-header.scrolled .cot-burger i::after{box-shadow:none}\n\n  \/* Lampo viola al tocco: e' l'evidenziazione predefinita del browser.\n     Sostituita con un oro trasparente della palette. *\/\n  a,button,[role=\"button\"],input[type=\"submit\"],summary{\n    -webkit-tap-highlight-color:rgba(191,134,60,.20);\n  }\n\n  \/* Home, sezione Valori: le quattro schede erano una sotto l'altra.\n     Due colonne. *\/\n  .cards{grid-template-columns:1fr 1fr;gap:34px 16px}\n  .card-icon{width:74px;height:74px}\n  .card-icon svg{width:74px;height:74px}\n  .card h3{font-size:20px}\n\n  \/* Chi siamo, \"Perche scegliere i nostri vini\": i numeri 01\/02\/03 sono\n     posizionati 104px sopra la scheda. In colonna singola con 40px di\n     distanza finivano sopra il testo della scheda precedente, e il primo\n     sconfinava sul filetto della sezione. *\/\n  .perche-grid{gap:132px;padding-top:124px}\n  \/* i due filetti verticali separano le colonne: in colonna singola\n     tagliavano il contenuto a meta *\/\n  .perche-grid::before,.perche-grid::after{display:none}\n\n  \/* Chi siamo, blocco decorativo dei pillar: allineato a sinistra e alto\n     240px fissi, su mobile lasciava un vuoto con marchio, filetto e frase\n     sparpagliati. Composizione centrata e compattata. *\/\n  .pillar-deco{min-height:0;margin-top:34px;align-items:center;text-align:center}\n  .pillar-deco-mark{width:64px;height:64px}\n  .pillar-deco-rule{margin:16px auto 14px}\n  .pillar-deco-line{margin:0 auto 16px}\n\n  \/* ---------- 3o giro, 27\/08\/2026 ----------\n     Il lampo viola al tocco del burger non era la tap-highlight del\n     browser (gia' neutralizzata) ma il reset del tema:\n     button:hover,button:focus{background-color:#c36;color:#fff}\n     con specificita' 0-1-1, superiore a .cot-burger. Neutralizzato qui\n     per il burger e per la X del pannello, gli unici due <button>\n     introdotti dal menu mobile. *\/\n  .cot-burger:hover,.cot-burger:focus,.cot-burger:active{\n    background:none;background-color:transparent;color:var(--cream);\n    text-decoration:none;\n  }\n  .site-header.scrolled .cot-burger:hover,\n  .site-header.scrolled .cot-burger:focus,\n  .site-header.scrolled .cot-burger:active{color:var(--ink)}\n  .cot-mnav-x:hover,.cot-mnav-x:focus,.cot-mnav-x:active{\n    background:none;background-color:transparent;color:var(--brand);\n    text-decoration:none;\n  }\n}\n\n\/* --- schede risorse a colonna singola sui telefoni ---\n   a 390px la griglia 2x2 lasciava colonne da ~150px, con testi\n   spezzati su sette righe --- *\/\n@media (max-width:560px){\n  .pcat-grid{grid-template-columns:1fr}\n  .pcat{border-right:none}\n  .pcat:nth-child(2n){border-right:none}\n}\n<\/style>\n<main id=\"main\">\n\n<!-- ============ HERO ============ -->\n<section class=\"mk-hero\" aria-label=\"Opening\">\n  <div class=\"mk-hero-inner mk-hero-inner--split\">\n    <div class=\"mk-hero-text\">\n      <span class=\"sost-eyebrow mk-hero-eyebrow\">Our brands<\/span>\n      <h1 class=\"mk-hero-title\" data-split>A strategic portfolio,\na distinctive signature.<\/h1>\n      <p class=\"mk-hero-lede anim-fade\" data-delay=\"600\">Three brands sharing the same identity, grounded in quality, authenticity, and a contemporary vision of wine.<\/p>\n    <\/div>\n    <div class=\"hero-about-photo mk-hero-photo\">\n      <div class=\"hero-deco-square\" aria-hidden=\"true\"><\/div>\n      <div class=\"hero-deco-ring-2\" aria-hidden=\"true\"><span class=\"brand-logo\"><\/span><\/div>\n      <div class=\"hero-deco-ring\" aria-hidden=\"true\"><span class=\"brand-logo\"><\/span><\/div>\n      <span class=\"hero-deco-sparkle hero-deco-sparkle--1\" aria-hidden=\"true\"><\/span>\n      <span class=\"hero-deco-sparkle hero-deco-sparkle--2\" aria-hidden=\"true\"><\/span>\n      <span class=\"hero-deco-sparkle hero-deco-sparkle--3\" aria-hidden=\"true\"><\/span>\n      <div class=\"hero-photo-card\">\n        <img decoding=\"async\" src=\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/08\/marchi-intro-bottiglie.jpg\" alt=\"Lili\u00e9 Annaberta, La Sogara Valpolicella and Pinot Grigio Villa Annaberta bottles\">\n      <\/div>\n      <div class=\"hero-photo-year\" aria-hidden=\"true\">\n        <span class=\"year-dot\"><\/span>\n        <span class=\"year-text\">Since <em>1925<\/em><\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============ BRANDS \u2014 typographic color bands, no photos ============ -->\n\n<!-- 01 \u00b7 ANNABERTA -->\n<section class=\"bb bb--annaberta\" aria-labelledby=\"bb-annaberta\">\n  <div class=\"bb-inner\">\n    <div class=\"bb-side\">\n      <span class=\"bb-index reveal\">01<\/span>\n      <span class=\"bb-side-rule reveal\" data-delay=\"60\" aria-hidden=\"true\"><\/span>\n      <span class=\"bb-of reveal\" data-delay=\"80\">the Cottini brands<\/span>\n    <\/div>\n    <div class=\"bb-main\">\n      <span class=\"bb-logo reveal\" data-delay=\"120\" role=\"img\" aria-label=\"Annaberta\" id=\"bb-annaberta\"><\/span>\n      <span class=\"bb-tag reveal\" data-delay=\"240\">Contemporary elegance<\/span>\n      <p class=\"bb-desc reveal\" data-delay=\"340\">Light, refined wines designed for a young, conscious audience. Perfect for modern consumption, with a focus on balance and well-being.<\/p>\n      <a class=\"bb-cta reveal\" data-delay=\"440\" href=\"#\" aria-label=\"Discover the Annaberta range\">Discover the range <svg width=\"22\" height=\"11\" aria-hidden=\"true\"><use href=\"#arrow\"\/><\/svg><\/a>\n    <\/div>\n    <span class=\"bb-watermark\" aria-hidden=\"true\"><\/span>\n  <\/div>\n<\/section>\n\n<!-- 02 \u00b7 LA SOGARA -->\n<section class=\"bb bb--sogara\" aria-labelledby=\"bb-sogara\">\n  <div class=\"bb-inner\">\n    <div class=\"bb-side\">\n      <span class=\"bb-index reveal\">02<\/span>\n      <span class=\"bb-side-rule reveal\" data-delay=\"60\" aria-hidden=\"true\"><\/span>\n      <span class=\"bb-of reveal\" data-delay=\"80\">the Cottini brands<\/span>\n    <\/div>\n    <div class=\"bb-main\">\n      <span class=\"bb-logo reveal\" data-delay=\"120\" role=\"img\" aria-label=\"La Sogara\" id=\"bb-sogara\"><\/span>\n      <span class=\"bb-tag reveal\" data-delay=\"240\">Authentic Veronese roots<\/span>\n      <p class=\"bb-desc reveal\" data-delay=\"340\">Classic regional wines\u2014accessible, reliable, and true to tradition. Everyday wines that are convivial, approachable, and unmistakable.<\/p>\n      <a class=\"bb-cta reveal\" data-delay=\"440\" href=\"#\" aria-label=\"Discover the La Sogara range\">Discover the range <svg width=\"22\" height=\"11\" aria-hidden=\"true\"><use href=\"#arrow\"\/><\/svg><\/a>\n    <\/div>\n    <span class=\"bb-watermark\" aria-hidden=\"true\"><\/span>\n  <\/div>\n<\/section>\n\n<!-- 03 \u00b7 STILE NATURALE -->\n<section class=\"bb bb--naturale\" aria-labelledby=\"bb-naturale\">\n  <div class=\"bb-inner\">\n    <div class=\"bb-side\">\n      <span class=\"bb-index reveal\">03<\/span>\n      <span class=\"bb-side-rule reveal\" data-delay=\"60\" aria-hidden=\"true\"><\/span>\n      <span class=\"bb-of reveal\" data-delay=\"80\">the Cottini brands<\/span>\n    <\/div>\n    <div class=\"bb-main\">\n      <span class=\"bb-logo reveal\" data-delay=\"120\" role=\"img\" aria-label=\"Stile Naturale\" id=\"bb-naturale\"><\/span>\n      <span class=\"bb-tag reveal\" data-delay=\"240\">Where nature meets elegance<\/span>\n      <p class=\"bb-desc reveal\" data-delay=\"340\">An organic, sustainable range inspired by biodiversity and the purity of the land.<\/p>\n      <a class=\"bb-cta reveal\" data-delay=\"440\" href=\"#\" aria-label=\"Discover the Stile Naturale range\">Discover the range <svg width=\"22\" height=\"11\" aria-hidden=\"true\"><use href=\"#arrow\"\/><\/svg><\/a>\n    <\/div>\n    <span class=\"bb-watermark\" aria-hidden=\"true\"><\/span>\n  <\/div>\n<\/section>\n\n\n\n<\/main>\n\n\n<!-- ============ FOOTER ============ -->\n<footer class=\"site-footer\" role=\"contentinfo\">\n  <div class=\"foot-grid\">\n    <div class=\"col-logo\">\n      <a href=\"\/en\/\" class=\"logo logo--footer\" aria-label=\"Cottini 1925\">\n        <span class=\"brand-logo brand-logo--lg brand-logo--light\"><\/span>\n      <\/a>\n      \n    <\/div>\n    <div>\n      <h4>Private areas<\/h4>\n      <ul>\n        <li><a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/trade-area\/\">Trade Area<\/a><\/li>\n        <li><a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/press-area\/\">Press Area<\/a><\/li>\n      <\/ul>\n    <\/div>\n    <div>\n      <h4>Where we are<\/h4>\n      <address>San Pietro in Cariano, Verona, Italy<\/address>\n      \n    <\/div>\n    <div>\n      <h4>Get in touch<\/h4>\n      <ul>\n        <li><a href=\"mailto:info@cottinivini.com\">info@cottinivini.com<\/a><\/li>\n        <li><a href=\"tel:+390456280157\">+39 045 6280157<\/a><\/li>\n      <\/ul>\n    <\/div>\n  <\/div>\n  <div class=\"foot-bottom\">\n    <span>\u00a9 1925\u20132026 COTTINI S.P.A. \u00b7 P.IVA 02790400234<\/span>\n    <div class=\"links\">\n      <a href=\"https:\/\/www.cottini1925.cybeartest.it\/?page_id=3\">Privacy<\/a>\n      <a href=\"#\">Cookies<\/a>\n      <a href=\"#\">Credits<\/a>\n    <\/div>\n  <\/div>\n<\/footer>\n\n<div class=\"grain\" aria-hidden=\"true\"><\/div>\n<div class=\"scroll-prog\" aria-hidden=\"true\"><\/div>\n\n\n\n<script>(function(){var b=\"CihmdW5jdGlvbigpewogIGNvbnN0IHJlZHVjZWQgPSBtYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CgogIC8qIDEpIEhlYWRlciBzY3JvbGxlZCBzdGF0ZSDigJQgcGFnZXMgd2l0aG91dCBhIGRhcmsgZnVsbC1ibGVlZCBoZXJvIGFsd2F5cyB1c2UgdGhlIGRhcmsgaGVhZGVyICovCiAgY29uc3QgaGRyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpdGUtaGVhZGVyJyk7CiAgY29uc3QgaGFzRGFya0hlcm8gPSAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZXJvIC5oZXJvLXBob3RvJyk7CiAgY29uc3Qgc2V0U2Nyb2xsZWQgPSAoKSA9PiBoZHIuY2xhc3NMaXN0LnRvZ2dsZSgnc2Nyb2xsZWQnLCBoYXNEYXJrSGVybyA\/IHdpbmRvdy5zY3JvbGxZID4gNDAgOiB0cnVlKTsKICBzZXRTY3JvbGxlZCgpOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzZXRTY3JvbGxlZCwge3Bhc3NpdmU6dHJ1ZX0pOwoKICAvKiAyKSBTcGxpdCBIMSBpbnRvIDxzcGFuIGNsYXNzPSJ3Ij4gKi8KICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zcGxpdF0nKS5mb3JFYWNoKGVsPT57CiAgICBjb25zdCByYXcgPSBlbC50ZXh0Q29udGVudDsKICAgIGVsLnRleHRDb250ZW50PScnOwogICAgbGV0IGk9MDsKICAgIHJhdy5zcGxpdCgnXG4nKS5mb3JFYWNoKChsaW5lLGxpLGFycik9PnsKICAgICAgbGluZS50cmltKCkuc3BsaXQoL1xzKy8pLmZvckVhY2god29yZD0+ewogICAgICAgIGNvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgICAgIHMuY2xhc3NOYW1lPSd3JzsKICAgICAgICBzLnRleHRDb250ZW50PXdvcmQrJyAnOwogICAgICAgIHMuc3R5bGUuYW5pbWF0aW9uRGVsYXk9KDgwICsgaSoxMTApKydtcyc7CiAgICAgICAgaWYocmVkdWNlZCl7cy5zdHlsZS5hbmltYXRpb249J25vbmUnO3Muc3R5bGUub3BhY2l0eT0xO3Muc3R5bGUudHJhbnNmb3JtPSdub25lJ30KICAgICAgICBlbC5hcHBlbmRDaGlsZChzKTsKICAgICAgICBpKys7CiAgICAgIH0pOwogICAgICBpZihsaTxhcnIubGVuZ3RoLTEpIGVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwogICAgfSk7CiAgfSk7CgogIC8qIDMpIFJldmVhbCDigJQgSU8gd2l0aCBzY3JvbGwgZmFsbGJhY2sgKi8KICBjb25zdCByZXZlYWxFbHMgPSBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJldmVhbCwgLmFuaW0tZmFkZSwgLmFuaW0tem9vbScpXTsKICBjb25zdCBjYXJkRWxzID0gWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWNhcmRdJyldOwogIGNhcmRFbHMuZm9yRWFjaChlbD0+eyBlbC5zdHlsZS5vcGFjaXR5PScwJzsgZWwuc3R5bGUudHJhbnNmb3JtPSd0cmFuc2xhdGVZKDI4cHgpJzsKICAgIGVsLnN0eWxlLnRyYW5zaXRpb249J29wYWNpdHkgMS4xcyB2YXIoLS1lYXNlKSwgdHJhbnNmb3JtIDEuMnMgdmFyKC0tZWFzZSknOyB9KTsKCiAgY29uc3QgdHJpZ2dlclJldmVhbCA9IChlbCk9PnsKICAgIGlmKGVsLmRhdGFzZXQucmV2ZWFsZWQpIHJldHVybjsKICAgIGVsLmRhdGFzZXQucmV2ZWFsZWQgPSAnMSc7CiAgICBjb25zdCBkID0gcGFyc2VJbnQoZWwuZGF0YXNldC5kZWxheXx8JzAnLDEwKTsKICAgIHNldFRpbWVvdXQoKCk9PnsKICAgICAgaWYoZWwuaGFzQXR0cmlidXRlKCdkYXRhLWNhcmQnKSl7CiAgICAgICAgZWwuc3R5bGUub3BhY2l0eT0nMSc7IGVsLnN0eWxlLnRyYW5zZm9ybT0ndHJhbnNsYXRlWSgwKSc7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgnaW4nKTsKICAgICAgfQogICAgfSwgcmVkdWNlZD8wOmQpOwogIH07CgogIGNvbnN0IGlzVmlzaWJsZSA9IChlbCwgbWFyZ2luQm90dG9tPTAuMDgpPT57CiAgICBjb25zdCByID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICBjb25zdCB2aCA9IHdpbmRvdy5pbm5lckhlaWdodDsKICAgIGlmKHIuYm90dG9tIDwgMCB8fCByLnRvcCA+IHZoKSByZXR1cm4gZmFsc2U7CiAgICBjb25zdCB2aXNpYmxlID0gTWF0aC5taW4oci5ib3R0b20sIHZoKSAtIE1hdGgubWF4KHIudG9wLCAwKTsKICAgIHJldHVybiB2aXNpYmxlIC8gTWF0aC5taW4oci5oZWlnaHQsIHZoKSA+PSAwLjE1ICYmIHIudG9wIDwgdmggKiAoMSAtIG1hcmdpbkJvdHRvbSk7CiAgfTsKCiAgY29uc3QgY2hlY2tBbGwgPSAoKT0+ewogICAgWy4uLnJldmVhbEVscywgLi4uY2FyZEVsc10uZm9yRWFjaChlbD0+eyBpZihpc1Zpc2libGUoZWwpKSB0cmlnZ2VyUmV2ZWFsKGVsKTsgfSk7CiAgfTsKCiAgdHJ5ewogICAgY29uc3QgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpPT57CiAgICAgIGVudHJpZXMuZm9yRWFjaChlPT57IGlmKGUuaXNJbnRlcnNlY3RpbmcpIHRyaWdnZXJSZXZlYWwoZS50YXJnZXQpOyB9KTsKICAgIH0se3RocmVzaG9sZDowLjE1LHJvb3RNYXJnaW46JzBweCAwcHggLTglIDBweCd9KTsKICAgIFsuLi5yZXZlYWxFbHMsIC4uLmNhcmRFbHNdLmZvckVhY2goZWw9PmlvLm9ic2VydmUoZWwpKTsKICB9Y2F0Y2goZSl7fQoKICAvLyBTY3JvbGwvbG9hZCBmYWxsYmFjayBlbnN1cmVzIGNvbnRlbnQgcmV2ZWFscyBldmVuIGlmIElPIG1pc2ZpcmVzCiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGNoZWNrQWxsLCB7cGFzc2l2ZTp0cnVlfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBjaGVja0FsbCk7CiAgc2V0VGltZW91dChjaGVja0FsbCwgMjAwKTsKICBzZXRUaW1lb3V0KGNoZWNrQWxsLCAxMjAwKTsKCiAgLyogM2IpIE1hcCDigJQgZmV0Y2ggU1ZHIGFuZCBpbmxpbmUgaXQgQVNBUCBzbyBhbmltYXRpb25zIGFyZSByZWFkeSB3aGVuIHNjcm9sbGVkIGludG8gdmlldy4gKi8KICBjb25zdCBtYXBDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudGVycml0b3JpLW1hcCcpOwogIGlmKG1hcENvbnRhaW5lcil7CiAgICBjb25zdCBtYXBJbWcgPSBtYXBDb250YWluZXIucXVlcnlTZWxlY3RvcignLnRlcnJpdG9yaS1tYXAtaW1nJyk7CiAgICBpZihtYXBJbWcpewogICAgICBjb25zdCBpbmxpbmVOb3cgPSBhc3luYyAoKT0+ewogICAgICAgIGlmKG1hcENvbnRhaW5lci5kYXRhc2V0LnN2Z0lubGluZWQpIHJldHVybjsKICAgICAgICBtYXBDb250YWluZXIuZGF0YXNldC5zdmdJbmxpbmVkID0gJzEnOwogICAgICAgIHRyeXsKICAgICAgICAgIGNvbnN0IHIgPSBhd2FpdCBmZXRjaChtYXBJbWcuc3JjKTsKICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByLnRleHQoKTsKICAgICAgICAgIG1hcENvbnRhaW5lci5pbm5lckhUTUwgPSB0ZXh0OwogICAgICAgICAgY29uc3Qgc3ZnRWwgPSBtYXBDb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7CiAgICAgICAgICBpZighc3ZnRWwpIHJldHVybjsKICAgICAgICAgIHN2Z0VsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCd0ZXJyaXRvcmktbWFwLXN2ZycpOwogICAgICAgICAgLy8gSW5qZWN0IHBlcnBldHVhbCBwdWxzZSByaW5ncyBJTlNJREUgZWFjaCBkb3QncyBvd24gZ3JvdXAgc28gdGhleSBzaGFyZQogICAgICAgICAgLy8gZXhhY3RseSB0aGUgc2FtZSBwYXJlbnQgdHJhbnNmb3JtcyAodHJhbnNsYXRlICsgWS1mbGlwIG1hdHJpeCkg4oCUIG5vCiAgICAgICAgICAvLyBmbG9hdGluZy1wb2ludCBkcmlmdCwgbm8gYXNwZWN0LXJhdGlvIG1pc21hdGNoLgogICAgICAgICAgY29uc3QgbnMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnOwogICAgICAgICAgY29uc3QgYnVyZ3VuZHlFbHMgPSBzdmdFbC5xdWVyeVNlbGVjdG9yQWxsKCdbZmlsbD0iIzRhMGYxZCJdJyk7CiAgICAgICAgICBsZXQgZG90SWR4ID0gMDsKICAgICAgICAgIGJ1cmd1bmR5RWxzLmZvckVhY2goZWw9PnsKICAgICAgICAgICAgY29uc3QgYmIgPSBlbC5nZXRCQm94KCk7CiAgICAgICAgICAgIC8vIERvdHMgaGF2ZSBhIHNtYWxsIGJib3ggKH4xMHgxMCk7IGZsYWdzIGFyZSBtdWNoIGxhcmdlcgogICAgICAgICAgICBpZihiYi53aWR0aCA+IDIwIHx8IGJiLmhlaWdodCA+IDIwKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGVsLnBhcmVudE5vZGU7CiAgICAgICAgICAgIGlmKCFwYXJlbnQpIHJldHVybjsKICAgICAgICAgICAgZG90SWR4Kys7CiAgICAgICAgICAgIGNvbnN0IHJpbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnMsJ2NpcmNsZScpOwogICAgICAgICAgICAvLyBMb2NhbCBjaXJjbGUgY2VudGVyIG1hdGNoZXMgdGhlIGRvdCdzIHBhdGg6IHN0YXJ0cyBhdCAoMCwwKSwgY3VydmVzIHRvCiAgICAgICAgICAgIC8vICgtOS42ODUsIDApIGFuZCBiYWNrLCBzbyB0aGUgdmlzdWFsIGNlbnRlciBpcyBhdCAoLTQuODQzLCAwKS4KICAgICAgICAgICAgcmluZy5zZXRBdHRyaWJ1dGUoJ2N4JywnLTQuODQzJyk7CiAgICAgICAgICAgIHJpbmcuc2V0QXR0cmlidXRlKCdjeScsJzAnKTsKICAgICAgICAgICAgcmluZy5zZXRBdHRyaWJ1dGUoJ3InLCc0Ljg0Jyk7CiAgICAgICAgICAgIHJpbmcuc2V0QXR0cmlidXRlKCdmaWxsJywnbm9uZScpOwogICAgICAgICAgICByaW5nLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywnIzRhMGYxZCcpOwogICAgICAgICAgICByaW5nLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywnMS40Jyk7CiAgICAgICAgICAgIHJpbmcuc2V0QXR0cmlidXRlKCdjbGFzcycsJ3Bpbi1wdWxzZSBwaW4tcHVsc2UtJyArIGRvdElkeCk7CiAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChyaW5nKTsKICAgICAgICAgIH0pOwogICAgICAgIH1jYXRjaChlKXsgLyoga2VlcCA8aW1nPiBmYWxsYmFjayAqLyB9CiAgICAgIH07CiAgICAgIC8vIElubGluZSBhcyBzb29uIGFzIHBvc3NpYmxlCiAgICAgIGlmKCdyZXF1ZXN0SWRsZUNhbGxiYWNrJyBpbiB3aW5kb3cpewogICAgICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2soaW5saW5lTm93LCB7dGltZW91dDoxNTAwfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgc2V0VGltZW91dChpbmxpbmVOb3csIDIwMCk7CiAgICAgIH0KICAgICAgLy8gQmFja3VwOiBpZiBub3QgaW5saW5lZCB3aXRoaW4gMi41cywgZm9yY2UgaXQKICAgICAgc2V0VGltZW91dChpbmxpbmVOb3csIDI1MDApOwogICAgfQogIH0KCiAgLy8gRmluYWwgc2FmZXR5OiBhbnl0aGluZyBzdGlsbCBoaWRkZW4gNHMgYWZ0ZXIgbG9hZCBnZXRzIGhhcmQtc2hvd24uCiAgLy8gKEJlbHQtYW5kLWJyYWNlcyBhZ2FpbnN0IGVudmlyb25tZW50cyB3aGVyZSB0cmFuc2l0aW9ucyBzaWxlbnRseSBzdGFsbC4pCiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKT0+ewogICAgc2V0VGltZW91dCgoKT0+ewogICAgICBbLi4ucmV2ZWFsRWxzLCAuLi5jYXJkRWxzXS5mb3JFYWNoKGVsPT57CiAgICAgICAgY29uc3Qgb3AgPSBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZWwpLm9wYWNpdHkpOwogICAgICAgIGlmKG9wIDwgMC45OSl7CiAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnOwogICAgICAgICAgZWwuc3R5bGUub3BhY2l0eSA9ICcxJzsKICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICdub25lJzsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwgNDAwMCk7CiAgfSk7CgogIC8qIDUpIENvdW50ZXIgYW5pbWF0aW9uIOKAlCBJTyArIHNjcm9sbCBmYWxsYmFjayAqLwogIGNvbnN0IGZtdCA9ICh2YWwsIHR5cGUpPT57CiAgICBpZih0eXBlPT09J20nKSByZXR1cm4gdmFsLnRvRml4ZWQoMSkucmVwbGFjZSgnLicsJywnKSsnTSc7CiAgICBpZih0eXBlPT09J3BsdXMnKSByZXR1cm4gTWF0aC5yb3VuZCh2YWwpKycrJzsKICAgIGlmKHR5cGU9PT0ndGhvdXNhbmRzJykgcmV0dXJuIE1hdGgucm91bmQodmFsKS50b0xvY2FsZVN0cmluZygnaXQtSVQnKTsKICAgIGlmKHR5cGU9PT0ncGVyY2VudCcpIHJldHVybiBNYXRoLnJvdW5kKHZhbCkrJyUnOwogICAgcmV0dXJuIFN0cmluZyhNYXRoLnJvdW5kKHZhbCkpOwogIH07CiAgY29uc3QgY291bnRlckVscyA9IFsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1jb3VudGVyXScpXTsKICBjb25zdCBydW5Db3VudGVyID0gKGVsKT0+ewogICAgaWYoZWwuZGF0YXNldC5jb3VudGVkKSByZXR1cm47CiAgICBlbC5kYXRhc2V0LmNvdW50ZWQgPSAnMSc7CiAgICBjb25zdCB0YXJnZXQgPSBwYXJzZUZsb2F0KGVsLmRhdGFzZXQudGFyZ2V0KTsKICAgIGNvbnN0IGZyb20gPSBwYXJzZUZsb2F0KGVsLmRhdGFzZXQuZnJvbXx8JzAnKTsKICAgIGNvbnN0IHN0ZXAgPSBwYXJzZUZsb2F0KGVsLmRhdGFzZXQuc3RlcHx8JzEnKTsKICAgIGNvbnN0IGludGVydmFsID0gcGFyc2VJbnQoZWwuZGF0YXNldC5pbnRlcnZhbHx8JzMwJywxMCk7CiAgICBjb25zdCB0eXBlID0gZWwuZGF0YXNldC5mb3JtYXR8fCdpbnQnOwogICAgaWYocmVkdWNlZCl7IGVsLnRleHRDb250ZW50ID0gZm10KHRhcmdldCx0eXBlKTsgcmV0dXJuOyB9CiAgICBsZXQgdiA9IGZyb207IGVsLnRleHRDb250ZW50ID0gZm10KHYsdHlwZSk7CiAgICBjb25zdCB0ID0gc2V0SW50ZXJ2YWwoKCk9PnsKICAgICAgdiArPSBzdGVwOwogICAgICBpZigoc3RlcD4wICYmIHY+PXRhcmdldCkgfHwgKHN0ZXA8MCAmJiB2PD10YXJnZXQpKXsKICAgICAgICB2ID0gdGFyZ2V0OyBlbC50ZXh0Q29udGVudCA9IGZtdCh2LHR5cGUpOyBjbGVhckludGVydmFsKHQpOwogICAgICB9IGVsc2UgewogICAgICAgIGVsLnRleHRDb250ZW50ID0gZm10KHYsdHlwZSk7CiAgICAgIH0KICAgIH0sIGludGVydmFsKTsKICB9OwogIGNvbnN0IGNvdW50ZXJWaXNpYmxlID0gKGVsKT0+ewogICAgY29uc3QgciA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgY29uc3QgdmggPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICBpZihyLmJvdHRvbSA8IDAgfHwgci50b3AgPiB2aCkgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHIudG9wIDwgdmggKiAwLjY1OwogIH07CiAgY29uc3QgY2hlY2tDb3VudGVycyA9ICgpPT57IGNvdW50ZXJFbHMuZm9yRWFjaChlbD0+eyBpZihjb3VudGVyVmlzaWJsZShlbCkpIHJ1bkNvdW50ZXIoZWwpOyB9KTsgfTsKICB0cnl7CiAgICBjb25zdCBjb3VudElPID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKT0+ewogICAgICBlbnRyaWVzLmZvckVhY2goZT0+eyBpZihlLmlzSW50ZXJzZWN0aW5nKSBydW5Db3VudGVyKGUudGFyZ2V0KTsgfSk7CiAgICB9LHt0aHJlc2hvbGQ6MC4zNX0pOwogICAgY291bnRlckVscy5mb3JFYWNoKGVsPT5jb3VudElPLm9ic2VydmUoZWwpKTsKICB9Y2F0Y2goZSl7fQogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBjaGVja0NvdW50ZXJzLCB7cGFzc2l2ZTp0cnVlfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBjaGVja0NvdW50ZXJzKTsKICBzZXRUaW1lb3V0KGNoZWNrQ291bnRlcnMsIDQwMCk7CgogIC8qIDYpIFBhcmFsbGF4ICsgc2Nyb2xsLWRyaXZlbiBzZWN0aW9uICJkZXB0aCIgKyBoZXJvIGZhZGUgKyBwcm9ncmVzcyBiYXIgKi8KICBjb25zdCBwcm9nQmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNjcm9sbC1wcm9nJyk7CiAgY29uc3QgaGVyb1RleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVyby10ZXh0Jyk7CiAgY29uc3QgaGVyb1NlYyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZXJvJyk7CiAgaWYoIXJlZHVjZWQpewogICAgY29uc3QgcGFyYWxsYXhOb2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXBhcmFsbGF4XScpOwogICAgLy8gSW5uZXIgY29udGVudCBibG9ja3MgdGhhdCBzaG91bGQgc3VidGx5IGxpZnQgb24gdmlld3BvcnQgY2VudGVyIHBhc3MKICAgIGNvbnN0IGxpZnRFbHMgPSBbCiAgICAgIC4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52YWxvcmktaW5uZXIsIC5udW1lcmktaW5uZXInKQogICAgXTsKICAgIGxpZnRFbHMuZm9yRWFjaChlbCA9PiB7IGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJzsgfSk7CiAgICBsZXQgdGlja2luZyA9IGZhbHNlOwogICAgbGV0IGxhc3RTY3JvbGwgPSB3aW5kb3cuc2Nyb2xsWTsKICAgIGxldCB2ZWxvY2l0eSA9IDA7CiAgICBjb25zdCBtYXAgPSAodmFsLCBpbk1pbiwgaW5NYXgsIG91dE1pbiwgb3V0TWF4KSA9PgogICAgICBvdXRNaW4gKyAoKHZhbCAtIGluTWluKSAqIChvdXRNYXggLSBvdXRNaW4pKSAvIChpbk1heCAtIGluTWluKTsKICAgIGNvbnN0IHVwZGF0ZSA9ICgpPT57CiAgICAgIGNvbnN0IHZoID0gd2luZG93LmlubmVySGVpZ2h0OwogICAgICBjb25zdCBzeSA9IHdpbmRvdy5zY3JvbGxZOwogICAgICB2ZWxvY2l0eSA9IHZlbG9jaXR5ICogMC44NSArIChzeSAtIGxhc3RTY3JvbGwpICogMC4xNTsKICAgICAgbGFzdFNjcm9sbCA9IHN5OwogICAgICBjb25zdCB2ZWxCb29zdCA9IE1hdGgubWluKDEsIE1hdGguYWJzKHZlbG9jaXR5KSAvIDYwKTsKCiAgICAgIC8vIFByb2dyZXNzIGJhcgogICAgICBjb25zdCBkb2NIID0gTWF0aC5tYXgoMSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCAtIHZoKTsKICAgICAgY29uc3QgcCA9IE1hdGgubWluKDEsIE1hdGgubWF4KDAsIHN5IC8gZG9jSCkpOwogICAgICBpZihwcm9nQmFyKSBwcm9nQmFyLnN0eWxlLnNldFByb3BlcnR5KCctLXAnLCAocCoxMDApLnRvRml4ZWQoMikrJyUnKTsKCiAgICAgIC8vIEhlcm8gdGV4dCBmYWRlICsgbGlmdCBhcyB5b3Ugc2Nyb2xsIGludG8gVmFsb3JpCiAgICAgIGlmKGhlcm9UZXh0ICYmIGhlcm9TZWMpewogICAgICAgIGNvbnN0IGhlcm9IID0gaGVyb1NlYy5vZmZzZXRIZWlnaHQ7CiAgICAgICAgY29uc3QgdCA9IE1hdGgubWluKDEsIE1hdGgubWF4KDAsIHN5IC8gKGhlcm9IICogMC43KSkpOwogICAgICAgIGNvbnN0IGVhc2VkID0gdCAqIHQ7CiAgICAgICAgaGVyb1RleHQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDAsICR7LXN5KjAuMzJ9cHgsIDApIHNjYWxlKCR7MSAtIGVhc2VkKjAuMDZ9KWA7CiAgICAgICAgaGVyb1RleHQuc3R5bGUub3BhY2l0eSA9ICgxIC0gZWFzZWQgKiAxLjE1KS50b0ZpeGVkKDMpOwogICAgICB9CgogICAgICBwYXJhbGxheE5vZGVzLmZvckVhY2gobm9kZT0+ewogICAgICAgIGNvbnN0IGtpbmQgPSBub2RlLmRhdGFzZXQucGFyYWxsYXg7CiAgICAgICAgaWYoa2luZD09PSdoZXJvJyl7CiAgICAgICAgICBjb25zdCB5ID0gc3kgKiAwLjI4OwogICAgICAgICAgbm9kZS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoMCwgJHt5fXB4LCAwKSBzY2FsZSgkezEuMDggKyBNYXRoLm1pbiguMDYsIHN5LzgwMDApfSlgOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjb25zdCByZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgIGlmKHJlY3QuYm90dG9tIDwgLTIwMCB8fCByZWN0LnRvcCA+IHZoKzIwMCkgcmV0dXJuOwogICAgICAgICAgY29uc3QgcHAgPSAxIC0gKHJlY3QudG9wIC8gdmgpOwogICAgICAgICAgY29uc3QgcmFuZ2UgPSBraW5kPT09J251bWVyaScgPyBbLTUwLDQ1XSA6IFstMzAsMjhdOwogICAgICAgICAgY29uc3QgeSA9IG1hcChNYXRoLm1heCgwLE1hdGgubWluKDEuNSxwcCkpLCAwLCAxLjUsIHJhbmdlWzBdLCByYW5nZVsxXSk7CiAgICAgICAgICBub2RlLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwLCAke3l9cHgsIDApYDsKICAgICAgICB9CiAgICAgIH0pOwoKICAgICAgLy8gU2VjdGlvbiBkZXB0aCBsaWZ0IOKAlCBpbm5lciBjb250ZW50IHJpc2VzIGFzIGl0IHBhc3NlcyB2aWV3cG9ydCBjZW50ZXIKICAgICAgbGlmdEVscy5mb3JFYWNoKGVsPT57CiAgICAgICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIGlmKHJlY3QuYm90dG9tIDwgLTIwMCB8fCByZWN0LnRvcCA+IHZoKzIwMCkgcmV0dXJuOwogICAgICAgIGNvbnN0IGNlbnRlciA9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQvMjsKICAgICAgICBjb25zdCBkaXN0ID0gKGNlbnRlciAtIHZoLzIpIC8gdmg7CiAgICAgICAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWF4KC0xLCBNYXRoLm1pbigxLCBkaXN0KSk7CiAgICAgICAgY29uc3QgbGlmdCA9IGNsYW1wZWQgKiAtMjggKiAoMSArIHZlbEJvb3N0KjAuNik7CiAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDAsICR7bGlmdH1weCwgMClgOwogICAgICB9KTsKCiAgICAgIC8vIENhcmQgaG9yaXpvbnRhbC1zdGFnZ2VyIGVudHJ5IChhbHRlcm5hdGluZyBsZWZ0L3JpZ2h0KQogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1jYXJkXScpLmZvckVhY2goKGNhcmQsIGkpPT57CiAgICAgICAgY29uc3QgcmVjdCA9IGNhcmQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgY29uc3QgZW50ZXIgPSAxIC0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgKHJlY3QudG9wIC0gdmgqMC4yKSAvICh2aCowLjY1KSkpOwogICAgICAgIGlmKGNhcmQuZGF0YXNldC5yZXZlYWxlZCAhPT0gJzEnICYmIGVudGVyID4gMC4wNSl7CiAgICAgICAgICAvLyBpbml0aWFsIGRyYW1hdGljIG9mZnNldCAob25seSBiZWZvcmUgcmV2ZWFsKQogICAgICAgICAgY29uc3QgZGlyID0gKGkgJSAyID09PSAwKSA\/IC0xIDogMTsKICAgICAgICAgIGNvbnN0IGsgPSAxIC0gZW50ZXI7CiAgICAgICAgICBjYXJkLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke2RpciAqIGsgKiAzNn1weCwgJHtrKjQwfXB4LCAwKWA7CiAgICAgICAgICBjYXJkLnN0eWxlLm9wYWNpdHkgPSBlbnRlci50b0ZpeGVkKDMpOwogICAgICAgIH0KICAgICAgfSk7CgogICAgICB0aWNraW5nID0gZmFsc2U7CiAgICB9OwogICAgY29uc3QgcmVxdWVzdFVwZGF0ZSA9ICgpPT57IGlmKCF0aWNraW5nKXsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZSk7IHRpY2tpbmcgPSB0cnVlOyB9IH07CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgcmVxdWVzdFVwZGF0ZSwge3Bhc3NpdmU6dHJ1ZX0pOwogICAgdXBkYXRlKCk7CgogICAgLyogNmIpIExFTklTLUxJS0UgSU5FUlRJQUwgU01PT1RIIFNDUk9MTAogICAgICAgTGlzdGVuIHRvIHdoZWVsICsgdG91Y2gsIGFkdmFuY2UgdGhlIGFjdHVhbCB3aW5kb3cuc2Nyb2xsWSB0b3dhcmQgYSB0YXJnZXQgd2l0aCBlYXNpbmcuICovCiAgICBsZXQgdGFyZ2V0ID0gd2luZG93LnNjcm9sbFk7CiAgICBsZXQgY3VycmVudCA9IHdpbmRvdy5zY3JvbGxZOwogICAgbGV0IHJhZklkID0gbnVsbDsKICAgIGNvbnN0IGVhc2UgPSAwLjA4NTsKICAgIGNvbnN0IG1pbkRlbHRhID0gMC41OwogICAgY29uc3QgaXNGb3JtRmllbGQgPSAoZWwpPT57CiAgICAgIGlmKCFlbCkgcmV0dXJuIGZhbHNlOwogICAgICBjb25zdCB0ID0gZWwudGFnTmFtZTsKICAgICAgcmV0dXJuIHQ9PT0nSU5QVVQnIHx8IHQ9PT0nVEVYVEFSRUEnIHx8IHQ9PT0nU0VMRUNUJyB8fCBlbC5pc0NvbnRlbnRFZGl0YWJsZTsKICAgIH07CiAgICBjb25zdCBsb29wID0gKCk9PnsKICAgICAgY29uc3QgZCA9IHRhcmdldCAtIGN1cnJlbnQ7CiAgICAgIGlmKE1hdGguYWJzKGQpIDwgbWluRGVsdGEpewogICAgICAgIGN1cnJlbnQgPSB0YXJnZXQ7CiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIGN1cnJlbnQpOwogICAgICAgIHJhZklkID0gbnVsbDsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgY3VycmVudCArPSBkICogZWFzZTsKICAgICAgd2luZG93LnNjcm9sbFRvKDAsIGN1cnJlbnQpOwogICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShsb29wKTsKICAgIH07CiAgICBjb25zdCBraWNrID0gKCk9PnsgaWYocmFmSWQgPT09IG51bGwpIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApOyB9OwogICAgY29uc3QgbWF4U2Nyb2xsID0gKCk9PiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gd2luZG93LmlubmVySGVpZ2h0OwogICAgbGV0IHVzZXJJbnRlcnJ1cHRpbmcgPSBmYWxzZTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIChlKT0+ewogICAgICBpZihpc0Zvcm1GaWVsZChlLnRhcmdldCkpIHJldHVybjsKICAgICAgLy8gaG9ub3IgbW9kaWZpZXJzICh6b29tLCBob3Jpem9udGFsKQogICAgICBpZihlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSByZXR1cm47CiAgICAgIC8vIHByZXZlbnQgdGhlIG5hdGl2ZSBpbnN0YW50IGp1bXAKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAvLyBzeW5jIGN1cnJlbnQgaWYgdXNlciBqdXN0IHNjcm9sbGVkIHdpdGggYXJyb3cga2V5cyAvIHNjcm9sbGJhcgogICAgICBpZihNYXRoLmFicyh3aW5kb3cuc2Nyb2xsWSAtIGN1cnJlbnQpID4gNCl7IGN1cnJlbnQgPSB3aW5kb3cuc2Nyb2xsWTsgdGFyZ2V0ID0gY3VycmVudDsgfQogICAgICAvLyBhY2NlbGVyYXRlIHBlciBkZWx0YTsgbGluZS1tb2RlIGRlbHRhcyAoZS5kZWx0YU1vZGU9PT0xKSBuZWVkIHNjYWxpbmcKICAgICAgY29uc3Qgc2NhbGUgPSBlLmRlbHRhTW9kZSA9PT0gMSA\/IDE4IDogKGUuZGVsdGFNb2RlID09PSAyID8gd2luZG93LmlubmVySGVpZ2h0IDogMSk7CiAgICAgIHRhcmdldCArPSBlLmRlbHRhWSAqIHNjYWxlICogMC45OwogICAgICB0YXJnZXQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihtYXhTY3JvbGwoKSwgdGFyZ2V0KSk7CiAgICAgIGtpY2soKTsKICAgIH0sIHtwYXNzaXZlOmZhbHNlfSk7CiAgICAvLyBUb3VjaCDigJQga2VlcCBuYXRpdmUgbW9tZW50dW0gKG1vYmlsZSkKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKCk9PnsgdXNlckludGVycnVwdGluZyA9IHRydWU7IHRhcmdldCA9IHdpbmRvdy5zY3JvbGxZOyBjdXJyZW50ID0gd2luZG93LnNjcm9sbFk7IH0sIHtwYXNzaXZlOnRydWV9KTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsICAgKCk9PnsgdXNlckludGVycnVwdGluZyA9IGZhbHNlOyB9KTsKICAgIC8vIEtleWJvYXJkIChzcGFjZSwgcGFnZSB1cC9kb3duLCBhcnJvd3MsIGhvbWUvZW5kKQogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSk9PnsKICAgICAgaWYoaXNGb3JtRmllbGQoZS50YXJnZXQpKSByZXR1cm47CiAgICAgIGNvbnN0IHZoID0gd2luZG93LmlubmVySGVpZ2h0OwogICAgICBsZXQgZGVsdGEgPSAwOwogICAgICBzd2l0Y2goZS5rZXkpewogICAgICAgIGNhc2UgJ0Fycm93RG93bic6IGRlbHRhID0gODA7IGJyZWFrOwogICAgICAgIGNhc2UgJ0Fycm93VXAnOiAgIGRlbHRhID0gLTgwOyBicmVhazsKICAgICAgICBjYXNlICdQYWdlRG93bic6ICBkZWx0YSA9IHZoICogMC44NTsgYnJlYWs7CiAgICAgICAgY2FzZSAnUGFnZVVwJzogICAgZGVsdGEgPSAtdmggKiAwLjg1OyBicmVhazsKICAgICAgICBjYXNlICcgJzogICAgICAgICBkZWx0YSA9IGUuc2hpZnRLZXkgPyAtdmgqMC44NSA6IHZoKjAuODU7IGJyZWFrOwogICAgICAgIGNhc2UgJ0hvbWUnOiAgICAgIHRhcmdldCA9IDA7IGN1cnJlbnQgPSB3aW5kb3cuc2Nyb2xsWTsga2ljaygpOyBlLnByZXZlbnREZWZhdWx0KCk7IHJldHVybjsKICAgICAgICBjYXNlICdFbmQnOiAgICAgICB0YXJnZXQgPSBtYXhTY3JvbGwoKTsgY3VycmVudCA9IHdpbmRvdy5zY3JvbGxZOyBraWNrKCk7IGUucHJldmVudERlZmF1bHQoKTsgcmV0dXJuOwogICAgICAgIGRlZmF1bHQ6IHJldHVybjsKICAgICAgfQogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGlmKE1hdGguYWJzKHdpbmRvdy5zY3JvbGxZIC0gY3VycmVudCkgPiA0KXsgY3VycmVudCA9IHdpbmRvdy5zY3JvbGxZOyB0YXJnZXQgPSBjdXJyZW50OyB9CiAgICAgIHRhcmdldCA9IE1hdGgubWF4KDAsIE1hdGgubWluKG1heFNjcm9sbCgpLCB0YXJnZXQgKyBkZWx0YSkpOwogICAgICBraWNrKCk7CiAgICB9KTsKICB9CgogIC8qIDcpIEN1c3RvbSBzbW9vdGgtc2Nyb2xsIGZvciBpbi1wYWdlIGFuY2hvcnMgKHNsb3dlciwgZ3JhY2VmdWwpICovCiAgY29uc3QgZWFzZU91dFF1aW50ID0gdCA9PiAxIC0gTWF0aC5wb3coMSAtIHQsIDUpOwogIGNvbnN0IHNtb290aFNjcm9sbFRvID0gKHRhcmdldFksIGR1cmF0aW9uPTEzMDApPT57CiAgICBjb25zdCBzdGFydFkgPSB3aW5kb3cuc2Nyb2xsWTsKICAgIGNvbnN0IGRpc3QgPSB0YXJnZXRZIC0gc3RhcnRZOwogICAgaWYoTWF0aC5hYnMoZGlzdCkgPCA0KSByZXR1cm47CiAgICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpOwogICAgY29uc3Qgc3RlcCA9IChub3cpPT57CiAgICAgIGNvbnN0IHAgPSBNYXRoLm1pbigxLCAobm93IC0gdDApIC8gZHVyYXRpb24pOwogICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgc3RhcnRZICsgZGlzdCAqIGVhc2VPdXRRdWludChwKSk7CiAgICAgIGlmKHAgPCAxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICB9OwogICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogIH07CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmXj0iIyJdJykuZm9yRWFjaChhPT57CiAgICBhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpPT57CiAgICAgIGNvbnN0IGhyZWYgPSBhLmdldEF0dHJpYnV0ZSgnaHJlZicpOwogICAgICBpZighaHJlZiB8fCBocmVmID09PSAnIycpIHJldHVybjsKICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihocmVmKTsKICAgICAgaWYoIXRhcmdldCkgcmV0dXJuOwogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGNvbnN0IGhlYWRlck9mZnNldCA9IDcwOwogICAgICBjb25zdCB5ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gaGVhZGVyT2Zmc2V0OwogICAgICBpZihyZWR1Y2VkKSB3aW5kb3cuc2Nyb2xsVG8oMCwgeSk7CiAgICAgIGVsc2Ugc21vb3RoU2Nyb2xsVG8oeSwgMTQwMCk7CiAgICB9KTsKICB9KTsKfSkoKTsKCi8qIElsIGxpbmsgSVQgZGVsIHNlbGV0dG9yZSB2YSByaXNjcml0dG8gbGF0byBjbGllbnQ6IFdQTUwgcmlzY3JpdmUgZ2xpIGhyZWYgaW50ZXJuaQogICBpbiBmYXNlIGRpIHNhbHZhdGFnZ2lvIGUgbG8gcmltYXBwZXJlYmJlIHN1bGxhIHZlcnNpb25lIGluZ2xlc2UuICovCihmdW5jdGlvbigpe3ZhciBsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYW5nIGFbZGF0YS1pdF0nKTtpZihsKXtsLnNldEF0dHJpYnV0ZSgnaHJlZicsIGwuZ2V0QXR0cmlidXRlKCdkYXRhLWl0JykpO319KSgpOwoKLyogLS0tLSBNZW51IG1vYmlsZSAoMjcvMDgvMjAyNikgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgQ29zdHJ1aXRvIGludGVyYW1lbnRlIHF1aSwgYSBydW50aW1lOiBpbCBtYXJrdXAgZGVsbGUgcGFnaW5lIG5vbiBjYW1iaWEsCiAgIGUgaWwgQ1NTIGxvIG1vc3RyYSBzb2xvIHNvdHRvIGkgOTYwcHguIElsIGRlc2t0b3AgcmVzdGEgaW50b2NjYXRvLiAgICAgICAqLwooZnVuY3Rpb24oKXsKICBpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY290LWJ1cmdlcicpKSByZXR1cm47CiAgdmFyIGhlYWRlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2l0ZS1oZWFkZXInKTsgaWYoIWhlYWRlcikgcmV0dXJuOwogIHZhciByaWdodD1oZWFkZXIucXVlcnlTZWxlY3RvcignLmhlYWRlci1yaWdodCcpOwogIHZhciBuYXY9aGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJy5zaXRlLW5hdicpOwogIGlmKCFyaWdodHx8IW5hdikgcmV0dXJuOwogIHZhciBFTj0oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFuZycpfHwnJykudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdlbicpPT09MDsKICB2YXIgTD17YXByaTpFTj8nT3BlbiBtZW51JzonQXByaSBpbCBtZW51JywgY2hpdWRpOkVOPydDbG9zZSBtZW51JzonQ2hpdWRpIGlsIG1lbnUnfTsKCiAgdmFyIGJ0bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICBidG4udHlwZT0nYnV0dG9uJzsgYnRuLmNsYXNzTmFtZT0nY290LWJ1cmdlcic7CiAgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsTC5hcHJpKTsKICBidG4uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywnZmFsc2UnKTsKICBidG4uc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywnY290LW1uYXYnKTsKICBidG4uaW5uZXJIVE1MPSc8aT48L2k+JzsKICByaWdodC5hcHBlbmRDaGlsZChidG4pOwoKICB2YXIgcGFuZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbmF2Jyk7CiAgcGFuZWwuY2xhc3NOYW1lPSdjb3QtbW5hdic7IHBhbmVsLmlkPSdjb3QtbW5hdic7CiAgcGFuZWwuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgbmF2LmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpfHwnJyk7CgogIHZhciB0b3A9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHRvcC5jbGFzc05hbWU9J2NvdC1tbmF2LXRvcCc7CiAgdmFyIGRhcms9aGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJy5sb2dvLS1kYXJrJyk7CiAgaWYoZGFyaykgdG9wLmFwcGVuZENoaWxkKGRhcmsuY2xvbmVOb2RlKHRydWUpKTsKICB2YXIgeD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICB4LnR5cGU9J2J1dHRvbic7IHguY2xhc3NOYW1lPSdjb3QtbW5hdi14JzsgeC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLEwuY2hpdWRpKTsKICB4LmlubmVySFRNTD0nPGk+PC9pPic7CiAgdG9wLmFwcGVuZENoaWxkKHgpOwogIHBhbmVsLmFwcGVuZENoaWxkKHRvcCk7CgogIHZhciBsaW5rcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgbGlua3MuY2xhc3NOYW1lPSdjb3QtbW5hdi1saW5rcyc7CiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChuYXYucXVlcnlTZWxlY3RvckFsbCgnYScpLCBmdW5jdGlvbihhKXsgbGlua3MuYXBwZW5kQ2hpbGQoYS5jbG9uZU5vZGUodHJ1ZSkpOyB9KTsKICBwYW5lbC5hcHBlbmRDaGlsZChsaW5rcyk7CgogIHZhciBmb290PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBmb290LmNsYXNzTmFtZT0nY290LW1uYXYtZm9vdCc7CiAgdmFyIGxhbmc9aGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJy5sYW5nJyk7IGlmKGxhbmcpIGZvb3QuYXBwZW5kQ2hpbGQobGFuZy5jbG9uZU5vZGUodHJ1ZSkpOwogIHZhciB0cmFkZT1oZWFkZXIucXVlcnlTZWxlY3RvcignLmJ0bi10cmFkZScpOyBpZih0cmFkZSkgZm9vdC5hcHBlbmRDaGlsZCh0cmFkZS5jbG9uZU5vZGUodHJ1ZSkpOwogIHBhbmVsLmFwcGVuZENoaWxkKGZvb3QpOwogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICBmdW5jdGlvbiBhcHJpKCl7CiAgICBwYW5lbC5jbGFzc0xpc3QuYWRkKCdpcy1vcGVuJyk7IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnY290LW1lbnUtb3BlbicpOwogICAgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsJ3RydWUnKTsgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsTC5jaGl1ZGkpOwogIH0KICBmdW5jdGlvbiBjaGl1ZGkoKXsKICAgIHBhbmVsLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLW9wZW4nKTsgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdjb3QtbWVudS1vcGVuJyk7CiAgICBidG4uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywnZmFsc2UnKTsgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsTC5hcHJpKTsKICB9CiAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgcGFuZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1vcGVuJyk\/Y2hpdWRpKCk6YXByaSgpOyB9KTsKICB4LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2hpdWRpKTsKICBwYW5lbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpeyBpZihlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJ2EnKSkgY2hpdWRpKCk7IH0pOwogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKXsgaWYoZS5rZXk9PT0nRXNjYXBlJykgY2hpdWRpKCk7IH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbigpeyBpZih3aW5kb3cuaW5uZXJXaWR0aD45NjApIGNoaXVkaSgpOyB9KTsKfSkoKTsK\";var d=atob(b);var u=new Uint8Array(d.length);for(var i=0;i<d.length;i++)u[i]=d.charCodeAt(i);var t=new TextDecoder(\"utf-8\").decode(u);var s=document.createElement(\"script\");s.text=t;document.body.appendChild(s);})();<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Home About us Our brands Sustainability Trade Area Press Area Contacts IT\u00b7EN Trade Login Our brands A strategic portfolio, a distinctive signature. Three brands sharing the same identity, grounded in quality, authenticity, and a contemporary vision of wine. Since 1925 01 the Cottini brands Contemporary elegance Light, refined wines designed for a young, conscious audience. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-332","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/pages\/332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/comments?post=332"}],"version-history":[{"count":10,"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/pages\/332\/revisions"}],"predecessor-version":[{"id":469,"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/pages\/332\/revisions\/469"}],"wp:attachment":[{"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/media?parent=332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}