{"id":538,"date":"2026-10-01T13:41:59","date_gmt":"2026-10-01T11:41:59","guid":{"rendered":"https:\/\/www.cottinivini.com\/?page_id=538"},"modified":"2026-10-01T15:13:39","modified_gmt":"2026-10-01T13:13:39","slug":"cookie-policy-eu","status":"publish","type":"page","link":"https:\/\/www.cottinivini.com\/en\/cookie-policy-eu\/","title":{"rendered":"Cookie Policy (EU)"},"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.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini.svg\");\n          mask-image:url(\"https:\/\/www.cottinivini.com\/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.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottinivini.com\/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.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottinivini.com\/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.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottinivini.com\/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.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;\n  -webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n  opacity:.22;\n  animation:pillar-deco-spin 36s linear infinite;\n}\n.pillar-deco-rule{\n  display:block;width:1px;height:40px;\n  background:linear-gradient(180deg, var(--gold), transparent);\n  margin:18px 0 16px 48px;\n  opacity:.6;\n}\n.pillar-deco-line{\n  display:block;width:48px;height:1px;background:var(--gold);\n  opacity:.65;margin-bottom:18px;\n}\n.pillar-deco-quote{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:18px;line-height:1.55;color:var(--brand);\n  opacity:.78;letter-spacing:-.005em;\n}\n.pillar-deco-quote em{font-style:italic}\n\/* Two small orbiting dots that float in the empty space *\/\n.pillar-deco-orbit{\n  position:absolute;border-radius:50%;\n  background:var(--gold);\n  box-shadow:0 0 0 4px rgba(191,134,60,.14);\n  pointer-events:none;\n}\n.pillar-deco-orbit--1{\n  top:30px;right:0;width:6px;height:6px;\n  animation:pillar-orbit-1 9s ease-in-out infinite;\n}\n.pillar-deco-orbit--2{\n  bottom:6px;right:28%;width:4px;height:4px;background:var(--gold-light);\n  box-shadow:0 0 0 3px rgba(217,168,98,.16);\n  animation:pillar-orbit-2 12s ease-in-out infinite;\n}\n@keyframes pillar-deco-spin{\n  to{transform:rotate(360deg)}\n}\n@keyframes pillar-orbit-1{\n  0%,100%{transform:translate(0,0);opacity:.7}\n  50%{transform:translate(-14px,10px);opacity:1}\n}\n@keyframes pillar-orbit-2{\n  0%,100%{transform:translate(0,0);opacity:.55}\n  50%{transform:translate(10px,-8px);opacity:.95}\n}\n\n\/* Vertical divider with mark in the middle *\/\n.pillar-div{\n  display:flex;flex-direction:column;align-items:center;justify-content:center;\n  gap:18px;width:1px;align-self:stretch;\n  padding-top:48px;\n}\n.pillar-div-line{\n  flex:1;width:1px;background:linear-gradient(180deg, transparent, rgba(140,119,81,.35) 12%, rgba(140,119,81,.35) 88%, transparent);\n  min-height:60px;\n}\n.pillar-div-mark{flex:none;width:22px;height:22px;opacity:.85}\n\n\/* ---------------- BROTHERS PORTRAIT + DECORATIVE CURVE ---------------- *\/\n.brothers-wrap{\n  position:relative;background:var(--cream);\n  padding:0 56px;\n  height:240px;\n  display:flex;align-items:flex-start;justify-content:center;\n  margin-top:-60px;\n}\n.brothers-curve{\n  position:absolute;left:50%;top:80px;transform:translateX(-50%);\n  width:min(1500px,96vw);height:520px;\n  border-radius:50%;\n  background:transparent;\n  border:1px solid rgba(140,119,81,.18);\n  border-bottom:none;\n  pointer-events:none;\n}\n.brothers-portrait{\n  position:relative;margin:0;\n  width:260px;height:260px;border-radius:50%;\n  overflow:hidden;\n  background:var(--brown-deep);\n  box-shadow:\n    0 30px 60px -22px rgba(46,30,21,.55),\n    0 6px 16px -8px rgba(46,30,21,.4),\n    inset 0 0 0 6px var(--cream),\n    inset 0 0 0 7px rgba(140,119,81,.4);\n  z-index:2;\n  transform-origin:center;\n}\n.brothers-portrait img{\n  position:absolute;inset:-4%;width:108%;height:108%;object-fit:cover;\n  will-change:transform;\n}\n\n\/* ---------------- TERRITORI ---------------- *\/\n.territori{\n  background:var(--cream);\n  padding:60px 56px 140px;\n  position:relative;\n}\n.territori-inner{\n  max-width:1320px;margin:0 auto;\n  display:grid;grid-template-columns:0.85fr 1.15fr;gap:64px;align-items:center;\n}\n.territori-text h2{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(30px,3vw,46px);line-height:1.08;letter-spacing:-.005em;\n  color:var(--brand);margin:14px 0 26px;text-wrap:balance;max-width:14ch;\n}\n.territori-text p{\n  font-family:var(--serif);font-size:16.5px;line-height:1.7;color:var(--ink-2);\n  margin:0 0 20px;max-width:40ch;\n}\n.territori-text p em{font-style:italic;font-weight:500;color:var(--brand)}\n.territori-text .link-cta{\n  margin-top:8px;\n  font-family:var(--sans);font-size:11.5px;letter-spacing:.32em;text-transform:uppercase;\n  color:var(--gold-dark);padding-bottom:6px;\n  display:inline-flex;align-items:center;gap:10px;\n  position:relative;\n  transition:color 1s var(--ease-soft);\n}\n.territori-text .link-cta::after{\n  content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px;\n  background:currentColor;transform-origin:left center;transform:scaleX(1);\n  transition:transform 1.4s var(--ease-graceful);\n}\n.territori-text .link-cta:hover{color:var(--gold)}\n.territori-text .link-cta:hover::after{transform:scaleX(1.18)}\n.territori-text .link-cta svg{transition:transform 1.4s var(--ease-graceful)}\n.territori-text .link-cta:hover svg{transform:translateX(14px)}\n\n.territori-map{\n  position:relative;width:100%;\n}\n.territori-map .territori-map-img,\n.territori-map svg.territori-map-svg{\n  display:block;width:100%;height:auto;\n  filter:drop-shadow(0 14px 40px rgba(46,30,21,.12)) drop-shadow(0 4px 12px rgba(46,30,21,.06));\n}\n\n\/* Map animations \u2014 start when parent .territori-map has .in (revealed via scroll) *\/\n\n\/* Pin pop-in: graceful arrival. Pins are visible by default \u2014 entrance is transform-only\n   so a missed\/late animation start never leaves them invisible. *\/\n.territori-map.in .territori-map-svg .map-pins{\n  transform-origin:50% 100%;\n  animation:\n    map-pin-pop 1.6s cubic-bezier(.22,1,.36,1) .3s backwards,\n    map-pin-float 7.5s ease-in-out 2s infinite;\n}\n@keyframes map-pin-pop{\n  0%{opacity:0;transform:translate(0,-18px) scale(.92)}\n  60%{opacity:1;transform:translate(0,3px) scale(1.02)}\n  100%{opacity:1;transform:translate(0,0) scale(1)}\n}\n\/* Combined gentle bob + sway in one keyframe so they don't fight over transform *\/\n@keyframes map-pin-float{\n  0%,100%{transform:translate(0,0) rotate(0)}\n  25%{transform:translate(0,-3px) rotate(.5deg)}\n  50%{transform:translate(0,-5px) rotate(0)}\n  75%{transform:translate(0,-3px) rotate(-.5deg)}\n}\n\n\/* Pin pulse rings \u2014 radiating outward from each dot continuously *\/\n.territori-map.in .territori-map-svg .pin-pulse{\n  transform-origin:center;transform-box:fill-box;\n  animation:map-pin-ring 3.6s ease-out infinite;\n  pointer-events:none;\n}\n.territori-map.in .territori-map-svg .pin-pulse-2{animation-delay:1.2s}\n.territori-map.in .territori-map-svg .pin-pulse-3{animation-delay:2.4s}\n@keyframes map-pin-ring{\n  0%{opacity:.65;stroke-width:1.4;r:4.84}\n  85%{opacity:0;stroke-width:.3;r:26}\n  100%{opacity:0;r:26}\n}\n\n\/* Water (lake + rivers) \u2014 entrance + perpetual subtle shimmer *\/\n.territori-map.in .territori-map-svg [fill=\"#5aacc3\"]{\n  animation:\n    map-water-in 2s cubic-bezier(.22,1,.36,1) .05s backwards,\n    map-water-shimmer 7s ease-in-out 2.2s infinite;\n}\n@keyframes map-water-in{\n  0%{opacity:0;transform:scale(1.015)}\n  100%{opacity:1;transform:scale(1)}\n}\n@keyframes map-water-shimmer{\n  0%,100%{opacity:1}\n  50%{opacity:.88}\n}\n\n\/* Land regions: drift up gently *\/\n.territori-map.in .territori-map-svg [fill=\"#c5b7ac\"],\n.territori-map.in .territori-map-svg [fill=\"#c4b5ab\"],\n.territori-map.in .territori-map-svg [fill=\"#a08e81\"],\n.territori-map.in .territori-map-svg [fill=\"#a18c80\"],\n.territori-map.in .territori-map-svg [fill=\"#a69184\"]{\n  animation:map-land-in 1.8s cubic-bezier(.22,1,.36,1) .15s backwards;\n}\n@keyframes map-land-in{\n  0%{opacity:0;transform:translateY(10px)}\n  100%{opacity:1;transform:translateY(0)}\n}\n\n\/* Highlighted San Pietro region \u2014 perpetual subtle glow *\/\n.territori-map.in .territori-map-svg [fill=\"#a18c80\"]{\n  animation:\n    map-land-in 1.8s cubic-bezier(.22,1,.36,1) .15s backwards,\n    map-region-glow 5.2s ease-in-out 2.5s infinite;\n}\n@keyframes map-region-glow{\n  0%,100%{filter:brightness(1)}\n  50%{filter:brightness(1.06)}\n}\n\n\/* Labels (dark brown text) fade up after land settles *\/\n.territori-map.in .territori-map-svg [fill=\"#63463b\"]{\n  animation:map-label-in 1.4s ease-out .45s backwards;\n}\n@keyframes map-label-in{\n  0%{opacity:0;transform:translateY(4px)}\n  100%{opacity:1;transform:translateY(0)}\n}\n\n\/* Lighter beige background frame *\/\n.territori-map.in .territori-map-svg [fill=\"#dfd6d1\"]{\n  animation:map-frame-in 1.3s ease-out backwards;\n}\n@keyframes map-frame-in{\n  0%{opacity:0}\n  100%{opacity:1}\n}\n\n\/* Hover: gentle lift + slow pause on bob *\/\n.territori-map-svg:hover .map-pins{\n  transform:translate(0,-5px) scale(1.01);\n  transition:transform 1.4s var(--ease-soft);\n  animation-play-state:paused !important;\n}\n\n\/* ---------------- PERCH\u00c9 SCEGLIERCI ---------------- *\/\n.perche{\n  background:var(--cream-2);\n  padding:100px 56px 130px;\n  position:relative;\n  border-top:1px solid rgba(140,119,81,.18);\n}\n.perche-inner{max-width:1320px;margin:0 auto}\n.perche-head{display:flex;flex-direction:column;align-items:center;gap:18px;margin-bottom:64px;text-align:center}\n.perche-head h2{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(32px,3.4vw,52px);line-height:1.08;letter-spacing:-.008em;\n  color:var(--brand);margin:0;\n}\n.perche-grid{\n  display:grid;grid-template-columns:repeat(3,1fr);gap:0;\n  align-items:stretch;\n  border-top:1px solid rgba(140,119,81,.22);\n  padding-top:140px;\n  position:relative;\n}\n\/* Vertical dividers between cards (only between, not on outside) *\/\n.perche-grid::before,\n.perche-grid::after{\n  content:\"\";position:absolute;top:140px;bottom:0;width:1px;\n  background:linear-gradient(180deg,\n    transparent 0%,\n    rgba(140,119,81,.22) 18%,\n    rgba(140,119,81,.22) 82%,\n    transparent 100%);\n}\n.perche-grid::before{left:33.333%}\n.perche-grid::after{left:66.666%}\n\n.perche-card{\n  position:relative;\n  display:flex;flex-direction:column;align-items:center;gap:18px;\n  text-align:center;padding:0 36px 24px;\n  transition:transform 1.1s var(--ease-soft);\n}\n.perche-card:hover{transform:translateY(-6px)}\n\n\/* Large faded italic numeral watermark \u2014 sits fully above the medallion, visible *\/\n.perche-num{\n  position:absolute;top:-104px;left:50%;transform:translateX(-50%);\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:104px;line-height:1;color:var(--brand);\n  opacity:.32;letter-spacing:-.02em;\n  pointer-events:none;user-select:none;\n  z-index:0;\n  transition:opacity 1.2s var(--ease-soft), transform 1.4s var(--ease-soft);\n}\n.perche-card:hover .perche-num{opacity:.55;transform:translateX(-50%) translateY(-4px)}\n\n\/* Medallion wrapping the icon *\/\n.perche-medallion{\n  position:relative;width:92px;height:92px;display:grid;place-items:center;\n  z-index:1;\n  transition:transform 1.1s var(--ease-soft);\n}\n.perche-medallion::before{\n  content:\"\";position:absolute;inset:0;border-radius:50%;\n  border:1px solid rgba(140,119,81,.35);\n  transition:transform 1.2s var(--ease-soft), border-color 1.2s var(--ease-soft);\n}\n.perche-medallion::after{\n  content:\"\";position:absolute;inset:9px;border-radius:50%;\n  border:1px solid var(--gold);\n  background:var(--cream-2);\n  transition:transform 1.2s var(--ease-soft), background-color 1.2s var(--ease-soft);\n}\n.perche-card:hover .perche-medallion::before{transform:scale(1.08);border-color:var(--gold)}\n.perche-card:hover .perche-medallion::after{transform:scale(1.04)}\n\n\/* Continuously rotating gold \"halo\" \u2014 slow, perpetual *\/\n.perche-halo{\n  position:absolute;inset:-6px;border-radius:50%;pointer-events:none;\n}\n.perche-halo svg{position:absolute;inset:0;width:100%;height:100%;animation:perche-halo-spin 24s linear infinite}\n.perche-halo circle{fill:none;stroke:var(--gold);stroke-width:.6;stroke-dasharray:2 8;opacity:.45}\n@keyframes perche-halo-spin{\n  to{transform:rotate(360deg)}\n}\n\n.perche-icon{\n  position:relative;width:42px;height:42px;display:grid;place-items:center;\n  color:var(--brand);z-index:1;\n  transition:transform 1.2s var(--ease-soft);\n}\n.perche-card:hover .perche-icon{transform:scale(1.06)}\n.perche-icon svg{width:100%;height:100%;overflow:visible}\n\n\/* Icon-specific perpetual micro-animations *\/\n.icon-shield .icon-check{\n  stroke-dasharray:22;stroke-dashoffset:22;\n  animation:icon-check-draw 3.6s ease-in-out 1s infinite;\n}\n@keyframes icon-check-draw{\n  0%,15%{stroke-dashoffset:22}\n  35%,75%{stroke-dashoffset:0}\n  95%,100%{stroke-dashoffset:22}\n}\n\n.icon-truck .truck-body,\n.icon-truck .truck-wheel-1,\n.icon-truck .truck-wheel-2{\n  animation:icon-truck-roll 4.5s ease-in-out infinite;\n  transform-origin:center;\n}\n.icon-truck .truck-wheel-1{transform-origin:13px 33px;animation:icon-wheel-spin 4.5s ease-in-out infinite}\n.icon-truck .truck-wheel-2{transform-origin:35px 33px;animation:icon-wheel-spin 4.5s ease-in-out infinite}\n@keyframes icon-truck-roll{\n  0%,100%{transform:translateX(-1.5px)}\n  50%{transform:translateX(1.5px)}\n}\n@keyframes icon-wheel-spin{\n  0%{transform:rotate(0)}\n  50%{transform:rotate(180deg)}\n  100%{transform:rotate(360deg)}\n}\n\n.icon-house .house-window{\n  transform-origin:24px 18px;\n  animation:icon-house-glow 4.2s ease-in-out infinite;\n}\n@keyframes icon-house-glow{\n  0%,100%{fill:var(--brand);transform:scale(1)}\n  50%{fill:var(--gold);transform:scale(1.5)}\n}\n\n.perche-card h3{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:22px;color:var(--brand);margin:8px 0 0;\n  position:relative;z-index:1;\n}\n\/* Slim gold underline that grows on hover *\/\n.perche-card h3::after{\n  content:\"\";display:block;width:28px;height:1px;\n  background:var(--gold);margin:14px auto 0;\n  transform-origin:center;transform:scaleX(.6);\n  transition:transform 1.2s var(--ease-soft), background-color 1.2s var(--ease-soft);\n}\n.perche-card:hover h3::after{transform:scaleX(1.4);background:var(--gold-dark)}\n\n.perche-list{\n  list-style:none;padding:0;margin:8px 0 0;\n  display:flex;flex-direction:column;gap:10px;\n  position:relative;z-index:1;\n}\n.perche-list li{\n  font-family:var(--serif);font-size:15.5px;line-height:1.55;color:var(--ink-2);\n  max-width:30ch;text-wrap:balance;\n}\n.perche-list em{font-style:italic;color:var(--brand);font-weight:500}\n.perche-cta{display:flex;justify-content:center;margin-top:80px}\n\n\/* Reveal stagger \u2014 already triggered by JS via .reveal -> .in *\/\n.perche-card{\n  opacity:0;transform:translateY(36px);\n}\n.perche-card.reveal.in,\n.perche-card.in{\n  opacity:1;transform:translateY(0);\n  transition:opacity 1.2s var(--ease-soft), transform 1.4s var(--ease-soft);\n}\n\/* Numeral and medallion get their own slight stagger on entrance *\/\n.perche-card .perche-num{transform:translateX(-50%) translateY(8px)}\n.perche-card.in .perche-num{\n  transform:translateX(-50%) translateY(0);\n  transition:opacity 1.6s var(--ease-soft) .25s, transform 1.6s var(--ease-soft) .25s;\n}\n.perche-card .perche-medallion{transform:scale(.86) rotate(-6deg)}\n.perche-card.in .perche-medallion{\n  transform:scale(1) rotate(0);\n  transition:transform 1.4s var(--ease-soft) .15s;\n}\n\n\/* ---------------- RESPONSIVE for Chi Siamo ---------------- *\/\n@media (max-width:1100px){\n  .pillars-grid{\n    grid-template-columns:1fr;\n    gap:48px;\n  }\n  .pillar-div{\n    width:100%;height:1px;flex-direction:row;padding-top:0;\n  }\n  .pillar-div-line{width:100%;height:1px;min-height:0;\n    background:linear-gradient(90deg, transparent, rgba(140,119,81,.35) 12%, rgba(140,119,81,.35) 88%, transparent);}\n  .hero-about-inner{grid-template-columns:1fr;gap:48px}\n  .hero-about-text{padding-top:0}\n  .territori-inner{grid-template-columns:1fr;gap:48px}\n}\n@media (max-width:680px){\n  .hero-about{padding:120px 24px 40px}\n  .pillars,.territori,.perche{padding-left:24px;padding-right:24px}\n  .perche-grid{grid-template-columns:1fr;gap:40px;padding-top:48px}\n  .brothers-portrait{width:200px;height:200px}\n  .brothers-wrap{height:200px}\n  .brothers-curve{height:380px;top:60px}\n}\n\n\/* ============================================================\n   SOSTENIBILIT\u00c0 \u2014 unique editorial layout\n   ============================================================ *\/\n\n\/* HERO \u2014 large title block, photo strip below *\/\n.sost-hero{\n  background:var(--cream);\n  padding:160px 56px 0;\n  position:relative;\n  overflow:hidden;\n}\n.sost-hero-inner{\n  max-width:1320px;margin:0 auto 56px;\n  display:grid;grid-template-columns:1.3fr 0.7fr;gap:60px;align-items:end;\n}\n.sost-eyebrow{\n  display:inline-flex;align-items:center;gap:14px;\n  font-family:var(--sans);font-size:11px;letter-spacing:.42em;text-transform:uppercase;\n  color:var(--gold-dark);margin:0 0 28px;\n}\n.sost-eyebrow::before{\n  content:\"\";display:block;width:40px;height:1px;background:currentColor;\n}\n.sost-title{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(56px,8vw,128px);line-height:.98;letter-spacing:-.018em;\n  color:var(--brand);margin:0;text-wrap:balance;\n}\n.sost-title .w{display:inline-block;opacity:0;transform:translateY(28px);animation:rise 1.1s var(--ease) forwards;margin-right:.16em}\n.sost-lede{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(17px,1.45vw,22px);line-height:1.45;color:var(--ink-2);\n  margin:0;max-width:32ch;text-wrap:pretty;padding-bottom:18px;\n}\n\n\/* Wide cinematic photo strip below the title *\/\n.sost-hero-photo{\n  position:relative;width:100%;\n  height:clamp(360px,46vw,620px);\n  overflow:hidden;\n}\n.sost-hero-photo img{\n  position:absolute;inset:0;width:100%;height:108%;\n  object-fit:cover;object-position:50% 60%;\n  will-change:transform;\n}\n\/* gold rule overlay top *\/\n.sost-hero-photo::before{\n  content:\"\";position:absolute;left:56px;right:56px;top:0;height:1px;\n  background:var(--gold);opacity:.5;z-index:2;\n  transform-origin:left;animation:rule-extend 1.6s var(--ease-soft) forwards;\n}\n@keyframes rule-extend{\n  from{transform:scaleX(0)}\n  to{transform:scaleX(1)}\n}\n\/* corner badge *\/\n.sost-hero-badge{\n  position:absolute;bottom:32px;right:32px;\n  display:inline-flex;align-items:center;gap:14px;\n  background:var(--cream);padding:14px 22px;\n  z-index:3;\n  box-shadow:0 16px 32px -14px rgba(46,30,21,.4);\n}\n.sost-hero-badge .brand-logo{\n  width:24px;height:24px;\n  -webkit-mask-image:url(\"https:\/\/www.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  background-color:var(--brand);\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;\n  -webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n  animation:hero-deco-spin 28s linear infinite;\n}\n.sost-hero-badge-text{\n  font-family:var(--sans);font-size:10.5px;letter-spacing:.4em;text-transform:uppercase;\n  color:var(--brand);font-weight:600;line-height:1;\n}\n\n\/* ============================================================\n   IMPEGNI \u2014 vertical timeline\n   ============================================================ *\/\n.impegni{\n  background:var(--cream);\n  padding:140px 56px 140px;\n  position:relative;\n}\n.impegni-inner{\n  max-width:1080px;margin:0 auto;\n  display:grid;grid-template-columns:280px 1fr;gap:80px;align-items:start;\n}\n.impegni-intro{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(20px,1.7vw,26px);line-height:1.35;color:var(--brand);\n  margin:0;text-wrap:balance;\n  position:sticky;top:130px;\n}\n.impegni-intro::before{\n  content:\"\";display:block;width:48px;height:1px;background:var(--gold);margin-bottom:24px;\n}\n.impegni-list{\n  list-style:none;padding:0;margin:0;\n  position:relative;\n}\n\/* vertical rail *\/\n.impegni-list::before{\n  content:\"\";position:absolute;left:46px;top:6px;bottom:6px;width:1px;\n  background:linear-gradient(180deg,\n    transparent 0%,\n    rgba(140,119,81,.35) 8%,\n    rgba(140,119,81,.35) 92%,\n    transparent 100%);\n}\n.impegno{\n  position:relative;\n  display:grid;grid-template-columns:92px 1fr;gap:32px;align-items:center;\n  padding:36px 0;\n  border-bottom:1px solid rgba(140,119,81,.16);\n}\n.impegno:first-child{padding-top:0}\n.impegno:last-child{border-bottom:none;padding-bottom:0}\n.impegno-marker{\n  position:relative;width:92px;height:92px;\n  display:grid;place-items:center;\n  background:var(--cream);\n  z-index:1;\n}\n.impegno-marker::before{\n  content:\"\";position:absolute;inset:0;border-radius:50%;\n  border:1px solid var(--gold);background:var(--cream-2);\n  transition:transform 1s var(--ease-soft), border-color 1s var(--ease-soft);\n}\n.impegno:hover .impegno-marker::before{transform:scale(1.06);border-color:var(--gold-dark)}\n\/* Number stamp REMOVED \u2014 icons now stand alone *\/\n.impegno-icon{\n  position:relative;z-index:2;width:38px;height:44px;color:var(--brand);overflow:visible;\n}\n.impegno-icon.icon-renewable, .impegno-icon.icon-pv{height:38px}\n.impegno-name{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(24px,2.2vw,34px);line-height:1.12;letter-spacing:-.008em;\n  color:var(--brand);margin:0;text-wrap:balance;\n}\n\n\/* impegno icon perpetual animations *\/\n\n\/* 01 Water: cloud floats, 3 raindrops fall in sequence into the cistern, fill ripples *\/\n.impegno-icon.icon-water .icon-cloud{\n  transform-origin:24px 14px;\n  animation:cloud-drift 6s ease-in-out infinite;\n}\n@keyframes cloud-drift{\n  0%,100%{transform:translateX(-1px)}\n  50%{transform:translateX(1px)}\n}\n.impegno-icon.icon-water .drop{\n  transform-origin:center;\n}\n.impegno-icon.icon-water .drop-1{animation:drop-fall 2.4s ease-in infinite;animation-delay:0s}\n.impegno-icon.icon-water .drop-2{animation:drop-fall 2.4s ease-in infinite;animation-delay:.4s}\n.impegno-icon.icon-water .drop-3{animation:drop-fall 2.4s ease-in infinite;animation-delay:.8s}\n@keyframes drop-fall{\n  0%{transform:translateY(-5px);opacity:0}\n  20%{opacity:1}\n  70%{transform:translateY(8px);opacity:1}\n  85%{transform:translateY(8px);opacity:0}\n  100%{transform:translateY(-5px);opacity:0}\n}\n.impegno-icon.icon-water .icon-fill{\n  animation:water-fill 2.4s ease-in-out infinite;\n}\n@keyframes water-fill{\n  0%,100%{opacity:.18}\n  50%{opacity:.4}\n}\n\n\/* 02 Wind turbine: blades (3 properly spread at 120\u00b0 each) spin around the hub *\/\n.impegno-icon.icon-renewable .icon-blades{\n  transform-origin:24px 22px;\n  animation:blades-spin 4s linear infinite;\n}\n@keyframes blades-spin{\n  to{transform:rotate(360deg)}\n}\n.impegno-icon.icon-renewable .icon-breeze{\n  animation:breeze-flow 3.2s ease-in-out infinite;\n}\n.impegno-icon.icon-renewable .breeze-2{animation-delay:.5s}\n.impegno-icon.icon-renewable .breeze-3{animation-delay:1.2s}\n@keyframes breeze-flow{\n  0%{opacity:0;transform:translateX(-4px)}\n  35%{opacity:.7}\n  65%{opacity:.7}\n  100%{opacity:0;transform:translateX(4px)}\n}\n\n\/* 03 PV + biomass \u2014 richly animated: sun pulses, beam streams down, cells light up\n   in sequence, plant stem draws itself, leaves sway, energy sparks rise from biomass *\/\n.impegno-icon.icon-pv .icon-pv-sun{\n  transform-origin:24px 11px;\n  animation:pv-sun-pulse 3s ease-in-out infinite;\n}\n.impegno-icon.icon-pv .icon-pv-sun-grp line{\n  animation:rays-flicker 2.4s ease-in-out infinite;\n}\n.impegno-icon.icon-pv .icon-pv-sun-grp line:nth-child(2){animation-delay:.3s}\n.impegno-icon.icon-pv .icon-pv-sun-grp line:nth-child(3){animation-delay:.6s}\n@keyframes pv-sun-pulse{\n  0%,100%{transform:scale(1)}\n  50%{transform:scale(1.18)}\n}\n@keyframes rays-flicker{0%,100%{opacity:1}50%{opacity:.45}}\n\n\/* Beam streaming down from sun to panel *\/\n.impegno-icon.icon-pv .icon-pv-beam{\n  stroke-dasharray:2 2;\n  stroke-dashoffset:0;\n  animation:pv-beam-flow 1.6s linear infinite;\n  opacity:.55;\n}\n@keyframes pv-beam-flow{\n  from{stroke-dashoffset:0}\n  to{stroke-dashoffset:-12}\n}\n\n\/* Panel slowly tilts; cells light up one after another in a wave *\/\n.impegno-icon.icon-pv .icon-pv-panel{\n  transform-origin:15px 28px;\n  animation:pv-panel-tilt 5s ease-in-out infinite;\n}\n@keyframes pv-panel-tilt{\n  0%,100%{transform:rotate(-1deg) translateY(0)}\n  50%{transform:rotate(1deg) translateY(-.6px)}\n}\n.impegno-icon.icon-pv .icon-pv-cell{\n  animation:pv-cell-glow 3.2s ease-in-out infinite;\n}\n.impegno-icon.icon-pv .cell-1{animation-delay:0s}\n.impegno-icon.icon-pv .cell-2{animation-delay:.18s}\n.impegno-icon.icon-pv .cell-3{animation-delay:.36s}\n.impegno-icon.icon-pv .cell-4{animation-delay:.54s}\n.impegno-icon.icon-pv .cell-5{animation-delay:.72s}\n.impegno-icon.icon-pv .cell-6{animation-delay:.90s}\n@keyframes pv-cell-glow{\n  0%,80%,100%{opacity:0}\n  20%,40%{opacity:.35}\n}\n\n\/* Biomass plant: stem grows by stroke-dash; leaves alternate; sparks rise & fade *\/\n.impegno-icon.icon-pv .icon-pv-stem{\n  stroke-dasharray:22;stroke-dashoffset:22;\n  animation:pv-stem-grow 4.6s ease-in-out infinite;\n  transform-origin:36px 38px;\n}\n@keyframes pv-stem-grow{\n  0%{stroke-dashoffset:22;transform:rotate(-3deg)}\n  35%,75%{stroke-dashoffset:0;transform:rotate(0)}\n  95%,100%{stroke-dashoffset:22;transform:rotate(3deg)}\n}\n.impegno-icon.icon-pv .icon-pv-leaf--l{\n  transform-origin:36px 30px;\n  animation:pv-leaf-l 3.6s ease-in-out infinite;\n}\n.impegno-icon.icon-pv .icon-pv-leaf--r{\n  transform-origin:36px 24px;\n  animation:pv-leaf-r 4s ease-in-out infinite;\n}\n@keyframes pv-leaf-l{\n  0%,100%{transform:rotate(-8deg) scale(.96)}\n  50%{transform:rotate(8deg) scale(1.04)}\n}\n@keyframes pv-leaf-r{\n  0%,100%{transform:rotate(10deg) scale(.96)}\n  50%{transform:rotate(-10deg) scale(1.04)}\n}\n\n\/* ============================================================\n   CIFRE \u2014 horizontal numbers strip on a textured warm band\n   ============================================================ *\/\n.cifre{\n  background:\n    linear-gradient(180deg, var(--cream-3) 0%, var(--cream-2) 100%);\n  padding:120px 56px;\n  position:relative;\n  border-top:1px solid rgba(140,119,81,.2);\n  border-bottom:1px solid rgba(140,119,81,.2);\n}\n.cifre-inner{\n  max-width:1280px;margin:0 auto;\n  display:grid;grid-template-columns:repeat(3,1fr);gap:0;\n  position:relative;\n}\n.cifre-inner::before,\n.cifre-inner::after{\n  content:\"\";position:absolute;top:10%;bottom:10%;width:1px;\n  background:linear-gradient(180deg, transparent, rgba(140,119,81,.4), transparent);\n}\n.cifre-inner::before{left:33.333%}\n.cifre-inner::after{left:66.666%}\n.cifra{\n  display:flex;flex-direction:column;align-items:center;gap:18px;\n  padding:0 32px;text-align:center;\n}\n.cifra-num{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(54px,6vw,96px);line-height:.95;letter-spacing:-.018em;\n  color:var(--brand);\n}\n.cifra-rule{display:block;width:32px;height:1px;background:var(--gold)}\n.cifra-label{\n  font-family:var(--serif);font-style:italic;font-weight:400;\n  font-size:15px;line-height:1.5;color:var(--ink-2);\n  max-width:18ch;\n}\n\n\/* ============================================================\n   CERTIFICAZIONE \u2014 closing band\n   ============================================================ *\/\n.cert{\n  background:var(--cream);\n  padding:140px 56px 160px;\n  text-align:center;\n  position:relative;\n}\n.cert-inner{\n  max-width:780px;margin:0 auto;\n  display:flex;flex-direction:column;align-items:center;gap:36px;\n}\n.cert-eyebrow{\n  font-family:var(--sans);font-size:11px;letter-spacing:.42em;text-transform:uppercase;\n  color:var(--gold-dark);margin:0;\n}\n.cert-h{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(36px,4vw,60px);line-height:1.08;letter-spacing:-.008em;\n  color:var(--brand);margin:0;text-wrap:balance;\n}\n.cert-h em{font-style:italic;font-weight:600;color:var(--gold-dark);letter-spacing:.02em}\n.cert-body{\n  font-family:var(--serif);font-style:italic;font-size:19px;line-height:1.55;\n  color:var(--ink-2);margin:0;max-width:38ch;text-wrap:balance;\n}\n\/* Equalitas certification mark (linked from official source) *\/\n.cert-equalitas{\n  position:relative;\n  display:inline-grid;place-items:center;\n  width:clamp(220px, 22vw, 280px);\n  aspect-ratio:1\/1;\n  padding:36px;\n  margin-bottom:8px;\n  transition:transform 1.2s var(--ease-soft);\n}\n.cert-equalitas img{\n  display:block;width:100%;height:auto;\n  position:relative;z-index:2;\n  filter:drop-shadow(0 6px 14px rgba(46,30,21,.08));\n  animation:cert-breathe 5.4s ease-in-out infinite;\n  transform-origin:center;\n}\n.cert-equalitas:hover{transform:translateY(-3px)}\n@keyframes cert-breathe{\n  0%,100%{transform:scale(1)}\n  50%{transform:scale(1.025)}\n}\n\n\/* Rotating dashed border around the logo *\/\n.cert-equalitas::before{\n  content:\"\";position:absolute;inset:0;\n  border-radius:50%;\n  border:1px dashed var(--gold);\n  opacity:.7;\n  animation:cert-ring-spin 28s linear infinite;\n}\n\/* Static inner hairline ring *\/\n.cert-equalitas::after{\n  content:\"\";position:absolute;inset:14px;\n  border-radius:50%;\n  border:1px solid rgba(140,119,81,.22);\n  pointer-events:none;\n}\n@keyframes cert-ring-spin{\n  to{transform:rotate(360deg)}\n}\n\n\/* SVG overlay with stroke-dash animation \u2014 adds an animated arc that \"draws\" around *\/\n.cert-equalitas-arc{\n  position:absolute;inset:0;width:100%;height:100%;\n  z-index:1;pointer-events:none;\n}\n.cert-equalitas-arc circle{\n  fill:none;stroke:var(--gold-dark);stroke-width:1.2;\n  stroke-dasharray:60 380;stroke-linecap:round;\n  animation:cert-arc-orbit 6s linear infinite;\n  transform-origin:center;\n}\n@keyframes cert-arc-orbit{\n  0%{stroke-dashoffset:0;opacity:.85}\n  50%{opacity:.4}\n  100%{stroke-dashoffset:-440;opacity:.85}\n}\n\n@media (max-width:900px){\n  .sost-hero{padding:120px 24px 0}\n  .sost-hero-inner{grid-template-columns:1fr;gap:24px}\n  .sost-hero-photo{margin:0 -24px}\n  .sost-hero-photo::before{left:24px;right:24px}\n  .impegni{padding:80px 24px}\n  .impegni-inner{grid-template-columns:1fr;gap:48px}\n  .impegni-intro{position:static}\n  .cifre{padding:80px 24px}\n  .cifre-inner{grid-template-columns:1fr;gap:48px}\n  .cifre-inner::before, .cifre-inner::after{display:none}\n  .cert{padding:80px 24px 100px}\n}\n\n\n\/* ============================================================\n   CONTATTI \u2014 details + form\n   ============================================================ *\/\n.contatti{\n  background:var(--cream);\n  padding:80px 56px 120px;\n  position:relative;\n}\n.contatti-inner{\n  max-width:1280px;margin:0 auto;\n  display:grid;grid-template-columns:0.85fr 1.15fr;gap:88px;align-items:start;\n}\n.contatti-kicker{\n  font-family:var(--sans);font-size:11px;letter-spacing:.42em;text-transform:uppercase;\n  color:var(--gold-dark);display:inline-flex;align-items:center;gap:14px;\n}\n.contatti-kicker::before{\n  content:\"\";display:block;width:36px;height:1px;background:currentColor;\n}\n\n\/* LEFT \u2014 details *\/\n.contatti-details{position:sticky;top:130px;display:flex;flex-direction:column;gap:28px}\n.contatti-name{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(32px,2.8vw,46px);line-height:1.05;letter-spacing:-.01em;\n  color:var(--brand);margin:18px 0 6px;\n}\n.contatti-block{display:flex;flex-direction:column;gap:6px}\n.contatti-label{\n  font-family:var(--sans);font-size:10.5px;letter-spacing:.36em;text-transform:uppercase;\n  color:var(--gold-dark);font-weight:500;\n}\n.contatti-block address, .contatti-block .contatti-link{\n  font-family:var(--serif);font-size:18px;line-height:1.5;color:var(--brand);\n  font-style:normal;\n}\n.contatti-link{\n  position:relative;display:inline-block;\n  border-bottom:1px solid transparent;\n  padding-bottom:2px;\n  transition:color 1s var(--ease-soft), border-color 1s var(--ease-soft);\n}\n.contatti-link:hover{color:var(--gold-dark);border-bottom-color:var(--gold)}\n\n.contatti-social{display:flex;gap:14px;margin-top:14px}\n.contatti-social a{\n  width:40px;height:40px;display:grid;place-items:center;\n  border:1px solid rgba(140,119,81,.4);border-radius:50%;\n  color:var(--brand);\n  transition:background-color 1s var(--ease-soft), color 1s var(--ease-soft), border-color 1s var(--ease-soft), transform 1s var(--ease-soft);\n}\n.contatti-social a:hover{background:var(--brand);color:var(--cream);border-color:var(--brand);transform:translateY(-2px)}\n.contatti-social svg{width:18px;height:18px}\n\n\/* RIGHT \u2014 form *\/\n.contatti-form{\n  background:var(--cream-2);\n  padding:56px 56px 48px;\n  border:1px solid rgba(140,119,81,.18);\n  position:relative;\n}\n.form-head{margin-bottom:36px;display:flex;flex-direction:column;gap:14px}\n.form-head h3{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(26px,2.2vw,36px);line-height:1.15;letter-spacing:-.005em;\n  color:var(--brand);margin:0;\n}\n.form-head p{font-family:var(--serif);font-size:16px;line-height:1.55;color:var(--ink-2);margin:0;max-width:48ch}\n\n.form-grid{\n  display:grid;grid-template-columns:1fr 1fr;gap:28px 28px;\n}\n.field{display:flex;flex-direction:column;gap:8px}\n.field-full{grid-column:1 \/ -1}\n.field-label{\n  font-family:var(--sans);font-size:10.5px;letter-spacing:.32em;text-transform:uppercase;\n  color:var(--brand);font-weight:600;\n}\n.field-opt{font-weight:400;color:var(--ink-2);letter-spacing:.18em;text-transform:none;font-size:10px}\n.field input, .field select, .field textarea{\n  font-family:var(--serif);font-size:17px;color:var(--brand);\n  background:transparent;\n  border:none;border-bottom:1px solid rgba(140,119,81,.4);\n  padding:10px 0;\n  width:100%;\n  transition:border-color .6s var(--ease-soft);\n  outline:none;\n  appearance:none;\n}\n.field input::placeholder, .field textarea::placeholder{color:rgba(58,42,31,.45);font-style:italic}\n.field select{cursor:pointer;color:rgba(58,42,31,.55)}\n.field select:valid{color:var(--brand)}\n.field textarea{resize:vertical;min-height:120px}\n.field input:focus, .field select:focus, .field textarea:focus{\n  border-bottom-color:var(--gold-dark);\n}\n.field input:invalid:not(:placeholder-shown), .field textarea:invalid:not(:placeholder-shown){\n  border-bottom-color:rgba(180,60,40,.55);\n}\n\n.field-check{flex-direction:row;align-items:flex-start;gap:14px}\n.field-check input{\n  width:18px;height:18px;\n  border:1px solid rgba(140,119,81,.5);\n  appearance:none;-webkit-appearance:none;\n  position:relative;cursor:pointer;flex:none;margin-top:2px;\n  transition:background-color .5s var(--ease-soft), border-color .5s var(--ease-soft);\n}\n.field-check input:checked{background:var(--brand);border-color:var(--brand)}\n.field-check input:checked::after{\n  content:\"\";position:absolute;left:5px;top:1px;width:5px;height:10px;\n  border:solid var(--cream);border-width:0 1.5px 1.5px 0;\n  transform:rotate(45deg);\n}\n.field-check span{font-family:var(--serif);font-size:14.5px;color:var(--ink-2);line-height:1.5}\n.field-check a{color:var(--gold-dark);border-bottom:1px solid currentColor}\n\n.form-foot{\n  margin-top:36px;\n  display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;\n}\n.form-feedback{\n  font-family:var(--serif);font-style:italic;font-size:15px;color:var(--gold-dark);\n}\n.form-feedback.is-error{color:#a83a2b}\n\n\/* ============================================================\n   MAP \u2014 Leaflet with overlay card\n   ============================================================ *\/\n.mappa-sezione{\n  background:var(--cream);\n  padding:0 0 0;\n  position:relative;\n}\n.mappa-head{\n  max-width:1280px;margin:0 auto 48px;padding:0 56px;\n  display:flex;flex-direction:column;gap:16px;\n}\n.mappa-head h2{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:clamp(28px,2.6vw,40px);line-height:1.12;letter-spacing:-.005em;\n  color:var(--brand);margin:0;text-wrap:balance;\n}\n.mappa-wrap{\n  position:relative;width:100%;\n  height:clamp(440px, 60vh, 640px);\n  background:var(--cream-3);\n  margin-bottom:0;\n}\n.mappa-leaflet{\n  position:absolute;inset:0;\n  filter:saturate(.65) sepia(.12);\n  z-index:1;\n}\n.mappa-overlay{\n  position:absolute;left:56px;top:50%;transform:translateY(-50%);\n  z-index:2;pointer-events:none;\n}\n.mappa-card{\n  background:var(--cream);\n  padding:24px 28px 26px;\n  display:grid;grid-template-columns:36px 1fr;gap:18px;align-items:start;\n  box-shadow:0 24px 48px -22px rgba(46,30,21,.35), 0 6px 14px -8px rgba(46,30,21,.18);\n  border-left:2px solid var(--gold);\n  max-width:300px;\n  pointer-events:auto;\n}\n.mappa-card-mark{\n  width:36px;height:36px;\n  -webkit-mask-image:url(\"https:\/\/www.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  background-color:var(--brand);\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;\n  -webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n  animation:hero-deco-spin 28s linear infinite;\n}\n.mappa-card-name{\n  font-family:var(--serif);font-style:italic;font-weight:500;\n  font-size:22px;color:var(--brand);margin:0 0 4px;line-height:1.1;\n}\n.mappa-card-addr{\n  font-family:var(--serif);font-size:14.5px;color:var(--ink-2);\n  margin:0 0 14px;line-height:1.4;\n}\n.mappa-card-link{\n  font-family:var(--sans);font-size:10.5px;letter-spacing:.32em;text-transform:uppercase;\n  color:var(--gold-dark);font-weight:600;\n  display:inline-flex;align-items:center;gap:10px;\n  transition:color 1s var(--ease-soft), gap 1.2s var(--ease-graceful);\n}\n.mappa-card-link:hover{color:var(--brand);gap:18px}\n.mappa-card-link svg{transition:transform 1.2s var(--ease-graceful)}\n.mappa-card-link:hover svg{transform:translateX(6px)}\n\n\/* Custom Leaflet pin *\/\n.cot-pin{\n  position:relative;\n  width:46px;height:60px;\n  transform:translate(-50%,-100%);\n}\n.cot-pin-body{\n  position:absolute;left:0;top:0;width:46px;height:46px;\n  background:var(--brand);\n  border-radius:50% 50% 50% 0;\n  transform:rotate(-45deg);\n  box-shadow:0 10px 22px -10px rgba(46,30,21,.55);\n  border:2px solid var(--cream);\n}\n.cot-pin-mark{\n  position:absolute;left:11px;top:11px;width:24px;height:24px;\n  -webkit-mask-image:url(\"https:\/\/www.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n          mask-image:url(\"https:\/\/www.cottinivini.com\/wp-content\/uploads\/2026\/05\/logo-cottini-mark.svg\");\n  background-color:var(--gold-light);\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;\n  -webkit-mask-position:center;mask-position:center;\n  -webkit-mask-size:contain;mask-size:contain;\n  animation:hero-deco-spin 22s linear infinite reverse;\n}\n.cot-pin-pulse{\n  position:absolute;left:50%;bottom:-2px;\n  width:14px;height:6px;border-radius:50%;\n  background:rgba(46,30,21,.25);\n  transform:translateX(-50%);\n  animation:pin-shadow-pulse 2.6s ease-in-out infinite;\n}\n@keyframes pin-shadow-pulse{\n  0%,100%{transform:translateX(-50%) scale(1);opacity:.35}\n  50%{transform:translateX(-50%) scale(1.25);opacity:.55}\n}\n\/* Bobbing animation *\/\n.cot-pin{animation:pin-bob 3.4s ease-in-out infinite}\n@keyframes pin-bob{\n  0%,100%{transform:translate(-50%,-100%)}\n  50%{transform:translate(-50%,calc(-100% - 4px))}\n}\n\n@media (max-width:900px){\n  .contatti{padding:64px 24px 80px}\n  .contatti-inner{grid-template-columns:1fr;gap:48px}\n  .contatti-details{position:static}\n  .contatti-form{padding:36px 28px}\n  .form-grid{grid-template-columns:1fr}\n  .mappa-head{padding:0 24px}\n  .mappa-overlay{left:24px;right:24px;max-width:none}\n  .mappa-card{max-width:none}\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.cottinivini.com\/en\/about-us\/\">About us<\/a>\n    <a href=\"https:\/\/www.cottinivini.com\/en\/our-brands\/\">Our brands<\/a>\n    <a href=\"https:\/\/www.cottinivini.com\/en\/sustainability\/\">Sustainability<\/a>\n    <a href=\"https:\/\/www.cottinivini.com\/en\/trade-area\/\">Trade Area<\/a>\n    <a href=\"https:\/\/www.cottinivini.com\/en\/press-area\/\">Press Area<\/a>\n    <a href=\"https:\/\/www.cottinivini.com\/en\/contacts\/\">Contacts<\/a>\n  <\/nav>\n\n  <div class=\"header-right\">\n    <div class=\"lang\" aria-label=\"Language\">\n      <a href=\"https:\/\/www.cottinivini.com\/en\/cookie-policy-eu\/\" data-it=\"\/cookie-policy-ue\/\">IT<\/a><span class=\"sep\">\u00b7<\/span><a class=\"active\" href=\"https:\/\/www.cottinivini.com\/en\/cookie-policy-eu\/\">EN<\/a>\n    <\/div>\n    <a href=\"https:\/\/www.cottinivini.com\/en\/trade-area\/\" class=\"btn-trade\">Trade Login<\/a>\n  <\/div>\n<\/header>\n\n<style id=\"cot-lang-fix\">\n\/* Selettore di lingua reso funzionante (WPML, 27\/08\/2026): erano <span> inerti. *\/\n.lang a{color:inherit;text-decoration:none;transition:opacity .3s var(--ease)}\n.lang a:not(.active){opacity:.62}\n.lang a:hover{opacity:1}\n<\/style>\n<style id=\"cot-mobile-fix\">\n\/* ============================================================\n   SOLO MOBILE - 27\/08\/2026\n   Ogni regola di questo blocco vive dentro una media query:\n   sopra i 960px il rendering desktop resta identico a prima.\n   ============================================================ *\/\n\n\/* Gli elementi del menu mobile sono creati dal bootstrap JS.\n   Questa guardia garantisce che su desktop non compaiano mai. *\/\n@media (min-width:961px){\n  .cot-burger,.cot-mnav{display:none !important}\n}\n\n@media (max-width:960px){\n\n  \/* --- pulsante hamburger --- *\/\n  .cot-burger{\n    display:inline-flex;align-items:center;justify-content:center;\n    width:44px;height:44px;flex:0 0 44px;margin:0 -10px 0 -2px;\n    background:none;border:0;padding:0;color:inherit;cursor:pointer;\n    -webkit-tap-highlight-color:transparent;\n  }\n  .cot-burger i{display:block;position:relative;width:22px;height:1px;background:currentColor}\n  .cot-burger i::before,.cot-burger i::after{\n    content:\"\";position:absolute;left:0;width:22px;height:1px;background:currentColor;\n  }\n  .cot-burger i::before{top:-7px}\n  .cot-burger i::after{top:7px}\n\n  \/* --- pannello di navigazione --- *\/\n  .cot-mnav{\n    position:fixed;inset:0;z-index:60;background:var(--cream);\n    display:flex;flex-direction:column;padding:18px 24px 34px;\n    opacity:0;visibility:hidden;transform:translateY(-10px);\n    transition:opacity .4s var(--ease-soft),transform .4s var(--ease-soft),visibility .4s;\n    overflow-y:auto;-webkit-overflow-scrolling:touch;\n  }\n  .cot-mnav.is-open{opacity:1;visibility:visible;transform:none}\n  body.cot-menu-open{overflow:hidden}\n\n  .cot-mnav-top{display:flex;align-items:center;justify-content:space-between;min-height:44px}\n  .cot-mnav-top .brand-logo{width:104px;height:38px}\n  .cot-mnav-x{\n    width:44px;height:44px;margin-right:-10px;\n    background:none;border:0;padding:0;color:var(--brand);cursor:pointer;\n    display:grid;place-items:center;-webkit-tap-highlight-color:transparent;\n  }\n  .cot-mnav-x i{display:block;position:relative;width:20px;height:1px;background:transparent}\n  .cot-mnav-x i::before,.cot-mnav-x i::after{\n    content:\"\";position:absolute;left:0;top:0;width:20px;height:1px;background:var(--brand);\n  }\n  .cot-mnav-x i::before{transform:rotate(45deg)}\n  .cot-mnav-x i::after{transform:rotate(-45deg)}\n\n  .cot-mnav-links{display:flex;flex-direction:column;margin:26px 0 0}\n  .cot-mnav-links a{\n    font-family:var(--serif);font-style:italic;font-weight:500;\n    font-size:clamp(24px,7vw,32px);line-height:1.2;color:var(--ink);\n    text-decoration:none;padding:14px 0;\n    border-bottom:1px solid rgba(140,119,81,.18);\n  }\n  .cot-mnav-links a:first-child{border-top:1px solid rgba(140,119,81,.18)}\n  .cot-mnav-links a[aria-current]{color:var(--gold-dark)}\n\n  .cot-mnav-foot{\n    margin-top:auto;padding-top:30px;\n    display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;\n  }\n  .cot-mnav-foot .lang{color:var(--ink-2)}\n  .cot-mnav-foot .btn-trade{white-space:nowrap}\n\n  \/* --- aree di tocco del selettore lingua ---\n     erano 16x20px: sotto la soglia utilizzabile con il pollice --- *\/\n  .lang{gap:2px}\n  .lang a{padding:12px 8px}\n\n  \/* ---------- 2\u00b0 giro mobile, 27\/08\/2026 ---------- *\/\n\n  \/* Trade Login fuori dall'header: su 390px occupava 114px e andava a capo\n     su due righe. Resta nel menu a tutto schermo, dove ha spazio. *\/\n  \/* il reset del tema impone display:inline-block !important sul bottone:\n     serve la stessa forza per toglierlo dall'header su mobile *\/\n  .site-header .btn-trade{display:none !important}\n\n  \/* Selettore lingua: la voce attiva era piu bassa dell'altra perche il\n     design le toglie padding sotto per fare spazio al filetto. Pareggio\n     le due scatole, cosi le basi del testo coincidono. *\/\n  .lang a{padding:12px 8px}\n  .lang a.active{padding-bottom:11px;border-bottom-width:1px}\n\n  \/* Hamburger: seguiva il colore del testo dell'header, che resta scuro\n     anche sopra le foto. Ora e' chiaro sull'immagine e scuro sul crema,\n     come fanno gia' menu e selettore lingua. Tratti ispessiti a 2px. *\/\n  .cot-burger{color:var(--cream)}\n  .site-header.scrolled .cot-burger{color:var(--ink)}\n  .cot-burger i,.cot-burger i::before,.cot-burger i::after{height:2px;border-radius:2px}\n  .cot-burger i{box-shadow:0 1px 5px rgba(46,30,21,.45)}\n  .cot-burger i::before,.cot-burger i::after{box-shadow:0 1px 5px rgba(46,30,21,.45)}\n  .site-header.scrolled .cot-burger i,\n  .site-header.scrolled .cot-burger i::before,\n  .site-header.scrolled .cot-burger i::after{box-shadow:none}\n\n  \/* Lampo viola al tocco: e' l'evidenziazione predefinita del browser.\n     Sostituita con un oro trasparente della palette. *\/\n  a,button,[role=\"button\"],input[type=\"submit\"],summary{\n    -webkit-tap-highlight-color:rgba(191,134,60,.20);\n  }\n\n  \/* Home, sezione Valori: le quattro schede erano una sotto l'altra.\n     Due colonne. *\/\n  .cards{grid-template-columns:1fr 1fr;gap:34px 16px}\n  .card-icon{width:74px;height:74px}\n  .card-icon svg{width:74px;height:74px}\n  .card h3{font-size:20px}\n\n  \/* Chi siamo, \"Perche scegliere i nostri vini\": i numeri 01\/02\/03 sono\n     posizionati 104px sopra la scheda. In colonna singola con 40px di\n     distanza finivano sopra il testo della scheda precedente, e il primo\n     sconfinava sul filetto della sezione. *\/\n  .perche-grid{gap:132px;padding-top:124px}\n  \/* i due filetti verticali separano le colonne: in colonna singola\n     tagliavano il contenuto a meta *\/\n  .perche-grid::before,.perche-grid::after{display:none}\n\n  \/* Chi siamo, blocco decorativo dei pillar: allineato a sinistra e alto\n     240px fissi, su mobile lasciava un vuoto con marchio, filetto e frase\n     sparpagliati. Composizione centrata e compattata. *\/\n  .pillar-deco{min-height:0;margin-top:34px;align-items:center;text-align:center}\n  .pillar-deco-mark{width:64px;height:64px}\n  .pillar-deco-rule{margin:16px auto 14px}\n  .pillar-deco-line{margin:0 auto 16px}\n\n  \/* ---------- 3o giro, 27\/08\/2026 ----------\n     Il lampo viola al tocco del burger non era la tap-highlight del\n     browser (gia' neutralizzata) ma il reset del tema:\n     button:hover,button:focus{background-color:#c36;color:#fff}\n     con specificita' 0-1-1, superiore a .cot-burger. Neutralizzato qui\n     per il burger e per la X del pannello, gli unici due <button>\n     introdotti dal menu mobile. *\/\n  .cot-burger:hover,.cot-burger:focus,.cot-burger:active{\n    background:none;background-color:transparent;color:var(--cream);\n    text-decoration:none;\n  }\n  .site-header.scrolled .cot-burger:hover,\n  .site-header.scrolled .cot-burger:focus,\n  .site-header.scrolled .cot-burger:active{color:var(--ink)}\n  .cot-mnav-x:hover,.cot-mnav-x:focus,.cot-mnav-x:active{\n    background:none;background-color:transparent;color:var(--brand);\n    text-decoration:none;\n  }\n}\n\n\/* --- schede risorse a colonna singola sui telefoni ---\n   a 390px la griglia 2x2 lasciava colonne da ~150px, con testi\n   spezzati su sette righe --- *\/\n@media (max-width:560px){\n  .pcat-grid{grid-template-columns:1fr}\n  .pcat{border-right:none}\n  .pcat:nth-child(2n){border-right:none}\n}\n\n\/* ---- 01\/10\/2026: pi\u00e8 di pagina sotto i 375px ----\n   Copyright e link legali affiancati sbordavano di 2px (IT) e 11px (EN)\n   a 360px: i link scendono su una riga loro. *\/\n@media (max-width:374px){\n  .site-footer .foot-bottom{flex-wrap:wrap;row-gap:14px}\n  .site-footer .foot-bottom > span{flex:1 1 100%}\n}\n<\/style>\n<style id=\"cot-legal\">\n\/* ============================================================\n   PAGINE LEGALI (privacy, cookie) - 01\/10\/2026\n   Stesso guscio delle altre pagine; qui solo la colonna di lettura.\n   ============================================================ *\/\n.legal-hero .sost-hero-inner{margin-bottom:64px}\n.legal-hero .sost-lede{max-width:36ch}\n.legal{background:var(--cream);padding:0 56px 150px;position:relative}\n.legal-inner{max-width:1320px;margin:0 auto;padding-top:84px;border-top:1px solid rgba(160,110,50,.26)}\n.legal--a .legal-body{max-width:780px;margin:0 auto}\n.legal--b .legal-inner{display:grid;grid-template-columns:250px minmax(0,780px);gap:clamp(56px,9vw,150px)}\n.legal-toc{position:sticky;top:124px;align-self:start}\n.legal-toc[hidden]{display:none}\n.legal-toc-label{display:inline-flex;align-items:center;gap:14px;font-family:var(--sans);font-size:11px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold-dark);margin:0 0 22px}\n.legal-toc-label::before{content:\"\";display:block;width:28px;height:1px;background:currentColor}\n.legal-toc ol{list-style:none;margin:0;padding:0}\n.legal-toc li{margin:0;padding:0}\n.legal-toc a{display:block;padding:11px 0;border-bottom:1px solid rgba(140,119,81,.18);font-family:var(--serif);font-size:15px;line-height:1.35;color:var(--ink-2);text-decoration:none;transition:color .5s var(--ease-soft),padding .5s var(--ease-soft)}\n.legal-toc li:first-child a{border-top:1px solid rgba(140,119,81,.18)}\n.legal-toc a:hover{color:var(--gold-dark)}\n.legal-toc a.is-active{color:var(--brand);padding-left:12px}\n\n.legal-body{font-family:var(--serif);font-size:17px;line-height:1.75;color:var(--ink-2)}\n.legal-body > :first-child,.legal-body #cmplz-document > :first-child{margin-top:0}\n.legal-body #cmplz-document{max-width:none;margin:0;padding:0;font-family:inherit;font-size:inherit;line-height:inherit;color:inherit;background:none}\n.legal-body p,.legal-body #cmplz-document p{margin:0 0 18px;max-width:68ch;font-size:inherit;line-height:inherit;color:inherit}\n.legal-body h2,.legal-body #cmplz-document h2{font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(26px,2.3vw,34px);line-height:1.2;letter-spacing:-.01em;color:var(--brand);margin:72px 0 22px;padding:0;text-transform:none;scroll-margin-top:120px}\n.legal-body h3,.legal-body #cmplz-document h3{font-family:var(--serif);font-style:normal;font-weight:600;font-size:19px;line-height:1.35;color:var(--ink);margin:40px 0 14px;padding:0;text-transform:none;scroll-margin-top:120px}\n.legal-body ul,.legal-body #cmplz-document ul{list-style:none;margin:0 0 22px;padding:0}\n.legal-body li,.legal-body #cmplz-document li{position:relative;padding-left:30px;margin:0 0 10px;max-width:66ch;list-style:none}\n.legal-body li::before,.legal-body #cmplz-document li::before{content:\"\";position:absolute;left:0;top:.85em;width:14px;height:1px;background:var(--gold)}\n.legal-body a,.legal-body #cmplz-document a{color:var(--gold-dark);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;transition:color .4s var(--ease-soft)}\n.legal-body a:hover,.legal-body #cmplz-document a:hover{color:var(--brand)}\n.legal-body strong{color:var(--ink);font-weight:600}\n.legal-body i,.legal-body em{font-style:italic}\n.legal-contact{margin-top:28px !important;padding:26px 30px;background:var(--cream-2);border-left:2px solid var(--gold)}\n.legal-body #cmplz-document li{font-size:inherit;line-height:1.6;color:inherit}\n.legal-body #cmplz-manage-consent-container{max-width:68ch;margin:6px 0 26px}\n.legal-body #cmplz-manage-consent-container.cmplz-manage-consent-container .cmplz-categories .cmplz-category{background:var(--cream-2);border:1px solid rgba(140,119,81,.18)}\n.legal-body #cmplz-manage-consent-container.cmplz-manage-consent-container .cmplz-categories .cmplz-category:not(:last-child){margin-bottom:8px}\n.legal-body #cmplz-manage-consent-container.cmplz-manage-consent-container .cmplz-categories .cmplz-category .cmplz-category-header{padding:14px 18px}\n.legal-body #cmplz-manage-consent-container .cmplz-category-title{font-family:var(--serif);font-size:16px;color:var(--ink)}\n.legal-body #cmplz-manage-consent-container.cmplz-manage-consent-container .cmplz-categories .cmplz-category .cmplz-category-header .cmplz-always-active{font-family:var(--sans);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-dark)}\n.legal-body #cmplz-manage-consent-container .cmplz-description{font-size:15px;line-height:1.6;color:var(--ink-2)}\n.legal-body #cmplz-manage-consent-container .cmplz-category-toggle svg{fill:var(--brand)}\n.legal-body #cmplz-manage-consent-container input[type=checkbox]{accent-color:var(--gold)}\n\n@media (max-width:960px){\n  .legal-hero .sost-hero-inner{margin-bottom:40px}\n  .legal{padding:0 24px 96px}\n  .legal-inner{padding-top:48px}\n  .legal--b .legal-inner{grid-template-columns:1fr;gap:40px}\n  .legal-toc{position:static}\n  .legal-body{font-size:16px;line-height:1.7}\n  .legal-body h2,.legal-body #cmplz-document h2{font-size:25px;margin:52px 0 16px}\n  .legal-body h3,.legal-body #cmplz-document h3{font-size:18px;margin:32px 0 12px}\n  .legal-contact{padding:22px 22px}\n}\n<\/style>\n<main id=\"main\">\n\n<!-- ============ HERO (pagina legale) ============ -->\n<section class=\"sost-hero legal-hero\" aria-label=\"Opening\">\n  <div class=\"sost-hero-inner\">\n    <div>\n      <span class=\"sost-eyebrow\">Legal notes<\/span>\n      <h1 class=\"sost-title\" data-split>Cookie&#10;Policy<\/h1>\n    <\/div>\n    <p class=\"sost-lede anim-fade\" data-delay=\"500\">\n      Which cookies this website uses, what they are for and how to manage your consent at any time.\n    <\/p>\n  <\/div>\n<\/section>\n\n<!-- ============ TESTO ============ -->\n<section class=\"legal legal--b\">\n  <div class=\"legal-inner\">\n<aside class=\"legal-toc\" hidden aria-label=\"On this page\"><span class=\"legal-toc-label\">On this page<\/span><ol><\/ol><\/aside>\n<div class=\"legal-body\">\n\n<!-- Legal document generated by Complianz | GDPR\/CCPA Cookie Consent https:\/\/wordpress.org\/plugins\/complianz-gdpr -->\n<div id=\"cmplz-document\" class=\"cmplz-document cookie-statement cmplz-document-eu\"><p><i>This Cookie Policy was last updated on October 1, 2026 and applies to citizens and legal permanent residents of the European Economic Area and Switzerland.<\/i><br><\/p><h2>1. Introduction<\/h2><p>Our website, <a href=\"https:\/\/www.cottinivini.com\/en\/\">https:\/\/www.cottinivini.com\/en\/<\/a> (hereinafter: \"the website\") uses cookies and other related technologies (for convenience all technologies are referred to as \"cookies\"). Cookies are also placed by third parties we have engaged. In the document below we inform you about the use of cookies on our website.<\/p><h2>2. What are cookies?<\/h2><p>A cookie is a small simple file that is sent along with pages of this website and stored by your browser on the hard drive of your computer or another device. The information stored therein may be returned to our servers or to the servers of the relevant third parties during a subsequent visit.<\/p><h2>3. What are scripts?<\/h2><p>A script is a piece of program code that is used to make our website function properly and interactively. This code is executed on our server or on your device.<\/p><h2>4. What is a web beacon?<\/h2><p>A web beacon (or a pixel tag) is a small, invisible piece of text or image on a website that is used to monitor traffic on a website. In order to do this, various data about you is stored using web beacons.<\/p><h2>5. Cookies<\/h2><h3>5.1 Technical or functional cookies<\/h3><p>Some cookies ensure that certain parts of the website work properly and that your user preferences remain known. By placing functional cookies, we make it easier for you to visit our website. This way, you do not need to repeatedly enter the same information when visiting our website and, for example, the items remain in your shopping cart until you have paid. We may place these cookies without your consent.<\/p><h3>5.2 Statistics cookies<\/h3><p>We use statistics cookies to optimize the website experience for our users. With these statistics cookies we get insights in the usage of our website.&nbsp;We ask your permission to place statistics cookies.<\/p><h2>6. Placed cookies<\/h2><div id=\"cmplz-cookies-overview\"><details class=\"cmplz-dropdown cmplz-service-desc cmplz-dropdown-cookiepolicy \">\n\t<summary class=\"cmplz-service-header\"><div>\n\t\t<h3>Miscellaneous<\/h3>\n\t\t<p>Purpose pending investigation<\/p>\n\t\t<label for=\"cmplz_service_miscellaneous\" class=\"cmplz_consent_per_service_label\"><span class=\"screen-reader-text\">Consent to service miscellaneous<\/span><\/label>\n\t\t<input type=\"checkbox\" id=\"cmplz_service_miscellaneous\" class=\"cmplz-accept-service cmplz-hidden\" data-service=\"miscellaneous\" data-category=\"functional\"><\/div>\n\t<\/summary>\n\t<div class=\"cmplz-service-description\">\n\t\t<h4>Usage<\/h4>\n\t\t<p><\/p>\n\t<\/div>\n\t<div class=\"cmplz-sharing-data\">\n\t\t<h4>Sharing data<\/h4>\n\t\t<p>Sharing of data is pending investigation<\/p>\n\t<\/div>\n\t<div class=\"cookies-per-purpose\">\n    <div class=\"purpose\"><h4>Purpose pending investigation<\/h4><\/div>\n    <div class=\"name-header\">\n\t<h5>Name<\/h5>\n<\/div>\n<div class=\"name\">cmplz_functional<\/div>\n<div class=\"retention-header\">\n\t<h5>Expiration<\/h5>\n<\/div>\n<div class=\"retention\">365 days<\/div>\n<div class=\"function-header\">\n\t<h5>Function<\/h5>\n<\/div>\n<div class=\"function\"><\/div>\n<div class=\"name-header\">\n\t<h5>Name<\/h5>\n<\/div>\n<div class=\"name\">cmplz_statistics<\/div>\n<div class=\"retention-header\">\n\t<h5>Expiration<\/h5>\n<\/div>\n<div class=\"retention\">365 days<\/div>\n<div class=\"function-header\">\n\t<h5>Function<\/h5>\n<\/div>\n<div class=\"function\"><\/div>\n<div class=\"name-header\">\n\t<h5>Name<\/h5>\n<\/div>\n<div class=\"name\">cmplz_preferences<\/div>\n<div class=\"retention-header\">\n\t<h5>Expiration<\/h5>\n<\/div>\n<div class=\"retention\">365 days<\/div>\n<div class=\"function-header\">\n\t<h5>Function<\/h5>\n<\/div>\n<div class=\"function\"><\/div>\n<div class=\"name-header\">\n\t<h5>Name<\/h5>\n<\/div>\n<div class=\"name\">cmplz_marketing<\/div>\n<div class=\"retention-header\">\n\t<h5>Expiration<\/h5>\n<\/div>\n<div class=\"retention\">365 days<\/div>\n<div class=\"function-header\">\n\t<h5>Function<\/h5>\n<\/div>\n<div class=\"function\"><\/div>\n\n<\/div>\n<\/details>\n<\/div><h2>7. Consent<\/h2><p>When you visit our website for the first time, we will show you a pop-up with an explanation about cookies. As soon as you click on \"Salva preferenze\", you consent to us using the categories of cookies and plug-ins you selected in the pop-up, as described in this Cookie Policy. You can disable the use of cookies via your browser, but please note that our website may no longer work properly.<\/p><h3>7.1 Manage your consent settings<\/h3><div id=\"cmplz-manage-consent-container-nojavascript\">You have loaded the Cookie Policy without javascript support.&nbsp;On AMP, you can use the manage consent button on the bottom of the page.<\/div><div id=\"cmplz-manage-consent-container\" class=\"cmplz-manage-consent-container\"><\/div><h2>8. Enabling\/disabling and deleting cookies<\/h2><p>You can use your internet browser to automatically or manually delete cookies. You can also specify that certain cookies may not be placed. Another option is to change the settings of your internet browser so that you receive a message each time a cookie is placed. For more information about these options, please refer to the instructions in the Help section of your browser.<\/p><p>Please note that our website may not work properly if all cookies are disabled. If you do delete the cookies in your browser, they will be placed again after your consent when you visit our website again.<\/p><h2>9. Your rights with respect to personal data<\/h2><p>You have the following rights with respect to your personal data:<\/p><ul>\n                    <li>You have the right to know why your personal data is needed, what will happen to it, and how long it will be retained for.<\/li>\n                    <li>Right of access: You have the right to access your personal data that is known to us.<\/li>\n                    <li>Right to rectification: you have the right to supplement, correct, have deleted or blocked your personal data whenever you wish.<\/li>\n                    <li>If you give us your consent to process your data, you have the right to revoke that consent and to have your personal data deleted.<\/li>\n                    <li>Right to transfer your data: you have the right to request all your personal data from the controller and transfer it in its entirety to another controller.<\/li>\n                    <li>Right to object: you may object to the processing of your data. We comply with this, unless there are justified grounds for processing.<\/li>\n                <\/ul><p>To exercise these rights, please contact us. Please refer to the contact details at the bottom of this Cookie Policy. If you have a complaint about how we handle your data, we would like to hear from you, but you also have the right to submit a complaint to the supervisory authority (the Data Protection Authority).<\/p><h2>10. Contact details<\/h2><p>For questions and\/or comments about our Cookie Policy and this statement, please contact us by using the following contact details:<\/p><p><span class=\"cmplz-contact-organisation\">Cottini 1925<\/span><br>\n                      <span class=\"cmplz-contact-address\">San Pietro in Cariano, Verona, Italia<\/span><br>\n                      <span class=\"cmplz-contact-country\">Italy<\/span><br>\n                      <span class=\"cmplz-contact-domain\">Website: <a href=\"https:\/\/www.cottinivini.com\/en\/\">https:\/\/www.cottinivini.com\/en\/<\/a><\/span><br>\n                      <span class=\"cmplz-contact-email\">Email: <span class=\"cmplz-obfuscate\">&#105;n&#102;&#111;@<span class=\"cmplz-fmail-domain\">e&#120;.co&#109;<\/span>&#099;ott&#105;n&#105;v&#105;&#110;&#105;&#046;&#099;om<\/span><\/span><br>\n                    <span class=\"cmplz-contact-telephone\"><\/span><\/p><p>This Cookie Policy was synchronized with <a href=\"https:\/\/cookiedatabase.org\/\" target=\"_blank\" rel=\"noopener\">cookiedatabase.org<\/a> on (not synced yet).<\/p><\/div>\n<\/div>\n  <\/div>\n<\/section>\n\n<\/main>\n\n\n<!-- ============ FOOTER ============ -->\n<footer class=\"site-footer\" role=\"contentinfo\">\n  <div class=\"foot-grid\">\n    <div class=\"col-logo\">\n      <a href=\"\/en\/\" class=\"logo logo--footer\" aria-label=\"Cottini 1925\">\n        <span class=\"brand-logo brand-logo--lg brand-logo--light\"><\/span>\n      <\/a>\n      \n    <\/div>\n    <div>\n      <h4>Private areas<\/h4>\n      <ul>\n        <li><a href=\"https:\/\/www.cottinivini.com\/en\/trade-area\/\">Trade Area<\/a><\/li>\n        <li><a href=\"https:\/\/www.cottinivini.com\/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.cottinivini.com\/en\/privacy-policy\/\">Privacy<\/a>\n      <a href=\"https:\/\/www.cottinivini.com\/en\/cookie-policy-eu\/\">Cookies<\/a>\n      <a href=\"https:\/\/www.cybear.it\/\" target=\"_blank\" rel=\"noopener\">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\n\n\n\n<script>(function(){var b=\"CihmdW5jdGlvbigpewogIGNvbnN0IHJlZHVjZWQgPSBtYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CgogIC8qIDEpIEhlYWRlciBzY3JvbGxlZCBzdGF0ZSDigJQgcGFnZXMgd2l0aG91dCBhIGRhcmsgZnVsbC1ibGVlZCBoZXJvIGFsd2F5cyB1c2UgdGhlIGRhcmsgaGVhZGVyICovCiAgY29uc3QgaGRyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpdGUtaGVhZGVyJyk7CiAgY29uc3QgaGFzRGFya0hlcm8gPSAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZXJvIC5oZXJvLXBob3RvJyk7CiAgY29uc3Qgc2V0U2Nyb2xsZWQgPSAoKSA9PiBoZHIuY2xhc3NMaXN0LnRvZ2dsZSgnc2Nyb2xsZWQnLCBoYXNEYXJrSGVybyA\/IHdpbmRvdy5zY3JvbGxZID4gNDAgOiB0cnVlKTsKICBzZXRTY3JvbGxlZCgpOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzZXRTY3JvbGxlZCwge3Bhc3NpdmU6dHJ1ZX0pOwoKICAvKiAyKSBTcGxpdCBIMSBpbnRvIDxzcGFuIGNsYXNzPSJ3Ij4gKi8KICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zcGxpdF0nKS5mb3JFYWNoKGVsPT57CiAgICBjb25zdCByYXcgPSBlbC50ZXh0Q29udGVudDsKICAgIGVsLnRleHRDb250ZW50PScnOwogICAgbGV0IGk9MDsKICAgIHJhdy5zcGxpdCgnXG4nKS5mb3JFYWNoKChsaW5lLGxpLGFycik9PnsKICAgICAgbGluZS50cmltKCkuc3BsaXQoL1xzKy8pLmZvckVhY2god29yZD0+ewogICAgICAgIGNvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgICAgIHMuY2xhc3NOYW1lPSd3JzsKICAgICAgICBzLnRleHRDb250ZW50PXdvcmQrJyAnOwogICAgICAgIHMuc3R5bGUuYW5pbWF0aW9uRGVsYXk9KDgwICsgaSoxMTApKydtcyc7CiAgICAgICAgaWYocmVkdWNlZCl7cy5zdHlsZS5hbmltYXRpb249J25vbmUnO3Muc3R5bGUub3BhY2l0eT0xO3Muc3R5bGUudHJhbnNmb3JtPSdub25lJ30KICAgICAgICBlbC5hcHBlbmRDaGlsZChzKTsKICAgICAgICBpKys7CiAgICAgIH0pOwogICAgICBpZihsaTxhcnIubGVuZ3RoLTEpIGVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwogICAgfSk7CiAgfSk7CgogIC8qIDMpIFJldmVhbCDigJQgSU8gd2l0aCBzY3JvbGwgZmFsbGJhY2sgKi8KICBjb25zdCByZXZlYWxFbHMgPSBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJldmVhbCwgLmFuaW0tZmFkZSwgLmFuaW0tem9vbScpXTsKICBjb25zdCBjYXJkRWxzID0gWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWNhcmRdJyldOwogIGNhcmRFbHMuZm9yRWFjaChlbD0+eyBlbC5zdHlsZS5vcGFjaXR5PScwJzsgZWwuc3R5bGUudHJhbnNmb3JtPSd0cmFuc2xhdGVZKDI4cHgpJzsKICAgIGVsLnN0eWxlLnRyYW5zaXRpb249J29wYWNpdHkgMS4xcyB2YXIoLS1lYXNlKSwgdHJhbnNmb3JtIDEuMnMgdmFyKC0tZWFzZSknOyB9KTsKCiAgY29uc3QgdHJpZ2dlclJldmVhbCA9IChlbCk9PnsKICAgIGlmKGVsLmRhdGFzZXQucmV2ZWFsZWQpIHJldHVybjsKICAgIGVsLmRhdGFzZXQucmV2ZWFsZWQgPSAnMSc7CiAgICBjb25zdCBkID0gcGFyc2VJbnQoZWwuZGF0YXNldC5kZWxheXx8JzAnLDEwKTsKICAgIHNldFRpbWVvdXQoKCk9PnsKICAgICAgaWYoZWwuaGFzQXR0cmlidXRlKCdkYXRhLWNhcmQnKSl7CiAgICAgICAgZWwuc3R5bGUub3BhY2l0eT0nMSc7IGVsLnN0eWxlLnRyYW5zZm9ybT0ndHJhbnNsYXRlWSgwKSc7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgnaW4nKTsKICAgICAgfQogICAgfSwgcmVkdWNlZD8wOmQpOwogIH07CgogIGNvbnN0IGlzVmlzaWJsZSA9IChlbCwgbWFyZ2luQm90dG9tPTAuMDgpPT57CiAgICBjb25zdCByID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICBjb25zdCB2aCA9IHdpbmRvdy5pbm5lckhlaWdodDsKICAgIGlmKHIuYm90dG9tIDwgMCB8fCByLnRvcCA+IHZoKSByZXR1cm4gZmFsc2U7CiAgICBjb25zdCB2aXNpYmxlID0gTWF0aC5taW4oci5ib3R0b20sIHZoKSAtIE1hdGgubWF4KHIudG9wLCAwKTsKICAgIHJldHVybiB2aXNpYmxlIC8gTWF0aC5taW4oci5oZWlnaHQsIHZoKSA+PSAwLjE1ICYmIHIudG9wIDwgdmggKiAoMSAtIG1hcmdpbkJvdHRvbSk7CiAgfTsKCiAgY29uc3QgY2hlY2tBbGwgPSAoKT0+ewogICAgWy4uLnJldmVhbEVscywgLi4uY2FyZEVsc10uZm9yRWFjaChlbD0+eyBpZihpc1Zpc2libGUoZWwpKSB0cmlnZ2VyUmV2ZWFsKGVsKTsgfSk7CiAgfTsKCiAgdHJ5ewogICAgY29uc3QgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpPT57CiAgICAgIGVudHJpZXMuZm9yRWFjaChlPT57IGlmKGUuaXNJbnRlcnNlY3RpbmcpIHRyaWdnZXJSZXZlYWwoZS50YXJnZXQpOyB9KTsKICAgIH0se3RocmVzaG9sZDowLjE1LHJvb3RNYXJnaW46JzBweCAwcHggLTglIDBweCd9KTsKICAgIFsuLi5yZXZlYWxFbHMsIC4uLmNhcmRFbHNdLmZvckVhY2goZWw9PmlvLm9ic2VydmUoZWwpKTsKICB9Y2F0Y2goZSl7fQoKICAvLyBTY3JvbGwvbG9hZCBmYWxsYmFjayBlbnN1cmVzIGNvbnRlbnQgcmV2ZWFscyBldmVuIGlmIElPIG1pc2ZpcmVzCiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGNoZWNrQWxsLCB7cGFzc2l2ZTp0cnVlfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBjaGVja0FsbCk7CiAgc2V0VGltZW91dChjaGVja0FsbCwgMjAwKTsKICBzZXRUaW1lb3V0KGNoZWNrQWxsLCAxMjAwKTsKCiAgLyogM2IpIE1hcCDigJQgZmV0Y2ggU1ZHIGFuZCBpbmxpbmUgaXQgQVNBUCBzbyBhbmltYXRpb25zIGFyZSByZWFkeSB3aGVuIHNjcm9sbGVkIGludG8gdmlldy4gKi8KICBjb25zdCBtYXBDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudGVycml0b3JpLW1hcCcpOwogIGlmKG1hcENvbnRhaW5lcil7CiAgICBjb25zdCBtYXBJbWcgPSBtYXBDb250YWluZXIucXVlcnlTZWxlY3RvcignLnRlcnJpdG9yaS1tYXAtaW1nJyk7CiAgICBpZihtYXBJbWcpewogICAgICBjb25zdCBpbmxpbmVOb3cgPSBhc3luYyAoKT0+ewogICAgICAgIGlmKG1hcENvbnRhaW5lci5kYXRhc2V0LnN2Z0lubGluZWQpIHJldHVybjsKICAgICAgICBtYXBDb250YWluZXIuZGF0YXNldC5zdmdJbmxpbmVkID0gJzEnOwogICAgICAgIHRyeXsKICAgICAgICAgIGNvbnN0IHIgPSBhd2FpdCBmZXRjaChtYXBJbWcuc3JjKTsKICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByLnRleHQoKTsKICAgICAgICAgIG1hcENvbnRhaW5lci5pbm5lckhUTUwgPSB0ZXh0OwogICAgICAgICAgY29uc3Qgc3ZnRWwgPSBtYXBDb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7CiAgICAgICAgICBpZighc3ZnRWwpIHJldHVybjsKICAgICAgICAgIHN2Z0VsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCd0ZXJyaXRvcmktbWFwLXN2ZycpOwogICAgICAgICAgLy8gSW5qZWN0IHBlcnBldHVhbCBwdWxzZSByaW5ncyBJTlNJREUgZWFjaCBkb3QncyBvd24gZ3JvdXAgc28gdGhleSBzaGFyZQogICAgICAgICAgLy8gZXhhY3RseSB0aGUgc2FtZSBwYXJlbnQgdHJhbnNmb3JtcyAodHJhbnNsYXRlICsgWS1mbGlwIG1hdHJpeCkg4oCUIG5vCiAgICAgICAgICAvLyBmbG9hdGluZy1wb2ludCBkcmlmdCwgbm8gYXNwZWN0LXJhdGlvIG1pc21hdGNoLgogICAgICAgICAgY29uc3QgbnMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnOwogICAgICAgICAgY29uc3QgYnVyZ3VuZHlFbHMgPSBzdmdFbC5xdWVyeVNlbGVjdG9yQWxsKCdbZmlsbD0iIzRhMGYxZCJdJyk7CiAgICAgICAgICBsZXQgZG90SWR4ID0gMDsKICAgICAgICAgIGJ1cmd1bmR5RWxzLmZvckVhY2goZWw9PnsKICAgICAgICAgICAgY29uc3QgYmIgPSBlbC5nZXRCQm94KCk7CiAgICAgICAgICAgIC8vIERvdHMgaGF2ZSBhIHNtYWxsIGJib3ggKH4xMHgxMCk7IGZsYWdzIGFyZSBtdWNoIGxhcmdlcgogICAgICAgICAgICBpZihiYi53aWR0aCA+IDIwIHx8IGJiLmhlaWdodCA+IDIwKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGVsLnBhcmVudE5vZGU7CiAgICAgICAgICAgIGlmKCFwYXJlbnQpIHJldHVybjsKICAgICAgICAgICAgZG90SWR4Kys7CiAgICAgICAgICAgIGNvbnN0IHJpbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnMsJ2NpcmNsZScpOwogICAgICAgICAgICAvLyBMb2NhbCBjaXJjbGUgY2VudGVyIG1hdGNoZXMgdGhlIGRvdCdzIHBhdGg6IHN0YXJ0cyBhdCAoMCwwKSwgY3VydmVzIHRvCiAgICAgICAgICAgIC8vICgtOS42ODUsIDApIGFuZCBiYWNrLCBzbyB0aGUgdmlzdWFsIGNlbnRlciBpcyBhdCAoLTQuODQzLCAwKS4KICAgICAgICAgICAgcmluZy5zZXRBdHRyaWJ1dGUoJ2N4JywnLTQuODQzJyk7CiAgICAgICAgICAgIHJpbmcuc2V0QXR0cmlidXRlKCdjeScsJzAnKTsKICAgICAgICAgICAgcmluZy5zZXRBdHRyaWJ1dGUoJ3InLCc0Ljg0Jyk7CiAgICAgICAgICAgIHJpbmcuc2V0QXR0cmlidXRlKCdmaWxsJywnbm9uZScpOwogICAgICAgICAgICByaW5nLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywnIzRhMGYxZCcpOwogICAgICAgICAgICByaW5nLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywnMS40Jyk7CiAgICAgICAgICAgIHJpbmcuc2V0QXR0cmlidXRlKCdjbGFzcycsJ3Bpbi1wdWxzZSBwaW4tcHVsc2UtJyArIGRvdElkeCk7CiAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChyaW5nKTsKICAgICAgICAgIH0pOwogICAgICAgIH1jYXRjaChlKXsgLyoga2VlcCA8aW1nPiBmYWxsYmFjayAqLyB9CiAgICAgIH07CiAgICAgIC8vIElubGluZSBhcyBzb29uIGFzIHBvc3NpYmxlCiAgICAgIGlmKCdyZXF1ZXN0SWRsZUNhbGxiYWNrJyBpbiB3aW5kb3cpewogICAgICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2soaW5saW5lTm93LCB7dGltZW91dDoxNTAwfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgc2V0VGltZW91dChpbmxpbmVOb3csIDIwMCk7CiAgICAgIH0KICAgICAgLy8gQmFja3VwOiBpZiBub3QgaW5saW5lZCB3aXRoaW4gMi41cywgZm9yY2UgaXQKICAgICAgc2V0VGltZW91dChpbmxpbmVOb3csIDI1MDApOwogICAgfQogIH0KCiAgLy8gRmluYWwgc2FmZXR5OiBhbnl0aGluZyBzdGlsbCBoaWRkZW4gNHMgYWZ0ZXIgbG9hZCBnZXRzIGhhcmQtc2hvd24uCiAgLy8gKEJlbHQtYW5kLWJyYWNlcyBhZ2FpbnN0IGVudmlyb25tZW50cyB3aGVyZSB0cmFuc2l0aW9ucyBzaWxlbnRseSBzdGFsbC4pCiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKT0+ewogICAgc2V0VGltZW91dCgoKT0+ewogICAgICBbLi4ucmV2ZWFsRWxzLCAuLi5jYXJkRWxzXS5mb3JFYWNoKGVsPT57CiAgICAgICAgY29uc3Qgb3AgPSBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZWwpLm9wYWNpdHkpOwogICAgICAgIGlmKG9wIDwgMC45OSl7CiAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnOwogICAgICAgICAgZWwuc3R5bGUub3BhY2l0eSA9ICcxJzsKICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICdub25lJzsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwgNDAwMCk7CiAgfSk7CgogIC8qIDUpIENvdW50ZXIgYW5pbWF0aW9uIOKAlCBJTyArIHNjcm9sbCBmYWxsYmFjayAqLwogIGNvbnN0IGZtdCA9ICh2YWwsIHR5cGUpPT57CiAgICBpZih0eXBlPT09J20nKSByZXR1cm4gdmFsLnRvRml4ZWQoMSkucmVwbGFjZSgnLicsJywnKSsnTSc7CiAgICBpZih0eXBlPT09J3BsdXMnKSByZXR1cm4gTWF0aC5yb3VuZCh2YWwpKycrJzsKICAgIGlmKHR5cGU9PT0ndGhvdXNhbmRzJykgcmV0dXJuIE1hdGgucm91bmQodmFsKS50b0xvY2FsZVN0cmluZygnaXQtSVQnKTsKICAgIGlmKHR5cGU9PT0ncGVyY2VudCcpIHJldHVybiBNYXRoLnJvdW5kKHZhbCkrJyUnOwogICAgcmV0dXJuIFN0cmluZyhNYXRoLnJvdW5kKHZhbCkpOwogIH07CiAgY29uc3QgY291bnRlckVscyA9IFsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1jb3VudGVyXScpXTsKICBjb25zdCBydW5Db3VudGVyID0gKGVsKT0+ewogICAgaWYoZWwuZGF0YXNldC5jb3VudGVkKSByZXR1cm47CiAgICBlbC5kYXRhc2V0LmNvdW50ZWQgPSAnMSc7CiAgICBjb25zdCB0YXJnZXQgPSBwYXJzZUZsb2F0KGVsLmRhdGFzZXQudGFyZ2V0KTsKICAgIGNvbnN0IGZyb20gPSBwYXJzZUZsb2F0KGVsLmRhdGFzZXQuZnJvbXx8JzAnKTsKICAgIGNvbnN0IHN0ZXAgPSBwYXJzZUZsb2F0KGVsLmRhdGFzZXQuc3RlcHx8JzEnKTsKICAgIGNvbnN0IGludGVydmFsID0gcGFyc2VJbnQoZWwuZGF0YXNldC5pbnRlcnZhbHx8JzMwJywxMCk7CiAgICBjb25zdCB0eXBlID0gZWwuZGF0YXNldC5mb3JtYXR8fCdpbnQnOwogICAgaWYocmVkdWNlZCl7IGVsLnRleHRDb250ZW50ID0gZm10KHRhcmdldCx0eXBlKTsgcmV0dXJuOyB9CiAgICBsZXQgdiA9IGZyb207IGVsLnRleHRDb250ZW50ID0gZm10KHYsdHlwZSk7CiAgICBjb25zdCB0ID0gc2V0SW50ZXJ2YWwoKCk9PnsKICAgICAgdiArPSBzdGVwOwogICAgICBpZigoc3RlcD4wICYmIHY+PXRhcmdldCkgfHwgKHN0ZXA8MCAmJiB2PD10YXJnZXQpKXsKICAgICAgICB2ID0gdGFyZ2V0OyBlbC50ZXh0Q29udGVudCA9IGZtdCh2LHR5cGUpOyBjbGVhckludGVydmFsKHQpOwogICAgICB9IGVsc2UgewogICAgICAgIGVsLnRleHRDb250ZW50ID0gZm10KHYsdHlwZSk7CiAgICAgIH0KICAgIH0sIGludGVydmFsKTsKICB9OwogIGNvbnN0IGNvdW50ZXJWaXNpYmxlID0gKGVsKT0+ewogICAgY29uc3QgciA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgY29uc3QgdmggPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICBpZihyLmJvdHRvbSA8IDAgfHwgci50b3AgPiB2aCkgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHIudG9wIDwgdmggKiAwLjY1OwogIH07CiAgY29uc3QgY2hlY2tDb3VudGVycyA9ICgpPT57IGNvdW50ZXJFbHMuZm9yRWFjaChlbD0+eyBpZihjb3VudGVyVmlzaWJsZShlbCkpIHJ1bkNvdW50ZXIoZWwpOyB9KTsgfTsKICB0cnl7CiAgICBjb25zdCBjb3VudElPID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKT0+ewogICAgICBlbnRyaWVzLmZvckVhY2goZT0+eyBpZihlLmlzSW50ZXJzZWN0aW5nKSBydW5Db3VudGVyKGUudGFyZ2V0KTsgfSk7CiAgICB9LHt0aHJlc2hvbGQ6MC4zNX0pOwogICAgY291bnRlckVscy5mb3JFYWNoKGVsPT5jb3VudElPLm9ic2VydmUoZWwpKTsKICB9Y2F0Y2goZSl7fQogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBjaGVja0NvdW50ZXJzLCB7cGFzc2l2ZTp0cnVlfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBjaGVja0NvdW50ZXJzKTsKICBzZXRUaW1lb3V0KGNoZWNrQ291bnRlcnMsIDQwMCk7CgogIC8qIDYpIFBhcmFsbGF4ICsgc2Nyb2xsLWRyaXZlbiBzZWN0aW9uICJkZXB0aCIgKyBoZXJvIGZhZGUgKyBwcm9ncmVzcyBiYXIgKi8KICBjb25zdCBwcm9nQmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNjcm9sbC1wcm9nJyk7CiAgY29uc3QgaGVyb1RleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVyby10ZXh0Jyk7CiAgY29uc3QgaGVyb1NlYyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZXJvJyk7CiAgaWYoIXJlZHVjZWQpewogICAgY29uc3QgcGFyYWxsYXhOb2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXBhcmFsbGF4XScpOwogICAgLy8gSW5uZXIgY29udGVudCBibG9ja3MgdGhhdCBzaG91bGQgc3VidGx5IGxpZnQgb24gdmlld3BvcnQgY2VudGVyIHBhc3MKICAgIGNvbnN0IGxpZnRFbHMgPSBbCiAgICAgIC4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52YWxvcmktaW5uZXIsIC5udW1lcmktaW5uZXInKQogICAgXTsKICAgIGxpZnRFbHMuZm9yRWFjaChlbCA9PiB7IGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJzsgfSk7CiAgICBsZXQgdGlja2luZyA9IGZhbHNlOwogICAgbGV0IGxhc3RTY3JvbGwgPSB3aW5kb3cuc2Nyb2xsWTsKICAgIGxldCB2ZWxvY2l0eSA9IDA7CiAgICBjb25zdCBtYXAgPSAodmFsLCBpbk1pbiwgaW5NYXgsIG91dE1pbiwgb3V0TWF4KSA9PgogICAgICBvdXRNaW4gKyAoKHZhbCAtIGluTWluKSAqIChvdXRNYXggLSBvdXRNaW4pKSAvIChpbk1heCAtIGluTWluKTsKICAgIGNvbnN0IHVwZGF0ZSA9ICgpPT57CiAgICAgIGNvbnN0IHZoID0gd2luZG93LmlubmVySGVpZ2h0OwogICAgICBjb25zdCBzeSA9IHdpbmRvdy5zY3JvbGxZOwogICAgICB2ZWxvY2l0eSA9IHZlbG9jaXR5ICogMC44NSArIChzeSAtIGxhc3RTY3JvbGwpICogMC4xNTsKICAgICAgbGFzdFNjcm9sbCA9IHN5OwogICAgICBjb25zdCB2ZWxCb29zdCA9IE1hdGgubWluKDEsIE1hdGguYWJzKHZlbG9jaXR5KSAvIDYwKTsKCiAgICAgIC8vIFByb2dyZXNzIGJhcgogICAgICBjb25zdCBkb2NIID0gTWF0aC5tYXgoMSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCAtIHZoKTsKICAgICAgY29uc3QgcCA9IE1hdGgubWluKDEsIE1hdGgubWF4KDAsIHN5IC8gZG9jSCkpOwogICAgICBpZihwcm9nQmFyKSBwcm9nQmFyLnN0eWxlLnNldFByb3BlcnR5KCctLXAnLCAocCoxMDApLnRvRml4ZWQoMikrJyUnKTsKCiAgICAgIC8vIEhlcm8gdGV4dCBmYWRlICsgbGlmdCBhcyB5b3Ugc2Nyb2xsIGludG8gVmFsb3JpCiAgICAgIGlmKGhlcm9UZXh0ICYmIGhlcm9TZWMpewogICAgICAgIGNvbnN0IGhlcm9IID0gaGVyb1NlYy5vZmZzZXRIZWlnaHQ7CiAgICAgICAgY29uc3QgdCA9IE1hdGgubWluKDEsIE1hdGgubWF4KDAsIHN5IC8gKGhlcm9IICogMC43KSkpOwogICAgICAgIGNvbnN0IGVhc2VkID0gdCAqIHQ7CiAgICAgICAgaGVyb1RleHQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDAsICR7LXN5KjAuMzJ9cHgsIDApIHNjYWxlKCR7MSAtIGVhc2VkKjAuMDZ9KWA7CiAgICAgICAgaGVyb1RleHQuc3R5bGUub3BhY2l0eSA9ICgxIC0gZWFzZWQgKiAxLjE1KS50b0ZpeGVkKDMpOwogICAgICB9CgogICAgICBwYXJhbGxheE5vZGVzLmZvckVhY2gobm9kZT0+ewogICAgICAgIGNvbnN0IGtpbmQgPSBub2RlLmRhdGFzZXQucGFyYWxsYXg7CiAgICAgICAgaWYoa2luZD09PSdoZXJvJyl7CiAgICAgICAgICBjb25zdCB5ID0gc3kgKiAwLjI4OwogICAgICAgICAgbm9kZS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoMCwgJHt5fXB4LCAwKSBzY2FsZSgkezEuMDggKyBNYXRoLm1pbiguMDYsIHN5LzgwMDApfSlgOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjb25zdCByZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgIGlmKHJlY3QuYm90dG9tIDwgLTIwMCB8fCByZWN0LnRvcCA+IHZoKzIwMCkgcmV0dXJuOwogICAgICAgICAgY29uc3QgcHAgPSAxIC0gKHJlY3QudG9wIC8gdmgpOwogICAgICAgICAgY29uc3QgcmFuZ2UgPSBraW5kPT09J251bWVyaScgPyBbLTUwLDQ1XSA6IFstMzAsMjhdOwogICAgICAgICAgY29uc3QgeSA9IG1hcChNYXRoLm1heCgwLE1hdGgubWluKDEuNSxwcCkpLCAwLCAxLjUsIHJhbmdlWzBdLCByYW5nZVsxXSk7CiAgICAgICAgICBub2RlLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwLCAke3l9cHgsIDApYDsKICAgICAgICB9CiAgICAgIH0pOwoKICAgICAgLy8gU2VjdGlvbiBkZXB0aCBsaWZ0IOKAlCBpbm5lciBjb250ZW50IHJpc2VzIGFzIGl0IHBhc3NlcyB2aWV3cG9ydCBjZW50ZXIKICAgICAgbGlmdEVscy5mb3JFYWNoKGVsPT57CiAgICAgICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIGlmKHJlY3QuYm90dG9tIDwgLTIwMCB8fCByZWN0LnRvcCA+IHZoKzIwMCkgcmV0dXJuOwogICAgICAgIGNvbnN0IGNlbnRlciA9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQvMjsKICAgICAgICBjb25zdCBkaXN0ID0gKGNlbnRlciAtIHZoLzIpIC8gdmg7CiAgICAgICAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWF4KC0xLCBNYXRoLm1pbigxLCBkaXN0KSk7CiAgICAgICAgY29uc3QgbGlmdCA9IGNsYW1wZWQgKiAtMjggKiAoMSArIHZlbEJvb3N0KjAuNik7CiAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDAsICR7bGlmdH1weCwgMClgOwogICAgICB9KTsKCiAgICAgIC8vIENhcmQgaG9yaXpvbnRhbC1zdGFnZ2VyIGVudHJ5IChhbHRlcm5hdGluZyBsZWZ0L3JpZ2h0KQogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1jYXJkXScpLmZvckVhY2goKGNhcmQsIGkpPT57CiAgICAgICAgY29uc3QgcmVjdCA9IGNhcmQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgY29uc3QgZW50ZXIgPSAxIC0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgKHJlY3QudG9wIC0gdmgqMC4yKSAvICh2aCowLjY1KSkpOwogICAgICAgIGlmKGNhcmQuZGF0YXNldC5yZXZlYWxlZCAhPT0gJzEnICYmIGVudGVyID4gMC4wNSl7CiAgICAgICAgICAvLyBpbml0aWFsIGRyYW1hdGljIG9mZnNldCAob25seSBiZWZvcmUgcmV2ZWFsKQogICAgICAgICAgY29uc3QgZGlyID0gKGkgJSAyID09PSAwKSA\/IC0xIDogMTsKICAgICAgICAgIGNvbnN0IGsgPSAxIC0gZW50ZXI7CiAgICAgICAgICBjYXJkLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke2RpciAqIGsgKiAzNn1weCwgJHtrKjQwfXB4LCAwKWA7CiAgICAgICAgICBjYXJkLnN0eWxlLm9wYWNpdHkgPSBlbnRlci50b0ZpeGVkKDMpOwogICAgICAgIH0KICAgICAgfSk7CgogICAgICB0aWNraW5nID0gZmFsc2U7CiAgICB9OwogICAgY29uc3QgcmVxdWVzdFVwZGF0ZSA9ICgpPT57IGlmKCF0aWNraW5nKXsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZSk7IHRpY2tpbmcgPSB0cnVlOyB9IH07CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgcmVxdWVzdFVwZGF0ZSwge3Bhc3NpdmU6dHJ1ZX0pOwogICAgdXBkYXRlKCk7CgogICAgLyogNmIpIExFTklTLUxJS0UgSU5FUlRJQUwgU01PT1RIIFNDUk9MTAogICAgICAgTGlzdGVuIHRvIHdoZWVsICsgdG91Y2gsIGFkdmFuY2UgdGhlIGFjdHVhbCB3aW5kb3cuc2Nyb2xsWSB0b3dhcmQgYSB0YXJnZXQgd2l0aCBlYXNpbmcuICovCiAgICBsZXQgdGFyZ2V0ID0gd2luZG93LnNjcm9sbFk7CiAgICBsZXQgY3VycmVudCA9IHdpbmRvdy5zY3JvbGxZOwogICAgbGV0IHJhZklkID0gbnVsbDsKICAgIGNvbnN0IGVhc2UgPSAwLjA4NTsKICAgIGNvbnN0IG1pbkRlbHRhID0gMC41OwogICAgY29uc3QgaXNGb3JtRmllbGQgPSAoZWwpPT57CiAgICAgIGlmKCFlbCkgcmV0dXJuIGZhbHNlOwogICAgICBjb25zdCB0ID0gZWwudGFnTmFtZTsKICAgICAgcmV0dXJuIHQ9PT0nSU5QVVQnIHx8IHQ9PT0nVEVYVEFSRUEnIHx8IHQ9PT0nU0VMRUNUJyB8fCBlbC5pc0NvbnRlbnRFZGl0YWJsZTsKICAgIH07CiAgICBjb25zdCBsb29wID0gKCk9PnsKICAgICAgY29uc3QgZCA9IHRhcmdldCAtIGN1cnJlbnQ7CiAgICAgIGlmKE1hdGguYWJzKGQpIDwgbWluRGVsdGEpewogICAgICAgIGN1cnJlbnQgPSB0YXJnZXQ7CiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIGN1cnJlbnQpOwogICAgICAgIHJhZklkID0gbnVsbDsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgY3VycmVudCArPSBkICogZWFzZTsKICAgICAgd2luZG93LnNjcm9sbFRvKDAsIGN1cnJlbnQpOwogICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShsb29wKTsKICAgIH07CiAgICBjb25zdCBraWNrID0gKCk9PnsgaWYocmFmSWQgPT09IG51bGwpIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApOyB9OwogICAgY29uc3QgbWF4U2Nyb2xsID0gKCk9PiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gd2luZG93LmlubmVySGVpZ2h0OwogICAgbGV0IHVzZXJJbnRlcnJ1cHRpbmcgPSBmYWxzZTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIChlKT0+ewogICAgICBpZihpc0Zvcm1GaWVsZChlLnRhcmdldCkpIHJldHVybjsKICAgICAgLy8gaG9ub3IgbW9kaWZpZXJzICh6b29tLCBob3Jpem9udGFsKQogICAgICBpZihlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSByZXR1cm47CiAgICAgIC8vIHByZXZlbnQgdGhlIG5hdGl2ZSBpbnN0YW50IGp1bXAKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAvLyBzeW5jIGN1cnJlbnQgaWYgdXNlciBqdXN0IHNjcm9sbGVkIHdpdGggYXJyb3cga2V5cyAvIHNjcm9sbGJhcgogICAgICBpZihNYXRoLmFicyh3aW5kb3cuc2Nyb2xsWSAtIGN1cnJlbnQpID4gNCl7IGN1cnJlbnQgPSB3aW5kb3cuc2Nyb2xsWTsgdGFyZ2V0ID0gY3VycmVudDsgfQogICAgICAvLyBhY2NlbGVyYXRlIHBlciBkZWx0YTsgbGluZS1tb2RlIGRlbHRhcyAoZS5kZWx0YU1vZGU9PT0xKSBuZWVkIHNjYWxpbmcKICAgICAgY29uc3Qgc2NhbGUgPSBlLmRlbHRhTW9kZSA9PT0gMSA\/IDE4IDogKGUuZGVsdGFNb2RlID09PSAyID8gd2luZG93LmlubmVySGVpZ2h0IDogMSk7CiAgICAgIHRhcmdldCArPSBlLmRlbHRhWSAqIHNjYWxlICogMC45OwogICAgICB0YXJnZXQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihtYXhTY3JvbGwoKSwgdGFyZ2V0KSk7CiAgICAgIGtpY2soKTsKICAgIH0sIHtwYXNzaXZlOmZhbHNlfSk7CiAgICAvLyBUb3VjaCDigJQga2VlcCBuYXRpdmUgbW9tZW50dW0gKG1vYmlsZSkKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKCk9PnsgdXNlckludGVycnVwdGluZyA9IHRydWU7IHRhcmdldCA9IHdpbmRvdy5zY3JvbGxZOyBjdXJyZW50ID0gd2luZG93LnNjcm9sbFk7IH0sIHtwYXNzaXZlOnRydWV9KTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsICAgKCk9PnsgdXNlckludGVycnVwdGluZyA9IGZhbHNlOyB9KTsKICAgIC8vIEtleWJvYXJkIChzcGFjZSwgcGFnZSB1cC9kb3duLCBhcnJvd3MsIGhvbWUvZW5kKQogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSk9PnsKICAgICAgaWYoaXNGb3JtRmllbGQoZS50YXJnZXQpKSByZXR1cm47CiAgICAgIGNvbnN0IHZoID0gd2luZG93LmlubmVySGVpZ2h0OwogICAgICBsZXQgZGVsdGEgPSAwOwogICAgICBzd2l0Y2goZS5rZXkpewogICAgICAgIGNhc2UgJ0Fycm93RG93bic6IGRlbHRhID0gODA7IGJyZWFrOwogICAgICAgIGNhc2UgJ0Fycm93VXAnOiAgIGRlbHRhID0gLTgwOyBicmVhazsKICAgICAgICBjYXNlICdQYWdlRG93bic6ICBkZWx0YSA9IHZoICogMC44NTsgYnJlYWs7CiAgICAgICAgY2FzZSAnUGFnZVVwJzogICAgZGVsdGEgPSAtdmggKiAwLjg1OyBicmVhazsKICAgICAgICBjYXNlICcgJzogICAgICAgICBkZWx0YSA9IGUuc2hpZnRLZXkgPyAtdmgqMC44NSA6IHZoKjAuODU7IGJyZWFrOwogICAgICAgIGNhc2UgJ0hvbWUnOiAgICAgIHRhcmdldCA9IDA7IGN1cnJlbnQgPSB3aW5kb3cuc2Nyb2xsWTsga2ljaygpOyBlLnByZXZlbnREZWZhdWx0KCk7IHJldHVybjsKICAgICAgICBjYXNlICdFbmQnOiAgICAgICB0YXJnZXQgPSBtYXhTY3JvbGwoKTsgY3VycmVudCA9IHdpbmRvdy5zY3JvbGxZOyBraWNrKCk7IGUucHJldmVudERlZmF1bHQoKTsgcmV0dXJuOwogICAgICAgIGRlZmF1bHQ6IHJldHVybjsKICAgICAgfQogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGlmKE1hdGguYWJzKHdpbmRvdy5zY3JvbGxZIC0gY3VycmVudCkgPiA0KXsgY3VycmVudCA9IHdpbmRvdy5zY3JvbGxZOyB0YXJnZXQgPSBjdXJyZW50OyB9CiAgICAgIHRhcmdldCA9IE1hdGgubWF4KDAsIE1hdGgubWluKG1heFNjcm9sbCgpLCB0YXJnZXQgKyBkZWx0YSkpOwogICAgICBraWNrKCk7CiAgICB9KTsKICB9CgogIC8qIDcpIEN1c3RvbSBzbW9vdGgtc2Nyb2xsIGZvciBpbi1wYWdlIGFuY2hvcnMgKHNsb3dlciwgZ3JhY2VmdWwpICovCiAgY29uc3QgZWFzZU91dFF1aW50ID0gdCA9PiAxIC0gTWF0aC5wb3coMSAtIHQsIDUpOwogIGNvbnN0IHNtb290aFNjcm9sbFRvID0gKHRhcmdldFksIGR1cmF0aW9uPTEzMDApPT57CiAgICBjb25zdCBzdGFydFkgPSB3aW5kb3cuc2Nyb2xsWTsKICAgIGNvbnN0IGRpc3QgPSB0YXJnZXRZIC0gc3RhcnRZOwogICAgaWYoTWF0aC5hYnMoZGlzdCkgPCA0KSByZXR1cm47CiAgICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpOwogICAgY29uc3Qgc3RlcCA9IChub3cpPT57CiAgICAgIGNvbnN0IHAgPSBNYXRoLm1pbigxLCAobm93IC0gdDApIC8gZHVyYXRpb24pOwogICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgc3RhcnRZICsgZGlzdCAqIGVhc2VPdXRRdWludChwKSk7CiAgICAgIGlmKHAgPCAxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICB9OwogICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogIH07CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmXj0iIyJdJykuZm9yRWFjaChhPT57CiAgICBhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpPT57CiAgICAgIGNvbnN0IGhyZWYgPSBhLmdldEF0dHJpYnV0ZSgnaHJlZicpOwogICAgICBpZighaHJlZiB8fCBocmVmID09PSAnIycpIHJldHVybjsKICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihocmVmKTsKICAgICAgaWYoIXRhcmdldCkgcmV0dXJuOwogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGNvbnN0IGhlYWRlck9mZnNldCA9IDcwOwogICAgICBjb25zdCB5ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gaGVhZGVyT2Zmc2V0OwogICAgICBpZihyZWR1Y2VkKSB3aW5kb3cuc2Nyb2xsVG8oMCwgeSk7CiAgICAgIGVsc2Ugc21vb3RoU2Nyb2xsVG8oeSwgMTQwMCk7CiAgICB9KTsKICB9KTsKfSkoKTsKCjsKCihmdW5jdGlvbigpewogIGlmKHR5cGVvZiBMID09PSAndW5kZWZpbmVkJykgcmV0dXJuOwogIGNvbnN0IG1hcEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhdHRpLW1hcCcpOwogIGlmKCFtYXBFbCkgcmV0dXJuOwogIC8vIFNhbiBQaWV0cm8gaW4gQ2FyaWFubyAoYXBwcm94IGNlbnRyZSkKICBjb25zdCBMQVQgPSA0NS41MjIzLCBMTkcgPSAxMC44NTgwOwogIGNvbnN0IG1hcCA9IEwubWFwKG1hcEVsLCB7CiAgICBjZW50ZXI6W0xBVCwgTE5HXSwKICAgIHpvb206MTQsCiAgICBzY3JvbGxXaGVlbFpvb206ZmFsc2UsCiAgICB6b29tQ29udHJvbDp0cnVlLAogICAgYXR0cmlidXRpb25Db250cm9sOnRydWUsCiAgfSk7CiAgTC50aWxlTGF5ZXIoJ2h0dHBzOi8vdGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLCB7CiAgICBtYXhab29tOjE5LAogICAgYXR0cmlidXRpb246JyZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHQiPk9wZW5TdHJlZXRNYXA8L2E+JwogIH0pLmFkZFRvKG1hcCk7CiAgY29uc3QgcGluSHRtbCA9ICc8ZGl2IGNsYXNzPSJjb3QtcGluIj4nKwogICAgJzxkaXYgY2xhc3M9ImNvdC1waW4tYm9keSI+PC9kaXY+JysKICAgICc8ZGl2IGNsYXNzPSJjb3QtcGluLW1hcmsiPjwvZGl2PicrCiAgICAnPGRpdiBjbGFzcz0iY290LXBpbi1wdWxzZSI+PC9kaXY+JysKICAgICc8L2Rpdj4nOwogIGNvbnN0IGNvdEljb24gPSBMLmRpdkljb24oe2NsYXNzTmFtZTonY290LXBpbi13cmFwJywgaHRtbDpwaW5IdG1sLCBpY29uU2l6ZTpbNDYsNjBdLCBpY29uQW5jaG9yOlsyMyw2MF19KTsKICBMLm1hcmtlcihbTEFULExOR10sIHtpY29uOmNvdEljb259KS5hZGRUbyhtYXApCiAgICAuYmluZFBvcHVwKCc8c3Ryb25nPkNvdHRpbmkgMTkyNTwvc3Ryb25nPjxicj5TYW4gUGlldHJvIGluIENhcmlhbm8gwrcgVmVyb25hJyk7CiAgLy8gRW5hYmxlIHpvb20gb24gY2xpY2sgKFVYIG5pY2V0eSkKICBtYXAub24oJ2NsaWNrJywgKCk9PnsgbWFwLnNjcm9sbFdoZWVsWm9vbS5lbmFibGUoKTsgfSk7Cn0pKCk7Cgo7CgooZnVuY3Rpb24oKXsKICBjb25zdCBmb3JtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRhdHRpLWZvcm0nKTsKICBpZighZm9ybSkgcmV0dXJuOwogIGNvbnN0IGZlZWRiYWNrID0gZm9ybS5xdWVyeVNlbGVjdG9yKCcuZm9ybS1mZWVkYmFjaycpOwogIGZvcm0uYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0JywgKGUpPT57CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBpZighZm9ybS5jaGVja1ZhbGlkaXR5KCkpewogICAgICBmZWVkYmFjay50ZXh0Q29udGVudCA9ICdQZXIgZmF2b3JlIGNvbXBsZXRhIGkgY2FtcGkgb2JibGlnYXRvcmkuJzsKICAgICAgZmVlZGJhY2suY2xhc3NMaXN0LmFkZCgnaXMtZXJyb3InKTsKICAgICAgZm9ybS5yZXBvcnRWYWxpZGl0eSgpOwogICAgICByZXR1cm47CiAgICB9CiAgICBmZWVkYmFjay5jbGFzc0xpc3QucmVtb3ZlKCdpcy1lcnJvcicpOwogICAgZmVlZGJhY2sudGV4dENvbnRlbnQgPSAnVGhhbmsgeW91LiBXZSB3aWxsIGdldCBiYWNrIHRvIHlvdSBzaG9ydGx5Lic7CiAgICBmb3JtLnJlc2V0KCk7CiAgfSk7Cn0pKCk7CgovKiBJbCBsaW5rIElUIGRlbCBzZWxldHRvcmUgdmEgcmlzY3JpdHRvIGxhdG8gY2xpZW50OiBXUE1MIHJpc2NyaXZlIGdsaSBocmVmIGludGVybmkKICAgaW4gZmFzZSBkaSBzYWx2YXRhZ2dpbyBlIGxvIHJpbWFwcGVyZWJiZSBzdWxsYSB2ZXJzaW9uZSBpbmdsZXNlLiAqLwooZnVuY3Rpb24oKXt2YXIgbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubGFuZyBhW2RhdGEtaXRdJyk7aWYobCl7bC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBsLmdldEF0dHJpYnV0ZSgnZGF0YS1pdCcpKTt9fSkoKTsKCi8qIC0tLS0gTWVudSBtb2JpbGUgKDI3LzA4LzIwMjYpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIENvc3RydWl0byBpbnRlcmFtZW50ZSBxdWksIGEgcnVudGltZTogaWwgbWFya3VwIGRlbGxlIHBhZ2luZSBub24gY2FtYmlhLAogICBlIGlsIENTUyBsbyBtb3N0cmEgc29sbyBzb3R0byBpIDk2MHB4LiBJbCBkZXNrdG9wIHJlc3RhIGludG9jY2F0by4gICAgICAgKi8KKGZ1bmN0aW9uKCl7CiAgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvdC1idXJnZXInKSkgcmV0dXJuOwogIHZhciBoZWFkZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpdGUtaGVhZGVyJyk7IGlmKCFoZWFkZXIpIHJldHVybjsKICB2YXIgcmlnaHQ9aGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItcmlnaHQnKTsKICB2YXIgbmF2PWhlYWRlci5xdWVyeVNlbGVjdG9yKCcuc2l0ZS1uYXYnKTsKICBpZighcmlnaHR8fCFuYXYpIHJldHVybjsKICB2YXIgRU49KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKXx8JycpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZW4nKT09PTA7CiAgdmFyIEw9e2Fwcmk6RU4\/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<script>(function(){var b=\"KGZ1bmN0aW9uKCl7CiAgdmFyIGJvZHk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxlZ2FsLWJvZHknKTsgdmFyIHRvYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubGVnYWwtdG9jJyk7CiAgaWYoIWJvZHl8fCF0b2MpIHJldHVybjsKICB2YXIgbGlzdD10b2MucXVlcnlTZWxlY3Rvcignb2wnKTsgdmFyIGhzPWJvZHkucXVlcnlTZWxlY3RvckFsbCgnaDInKTsgaWYoIWhzLmxlbmd0aCkgcmV0dXJuOwogIHZhciBsaW5rcz1bXTsKICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGhzLGZ1bmN0aW9uKGgsaSl7CiAgICBpZighaC5pZCkgaC5pZD0nc2V6LScrKGkrMSk7CiAgICB2YXIgbGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsgdmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgYS5ocmVmPScjJytoLmlkOyBhLnRleHRDb250ZW50PWgudGV4dENvbnRlbnQucmVwbGFjZSgvXlxzKlxkK1wuXHMqLywnJyk7CiAgICBhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICB2YXIgeT1oLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCt3aW5kb3cuc2Nyb2xsWS0xMTA7CiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7dG9wOnksYmVoYXZpb3I6J3Ntb290aCd9KTsKICAgICAgaWYoaGlzdG9yeS5yZXBsYWNlU3RhdGUpIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsJycsJyMnK2guaWQpOwogICAgfSk7CiAgICBsaS5hcHBlbmRDaGlsZChhKTsgbGlzdC5hcHBlbmRDaGlsZChsaSk7IGxpbmtzLnB1c2goW2gsYV0pOwogIH0pOwogIHRvYy5oaWRkZW49ZmFsc2U7CiAgdmFyIG1hcms9ZnVuY3Rpb24oKXsKICAgIHZhciBjdXI9bnVsbDsKICAgIGxpbmtzLmZvckVhY2goZnVuY3Rpb24ocCl7IGlmKHBbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wPDE4MCkgY3VyPXA7IH0pOwogICAgbGlua3MuZm9yRWFjaChmdW5jdGlvbihwKXsgcFsxXS5jbGFzc0xpc3QudG9nZ2xlKCdpcy1hY3RpdmUnLCBwPT09Y3VyKTsgfSk7CiAgfTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJyxtYXJrLHtwYXNzaXZlOnRydWV9KTsgbWFyaygpOwp9KSgpOw==\";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 Legal notes Cookie&#10;Policy Which cookies this website uses, what they are for and how to manage your consent at any time. On this page Private areas Trade Area Press Area Where we are San Pietro in Cariano, Verona, Italy Get in [&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-538","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/pages\/538","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/comments?post=538"}],"version-history":[{"count":5,"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/pages\/538\/revisions"}],"predecessor-version":[{"id":584,"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/pages\/538\/revisions\/584"}],"wp:attachment":[{"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/media?parent=538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}