{"id":330,"date":"2026-05-28T09:45:17","date_gmt":"2026-05-28T09:45:17","guid":{"rendered":"https:\/\/www.cottini1925.cybeartest.it\/about-us\/"},"modified":"2026-08-27T14:23:25","modified_gmt":"2026-08-27T14:23:25","slug":"about-us","status":"publish","type":"page","link":"https:\/\/www.cottini1925.cybeartest.it\/en\/about-us\/","title":{"rendered":"About us"},"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;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\/* ---------------- 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<!-- 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\/\" aria-current=\"page\">About us<\/a>\n    <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/our-brands\/\">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\/about-us\/\" data-it=\"\/chi-siamo\/\">IT<\/a><span class=\"sep\">\u00b7<\/span><a class=\"active\" href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/about-us\/\">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-chisiamo-fix\">\n\/* Fine tuning 27\/08\/2026 *\/\n\/* 1) Foto intro: la card e di fatto quadrata (max-height:520px vince sull aspect-ratio 4\/5),\n      quindi la foto 4:5 viene ritagliata sopra e sotto. Sposto il punto di ancoraggio\n      verso il basso per non tagliare le gambe dei soggetti.\n      NB: qui NON si tocca altro. La foto dell'intro e approvata cosi. *\/\n.hero-about-photo .hero-photo-card img{object-position:50% 85%}\n\/* 2) Oblo: sostituita con un ritaglio quadrato centrato sul soggetto (prima era una\n      foto orizzontale ritagliata al centro, con meta cerchio di fondo scuro a destra). *\/\n\/* 3) Oblo - falla del reset: img{max-width:100%} bloccava la larghezza a 260px mentre il\n      design ne chiede 108% (280,8px). Con left:-4% l'immagine restava spostata a sinistra\n      e lasciava scoperti ~10px sul lato destro del cerchio (la falce chiara segnalata). *\/\n\/* 4) Il parallasse trasla l'immagine fino a +-28px, ma il bleed del design ne offriva\n      solo 10,4: a meta scroll restava scoperta una falce in alto o in basso nel cerchio.\n      Portato il bleed a 126% (33,8px per lato); la foto e stata ritagliata piu larga\n      di conseguenza, cosi l'inquadratura resta la stessa. *\/\n.brothers-portrait img{max-width:none;max-height:none;inset:-13%;width:126%;height:126%}\n\/* 5) Sotto i 960px il cerchio rimpicciolisce ma il parallasse trasla sempre degli stessi\n      ~28px: nessun bleed ragionevole basterebbe. Su mobile l'effetto e impercettibile,\n      quindi lo disattivo solo qui, solo sull'oblo. *\/\n@media (max-width:960px){\n  .brothers-portrait img{transform:none !important}\n}\n<\/style>\n<style id=\"cot-icone-fix\">\n\/* Icone definitive fornite dal cliente (27\/08\/2026).\n   I file sono dischi oro pieni con tratto bianco: l icona SOSTITUISCE anello e cerchio\n   decorativo invece di starci dentro, altrimenti si otterrebbe un doppio cerchio.\n   Il fill usa var(--gold) del design system al posto del #bf873c del file: differenza\n   impercettibile, ma tiene la palette allineata al resto del sito. *\/\n.ci-disc{fill:var(--gold)}\n.ci-line{fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round;stroke-width:.6px}\n\/* Chi siamo - medaglioni: via anello e cerchio interno, il disco riempie i 92px.\n   L anello tratteggiato rotante (.perche-halo) resta e incornicia il disco. *\/\n.perche-medallion::before,.perche-medallion::after{display:none}\n.perche-icon{width:92px;height:92px}\n<\/style>\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 (Chi siamo) ============ -->\n<section class=\"hero-about\" aria-label=\"Opening\">\n  <div class=\"hero-about-inner\">\n    <div class=\"hero-about-text\">\n      <span class=\"hero-about-eyebrow\">Cottini \u00b7 since 1925<\/span>\n      <h1 class=\"hero-about-h1\" data-split>About us<\/h1>\n      <p class=\"hero-about-lede anim-fade\" data-delay=\"500\">A family vision with a long-term view.<\/p>\n      <p class=\"hero-about-body anim-fade\" data-delay=\"700\">For four generations, we have cultivated vineyards and a passion for wine, combining tradition and innovation to create authentic, lasting value.<\/p>\n    <\/div>\n    <div class=\"hero-about-photo anim-zoom\" data-delay=\"200\">\n      <!-- soft gold square offset behind photo -->\n      <div class=\"hero-deco-square\" aria-hidden=\"true\"><\/div>\n      <!-- large brand mark upper-right -->\n      <div class=\"hero-deco-ring-2\" aria-hidden=\"true\">\n        <span class=\"brand-logo\"><\/span>\n      <\/div>\n      <!-- smaller brand mark lower-left -->\n      <div class=\"hero-deco-ring\" aria-hidden=\"true\">\n        <span class=\"brand-logo\"><\/span>\n      <\/div>\n      <!-- floating sparkles -->\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      <!-- photo, clean rect -->\n      <div class=\"hero-photo-card\">\n        <img decoding=\"async\" src=\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/08\/intro-chi-siamo-2026.jpg\" alt=\"The Cottini family in the oak cask cellar\" data-parallax=\"portrait\">\n      <\/div>\n      <!-- year stamp -->\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<!-- ============ TRE COLONNE: Vision \/ Mission \/ Storia ============ -->\n<section class=\"pillars\" id=\"pillars\" aria-labelledby=\"pillars-title\">\n  <h2 id=\"pillars-title\" class=\"visually-hidden\">Our values<\/h2>\n  <div class=\"pillars-grid\">\n\n    <article class=\"pillar reveal\" data-delay=\"60\">\n      <span class=\"pillar-kicker\">Vision<\/span>\n      <h3 class=\"pillar-h\">Our vision<br>for the future<\/h3>\n      <div class=\"pillar-body\">\n        <p><span class=\"drop\">We envision<\/span> a world where Italian wine stands as a symbol of elegance, authenticity, and innovation.<\/p>\n      <\/div>\n      <!-- decorative composition filling the empty space -->\n      <div class=\"pillar-deco\" aria-hidden=\"true\">\n        <span class=\"pillar-deco-mark\"><\/span>\n        <span class=\"pillar-deco-rule\"><\/span>\n        <span class=\"pillar-deco-line\"><\/span>\n        <span class=\"pillar-deco-quote\">\n          <em>Elegance.<br>Authenticity.<br>Innovation.<\/em>\n        <\/span>\n        <span class=\"pillar-deco-orbit pillar-deco-orbit--1\"><\/span>\n        <span class=\"pillar-deco-orbit pillar-deco-orbit--2\"><\/span>\n      <\/div>\n    <\/article>\n\n    <span class=\"pillar-div\" aria-hidden=\"true\">\n      <span class=\"pillar-div-line\"><\/span>\n      <span class=\"brand-logo brand-logo--mark brand-logo--xs brand-logo--gold pillar-div-mark\"><\/span>\n      <span class=\"pillar-div-line\"><\/span>\n    <\/span>\n\n    <article class=\"pillar reveal\" data-delay=\"180\">\n      <span class=\"pillar-kicker\">Mission<\/span>\n      <h3 class=\"pillar-h\">Our daily<br>commitment<\/h3>\n      <div class=\"pillar-body\">\n        <p><span class=\"drop\">We craft<\/span> high-quality wines every day that truly express our territories.<\/p>\n        <p><span class=\"drop\">We enhance<\/span> historic appellations and renowned terroirs with a distinctive, consistent style.<\/p>\n        <p><span class=\"drop\">We promote<\/span> a wine culture rooted in authenticity, innovation, and respect for nature.<\/p>\n        <p><span class=\"drop\">We build<\/span> long-term partnerships with clients, based on trust, transparency, and shared values.<\/p>\n      <\/div>\n    <\/article>\n\n    <span class=\"pillar-div\" aria-hidden=\"true\">\n      <span class=\"pillar-div-line\"><\/span>\n      <span class=\"brand-logo brand-logo--mark brand-logo--xs brand-logo--gold pillar-div-mark\"><\/span>\n      <span class=\"pillar-div-line\"><\/span>\n    <\/span>\n\n    <article class=\"pillar reveal\" data-delay=\"300\">\n      <span class=\"pillar-kicker\">Family story<\/span>\n      <h3 class=\"pillar-h\">Our family<br>story<\/h3>\n      <div class=\"pillar-body\">\n        <p>It all began in <em>1925<\/em>, in Fumane, in the heart of Valpolicella, with Carlo Cottini and his first farm.<\/p>\n        <p>In the <em>&#8217;50<\/em>, his son Raffaello built the first winery, dedicating himself entirely to winemaking.<\/p>\n        <p>In the <em>&#8217;80<\/em> the company expanded into the Eastern Garda area, and under Diego Cottini began looking beyond Italy toward international markets.<\/p>\n        <p>Today, as then, we carry forward the same mission with passion and responsibility\u2014from vineyard to bottle\u2014promoting a culture of authentic, sustainable wine.<\/p>\n      <\/div>\n    <\/article>\n  <\/div>\n<\/section>\n\n<!-- ============ BROTHERS PORTRAIT (overlapping curve) ============ -->\n<div class=\"brothers-wrap\" aria-hidden=\"false\">\n  <div class=\"brothers-curve\" aria-hidden=\"true\"><\/div>\n  <figure class=\"brothers-portrait anim-zoom\" data-delay=\"120\">\n    <img decoding=\"async\" src=\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/08\/chi-siamo-oblo-degustazione.jpg\"\n         alt=\"Diego Cottini tasting among the casks\"\n         data-parallax=\"brothers\">\n  <\/figure>\n<\/div>\n\n<!-- ============ TERRITORI ============ -->\n<section class=\"territori\" aria-labelledby=\"territori-title\">\n  <div class=\"territori-inner\">\n    <div class=\"territori-text\">\n      <span class=\"pillar-kicker reveal\">Renowned terroirs<\/span>\n      <h2 id=\"territori-title\" class=\"reveal\" data-delay=\"120\">Renowned terroirs,<br>certified quality.<\/h2>\n      <p class=\"reveal\" data-delay=\"220\">We produce across the most important wine districts of Verona:<\/p>\n      <p class=\"reveal\" data-delay=\"320\"><em>Valpolicella<\/em>, <em>Bardolino<\/em>, <em>Lugana<\/em> and <em>Garda<\/em>.<\/p>\n      <p class=\"reveal\" data-delay=\"420\">A unique heritage that ensures typicity, consistency, and certified quality.<\/p>\n      <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/our-brands\/\" class=\"link-cta reveal\" data-delay=\"540\">Discover more <svg width=\"22\" height=\"11\" aria-hidden=\"true\"><use href=\"#arrow\"\/><\/svg><\/a>\n    <\/div>\n\n    <div class=\"territori-map reveal\" data-delay=\"320\">\n      <img decoding=\"async\" src=\"https:\/\/www.cottini1925.cybeartest.it\/wp-content\/uploads\/2026\/05\/mappa-cottini.svg\" alt=\"Cottini map \u2014 Lake Garda, Valpolicella, Soave\" class=\"territori-map-img\">\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============ PERCH\u00c9 SCEGLIERCI ============ -->\n<section class=\"perche\" aria-labelledby=\"perche-title\">\n  <div class=\"perche-inner\">\n    <header class=\"perche-head\">\n      <span class=\"rule-h reveal\"><\/span>\n      <h2 id=\"perche-title\" class=\"reveal\" data-delay=\"120\">Why choose our wines.<\/h2>\n    <\/header>\n\n    <div class=\"perche-grid\">\n      <article class=\"perche-card reveal\" data-delay=\"0\">\n        <span class=\"perche-num\">01<\/span>\n        <div class=\"perche-medallion\">\n          <div class=\"perche-halo\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"49\"\/><\/svg>\n          <\/div>\n          <div class=\"perche-icon icon-shield\">\n            <svg viewBox=\"0 0 70.87 70.87\" aria-hidden=\"true\"><g> <path class=\"ci-disc\" d=\"M70.87,35.43c0,19.57-15.86,35.43-35.43,35.43S0,55,0,35.43,15.86,0,35.43,0s35.43,15.86,35.43,35.43\"\/> <path class=\"ci-line\" d=\"M41.22,53.06v7.23l-5.79-2.53-5.79,2.53v-7.23M46.54,33.88c0,6.13-4.97,11.11-11.11,11.11s-11.11-4.97-11.11-11.11,4.97-11.11,11.11-11.11,11.11,4.97,11.11,11.11ZM37.91,15.41h0c2.26-1.74,5.56-.66,6.38,2.07.52,1.76,2.17,2.96,4,2.91,2.85-.07,4.89,2.74,3.94,5.42-.61,1.74.01,3.67,1.53,4.71,2.35,1.62,2.35,5.09,0,6.7-1.52,1.04-2.14,2.97-1.53,4.71.95,2.69-1.09,5.5-3.94,5.42-1.84-.05-3.48,1.15-4,2.91-.81,2.73-4.11,3.81-6.38,2.07-1.46-1.12-3.49-1.12-4.95,0-2.26,1.73-5.56.66-6.38-2.07-.52-1.76-2.17-2.96-4-2.91-2.85.07-4.89-2.73-3.94-5.42.61-1.74-.01-3.66-1.53-4.71-2.35-1.62-2.35-5.09,0-6.7,1.52-1.04,2.14-2.97,1.53-4.71-.95-2.69,1.09-5.5,3.94-5.42,1.84.05,3.48-1.15,4-2.91.81-2.73,4.11-3.81,6.38-2.07,1.46,1.12,3.49,1.12,4.95,0Z\"\/> <\/g><\/svg>\n          <\/div>\n        <\/div>\n        <h3>Certified reliability<\/h3>\n        <ul class=\"perche-list\">\n          <li>Standard <em>IFS Food<\/em><\/li>\n          <li>Full traceability from vineyard to bottle<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"perche-card reveal\" data-delay=\"160\">\n        <span class=\"perche-num\">02<\/span>\n        <div class=\"perche-medallion\">\n          <div class=\"perche-halo\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"49\"\/><\/svg>\n          <\/div>\n          <div class=\"perche-icon icon-truck\">\n            <svg viewBox=\"0 0 70.87 70.87\" aria-hidden=\"true\"><g> <path class=\"ci-disc\" d=\"M70.87,35.43c0,19.57-15.86,35.43-35.43,35.43S0,55,0,35.43,15.86,0,35.43,0s35.43,15.86,35.43,35.43\"\/> <path class=\"ci-line\" d=\"M43.9,45.73h-2.82l3.92-18.53h7.06l2.51,7.42,3.87,2.89-1.74,8.22h-3.7M19.18,39.03l-1.42,6.7h4.95M31.93,45.73h9.14l5.11-24.16h-18.92M12.44,30.34h5.35M20.63,30.34h11.74M16.43,34.72h11.09M30.23,34.72h4.3M31.81,44.75c0,2.51-2.04,4.55-4.55,4.55s-4.55-2.04-4.55-4.55,2.04-4.55,4.55-4.55,4.55,2.04,4.55,4.55ZM52.99,44.75c0,2.51-2.04,4.55-4.55,4.55s-4.55-2.04-4.55-4.55,2.04-4.55,4.55-4.55,4.55,2.04,4.55,4.55ZM47.88,30.04l-.99,4.68h3.63M14.88,25.95h14.54M18.13,21.57h6.4\"\/> <\/g><\/svg>\n          <\/div>\n        <\/div>\n        <h3>Consistent supply<\/h3>\n        <ul class=\"perche-list\">\n          <li>Strong production capacity<\/li>\n          <li>Fast, flexible logistics<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"perche-card reveal\" data-delay=\"320\">\n        <span class=\"perche-num\">03<\/span>\n        <div class=\"perche-medallion\">\n          <div class=\"perche-halo\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"49\"\/><\/svg>\n          <\/div>\n          <div class=\"perche-icon icon-house\">\n            <svg viewBox=\"0 0 70.87 70.87\" aria-hidden=\"true\"><g> <path class=\"ci-disc\" d=\"M70.87,35.43c0,19.57-15.86,35.43-35.43,35.43S0,55,0,35.43,15.86,0,35.43,0s35.43,15.86,35.43,35.43\"\/> <path class=\"ci-line\" d=\"M46.98,56.58h-8.79v-29.4h8.79v29.4ZM38.18,56.58h-8.79v-21.35h8.79v21.35ZM29.39,56.58h-8.79v-14.58h8.79v14.58ZM20.59,35.79l7.25-6.55,7.05-2.5,12.18-13.28M47.37,16.92l.11-3.94-4.16.46\"\/> <\/g><\/svg>\n          <\/div>\n        <\/div>\n        <h3>Commercial value<\/h3>\n        <ul class=\"perche-list\">\n          <li>Typical wines and appellations <em>DOC<\/em><\/li>\n          <li>Marketing and sales support<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n\n    <div class=\"perche-cta reveal\" data-delay=\"200\">\n      <a href=\"https:\/\/www.cottini1925.cybeartest.it\/en\/our-brands\/\" class=\"btn-pill\">Discover our products <svg width=\"22\" height=\"11\" aria-hidden=\"true\"><use href=\"#arrow\"\/><\/svg><\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<\/main>\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\/en\/?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+ewogICAgICBbLi4ucmV2ZWFsRWxzLCAuLi5jYXJkRWxzXS5mb3JFYWNoKGVsPT57CiAgICAgICAgY29uc3Qgb3AgPSBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZWwpLm9wYWNpdHkpOwogICAgICAgIGlmKG9wIDwgMC45OSl7CiAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnOwogICAgICAgICAgZWwuc3R5bGUub3BhY2l0eSA9ICcxJzsKICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICdub25lJzsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwgNDAwMCk7CiAgfSk7CgogIC8qIDUpIENvdW50ZXIgYW5pbWF0aW9uIOKAlCBJTyArIHNjcm9sbCBmYWxsYmFjayAqLwogIGNvbnN0IGZtdCA9ICh2YWwsIHR5cGUpPT57CiAgICBpZih0eXBlPT09J20nKSByZXR1cm4gdmFsLnRvRml4ZWQoMSkucmVwbGFjZSgnLicsJywnKSsnTSc7CiAgICBpZih0eXBlPT09J3BsdXMnKSByZXR1cm4gTWF0aC5yb3VuZCh2YWwpKycrJzsKICAgIHJldHVybiBTdHJpbmcoTWF0aC5yb3VuZCh2YWwpKTsKICB9OwogIGNvbnN0IGNvdW50ZXJFbHMgPSBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtY291bnRlcl0nKV07CiAgY29uc3QgcnVuQ291bnRlciA9IChlbCk9PnsKICAgIGlmKGVsLmRhdGFzZXQuY291bnRlZCkgcmV0dXJuOwogICAgZWwuZGF0YXNldC5jb3VudGVkID0gJzEnOwogICAgY29uc3QgdGFyZ2V0ID0gcGFyc2VGbG9hdChlbC5kYXRhc2V0LnRhcmdldCk7CiAgICBjb25zdCBmcm9tID0gcGFyc2VGbG9hdChlbC5kYXRhc2V0LmZyb218fCcwJyk7CiAgICBjb25zdCBzdGVwID0gcGFyc2VGbG9hdChlbC5kYXRhc2V0LnN0ZXB8fCcxJyk7CiAgICBjb25zdCBpbnRlcnZhbCA9IHBhcnNlSW50KGVsLmRhdGFzZXQuaW50ZXJ2YWx8fCczMCcsMTApOwogICAgY29uc3QgdHlwZSA9IGVsLmRhdGFzZXQuZm9ybWF0fHwnaW50JzsKICAgIGlmKHJlZHVjZWQpeyBlbC50ZXh0Q29udGVudCA9IGZtdCh0YXJnZXQsdHlwZSk7IHJldHVybjsgfQogICAgbGV0IHYgPSBmcm9tOyBlbC50ZXh0Q29udGVudCA9IGZtdCh2LHR5cGUpOwogICAgY29uc3QgdCA9IHNldEludGVydmFsKCgpPT57CiAgICAgIHYgKz0gc3RlcDsKICAgICAgaWYoKHN0ZXA+MCAmJiB2Pj10YXJnZXQpIHx8IChzdGVwPDAgJiYgdjw9dGFyZ2V0KSl7CiAgICAgICAgdiA9IHRhcmdldDsgZWwudGV4dENvbnRlbnQgPSBmbXQodix0eXBlKTsgY2xlYXJJbnRlcnZhbCh0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBlbC50ZXh0Q29udGVudCA9IGZtdCh2LHR5cGUpOwogICAgICB9CiAgICB9LCBpbnRlcnZhbCk7CiAgfTsKICBjb25zdCBjb3VudGVyVmlzaWJsZSA9IChlbCk9PnsKICAgIGNvbnN0IHIgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIGNvbnN0IHZoID0gd2luZG93LmlubmVySGVpZ2h0OwogICAgaWYoci5ib3R0b20gPCAwIHx8IHIudG9wID4gdmgpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiByLnRvcCA8IHZoICogMC42NTsKICB9OwogIGNvbnN0IGNoZWNrQ291bnRlcnMgPSAoKT0+eyBjb3VudGVyRWxzLmZvckVhY2goZWw9PnsgaWYoY291bnRlclZpc2libGUoZWwpKSBydW5Db3VudGVyKGVsKTsgfSk7IH07CiAgdHJ5ewogICAgY29uc3QgY291bnRJTyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcyk9PnsKICAgICAgZW50cmllcy5mb3JFYWNoKGU9PnsgaWYoZS5pc0ludGVyc2VjdGluZykgcnVuQ291bnRlcihlLnRhcmdldCk7IH0pOwogICAgfSx7dGhyZXNob2xkOjAuMzV9KTsKICAgIGNvdW50ZXJFbHMuZm9yRWFjaChlbD0+Y291bnRJTy5vYnNlcnZlKGVsKSk7CiAgfWNhdGNoKGUpe30KICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2hlY2tDb3VudGVycywge3Bhc3NpdmU6dHJ1ZX0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgY2hlY2tDb3VudGVycyk7CiAgc2V0VGltZW91dChjaGVja0NvdW50ZXJzLCA0MDApOwoKICAvKiA2KSBQYXJhbGxheCArIHNjcm9sbC1kcml2ZW4gc2VjdGlvbiAiZGVwdGgiICsgaGVybyBmYWRlICsgcHJvZ3Jlc3MgYmFyICovCiAgY29uc3QgcHJvZ0JhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zY3JvbGwtcHJvZycpOwogIGNvbnN0IGhlcm9UZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlcm8tdGV4dCcpOwogIGNvbnN0IGhlcm9TZWMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVybycpOwogIGlmKCFyZWR1Y2VkKXsKICAgIGNvbnN0IHBhcmFsbGF4Tm9kZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1wYXJhbGxheF0nKTsKICAgIC8vIElubmVyIGNvbnRlbnQgYmxvY2tzIHRoYXQgc2hvdWxkIHN1YnRseSBsaWZ0IG9uIHZpZXdwb3J0IGNlbnRlciBwYXNzCiAgICBjb25zdCBsaWZ0RWxzID0gWwogICAgICAuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudmFsb3JpLWlubmVyLCAubnVtZXJpLWlubmVyJykKICAgIF07CiAgICBsaWZ0RWxzLmZvckVhY2goZWwgPT4geyBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7IH0pOwogICAgbGV0IHRpY2tpbmcgPSBmYWxzZTsKICAgIGxldCBsYXN0U2Nyb2xsID0gd2luZG93LnNjcm9sbFk7CiAgICBsZXQgdmVsb2NpdHkgPSAwOwogICAgY29uc3QgbWFwID0gKHZhbCwgaW5NaW4sIGluTWF4LCBvdXRNaW4sIG91dE1heCkgPT4KICAgICAgb3V0TWluICsgKCh2YWwgLSBpbk1pbikgKiAob3V0TWF4IC0gb3V0TWluKSkgLyAoaW5NYXggLSBpbk1pbik7CiAgICBjb25zdCB1cGRhdGUgPSAoKT0+ewogICAgICBjb25zdCB2aCA9IHdpbmRvdy5pbm5lckhlaWdodDsKICAgICAgY29uc3Qgc3kgPSB3aW5kb3cuc2Nyb2xsWTsKICAgICAgdmVsb2NpdHkgPSB2ZWxvY2l0eSAqIDAuODUgKyAoc3kgLSBsYXN0U2Nyb2xsKSAqIDAuMTU7CiAgICAgIGxhc3RTY3JvbGwgPSBzeTsKICAgICAgY29uc3QgdmVsQm9vc3QgPSBNYXRoLm1pbigxLCBNYXRoLmFicyh2ZWxvY2l0eSkgLyA2MCk7CgogICAgICAvLyBQcm9ncmVzcyBiYXIKICAgICAgY29uc3QgZG9jSCA9IE1hdGgubWF4KDEsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgLSB2aCk7CiAgICAgIGNvbnN0IHAgPSBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCBzeSAvIGRvY0gpKTsKICAgICAgaWYocHJvZ0JhcikgcHJvZ0Jhci5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wJywgKHAqMTAwKS50b0ZpeGVkKDIpKyclJyk7CgogICAgICAvLyBIZXJvIHRleHQgZmFkZSArIGxpZnQgYXMgeW91IHNjcm9sbCBpbnRvIFZhbG9yaQogICAgICBpZihoZXJvVGV4dCAmJiBoZXJvU2VjKXsKICAgICAgICBjb25zdCBoZXJvSCA9IGhlcm9TZWMub2Zmc2V0SGVpZ2h0OwogICAgICAgIGNvbnN0IHQgPSBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCBzeSAvIChoZXJvSCAqIDAuNykpKTsKICAgICAgICBjb25zdCBlYXNlZCA9IHQgKiB0OwogICAgICAgIGhlcm9UZXh0LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwLCAkey1zeSowLjMyfXB4LCAwKSBzY2FsZSgkezEgLSBlYXNlZCowLjA2fSlgOwogICAgICAgIGhlcm9UZXh0LnN0eWxlLm9wYWNpdHkgPSAoMSAtIGVhc2VkICogMS4xNSkudG9GaXhlZCgzKTsKICAgICAgfQoKICAgICAgcGFyYWxsYXhOb2Rlcy5mb3JFYWNoKG5vZGU9PnsKICAgICAgICBjb25zdCBraW5kID0gbm9kZS5kYXRhc2V0LnBhcmFsbGF4OwogICAgICAgIGlmKGtpbmQ9PT0naGVybycpewogICAgICAgICAgY29uc3QgeSA9IHN5ICogMC4yODsKICAgICAgICAgIG5vZGUuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDAsICR7eX1weCwgMCkgc2NhbGUoJHsxLjA4ICsgTWF0aC5taW4oLjA2LCBzeS84MDAwKX0pYDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3QgcmVjdCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICBpZihyZWN0LmJvdHRvbSA8IC0yMDAgfHwgcmVjdC50b3AgPiB2aCsyMDApIHJldHVybjsKICAgICAgICAgIGNvbnN0IHBwID0gMSAtIChyZWN0LnRvcCAvIHZoKTsKICAgICAgICAgIGNvbnN0IHJhbmdlID0ga2luZD09PSdudW1lcmknID8gWy01MCw0NV0gOiBbLTMwLDI4XTsKICAgICAgICAgIGNvbnN0IHkgPSBtYXAoTWF0aC5tYXgoMCxNYXRoLm1pbigxLjUscHApKSwgMCwgMS41LCByYW5nZVswXSwgcmFuZ2VbMV0pOwogICAgICAgICAgbm9kZS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoMCwgJHt5fXB4LCAwKWA7CiAgICAgICAgfQogICAgICB9KTsKCiAgICAgIC8vIFNlY3Rpb24gZGVwdGggbGlmdCDigJQgaW5uZXIgY29udGVudCByaXNlcyBhcyBpdCBwYXNzZXMgdmlld3BvcnQgY2VudGVyCiAgICAgIGxpZnRFbHMuZm9yRWFjaChlbD0+ewogICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICBpZihyZWN0LmJvdHRvbSA8IC0yMDAgfHwgcmVjdC50b3AgPiB2aCsyMDApIHJldHVybjsKICAgICAgICBjb25zdCBjZW50ZXIgPSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0LzI7CiAgICAgICAgY29uc3QgZGlzdCA9IChjZW50ZXIgLSB2aC8yKSAvIHZoOwogICAgICAgIGNvbnN0IGNsYW1wZWQgPSBNYXRoLm1heCgtMSwgTWF0aC5taW4oMSwgZGlzdCkpOwogICAgICAgIGNvbnN0IGxpZnQgPSBjbGFtcGVkICogLTI4ICogKDEgKyB2ZWxCb29zdCowLjYpOwogICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwLCAke2xpZnR9cHgsIDApYDsKICAgICAgfSk7CgogICAgICAvLyBDYXJkIGhvcml6b250YWwtc3RhZ2dlciBlbnRyeSAoYWx0ZXJuYXRpbmcgbGVmdC9yaWdodCkKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtY2FyZF0nKS5mb3JFYWNoKChjYXJkLCBpKT0+ewogICAgICAgIGNvbnN0IHJlY3QgPSBjYXJkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIGNvbnN0IGVudGVyID0gMSAtIE1hdGgubWF4KDAsIE1hdGgubWluKDEsIChyZWN0LnRvcCAtIHZoKjAuMikgLyAodmgqMC42NSkpKTsKICAgICAgICBpZihjYXJkLmRhdGFzZXQucmV2ZWFsZWQgIT09ICcxJyAmJiBlbnRlciA+IDAuMDUpewogICAgICAgICAgLy8gaW5pdGlhbCBkcmFtYXRpYyBvZmZzZXQgKG9ubHkgYmVmb3JlIHJldmVhbCkKICAgICAgICAgIGNvbnN0IGRpciA9IChpICUgMiA9PT0gMCkgPyAtMSA6IDE7CiAgICAgICAgICBjb25zdCBrID0gMSAtIGVudGVyOwogICAgICAgICAgY2FyZC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHtkaXIgKiBrICogMzZ9cHgsICR7ayo0MH1weCwgMClgOwogICAgICAgICAgY2FyZC5zdHlsZS5vcGFjaXR5ID0gZW50ZXIudG9GaXhlZCgzKTsKICAgICAgICB9CiAgICAgIH0pOwoKICAgICAgdGlja2luZyA9IGZhbHNlOwogICAgfTsKICAgIGNvbnN0IHJlcXVlc3RVcGRhdGUgPSAoKT0+eyBpZighdGlja2luZyl7IHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGUpOyB0aWNraW5nID0gdHJ1ZTsgfSB9OwogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHJlcXVlc3RVcGRhdGUsIHtwYXNzaXZlOnRydWV9KTsKICAgIHVwZGF0ZSgpOwoKICAgIC8qIDZiKSBMRU5JUy1MSUtFIElORVJUSUFMIFNNT09USCBTQ1JPTEwKICAgICAgIExpc3RlbiB0byB3aGVlbCArIHRvdWNoLCBhZHZhbmNlIHRoZSBhY3R1YWwgd2luZG93LnNjcm9sbFkgdG93YXJkIGEgdGFyZ2V0IHdpdGggZWFzaW5nLiAqLwogICAgbGV0IHRhcmdldCA9IHdpbmRvdy5zY3JvbGxZOwogICAgbGV0IGN1cnJlbnQgPSB3aW5kb3cuc2Nyb2xsWTsKICAgIGxldCByYWZJZCA9IG51bGw7CiAgICBjb25zdCBlYXNlID0gMC4wODU7CiAgICBjb25zdCBtaW5EZWx0YSA9IDAuNTsKICAgIGNvbnN0IGlzRm9ybUZpZWxkID0gKGVsKT0+ewogICAgICBpZighZWwpIHJldHVybiBmYWxzZTsKICAgICAgY29uc3QgdCA9IGVsLnRhZ05hbWU7CiAgICAgIHJldHVybiB0PT09J0lOUFVUJyB8fCB0PT09J1RFWFRBUkVBJyB8fCB0PT09J1NFTEVDVCcgfHwgZWwuaXNDb250ZW50RWRpdGFibGU7CiAgICB9OwogICAgY29uc3QgbG9vcCA9ICgpPT57CiAgICAgIGNvbnN0IGQgPSB0YXJnZXQgLSBjdXJyZW50OwogICAgICBpZihNYXRoLmFicyhkKSA8IG1pbkRlbHRhKXsKICAgICAgICBjdXJyZW50ID0gdGFyZ2V0OwogICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBjdXJyZW50KTsKICAgICAgICByYWZJZCA9IG51bGw7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGN1cnJlbnQgKz0gZCAqIGVhc2U7CiAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBjdXJyZW50KTsKICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCk7CiAgICB9OwogICAgY29uc3Qga2ljayA9ICgpPT57IGlmKHJhZklkID09PSBudWxsKSByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShsb29wKTsgfTsKICAgIGNvbnN0IG1heFNjcm9sbCA9ICgpPT4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCAtIHdpbmRvdy5pbm5lckhlaWdodDsKICAgIGxldCB1c2VySW50ZXJydXB0aW5nID0gZmFsc2U7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCAoZSk9PnsKICAgICAgaWYoaXNGb3JtRmllbGQoZS50YXJnZXQpKSByZXR1cm47CiAgICAgIC8vIGhvbm9yIG1vZGlmaWVycyAoem9vbSwgaG9yaXpvbnRhbCkKICAgICAgaWYoZS5jdHJsS2V5IHx8IGUubWV0YUtleSkgcmV0dXJuOwogICAgICAvLyBwcmV2ZW50IHRoZSBuYXRpdmUgaW5zdGFudCBqdW1wCiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgLy8gc3luYyBjdXJyZW50IGlmIHVzZXIganVzdCBzY3JvbGxlZCB3aXRoIGFycm93IGtleXMgLyBzY3JvbGxiYXIKICAgICAgaWYoTWF0aC5hYnMod2luZG93LnNjcm9sbFkgLSBjdXJyZW50KSA+IDQpeyBjdXJyZW50ID0gd2luZG93LnNjcm9sbFk7IHRhcmdldCA9IGN1cnJlbnQ7IH0KICAgICAgLy8gYWNjZWxlcmF0ZSBwZXIgZGVsdGE7IGxpbmUtbW9kZSBkZWx0YXMgKGUuZGVsdGFNb2RlPT09MSkgbmVlZCBzY2FsaW5nCiAgICAgIGNvbnN0IHNjYWxlID0gZS5kZWx0YU1vZGUgPT09IDEgPyAxOCA6IChlLmRlbHRhTW9kZSA9PT0gMiA\/IHdpbmRvdy5pbm5lckhlaWdodCA6IDEpOwogICAgICB0YXJnZXQgKz0gZS5kZWx0YVkgKiBzY2FsZSAqIDAuOTsKICAgICAgdGFyZ2V0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obWF4U2Nyb2xsKCksIHRhcmdldCkpOwogICAgICBraWNrKCk7CiAgICB9LCB7cGFzc2l2ZTpmYWxzZX0pOwogICAgLy8gVG91Y2gg4oCUIGtlZXAgbmF0aXZlIG1vbWVudHVtIChtb2JpbGUpCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsICgpPT57IHVzZXJJbnRlcnJ1cHRpbmcgPSB0cnVlOyB0YXJnZXQgPSB3aW5kb3cuc2Nyb2xsWTsgY3VycmVudCA9IHdpbmRvdy5zY3JvbGxZOyB9LCB7cGFzc2l2ZTp0cnVlfSk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCAgICgpPT57IHVzZXJJbnRlcnJ1cHRpbmcgPSBmYWxzZTsgfSk7CiAgICAvLyBLZXlib2FyZCAoc3BhY2UsIHBhZ2UgdXAvZG93biwgYXJyb3dzLCBob21lL2VuZCkKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpPT57CiAgICAgIGlmKGlzRm9ybUZpZWxkKGUudGFyZ2V0KSkgcmV0dXJuOwogICAgICBjb25zdCB2aCA9IHdpbmRvdy5pbm5lckhlaWdodDsKICAgICAgbGV0IGRlbHRhID0gMDsKICAgICAgc3dpdGNoKGUua2V5KXsKICAgICAgICBjYXNlICdBcnJvd0Rvd24nOiBkZWx0YSA9IDgwOyBicmVhazsKICAgICAgICBjYXNlICdBcnJvd1VwJzogICBkZWx0YSA9IC04MDsgYnJlYWs7CiAgICAgICAgY2FzZSAnUGFnZURvd24nOiAgZGVsdGEgPSB2aCAqIDAuODU7IGJyZWFrOwogICAgICAgIGNhc2UgJ1BhZ2VVcCc6ICAgIGRlbHRhID0gLXZoICogMC44NTsgYnJlYWs7CiAgICAgICAgY2FzZSAnICc6ICAgICAgICAgZGVsdGEgPSBlLnNoaWZ0S2V5ID8gLXZoKjAuODUgOiB2aCowLjg1OyBicmVhazsKICAgICAgICBjYXNlICdIb21lJzogICAgICB0YXJnZXQgPSAwOyBjdXJyZW50ID0gd2luZG93LnNjcm9sbFk7IGtpY2soKTsgZS5wcmV2ZW50RGVmYXVsdCgpOyByZXR1cm47CiAgICAgICAgY2FzZSAnRW5kJzogICAgICAgdGFyZ2V0ID0gbWF4U2Nyb2xsKCk7IGN1cnJlbnQgPSB3aW5kb3cuc2Nyb2xsWTsga2ljaygpOyBlLnByZXZlbnREZWZhdWx0KCk7IHJldHVybjsKICAgICAgICBkZWZhdWx0OiByZXR1cm47CiAgICAgIH0KICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICBpZihNYXRoLmFicyh3aW5kb3cuc2Nyb2xsWSAtIGN1cnJlbnQpID4gNCl7IGN1cnJlbnQgPSB3aW5kb3cuc2Nyb2xsWTsgdGFyZ2V0ID0gY3VycmVudDsgfQogICAgICB0YXJnZXQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihtYXhTY3JvbGwoKSwgdGFyZ2V0ICsgZGVsdGEpKTsKICAgICAga2ljaygpOwogICAgfSk7CiAgfQoKICAvKiA3KSBDdXN0b20gc21vb3RoLXNjcm9sbCBmb3IgaW4tcGFnZSBhbmNob3JzIChzbG93ZXIsIGdyYWNlZnVsKSAqLwogIGNvbnN0IGVhc2VPdXRRdWludCA9IHQgPT4gMSAtIE1hdGgucG93KDEgLSB0LCA1KTsKICBjb25zdCBzbW9vdGhTY3JvbGxUbyA9ICh0YXJnZXRZLCBkdXJhdGlvbj0xMzAwKT0+ewogICAgY29uc3Qgc3RhcnRZID0gd2luZG93LnNjcm9sbFk7CiAgICBjb25zdCBkaXN0ID0gdGFyZ2V0WSAtIHN0YXJ0WTsKICAgIGlmKE1hdGguYWJzKGRpc3QpIDwgNCkgcmV0dXJuOwogICAgY29uc3QgdDAgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgIGNvbnN0IHN0ZXAgPSAobm93KT0+ewogICAgICBjb25zdCBwID0gTWF0aC5taW4oMSwgKG5vdyAtIHQwKSAvIGR1cmF0aW9uKTsKICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHN0YXJ0WSArIGRpc3QgKiBlYXNlT3V0UXVpbnQocCkpOwogICAgICBpZihwIDwgMSkgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgfTsKICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICB9OwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl49IiMiXScpLmZvckVhY2goYT0+ewogICAgYS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKT0+ewogICAgICBjb25zdCBocmVmID0gYS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTsKICAgICAgaWYoIWhyZWYgfHwgaHJlZiA9PT0gJyMnKSByZXR1cm47CiAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoaHJlZik7CiAgICAgIGlmKCF0YXJnZXQpIHJldHVybjsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICBjb25zdCBoZWFkZXJPZmZzZXQgPSA3MDsKICAgICAgY29uc3QgeSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWSAtIGhlYWRlck9mZnNldDsKICAgICAgaWYocmVkdWNlZCkgd2luZG93LnNjcm9sbFRvKDAsIHkpOwogICAgICBlbHNlIHNtb290aFNjcm9sbFRvKHksIDE0MDApOwogICAgfSk7CiAgfSk7Cn0pKCk7CgovKiBJbCBsaW5rIElUIGRlbCBzZWxldHRvcmUgdmEgcmlzY3JpdHRvIGxhdG8gY2xpZW50OiBXUE1MIHJpc2NyaXZlIGdsaSBocmVmIGludGVybmkKICAgaW4gZmFzZSBkaSBzYWx2YXRhZ2dpbyBlIGxvIHJpbWFwcGVyZWJiZSBzdWxsYSB2ZXJzaW9uZSBpbmdsZXNlLiAqLwooZnVuY3Rpb24oKXt2YXIgbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubGFuZyBhW2RhdGEtaXRdJyk7aWYobCl7bC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBsLmdldEF0dHJpYnV0ZSgnZGF0YS1pdCcpKTt9fSkoKTsKCi8qIC0tLS0gTWVudSBtb2JpbGUgKDI3LzA4LzIwMjYpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIENvc3RydWl0byBpbnRlcmFtZW50ZSBxdWksIGEgcnVudGltZTogaWwgbWFya3VwIGRlbGxlIHBhZ2luZSBub24gY2FtYmlhLAogICBlIGlsIENTUyBsbyBtb3N0cmEgc29sbyBzb3R0byBpIDk2MHB4LiBJbCBkZXNrdG9wIHJlc3RhIGludG9jY2F0by4gICAgICAgKi8KKGZ1bmN0aW9uKCl7CiAgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvdC1idXJnZXInKSkgcmV0dXJuOwogIHZhciBoZWFkZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpdGUtaGVhZGVyJyk7IGlmKCFoZWFkZXIpIHJldHVybjsKICB2YXIgcmlnaHQ9aGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItcmlnaHQnKTsKICB2YXIgbmF2PWhlYWRlci5xdWVyeVNlbGVjdG9yKCcuc2l0ZS1uYXYnKTsKICBpZighcmlnaHR8fCFuYXYpIHJldHVybjsKICB2YXIgRU49KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKXx8JycpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZW4nKT09PTA7CiAgdmFyIEw9e2Fwcmk6RU4\/J09wZW4gbWVudSc6J0FwcmkgaWwgbWVudScsIGNoaXVkaTpFTj8nQ2xvc2UgbWVudSc6J0NoaXVkaSBpbCBtZW51J307CgogIHZhciBidG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgYnRuLnR5cGU9J2J1dHRvbic7IGJ0bi5jbGFzc05hbWU9J2NvdC1idXJnZXInOwogIGJ0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLEwuYXByaSk7CiAgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsJ2ZhbHNlJyk7CiAgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsJ2NvdC1tbmF2Jyk7CiAgYnRuLmlubmVySFRNTD0nPGk+PC9pPic7CiAgcmlnaHQuYXBwZW5kQ2hpbGQoYnRuKTsKCiAgdmFyIHBhbmVsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25hdicpOwogIHBhbmVsLmNsYXNzTmFtZT0nY290LW1uYXYnOyBwYW5lbC5pZD0nY290LW1uYXYnOwogIHBhbmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIG5hdi5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKXx8JycpOwoKICB2YXIgdG9wPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyB0b3AuY2xhc3NOYW1lPSdjb3QtbW5hdi10b3AnOwogIHZhciBkYXJrPWhlYWRlci5xdWVyeVNlbGVjdG9yKCcubG9nby0tZGFyaycpOwogIGlmKGRhcmspIHRvcC5hcHBlbmRDaGlsZChkYXJrLmNsb25lTm9kZSh0cnVlKSk7CiAgdmFyIHg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgeC50eXBlPSdidXR0b24nOyB4LmNsYXNzTmFtZT0nY290LW1uYXYteCc7IHguc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyxMLmNoaXVkaSk7CiAgeC5pbm5lckhUTUw9JzxpPjwvaT4nOwogIHRvcC5hcHBlbmRDaGlsZCh4KTsKICBwYW5lbC5hcHBlbmRDaGlsZCh0b3ApOwoKICB2YXIgbGlua3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGxpbmtzLmNsYXNzTmFtZT0nY290LW1uYXYtbGlua3MnOwogIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobmF2LnF1ZXJ5U2VsZWN0b3JBbGwoJ2EnKSwgZnVuY3Rpb24oYSl7IGxpbmtzLmFwcGVuZENoaWxkKGEuY2xvbmVOb2RlKHRydWUpKTsgfSk7CiAgcGFuZWwuYXBwZW5kQ2hpbGQobGlua3MpOwoKICB2YXIgZm9vdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZm9vdC5jbGFzc05hbWU9J2NvdC1tbmF2LWZvb3QnOwogIHZhciBsYW5nPWhlYWRlci5xdWVyeVNlbGVjdG9yKCcubGFuZycpOyBpZihsYW5nKSBmb290LmFwcGVuZENoaWxkKGxhbmcuY2xvbmVOb2RlKHRydWUpKTsKICB2YXIgdHJhZGU9aGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJy5idG4tdHJhZGUnKTsgaWYodHJhZGUpIGZvb3QuYXBwZW5kQ2hpbGQodHJhZGUuY2xvbmVOb2RlKHRydWUpKTsKICBwYW5lbC5hcHBlbmRDaGlsZChmb290KTsKICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgZnVuY3Rpb24gYXByaSgpewogICAgcGFuZWwuY2xhc3NMaXN0LmFkZCgnaXMtb3BlbicpOyBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2NvdC1tZW51LW9wZW4nKTsKICAgIGJ0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCd0cnVlJyk7IGJ0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLEwuY2hpdWRpKTsKICB9CiAgZnVuY3Rpb24gY2hpdWRpKCl7CiAgICBwYW5lbC5jbGFzc0xpc3QucmVtb3ZlKCdpcy1vcGVuJyk7IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnY290LW1lbnUtb3BlbicpOwogICAgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsJ2ZhbHNlJyk7IGJ0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLEwuYXByaSk7CiAgfQogIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IHBhbmVsLmNsYXNzTGlzdC5jb250YWlucygnaXMtb3BlbicpP2NoaXVkaSgpOmFwcmkoKTsgfSk7CiAgeC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNoaXVkaSk7CiAgcGFuZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKXsgaWYoZS50YXJnZXQuY2xvc2VzdCAmJiBlLnRhcmdldC5jbG9zZXN0KCdhJykpIGNoaXVkaSgpOyB9KTsKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSl7IGlmKGUua2V5PT09J0VzY2FwZScpIGNoaXVkaSgpOyB9KTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24oKXsgaWYod2luZG93LmlubmVyV2lkdGg+OTYwKSBjaGl1ZGkoKTsgfSk7Cn0pKCk7Cg==\";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 Cottini \u00b7 since 1925 About us A family vision with a long-term view. For four generations, we have cultivated vineyards and a passion for wine, combining tradition and innovation to create authentic, lasting value. Since 1925 Our values Vision Our visionfor [&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-330","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/pages\/330","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=330"}],"version-history":[{"count":9,"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/pages\/330\/revisions"}],"predecessor-version":[{"id":448,"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/pages\/330\/revisions\/448"}],"wp:attachment":[{"href":"https:\/\/www.cottini1925.cybeartest.it\/en\/wp-json\/wp\/v2\/media?parent=330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}