/* ============================================================
   DigiDental — sistema di design
   Palette clinica e calma; display Space Grotesk, testo Inter.
   ============================================================ */
:root{
    --ink:#16242b;          /* testo principale            */
    --ink-soft:#3c4f58;
    --muted:#5d7079;        /* testo secondario            */
    --line:#dfe7ea;         /* bordi sottili               */
    --line-2:#eef2f3;
    --bg:#eef3f4;           /* sfondo app                  */
    --surface:#ffffff;
    --teal:#117a65;         /* primario                    */
    --teal-d:#0d6354;
    --teal-soft:#e6f2ef;
    --amber:#b7791f;        /* prova / avviso              */
    --amber-soft:#fbf1de;
    --red:#c0392b;
    --red-soft:#fdecea;
    --blue:#1f6fb2;
    --radius:14px;
    --shadow:0 18px 44px -30px rgba(16,40,48,.5);
    --font-display:'Space Grotesk',system-ui,sans-serif;
    --font:'Inter',system-ui,-apple-system,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--font);color:var(--ink);background:var(--bg);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--teal);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em}

/* ---------- Shell ---------- */
.shell{display:flex;min-height:100vh}
.sidebar{position:fixed;top:0;left:0;height:100vh;width:252px;background:var(--surface);
    border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:70;
    transform:translateX(-100%);transition:transform .26s ease;
    box-shadow:0 0 50px -12px rgba(16,40,48,.4)}
.sidebar.is-open{transform:translateX(0)}
.scrim{position:fixed;inset:0;background:rgba(16,36,43,.42);opacity:0;visibility:hidden;
    transition:opacity .26s ease;z-index:65}
.scrim.is-open{opacity:1;visibility:visible}
.sidebar__head{display:flex;align-items:center;justify-content:space-between;padding:16px 16px 6px}
.drawer-close{width:32px;height:32px;border:0;background:transparent;color:var(--muted);
    font-size:24px;line-height:1;cursor:pointer;border-radius:8px}
.drawer-close:hover{background:var(--bg);color:var(--ink)}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);
    font-weight:700;font-size:18px;color:var(--ink)}
.brand:hover{text-decoration:none}
.brand__mark{width:28px;height:28px;border-radius:8px;background-color:#fff;border:2px solid #2BA9E0;box-shadow:0 1px 2px rgba(16,40,48,.12);flex-shrink:0;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20200%20240%27%3E%3Cpath%20fill%3D%27%232BA9E0%27%20d%3D%27M100%2018%20C86%2012%2074%2014%2066%2022%20C58%2014%2044%2018%2038%2034%20C30%2054%2034%2074%2040%2096%20C44%20112%2044%20128%2050%20150%20C56%20178%2058%20206%2072%20220%20C82%20230%2088%20212%2090%20182%20C92%20164%2096%20156%20100%20156%20C104%20156%20108%20164%20110%20182%20C112%20212%20118%20230%20128%20220%20C142%20206%20144%20178%20150%20150%20C156%20128%20156%20112%20160%2096%20C166%2074%20170%2054%20162%2034%20C156%2018%20142%2014%20134%2022%20C126%2014%20114%2012%20100%2018%20Z%27%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:center;background-size:15px 18px}
.nav{display:flex;flex-direction:column;gap:2px;padding:6px 12px;flex:1}
.nav__link{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:10px;
    color:var(--ink-soft);font-weight:500;font-size:14px}
.nav__link:hover{background:var(--bg);text-decoration:none}
.nav__link.is-active{background:var(--teal-soft);color:var(--teal-d)}
.nav__icon{width:18px;text-align:center;opacity:.8;font-size:15px}
.sidebar__foot{padding:16px 18px;border-top:1px solid var(--line)}
.studio-tag{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:6px}
.logout{font-size:13px;color:var(--muted)}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:16px;
    padding:14px 24px;border-bottom:1px solid var(--line);background:var(--surface);
    position:sticky;top:0;z-index:30}
.topbar__left{display:flex;align-items:center;gap:12px;flex-shrink:0}
.menu-toggle{width:40px;height:40px;border:1px solid var(--line);border-radius:10px;background:#fff;
    display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;flex-shrink:0}
.menu-toggle span{display:block;width:18px;height:2px;background:var(--ink);border-radius:2px;transition:none}
.menu-toggle:hover{background:var(--bg)}
.topbar__title{font-size:18px;margin:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar__right{display:flex;align-items:center;gap:14px;flex-shrink:0}
.me{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:var(--ink-soft)}
.me__avatar{width:28px;height:28px;border-radius:50%;color:#fff;font-size:11px;font-weight:600;
    display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.badge{font-size:12px;font-weight:600;padding:5px 11px;border-radius:99px}
.badge:hover{text-decoration:none}
.badge--trial{background:var(--amber-soft);color:var(--amber)}
.badge--active{background:var(--teal-soft);color:var(--teal-d)}
.badge--expired{background:var(--red-soft);color:var(--red)}
.content{padding:26px 28px;max-width:1100px;width:100%}

/* ---------- Flash ---------- */
.flash{padding:12px 16px;border-radius:10px;margin-bottom:16px;font-size:14px;font-weight:500}
.flash--success{background:var(--teal-soft);color:var(--teal-d)}
.flash--error{background:var(--red-soft);color:var(--red)}

/* ---------- Stat ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}
.stat__num{font-family:var(--font-display);font-size:30px;font-weight:700;line-height:1;color:var(--teal-d)}
.stat__label{font-size:13px;color:var(--muted);margin-top:6px}

/* ---------- Panel ---------- */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
    padding:22px;margin-bottom:20px;box-shadow:var(--shadow)}
.panel--narrow{max-width:640px}
.panel__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}
.panel__title{font-size:17px;margin:0}
.panel__sub{font-size:13px;color:var(--muted);margin:3px 0 0}

.split{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
.split--wide{grid-template-columns:1.1fr .9fr}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--teal);color:#fff;
    border:1px solid var(--teal);border-radius:10px;padding:10px 16px;font:inherit;font-weight:600;font-size:14px;
    cursor:pointer;transition:background .15s,border-color .15s}
.btn:hover{background:var(--teal-d);border-color:var(--teal-d);text-decoration:none}
.btn--ghost{background:transparent;color:var(--ink-soft);border-color:var(--line)}
.btn--ghost:hover{background:var(--bg);border-color:var(--line);color:var(--ink)}
.btn--danger{background:transparent;color:var(--red);border-color:#f0c4bf}
.btn--danger:hover{background:var(--red-soft)}
.btn--sm{padding:6px 11px;font-size:13px;border-radius:8px}
.btn--block{width:100%;margin-top:16px}

/* ---------- Forms ---------- */
label{display:block;font-size:13px;font-weight:500;margin:14px 0 5px;color:var(--ink-soft)}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;
    font:inherit;font-size:14px;background:#fcfdfd;color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(17,122,101,.13)}
textarea{resize:vertical}
.row{display:flex;gap:12px}
.row>div{flex:1;min-width:0}
.form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}
.check{display:flex;align-items:center;gap:8px;font-weight:500}
.check input{width:auto}
.hint{font-size:12.5px;color:var(--muted);margin:12px 0 0;line-height:1.5}
.mt{margin-top:18px}

/* ---------- Tables ---------- */
.table{width:100%;border-collapse:collapse;font-size:14px}
.table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);
    padding:9px 8px;border-bottom:1px solid var(--line)}
.table td{padding:11px 8px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.table tr:last-child td{border-bottom:0}
.table--hover tbody tr:hover{background:var(--bg)}
.table .me__avatar{margin-right:8px;vertical-align:middle}
.w-check{width:32px}
.right{text-align:right}
.mono{font-family:ui-monospace,"SFMono-Regular",Menlo,monospace;font-size:13px}
.link-strong{font-weight:600;color:var(--ink)}
.tag{display:inline-block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
    color:var(--teal-d);background:var(--teal-soft);padding:2px 7px;border-radius:6px;margin-left:6px}
.muted{color:var(--muted)}

.toolbar{display:flex;gap:8px;margin-bottom:16px}
.search{flex:1}
.bulkbar{display:flex;align-items:center;justify-content:space-between;padding:10px 8px;border-bottom:1px solid var(--line);margin-bottom:4px}

.empty{text-align:center;padding:40px 20px;color:var(--muted)}
.empty p{margin:0 0 14px}

/* ---------- Agenda (signature) ---------- */
.agenda{list-style:none;margin:0;padding:0}
.agenda__row{display:grid;grid-template-columns:74px 1fr auto auto;gap:14px;align-items:center;
    padding:14px 6px;border-bottom:1px solid var(--line-2);position:relative}
.agenda__row:last-child{border-bottom:0}
.agenda__time{font-family:var(--font-display);font-weight:600;font-size:15px;color:var(--ink);
    border-left:3px solid var(--teal);padding-left:12px}
.agenda__row--completed .agenda__time{border-left-color:var(--teal)}
.agenda__row--canceled{opacity:.55}
.agenda__row--canceled .agenda__time{border-left-color:var(--muted)}
.agenda__row--scheduled .agenda__time{border-left-color:var(--amber)}
.recur{color:var(--muted);font-size:12px;margin-left:4px}
.agenda__title{font-weight:600;color:var(--ink);display:block}
.agenda__meta{font-size:13px;color:var(--muted);margin-top:2px}
.agenda__profiles{display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-end;max-width:240px}

.chip{font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:99px;white-space:nowrap;
    color:var(--c,#117a65);background:color-mix(in srgb,var(--c,#117a65) 12%,#fff);
    border:1px solid color-mix(in srgb,var(--c,#117a65) 28%,#fff)}
.chips{display:flex;flex-wrap:wrap;gap:5px}

.status{font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:99px;white-space:nowrap}
.status--scheduled{background:var(--amber-soft);color:var(--amber)}
.status--completed{background:var(--teal-soft);color:var(--teal-d)}
.status--canceled{background:#eef2f3;color:var(--muted)}

/* ---------- Patient ---------- */
.patient-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}
.patient-head__actions{display:flex;gap:8px}
.back{font-size:13px;color:var(--muted)}
.patient-name{font-size:26px;margin:6px 0 0}
.data{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;margin:0}
.data>div{padding:9px 0;border-bottom:1px solid var(--line-2)}
.data__full{grid-column:1/-1}
.data dt{font-size:12px;color:var(--muted);margin-bottom:2px}
.data dd{margin:0;font-size:14px}

.profile-pick{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.pchip{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:1px solid var(--line);
    border-radius:99px;font-size:13px;font-weight:500;cursor:pointer;background:#fcfdfd}
.pchip input{display:none}
.pchip__dot{width:10px;height:10px;border-radius:50%}
.pchip:has(input:checked){border-color:var(--teal);background:var(--teal-soft);color:var(--teal-d)}

/* ---------- Timeline lavori ---------- */
.timeline{list-style:none;margin:0;padding:0}
.timeline__item{display:grid;grid-template-columns:84px 1fr;gap:14px;padding-bottom:16px;position:relative}
.timeline__item::before{content:"";position:absolute;left:90px;top:22px;bottom:-4px;width:2px;background:var(--line-2)}
.timeline__item:last-child::before{display:none}
.timeline__date{font-size:12.5px;font-weight:600;color:var(--muted);padding-top:11px;text-align:right}
.timeline__card{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:13px 15px;position:relative}
.timeline__card::before{content:"";position:absolute;left:-19px;top:14px;width:9px;height:9px;border-radius:50%;
    background:var(--teal);box-shadow:0 0 0 3px var(--surface)}
.timeline__top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.cost{font-weight:600;color:var(--teal-d);font-size:14px}
.timeline__desc{font-size:13px;color:var(--ink-soft);margin:6px 0 0}
.timeline__foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px}
.link-del{background:none;border:0;color:var(--muted);font:inherit;font-size:12.5px;cursor:pointer;padding:0;width:auto}
.link-del:hover{color:var(--red)}

/* ---------- Swatches ---------- */
.swatches{display:flex;flex-wrap:wrap;gap:8px}
.swatch{cursor:pointer}
.swatch input{display:none}
.swatch span{display:block;width:26px;height:26px;border-radius:7px;border:2px solid transparent;box-shadow:0 0 0 1px var(--line)}
.swatch input:checked + span{border-color:#fff;box-shadow:0 0 0 2px var(--ink)}

/* ---------- Calendario ---------- */
.cal-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.cal-nav{display:flex;align-items:center;gap:8px}
.cal-heading{font-size:18px;margin:0 0 0 8px}
.cal-right{display:flex;align-items:center;gap:10px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.seg__btn{padding:7px 13px;font-size:13px;font-weight:500;color:var(--ink-soft);background:#fff}
.seg__btn:hover{background:var(--bg);text-decoration:none}
.seg__btn.is-on{background:var(--teal);color:#fff}

.week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
.week__col{background:var(--bg);border:1px solid var(--line);border-radius:10px;min-height:160px;padding:6px}
.week__col.is-today{border-color:var(--teal);background:var(--teal-soft)}
.week__head{display:flex;flex-direction:column;align-items:center;padding:4px 0 8px;color:var(--ink)}
.week__head:hover{text-decoration:none}
.week__dow{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.week__num{font-family:var(--font-display);font-weight:600;font-size:18px}
.week__items{display:flex;flex-direction:column;gap:5px}
.wevent{display:block;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--teal);
    border-radius:7px;padding:5px 7px;font-size:12px}
.wevent:hover{text-decoration:none;box-shadow:0 2px 8px -3px rgba(16,40,48,.4)}
.wevent--scheduled{border-left-color:var(--amber)}
.wevent--canceled{border-left-color:var(--muted);opacity:.6}
.wevent__t{font-weight:600;color:var(--ink)}
.wevent__title{display:block;color:var(--ink-soft);font-weight:500}
.wevent__pt{display:block;color:var(--muted);font-size:11px}

.month{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.month__dow{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);
    text-align:center;padding-bottom:2px;font-weight:600}
.mcell{min-height:104px;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:6px;
    display:flex;flex-direction:column;gap:3px;color:var(--ink)}
.mcell:hover{text-decoration:none;border-color:var(--teal)}
.mcell.is-out{opacity:.42}
.mcell.is-today{border-color:var(--teal);background:var(--teal-soft)}
.mcell__num{font-size:13px;font-weight:600;align-self:flex-start}
.mevent{font-size:11px;background:var(--surface);border-left:3px solid var(--teal);border-radius:5px;
    padding:2px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-soft)}
.mevent--scheduled{border-left-color:var(--amber)}
.mevent--canceled{border-left-color:var(--muted);opacity:.6}
.mmore{font-size:11px;color:var(--muted)}

.recur-box{border:1px solid var(--line);border-radius:12px;padding:8px 16px 16px;margin-top:18px}
.recur-box legend{font-size:13px;font-weight:600;color:var(--ink-soft);padding:0 6px}

/* ---------- Abbonamento ---------- */
.sub-status{display:flex;align-items:center;gap:16px;padding:18px 20px;border-radius:12px;margin-bottom:8px}
.sub-status--trial{background:var(--amber-soft)}
.sub-status--active{background:var(--teal-soft)}
.sub-status--expired{background:var(--red-soft)}
.sub-status__label{font-family:var(--font-display);font-weight:700;font-size:18px}
.sub-status__detail{font-size:14px;color:var(--ink-soft);margin-top:3px}
.plans{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:12px}
.plan{border:1px solid var(--line);border-radius:14px;padding:20px;position:relative;background:#fcfdfd}
.plan--best{border-color:var(--teal);box-shadow:0 0 0 1px var(--teal)}
.plan__tag{position:absolute;top:-10px;right:16px;background:var(--teal);color:#fff;font-size:11px;
    font-weight:700;padding:3px 10px;border-radius:99px}
.plan__name{font-weight:600;color:var(--muted);font-size:14px}
.plan__price{font-family:var(--font-display);font-size:28px;font-weight:700;margin:4px 0 12px}
.plan__price span{font-size:14px;color:var(--muted);font-weight:500}
.plan__list{list-style:none;margin:0 0 8px;padding:0;font-size:13px;color:var(--ink-soft)}
.plan__list li{padding:4px 0 4px 20px;position:relative}
.plan__list li::before{content:"✓";position:absolute;left:0;color:var(--teal)}

/* ---------- Auth ---------- */
.auth-body{background:linear-gradient(160deg,#eef3f4,#e2edeb);min-height:100vh}
.auth{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px}
.auth__brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:700;
    font-size:22px;margin-bottom:18px;color:var(--ink)}
.auth__card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);
    border-radius:18px;padding:30px 30px 26px;box-shadow:var(--shadow)}
.auth__card h1{font-size:22px;margin:0 0 4px}
.auth__lead{color:var(--muted);font-size:14px;margin:0 0 18px}
.auth__alt{text-align:center;font-size:14px;color:var(--muted);margin:18px 0 0}
.auth__foot{color:var(--muted);font-size:12.5px;margin-top:18px}

/* ---------- Responsive ---------- */
@media (max-width:860px){
    .stats{grid-template-columns:1fr 1fr}
    .split,.split--wide{grid-template-columns:1fr}
    .week,.month{grid-template-columns:1fr;gap:6px}
    .month__dow{display:none}
    .mcell{min-height:auto}
    .agenda__row{grid-template-columns:60px 1fr;gap:8px}
    .agenda__profiles,.agenda__status{grid-column:2;justify-content:flex-start}
    .data{grid-template-columns:1fr}
    .plans{grid-template-columns:1fr}
    .content{padding:18px 16px}
    .topbar{padding:12px 14px;gap:10px}
    .topbar__title{display:none}
    .me__name{display:none}
}

@media (prefers-reduced-motion:reduce){*{transition:none!important}}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px}

/* ============================================================
   HOME LOGGATA — molare centrale con "bolle"
   ============================================================ */
.molar{width:100%;height:auto;display:block;filter:drop-shadow(0 14px 26px rgba(12,95,81,.32))}

.hub{position:relative;min-height:560px;margin:6px 0 26px;display:flex;align-items:center;justify-content:center}
.hub__center{position:relative;z-index:2;text-align:center;width:230px}
.hub__molar{width:150px;margin:0 auto 16px;animation:molarFloat 7s ease-in-out infinite}
.hub__hello{font-family:var(--font-display);font-weight:700;font-size:22px;color:var(--ink)}
.hub__date{font-size:13px;color:var(--muted);margin-top:3px}

.hub__bubbles{display:contents}
.bubble{--b:#117a65;position:absolute;width:142px;height:142px;border-radius:50%;
    transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:3px;text-align:center;color:var(--ink);
    background:radial-gradient(circle at 50% 34%,#fff,color-mix(in srgb,var(--b) 14%,#fff));
    border:1px solid color-mix(in srgb,var(--b) 28%,#fff);
    box-shadow:0 18px 34px -18px color-mix(in srgb,var(--b) 55%,transparent);
    animation:bubbleFloat 6s ease-in-out infinite}
.bubble:hover{text-decoration:none;border-color:var(--b);
    box-shadow:0 24px 44px -16px color-mix(in srgb,var(--b) 60%,transparent)}
.bubble__ico{font-size:27px;line-height:1;color:var(--b)}
.bubble__label{font-family:var(--font-display);font-weight:600;font-size:15px}
.bubble__meta{font-size:12px;color:var(--muted)}
.bubble--1{--b:#117a65;left:25%;top:21%;animation-delay:0s}
.bubble--2{--b:#1f6fb2;left:75%;top:21%;animation-delay:.6s}
.bubble--3{--b:#2f7a4f;left:25%;top:79%;animation-delay:1.2s}
.bubble--4{--b:#7c3aed;left:75%;top:79%;animation-delay:1.8s}
.hub__action{position:absolute;left:50%;bottom:0;transform:translateX(-50%);z-index:2}

@keyframes molarFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes bubbleFloat{0%,100%{transform:translate(-50%,-50%) translateY(0)}50%{transform:translate(-50%,-50%) translateY(-11px)}}

/* ============================================================
   SITO VETRINA PUBBLICO
   ============================================================ */
.site{background:var(--surface)}
.site main{display:block}
.site-nav{display:flex;align-items:center;gap:20px;padding:16px 28px;border-bottom:1px solid var(--line);
    position:sticky;top:0;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);z-index:20}
.site-nav__brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:700;font-size:19px;color:var(--ink)}
.site-nav__brand:hover{text-decoration:none}
.site-nav__links{display:flex;gap:20px;margin-left:8px}
.site-nav__links a{color:var(--ink-soft);font-size:14px;font-weight:500}
.site-nav__links a:hover,.site-nav__links a.is-on{color:var(--teal-d);text-decoration:none}
.site-nav__cta{margin-left:auto;display:flex;align-items:center;gap:14px}
.site-login{font-size:14px;font-weight:600;color:var(--ink-soft)}

.btn--lg{padding:13px 24px;font-size:15px;border-radius:12px}

.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:30px;align-items:center;
    max-width:1080px;margin:0 auto;padding:54px 28px 40px}
.hero__eyebrow{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
    color:var(--teal-d);background:var(--teal-soft);padding:5px 12px;border-radius:99px}
.hero__title{font-size:46px;line-height:1.05;margin:16px 0 14px;letter-spacing:-.02em}
.hero__lead{font-size:17px;color:var(--ink-soft);line-height:1.55;max-width:30em;margin:0 0 24px}
.hero__cta{display:flex;flex-wrap:wrap;gap:12px}
.hero__note{font-size:13px;color:var(--muted);margin:14px 0 0}
.hero__art{display:flex;justify-content:center}
.molar--hero{width:min(300px,78%);animation:molarFloat 7s ease-in-out infinite}

.band{max-width:1080px;margin:0 auto;padding:48px 28px}
.band--tint{max-width:none;background:var(--bg)}
.band--tint > *{max-width:1080px;margin-left:auto;margin-right:auto}
.band__title{font-size:28px;text-align:center;margin:0 0 6px}
.band__sub{text-align:center;color:var(--muted);font-size:15px;margin:0 auto 30px;max-width:40em}
.band__foot{text-align:center;color:var(--muted);font-size:14px;margin-top:22px}

.steps3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.step3{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px}
.step3__n{width:34px;height:34px;border-radius:50%;background:var(--teal);color:#fff;font-family:var(--font-display);
    font-weight:700;display:flex;align-items:center;justify-content:center;margin-bottom:12px}
.step3 h3{font-size:17px;margin:0 0 6px}
.step3 p{font-size:14px;color:var(--ink-soft);margin:0;line-height:1.5}

.features{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.feature{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px}
.feature__ico{font-size:24px;color:var(--teal);line-height:1;margin-bottom:10px}
.feature h3{font-size:16px;margin:0 0 5px}
.feature p{font-size:13.5px;color:var(--ink-soft);margin:0;line-height:1.5}

.cta-band{text-align:center;padding:54px 28px;background:linear-gradient(160deg,#0f6e5c,#0c5346);color:#fff}
.cta-band h2{font-size:26px;margin:0 0 22px;color:#fff}
.cta-band .btn{background:#fff;color:var(--teal-d);border-color:#fff}
.cta-band .btn:hover{background:#eef7f4;border-color:#eef7f4}

.plan--tall{display:flex;flex-direction:column}
.plan--tall .plan__list{flex:1}
.plan__equiv{font-size:12.5px;color:var(--muted);margin:-6px 0 12px}
.plan__note{display:block;text-align:center;font-size:12.5px;color:var(--muted);padding:10px 0 2px}

.faq{max-width:680px;margin:40px auto 0}
.faq__title{font-size:20px;text-align:center;margin:0 0 18px}
.faq__item{border-top:1px solid var(--line);padding:16px 0}
.faq__item strong{font-size:15px}
.faq__item p{margin:6px 0 0;color:var(--ink-soft);font-size:14px;line-height:1.5}

.site-foot{background:var(--ink);color:#cfdade;padding:30px 28px}
.site-foot__in{max-width:1080px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:16px}
.site-foot__brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:700;color:#fff;font-size:17px}
.site-foot__links{display:flex;gap:18px}
.site-foot__links a{color:#cfdade;font-size:14px}
.site-foot__copy{margin-left:auto;font-size:13px;color:#90a3a9}

.plans--4{grid-template-columns:repeat(4,1fr)}

@media (max-width:980px){
    .plans--4{grid-template-columns:repeat(2,1fr)}
    .features,.steps3{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:860px){
    .hero{grid-template-columns:1fr;text-align:center;padding-top:36px}
    .hero__lead{margin-left:auto;margin-right:auto}
    .hero__cta{justify-content:center}
    .hero__art{order:-1}
    .hero__title{font-size:34px}
    .site-nav__links{display:none}

    .hub{min-height:auto;flex-direction:column;gap:22px}
    .hub__bubbles{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%}
    .bubble{position:static;transform:none;width:auto;height:auto;border-radius:16px;
        flex-direction:row;justify-content:flex-start;gap:12px;padding:16px;animation:none}
    .bubble__ico{font-size:24px}
    .hub__action{position:static;transform:none;width:100%}
    .hub__molar{animation:none}
}
@media (max-width:560px){
    .plans--4,.features,.steps3{grid-template-columns:1fr}
    .site-foot__copy{margin-left:0;width:100%}
}
@media (prefers-reduced-motion:reduce){
    .bubble,.hub__molar,.molar--hero{animation:none!important}
}

/* ---------- Contatti ---------- */
.contact-cards{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:680px;margin:0 auto 28px}
.contact-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:5px;
    background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px 20px;color:var(--ink)}
.contact-card:hover{text-decoration:none;border-color:var(--teal);box-shadow:var(--shadow)}
.contact-card__ico{font-size:30px;color:var(--teal);line-height:1}
.contact-card__label{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.contact-card__value{font-family:var(--font-display);font-weight:600;font-size:19px}
.contact-card__hint{font-size:12.5px;color:var(--muted)}
.contact-form{max-width:520px;margin:0 auto;background:var(--surface);border:1px solid var(--line);
    border-radius:var(--radius);padding:24px}
.contact-form__title{font-size:18px;margin:0 0 4px}
@media (max-width:560px){.contact-cards{grid-template-columns:1fr}}

/* ---------- Preventivo (editor voci) ---------- */
.qitems{width:100%;border-collapse:collapse;font-size:14px;margin-top:4px}
.qitems th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:6px;border-bottom:1px solid var(--line)}
.qitems th.num,.qitems td.num{text-align:right}
.qitems td{padding:5px 6px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.qitems input{padding:8px 10px}
.qitems .q-qty{max-width:78px;text-align:right;margin-left:auto}
.qitems .q-price{max-width:110px;text-align:right;margin-left:auto}
.qitems .q-line{white-space:nowrap;font-weight:500;color:var(--ink)}
.qitems .link-del{font-size:20px;line-height:1}
.qtotals{margin:18px 0 4px auto;width:320px;max-width:100%}
.qtotals__row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0}
.qtotals__row input{text-align:right}
.qtotals__row--grand{border-top:2px solid var(--ink);margin-top:4px;padding-top:10px;
    font-family:var(--font-display);font-size:18px;font-weight:700}

/* ---------- Stati preventivo + filtri ---------- */
.qs{font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:99px;white-space:nowrap;display:inline-block}
.qs--proposta{background:#e7eef7;color:#1f6fb2}
.qs--emesso{background:var(--teal-soft);color:var(--teal-d)}
.qs--da_saldare{background:var(--amber-soft);color:var(--amber)}
.qs--saldato{background:#e3f3e9;color:#2f7a4f}
.qs--annullato{background:#eef2f3;color:var(--muted)}

.qfilter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.qfilter a{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500;padding:6px 13px;
    border:1px solid var(--line);border-radius:99px;color:var(--ink-soft);background:#fff}
.qfilter a:hover{text-decoration:none;border-color:var(--teal);color:var(--ink)}
.qfilter a.is-on{background:var(--teal);color:#fff;border-color:var(--teal)}
.qfilter a.is-on .n{color:#fff}
.qfilter .n{font-size:12px;font-weight:600;color:var(--muted)}
.qfilter a[class*="qf-"]::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%}
.qfilter .qf-proposta::before{background:#1f6fb2}
.qfilter .qf-emesso::before{background:var(--teal)}
.qfilter .qf-da_saldare::before{background:var(--amber)}
.qfilter .qf-saldato::before{background:#2f7a4f}
.qfilter .qf-annullato::before{background:var(--muted)}

/* ============================================================
   PANNELLO AMMINISTRATORE DI PIATTAFORMA
   ============================================================ */
.admin-body{background:var(--bg)}
.admin-top{display:flex;align-items:center;gap:16px;padding:14px 24px;background:var(--surface);
    border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}
.admin-top .brand{font-size:18px}
.admin-top__tag{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
    color:var(--teal-d);background:var(--teal-soft);padding:4px 10px;border-radius:99px}
.admin-top__right{margin-left:auto;display:flex;align-items:center;gap:12px}
.admin-wrap{max-width:1120px;margin:0 auto;padding:24px}
.admin-actions{display:flex;flex-direction:column;gap:6px;min-width:240px}
.admin-inline{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px}
.admin-inline select{max-width:160px;padding:6px 9px}
.admin-inline input[type=number]{padding:6px 9px}
.table-scroll{overflow-x:auto}
.disc-badge{font-size:12px;font-weight:600;color:var(--amber);background:var(--amber-soft);
    padding:3px 9px;border-radius:99px;margin-left:8px}
.plan__was{text-decoration:line-through;color:var(--muted);font-size:15px;margin-right:6px;font-weight:500}

@media (max-width:560px){
    .admin-actions{min-width:0}
}

/* ---------- Odontogramma ---------- */
.odo{display:flex;flex-direction:column;gap:14px;overflow-x:auto;padding:8px 2px}
.odo-arch{display:flex;flex-direction:column;align-items:center;gap:5px}
.odo-arch--lower{flex-direction:column-reverse}
.odo-arch__label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
.odo-arch__row{display:flex;align-items:flex-start;justify-content:center;min-height:104px;padding:0 4px}
.odo-arch--lower .tsvg{transform:scaleY(-1)}
.tooth--mid{margin-left:14px}
.tooth{cursor:pointer;position:relative;flex-shrink:0;display:flex;flex-direction:column;align-items:center;
    width:30px;padding:2px 0;background:none;border:0;transform-origin:center bottom}
.odo-arch--upper .tooth{flex-direction:column-reverse}
.tooth .tsvg{width:100%;height:auto;display:block;overflow:visible;filter:drop-shadow(0 1px 1px rgba(22,36,43,.16))}
.t-root{fill:#e9f0f1;stroke:#90a6ad;stroke-width:3;stroke-linejoin:round}
.t-crown{fill:#fcfefe;stroke:#5d7079;stroke-width:3;stroke-linejoin:round;transition:fill .15s,stroke .15s}
.tooth:hover{background:rgba(17,122,101,.07);border-radius:8px}
.tooth:hover .t-crown{stroke:var(--teal)}
.tooth.is-selected{background:rgba(17,122,101,.14);border-radius:8px}
.tooth.is-selected .t-crown{stroke-width:5}
.tooth__num{font-size:10px;color:var(--muted);font-weight:600;line-height:1;margin:1px 0}
.tooth.is-set .tooth__num{color:var(--ink)}
.tooth.is-extracted .tsvg{opacity:.36}
.tooth.is-extracted::after{content:"✕";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
    color:#b23b3b;font-size:15px;font-weight:800;pointer-events:none}

.odo__legend{display:flex;flex-wrap:wrap;gap:9px 16px;margin-top:14px;font-size:12.5px;color:var(--ink-soft)}
.oleg{display:inline-flex;align-items:center;gap:6px}
.oleg__sw{width:12px;height:12px;border-radius:4px;background:var(--c);border:1px solid rgba(0,0,0,.08)}

.odo__editor{margin-top:16px;border-top:1px solid var(--line);padding-top:16px}
.odo__editor-head{font-family:var(--font-display);font-weight:600;font-size:16px;margin-bottom:10px}
.odo__conds{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.ocond{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:1px solid var(--line);
    border-radius:99px;font-size:13px;cursor:pointer;background:#fcfdfd}
.ocond input{display:none}
.ocond__sw{width:12px;height:12px;border-radius:50%;background:var(--c)}
.ocond:has(input:checked){border-color:var(--teal);background:var(--teal-soft);color:var(--teal-d)}

/* ---------- Scheda paziente: contenuto a sinistra, odontogramma a destra ---------- */
.patient-grid{display:grid;grid-template-columns:minmax(0,1fr) 440px;gap:20px;align-items:start}
.patient-main{grid-column:1;min-width:0}
.patient-side{grid-column:2;min-width:0}
.patient-main .split--wide{grid-template-columns:1fr}

/* Denti nella colonna destra (più compatti) */
.patient-side .tooth{width:23px}
.patient-side .tooth__num{font-size:9px}
.patient-side .odo-arch__row{min-height:88px}

@media (max-width:980px){
    .patient-grid{grid-template-columns:1fr}
    .patient-main,.patient-side{grid-column:auto}
    .patient-side .tooth{width:30px}
    .patient-side .tooth__num{font-size:11px}
    .patient-side .odo-arch__row{min-height:104px}
}

/* ---------- Allegati ---------- */
.att-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:14px}
.att-card{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;display:flex;flex-direction:column}
.att-thumb{display:flex;align-items:center;justify-content:center;height:112px;background:var(--bg);overflow:hidden}
.att-thumb img{width:100%;height:100%;object-fit:cover}
.att-thumb:hover{text-decoration:none}
.att-ico{font-family:var(--font-display);font-weight:700;color:var(--red);font-size:17px;letter-spacing:.05em}
.att-meta{padding:9px 10px;display:flex;flex-direction:column;gap:3px}
.att-name{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-sub{font-size:11.5px;color:var(--muted)}
.att-actions{display:flex;align-items:center;justify-content:space-between;margin-top:4px;font-size:12.5px}

/* ---------- Report: grafici a barre ---------- */
.bars{display:flex;align-items:flex-end;gap:8px;height:200px;padding-top:10px}
.bar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;min-width:0}
.bar__fill{width:100%;max-width:46px;background:linear-gradient(180deg,#19a08a,#0d6e5d);border-radius:6px 6px 0 0;min-height:3px}
.bar__val{font-size:11px;color:var(--ink-soft);font-weight:600}
.bar__label{font-size:11px;color:var(--muted);white-space:nowrap}
.hbar{display:flex;align-items:center;gap:10px;margin:7px 0}
.hbar__label{width:140px;font-size:13px;color:var(--ink-soft);flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hbar__track{flex:1;background:var(--bg);border-radius:6px;height:18px;overflow:hidden}
.hbar__fill{height:100%;background:var(--teal);border-radius:6px}
.hbar__n{font-size:12.5px;color:var(--muted);width:64px;text-align:right;flex-shrink:0}
.report-filter{display:flex;gap:8px;margin-bottom:18px}

/* ---------- Saldo paziente (incassi su preventivo) ---------- */
.pay-row > td{background:#fbfaf4;padding:14px 16px;border-bottom:1px solid var(--line)}
.balance__head{display:flex;flex-wrap:wrap;gap:20px;font-size:13px;color:var(--ink-soft);margin-bottom:10px}
.balance__head b{font-family:var(--font-display);font-size:15px;margin-left:4px}
.balance__head .ok{color:var(--teal)}
.balance__head .due{color:var(--amber)}
.table--mini{margin:4px 0 12px;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.table--mini th,.table--mini td{padding:6px 10px;font-size:12.5px}
.balance__form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.balance__form > div{display:flex;flex-direction:column;gap:4px}
.balance__form label{font-size:11px;color:var(--muted);margin:0;text-transform:none;letter-spacing:0}
.balance__form input,.balance__form select{padding:7px 9px;font-size:13px;border:1px solid var(--line);border-radius:8px;background:#fff}
.balance__form input[name=amount]{width:110px}
.balance__note{flex:1;min-width:150px}
.balance__note input{width:100%}
.balance__done{font-size:13px;color:var(--teal);margin:2px 0 0}

/* Pulsante-link nelle pagine di autenticazione (es. reinvio codice 2FA) */
.auth__linkbtn{background:none;border:0;color:var(--teal);font:inherit;font-size:14px;cursor:pointer;padding:4px 0;text-decoration:underline}
.auth__linkbtn:hover{color:var(--teal-d)}
