{"id":536,"date":"2026-05-25T09:43:22","date_gmt":"2026-05-25T07:43:22","guid":{"rendered":"https:\/\/www.cottinivini.com\/?page_id=536"},"modified":"2026-10-01T15:13:37","modified_gmt":"2026-10-01T13:13:37","slug":"privacy-policy","status":"publish","type":"page","link":"https:\/\/www.cottinivini.com\/en\/privacy-policy\/","title":{"rendered":"Privacy Policy"},"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\/privacy-policy\/\" data-it=\"\/privacy-policy\/\">IT<\/a><span class=\"sep\">\u00b7<\/span><a class=\"active\" href=\"https:\/\/www.cottinivini.com\/en\/privacy-policy\/\">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>Privacy&#10;Policy<\/h1>\n    <\/div>\n    <p class=\"sost-lede anim-fade\" data-delay=\"500\">\n      This page informs you of our policies regarding the collection, use and disclosure of personal information when you use our service.\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<p>We will not use or share your information with anyone except as described in this Privacy Policy.<\/p>\n<p>We use your personal information to provide and improve the service. By using the Service, you agree to the collection and use of information in accordance with this policy.<\/p>\n\n<h2>Information collection and use<\/h2>\n<p>While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you. Personally identifiable information (\u201cPersonal Information\u201d) may include, but is not limited to:<\/p>\n<ul>\n<li>Name<\/li>\n<li>Email address<\/li>\n<li>Phone number<\/li>\n<li>Log data<\/li>\n<\/ul>\n<p>We collect information that your browser sends whenever you visit our Service (\u201cLog Data\u201d). This Log Data may include information such as your computer\u2019s Internet Protocol (\u201cIP\u201d) address, browser type, browser version, the pages of our Service that you visit, the time and date of your visit, the time spent on those pages and other statistics.<\/p>\n\n<h2>Cookies<\/h2>\n<p>Cookies are files with a small amount of data, which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your computer\u2019s hard drive.<\/p>\n<p>We use \u201ccookies\u201d to collect information. You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some parts of our Service. For details of the cookies used by this website, please see our <a href=\"https:\/\/www.cottinivini.com\/en\/cookie-policy-eu\/\">Cookie Policy<\/a>.<\/p>\n\n<h2>Service providers<\/h2>\n<p>We may employ third-party companies and individuals to facilitate our Service, to provide the Service on our behalf, to perform Service-related services or to assist us in analysing how our Service is used.<\/p>\n<p>These third parties have access to your Personal Information only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose.<\/p>\n\n<h2>Security<\/h2>\n<p>The security of your Personal Information is important to us, but remember that no method of transmission over the Internet or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Information, we cannot guarantee its absolute security.<\/p>\n\n<h2>Links to other sites<\/h2>\n<p>Our Service may contain links to other sites that are not operated by us. If you click on a third-party link, you will be directed to that third party\u2019s site. We strongly advise you to review the Privacy Policy of every site you visit.<\/p>\n<p>We have no control over, and assume no responsibility for, the content, privacy policies or practices of any third-party sites or services.<\/p>\n\n<h2>Changes to this Privacy Policy<\/h2>\n<p>We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.<\/p>\n<p>You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.<\/p>\n\n<h2>Contact us<\/h2>\n<p>If you have any questions about this Privacy Policy, please contact us.<\/p>\n<p class=\"legal-contact\"><strong>Cottini S.p.A.<\/strong><br>San Pietro in Cariano, Verona, Italy<br><a href=\"mailto:info@cottinivini.com\">info@cottinivini.com<\/a> \u00b7 <a href=\"tel:+390456280157\">+39 045 6280157<\/a><\/p>\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 Privacy&#10;Policy This page informs you of our policies regarding the collection, use and disclosure of personal information when you use our service. On this page We will not use or share your information with anyone except as described in [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-536","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/pages\/536","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=536"}],"version-history":[{"count":5,"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/pages\/536\/revisions"}],"predecessor-version":[{"id":583,"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/pages\/536\/revisions\/583"}],"wp:attachment":[{"href":"https:\/\/www.cottinivini.com\/en\/wp-json\/wp\/v2\/media?parent=536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}