
/* CSS del template di login, isolato sotto .appuntoo-login.
   OD-LAYOUT-PRIMITIVES v1 — structure only: display, flex/grid, overflow, wrapping, ratio.
   Put this @layer first; product CSS outside the layer always wins. */
@layer od-layout {
  .appuntoo-login :where(.od-stack,.od-row,.od-row-top,.od-cluster,.od-grid,.od-field,.od-stat,.od-cell,.od-tile) > :where(*) { min-width: 0; }

  /* containers */
  .appuntoo-login .od-stack   { display: flex; flex-direction: column; gap: var(--od-gap, 8px); }
  .appuntoo-login .od-row     { display: flex; align-items: center; gap: var(--od-gap, 8px); }
  .appuntoo-login .od-row-top { display: flex; align-items: flex-start; gap: var(--od-gap, 8px); }
  .appuntoo-login .od-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--od-gap, 8px); }
  .appuntoo-login .od-fill    { flex: 1 1 0; min-width: 0; }
  .appuntoo-login .od-fixed   { flex: none; }
  .appuntoo-login .od-grid    { display: grid; gap: var(--od-gap, 12px); grid-template-columns: repeat(var(--od-cols, 3), minmax(0, 1fr)); }

  /* stacked information: each piece is its own line — never sibling inline spans */
  .appuntoo-login .od-stat,.appuntoo-login .od-field,.appuntoo-login .od-cell { display: grid; gap: var(--od-gap, 2px); }
  .appuntoo-login :where(.od-stat,.od-field,.od-cell) > :where(*) { display: block; }
  .appuntoo-login .od-tile { display: grid; grid-template-rows: auto 1fr; }
  .appuntoo-login :where(.od-tile) > :where(*) { display: block; }

  /* media keeps its intrinsic ratio by default; never a distorted or cropped
     cover by accident. height:auto lets the ratio win over an <img height="…">
     attribute. Cropping to a uniform box is an explicit opt-in: set --od-ratio
     AND add .od-media-cover together (per the core rule, only where a crop is
     deliberate — tile thumbs, decorative fills — never on full-frame content). */
  .appuntoo-login .od-media { display: block; width: 100%; height: auto; aspect-ratio: var(--od-ratio, auto); }
  .appuntoo-login .od-media-cover { object-fit: cover; }

  /* data text only — authored copy is rewritten to its budget instead */
  .appuntoo-login .od-truncate { display: block; max-width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .appuntoo-login .od-clamp-2,.appuntoo-login .od-clamp-3 { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
  .appuntoo-login .od-clamp-2 { -webkit-line-clamp: 2; }
  .appuntoo-login .od-clamp-3 { -webkit-line-clamp: 3; }
  .appuntoo-login .od-lines-2 { min-height: calc(2 * 1.4em); }   /* block-level reservation for a shared baseline */
  .appuntoo-login .od-nowrap  { white-space: nowrap; }           /* 数字+单位 · 价格+起 · 日期+星期 */
  .appuntoo-login .od-keep    { word-break: keep-all; overflow-wrap: anywhere; } /* CJK labels break at spaces / <wbr> first */

  /* screen skeleton (optional): bars take their own space, the middle scrolls — no padding guessed for chrome */
  .appuntoo-login .od-screen { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; height: 100%; }
  .appuntoo-login .od-scroll { overflow-y: auto; overscroll-behavior: contain; min-height: 0; }

  /* horizontal rail: the next item peeks at the edge; trailing room survives overflow */
  .appuntoo-login .od-rail { display: flex; gap: var(--od-gap, 8px); overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none;
             padding-inline: var(--od-rail-pad, 16px); scroll-padding-inline: var(--od-rail-pad, 16px); }
  .appuntoo-login .od-rail::-webkit-scrollbar { display: none; }
  .appuntoo-login :where(.od-rail) > :where(*) { flex: none; scroll-snap-align: start; }
  .appuntoo-login :where(.od-rail) > :where(:last-child) { margin-inline-end: var(--od-rail-pad, 16px); }

  .appuntoo-login .od-spacer { flex: none; visibility: hidden; pointer-events: none; }
  .appuntoo-login .od-touch  { min-width: 44px; min-height: 44px; }
}
/* /OD-LAYOUT-PRIMITIVES v1 */

/* ---------- font: Nunito Sans, dal design system di Appuntoo ---------- */
@font-face{
  font-family:"Nunito Sans";
  font-style:normal;
  font-weight:200 1000;
  font-stretch:100%;
  font-display:swap;
  src:url("/assets/login/fonts/nunito-sans-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Nunito Sans";
  font-style:normal;
  font-weight:200 1000;
  font-stretch:100%;
  font-display:swap;
  src:url("/assets/login/fonts/nunito-sans-latin-ext.woff2") format("woff2");
  unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ---------- token condivisi con la landing Appuntoo ---------- */
.appuntoo-login{
  --brand:#043138;
  --brand-soft:#0d4a55;
  --green:#69df8e;
  --green-strong:#3ec977;
  --surface:#e9f2f4;
  --surface-deep:#d8e3e5;
  --surface-hover:#c9d8dc;
  --hero:#e3eff1;
  --mint:#d7eee3;
  --white:#fff;
  --danger:#e40014;
  --danger-tint:#fef2f2;
  --text-secondary:rgba(4,49,56,.7);
  --border-soft:rgba(4,49,56,.1);
  --border-header:rgba(4,49,56,.05);
  --focus-ring:rgba(4,49,56,.12);
  --header-surface:rgba(255,255,255,.85);
  --shadow-soft:0 8px 30px rgba(4,49,56,.08);
  --page-ground:radial-gradient(120% 95% at 16% 6%, #e6f4ea 0%, #eef4f4 44%, #d6ebde 100%);
  --card-shadow:0 24px 60px rgba(4,49,56,.12);
  --pill:9999px;
  --r-card:16px;
  --r-field:14px;
  --r-menu:24px;
  --r-panel:32px;
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:20px;
  --space-6:24px;
  --space-8:32px;
  --space-10:40px;
  --space-12:48px;
  --space-16:64px;
  --space-24:96px;
  --gutter:12px;
  --stack:12px;
  --panel-padding:24px;
  --content-width:72rem;
  --panel-width:1400px;
  --form-width:25rem;
  --preview-width:28rem;
  --control-height:52px;
  --touch-size:44px;
  --font-sans:"Nunito Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
  --type-small:.875rem;
  --type-body:1rem;
  --type-form:1.75rem;
  --type-hero:1.5rem;
  --weight-normal:400;
  --weight-bold:700;
  --weight-heading:800;
  --line-body:1.6;
  --line-heading:1.2;
  --feedback:150ms;
  --enter:200ms;
  --exit:150ms;
  --ease:cubic-bezier(.4,0,.2,1);
  --ease-enter:cubic-bezier(0,0,.2,1);
  --ease-exit:cubic-bezier(.4,0,1,1);
}
@media (min-width:640px){.appuntoo-login{--gutter:20px;--stack:16px}}
@media (min-width:768px){.appuntoo-login{--panel-padding:40px;--type-hero:1.75rem;--type-form:2rem}}
@media (min-width:1024px){
  .appuntoo-login{
    --gutter:32px;
    --stack:24px;
    --r-panel:44px;
    --panel-padding:64px;
    --type-hero:clamp(2.25rem,3vw,2.5rem);
    --line-heading:1.15;
  }
}

.appuntoo-login *,.appuntoo-login *::before,.appuntoo-login *::after{box-sizing:border-box}
.appuntoo-login{-webkit-text-size-adjust:100%;scroll-padding-top:7rem}
.appuntoo-login{
  margin:0;
  background:var(--white);
  color:var(--brand);
  font-family:var(--font-sans);
  font-size:var(--type-body);
  font-weight:var(--weight-normal);
  line-height:var(--line-body);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
.appuntoo-login img,.appuntoo-login svg{display:block;max-width:100%}
.appuntoo-login a{color:inherit;text-decoration:none;cursor:pointer}
.appuntoo-login button,.appuntoo-login input{font:inherit}
.appuntoo-login button{cursor:pointer;touch-action:manipulation}
.appuntoo-login button,.appuntoo-login a,.appuntoo-login input{ -webkit-tap-highlight-color:transparent}
.appuntoo-login button:disabled{cursor:not-allowed}
.appuntoo-login [hidden]{display:none !important}
.appuntoo-login ::selection{background:rgba(105,223,142,.4)}
.appuntoo-login :focus-visible{outline:3px solid var(--brand);outline-offset:4px}
.appuntoo-login a:focus-visible,.appuntoo-login button:focus-visible,.appuntoo-login summary:focus-visible{border-radius:var(--r-card)}

/* ---------- navbar: proporzioni e token della landing ---------- */
.appuntoo-login .site-header{
  position:sticky;
  top:var(--space-3);
  z-index:50;
  padding-inline:var(--gutter);
}
.appuntoo-login .header-inner{
  max-width:var(--content-width);
  min-height:58px;
  margin-inline:auto;
  display:flex;
  align-items:center;
  justify-content:space-between;
  column-gap:var(--space-2);
  padding:10px var(--space-5);
  border-radius:var(--pill);
  border:1px solid var(--border-header);
  background:var(--header-surface);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  box-shadow:var(--shadow-soft);
}
.appuntoo-login .brand{display:inline-flex;align-items:center;width:max-content}
.appuntoo-login .brand-logo{display:block;width:calc(24px * 614 / 140);height:auto}
@media (min-width:640px){.appuntoo-login .brand-logo{width:calc(28px * 614 / 140)}}
.appuntoo-login .header-actions{display:flex;align-items:center;gap:var(--space-2);flex:none}
.appuntoo-login .header-action{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:36px;
  padding:8px 16px;
  border-radius:var(--pill);
  font-size:var(--type-small);
  line-height:20px;
  font-weight:var(--weight-bold);
  white-space:nowrap;
  transition:background-color var(--feedback) var(--ease),color var(--feedback) var(--ease);
}
.appuntoo-login .header-action-login{color:rgba(4,49,56,.8)}
.appuntoo-login .header-action-trial{padding-inline:20px;background:var(--brand);color:var(--white)}
.appuntoo-login .header-action:focus-visible{border-radius:var(--pill)}
@media (hover:hover){
  .appuntoo-login .header-action-login:hover{background:var(--surface);color:var(--brand)}
  .appuntoo-login .header-action-trial:hover{background:var(--brand-soft)}
}
@media (max-width:374px){
  .appuntoo-login .header-actions{gap:var(--space-1)}
  .appuntoo-login .header-action{padding-inline:8px;font-size:.75rem;line-height:18px}
  .appuntoo-login .header-action-trial{padding-inline:12px}
}

/* ---------- composition: accesso centrato ---------- */
.appuntoo-login .site-main{
  padding-inline:var(--gutter);
  margin-top:var(--stack);
}
.appuntoo-login .hero-panel{
  --doodle-color:rgba(4,49,56,.15);
  --doodle-plus-size:24px;
  --doodle-dots-width:56px;
  --doodle-dots-height:16px;
  --doodle-plus-inset:var(--space-8);
  --doodle-dots-inset:var(--space-8);
  --doodle-plus-top:var(--space-10);
  --doodle-dots-top:var(--space-16);
  position:relative;
  width:100%;
  max-width:var(--panel-width);
  margin-inline:auto;
  border-radius:var(--r-panel);
  background:var(--hero);
  padding:var(--panel-padding);
  padding-top:56px;
}
.appuntoo-login .hero-doodle{position:absolute;color:var(--doodle-color);pointer-events:none}
.appuntoo-login .hero-doodle-plus{top:var(--doodle-plus-top);left:var(--doodle-plus-inset);width:var(--doodle-plus-size);height:var(--doodle-plus-size)}
.appuntoo-login .hero-doodle-dots{top:var(--doodle-dots-top);right:var(--doodle-dots-inset);width:var(--doodle-dots-width);height:var(--doodle-dots-height)}
@media (min-width:1024px){
  .appuntoo-login .hero-panel{--doodle-plus-inset:56px;--doodle-plus-top:56px;--doodle-dots-inset:var(--space-16);padding-top:80px}
}
@media (max-width:767px){
  .appuntoo-login .hero-panel{
    --doodle-dots-top:calc(var(--doodle-plus-top) + (var(--doodle-plus-size) - var(--doodle-dots-height))/2);
    padding-top:calc(var(--space-16) + var(--space-8));
  }
}
.appuntoo-login .hero-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  grid-template-areas:"form";
  gap:0;
  max-width:var(--form-width);
  margin-inline:auto;
  align-items:start;
}

/* ---------- form ---------- */
.appuntoo-login .login-col{grid-area:form;width:100%;max-width:var(--form-width);justify-self:center;min-width:0}
.appuntoo-login .auth-card-grid{max-width:calc(var(--form-width) + 64px)}
.appuntoo-login .auth-card-grid .login-col{max-width:none}
.appuntoo-login .form-title{
  margin:0;
  font-weight:var(--weight-heading);
  font-size:clamp(1.85rem,4.5vw,2.25rem);
  line-height:1.2;
  letter-spacing:-.02em;
  color:var(--brand);
  text-align:center;
  text-wrap:balance;
}
.appuntoo-login .form-sub{margin:var(--space-3) 0 0;font-size:var(--type-body);font-weight:var(--weight-normal);color:var(--text-secondary);text-align:center}
.appuntoo-login .form{margin-top:var(--space-8);display:grid;gap:var(--space-6);text-align:left}
.appuntoo-login .reset-form{gap:var(--space-4)}
.appuntoo-login .field{--od-gap:var(--space-2);display:grid;gap:var(--space-2)}
.appuntoo-login .field label{font-size:var(--type-small);font-weight:var(--weight-bold);color:var(--brand)}
.appuntoo-login .control{
  --control-fill:var(--white);
  display:flex;
  align-items:center;
  gap:var(--space-2);
  min-height:var(--control-height);
  padding-left:var(--space-4);
  background:var(--control-fill);
  border:1px solid var(--surface-deep);
  border-radius:var(--r-field);
}
.appuntoo-login .field-icon{flex:none;width:var(--space-5);height:var(--space-5);color:var(--text-secondary)}
@media (hover:hover){.appuntoo-login .control:hover{border-color:var(--text-secondary)}}
.appuntoo-login .control:focus-within{border-color:var(--brand);box-shadow:0 0 0 4px var(--focus-ring)}
.appuntoo-login .control.has-error{--control-fill:var(--danger-tint);border-color:var(--danger);background:var(--control-fill)}
.appuntoo-login .control.has-error:focus-within{box-shadow:0 0 0 4px rgba(228,0,20,.1)}
.appuntoo-login .control input{
  display:block;
  flex:1 1 0;
  min-width:0;
  width:100%;
  min-height:calc(var(--control-height) - 2px);
  border:0;
  background:transparent;
  padding:var(--space-3) var(--space-4) var(--space-3) 0;
  border-radius:inherit;
  font:inherit;
  font-size:var(--type-body);
  line-height:1.5;
  font-weight:var(--weight-normal);
  color:var(--brand);
}
.appuntoo-login .control input::placeholder{color:var(--text-secondary);opacity:1}
.appuntoo-login .control input:focus,.appuntoo-login .control input:focus-visible{outline:none}
.appuntoo-login .control input:-webkit-autofill,
.appuntoo-login .control input:-webkit-autofill:hover,
.appuntoo-login .control input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--brand);
  caret-color:var(--brand);
  -webkit-box-shadow:inset 0 0 0 1000px var(--control-fill);
  box-shadow:inset 0 0 0 1000px var(--control-fill);
}
.appuntoo-login .control input:autofill{
  caret-color:var(--brand);
  box-shadow:inset 0 0 0 1000px var(--control-fill);
}
.appuntoo-login .password-toggle{
  flex:none;
  display:grid;
  place-items:center;
  width:var(--touch-size);
  height:var(--touch-size);
  margin-right:var(--space-1);
  padding:0;
  border:0;
  background:transparent;
  color:var(--text-secondary);
  border-radius:var(--pill);
}
.appuntoo-login .password-toggle svg{
  grid-area:1/1;
  width:var(--space-5);
  height:var(--space-5);
  transition:opacity var(--feedback) var(--ease-enter),transform var(--feedback) var(--ease-enter);
}
.appuntoo-login .password-toggle .icon-eye-off{opacity:0;transform:scale(.82)}
.appuntoo-login .password-toggle[aria-pressed="true"] .icon-eye{opacity:0;transform:scale(.82)}
.appuntoo-login .password-toggle[aria-pressed="true"] .icon-eye-off{opacity:1;transform:scale(1)}
@media (hover:hover){.appuntoo-login .password-toggle:hover:not(:disabled){color:var(--brand);background:var(--surface)}}
.appuntoo-login .field-error{margin:0;font-size:var(--type-small);font-weight:var(--weight-bold);line-height:1.5;color:var(--danger)}
.appuntoo-login .field-error:empty{display:none}
.appuntoo-login .reset-turnstile{display:grid;justify-items:center;gap:var(--space-2)}
.appuntoo-login .reset-turnstile ngx-turnstile{max-width:100%}
.appuntoo-login .link-subtle{
  display:inline-flex;
  align-items:center;
  min-height:var(--touch-size);
  font-size:var(--type-small);
  font-weight:var(--weight-bold);
  color:var(--brand);
  text-decoration:none;
}
.appuntoo-login .forgot-row{display:flex;justify-content:flex-end;margin-top:var(--space-1)}
.appuntoo-login .forgot-row .link-subtle{font-weight:var(--weight-normal);white-space:nowrap;text-underline-offset:4px}
@media (hover:hover){.appuntoo-login .link-subtle:hover{text-decoration:underline;text-underline-offset:4px}}

/* CTA principale della landing: pillola verde con glow. */
.appuntoo-login .btn{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:100%;
  min-height:56px;
  padding:16px 28px;
  border:0;
  border-radius:var(--pill);
  background:var(--green);
  color:var(--brand);
  font-size:var(--type-body);
  line-height:1.5;
  font-weight:var(--weight-heading);
  box-shadow:0 12px 30px rgba(105,223,142,.45);
  transition:background-color var(--feedback) var(--ease),box-shadow var(--feedback) var(--ease),transform var(--feedback) var(--ease-enter),opacity var(--feedback) var(--ease-enter);
}
.appuntoo-login .btn-label{display:block;white-space:nowrap}
@media (hover:hover){.appuntoo-login .btn:hover:not(:disabled){background:var(--green-strong)}}
.appuntoo-login .btn:active:not(:disabled){transform:translateY(1px)}
.appuntoo-login .btn:disabled{cursor:wait;opacity:.6;box-shadow:none}
.appuntoo-login .btn .btn-arrow{width:var(--space-4);height:var(--space-4);flex:none;transition:transform var(--feedback) var(--ease-enter)}
@media (hover:hover){.appuntoo-login .btn:hover:not(:disabled) .btn-arrow{transform:translateX(2px)}}
.appuntoo-login .btn .spinner{
  display:none;
  width:var(--space-4);
  height:var(--space-4);
  flex:none;
  border-radius:50%;
  border:2px solid rgba(4,49,56,.3);
  border-top-color:var(--brand);
  animation:spin .7s linear infinite;
}
.appuntoo-login .btn.is-loading .btn-arrow{display:none}
.appuntoo-login .btn.is-loading .spinner{display:block}
@keyframes spin{to{transform:rotate(360deg)}}
.appuntoo-login .form-error{
  margin:0;
  padding:var(--space-3) var(--space-4);
  border:1px solid rgba(228,0,20,.2);
  background:var(--danger-tint);
  border-radius:var(--r-card);
  font-size:var(--type-small);
  font-weight:var(--weight-bold);
  line-height:1.5;
  color:var(--danger);
}
.appuntoo-login .form-error p{margin:0}
.appuntoo-login .form-error ul{margin:var(--space-2) 0 0;padding-left:var(--space-5)}
.appuntoo-login .form-error a{display:inline-flex;align-items:center;min-height:var(--touch-size);text-decoration:underline;text-underline-offset:3px}
.appuntoo-login .alt{
  --od-gap:var(--space-2);
  margin:var(--space-6) 0 0;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  gap:var(--space-2);
  font-size:var(--type-body);
  font-weight:var(--weight-normal);
  color:var(--text-secondary);
  text-align:center;
}
.appuntoo-login .alt a{
  display:inline-flex;
  align-items:center;
  gap:var(--space-2);
  min-height:var(--touch-size);
  width:fit-content;
  max-width:100%;
  font-weight:var(--weight-bold);
  color:var(--brand);
}
.appuntoo-login .alt-arrow{width:var(--space-4);height:var(--space-4);flex:none;transition:transform var(--feedback) var(--ease-enter)}
@media (hover:hover){.appuntoo-login .alt a:hover{text-decoration:underline;text-underline-offset:4px}.appuntoo-login .alt a:hover .alt-arrow{transform:translateX(2px)}}
.appuntoo-login .success{display:grid;justify-items:start;gap:var(--space-3);margin-top:var(--space-8)}
.appuntoo-login .success-mark{display:grid;place-items:center;flex:none;width:var(--space-12);height:var(--space-12);border-radius:var(--pill);background:var(--mint);color:var(--brand)}
.appuntoo-login .success h2,.appuntoo-login .success h3{margin:0;font-weight:var(--weight-heading);font-size:1.25rem;line-height:1.4;color:var(--brand)}
.appuntoo-login .success p{margin:0;font-size:var(--type-body);font-weight:var(--weight-normal);line-height:var(--line-body);color:var(--text-secondary)}
.appuntoo-login .success .success-copy{color:var(--brand)}

/* Conferma recupero password: un solo messaggio, azioni e assistenza. */
.appuntoo-login .reset-confirmation{margin:0;gap:var(--space-5)}
.appuntoo-login .auth-confirmation-intro{display:grid;justify-items:center;gap:var(--space-3);text-align:center}
.appuntoo-login .auth-confirmation-intro .form-title:focus{outline:none}
.appuntoo-login .reset-confirmation.auth-card{margin-top:var(--space-8)}
.appuntoo-login .confirmation-email{overflow-wrap:anywhere}
.appuntoo-login .reset-confirmation .success-help{font-size:var(--type-small)}
.appuntoo-login .reset-confirmation .success-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:var(--space-3);padding-top:var(--space-5);border-top:1px solid var(--border-soft)}
.appuntoo-login .confirmation-action{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:var(--space-3) var(--space-4);border:1px solid var(--brand);border-radius:var(--pill);font-size:var(--type-small);font-weight:var(--weight-heading);line-height:1.25;text-align:center;transition:background-color var(--feedback) var(--ease),color var(--feedback) var(--ease)}
.appuntoo-login .confirmation-action-primary{background:var(--brand);color:var(--white)}
.appuntoo-login .confirmation-action-secondary{background:transparent;color:var(--brand)}
@media (hover:hover){.appuntoo-login .confirmation-action-primary:hover{background:var(--brand-soft)}.appuntoo-login .confirmation-action-secondary:hover{background:var(--mint)}}
@media (max-width:480px){.appuntoo-login .reset-confirmation .success-actions{grid-template-columns:minmax(0,1fr)}}

/* Registrazione completa: stessi colori e controlli delle pagine di accesso. */
.appuntoo-login .registration-panel{padding-bottom:var(--space-6)}
.appuntoo-login .registration-shell{width:100%;max-width:820px;margin-inline:auto}
.appuntoo-login .registration-intro{text-align:center}
.appuntoo-login .registration-intro .form-sub{max-width:35rem;margin:var(--space-2) auto 0}
.appuntoo-login .registration-progress{margin-top:var(--space-4)}
.appuntoo-login .registration-progress ol{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding:0;list-style:none}
.appuntoo-login .registration-progress li{position:relative;display:grid;justify-items:center;align-content:start;gap:2px;min-width:0;color:var(--text-secondary);font-size:.75rem;font-weight:var(--weight-bold);text-align:center}
.appuntoo-login .registration-progress li:not(:last-child)::after{content:"";position:absolute;top:15px;left:calc(50% + 22px);width:calc(100% - 44px);height:2px;background:var(--surface-deep)}
.appuntoo-login .registration-progress li.is-complete::after{background:var(--green-strong)}
.appuntoo-login .registration-progress-number{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--surface-deep);border-radius:var(--pill);background:var(--white);font-size:var(--type-small);color:var(--brand)}
.appuntoo-login .registration-progress .is-current .registration-progress-number{border-color:var(--brand);background:var(--brand);color:var(--white)}
.appuntoo-login .registration-progress .is-complete .registration-progress-number{border-color:var(--green-strong);background:var(--mint)}
.appuntoo-login .registration-progress .is-current .registration-progress-label{color:var(--brand)}
.appuntoo-login .registration-form{display:grid;gap:var(--space-4);margin-top:var(--space-4)}
.appuntoo-login .registration-section,.appuntoo-login .auth-card{padding:clamp(20px,4vw,32px);border:1px solid var(--border-soft);border-radius:var(--r-menu);background:rgba(255,255,255,.84);box-shadow:var(--shadow-soft)}
.appuntoo-login .registration-section{display:grid;gap:var(--space-4);padding:var(--space-5) var(--space-6)}
.appuntoo-login .registration-section-heading{display:flex;align-items:flex-start;gap:var(--space-4)}
.appuntoo-login .registration-step{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:var(--pill);background:var(--mint);font-size:var(--type-small);font-weight:var(--weight-heading)}
.appuntoo-login .registration-section-heading h2{margin:0;font-size:1.25rem;font-weight:var(--weight-heading);line-height:1.3;color:var(--brand)}
.appuntoo-login .registration-section-heading p{margin:4px 0 0;font-size:var(--type-small);line-height:1.5;color:var(--text-secondary)}
.appuntoo-login .registration-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}
.appuntoo-login .registration-fields > *{min-width:0}
.appuntoo-login .registration-full{grid-column:1/-1}
.appuntoo-login .registration-fields .field{align-content:start}
.appuntoo-login .registration-readonly{background:var(--surface)}
.appuntoo-login .registration-readonly input:disabled{color:var(--brand);-webkit-text-fill-color:var(--brand);opacity:1}
.appuntoo-login .field-hint{margin:0;font-size:.8125rem;line-height:1.45;color:var(--text-secondary)}
.appuntoo-login .registration-prefix{flex:none;padding-right:var(--space-3);border-right:1px solid var(--surface-deep);font-weight:var(--weight-bold);color:var(--brand)}
.appuntoo-login .registration-select-wrap{padding-right:var(--space-4)}
.appuntoo-login .registration-select-wrap select{flex:1;min-width:0;width:100%;min-height:calc(var(--control-height) - 2px);border:0;outline:0;background:transparent;color:var(--brand);font:inherit;appearance:none}
.appuntoo-login .registration-select-wrap svg{flex:none;width:18px;height:18px;color:var(--text-secondary);pointer-events:none}
.appuntoo-login .registration-city app-select{display:block;width:100%}
.appuntoo-login .registration-city app-select fieldset{display:block;min-width:0;margin:0;padding:0;border:0}
.appuntoo-login .registration-city app-select legend{margin:0 0 var(--space-2);padding:0;font-size:var(--type-small);font-weight:var(--weight-bold);color:var(--brand)}
.appuntoo-login .registration-city app-select label.input{display:flex;align-items:center;width:100%;min-height:var(--control-height);padding:0 var(--space-4);border:1px solid var(--surface-deep);border-radius:var(--r-field);background:var(--white);box-shadow:none}
.appuntoo-login .registration-city app-select label.input:focus-within{border-color:var(--brand);box-shadow:0 0 0 4px var(--focus-ring)}
.appuntoo-login .registration-city app-select label.input input{min-width:0;width:100%;border:0;outline:0;background:transparent;color:var(--brand);font:inherit}
.appuntoo-login .registration-city app-select ul{border:1px solid var(--surface-deep);border-radius:var(--r-field);background:var(--white);box-shadow:var(--shadow-soft)}
.appuntoo-login .registration-city app-select li{padding:var(--space-2) var(--space-3);font-size:var(--type-small)}
.appuntoo-login .registration-city app-input-errors{display:none}
.appuntoo-login .registration-plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}
.appuntoo-login .registration-plan{display:flex;align-items:flex-start;gap:var(--space-3);min-width:0;padding:var(--space-5);border:1px solid var(--surface-deep);border-radius:var(--r-card);background:var(--white);cursor:pointer;transition:border-color var(--feedback) var(--ease),background-color var(--feedback) var(--ease)}
.appuntoo-login .registration-plan.is-selected{border-color:var(--brand);background:var(--mint)}
.appuntoo-login .registration-plan:focus-within{outline:3px solid var(--brand);outline-offset:2px}
.appuntoo-login .registration-plan input{flex:none;width:18px;height:18px;margin:3px 0 0;accent-color:var(--brand)}
.appuntoo-login .registration-plan-copy{display:grid;gap:4px;min-width:0;line-height:1.45}
.appuntoo-login .registration-plan-copy strong{font-size:var(--type-body);font-weight:var(--weight-heading);color:var(--brand)}
.appuntoo-login .registration-plan-copy span{font-size:var(--type-small);color:var(--text-secondary)}
.appuntoo-login .registration-consents{display:grid;gap:var(--space-3)}
.appuntoo-login .registration-consent{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--surface-deep);border-radius:var(--r-card);background:var(--white);font-size:var(--type-small);line-height:1.5;cursor:pointer}
.appuntoo-login .registration-consent input{flex:none;width:18px;height:18px;margin:2px 0 0;accent-color:var(--brand)}
.appuntoo-login .registration-consent span{min-width:0}
.appuntoo-login .registration-consent a{font-weight:var(--weight-bold);text-decoration:underline;text-underline-offset:3px}
.appuntoo-login .registration-consent-all{border-color:transparent;background:transparent;font-weight:var(--weight-bold)}
.appuntoo-login .registration-consent.has-error{border-color:var(--danger);background:var(--danger-tint)}
.appuntoo-login .registration-required{color:var(--danger)}
.appuntoo-login .registration-navigation{display:flex;justify-content:flex-end;align-items:center;gap:var(--space-4)}
.appuntoo-login .registration-navigation .btn{width:auto;min-width:220px}
.appuntoo-login .registration-navigation .btn-label{white-space:normal}
.appuntoo-login .registration-back{min-height:56px;padding:var(--space-3) var(--space-6);border:1px solid var(--brand);border-radius:var(--pill);background:transparent;color:var(--brand);font-weight:var(--weight-heading)}
@media (hover:hover){.appuntoo-login .registration-back:hover:not(:disabled){background:var(--mint)}}
.appuntoo-login .registration-required-note{margin:0;font-size:var(--type-small);color:var(--text-secondary)}
.appuntoo-login .registration-shell > .alt{margin-top:var(--space-4)}
@media (max-width:640px){
  .appuntoo-login .registration-fields,.appuntoo-login .registration-plans{grid-template-columns:minmax(0,1fr)}
  .appuntoo-login .registration-progress-label{display:none}
  .appuntoo-login .registration-navigation .btn{min-width:0;flex:1}
}

/* ---------- footer: componente originale della landing Appuntoo ---------- */
.appuntoo-login .site-footer{
  --footer-muted:rgba(255,255,255,.6);
  --footer-link:rgba(255,255,255,.75);
  --footer-heading:rgba(255,255,255,.4);
  --footer-legal:rgba(255,255,255,.45);
  --footer-border:rgba(255,255,255,.1);
  --footer-social:rgba(255,255,255,.7);
  --footer-size-small:.75rem;
  --footer-link-gap:10px;
  --footer-top:56px;
  --footer-social-size:36px;
  margin-top:var(--space-6);
  background:var(--brand);
  color:var(--white);
  line-height:1.5;
}
.appuntoo-login .footer-inner{max-width:var(--content-width);margin-inline:auto;padding:var(--footer-top) var(--space-5) var(--space-8)}
.appuntoo-login .footer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-10);align-items:start}
.appuntoo-login .footer-brand{grid-column:1/-1}
.appuntoo-login .footer-logo{display:block;height:32px;width:auto;max-width:100%;filter:brightness(0) invert(1)}
.appuntoo-login .footer-tagline{margin:var(--space-3) 0 0;max-width:20rem;font-size:var(--type-small);line-height:1.625;color:var(--footer-muted)}
.appuntoo-login .socials{--od-gap:var(--space-3);margin-top:var(--space-5);flex-wrap:nowrap}
.appuntoo-login .socials a{display:grid;place-items:center;width:var(--footer-social-size);height:var(--footer-social-size);border-radius:var(--pill);background:var(--footer-border);color:var(--footer-social);transition:background-color var(--feedback) var(--ease),color var(--feedback) var(--ease)}
.appuntoo-login .footer-social-icon{width:18px;height:18px}
.appuntoo-login .footer-col-title{margin:0;font-size:var(--footer-size-small);font-weight:var(--weight-heading);line-height:1rem;letter-spacing:.18em;text-transform:uppercase;color:var(--footer-heading)}
.appuntoo-login .footer-links{display:flex;flex-direction:column;gap:var(--footer-link-gap);margin:var(--space-4) 0 0;padding:0;list-style:none;font-size:.875rem;font-weight:600;line-height:1.25rem;color:var(--footer-link)}
/* Nelle colonne il <ul> resta 16px/24px come nella landing: la riga è alta 24px, i link 14px/20px. */
.appuntoo-login .footer-column .footer-links{font-size:1rem;font-weight:400;line-height:1.5}
.appuntoo-login .footer-links a{color:var(--footer-link);font-size:.875rem;font-weight:600;line-height:1.25rem;text-decoration:none;transition:color var(--feedback) var(--ease)}
.appuntoo-login .footer-contact{grid-column:1/-1}
.appuntoo-login .footer-contact-line{display:inline-flex;align-items:center;gap:var(--space-2)}
.appuntoo-login .footer-contact-line svg{width:var(--space-4);height:var(--space-4);flex:none}
.appuntoo-login .footer-contact-line span{display:block}
.appuntoo-login .footer-muted{color:var(--footer-muted)}
.appuntoo-login .footer-legal{--od-gap:var(--space-3);display:flex;flex-direction:column;align-items:center;justify-content:space-between;margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--footer-border);font-size:var(--footer-size-small);font-weight:600;line-height:1rem;color:var(--footer-legal);text-align:start}
.appuntoo-login .footer-legal p{margin:0;overflow-wrap:anywhere}
.appuntoo-login .site-footer a:focus-visible{outline-color:var(--green)}
@media (hover:hover){
  .appuntoo-login .socials a:hover{background:var(--green);color:var(--brand)}
  .appuntoo-login .footer-links a:hover{color:var(--white)}
}
@media (min-width:640px){.appuntoo-login .footer-contact{grid-column:auto}.appuntoo-login .footer-legal{flex-direction:row;flex-wrap:nowrap}}
@media (min-width:768px){.appuntoo-login .footer-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1024px){.appuntoo-login .site-footer{--footer-top:var(--space-16)}.appuntoo-login .footer-grid{grid-template-columns:1.6fr repeat(4,1fr)}.appuntoo-login .footer-brand{grid-column:auto}}

/* ---------- adattamento e feedback ---------- */
@media (max-width:374px){
  .appuntoo-login .hero-panel{padding-inline:var(--space-4)}
}
@media (prefers-reduced-motion:reduce){
  .appuntoo-login *,.appuntoo-login *::before,.appuntoo-login *::after{
    animation:none !important;
    transition:none !important;
    scroll-behavior:auto !important;
  }
}
