/* Primo avvio e piano in preparazione */
.first-run{max-width:980px}
.first-run h1{font-size:38px;font-weight:560;letter-spacing:-1.2px;margin-top:8px}
.first-run-lead{font-size:var(--fs-14,14px);line-height:1.6;max-width:620px;margin-top:10px}
.first-run-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:22px;align-items:start}
.first-run-grid>.card{margin:0}
.first-plan{border-color:#a855f74d;background:radial-gradient(ellipse at top right,#a855f716,transparent 70%),var(--card,#0d0d10)}
.first-plan.ready{border-color:#34d39966;background:radial-gradient(ellipse at top right,#34d39914,transparent 70%),var(--card,#0d0d10)}
.first-plan .section-head .icon{color:#34d399}
.first-plan-steps{list-style:none;display:grid;gap:10px;margin:8px 0 12px;padding:0}
.first-plan-steps li{display:flex;gap:10px;align-items:center;font-size:var(--fs-13,13px);color:var(--muted)}
.first-plan-steps li.done{color:var(--ink)}
.first-plan-steps li .icon{color:#34d399}
.step-wait{width:14px;height:14px;border-radius:50%;border:2px solid #a855f7;border-right-color:transparent;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.step-wait{animation:none}}
.permission-row{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--line)}
.permission-row:last-of-type{border-bottom:0}
.permission-row h3{font-size:var(--fs-14,14px);font-weight:600}
.permission-row p{font-size:var(--fs-12,12px);color:var(--muted);line-height:1.5;margin-top:3px}
.permission-actions{display:flex;flex-direction:column;gap:6px;flex-shrink:0}
.permission-actions .btn{min-height:38px;padding:8px 14px;font-size:var(--fs-12,12px)}
.tag.green{color:#6ee7b7;background:#34d39914;border-color:#34d39940}
.first-run-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:22px}
.first-run-actions p{font-size:var(--fs-12,12px)}
.plan-pending{display:flex;align-items:center;gap:12px;margin-bottom:18px;padding:14px 16px;border:1px solid #a855f74d;border-radius:14px;background:#a855f710}
.plan-pending>div{flex:1}
.plan-pending small{display:block;font-size:var(--fs-12,12px);color:var(--muted);margin-top:3px}
@media(max-width:760px){.first-run-grid{grid-template-columns:1fr}.first-run h1{font-size:32px}.permission-row{flex-wrap:wrap}.permission-actions{flex-direction:row;width:100%;padding-left:52px}}
/* Stati dei dati: avvisi, nessun dato, caricamento */
.data-banner{display:flex;align-items:center;gap:12px;margin-bottom:18px;padding:13px 16px;border-radius:14px;border:1px solid var(--line);background:#ffffff06}
.data-banner>div{flex:1}
.data-banner small{display:block;font-size:var(--fs-12,12px);color:var(--muted);margin-top:3px;line-height:1.5}
.data-banner.offline{border-color:#60a5fa55;background:#60a5fa10}
.data-banner.offline .icon{color:#93c5fd}
.data-banner.stale{border-color:#fbbf2450;background:#fbbf240e}
.data-banner.stale .icon{color:#fcd34d}
.data-banner.error{border-color:#f8717155;background:#f871710e}
.data-banner.error .icon{color:#fca5a5}
.sync-warn{color:#fcd34d}
.no-data{display:flex;gap:14px;align-items:flex-start}
.no-data h2{font-size:var(--fs-17,17px)}
.no-data p{font-size:var(--fs-13,13px);color:var(--muted);line-height:1.6;margin-top:6px;max-width:560px}
.skeleton-group{display:grid;gap:14px;margin-bottom:16px}
.skeleton{display:grid;gap:12px;min-height:110px}
.skeleton.tall{min-height:190px}
.skeleton span{display:block;height:12px;border-radius:6px;background:linear-gradient(90deg,#ffffff0a,#ffffff17,#ffffff0a);background-size:200% 100%;animation:shimmer 1.4s linear infinite}
.skeleton span:nth-child(1){width:40%}
.skeleton span:nth-child(2){width:75%}
.skeleton span:nth-child(3){width:55%}
@keyframes shimmer{to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.skeleton span{animation:none}}
/* Preparazione del primo piano a lista di passi (12 ottobre) */
.first-run .first-plan{max-width:760px;margin-top:22px}
.first-plan .completeness-bar{margin:6px 0 4px}
.first-steps{list-style:none;margin:14px 0 0;padding:0;display:grid}
.first-step{display:flex;gap:14px;align-items:flex-start;padding:14px 0;border-bottom:1px solid var(--line)}
.first-step:last-child{border-bottom:0}
.first-step-mark{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:1.5px solid #a855f780;color:#d8b4fe;font-size:var(--fs-12,12px);font-weight:600;font-variant-numeric:tabular-nums}
.first-step.done .first-step-mark{border-color:#34d39980;background:#34d3991a;color:#34d399}
.first-step h3{font-size:var(--fs-14,14px);font-weight:600;line-height:28px}
.first-step.done h3{color:var(--muted);font-weight:500}
.first-step p{font-size:var(--fs-12,12px);color:var(--muted);line-height:1.55;margin-top:2px}
.first-step-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.first-step-actions .btn{min-height:38px;padding:8px 14px;font-size:var(--fs-12,12px)}
.first-step-hint{font-size:var(--fs-11,11px);color:var(--muted);line-height:1.5;align-self:center}
.first-step-sync{margin-top:10px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;font-size:var(--fs-12,12px)}
.first-generate{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.first-generate .btn[disabled]{opacity:.45;cursor:not-allowed}
.first-generate-note{font-size:var(--fs-12,12px);color:var(--muted);line-height:1.5;margin-top:10px;text-align:center}
.first-generate-wait{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid #a855f74d;border-radius:14px;background:#a855f710}
.first-generate-wait small{display:block;font-size:var(--fs-12,12px);color:var(--muted);margin-top:3px}
.first-run-locked{display:flex;align-items:center;gap:8px;font-size:var(--fs-12,12px);margin-top:16px}
.nav-link.locked,.mobile-nav a.locked,.icon-btn.locked{opacity:.45}
.nav-lock{margin-left:auto;display:inline-flex}
.mobile-nav a.locked .nav-icon{position:relative}
@media(max-width:760px){.first-step-actions .btn{flex:1 1 auto}}
.first-steps-optional-head{margin:18px 0 0;padding-top:16px;border-top:1px dashed var(--line)}
.first-steps-optional-title{font-size:var(--fs-14,14px);font-weight:600;color:var(--ink)}
.first-steps-optional-note{font-size:var(--fs-12,12px);color:var(--muted);line-height:1.5;margin-top:4px}
.first-steps.optional{list-style:none;margin:4px 0 0;padding:0}
.first-step.optional .first-step-mark{border-style:dashed;border-color:color-mix(in srgb,var(--muted) 60%,transparent);color:var(--muted)}
.first-step-optional{font-size:var(--fs-9,9px);margin-left:6px;vertical-align:middle}
/* Quando parte il piano e il piano che nasce (14 ottobre) */
.plan-start{border:0;margin:0 0 16px;padding:0;min-width:0}
.plan-start legend{font-size:var(--fs-14,14px);font-weight:600;margin-bottom:10px;padding:0}
.plan-start-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.plan-start-option{position:relative;display:block;cursor:pointer}
.plan-start-option input{position:absolute;opacity:0;pointer-events:none}
.plan-start-option span{display:block;height:100%;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#ffffff05;transition:border-color .2s,background .2s}
.plan-start-option strong{display:block;font-size:var(--fs-13,13px)}
.plan-start-option small{display:block;font-size:var(--fs-11,11px);color:var(--muted);line-height:1.45;margin-top:4px}
.plan-start-option input:checked+span{border-color:#a855f7;background:#a855f714;box-shadow:inset 0 0 0 1px #a855f766}
.plan-start-option input:focus-visible+span{outline:2px solid #a855f7;outline-offset:2px}
.plan-start-note{font-size:var(--fs-11,11px);color:var(--muted);line-height:1.5;margin-top:10px}
@media(max-width:520px){.plan-start-options{grid-template-columns:1fr}}
.plan-build{padding:16px;border:1px solid #a855f74d;border-radius:18px;background:radial-gradient(ellipse at top left,#a855f714,transparent 65%),#ffffff04}
.plan-build.ready{border-color:#34d39966;background:radial-gradient(ellipse at top left,#34d39914,transparent 65%),#ffffff04}
.plan-build.failed{border-color:#fbbf2450;background:#fbbf240a}
.plan-build-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.plan-build-head strong{font-size:var(--fs-15,15px);font-weight:600}
.plan-build-percent{font-size:var(--fs-13,13px);color:var(--muted);font-variant-numeric:tabular-nums}
.plan-build-bar{height:6px;border-radius:99px;background:#ffffff12;overflow:hidden;margin:10px 0 14px}
.plan-build-bar span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#a855f7,#ec4899,#f97316);transition:width .7s cubic-bezier(.2,.8,.2,1)}
.plan-build.ready .plan-build-bar span{background:linear-gradient(90deg,#34d399,#a3e635)}
.plan-build-steps{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.build-step{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:#ffffff05;transition:border-color .4s,background .4s,opacity .4s}
.build-step[data-state="active"]{border-color:#a855f766;background:#a855f70f}
.build-step[data-state="done"]{border-color:#34d39940;background:#34d3990a}
.build-step[data-state="waiting"]{opacity:.55}
.build-mark{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--line);color:#34d399}
.build-step[data-state="active"] .build-mark{border-color:#a855f766}
.build-step[data-state="done"] .build-mark{border-color:#34d39980;background:#34d3991a;animation:build-pop .45s cubic-bezier(.2,1.4,.4,1)}
.build-spin{width:14px;height:14px;border-radius:50%;border:2px solid #a855f7;border-right-color:transparent;animation:spin .9s linear infinite}
.build-step h4{font-size:var(--fs-13,13px);font-weight:600}
.build-step small{display:block;font-size:var(--fs-11,11px);color:var(--muted);line-height:1.45;margin-top:2px}
.build-status{margin-left:auto;font-size:var(--fs-11,11px);color:var(--muted);white-space:nowrap}
.build-step[data-state="done"] .build-status{color:#34d399}
.build-step[data-state="active"] .build-status{color:#d8b4fe}
.build-days-wrap{list-style:none}
.build-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:8px}
.build-day{display:flex;flex-direction:column;gap:6px;min-height:116px;padding:10px 11px;border:1px solid var(--line);border-radius:14px;background:#ffffff05;transition:border-color .4s,background .4s,opacity .4s}
.build-day header{display:flex;align-items:baseline;justify-content:space-between;gap:6px}
.build-day header strong{font-size:var(--fs-12,12px)}
.build-day header small{font-size:var(--fs-11,11px);color:var(--muted)}
.build-day p{flex:1;font-size:var(--fs-11,11px);line-height:1.4;color:var(--ink)}
.build-line{display:block;height:8px;border-radius:4px;margin:5px 0;background:linear-gradient(90deg,#ffffff0a,#ffffff17,#ffffff0a);background-size:200% 100%;animation:shimmer 1.4s linear infinite}
.build-line.short{width:60%}
.build-day footer{display:flex;flex-direction:column;gap:6px}
.build-day-bar{display:block;height:3px;border-radius:2px;background:#ffffff12;overflow:hidden;position:relative}
.build-day[data-state="active"]{border-color:#a855f766;background:#a855f70c}
.build-day[data-state="active"] .build-day-bar::after{content:"";position:absolute;inset:0;width:40%;border-radius:inherit;background:linear-gradient(90deg,transparent,#c084fc,transparent);animation:build-run 1.2s ease-in-out infinite}
.build-day[data-state="done"]{border-color:#34d39950;background:#34d3990d;animation:build-pop .45s cubic-bezier(.2,1.4,.4,1)}
.build-day[data-state="done"] .build-day-bar{background:#34d399}
.build-day[data-state="waiting"]{opacity:.55}
.build-day em{display:flex;align-items:center;gap:4px;font-style:normal;font-size:var(--fs-11,11px);color:var(--muted)}
.build-day[data-state="done"] em{color:#34d399}
.build-day[data-state="active"] em{color:#d8b4fe}
.plan-build-note{font-size:var(--fs-12,12px);color:var(--muted);margin-top:12px;line-height:1.5}
.plan-starts .icon{color:#c084fc}
@keyframes build-run{from{transform:translateX(-100%)}to{transform:translateX(250%)}}
@keyframes build-pop{0%{transform:scale(.94)}60%{transform:scale(1.03)}100%{transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.build-spin,.build-line,.build-day[data-state="active"] .build-day-bar::after{animation:none}.build-day[data-state="done"],.build-step[data-state="done"] .build-mark{animation:none}}
.plan-build.failed .build-spin,.plan-build.failed .build-line,.plan-build.failed .build-day[data-state="active"] .build-day-bar::after{animation:none}
@media(max-width:520px){.plan-build{padding:12px}.build-days{grid-template-columns:1fr 1fr}.build-day{min-height:104px}.build-step{padding:10px}}
.build-day-ready{color:var(--muted)}
.build-day[data-state="later"],.build-step[data-state="later"]{border-style:dashed;border-color:#fbbf2466;background:#fbbf2408}
.build-day[data-state="later"] em{color:#fcd34d}

/* Il tuo piano è pronto (14 ottobre): la presentazione del primo piano e la lista della spesa. */
.first-run-ready{max-width:560px;margin:0 auto}
.plan-presentation h1{font-size:30px;letter-spacing:-1px;margin-top:8px}
/* «È pronto, nome» e accanto, sulla stessa riga, «Guarda l'anteprima»: più piccolo del nome ma ben visibile. Sui telefoni
   stretti il titolo si riduce un poco; con un nome molto lungo va a capo il nome, la scritta resta sulla prima riga. */
.plan-presentation .pp-title{display:flex;align-items:baseline;gap:10px;font-size:clamp(22px,7vw,30px)}
.pp-title>span:first-child{min-width:0}
.pp-preview{flex-shrink:0;white-space:nowrap;font-size:var(--fs-14,14px);font-weight:650;letter-spacing:0;color:#c084fc}
.pp-range{font-size:var(--fs-12,12px);margin:6px 0 18px}
.pp-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:16px}
.pp-day{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 2px;border:1px solid var(--line);border-radius:12px;background:transparent;color:var(--muted);font-size:var(--fs-10,10px);min-width:0}
.pp-day strong{font-size:var(--fs-16,16px);color:var(--ink);font-weight:550}
.pp-day .icon{width:16px;height:16px}
.pp-day.active{background:#a855f71f;border-color:#a855f780;color:#e9d5ff}
.pp-day.active strong{color:#f3e8ff}
.pp-today h2{font-size:var(--fs-15,15px);line-height:1.4;letter-spacing:-.2px}
.pp-chips{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}
.pp-chip{font-size:var(--fs-11,11px);border:1px solid var(--line);border-radius:7px;padding:3px 9px;color:var(--muted)}
.pp-chip.accent{background:#a855f726;border-color:#a855f766;color:#e9d5ff}
.pp-meals{list-style:none;display:grid;gap:8px;font-size:var(--fs-13,13px);padding:0;margin:0}
.pp-meals li{display:flex;gap:12px}.pp-meals li span:first-child{color:var(--muted);min-width:42px}
.pp-how{list-style:none;display:grid;gap:10px;margin:18px 0;font-size:var(--fs-13,13px);padding:0}
.pp-how li{display:flex;gap:10px;align-items:flex-start}.pp-how .icon{flex-shrink:0;margin-top:2px;color:var(--muted)}
.shopping-range{font-size:var(--fs-12,12px)}
.shopping-list{list-style:none;display:grid;margin-top:12px;padding:0}
.shopping-list li{border-bottom:1px solid var(--line)}
.shopping-list label{display:flex;align-items:center;gap:12px;padding:12px 0;font-size:var(--fs-13,13px)}
.shopping-list strong{margin-left:auto;font-weight:550;white-space:nowrap}
.shopping-list input{width:18px;height:18px;accent-color:#a855f7;flex-shrink:0}
.shopping-list input:checked+span{text-decoration:line-through;color:var(--muted)}
.shopping-card .section-head .icon{color:var(--muted)}
.shopping-all{display:flex;align-items:center;gap:12px;margin-top:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:var(--fs-13,13px);font-weight:600}
.shopping-all input{width:18px;height:18px;accent-color:#a855f7;flex-shrink:0}
.shopping-all small{margin-left:auto;font-weight:450;color:var(--muted)}
/* Halal e kosher (18 ottobre): cosa controllare quando si compra, sopra la lista. */
.shopping-notes{margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;font-size:var(--fs-12,12px);line-height:1.45}
.shopping-notes h3{font-size:var(--fs-13,13px);margin:0 0 6px}
.shopping-notes ul{margin:0 0 6px;padding-left:18px;display:grid;gap:4px}
.shopping-notes p{margin:0;color:var(--muted)}
.weight-goal-note{margin:10px 0 0;font-size:var(--fs-12,12px);line-height:1.45;color:var(--muted)}
.shopping-all+.shopping-list{margin-top:0}
