@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');

/* Keeper segue i pastelli di stato richiesti per il progetto, non il teal di TAB.
   Elementi è la tavolozza scelta da Silvio (#2627/6417250099); Archivio Pietra.
   I valori di stato sono in keeper-palette.css; il sito non calcola le fasce.
   Nessuna fascia della demo calcola soglie o governa notifiche dell'app. */
.keeper-page {
  --night: #10141b;
  --paper: #f6f4ee;
  --white: #f7f6f2;
  --muted: #b1b9c5;
  --line: #343b46;
  margin: 0;
  background: var(--night);
  color: var(--white);
  font: 400 16px/1.7 'Plus Jakarta Sans', sans-serif;
  -webkit-font-smoothing: antialiased;
}
.keeper-page *, .keeper-page *::before, .keeper-page *::after { box-sizing: border-box; }
.keeper-page [hidden] { display: none !important; }
.keeper-page a { color: inherit; text-underline-offset: 5px; }
.keeper-page button { font: inherit; cursor: pointer; }
.keeper-page :is(a, button, summary):focus-visible { outline: 3px solid var(--keeper-coming); outline-offset: 5px; }
.keeper-page h1, .keeper-page h2, .keeper-page h3, .keeper-page h4, .keeper-page p { margin: 0; }
.keeper-page h1, .keeper-page h2, .keeper-page h3 { line-height: 1.08; letter-spacing: -.055em; }
.keeper-page h2 { font-size: clamp(2.2rem, 4.6vw, 3.8rem); font-weight: 600; }
.keeper-page h2 span { color: var(--keeper-calm); }
.keeper-page p { color: var(--muted); }
.keeper-page .shell { width: min(1180px, calc(100% - 80px)); margin-inline: auto; }
.skip-link { position: absolute; top: -100px; left: 20px; background: var(--paper); color: var(--keeper-ink) !important; padding: 14px; z-index: 20; }
.skip-link:focus { top: 12px; }
.site-header { border-bottom: 1px solid var(--line); }
.site-header nav { display: flex; align-items: center; min-height: 94px; gap: 40px; }
.brand { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; font-size: 1.08rem; letter-spacing: -.035em; }
.brand b { font-weight: 800; }
.keeper-page .brand img { border-radius: 9px; }
.nav-links { display: flex; gap: 28px; margin-left: auto; font-size: .81rem; }
.nav-links a { text-decoration: none; color: var(--muted); }
.family-link { font-size: .79rem; border: 1px solid #505968; border-radius: 999px; padding: 11px 18px; text-decoration: none; white-space: nowrap; }
.family-link span { margin-left: 15px; }
.hero { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 9%; padding-block: 85px 95px; }
.eyebrow { font-size: .71rem; text-transform: uppercase; letter-spacing: .13em; color: var(--keeper-done) !important; font-weight: 700; }
.status-dot { display: inline-block; width: 7px; height: 7px; background: var(--keeper-done); border-radius: 50%; margin-right: 8px; }
.hero h1 { font-size: clamp(4.3rem, 7.8vw, 7rem); font-weight: 600; margin: 24px 0 29px; }
.hero h1 span { color: var(--keeper-done); }
.hero-intro { font-size: 1.04rem; max-width: 400px; line-height: 1.85; }
.button { min-height: 52px; display: inline-flex; align-items: center; justify-content: space-between; gap: 32px; padding: 15px 23px; text-decoration: none; font-size: .8rem; font-weight: 700; border-radius: 8px; }
.button-light { background: var(--paper); color: var(--keeper-ink) !important; margin-top: 29px; }
.hero-note { font-size: .73rem; margin-top: 23px !important; }
.timeline-poster { margin: 0; background: var(--paper); color: var(--keeper-ink); border-radius: 22px; padding: 29px 30px 20px; position: relative; box-shadow: 0 24px 80px #0005; transform: rotate(2deg); }
.poster-top { display: flex; align-items: center; justify-content: space-between; padding-bottom: 22px; border-bottom: 1px solid #c2c3c4; }
.tiny-brand { font-size: .58rem; letter-spacing: .14em; font-weight: 700; }
.poster-dot { width: 17px; height: 17px; border-radius: 50%; background: var(--keeper-near); border: 1px solid #1a1d2760; }
.poster-heading { display: flex; justify-content: space-between; align-items: center; margin-block: 22px 25px; font-size: 1.65rem; font-weight: 600; line-height: 1.15; letter-spacing: -.05em; }
.poster-date { text-align: right; font-size: 2.9rem; line-height: .9; font-weight: 500; }
.poster-date small { display: block; font-size: .5rem; letter-spacing: .12em; margin-top: 9px; font-weight: 700; }
.poster-timeline { border-left: 1px solid #89909b; margin-left: 5px; padding-left: 19px; }
.tone-overdue { background: var(--keeper-overdue); }
.tone-near { background: var(--keeper-near); }
.tone-unknown { background: var(--keeper-unknown); }
.tone-neutral { background: var(--keeper-neutral); }
.tone-done { background: var(--keeper-done); }
.tone-archived { background: var(--keeper-archived); }
.tone-calm { background: var(--keeper-calm); }
.timeline-item { padding: 15px 17px 17px; margin-bottom: 14px; border: 1px solid var(--keeper-outline); border-radius: 10px; position: relative; box-shadow: 0 3px 0 #1a1d270a; }
.timeline-item strong { display: block; font-size: 1.08rem; font-weight: 700; letter-spacing: -.04em; margin-block: 5px 3px; }
.timeline-item > span:not(.state-label, .timeline-point, .small-arrow) { display: block; font-size: .66rem; line-height: 1.6; }
.state-label { font-size: 11px; letter-spacing: .07em; text-transform: uppercase; font-weight: 800; }
.timeline-point { position: absolute; left: -25px; top: 23px; width: 10px; height: 10px; background: var(--keeper-ink); border: 2px solid var(--paper); border-radius: 50%; }
.small-arrow { position: absolute; right: 16px; top: 14px; font-size: 1.2rem; }
.timeline-poster figcaption { font-size: .55rem; color: #545861; margin-top: 20px; }
.poster-stamp { position: absolute; right: -27px; bottom: -43px; background: var(--keeper-calm); border: 1px solid #1a1d2780; border-radius: 50%; width: 120px; height: 120px; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; font-size: .57rem; line-height: 1.4; font-weight: 800; letter-spacing: .04em; transform: rotate(-12deg); }
.poster-stamp span { font-size: 1.7rem; margin-top: 2px; line-height: 1; }
.idea-strip { display: flex; justify-content: space-between; gap: 25px; padding-block: 24px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: .73rem; }
.idea-strip b { color: var(--keeper-done); margin-right: 17px; font-weight: 500; }
.section { padding-block: 105px; scroll-margin-top: 25px; }
.story { display: grid; grid-template-columns: 1fr 1fr; gap: 9%; }
.story h2 { margin-top: 22px; }
.story-copy { padding-top: 5px; }
.story-copy > p + p { margin-top: 23px; font-size: .88rem; }
.large-copy { color: var(--white) !important; font-size: 1.5rem; line-height: 1.6; letter-spacing: -.025em; }
.ink-note { display: flex; gap: 18px; align-items: center; margin-top: 30px; }
.ink-note > span { font-size: 2rem; color: var(--keeper-near); }
.ink-note p { color: var(--keeper-near); font-size: .77rem; }
.section-heading { max-width: 700px; }
.section-heading h2 { margin-block: 18px 23px; }
.section-heading > p:last-child { max-width: 590px; font-size: .88rem; }
.demo-section { padding-block: 95px 75px; background: #1c242b; scroll-margin-top: 20px; }
.demo { margin-top: 42px; color: var(--keeper-ink); background: var(--paper); border: 1px solid #a1a6ad; border-radius: 16px; overflow: hidden; }
.demo-toolbar { display: flex; justify-content: space-between; align-items: center; padding: 16px 25px; border-bottom: 1px solid #c4c6c6; min-height: 68px; gap: 20px; }
.demo-label, .sheet-eyebrow { font-size: .6rem; letter-spacing: .12em; font-weight: 800; }
.demo .sheet-eyebrow { color: #545861; }
.reset-button { border: 0; background: transparent; font-size: .7rem !important; color: #414651; min-height: 38px; padding: 6px 0 6px 12px; }
.reset-button span { margin-left: 15px; }
.demo-steps { display: grid; grid-template-columns: repeat(3, 1fr); background: #eeede8; }
.demo-steps button { color: #4c515b; border: 0; border-bottom: 2px solid transparent; background: transparent; padding: 17px 15px; font-size: .78rem; font-weight: 600; min-height: 56px; }
.demo-steps button span { font-size: .6rem; margin-right: 10px; }
.demo-steps button[aria-pressed="true"] { color: var(--keeper-ink); border-bottom-color: var(--keeper-ink); background: var(--paper); }
.demo-body { display: grid; grid-template-columns: 30% 70%; }
.demo-sidebar { padding: 35px 27px; border-right: 1px solid #c4c6c6; }
.demo-record { display: flex; flex-direction: column; padding: 20px; border: 1px solid var(--keeper-outline); border-radius: 10px; margin-top: 20px; }
.demo-record.tone-overdue { border-left: 5px solid var(--keeper-ink); }
.demo-record strong { line-height: 1.35; font-size: 1.15rem; margin-block: 12px 10px; letter-spacing: -.04em; }
.demo-record > span:not(.state-label, .record-line) { font-size: .78rem; }
.record-line { height: 1px; background: #1a1d2740; margin-block: 17px 12px; }
.demo-record small { font-size: .65rem; line-height: 1.6; }
.sidebar-example { margin-top: 13px; border: 1px solid var(--keeper-outline); border-radius: 8px; padding: 13px 17px; }
.sidebar-example span, .sidebar-example small { display: block; }
.sidebar-example span { font-size: .74rem; font-weight: 600; }
.sidebar-example small { font-size: 11px; margin-top: 3px; }
.demo-sidebar .sidebar-note { color: #545861; font-size: .63rem; margin-top: 25px; }
.demo-panels { min-width: 0; }
.demo-panel { padding: 38px 45px; min-height: 505px; }
.demo-panel h3 { font-size: clamp(1.7rem, 3vw, 2.4rem); font-weight: 600; margin: 18px 0 25px; }
.demo-panel > p:not(.sheet-eyebrow) { color: #505560; font-size: .82rem; margin-bottom: 22px; }
.record-details { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-block: 27px; }
.record-details dt { color: #565b64; font-size: .62rem; }
.record-details dd { margin: 8px 0 0; font-size: .85rem; font-weight: 600; }
.personal-note { background: #ece8de; border: 1px solid #b6b3aa; border-radius: 3px 14px 14px 14px; padding: 20px 23px; position: relative; }
.personal-note h4 { font-size: .85rem; margin-bottom: 9px; }
.personal-note p { color: var(--keeper-ink); font-size: .79rem; padding-right: 18px; }
.personal-note small { display: block; color: #565b64; font-size: .6rem; margin-top: 13px; }
.note-pin { position: absolute; right: 15px; top: 12px; font-size: 1.6rem; }
.demo-action { color: var(--paper); background: var(--keeper-ink); border: 0; border-radius: 7px; padding: 14px 20px; display: inline-flex; justify-content: space-between; gap: 28px; align-items: center; font-size: .75rem !important; font-weight: 600 !important; min-height: 49px; margin-top: 25px; }
.demo :is(a, button):focus-visible { outline-color: var(--keeper-ink); }
.reminder-preview { display: flex; align-items: center; gap: 20px; border-block: 1px solid #b6b8ba; padding-block: 22px; }
.reminder-preview > span { font-size: 2.7rem; line-height: 1; }
.reminder-preview strong, .reminder-preview div > span { display: block; }
.reminder-preview strong { font-size: 1rem; font-weight: 600; }
.reminder-preview div > span { font-size: .65rem; color: #545861; margin-top: 5px; }
.demo-panel > .panel-footnote { font-size: .66rem !important; margin-block: 24px 0 !important; }
.demo-panel .action-result { color: #35403a !important; background: #e0e9df; border-left: 3px solid #465b4a; padding: 14px 17px; margin-top: 24px; font-size: .74rem !important; }
.renewal-date { padding: 17px 20px; border: 1px solid #a3a7ad; border-radius: 10px; }
.renewal-date > * { display: block; }
.renewal-date > span { font-size: .66rem; color: #545861; }
.renewal-date strong { margin-block: 7px; font-size: 1.4rem; font-weight: 600; letter-spacing: -.04em; }
.renewal-date small { font-size: .6rem; color: #545861; }
.history-record { margin-top: 25px; padding: 17px 20px; border: 1px solid #506557; border-radius: 10px; }
.history-record > * { display: block; }
.history-record strong { font-size: .9rem; margin-block: 7px; }
.history-record > span:last-child { font-size: .68rem; }
.demo-live { padding: 0 25px; font-size: .7rem; color: #414651 !important; }
.demo-live:not(:empty) { padding-block: 14px; border-top: 1px solid #c4c6c6; }
.demo-caption { max-width: 800px; margin-top: 20px !important; font-size: .68rem; }
.everyday .section-heading { max-width: 780px; }
.everyday-grid { display: grid; gap: 38px; margin-top: 44px; }
.everyday-grid article { display: grid; grid-template-columns: .8fr 1.2fr; gap: 9%; border-top: 1px solid var(--line); padding-top: 30px; scroll-margin-top: 130px; }
.category-number { color: var(--muted); font-size: .61rem; letter-spacing: .1em; }
.everyday-grid h3 { font-size: clamp(1.5rem, 2.5vw, 2rem); font-weight: 600; margin-block: 18px 0; line-height: 1.2; max-width: 320px; }
.everyday-grid p { font-size: .94rem; line-height: 1.85; }
.life-index { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; }
.life-index a { padding: 9px 17px; border: 1px solid var(--line); border-radius: 999px; text-decoration: none; font-size: .8rem; }
.life-index a:hover { border-color: currentColor; }
.life-copy p + p { margin-top: 16px; }
.life-copy .life-example { font-size: .8rem; color: var(--white); border-left: 2px solid var(--keeper-calm); padding-left: 16px; }
.life-boundary { max-width: 700px; margin-top: 36px !important; font-size: .78rem; }
.local-section { display: grid; grid-template-columns: 35% 1fr; gap: 9%; padding: 60px 65px; border: 1px solid #506155; background: #1b2a24; border-radius: 18px; }
.local-section h2 { margin-block: 18px 24px; font-size: clamp(2rem, 3.5vw, 3.2rem); }
.local-section p:not(.eyebrow) { font-size: .83rem; margin-bottom: 16px; }
.local-mark { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 25px; }
.local-mark > span { font-size: .56rem; letter-spacing: .14em; color: var(--keeper-done); }
.little-sheet { width: 125px; height: 157px; border-radius: 9px; background: var(--keeper-done); padding: 30px 20px; transform: rotate(-8deg); color: var(--keeper-ink); }
.little-sheet > span { display: block; border-top: 2px solid var(--keeper-ink); margin-bottom: 14px; }
.little-sheet > span:nth-child(2) { width: 60%; }
.little-sheet > span:nth-child(3) { width: 80%; }
.little-sheet b { font-weight: 500; font-size: 2.7rem; line-height: 1; }
.availability-label { display: inline-block; font-size: .63rem; color: var(--keeper-done); border-bottom: 1px solid #7a9182; padding-bottom: 5px; margin-top: 8px; }
.future-section { display: grid; grid-template-columns: 1fr .85fr; gap: 14%; align-items: center; }
.future-section h2 { margin-block: 22px 26px; }
.future-section p:not(.eyebrow) { font-size: .85rem; }
.future-section .future-boundary { font-size: .7rem !important; padding-left: 17px; border-left: 1px solid #788491; margin-top: 24px; }
.future-paper { background: var(--keeper-unknown); color: var(--keeper-ink); padding: 40px; border-radius: 12px; transform: rotate(-3deg); position: relative; }
.future-paper > span:first-of-type { font-size: .55rem; letter-spacing: .11em; }
.scan-corner { width: 35px; height: 35px; border-left: 2px solid var(--keeper-ink); border-top: 2px solid var(--keeper-ink); margin-bottom: 30px; }
.document-line { height: 5px; width: 55%; background: #7f8392; border-radius: 3px; margin-top: 15px; }
.document-line.long { width: 90%; margin-top: 27px; }
.date-highlight { display: flex; justify-content: space-between; align-items: center; background: var(--keeper-near); border: 1px solid #1a1d2780; border-radius: 6px; padding: 11px 14px; margin: 25px -12px 22px; font-size: .8rem; }
.future-paper > p { color: var(--keeper-ink) !important; font-size: 1.3rem !important; line-height: 1.35; letter-spacing: -.03em; margin-top: 32px; }
.future-tag { position: absolute; bottom: 30px; right: -20px; background: var(--keeper-near); border: 1px solid #1a1d2780; border-radius: 5px; padding: 10px 18px; font-size: .55rem; letter-spacing: .11em; font-weight: 700; transform: rotate(6deg); }
.faq { display: grid; grid-template-columns: .8fr 1.2fr; gap: 10%; border-top: 1px solid var(--line); }
.faq h2 { margin-top: 20px; font-size: 2.6rem; }
.faq details { border-bottom: 1px solid #505b69; }
.faq summary { cursor: pointer; font-size: .86rem; font-weight: 600; padding-block: 20px; padding-right: 14px; }
.faq details p { font-size: .79rem; padding: 0 18px 22px 0; }
.family-section { padding-block: 65px 80px; border-top: 1px solid var(--line); }
.family-section h2 { margin-block: 22px 35px; }
.family-grid { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid #596371; border-radius: 12px; overflow: hidden; }
.family-grid > * { display: flex; flex-direction: column; align-items: flex-start; padding: 27px; text-decoration: none; gap: 24px; }
.family-grid > * + * { border-left: 1px solid #596371; }
.family-grid span:first-child { font-size: .57rem; font-weight: 700; letter-spacing: .13em; color: var(--muted); }
.family-grid strong { font-size: 1.05rem; font-weight: 600; letter-spacing: -.03em; line-height: 1.5; }
.family-grid span:last-child { font-size: .65rem; display: flex; justify-content: space-between; width: 100%; margin-top: auto; }
.family-current { color: var(--keeper-ink); background: var(--keeper-done); }
.family-current span:first-child { color: var(--keeper-ink); }
.site-footer { border-top: 1px solid var(--line); padding-block: 28px 32px; display: flex; align-items: center; justify-content: space-between; gap: 30px; }
.site-footer .brand { font-size: .65rem; letter-spacing: 0; }
.site-footer p { font-size: .57rem; text-align: right; max-width: 370px; }
@media (hover:hover) {
  .nav-links a:hover, .family-link:hover { color: var(--white); }
  .button-light:hover { background: var(--keeper-done); }
  .family-grid a:hover { background: #222c35; }
  .demo-action:hover { background: #343b46; }
}
@media (max-width:1000px) {
  .keeper-page .shell { width: calc(100% - 56px); }
  .hero { gap: 7%; }
  .hero h1 { font-size: clamp(3.8rem, 8vw, 6rem); }
  .timeline-poster { padding: 24px; }
  .poster-heading { font-size: 1.4rem; }
  .poster-stamp { right: -12px; width: 105px; height: 105px; }
  .story, .future-section { gap: 8%; }
  .demo-sidebar { padding: 30px 20px; }
  .demo-panel { padding: 32px; }
  .everyday-grid { gap: 30px; }
  .local-section { padding: 45px; gap: 7%; }
  .nav-links { gap: 20px; }
  .site-header nav { gap: 25px; }
}
@media (max-width:700px) {
  .keeper-page .shell { width: calc(100% - 40px); }
  .site-header nav { min-height: 80px; gap: 14px; flex-wrap: wrap; padding-block: 18px; }
  .brand { font-size: 1rem; }
  .brand img { width: 33px; height: 33px; }
  .family-link { margin-left: auto; font-size: .67rem; padding: 8px 12px; }
  .family-link span { margin-left: 6px; }
  .nav-links { width: 100%; order: 2; justify-content: space-between; padding-top: 12px; font-size: .72rem; gap: 12px; }
  .nav-links a { padding-block: 5px; }
  .hero { grid-template-columns: 1fr; gap: 55px; padding-block: 46px 77px; }
  .hero h1 { font-size: clamp(4rem, 16vw, 6.3rem); margin-block: 20px 25px; }
  .hero-intro { font-size: 1rem; max-width: 390px; }
  .eyebrow { font-size: .61rem; letter-spacing: .1em; }
  .hero-note { font-size: .7rem; }
  .timeline-poster { width: calc(100% - 18px); margin: 0 auto; padding: 24px; max-width: 430px; transform: rotate(1deg); }
  .poster-heading { font-size: 1.6rem; }
  .timeline-item { padding-block: 14px 16px; }
  .poster-stamp { width: 100px; height: 100px; bottom: -39px; right: -11px; font-size: .48rem; }
  .idea-strip { flex-direction: column; gap: 15px; padding-block: 23px; }
  .section { padding-block: 65px; }
  .story { grid-template-columns: 1fr; gap: 32px; }
  .keeper-page h2 { font-size: clamp(2.2rem, 9.3vw, 3.4rem); }
  .large-copy { font-size: 1.3rem; }
  .demo-section { padding-block: 60px 45px; }
  .demo-toolbar { padding: 12px 17px; gap: 10px; min-height: 62px; }
  .demo-label { font-size: .49rem; letter-spacing: .08em; }
  .reset-button { font-size: .61rem !important; }
  .demo-steps button { font-size: .64rem; padding: 13px 5px; min-height: 62px; line-height: 1.5; }
  .demo-steps button span { display: block; margin: 0; font-size: .52rem; }
  .demo-body { grid-template-columns: 1fr; }
  .demo-sidebar { padding: 23px; border-right: 0; border-bottom: 1px solid #c4c6c6; }
  .demo-record { margin-top: 12px; padding: 15px 17px; }
  .demo-record strong { margin-block: 8px; font-size: 1.1rem; }
  .record-line { margin-block: 12px 9px; }
  .sidebar-example { display: inline-block; vertical-align: top; width: calc(50% - 4px); padding: 9px 10px; }
  .sidebar-example + .sidebar-example { margin-left: 3px; }
  .sidebar-example span { font-size: .64rem; }
  .sidebar-example small { font-size: .51rem; }
  .demo-sidebar .sidebar-note { margin-top: 12px; font-size: .57rem; }
  .sidebar-note br { display: none; }
  .demo-panel { padding: 27px 23px 32px; min-height: 480px; }
  .demo-panel h3 { font-size: 1.85rem; margin-block: 16px 23px; }
  .record-details { gap: 15px; grid-template-columns: 1fr; }
  .record-details dd { margin-top: 4px; }
  .personal-note { padding: 17px; }
  .demo-action { width: 100%; }
  .reminder-preview { gap: 14px; }
  .reminder-preview strong { font-size: .92rem; }
  .demo-caption { font-size: .62rem; }
  .everyday-grid { gap: 36px; margin-top: 32px; }
  .everyday-grid article { grid-template-columns: 1fr; gap: 18px; padding-top: 25px; }
  .everyday-grid h3 { margin-block: 15px 12px; }
  .local-section { grid-template-columns: 1fr; padding: 36px 25px; gap: 32px; }
  .local-mark { align-items: flex-start; gap: 18px; }
  .little-sheet { width: 75px; height: 95px; padding: 20px 13px; }
  .little-sheet > span { margin-bottom: 8px; }
  .little-sheet b { font-size: 1.5rem; }
  .future-section { grid-template-columns: 1fr; gap: 45px; }
  .future-paper { width: calc(100% - 28px); margin-inline: auto; max-width: 360px; padding: 32px; }
  .future-tag { right: -12px; }
  .faq { grid-template-columns: 1fr; gap: 25px; }
  .faq summary { font-size: .8rem; padding-block: 20px; }
  .family-section { padding-block: 45px; }
  .family-grid { grid-template-columns: 1fr; }
  .family-grid > * { padding: 25px; gap: 16px; }
  .family-grid > * + * { border-left: 0; border-top: 1px solid #596371; }
  .site-footer { flex-direction: column; align-items: flex-start; gap: 18px; }
  .site-footer p { text-align: left; max-width: 300px; line-height: 1.8; }
}
@media (prefers-reduced-motion: no-preference) {
  .button, .family-grid a { transition: background-color .18s ease; }
  .has-demo .demo-panel:not([hidden]) { animation: keeper-reveal .25s ease both; }
  @keyframes keeper-reveal { from { opacity: .5; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
}

/* Le anteprime dell'app sono sempre dentro un telefonino (richiesta Silvio26/10). */
.keeper-page .hero { padding-block:60px 75px;gap:8%; }
.hero-phone { justify-self:center; }
.hero-phone .device-screen { height:620px; }
.app-timeline { padding:10px 16px 16px;flex:1; }
.app-today { font-size:10px;color:#565b64!important;margin:0 0 17px!important; }
.app-timeline .timeline-item { padding:15px 14px;margin-bottom:12px; }
.app-timeline .timeline-item strong { font-size:15px; }
.app-timeline .timeline-item>span:not(.state-label) { font-size:11px; }
.app-timeline .state-label { font-size:9px; }
.demo { background:#202a32;color:var(--white);border-color:#596674; }
.demo-toolbar { border-color:#596674; }
.demo-toolbar .reset-button { color:var(--white); }
.demo-steps { background:#182129; }
.demo-steps button { color:#c3cbd5;border-bottom-color:transparent; }
.demo-steps button[aria-pressed="true"] { background:#303f49;color:#fff;border-bottom-color:var(--keeper-coming); }
.demo-body { display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:40px 35px;align-items:start; }
.demo-body .phone-preview { width:min(100%,330px);justify-self:center; }
.demo .device-screen { height:650px; }
.demo .device-app-heading { padding-bottom:12px; }
.demo-sidebar { padding:17px 18px;overflow:auto;border:0;flex:1; }
.demo-record { margin-top:14px;padding:16px; }
.demo-record strong { font-size:18px; }
.demo-sidebar .sidebar-example { width:auto;display:block;margin-left:0;font-size:12px; }
.demo-sidebar .sidebar-note { font-size:11px; }
.demo-panels { flex:1;overflow-y:auto;scrollbar-width:thin; }
.demo-panel { padding:21px 18px 28px;min-height:0; }
.demo-panel h3 { font-size:23px;line-height:1.15;margin:15px 0 22px; }
.demo-panel>p:not(.sheet-eyebrow) { font-size:12px; }
.demo-panel .sheet-eyebrow { font-size:9px; }
.demo-panel .record-details { grid-template-columns:1fr;gap:14px;margin-block:22px; }
.demo-panel .record-details dd { font-size:13px;margin-top:3px; }
.demo-panel .personal-note { padding:17px; }
.demo-panel .personal-note p { font-size:12px; }
.demo-panel .demo-action { width:100%;font-size:11px!important;gap:15px; }
.demo-panel .reminder-preview { gap:13px; }
.demo-panel .reminder-preview strong { font-size:14px; }
.demo-panel .reminder-preview div>span { font-size:10px; }
.demo-panel .renewal-date strong { font-size:20px; }
.demo .demo-live { color:#e0e6eb!important;border-color:#596674; }
.demo .device-screen :is(button,a):focus-visible { outline-color:var(--keeper-ink); }
.future-phone { justify-self:center;width:min(100%,310px); }
.future-phone .device-screen { height:575px; }
.future-phone .future-paper { transform:none;background:transparent;padding:25px 23px;margin:0;flex:1;width:auto;box-shadow:none; }
.future-phone .future-tag { right:18px;bottom:22px;transform:none; }
.local-mark .little-sheet { transform:none;border:6px solid #11171b;border-radius:16px;box-shadow:0 0 0 1px #6b7a72; }
@media(max-width:900px){.demo-body{gap:22px;padding:32px 20px}.demo-body .phone-preview{width:min(100%,310px)}}
@media(max-width:700px){
 .keeper-page .hero{gap:42px;padding-block:44px 55px}
 .hero-phone{width:min(100%,310px)}
 .hero-phone .device-screen{height:620px}
 .demo-body{grid-template-columns:1fr;padding:28px 14px}
 .demo-timeline-phone{display:none!important}
 .demo-body .demo-detail-phone{width:min(100%,330px)}
 .demo .device-screen{height:650px}
 .demo-panel{padding:22px 17px 28px}
 .future-phone{width:min(100%,300px)}
}

.horizon-story{display:grid;grid-template-columns:1.2fr .8fr;gap:10%;align-items:center;border-top:1px solid var(--line)}.horizon-copy>p:not(.eyebrow){max-width:500px}.horizon-narrative{display:grid;gap:10px;margin-top:28px}.horizon-narrative button{text-align:left;border:1px solid #596371;border-radius:14px;padding:18px 20px;color:#d5dce4;background:#19212b;cursor:pointer}.horizon-narrative button[aria-pressed=true]{border-color:var(--keeper-done);background:#1a1d27}.horizon-narrative button>span{display:block;font:600 9px/1.5 'Plus Jakarta Sans',sans-serif;color:var(--keeper-done);letter-spacing:.1em}.horizon-narrative strong{display:block;font:600 19px/1.4 'Plus Jakarta Sans',sans-serif;margin:6px 0}.horizon-narrative small{display:block;font:400 11px/1.7 'Plus Jakarta Sans',sans-serif;color:#c2c9d3}.horizon-boundary{font-size:11px!important;line-height:1.7!important;margin-top:20px!important;color:#b3bdc9!important}.horizon-phone{justify-self:center}.horizon-phone .device-screen{height:650px}.horizon-story h2{font-size:clamp(2.3rem,4vw,3.6rem)}.hero-phone .timeline-flow{padding-inline:17px}.hero-phone .timeline-event strong,.horizon-phone .timeline-event strong{font-size:13px}.hero-phone .timeline-event>div>small,.horizon-phone .timeline-event>div>small{font-size:10px}.hero-phone .timeline-group>p,.horizon-phone .timeline-group>p{font-size:11px!important}.hero-phone .timeline-overdue strong,.horizon-phone .timeline-overdue strong{font-size:14px}.hero-phone .timeline-overdue small,.horizon-phone .timeline-overdue small{font-size:10px}.hero-phone .timeline-overdue>span,.horizon-phone .timeline-overdue>span{font-size:12px}.horizon-phone .timeline-today,.hero-phone .timeline-today{font-size:10px!important}.hero-phone .timeline-zoom button,.horizon-phone .timeline-zoom button{font-size:12px}.hero-phone .chrome-title,.horizon-phone .chrome-title{font-size:12px}.keeper-page .preview-bottom{margin-top:12px}.demo .preview-bottom{margin-top:8px}.future-phone .future-paper{min-height:0;overflow:auto}
.mobile-horizon-cue{display:none}@media(max-width:760px){.horizon-story{grid-template-columns:1fr;gap:24px}.horizon-narrative{display:none}.mobile-horizon-cue{display:block;margin-bottom:8px;color:#f0f2f5;font-size:14px;font-weight:700;line-height:1.5}.horizon-boundary{margin-top:16px!important}.horizon-phone{width:min(100%,320px)}.horizon-phone .device-screen{height:650px}}

/* Il movimento del simbolo si avvia una sola volta quando entra in vista. */
.symbol-story { display:grid; grid-template-columns:1fr 1fr; gap:10%; align-items:center; border-top:1px solid var(--line); }
.symbol-figure { margin:0; width:min(100%,410px); justify-self:center; }
.symbol-stage { overflow:hidden; border-radius:32px; background:#F0F2F5; box-shadow:0 24px 70px #0004; aspect-ratio:1; }
.symbol-art { display:block; width:100%; height:100%; }
.symbol-figure figcaption { margin-top:15px; color:var(--muted); font-size:.7rem; line-height:1.7; }
.symbol-copy > p:not(.eyebrow) { max-width:430px; margin-top:24px; }
.symbol-copy h2 { margin-top:17px; }
.symbol-replay { display:inline-flex; gap:22px; align-items:center; margin-top:30px; padding:12px 18px; border:1px solid #73808d; border-radius:999px; background:transparent; color:var(--white); font-size:.75rem !important; font-weight:700 !important; }
.symbol-replay:hover { background:#26313c; }
@media(max-width:760px) {
  .symbol-story { grid-template-columns:1fr; gap:32px; }
  .symbol-figure { width:min(100%,300px); }
  .symbol-copy h2 { font-size:clamp(2.2rem,9vw,3.5rem); }
}
@media(prefers-reduced-motion:no-preference) {
  .symbol-stage.is-playing .symbol-path { stroke-dasharray:100; animation:keeper-trace 1.55s cubic-bezier(.22,.7,.18,1) both; }
  .symbol-stage.is-playing .symbol-stop { transform-box:fill-box; transform-origin:center; animation:keeper-stop .38s ease-out both; }
  .symbol-stage.is-playing .symbol-stop-first { animation-delay:.38s; }
  .symbol-stage.is-playing .symbol-stop-last { animation-delay:1.08s; }
  .symbol-stage.is-playing .symbol-center { transform-box:fill-box; transform-origin:center; animation:keeper-center .56s ease-out .72s both; }
  @keyframes keeper-trace { from { stroke-dashoffset:100; } to { stroke-dashoffset:0; } }
  @keyframes keeper-stop { from { opacity:0; transform:scale(.35); } to { opacity:1; transform:scale(1); } }
  @keyframes keeper-center { from { opacity:0; transform:scale(.75); } to { opacity:1; transform:scale(1); } }
}
