  :root{
    --pink:#FFD6E0; --pink-deep:#F4A6B8;
    --lavender:#E0D4F7; --lavender-deep:#B59FE0;
    --peach:#FFE4D1; --peach-deep:#F4B996;
    --mint:#D4F4DD; --mint-deep:#88D4A3;
    --cream:#FFF8E7;
    --blue:#D6E4FA; --blue-deep:#7DA8E8;
    --bg:#FEFAF6; --card:#FFFFFF;
    --ink:#3D2C3F; --ink-soft:#7B6B7D; --ink-muted:#B5A8B7;
    --border:rgba(180,160,185,0.18);
    --shadow:0 4px 18px rgba(180,140,180,0.10);
    --radius-lg:22px; --radius-md:16px; --radius-sm:12px;
    --tabbar-h:74px;
    --safe-bottom:env(safe-area-inset-bottom, 0px);
    --safe-top:env(safe-area-inset-top, 0px);
    --safe-left:env(safe-area-inset-left, 0px);
    --safe-right:env(safe-area-inset-right, 0px);
    /* per-tab accent (overridden per tab) */
    --accent:var(--pink); --accent-deep:var(--pink-deep);
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
  html,body{margin:0;padding:0;color:var(--ink);font-family:'Nunito',system-ui,-apple-system,sans-serif;font-weight:600;min-height:100vh;}
  /* iOS standalone PWA — respect safe areas */
  body.pwa-standalone #screen{padding-top:calc(6px + var(--safe-top))!important;padding-left:calc(16px + var(--safe-left))!important;padding-right:calc(16px + var(--safe-right))!important;}
  body.pwa-standalone #tabbar{padding-bottom:calc(8px + var(--safe-bottom));}
  body.pwa-standalone #lang-toggle{top:calc(14px + var(--safe-top));right:calc(14px + var(--safe-right));}
  /* ===== MOBILE-ONLY — Ensure lang toggle stays pinned and always visible ===== */
  @media (max-width:760px){
    #lang-toggle{
      position:fixed!important;
      top:calc(14px + var(--safe-top))!important;
      right:calc(14px + var(--safe-right))!important;
      bottom:auto!important;
      left:auto!important;
      z-index:1000!important;
    }
  }
  body.pwa-standalone{overscroll-behavior-y:none;-webkit-overflow-scrolling:touch;}

  /* ===== SPLASH SCREEN (auto-removed by render()) ===== */
  /* ============ ACCESS LOCK ============ */
  #access-lock{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;font-family:Nunito,sans-serif;overflow:hidden;opacity:1;animation:alFadeIn .4s ease forwards;}
  @keyframes alFadeIn{from{opacity:0;}to{opacity:1;}}
  #access-lock .al-bg{position:absolute;inset:-40px;background:url('vera1.jpeg') center/cover no-repeat;filter:blur(22px) saturate(1.1);transform:scale(1.1);}
  #access-lock .al-overlay{position:absolute;inset:0;background:radial-gradient(circle at center, rgba(60,30,60,0.55) 0%, rgba(20,10,30,0.85) 100%);}
  #access-lock .al-content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:28px;padding:24px;max-width:420px;width:100%;}
  #access-lock .al-logo{display:flex;align-items:center;gap:10px;color:#fff;}
  #access-lock .al-flower{font-size:28px;animation:alFlower 3.5s ease-in-out infinite;display:inline-block;}
  @keyframes alFlower{0%,100%{transform:rotate(-5deg) scale(1);}50%{transform:rotate(5deg) scale(1.08);}}
  #access-lock .al-brand{font-size:18px;font-weight:900;letter-spacing:1px;text-shadow:0 2px 12px rgba(0,0,0,0.4);}
  #access-lock .al-card{background:rgba(255,255,255,0.10);backdrop-filter:blur(24px) saturate(1.3);-webkit-backdrop-filter:blur(24px) saturate(1.3);border:1px solid rgba(255,255,255,0.22);border-radius:24px;padding:32px 28px;width:100%;box-shadow:0 24px 60px rgba(0,0,0,0.5);animation:alCardIn .5s cubic-bezier(.22,.65,.4,1);}
  @keyframes alCardIn{from{transform:translateY(20px);opacity:0;}to{transform:translateY(0);opacity:1;}}
  #access-lock .al-title{font-size:24px;font-weight:900;color:#fff;text-align:center;letter-spacing:0.3px;}
  #access-lock .al-sub{font-size:13px;font-weight:700;color:rgba(255,255,255,0.78);text-align:center;margin-top:6px;margin-bottom:22px;}
  #access-lock .al-input-wrap{position:relative;}
  #access-lock #al-pw{width:100%;padding:14px 44px 14px 16px;border:1px solid rgba(255,255,255,0.25);background:rgba(255,255,255,0.08);border-radius:14px;font-family:Nunito,sans-serif;font-size:15px;font-weight:700;color:#fff;outline:none;transition:border-color .2s, background .2s;letter-spacing:1px;}
  #access-lock #al-pw::placeholder{color:rgba(255,255,255,0.45);letter-spacing:0.5px;font-weight:500;}
  #access-lock #al-pw:focus{border-color:#F4A6B8;background:rgba(255,255,255,0.14);box-shadow:0 0 0 4px rgba(244,166,184,0.18);}
  #access-lock .al-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:0;font-size:16px;cursor:pointer;padding:8px;opacity:0.6;}
  #access-lock .al-eye:hover{opacity:1;}
  #access-lock .al-trust{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:rgba(255,255,255,0.8);margin:14px 0 16px;cursor:pointer;user-select:none;}
  #access-lock .al-trust input{accent-color:#F4A6B8;width:16px;height:16px;cursor:pointer;}
  #access-lock .al-btn{width:100%;padding:14px;border:0;border-radius:14px;background:linear-gradient(135deg,#F4A6B8,#D8456D);color:#fff;font-family:Nunito,sans-serif;font-size:14px;font-weight:900;letter-spacing:1px;cursor:pointer;text-transform:uppercase;transition:transform .15s, box-shadow .15s;box-shadow:0 6px 20px rgba(216,69,109,0.35);}
  #access-lock .al-btn:hover{transform:translateY(-1px);box-shadow:0 10px 28px rgba(216,69,109,0.5);}
  #access-lock .al-btn:active{transform:translateY(0);}
  #access-lock .al-btn:disabled{opacity:0.5;cursor:not-allowed;}
  #access-lock .al-err{min-height:18px;text-align:center;font-size:12px;font-weight:800;color:#FFB4C0;margin-top:10px;letter-spacing:0.3px;}
  #access-lock .al-card.shake{animation:alShake .55s cubic-bezier(.36,.07,.19,.97);}
  @keyframes alShake{
    0%,100%{transform:translateX(0);}
    10%,30%,50%,70%,90%{transform:translateX(-8px);}
    20%,40%,60%,80%{transform:translateX(8px);}
  }
  #access-lock .al-foot{font-size:10px;font-weight:800;color:rgba(255,255,255,0.5);text-align:center;margin-top:18px;letter-spacing:1.5px;text-transform:uppercase;}
  #access-lock.unlocking{animation:alFadeOut .5s ease forwards;}
  @keyframes alFadeOut{to{opacity:0;transform:scale(1.04);}}

  #app-splash{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;
    background:radial-gradient(at 30% 20%, #FFE5EC 0%, transparent 55%),
               radial-gradient(at 80% 40%, #FFD6E0 0%, transparent 50%),
               radial-gradient(at 50% 90%, #EDE4FB 0%, transparent 55%),
               #FEFAF6;
    transition:opacity 0.3s ease;pointer-events:none;}
  #app-splash.gone{opacity:0;}
  .splash-flower{font-size:54px;animation:splash-pulse 1.4s ease-in-out infinite;}
  @keyframes splash-pulse{
    0%,100%{transform:scale(1);opacity:0.9;}
    50%{transform:scale(1.12);opacity:1;}
  }
  /* Tap response: kill 300ms iOS click delay on interactive controls */
  .btn,.tab-btn,.subtab,.chip,.hl-sym,.hl-mood-btn,.hl-cta,.ea-chip,.ea-btn,.ea-card-menu,.rd-card,.ea-card,.hl-card,.card,.card.top3,.col-add-mini,.hb-add-small,.upcoming-add-mini{touch-action:manipulation;}
  body{overscroll-behavior-y:contain;transition:background 0.5s ease;}
  /* Per-tab tinted backgrounds.
     Painted on <html> (root) so the canvas — including the iOS rubber-band
     overscroll area above/below the page — is one continuous surface with no seam. */
  /* <html> gets a solid color = the tab's top color, so the iOS rubber-band
     overscroll area blends into the page. The body gradient starts with a
     uniform strip of that same color at the very top → no visible seam. */
  html{background:var(--bg);transition:background 0.5s ease;}
  html:has(body[data-tab="today"]){background:#FFE5EC;}
  html:has(body[data-tab="plan"]) {background:#EDE4FB;}
  html:has(body[data-tab="life"]) {background:#FFEFE0;}
  html:has(body[data-tab="me"])   {background:#E2F8E9;}
  body[data-tab="today"]{
    background:linear-gradient(180deg, #FFE5EC 0px, rgba(255,229,236,0) 140px),
               radial-gradient(at 15% 0%, #FFE5EC 0%, transparent 45%),
               radial-gradient(at 85% 25%, #FFD6E0 0%, transparent 40%),
               radial-gradient(at 50% 100%, #FFEFE0 0%, transparent 45%),
               var(--bg);
    --accent:var(--pink); --accent-deep:var(--pink-deep);
  }
  body[data-tab="plan"]{
    background:linear-gradient(180deg, #EDE4FB 0px, rgba(237,228,251,0) 140px),
               radial-gradient(at 15% 0%, #EDE4FB 0%, transparent 50%),
               radial-gradient(at 85% 20%, #DCCFF5 0%, transparent 45%),
               radial-gradient(at 60% 100%, #F4ECFF 0%, transparent 45%),
               var(--bg);
    --accent:var(--lavender); --accent-deep:var(--lavender-deep);
  }
  body[data-tab="life"]{
    background:linear-gradient(180deg, #FFEFE0 0px, rgba(255,239,224,0) 140px),
               radial-gradient(at 15% 0%, #FFEFE0 0%, transparent 55%),
               radial-gradient(at 85% 20%, #FFE4D1 0%, transparent 45%),
               radial-gradient(at 60% 100%, #FFF1C7 0%, transparent 45%),
               var(--bg);
    --accent:var(--peach); --accent-deep:var(--peach-deep);
  }
  body[data-tab="me"]{
    background:linear-gradient(180deg, #E2F8E9 0px, rgba(226,248,233,0) 140px),
               radial-gradient(at 15% 0%, #E2F8E9 0%, transparent 55%),
               radial-gradient(at 85% 20%, #D4F4DD 0%, transparent 45%),
               radial-gradient(at 60% 100%, #EDFFEF 0%, transparent 45%),
               var(--bg);
    --accent:var(--mint); --accent-deep:var(--mint-deep);
  }
  button{font-family:inherit;border:none;background:none;cursor:pointer;color:inherit;font-weight:700;}
  input,textarea,select{font-family:inherit;font-weight:600;color:var(--ink);}
  ::-webkit-scrollbar{width:0;height:0;}

  /* MOBILE */
  #app{max-width:480px;margin:0 auto;min-height:100vh;position:relative;}
  #screen{padding:10px 18px calc(var(--tabbar-h) + var(--safe-bottom) + 30px);}
  /* Mobile: scroll INSIDE #screen instead of the document. The page itself never
     rubber-bands, so pulling down can't reveal a different color — no seam. */
  @media (max-width:767px){
    html,body{height:100%;overflow:hidden;}
    #app{height:100dvh;min-height:0;}
    #screen{height:100dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;}
    /* App only: la alerta "Cumple de X en N días" sobra — el widget de próximo cumple ya lo dice */
    .alert.alert-bday-soon{display:none!important;}
    /* App only: tareas del Top 3 coloreadas por proyecto — morado ITP, rosa personal */
    .card.top3 .row.proj-itp,
    .card.top3 .row.proj-personal{border-radius:12px;padding:8px 10px!important;border-bottom:none;margin-bottom:6px;}
    .card.top3 .row.proj-itp{background:linear-gradient(135deg,#EDE4FB,#DCCFF5);}
    .card.top3 .row.proj-personal{background:linear-gradient(135deg,#FFD6E0,#FFC3D2);}
  }

  #tabbar{
    position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:480px;
    height:calc(var(--tabbar-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);
    background:rgba(255,255,255,0.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
    border-top:1px solid var(--border);display:flex;align-items:stretch;justify-content:space-around;z-index:50;
  }
  .tab-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--ink-muted);font-size:11px;font-weight:700;letter-spacing:0.3px;transition:color .2s;}
  .tab-btn .ic{width:24px;height:24px;stroke-width:2;}
  .tab-btn.active{color:var(--ink);}
  .tab-btn .pill{width:40px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:14px;transition:all .25s;background:transparent;}
  .tab-btn.active .pill{background:var(--accent);box-shadow:0 4px 14px rgba(180,150,180,0.35);}
  .sidebar-brand,.sidebar-foot,#bloom-sidebar-chip{display:none;}

  /* Lang toggle — oculto: el idioma se elige al final de la pestaña Hoy */
  #lang-toggle{
    display:none!important;
    position:fixed;top:14px;right:14px;z-index:60;
    background:rgba(255,255,255,0.92);backdrop-filter:blur(12px);
    border:1px solid var(--border);padding:6px 10px;border-radius:999px;
    font-size:10px;font-weight:800;color:var(--ink-soft);letter-spacing:1px;
    box-shadow:var(--shadow);display:flex;gap:4px;align-items:center;
  }
  #lang-toggle span{padding:2px 6px;border-radius:99px;color:var(--ink-muted);}
  #lang-toggle span.on{background:var(--accent);color:var(--ink);}
  /* Selector de idioma al final de la pestaña Hoy */
  .today-quote-footer{margin-top:14px;}
  .today-lang-footer{display:flex;justify-content:center;gap:6px;margin:18px 0 8px;}
  .lang-pill{background:rgba(255,255,255,0.92);border:1px solid var(--border);border-radius:99px;padding:6px 16px;font-size:11px;font-weight:800;letter-spacing:1px;color:var(--ink-muted);cursor:pointer;box-shadow:var(--shadow);}
  .lang-pill.on{background:var(--accent);color:var(--ink);}

  /* DESKTOP / TABLET — edge to edge, content LEFT + sidebar RIGHT */
  @media (min-width:768px){
    html,body{height:auto;min-height:100%;width:100%;direction:ltr;}
    body{padding:0;margin:0;}
    /* App becomes a flex layout: content + sidebar */
    #app{
      max-width:none !important;width:100% !important;margin:0 !important;
      min-height:100vh;
      display:flex;flex-direction:row;align-items:stretch;
      background:transparent;
      position:static;
    }
    /* Force order: sidebar first (LEFT), content last (RIGHT) */
    #tabbar{order:1;}
    #screen{order:2;}
    /* Sidebar: pinned to the LEFT edge, full height */
    #tabbar{
      position:sticky !important;top:0;left:auto;right:auto;bottom:auto;transform:none !important;
      width:240px;max-width:240px;min-width:240px;flex-shrink:0;
      height:100vh;
      flex-direction:column;align-items:stretch;justify-content:flex-start;
      padding:24px 16px 16px;
      border-top:none;border-right:1px solid var(--border);border-left:none;border-radius:0;
      background:rgba(255,255,255,0.82);
      backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
      box-shadow:none;gap:4px;overflow-y:auto;z-index:50;
    }
    .sidebar-brand{
      display:flex;align-items:center;gap:10px;padding:4px 8px 16px;
      border-bottom:1px solid var(--border);margin-bottom:8px;
    }
    .sidebar-brand .bm{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#FFD6E0,#E0D4F7);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;overflow:hidden;box-shadow:0 2px 6px rgba(180,150,180,0.22);}
    .sidebar-brand .bm img{width:100%;height:100%;object-fit:cover;display:block;}
    .sidebar-brand .bt{font-size:14px;font-weight:800;color:var(--ink);line-height:1.2;cursor:pointer;padding:6px 10px;border-radius:10px;transition:background .15s ease;}
    .sidebar-brand .bt:hover{background:rgba(180,160,220,0.12);}
    body[data-tab="today"] .sidebar-brand .bt{background:linear-gradient(135deg,#FFE5EC,#FFD6E0);box-shadow:0 2px 8px rgba(244,166,184,0.25);}
    /* Hide the redundant Today tab on desktop — brand replaces it */
    .tab-btn[data-tab="today"]{display:none;}
    .sidebar-brand .bt small{display:block;font-size:10px;color:var(--ink-soft);font-weight:600;letter-spacing:0.4px;margin-top:2px;}
    .sidebar-foot{display:block;margin-top:auto;padding-top:14px;border-top:1px solid var(--border);font-size:10px;color:var(--ink-soft);text-align:center;}
    .tab-btn{flex:0 0 auto;flex-direction:row;justify-content:flex-start;padding:10px 12px;border-radius:13px;gap:11px;font-size:14px;color:var(--ink-soft);}
    .tab-btn .pill{width:32px;height:32px;border-radius:10px;background:#FAF5F2;box-shadow:none;}
    .tab-btn.active{color:var(--ink);}
    .tab-btn.active .pill{background:#fff;box-shadow:0 2px 8px rgba(180,150,180,0.18);}
    .tab-btn .ic{width:18px;height:18px;}
    body[data-tab="today"] .tab-btn.active{background:linear-gradient(135deg,#FFE5EC,#FFD6E0);}
    body[data-tab="plan"]  .tab-btn.active{background:linear-gradient(135deg,#EDE4FB,#E0D4F7);}
    body[data-tab="life"]  .tab-btn.active{background:linear-gradient(135deg,#FFEFE0,#FFE4D1);}
    body[data-tab="me"]    .tab-btn.active{background:linear-gradient(135deg,#E2F8E9,#D4F4DD);}

    /* Content fills all remaining horizontal space */
    #screen{
      flex:1 1 auto;min-width:0;
      padding:16px 32px 60px !important;
      max-width:none;width:auto;
      min-height:100vh;
    }

    /* Columns inside content */
    .cols{column-count:1;column-gap:18px;column-fill:balance;}
    .cols > *{margin-bottom:14px;}
    .cols > .card,.cols > .item,.cols > .ach,.cols > .jrnl,.cols > .him{
      break-inside:avoid;-webkit-column-break-inside:avoid;page-break-inside:avoid;
    }
    .cols > .section-title{break-after:avoid;-webkit-column-break-after:avoid;margin-top:0;}
    .cols > button.btn.block{break-inside:avoid;}

    .widgets{grid-template-columns:repeat(4,1fr);}
    .subtabs{flex-wrap:wrap;}
    .modal-bg{align-items:center;}
    .modal{max-width:520px;border-radius:22px;}
    .hello-name{font-size:32px;}
    .header{margin-bottom:22px;}
    /* lang toggle: at the bottom of the sidebar (Marta's Space area) */
    #lang-toggle{position:fixed;top:auto;right:auto;left:16px;bottom:42px;width:208px;justify-content:center;padding:8px 10px;font-size:11px;}
    #lang-toggle span{padding:3px 10px;}
  }
  /* column counts scale with width */
  @media (min-width:1000px){.cols{column-count:2;} #screen{padding:18px 40px 60px !important;}}
  @media (min-width:1400px){.cols{column-count:3;}}
  @media (min-width:1800px){.cols{column-count:4;} #screen{padding:20px 56px 60px !important;}}

  /* HEADER */
  .header{margin-bottom:18px;}
  .hello{font-size:13px;color:var(--ink-soft);font-weight:600;letter-spacing:0.3px;text-transform:uppercase;}
  .hello-name{font-size:28px;font-weight:800;color:var(--ink);margin-top:4px;line-height:1.2;}
  .hello-name .emoji{font-size:24px;margin-left:6px;}
  .subhead{font-size:13px;color:var(--ink-soft);margin-top:4px;}
  /* Today header layout (avatar on the right) */
  .header.today-header{display:flex;align-items:center;gap:14px;padding-top:8px;}
  .header.today-header .head-text{flex:1;min-width:0;}
  @media (min-width:768px){
    .header.today-header{padding-top:0;padding-right:0;}
  }
  .today-avatar{width:68px;height:68px;border-radius:50%;background:linear-gradient(135deg,#FFE5EC,#EDE4FB);display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:0 4px 14px rgba(180,150,180,0.22);border:3px solid #fff;flex-shrink:0;}
  .today-avatar img{width:100%;height:100%;object-fit:cover;display:block;}
  .today-avatar .avatar-letter{font-family:'Nunito',sans-serif;font-size:26px;font-weight:800;color:var(--ink);letter-spacing:-1px;}
  /* Avatar camera badge — discreet hint that it's clickable */
  [data-open-avatar]{position:relative;cursor:pointer;}
  [data-open-avatar] .avatar-cam{position:absolute;bottom:-2px;right:-2px;width:22px;height:22px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;box-shadow:0 2px 6px rgba(120,90,150,0.3);opacity:0;transition:opacity .15s ease, transform .15s ease;transform:scale(0.7);pointer-events:none;}
  [data-open-avatar]:hover .avatar-cam{opacity:1;transform:scale(1);}
  .sidebar-brand .bm.bm .avatar-cam{width:18px;height:18px;font-size:10px;bottom:-3px;right:-3px;}
  /* Avatar modal preview */
  .avatar-preview{width:160px;height:160px;border-radius:50%;margin:14px auto 18px;border:5px solid #fff;box-shadow:0 6px 24px rgba(180,150,180,0.35);overflow:hidden;background:linear-gradient(135deg,#FFE5EC,#EDE4FB);display:flex;align-items:center;justify-content:center;}
  .avatar-preview img{width:100%;height:100%;object-fit:cover;display:block;}
  .avatar-format-hint{font-size:11px;color:var(--ink-soft);font-weight:600;margin-top:10px;text-align:center;}

  /* Top 3 emphasis */
  .card.top3{border:2px solid var(--pink-deep);background:linear-gradient(135deg,#FFFDFB 0%,#FFE5EC 100%);padding:20px;box-shadow:0 8px 24px rgba(244,166,184,0.18);}
  .card.top3 .card-title{font-size:13px;color:#8B3A52;}
  .card.top3 .row{padding:8px 0;}
  .card.top3 .row .ttl{font-size:15px;}
  /* Today reminder card details */
  .today-rem-details{margin-top:12px;padding-top:10px;border-top:1px dashed rgba(244,166,184,0.45);display:flex;flex-direction:column;gap:6px;}
  .today-rem-details .ln{font-size:12px;color:var(--ink-soft);font-weight:700;display:flex;align-items:center;gap:6px;}
  .today-rem-details .ln .nm{color:var(--ink);font-weight:800;}

  /* TODAY'S FOCUS widget (coral) */
  .widget.focus{background:linear-gradient(135deg,#FFE7E0 0%,#FFCDC0 100%);padding:12px;justify-content:flex-start;}
  .widget.focus .label{color:#7B3A2B;}
  .widget.focus .focus-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;flex:1;text-align:center;}
  .widget.focus .focus-empty .hint{font-size:11px;color:#7B3A2B;font-weight:700;line-height:1.3;}
  .widget.focus .focus-empty .set-btn{font-size:11px;font-weight:800;background:#fff;color:#7B3A2B;padding:6px 12px;border-radius:99px;border:none;box-shadow:0 2px 8px rgba(244,150,120,0.25);cursor:pointer;}
  .widget.focus .focus-row{display:flex;align-items:flex-start;gap:8px;flex:1;}
  .widget.focus .focus-check{width:22px;height:22px;border-radius:50%;border:2px solid #E08772;background:#fff;flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;margin-top:1px;}
  .widget.focus .focus-check.done{background:#E08772;border-color:#E08772;animation:focus-pop .35s ease;}
  @keyframes focus-pop{0%{transform:scale(1);}45%{transform:scale(1.25);}100%{transform:scale(1);}}
  .widget.focus .focus-text{font-size:13px;font-weight:800;color:var(--ink);line-height:1.25;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;cursor:pointer;}
  .widget.focus .focus-text.done{text-decoration:line-through;color:var(--ink-soft);opacity:0.7;}
  .widget.focus .focus-actions{position:absolute;top:6px;right:6px;display:flex;gap:3px;opacity:0;transition:opacity .15s;}
  .widget.focus:hover .focus-actions{opacity:1;}
  .widget.focus .focus-actions button{width:22px;height:22px;border-radius:7px;background:rgba(255,255,255,0.85);border:none;font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;}
  /* Focus reflection (after 8pm) */
  .focus-reflect{margin-top:8px;background:#fff;border-radius:10px;padding:8px;border:1px dashed rgba(224,135,114,0.4);}
  .focus-reflect .rq{font-size:10px;font-weight:800;color:#7B3A2B;margin-bottom:5px;line-height:1.2;}
  .focus-reflect textarea{width:100%;background:transparent;border:none;font-size:11px;font-weight:600;color:var(--ink);resize:none;font-family:inherit;outline:none;min-height:32px;}
  .focus-reflect .rsave{font-size:10px;font-weight:800;color:#E08772;background:transparent;border:none;cursor:pointer;padding:0;margin-top:2px;}
  /* Top 3 — focus pinned at top */
  .focus-pinned{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:12px;background:linear-gradient(135deg,#FFE7E0,#FFCDC0);margin-bottom:8px;border:1.5px solid #E08772;}
  .focus-pinned .fp-emoji{font-size:18px;}
  .focus-pinned .fp-text{font-size:14px;font-weight:800;color:var(--ink);flex:1;line-height:1.2;}
  .focus-pinned .fp-text.done{text-decoration:line-through;color:var(--ink-soft);opacity:0.7;}

  /* SPORT CARD — Glance + Tap redesign */
  .card.sport{background:linear-gradient(135deg,#F0FBF3 0%,#E2F7E8 100%);border:1px solid #C5E8D2;padding:18px 16px;position:relative;overflow:hidden;}
  .sport-card-clickable{font-family:Nunito,sans-serif;transition:transform .15s, box-shadow .15s;display:block;}
  .sport-card-clickable:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(95,176,119,0.22);}

  .next-up-card{transition:transform .15s, box-shadow .15s;}
  .next-up-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(180,140,200,0.18);}

  /* Today rows — three columns aligned horizontally on desktop with breathing room */
  .today-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:22px;margin-bottom:22px;align-items:stretch;}
  .today-row:has(> :nth-child(2):last-child){grid-template-columns:1fr 1fr;}
  .today-row > .card{margin-bottom:0;height:100%;display:flex;flex-direction:column;padding:18px;}
  @media (max-width:900px){.today-row{grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;}}
  @media (max-width:560px){.today-row{grid-template-columns:1fr;gap:14px;margin-bottom:14px;}}

  /* Kcal balance card — clean redesign */
  .card.kcal-bal{background:linear-gradient(135deg,#FFF5F7 0%,#FFFBEC 100%);border:1px solid #F4C2CE;}
  .kb-headline-inline{margin-left:auto;font-size:13px;font-weight:900;padding:3px 10px;border-radius:99px;background:#fff;color:var(--ink);}
  .kb-headline-inline.positive{background:#FFE5EC;color:#B23B5A;}
  .kb-headline-inline.negative{background:#E2F5E7;color:#2E7D5B;}

  .kb-pills{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0 10px;}
  .kb-pill{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:11px;cursor:pointer;font-family:Nunito,sans-serif;text-align:left;transition:transform .15s, box-shadow .15s;width:100%;border:1px solid;}
  .kb-pill:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,0.08);}
  .kb-pill.intake{background:linear-gradient(135deg,#E2F5E7,#F2FBEF);border-color:#B7DDC2;}
  .kb-pill.burned{background:linear-gradient(135deg,#FFE5EC,#FFF1F4);border-color:#F4C2CE;}
  .kb-pill .kp-emo{font-size:18px;flex-shrink:0;}
  .kb-pill .kp-body{display:flex;flex-direction:column;gap:1px;min-width:0;}
  .kb-pill .kp-lbl{font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;}
  .kb-pill .kp-num{font-size:15px;font-weight:900;color:var(--ink);line-height:1;display:inline-flex;align-items:baseline;gap:3px;}
  .kb-pill .kp-num i{font-size:9px;font-style:normal;font-weight:700;color:var(--ink-soft);text-transform:uppercase;}
  .kb-pill.intake .kp-num{color:#2E7D5B;}
  .kb-pill.burned .kp-num{color:#B23B5A;}

  .kb-week{display:flex;align-items:flex-end;gap:5px;height:60px;padding:4px 0 0;}
  .kb-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;padding:3px 0;border-radius:8px;}
  .kb-col.today{background:rgba(180,140,200,0.10);}
  .kb-bars{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:3px;}
  .kb-bar{width:38%;border-radius:4px 4px 0 0;min-height:2px;transition:height .4s cubic-bezier(.22,.65,.4,1);}
  .kb-bar.intake{background:linear-gradient(180deg,#88D4A3,#5FB077);}
  .kb-bar.burned{background:linear-gradient(180deg,#F4A6B8,#D8456D);}
  .kb-day-lbl{font-size:10px;font-weight:800;color:var(--ink-soft);}
  .kb-col.today .kb-day-lbl{color:#D8456D;}

  .kb-goal-line{font-size:10px;font-weight:700;color:#5A4585;text-align:center;margin-top:8px;padding-top:8px;border-top:1px dashed rgba(0,0,0,0.06);}
  .kb-mini-stats{display:flex;flex-direction:column;gap:5px;margin-top:10px;padding-top:8px;border-top:1px dashed rgba(0,0,0,0.06);}
  .kb-ms{display:flex;align-items:center;gap:8px;font-size:10px;font-weight:700;color:var(--ink-soft);}
  .kb-ms .ic{font-size:12px;}
  .kb-ms .lb{flex:1;text-transform:uppercase;letter-spacing:0.3px;}
  .kb-ms .vl{font-weight:800;color:var(--ink);}
  .kb-ms b{font-weight:900;}
  .sport-zones{display:flex;flex-direction:column;gap:18px;align-items:stretch;}
  /* Compact horizontal sport layout */
  .sp-compact{display:flex;align-items:center;gap:14px;margin-top:6px;}
  .sp-compact-right{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;}
  .sp-stats-inline{display:flex;gap:10px;font-size:11px;font-weight:700;color:#2F6B47;}
  .sp-stats-inline b{font-weight:900;color:var(--ink);}
  .sp-extras{margin-top:12px;padding-top:10px;border-top:1px dashed rgba(95,176,119,0.3);display:flex;flex-direction:column;gap:8px;}
  .sp-week-goal{display:flex;flex-direction:column;gap:5px;}
  .sp-wg-h{display:flex;align-items:center;justify-content:space-between;font-size:10px;font-weight:800;color:#2F6B47;text-transform:uppercase;letter-spacing:0.4px;}
  .sp-wg-v{font-weight:900;color:var(--ink);}
  .sp-wg-bar{height:6px;background:rgba(0,0,0,0.05);border-radius:99px;overflow:hidden;}
  .sp-wg-bar span{display:block;height:100%;background:linear-gradient(90deg,#88D4A3,#5BBF82);border-radius:99px;transition:width .5s ease;}
  .sp-extras-row{display:flex;flex-direction:column;gap:5px;}
  .sp-chip{font-size:10px;font-weight:800;color:#2F6B47;background:#fff;border:1px solid #C5E8D2;padding:5px 10px;border-radius:99px;display:inline-block;align-self:flex-start;}
  .sp-chip b{font-weight:900;color:var(--ink);}
  .sp-mot-line{font-size:10px;font-weight:700;color:#2F6B47;font-style:italic;line-height:1.4;}
  .sp-mot-banner{margin-top:14px;padding:14px 16px;background:linear-gradient(135deg,rgba(255,255,255,0.7),rgba(232,245,236,0.7));border:1px dashed rgba(95,176,119,0.4);border-radius:12px;font-size:12px;font-weight:700;color:#2F6B47;font-style:italic;line-height:1.5;text-align:center;}
  /* Zone 1 — Today */
  .sp-zone{display:flex;flex-direction:column;align-items:center;text-align:center;}
  .sp-zone-l{font-size:9px;font-weight:700;letter-spacing:0.8px;color:#2F6B47;text-transform:uppercase;margin-bottom:8px;opacity:0.7;}
  .sp-ring{position:relative;width:88px;height:88px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .sp-ring svg{width:100%;height:100%;transform:rotate(-90deg);}
  .sp-ring .ring-bg{fill:none;stroke:#DFF0E5;stroke-width:10;}
  .sp-ring .ring-fg{fill:none;stroke:url(#sp-grad);stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset 1s cubic-bezier(0.4,0,0.2,1);}
  .sp-ring .ring-fg.full{stroke:#5BBF82;}
  .sp-ring-center{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;}
  .sp-ring-center .n{font-size:24px;font-weight:700;color:var(--ink);letter-spacing:-0.5px;}
  .sp-ring-center .lb{font-size:9px;color:#2F6B47;font-weight:700;margin-top:3px;letter-spacing:0.3px;}
  .sp-ring-center .goal{font-size:9px;color:var(--ink-soft);font-weight:600;margin-top:1px;}
  .sp-today-line{font-size:12px;font-weight:600;color:var(--ink);margin-top:10px;line-height:1.3;min-height:18px;}
  .sp-add-btn{margin-top:8px;background:#fff;color:#2F6B47;border:none;border-radius:99px;padding:7px 14px;font-size:11px;font-weight:700;cursor:pointer;box-shadow:0 2px 8px rgba(136,212,163,0.3);transition:transform .12s ease, box-shadow .12s ease;}
  .sp-add-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(136,212,163,0.4);}
  /* Zone 2 — Week */
  .sp-week-row{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;width:100%;}
  .sp-day{aspect-ratio:1;border-radius:8px;background:#E9F4EC;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:3px 0 0;position:relative;transition:background .35s ease, transform .12s ease;}
  .sp-day .dn{font-size:8px;font-weight:700;color:var(--ink-soft);letter-spacing:0.3px;}
  .sp-day.t1{background:#CDEED7;}
  .sp-day.t2{background:#9DDDB3;}
  .sp-day.t3{background:#5BBF82;}
  .sp-day.t1 .dn,.sp-day.t2 .dn,.sp-day.t3 .dn{color:#1F4F32;}
  .sp-day.t3 .dn{color:#fff;}
  .sp-day.today-d{box-shadow:inset 0 0 0 2px #2F6B47;}
  .sp-stats{display:flex;flex-direction:column;gap:5px;width:100%;}
  .sp-stat{display:flex;align-items:center;gap:6px;font-size:11px;color:#2F6B47;font-weight:600;}
  .sp-stat .ic{font-size:13px;flex-shrink:0;}
  .sp-stat .nm{font-weight:700;color:var(--ink);}
  /* Zone 3 — Achievement */
  .sp-zone.zone3{justify-content:space-between;}
  .sp-badge{background:#fff;border-radius:14px;padding:10px;text-align:center;box-shadow:0 2px 10px rgba(136,212,163,0.18);border:1px solid #DFF0E5;width:100%;}
  .sp-badge .bg-emo{font-size:22px;line-height:1;}
  .sp-badge .bg-ttl{font-size:11px;font-weight:700;color:var(--ink);margin-top:5px;line-height:1.25;}
  .sp-mot{font-size:11px;color:#2F6B47;font-weight:600;font-style:italic;line-height:1.35;margin:10px 4px 0;}
  .sp-more{margin-top:10px;background:transparent;border:none;color:#2F6B47;font-size:11px;font-weight:700;cursor:pointer;padding:4px 8px;border-radius:6px;transition:background .12s ease;}
  .sp-more:hover{background:rgba(136,212,163,0.18);}
  /* Mobile collapse */
  @media (max-width:640px){
    .sport-zones{grid-template-columns:1fr;gap:18px;}
    .sp-zone{align-items:center;}
    .sp-stats{align-items:center;}
    .sp-stat{justify-content:center;}
  }
  /* Confetti (pastel) — emits short bursts */
  .sp-confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden;}
  .sp-confetti i{position:absolute;width:8px;height:8px;border-radius:2px;opacity:0;animation:sp-conf 1.8s ease-out forwards;}
  .sp-confetti i:nth-child(1){left:18%;background:#F4A6B8;animation-delay:0s;}
  .sp-confetti i:nth-child(2){left:32%;background:#B59FE0;animation-delay:.12s;}
  .sp-confetti i:nth-child(3){left:46%;background:#F4B996;animation-delay:.05s;}
  .sp-confetti i:nth-child(4){left:60%;background:#88D4A3;animation-delay:.2s;}
  .sp-confetti i:nth-child(5){left:74%;background:#FFD66B;animation-delay:.08s;}
  .sp-confetti i:nth-child(6){left:24%;background:#B59FE0;animation-delay:.3s;}
  .sp-confetti i:nth-child(7){left:54%;background:#F4A6B8;animation-delay:.25s;}
  .sp-confetti i:nth-child(8){left:78%;background:#88D4A3;animation-delay:.15s;}
  .sp-confetti i:nth-child(9){left:38%;background:#FFD66B;animation-delay:.35s;}
  .sp-confetti i:nth-child(10){left:66%;background:#F4B996;animation-delay:.22s;}
  @keyframes sp-conf{
    0%{transform:translateY(-10%) rotate(0);opacity:0;}
    15%{opacity:1;}
    100%{transform:translateY(140%) rotate(540deg);opacity:0;}
  }

  /* Workout modal — visual icon picker */
  .wtype-icons{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px;}
  .wtype-icons button{padding:12px 4px 8px;border-radius:14px;background:#FAF5F2;border:2px solid transparent;font-size:11px;font-weight:700;color:var(--ink);cursor:pointer;transition:transform .12s, background .15s, border-color .15s;display:flex;flex-direction:column;align-items:center;gap:4px;}
  .wtype-icons button:hover{transform:translateY(-1px);background:#F0FBF3;}
  .wtype-icons button.selected{background:linear-gradient(135deg,#E2F7E8,#CDEED7);border-color:#88D4A3;}
  .wtype-icons .ic{font-size:24px;line-height:1;}
  .wtype-icons .lb{font-size:10px;font-weight:700;letter-spacing:0.2px;}
  .min-slider-wrap{display:flex;align-items:center;gap:10px;margin-top:8px;}
  .min-slider{flex:1;-webkit-appearance:none;height:6px;border-radius:99px;background:linear-gradient(90deg,#CDEED7,#88D4A3);outline:none;}
  .min-slider::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:#fff;border:2.5px solid #5BBF82;box-shadow:0 2px 6px rgba(136,212,163,0.45);cursor:pointer;}
  .min-slider::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#fff;border:2.5px solid #5BBF82;box-shadow:0 2px 6px rgba(136,212,163,0.45);cursor:pointer;}
  .min-display{font-size:22px;font-weight:700;color:var(--ink);min-width:64px;text-align:center;background:#F0FBF3;border-radius:10px;padding:6px 8px;letter-spacing:-0.3px;}
  .min-display .u{font-size:11px;color:#2F6B47;margin-left:3px;font-weight:600;}
  .modal-x{position:absolute;top:10px;right:10px;width:38px;height:38px;border-radius:50%;background:#FAF5F2;border:none;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ink-soft);z-index:5;}

  /* CARDS */
  .card{background:var(--card);border-radius:var(--radius-lg);padding:18px;box-shadow:var(--shadow);margin-bottom:14px;border:1px solid var(--border);}
  .card.pink{background:linear-gradient(135deg,#FFE5EC 0%,#FFD6E0 100%);}
  .card.lavender{background:linear-gradient(135deg,#EDE4FB 0%,#E0D4F7 100%);}
  .card.blue{background:linear-gradient(135deg,#E4EEFB 0%,#D6E4FA 100%);}
  .card.peach{background:linear-gradient(135deg,#FFEFE0 0%,#FFE4D1 100%);}
  .card.mint{background:linear-gradient(135deg,#E2F8E9 0%,#D4F4DD 100%);}
  .card.cream{background:linear-gradient(135deg,#FFFBEC 0%,#FFF8E7 100%);}
  .card.accent{background:linear-gradient(135deg,color-mix(in srgb, var(--accent) 60%, white), var(--accent));}

  .card-title{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-soft);margin-bottom:12px;}
  .card-title .dot{width:6px;height:6px;border-radius:50%;background:var(--accent-deep);}

  .section-title{font-size:18px;font-weight:800;color:var(--ink);margin:20px 4px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;}
  .section-title .small{font-size:12px;font-weight:600;color:var(--ink-soft);}

  /* WIDGETS */
  .widgets{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;grid-auto-rows:1fr;}
  .widget{background:var(--card);border-radius:var(--radius-md);padding:14px;box-shadow:var(--shadow);border:1px solid var(--border);min-height:96px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;}
  .widget .label{font-size:10px;font-weight:800;letter-spacing:1px;color:var(--ink-soft);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .widget .value{font-size:22px;font-weight:800;color:var(--ink);margin-top:6px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .widget .sub{font-size:11px;color:var(--ink-soft);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .widget.pink{background:linear-gradient(135deg,#FFE5EC,#FFD0DE);}
  .widget.lavender{background:linear-gradient(135deg,#EDE4FB,#DCCFF5);}
  .widget.blue{background:linear-gradient(135deg,#E4EEFB,#D6E4FA);}
  .widget.peach{background:linear-gradient(135deg,#FFEFE0,#FFDCC2);}
  .widget.mint{background:linear-gradient(135deg,#E2F8E9,#CDF1D7);}

  /* ROW */
  .row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--border);}
  .row:last-child{border-bottom:none;}
  .check{width:22px;height:22px;border-radius:7px;border:2px solid var(--accent-deep);flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;background:#fff;transition:all .2s;}
  .check.done{background:var(--accent-deep);}
  .row .body{flex:1;min-width:0;}
  .row .ttl{font-size:14px;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .row.done .ttl{text-decoration:line-through;color:var(--ink-muted);}
  .row .meta{font-size:11px;color:var(--ink-soft);margin-top:2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
  .chip{display:inline-block;padding:2px 9px;border-radius:8px;font-size:10px;font-weight:800;letter-spacing:0.3px;}
  .chip.pink{background:#FFD6E0;color:#8B3A52;}
  .chip.lavender{background:#E0D4F7;color:#553D8C;}
  .chip.blue{background:#D6E4FA;color:#2A4A82;}
  .chip.peach{background:#FFE4D1;color:#8B5A2B;}
  .chip.mint{background:#D4F4DD;color:#2F6B47;}
  .chip.cream{background:#FFF1C7;color:#8B6A1F;}
  .chip.high{background:#FFD0D0;color:#A43838;}
  .chip.med{background:#FFE9C7;color:#8B6A1F;}
  .chip.low{background:#D4F4DD;color:#2F6B47;}

  /* BUTTONS */
  .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 18px;border-radius:14px;background:var(--accent-deep);color:#fff;font-weight:800;font-size:13px;letter-spacing:0.3px;box-shadow:0 4px 14px rgba(180,150,180,0.35);transition:transform .15s,filter .15s;}
  .btn:hover{filter:brightness(1.05);transform:translateY(-1px);}
  .btn[disabled]{opacity:.5;pointer-events:none;}
  .btn:active{transform:scale(0.96);}
  .btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--border);box-shadow:var(--shadow);}
  .btn.sm{padding:7px 13px;font-size:11px;border-radius:10px;}
  .btn.block{display:flex;width:100%;}
  .btn.pink{background:var(--pink-deep);}
  .btn.lavender{background:var(--lavender-deep);}
  .btn.blue{background:var(--blue-deep);}
  .btn.mint{background:var(--mint-deep);}
  .btn.peach{background:var(--peach-deep);}

  /* SUBTABS */
  .subtabs{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 8px;margin-bottom:6px;}
  .subtabs::-webkit-scrollbar{display:none;}
  .subtab{flex:0 0 auto;padding:9px 16px;border-radius:14px;background:#fff;color:var(--ink-soft);font-size:12px;font-weight:800;letter-spacing:0.3px;border:1px solid var(--border);box-shadow:var(--shadow);white-space:nowrap;cursor:pointer;transition:transform .12s, box-shadow .12s, background .12s;user-select:none;-webkit-user-select:none;}
  .subtab.subtab-dragging{opacity:0.5;transform:scale(0.95);}
  .subtab.drop-target{box-shadow:0 0 0 2px var(--lavender-deep);background:#F4ECFF;transform:translateY(-2px);}
  .tab-btn.subtab-dragging{opacity:0.5;}
  .tab-btn.drop-target{background:rgba(180,150,180,0.08);}
  .widget.subtab-dragging{opacity:0.5;transform:scale(0.95);}
  .widget.drop-target{box-shadow:0 0 0 2px var(--lavender-deep);transform:translateY(-2px);}
  /* Keep sidebar brand and footer at the extremes when tabs are reordered via CSS order */
  #tabbar .sidebar-brand{order:-100;}
  #tabbar .sidebar-foot{order:1000;}
  .subtab.active{background:var(--ink);color:#fff;border-color:var(--ink);}

  /* QUOTE */
  .quote{font-style:italic;font-size:15px;line-height:1.5;color:var(--ink);font-weight:600;}
  .quote::before{content:'"';font-size:34px;color:var(--accent-deep);line-height:0;vertical-align:-12px;margin-right:4px;}
  .quote-author{font-size:11px;color:var(--ink-soft);margin-top:8px;text-align:right;font-weight:700;}

  /* ALERT */
  .alert{display:flex;align-items:center;gap:12px;padding:14px 16px;background:linear-gradient(135deg,#FFE5EC,#FFD6E0);border-radius:var(--radius-md);margin-bottom:14px;box-shadow:var(--shadow);}
  .alert .ico{font-size:24px;}
  .alert .txt{flex:1;font-size:13px;font-weight:700;color:#8B3A52;line-height:1.4;}

  /* HEATMAP */
  .heatmap{display:grid;grid-template-columns:repeat(14,1fr);gap:4px;margin-top:8px;}
  .heat-cell{aspect-ratio:1;border-radius:5px;background:#F2EBE7;}
  .heat-cell.l3{background:var(--accent-deep);}

  /* PROGRESS */
  .progress{height:10px;border-radius:99px;background:#F2EBE7;overflow:hidden;}
  .progress > span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent-deep),var(--lavender-deep));transition:width .4s;}
  .progress.mint > span{background:linear-gradient(90deg,var(--mint-deep),#5BBF82);}

  /* CALENDAR */
  .cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
  .cal-head .ttl{font-size:16px;font-weight:800;}
  .cal-nav{display:flex;gap:6px;}
  .cal-nav button{width:30px;height:30px;border-radius:10px;background:#fff;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);}
  .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
  .cal-dn{font-size:10px;font-weight:800;color:var(--ink-muted);text-align:center;padding:6px 0;letter-spacing:0.5px;}
  .cal-day{aspect-ratio:1;border-radius:10px;background:#FAF5F2;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--ink);position:relative;cursor:default;transition:transform .15s;}
  .cal-day.muted{color:var(--ink-muted);background:transparent;}
  .cal-day.today{background:var(--accent);color:var(--ink);box-shadow:inset 0 0 0 2px var(--accent-deep);}
  .cal-day.has-bday{background:linear-gradient(135deg,#FFE5EC,#FFD6E0);color:#8B3A52;}
  .cal-day.bday-today{background:linear-gradient(135deg,#FFC8D6,#F4A6B8);color:#5C1F38;box-shadow:0 4px 14px rgba(244,166,184,0.45);animation:bday-pulse 2.5s ease-in-out infinite;}
  .cal-day.has-bday:hover{transform:scale(1.06);}
  .cal-day .bday-cake{position:absolute;bottom:2px;right:3px;font-size:14px;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,0.15));}
  .cal-day.bday-today .bday-cake{font-size:16px;animation:bday-wiggle 1.4s ease-in-out infinite;transform-origin:center;}
  .cal-day .ev{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:var(--lavender-deep);}
  .cal-day.has-bday .ev{bottom:4px;left:4px;transform:none;}
  .mini-cal{padding:14px 14px 16px;margin-bottom:14px;}

  /* ===== MOBILE-ONLY — Plan calendar full-screen layout ===== */
  @media (max-width:760px){
    body.cal-mode #screen{padding:0!important;}
    /* App only: sin cabecera "Plan / Organízate" en el calendario — más espacio para el mes */
    body.cal-mode .header.today-header{display:none;}
    /* App only: días de la semana solo con su inicial */
    body.cal-mode .cal-fullscreen .cal-dn .dn-rest{display:none;}
    body.cal-mode .cal-fullscreen{margin:0;padding:0;border-radius:0;min-height:100vh;background:#fff;}
    body.cal-mode .cal-fullscreen .cal-head{
      position:sticky;top:0;z-index:5;
      background:linear-gradient(180deg,#fff 0%,#fff 90%,rgba(255,255,255,0) 100%);
      padding:calc(var(--safe-top) + 12px) 16px 12px;
      margin:0 0 4px;
      border-bottom:1px solid var(--border);
      display:flex;align-items:center;gap:10px;
    }
    body.cal-mode .cal-fullscreen .cal-head-left{display:flex;align-items:center;gap:8px;flex:1;min-width:0;}
    .cal-back-mobile{display:none;}
    body.cal-mode .cal-fullscreen .cal-head .ttl{font-size:20px;font-weight:900;text-transform:capitalize;flex:1;}
    body.cal-mode .cal-fullscreen .cal-vac-toggle,
    body.cal-mode .cal-fullscreen .cal-vac-info,
    body.cal-mode .cal-fullscreen .cal-vac-hint{display:none;}
    body.cal-mode .cal-fullscreen .cal-head-right .cal-expand-btn{display:none;}
    body.cal-mode .cal-fullscreen .cal-row{padding:0 8px calc(var(--safe-bottom) + 90px);flex:1;display:flex;flex-direction:column;}
    body.cal-mode .cal-fullscreen .cal-side-arrow{
      position:absolute;top:calc(var(--safe-top) + 12px);
      width:36px;height:36px;border-radius:50%;background:#FAF7FB;border:1px solid var(--border);
      font-size:20px;font-weight:900;color:var(--ink);z-index:6;
      display:flex;align-items:center;justify-content:center;
    }
    body.cal-mode .cal-fullscreen .cal-side-arrow.left{left:8px;top:auto;bottom:calc(var(--safe-bottom) + 90px);}
    body.cal-mode .cal-fullscreen .cal-side-arrow.right{right:8px;top:auto;bottom:calc(var(--safe-bottom) + 90px);}
    body.cal-mode .cal-fullscreen .cal-grid{flex:1;gap:2px;border:0;background:transparent;}
    body.cal-mode .cal-fullscreen .cal-dn{font-size:9px;padding:6px 2px;background:transparent;}
    body.cal-mode .cal-fullscreen .cb-day{min-height:80px;padding:5px 4px;border-radius:6px;background:#FAF7FB;font-size:11px;}
    body.cal-mode .cal-fullscreen .cb-day .cb-num{font-size:13px;margin-bottom:4px;font-weight:800;}
    body.cal-mode .cal-fullscreen .cb-day.today{background:linear-gradient(160deg,#FFE5EC,#FFD6E0);border:1px solid #F4A6B8;}
    body.cal-mode .cal-fullscreen .cb-day .cb-chip{font-size:8px;padding:1px 4px;border-left-width:2px;}
    body.cal-mode .cal-fab{bottom:calc(var(--safe-bottom) + var(--tabbar-h) + 12px);right:14px;}
  }
  .mini-cal-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:8px;}
  .mini-cal-row .ttl{font-size:13px;font-weight:800;color:var(--ink);text-transform:capitalize;}
  .mini-cal-row .hint{font-size:9px;font-weight:800;letter-spacing:0.4px;color:var(--ink-soft);text-transform:uppercase;}
  .mini-cal-go{font-size:14px;font-weight:800;background:linear-gradient(135deg,#EDE4FB,#DCCFF5);color:#553D8C;width:32px;height:32px;border-radius:10px;border:1px solid rgba(180,160,220,0.25);box-shadow:0 2px 6px rgba(120,90,150,0.08);transition:transform .12s ease;display:inline-flex;align-items:center;justify-content:center;}
  .mini-cal-go:hover{transform:translateY(-1px);}
  .mini-week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
  .mini-week .mw-day{min-height:148px;border-radius:12px;background:#FAF5F2;border:none;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;font-size:12px;font-weight:700;color:var(--ink);position:relative;line-height:1;cursor:pointer;transition:transform .12s ease, background .12s ease, box-shadow .12s ease;padding:8px 6px 7px;overflow:hidden;text-align:left;}
  .mini-week .mw-day:hover{transform:translateY(-1px);background:#F4ECFF;box-shadow:0 4px 12px rgba(120,90,150,0.15);}
  .mini-week .mw-head{display:flex;align-items:baseline;justify-content:space-between;gap:4px;padding:0 1px;margin-bottom:6px;}
  .mini-week .mw-day .dn{font-size:10px;font-weight:800;color:var(--ink-soft);letter-spacing:0.4px;text-transform:uppercase;}
  .mini-week .mw-day .mw-num{font-size:16px;font-weight:800;line-height:1;}
  .mini-week .mw-day.weekend{background:linear-gradient(180deg,#F2E9FF,#EBE0FA);}
  .mini-week .mw-day.weekend:hover{background:#E4D6F7;}
  .mini-week .mw-day.today{background:var(--accent);box-shadow:inset 0 0 0 2px var(--accent-deep);}
  .mini-week .mw-day.today .dn{color:var(--ink);}
  .mini-week .mw-day.today .mw-num{color:var(--ink);}
  .mini-week .mw-day.has-bday{background:linear-gradient(135deg,#FFE5EC,#FFD6E0);color:#8B3A52;}
  .mini-week .mw-day.has-items{background:#FFFDFB;box-shadow:inset 0 0 0 1px rgba(180,160,220,0.35);}
  .mini-week .mw-day.has-items.weekend{background:#FBF7FF;}
  .mini-week .mw-day.has-items.today{background:var(--accent);}
  .mini-week .mw-day.has-items.has-bday{background:linear-gradient(135deg,#FFE5EC,#FFD6E0);}
  .mini-week .mw-day .cake{position:absolute;top:5px;right:6px;font-size:12px;}
  .mini-week .mw-chips{display:flex;flex-direction:column;gap:3px;overflow:hidden;flex:1;}
  .mini-week .mw-chip{font-size:11px;font-weight:700;line-height:1.25;padding:3px 6px;border-radius:5px;letter-spacing:0.05px;border-left:3px solid transparent;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;}
  .mini-week .mw-chip.pink{background:#FFEAEF;color:#8B3A52;border-left-color:#F4A6B8;}
  .mini-week .mw-chip.lavender{background:#F0E8FB;color:#553D8C;border-left-color:#B59FE0;}
  .mini-week .mw-chip.blue{background:#E8F0FC;color:#2A4A82;border-left-color:#7DA8E8;}
  .mini-week .mw-chip.peach{background:#FFF1E3;color:#8B5A2B;border-left-color:#F4B996;}
  .mini-week .mw-chip.mint{background:#E2F7E8;color:#2F6B47;border-left-color:#88D4A3;}
  .mini-week .mw-chip.cream{background:#FFF7DC;color:#8B6A1F;border-left-color:#D4B95E;}
  .mini-week .mw-chip.done{opacity:0.45;text-decoration:line-through;}
  .mini-week .mw-more{font-size:9px;font-weight:800;color:var(--ink-soft);padding-left:4px;padding-top:2px;}
  @media (max-width:560px){
    .mini-week{gap:4px;}
    .mini-week .mw-day{min-height:122px;padding:6px 4px 5px;}
    .mini-week .mw-day .mw-num{font-size:14px;}
    .mini-week .mw-day .dn{font-size:9px;}
    .mini-week .mw-chip{font-size:9px;padding:2px 4px;border-left-width:2px;}
  }
  @media (min-width:768px){
    .mini-week .mw-day{min-height:172px;padding:10px 8px 9px;}
    .mini-week .mw-day .mw-num{font-size:18px;}
    .mini-week .mw-day .dn{font-size:11px;}
    .mini-week .mw-chip{font-size:12px;padding:4px 7px;}
  }

  /* ===== MOBILE-ONLY — Mini calendar: smaller days, color dots + cakes (HIGH PRIORITY) ===== */
  @media (max-width:760px){
    .mini-cal{
      width:100vw!important;
      margin-left:calc(50% - 50vw)!important;
      margin-right:calc(50% - 50vw)!important;
      border-radius:0!important;
      padding:10px 4px 12px!important;
      box-sizing:border-box;
    }
    .mini-cal-row{padding:0 10px!important;}
    /* App only: botón de ampliar calendario más grande y con el fondo de la paleta */
    .mini-cal-go{width:42px!important;height:42px!important;font-size:20px!important;background:var(--card)!important;border:none!important;box-shadow:none!important;color:var(--ink)!important;}
    .mini-week{gap:2px!important;}
    .mini-week .mw-day{min-height:78px!important;padding:5px 3px!important;font-size:10px!important;border-radius:8px!important;overflow:visible!important;}
    .mini-week .mw-day .dn{font-size:7px!important;}
    .mini-week .mw-day .mw-num{font-size:11px!important;}
    .mini-week .mw-day .cake{display:none!important;}
    /* App only: los días no se destacan por tener cosas — solo hoy y el finde */
    .mini-week .mw-day.has-items,
    .mini-week .mw-day.has-bday{background:#FAF5F2!important;box-shadow:none!important;color:var(--ink)!important;}
    .mini-week .mw-day.has-items.weekend,
    .mini-week .mw-day.has-bday.weekend{background:linear-gradient(180deg,#F2E9FF,#EBE0FA)!important;}
    .mini-week .mw-day.has-items.today,
    .mini-week .mw-day.has-bday.today{background:var(--accent)!important;box-shadow:inset 0 0 0 2px var(--accent-deep)!important;}
    .mini-week .mw-chips{
      flex-direction:row!important;
      flex-wrap:wrap!important;
      gap:3px!important;
      align-items:center!important;
      align-content:flex-start!important;
      justify-content:center!important;
      flex:0 0 auto!important;
      margin-top:3px!important;
      overflow:visible!important;
      width:100%!important;
      min-height:14px!important;
      line-height:1!important;
    }
    .mini-week .mw-chip{
      width:7px!important;
      height:7px!important;
      min-height:7px!important;
      max-width:7px!important;
      max-height:7px!important;
      border-radius:50%!important;
      padding:0!important;
      font-size:0!important;
      line-height:0!important;
      border:0!important;
      border-left:0!important;
      display:inline-block!important;
      overflow:hidden!important;
      flex:0 0 auto!important;
      color:transparent!important;
      text-indent:-9999px!important;
      -webkit-line-clamp:unset!important;
      -webkit-box-orient:unset!important;
      word-break:normal!important;
      letter-spacing:0!important;
      text-transform:none!important;
      visibility:visible!important;
    }
    .mini-week .mw-chip.pink{
      width:auto!important;
      height:auto!important;
      max-width:none!important;
      max-height:none!important;
      background:transparent!important;
      font-size:0!important;
      line-height:1!important;
      border-radius:0!important;
      text-indent:0!important;
      color:transparent!important;
      overflow:visible!important;
      padding:0!important;
    }
    .mini-week .mw-chip.pink::before{
      content:"🎂"!important;
      font-size:14px!important;
      line-height:1!important;
      display:inline-block!important;
      color:initial!important;
      text-indent:0!important;
      vertical-align:middle!important;
    }
    .mini-week .mw-chip.lavender{background:#B59FE0!important;}
    .mini-week .mw-chip.blue{background:#7DA8E8!important;}
    .mini-week .mw-chip.peach{background:#F4B996!important;}
    .mini-week .mw-chip.mint{background:#88D4A3!important;}
    .mini-week .mw-chip.cream{background:#D4B95E!important;}
    .mini-week .mw-chip.trip{background:#5FB077!important;}
    .mini-week .mw-chip.done{opacity:0.4!important;background:#A8B5A0!important;}
    .mini-week .mw-more{font-size:8px!important;font-weight:800!important;color:var(--ink-soft)!important;text-align:center!important;line-height:1.1!important;width:100%!important;margin-top:1px!important;padding:0!important;}
  }

  /* BIG CALENDAR (Plan > Calendar) — Google-Calendar-like */
  .cal-big{padding:14px 12px;background:transparent;}
  .cal-big .cal-head{margin-bottom:10px;align-items:center;}
  .cal-big .cal-head .ttl{font-size:22px;text-transform:capitalize;font-weight:800;color:var(--ink);}
  .cal-big .cal-nav button{width:36px;height:36px;font-size:18px;background:transparent;border:none;color:var(--ink-soft);box-shadow:none;}
  .cal-big .cal-nav button:hover{background:#F4ECFF;color:var(--ink);}
  .cal-big .cal-grid{gap:1px;background:var(--border);border-radius:6px;overflow:hidden;border:1px solid var(--border);display:grid;grid-template-columns:repeat(7, 1fr);grid-template-rows:auto repeat(6, 1fr);grid-auto-rows:1fr;}
  .cal-big .cal-dn{font-size:10px;font-weight:700;color:var(--ink-soft);text-align:center;letter-spacing:0.4px;padding:4px 2px;text-transform:uppercase;background:#FAF7F4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.1;min-height:0;}
  .cal-big .cal-dn.weekend{background:#F1ECF8;color:#7B5AA0;}
  @media (max-width:760px){
    .cal-big .cal-dn{font-size:9px;padding:3px 1px;letter-spacing:0.2px;}
  }
  .cal-big .cb-day{aspect-ratio:auto;min-height:0;height:100%;border-radius:0;background:#fff;border:none;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:4px 5px;font-size:12px;font-weight:700;color:var(--ink);position:relative;cursor:pointer;transition:background .12s ease;text-align:left;overflow:hidden;}
  .cal-big .cb-day:hover{transform:none;box-shadow:none;background:#F8F4FE;}
  /* Touch devices: swipe changes month — hide the arrow buttons */
  @media (hover:none){
    .cal-big .cal-side-arrow{display:none!important;}
  }
  /* Touch devices: no lingering "pressed" tint when tapping a day */
  @media (hover:none){
    .cal-big .cb-day:hover{background:#fff;}
    .cal-big .cb-day.weekend:hover{background:linear-gradient(180deg,#F2E9FF,#E9DDFA);}
    .cal-big .cb-day.muted:hover{background:#FBFAF8;opacity:0.45;}
    .cal-big .cb-day.weekend.muted:hover{background:#F3EEFA;}
    body.cal-mode .cal-fullscreen .cb-day:hover{background:#FAF7FB;}
    .mini-week .mw-day:hover{background:#FAF7FB;}
    .mini-week .mw-day.weekend:hover{background:linear-gradient(180deg,#F2E9FF,#EBE0FA);}
  }
  .cal-big .cb-day.muted{background:#FBFAF8;color:var(--ink-muted);opacity:0.45;}
  .cal-big .cb-day.muted:hover{background:#F6F0EC;opacity:0.65;}
  .cal-big .cb-day.muted .cb-chip{opacity:0.55;}
  .cal-big .cb-day.weekend{background:linear-gradient(180deg,#F2E9FF,#E9DDFA);box-shadow:inset 0 0 0 1.5px rgba(155,120,200,0.25);}
  .cal-big .cb-day.weekend:hover{background:#E4D6F7;}
  .cal-big .cb-day.weekend.muted{background:#F3EEFA;box-shadow:none;}
  .cal-big .cb-day.weekend .cb-num span{color:#7B5AA0;font-weight:800;}
  .cal-big .cb-day .cb-num{font-size:12px;font-weight:700;line-height:1;margin-bottom:3px;display:flex;align-items:center;justify-content:space-between;min-height:22px;}
  .cal-big .cb-day .cb-num > span:first-child{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:11px;}
  .cal-big .cb-day.today{background:linear-gradient(180deg,#F7F0FF 0%,#FFFFFF 65%);box-shadow:inset 0 0 0 1px var(--lavender-deep);}
  .cal-big .cb-day.today.weekend{background:linear-gradient(180deg,#F0E4FF 0%,#FAF6FF 65%);}
  .cal-big .cb-day.today .cb-num > span:first-child{background:var(--lavender-deep);color:#fff;font-weight:800;box-shadow:0 2px 6px rgba(120,90,150,0.35);}
  .cal-big .cb-day .cb-num .cake{font-size:12px;}
  .cal-big .cb-day .cb-chips{display:flex;flex-direction:column;gap:2px;overflow:hidden;flex:1;}
  .cb-chip{font-size:10px;font-weight:700;line-height:1.2;padding:2px 6px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:0.1px;border-left:3px solid transparent;}
  .cb-chip.pink{background:#FFEAEF;color:#8B3A52;border-left-color:#F4A6B8;}
  .cb-chip.lavender{background:#F0E8FB;color:#553D8C;border-left-color:#B59FE0;}
  .cb-chip.blue{background:#E8F0FC;color:#2A4A82;border-left-color:#7DA8E8;}
  .cb-chip.peach{background:#FFF1E3;color:#8B5A2B;border-left-color:#F4B996;}
  .cb-chip.mint{background:#E2F7E8;color:#2F6B47;border-left-color:#88D4A3;}
  .cb-chip.cream{background:#FFF7DC;color:#8B6A1F;border-left-color:#D4B95E;}
  .cb-chip.done{opacity:0.55;text-decoration:line-through;}
  .cb-more{font-size:10px;color:var(--ink-soft);font-weight:700;padding-left:6px;}
  @media (max-width:560px){
    .cal-big .cb-day{min-height:62px;padding:3px 3px;}
    .cal-big .cb-day .cb-num{font-size:11px;margin-bottom:2px;min-height:20px;}
    .cal-big .cb-day .cb-num > span:first-child{width:20px;height:20px;font-size:10px;}
    .cb-chip{font-size:9px;padding:1px 4px;border-left-width:2px;}
  }
  .cal-legend{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;font-size:11px;color:var(--ink-soft);font-weight:700;}
  .cal-legend .lg{display:inline-flex;align-items:center;gap:5px;}
  .cal-legend .sw{width:10px;height:10px;border-radius:3px;display:inline-block;}

  /* FULLSCREEN CALENDAR mode (Plan > Calendar) */
  .cal-fullscreen{margin:-4px -18px 0;border-radius:0;padding:14px 14px calc(110px + var(--safe-bottom));min-height:calc(100vh - 200px);display:flex;flex-direction:column;background:transparent;box-shadow:none;border:none;}
  .cal-fullscreen .cal-grid{flex:1;grid-auto-rows:minmax(0, 1fr);}
  .cal-fullscreen .cb-day{min-height:0;height:100%;}
  .cal-fullscreen .cal-head{background:transparent;padding:6px 2px;margin:-4px -4px 10px;}
  .cal-fab{position:fixed;right:18px;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 14px);width:56px;height:56px;border-radius:50%;background:var(--lavender-deep);color:#fff;font-size:26px;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 22px rgba(120,90,150,0.45);z-index:40;border:none;}
  .cal-fab:hover{transform:translateY(-2px);}
  .cal-fullscreen{position:relative;}
  .cal-row{display:flex;align-items:stretch;gap:8px;flex:1;min-height:0;}
  .cal-side-arrow{flex:0 0 auto;align-self:center;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,0.95);border:1px solid var(--border);box-shadow:0 4px 14px rgba(120,90,150,0.18);font-size:20px;font-weight:800;color:var(--lavender-deep);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s ease, background .15s ease, box-shadow .15s ease;}
  .cal-side-arrow:hover{background:var(--lavender-deep);color:#fff;transform:scale(1.08);box-shadow:0 6px 18px rgba(120,90,150,0.4);}
  @media (max-width:560px){
    .cal-row{gap:4px;}
    .cal-side-arrow{width:30px;height:30px;font-size:18px;}
  }
  @media (min-width:768px){
    .cal-row{gap:12px;}
    .cal-side-arrow{width:48px;height:48px;font-size:26px;}
  }
  /* DESKTOP fullscreen calendar — escape the #screen padding and fill viewport */
  @media (min-width:768px){
    /* cal-mode: calendar fills page height, header/subtabs stay identical to other subtabs */
    body.cal-mode #screen{display:flex;flex-direction:column;}
    body.cal-mode .cols{flex:1;display:flex;flex-direction:column;}
    body.cal-mode .cols .cal-fullscreen{flex:1;}
    .cal-fullscreen{margin:0;padding:0 0 28px;min-height:0;flex:1;border-radius:0;border:none;}
    .cal-fullscreen .cal-head{margin:0 0 12px;padding:4px 0 10px;border-bottom:1px solid var(--border);background:transparent;}
    .cal-fullscreen .cal-head .ttl{font-size:26px;}
    .cal-fab{position:fixed;right:32px;bottom:32px;}
  }
  @media (min-width:1000px){
    .cal-fullscreen{margin:0;padding:0 0 32px;}
    .cal-big .cal-head .ttl{font-size:28px;}
  }
  @media (min-width:1400px){
    .cal-fullscreen{margin:0;padding:0 0 32px;}
  }

  /* HABITS TO CHECK — refined row */
  .habit-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-radius:10px;transition:background .15s;position:relative;}
  .habit-row:hover{background:rgba(180,160,220,0.06);}
  .habit-row .body{flex:1;min-width:0;cursor:pointer;}
  .habit-row .body .ttl{font-size:14px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:6px;}
  .habit-row .body .em{display:inline-block;transition:transform .25s ease;}
  .habit-row.done .em{animation:habit-pop .42s cubic-bezier(0.34,1.56,0.64,1);}
  .habit-row.done .body .ttl{color:var(--ink-soft);}
  @keyframes habit-pop{0%{transform:scale(1);}40%{transform:scale(1.4) rotate(-6deg);}70%{transform:scale(0.92);}100%{transform:scale(1);}}
  .habit-row .streak-pill{font-size:11px;font-weight:800;color:#A4451A;background:linear-gradient(135deg,#FFE6D6,#FFD0B8);padding:3px 8px;border-radius:99px;display:inline-flex;align-items:center;gap:3px;flex-shrink:0;line-height:1;}
  .habit-row .steps-info{font-size:11px;color:#2F6B47;font-weight:800;background:#E2F7E8;padding:3px 8px;border-radius:99px;line-height:1;}
  .habit-row .more-btn{width:26px;height:26px;border-radius:8px;background:transparent;border:none;color:var(--ink-muted);cursor:pointer;opacity:0;transition:opacity .15s,background .12s;flex-shrink:0;font-size:14px;letter-spacing:-1px;font-weight:800;display:flex;align-items:center;justify-content:center;}
  .habit-row:hover .more-btn{opacity:1;}
  .habit-row .more-btn:hover{background:rgba(180,160,220,0.18);color:var(--ink);}
  .habit-extra{padding:4px 8px 8px 38px;}
  .steps-edit{display:flex;gap:6px;align-items:center;background:#FAF5F2;padding:6px;border-radius:10px;}
  .steps-edit input{flex:1;padding:7px 10px;border-radius:8px;border:1.5px solid var(--border);background:#fff;font-weight:700;font-size:13px;color:var(--ink);outline:none;}
  .steps-edit input:focus{border-color:var(--lavender-deep);}
  .steps-edit button{padding:7px 12px;border-radius:8px;background:var(--lavender-deep);color:#fff;font-weight:800;font-size:11px;border:none;cursor:pointer;}
  .add-habit-btn{margin-top:8px;background:transparent;border:1.5px dashed rgba(180,160,220,0.45);color:var(--ink-soft);font-size:12px;font-weight:700;padding:8px 12px;border-radius:10px;width:100%;cursor:pointer;transition:all .15s;}
  .add-habit-btn:hover{background:rgba(180,160,220,0.08);color:var(--ink);border-color:rgba(180,160,220,0.7);}
  /* Habit context menu (opens from "..." button) */
  .habit-menu{position:absolute;top:calc(100% + 4px);right:4px;background:#fff;border-radius:12px;box-shadow:0 8px 24px rgba(120,90,150,0.28);padding:5px;z-index:50;display:flex;flex-direction:column;min-width:140px;border:1px solid var(--border);}
  .habit-menu button{text-align:left;padding:9px 12px;border-radius:8px;font-size:13px;font-weight:700;color:var(--ink);background:transparent;border:none;cursor:pointer;display:flex;align-items:center;gap:8px;width:100%;}
  .habit-menu button:hover{background:#FAF5F2;}
  .habit-menu button.del{color:#B5392F;}
  .habit-menu button.del:hover{background:#FFE5E5;}
  /* Make sure menu can escape the parent card and sit on top */
  .card:has(.habit-menu){overflow:visible;}
  .habit-row:has(.habit-menu){z-index:50;}
  /* Emoji gallery in add/edit habit modal */
  .emoji-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin-top:8px;}
  .emoji-grid button{padding:8px 0;border-radius:10px;background:#FAF5F2;border:2px solid transparent;font-size:20px;cursor:pointer;transition:transform .12s,background .15s, border-color .15s;}
  .emoji-grid button:hover{transform:translateY(-1px);background:#F0E8FB;}
  .emoji-grid button.selected{background:linear-gradient(135deg,#EDE4FB,#DCCFF5);border-color:var(--lavender-deep);}
  @media (max-width:560px){.emoji-grid{grid-template-columns:repeat(6,1fr);}}
  /* All-done toast */
  .all-done-toast{position:fixed;top:80px;left:50%;background:linear-gradient(135deg,#FFE5EC,#EDE4FB);padding:14px 22px;border-radius:99px;box-shadow:0 8px 30px rgba(180,150,180,0.35);z-index:80;font-weight:800;font-size:14px;color:var(--ink);display:flex;align-items:center;gap:8px;border:1.5px solid rgba(244,166,184,0.4);transform:translateX(-50%) translateY(-20px) scale(0.85);opacity:0;animation:all-done-cycle 2.8s ease forwards;}
  @keyframes all-done-cycle{
    0%{opacity:0;transform:translateX(-50%) translateY(-20px) scale(0.85);}
    15%{opacity:1;transform:translateX(-50%) translateY(0) scale(1);}
    85%{opacity:1;transform:translateX(-50%) translateY(0) scale(1);}
    100%{opacity:0;transform:translateX(-50%) translateY(-20px) scale(0.85);}
  }
  .all-done-toast .conf{position:absolute;inset:-6px;pointer-events:none;overflow:visible;}
  .all-done-toast .conf i{position:absolute;width:8px;height:8px;border-radius:2px;animation:sp-conf 1.6s ease-out forwards;}
  .all-done-toast .conf i:nth-child(1){left:10%;background:#F4A6B8;}
  .all-done-toast .conf i:nth-child(2){left:30%;background:#B59FE0;animation-delay:.1s;}
  .all-done-toast .conf i:nth-child(3){left:50%;background:#F4B996;animation-delay:.18s;}
  .all-done-toast .conf i:nth-child(4){left:70%;background:#88D4A3;animation-delay:.08s;}
  .all-done-toast .conf i:nth-child(5){left:90%;background:#FFD66B;animation-delay:.22s;}

  /* Centered modal override — always vertically centered, no matter the screen size */
  .modal-bg.center{align-items:center;padding:10px;}
  .modal-bg.center .modal{border-radius:22px;max-width:520px;max-height:94vh;padding:16px 16px;}

  /* ===== MOBILE-ONLY — Modal close X floats ABOVE the popup card (HIGH PRIORITY) ===== */
  @media (max-width:760px){
    .modal-bg.center{align-items:flex-start!important;padding-top:calc(56px + var(--safe-top))!important;}
    .modal-bg.center .modal-x{
      position:fixed!important;
      top:calc(12px + var(--safe-top))!important;
      right:14px!important;
      left:auto!important;
      bottom:auto!important;
      width:40px!important;height:40px!important;
      background:rgba(255,255,255,0.95)!important;
      -webkit-backdrop-filter:blur(8px)!important;
      backdrop-filter:blur(8px)!important;
      box-shadow:0 6px 20px rgba(80,60,90,0.25)!important;
      border:1px solid var(--border)!important;
      font-size:18px!important;
      font-weight:900!important;
      color:var(--ink)!important;
      z-index:10001!important;
      border-radius:50%!important;
    }
    /* Modales nunca cortados por la barra inferior en iPhone */
    .modal-bg.center .modal, .cycle-modal, .vera-modal{max-height:calc(100dvh - 76px - var(--safe-top))!important;overflow-y:auto;}
  }
  /* Controles solo-hover visibles en pantallas táctiles */
  @media (hover:none){
    .habit-row .more-btn,
    .widget.focus .focus-actions,
    [data-open-avatar] .avatar-cam{opacity:1;}
  }
  /* Day modal */
  .day-modal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
  .day-modal-hd .date-big{font-size:22px;font-weight:800;text-transform:capitalize;}
  .day-modal-hd .date-sub{font-size:11px;color:var(--ink-soft);font-weight:700;letter-spacing:0.4px;text-transform:uppercase;}
  .quick-add{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px;}
  .quick-add button{padding:10px 6px;border-radius:12px;font-size:12px;font-weight:800;background:#FAF5F2;border:1px solid var(--border);transition:transform .12s;}
  .quick-add button:hover{transform:translateY(-2px);}
  .quick-add button.pink{background:linear-gradient(135deg,#FFE5EC,#FFD0DE);}
  .quick-add button.lavender{background:linear-gradient(135deg,#EDE4FB,#DCCFF5);}
  .quick-add button.blue{background:linear-gradient(135deg,#E4EEFB,#D6E4FA);}
  .quick-add button.peach{background:linear-gradient(135deg,#FFEFE0,#FFDCC2);}
  .quick-add button.mint{background:linear-gradient(135deg,#E2F8E9,#CFF0DB);}
  .quick-add button.mint.on{background:linear-gradient(135deg,#BFE6F5,#A9DCEF);}
  .day-item{display:flex;align-items:flex-start;gap:8px;padding:10px;border-radius:12px;background:#FAF5F2;margin-bottom:6px;}
  .day-item .swatch{width:6px;align-self:stretch;border-radius:3px;flex-shrink:0;}
  .day-item .swatch.pink{background:var(--pink-deep);}
  .day-item .swatch.lavender{background:var(--lavender-deep);}
  .day-item .swatch.blue{background:var(--blue-deep);}
  .day-item .swatch.peach{background:var(--peach-deep);}
  .day-item .swatch.mint{background:var(--mint-deep);}
  .day-item .swatch.cream{background:#D4B95E;}
  .day-item .body{flex:1;min-width:0;}
  .day-item .ttl{font-size:13px;font-weight:800;}
  .day-item .meta{font-size:11px;color:var(--ink-soft);margin-top:2px;}
  .day-item .acts{display:flex;gap:4px;align-items:center;}
  .day-item .acts button{width:30px;height:30px;border-radius:8px;background:#fff;border:1px solid var(--border);font-size:13px;}
  .day-item.done .ttl{text-decoration:line-through;color:var(--ink-muted);}
  .color-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
  .color-dot{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;}
  .color-dot.pink{background:var(--pink-deep);}
  .color-dot.lavender{background:var(--lavender-deep);}
  .color-dot.blue{background:var(--blue-deep);}
  .color-dot.peach{background:var(--peach-deep);}
  .color-dot.mint{background:var(--mint-deep);}
  .color-dot.cream{background:#D4B95E;}
  .color-dot.selected{border-color:var(--ink);transform:scale(1.05);}

  /* LIST ITEM */
  .item{display:flex;align-items:center;gap:12px;padding:12px;background:#fff;border-radius:var(--radius-md);margin-bottom:8px;box-shadow:var(--shadow);border:1px solid var(--border);}
  .item .ico{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:18px;}
  .item .body{flex:1;min-width:0;}
  .item .body .ttl{font-size:14px;font-weight:800;color:var(--ink);}
  .item .body .sub{font-size:11px;color:var(--ink-soft);margin-top:2px;}
  .item .right{text-align:right;font-size:11px;color:var(--ink-soft);font-weight:700;}
  .item .right .big{font-size:18px;font-weight:800;color:var(--ink);}

  /* INPUT */
  .field{display:flex;gap:8px;margin-top:10px;}
  .field input,.field select,.field textarea{flex:1;padding:11px 14px;border-radius:12px;background:#FAF5F2;border:1px solid var(--border);font-size:13px;font-weight:600;outline:none;}
  .field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent-deep);background:#fff;}

  /* MAP */
  .map-wrap{position:relative;background:#FFF8E7;border-radius:var(--radius-md);overflow:hidden;}
  .map-svg{width:100%;display:block;}

  /* MOOD */
  .moods{display:flex;justify-content:space-between;gap:6px;margin:10px 0;flex-wrap:wrap;}
  .mood{flex:1;min-width:36px;padding:10px 0;border-radius:12px;text-align:center;font-size:22px;background:#FAF5F2;cursor:pointer;border:2px solid transparent;}
  .mood.selected{background:var(--accent);border-color:var(--accent-deep);}

  .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}

  .ach{display:flex;align-items:center;gap:12px;padding:12px;background:#fff;border-radius:var(--radius-md);margin-bottom:8px;box-shadow:var(--shadow);border:1px solid var(--border);}
  .ach.locked{opacity:0.45;filter:grayscale(0.7);}
  .ach .badge{width:46px;height:46px;border-radius:14px;background:linear-gradient(135deg,#FFE5EC,#FFD6E0);display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;}

  /* ========== HEALTH DASHBOARD ========== */
  .hl-wrap{display:flex;flex-direction:column;gap:12px;column-span:all;}
  .hl-row{display:grid;gap:12px;}
  .hl-row.two{grid-template-columns:1fr 1fr;}
  .hl-row.three{grid-template-columns:1fr 1fr 1fr;}
  @media (max-width:760px){.hl-row.two,.hl-row.three{grid-template-columns:1fr;}}

  /* ===== iOS / mobile: cheaper backgrounds. Blur is expensive on Safari,
     so on small viewports we drop it on overlays that paint frequently
     (modals, map overlays, Vera) and substitute extra opacity for the visual. */
  @media (max-width:760px){
    .modal-bg{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(60,40,65,0.55);}
    .vera-bg{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(60,40,65,0.62);}
    .map-fs-header,.map-legend,.map-cities-panel,.travel-hero-stats,.travel-hero-expand,.travel-hero-legend{backdrop-filter:none;-webkit-backdrop-filter:none;}
    .map-fs-header{background:#FFFFFFEE;}
    .map-cities-panel{background:#FFFFFFF8;}
    .map-legend,.travel-hero-stats,.travel-hero-legend,.travel-hero-expand{background:#FFFFFFEE;}
    /* Tabbar/sidebar blur kept because they paint once. */
  }

  .hl-card{background:#fff;border:1px solid var(--border);border-radius:22px;padding:18px;box-shadow:var(--shadow);position:relative;overflow:hidden;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;display:flex;flex-direction:column;}
  .hl-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.07);}
  .hl-card.cycle{background:linear-gradient(160deg,#FFE9EC 0%,#FFF5F0 100%);}
  .hl-card.sleep{background:linear-gradient(160deg,#EFE6FB 0%,#F6F0FE 100%);}
  .hl-card.exercise{background:linear-gradient(160deg,#E8F5EC 0%,#F2F9F0 100%);}
  .hl-card.steps{background:linear-gradient(160deg,#FFF1E5 0%,#FFFBF0 100%);position:relative;}
  /* Compact steps embedded inside exercise card */
  .hl-mini-steps{margin-top:10px;padding:10px;background:rgba(255,255,255,0.6);border:1px solid rgba(95,176,119,0.18);border-radius:12px;}
  .hl-ms-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .hl-ms-emo{font-size:16px;}
  .hl-ms-lbl{font-size:11px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;flex:1;min-width:0;}
  .hl-ms-val{font-size:16px;font-weight:900;color:var(--ink);}
  .hl-ms-kcal{font-size:11px;font-weight:800;color:#B23B5A;background:#FFE5EC;padding:3px 8px;border-radius:99px;}
  .hl-ms-goal-btn{width:24px;height:24px;border-radius:50%;border:1px solid #C4E0CE;background:#fff;font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}
  .hl-ms-goal-btn:hover{background:#E8F5EC;}
  .hl-ms-progress{height:5px;background:rgba(0,0,0,0.06);border-radius:99px;margin-top:7px;overflow:hidden;}
  .hl-ms-progress span{display:block;height:100%;background:linear-gradient(90deg,#88D4A3,#5FB077);border-radius:99px;transition:width .4s ease;}
  .hl-ms-input{display:flex;gap:5px;margin-top:7px;}
  .hl-ms-input input{flex:1;border:1px solid #C4E0CE;border-radius:8px;padding:6px 10px;font-family:Nunito,sans-serif;font-size:12px;font-weight:700;background:#fff;outline:none;color:var(--ink);min-width:0;}
  .hl-ms-input input:focus{border-color:#5FB077;}
  .hl-ms-input button{background:#5FB077;color:#fff;border:0;border-radius:8px;padding:0 12px;font-family:Nunito,sans-serif;font-size:11px;font-weight:800;cursor:pointer;}
  .hl-ms-input button:hover{background:#4A9963;}
  .hl-kcal-stats{display:flex;gap:8px;margin-top:10px;}
  .hkc-box{flex:1;display:flex;align-items:center;gap:8px;background:#fff;border-radius:11px;padding:8px 10px;border:1px solid rgba(0,0,0,0.05);}
  .hkc-box.today{background:linear-gradient(135deg,#FFE5EC,#FFF1F4);border-color:#F4C2CE;}
  .hkc-box.week{background:linear-gradient(135deg,#FFF1E5,#FFFBF0);border-color:#F4D2BC;}
  .hkc-emo{font-size:18px;}
  .hkc-body{flex:1;min-width:0;}
  .hkc-lbl{font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;}
  .hkc-val{font-size:16px;font-weight:900;color:#B23B5A;line-height:1;}
  .hkc-val span{font-size:9px;font-weight:800;color:var(--ink-soft);}
  .hl-card.steps .hkc-val{color:#8A5634;}
  .hl-steps-hero{text-align:center;margin-top:8px;}
  .hl-steps-big{font-size:34px;font-weight:900;color:var(--ink);line-height:1;}
  .hl-steps-sub{font-size:11px;color:var(--ink-soft);font-weight:700;margin-top:3px;}
  .hl-steps-progress{height:8px;background:rgba(0,0,0,0.06);border-radius:99px;margin-top:10px;overflow:hidden;}
  .hl-steps-progress span{display:block;height:100%;background:linear-gradient(90deg,#F4B996,#E08772);border-radius:99px;transition:width .4s ease;}
  .hl-steps-goal{font-size:10px;font-weight:700;color:var(--ink-soft);margin-top:4px;}
  .hl-steps-input{display:flex;gap:6px;margin-top:10px;}
  .hl-steps-input input{flex:1;border:1.5px solid #F4D2BC;border-radius:11px;padding:9px 12px;font-family:Nunito,sans-serif;font-size:13px;font-weight:700;background:#fff;outline:none;color:var(--ink);}
  .hl-steps-input input:focus{border-color:#E08772;}
  .hl-steps-input button{background:#E08772;color:#fff;border:0;border-radius:11px;padding:0 16px;font-family:Nunito,sans-serif;font-size:12px;font-weight:800;cursor:pointer;}
  .hl-steps-input button:hover{background:#C66E5A;}
  .hl-steps-week{display:flex;align-items:flex-end;gap:4px;height:50px;margin-top:10px;}
  .hl-sw-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;}
  .hl-sw-col.today .hl-sw-lbl{color:#E08772;font-weight:900;}
  .hl-sw-bar{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;background:rgba(0,0,0,0.04);border-radius:4px 4px 0 0;overflow:hidden;}
  .hl-sw-fill{width:80%;background:linear-gradient(180deg,#F4B996,#E08772);border-radius:3px 3px 0 0;min-height:1px;transition:height .4s ease;}
  .hl-sw-lbl{font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;}
  .hl-steps-goal-btn{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:50%;border:1px solid #F4D2BC;background:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;}
  .hl-steps-goal-btn:hover{background:#FFF1E5;}
  .hl-card.mood{background:linear-gradient(160deg,#FFEEDE 0%,#FFF5E7 100%);}
  .hl-card.body{background:linear-gradient(160deg,#FBF5EA 0%,#FFFBF0 100%);}

  .hl-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
  .hl-h .ttl{font-size:13px;font-weight:800;letter-spacing:0.5px;color:var(--ink);display:flex;align-items:center;gap:6px;}
  .hl-h .ttl .ico{font-size:16px;}

  /* Cycle */
  .hl-cycle-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;}
  .hl-day-big{font-size:36px;font-weight:900;line-height:1;color:var(--ink);}
  .hl-day-sub{font-size:11px;color:var(--ink-soft);font-weight:700;text-transform:uppercase;letter-spacing:0.5px;}
  .hl-phase-badge{display:inline-block;padding:5px 12px;border-radius:999px;font-size:11px;font-weight:800;margin-top:5px;}
  .hl-phase-badge.menstrual{background:#FCD5DD;color:#8B3A52;}
  .hl-phase-badge.follicular{background:#D6F0DD;color:#3F6F4D;}
  .hl-phase-badge.ovulation{background:#E8DCFB;color:#5A4585;}
  .hl-phase-badge.luteal{background:#FBE2CC;color:#8A5634;}
  .hl-next-line{font-size:11px;color:var(--ink-soft);font-weight:700;text-align:right;}
  .hl-next-line .b{display:block;font-size:14px;color:var(--ink);font-weight:800;margin-top:2px;}

  .hl-wheel{display:flex;justify-content:center;margin:6px 0 10px;}
  .hl-wheel svg{width:120px;height:120px;}
  .hl-wheel .indicator{transition:transform .8s cubic-bezier(.22,.65,.4,1.2);}

  .hl-symptoms{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;}
  .hl-sym{display:inline-flex;align-items:center;gap:4px;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:700;background:#fff;border:1.5px solid rgba(0,0,0,0.06);color:var(--ink-soft);cursor:pointer;transition:all .15s ease;}
  .hl-sym:hover{transform:translateY(-1px);}
  .hl-sym.on{background:#FCE2E8;border-color:#F4A6B8;color:#8B3A52;}
  .hl-flow-sub{display:flex;gap:4px;margin-left:6px;}
  .hl-flow-sub button{padding:2px 8px;font-size:10px;border-radius:999px;border:1px solid #F4A6B8;background:#fff;color:#8B3A52;cursor:pointer;font-weight:700;}
  .hl-flow-sub button.on{background:#F4A6B8;color:#fff;}

  .hl-stats{display:flex;gap:14px;font-size:10px;color:var(--ink-soft);font-weight:700;margin-top:10px;padding-top:10px;border-top:1px dashed rgba(0,0,0,0.08);}
  .hl-stats .st b{display:block;font-size:14px;color:var(--ink);font-weight:900;}
  .hl-cta{margin:auto auto 0;display:flex;align-items:center;justify-content:center;width:42px;height:42px;padding:0;border:none;border-radius:50%;font-size:22px;font-weight:800;line-height:1;cursor:pointer;box-shadow:0 2px 8px rgba(180,140,180,0.18);transition:transform .15s ease, box-shadow .15s ease;align-self:center;}
  .hl-card .hl-cta{margin-top:auto;padding-top:0;}
  .hl-cta:hover{transform:scale(1.08);box-shadow:0 4px 14px rgba(180,140,180,0.28);}
  .hl-cta:active{transform:scale(0.96);}
  /* Diluted palette tints per card */
  .hl-card.cycle .hl-cta{background:#FBD4DC;color:#9A5566;}
  .hl-card.sleep .hl-cta{background:#DCCBF2;color:#5A4585;}
  .hl-card.exercise .hl-cta{background:#C4E0CE;color:#3F6E50;}

  /* Sleep */
  .hl-sleep-hero{display:flex;align-items:baseline;gap:10px;margin-bottom:4px;}
  .hl-sleep-hours{font-size:34px;font-weight:900;line-height:1;color:var(--ink);}
  .hl-sleep-qual{font-size:12px;font-weight:800;}
  .hl-sleep-qual.good{color:#5A4585;}
  .hl-sleep-qual.normal{color:var(--ink-soft);}
  .hl-sleep-qual.rough{color:#8A5634;}

  .hl-bars{display:flex;flex-direction:column;gap:6px;margin:10px 0 10px;}
  .hl-bar-row{display:flex;align-items:center;gap:6px;font-size:10px;}
  .hl-bar-row .dn{width:16px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;text-align:center;}
  .hl-bar-row .track{flex:1;height:14px;background:rgba(0,0,0,0.04);border-radius:7px;position:relative;overflow:hidden;}
  .hl-bar-row .bar{position:absolute;left:0;top:0;bottom:0;border-radius:7px;transition:width .6s cubic-bezier(.22,.65,.4,1);}
  .hl-bar-row .bar.good{background:linear-gradient(90deg,#B59FE0,#8B7AC4);}
  .hl-bar-row .bar.normal{background:linear-gradient(90deg,#D5C9EE,#B59FE0);}
  .hl-bar-row .bar.rough{background:linear-gradient(90deg,#CCC,#A0A0A0);}
  .hl-bar-row .h{width:32px;text-align:right;font-weight:800;color:var(--ink);}
  .hl-goal-line{position:relative;height:1px;background:transparent;margin-top:-7px;margin-bottom:8px;pointer-events:none;}
  .hl-goal-line::before{content:'';position:absolute;left:22px;right:36px;top:0;height:1px;border-top:1.5px dashed rgba(91,69,133,0.4);}

  /* Exercise */
  .hl-ex-heat{display:flex;gap:5px;margin:8px 0;}
  .hl-ex-cell{flex:1;height:32px;border-radius:8px;background:rgba(136,212,163,0.15);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;color:#3F6F4D;}
  .hl-ex-cell.l1{background:rgba(136,212,163,0.35);}
  .hl-ex-cell.l2{background:rgba(136,212,163,0.55);}
  .hl-ex-cell.l3{background:rgba(136,212,163,0.8);color:#1F4E2C;}
  .hl-ex-cell.l4{background:#5FB077;color:#fff;}
  .hl-ex-cell.today{box-shadow:inset 0 0 0 2px var(--lavender-deep);}
  .hl-ex-list{display:flex;flex-direction:column;gap:5px;margin-top:6px;}
  .hl-ex-item-row{display:flex;align-items:stretch;gap:4px;}
  .hl-ex-del{flex-shrink:0;background:rgba(208,64,96,0.08);border:1px solid rgba(208,64,96,0.18);color:#A8364E;font-size:13px;font-weight:800;cursor:pointer;border-radius:11px;padding:0 10px;font-family:inherit;transition:background .15s, transform .15s;}
  .hl-ex-del:hover{background:rgba(208,64,96,0.18);transform:translateY(-1px);}
  .hl-ex-item{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,0.55);border:1px solid rgba(95,176,119,0.18);border-radius:11px;padding:7px 10px;cursor:pointer;text-align:left;font-family:inherit;flex:1;min-width:0;transition:transform .15s ease, background .15s;}
  .hl-ex-item:hover{transform:translateY(-1px);background:rgba(255,255,255,0.85);}
  .hl-ex-item .emo{font-size:16px;flex-shrink:0;}
  .hl-ex-item .ty{flex:1;font-size:12px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hl-ex-item .mn{font-size:11px;font-weight:800;color:#3F6F4D;background:rgba(95,176,119,0.18);padding:2px 7px;border-radius:99px;flex-shrink:0;}
  .hl-ex-item .dt{font-size:10px;color:var(--ink-soft);font-weight:700;flex-shrink:0;min-width:38px;text-align:right;}
  .hl-ex-more{margin-top:4px;background:transparent;border:none;color:#3F6F4D;font-size:11px;font-weight:800;cursor:pointer;padding:6px 4px;text-align:center;}
  .hl-ex-more:hover{color:#1F4E2C;}
  .hl-wlist{display:flex;flex-direction:column;gap:6px;max-height:50vh;overflow-y:auto;margin-top:6px;}
  .hl-wlist-row{display:flex;align-items:center;gap:6px;background:rgba(95,176,119,0.08);border:1px solid rgba(95,176,119,0.18);border-radius:12px;padding:6px 8px 6px 10px;}
  .hl-wlist-row .info{flex:1;display:flex;align-items:center;gap:10px;background:transparent;border:none;cursor:pointer;padding:4px 2px;text-align:left;font-family:inherit;min-width:0;}
  .hl-wlist-row .emo{font-size:18px;flex-shrink:0;}
  .hl-wlist-row .body{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0;}
  .hl-wlist-row .ty{font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hl-wlist-row .meta{font-size:11px;color:var(--ink-soft);font-weight:700;}
  .hl-wlist-row .del{background:transparent;border:none;color:var(--ink-muted);font-size:14px;cursor:pointer;padding:6px 8px;flex-shrink:0;}
  .hl-wlist-row .del:hover{color:#D88;}

  /* ===== HEALTH 14-DAY STRIP WIDGET ===== */
  .hl-strip-card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:12px 14px;box-shadow:var(--shadow);column-span:all;}
  .hl-strip-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
  .hl-strip-title{font-size:11px;font-weight:900;color:var(--ink);letter-spacing:0.2px;}
  .hl-strip-range{font-size:10px;color:var(--ink-soft);font-weight:700;}
  .hl-strip-lane{display:flex;align-items:center;gap:10px;margin-bottom:5px;}
  .hl-strip-lane:last-of-type{margin-bottom:0;}
  .hl-strip-lane .lbl{min-width:100px;font-size:11px;color:var(--ink-soft);font-weight:700;display:flex;align-items:baseline;gap:5px;flex-wrap:wrap;}
  .hl-strip-lane .lbl b{font-size:13px;font-weight:900;color:var(--ink);}
  .hl-strip-lane .lbl .sub{font-size:9px;color:var(--ink-soft);font-weight:700;}
  .hl-strip-lane .cells{flex:1;display:grid;grid-template-columns:repeat(14,1fr);gap:2px;}
  .hl-strip-cell{height:18px;border-radius:4px;border:none;cursor:pointer;padding:0;background:rgba(0,0,0,0.04);transition:transform .12s ease;}
  .hl-strip-cell:hover{transform:scale(1.18);}
  .hl-strip-cell.today{box-shadow:inset 0 0 0 1.5px var(--lavender-deep);}
  .hl-strip-cell.sleep.low{background:#D9C9F0;}
  .hl-strip-cell.sleep.med{background:#B59CE0;}
  .hl-strip-cell.sleep.high{background:#7958B0;}
  .hl-strip-cell.period.menstrual{background:#F4A6B8;}
  .hl-strip-cell.period.follicular{background:#F4B996;}
  .hl-strip-cell.period.ovulation{background:#FFCB6B;}
  .hl-strip-cell.period.luteal{background:#B59FE0;}
  .hl-strip-cell.ex.low{background:#C4E0CE;}
  .hl-strip-cell.ex.med{background:#8AC79E;}
  .hl-strip-cell.ex.high{background:#3F8F60;}
  .hl-strip-lane.labels .cells{display:grid;grid-template-columns:repeat(14,1fr);gap:2px;}
  .hl-strip-dlbl{font-size:8.5px;font-weight:800;color:var(--ink-soft);text-align:center;letter-spacing:-0.2px;padding:1px 0;line-height:1.15;}
  .hl-strip-dlbl.wknd{color:#A87080;}
  .hl-strip-dlbl.today{color:var(--lavender-deep);font-weight:900;}
  .hl-strip-phases{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:10px;padding-top:8px;border-top:1px dashed rgba(0,0,0,0.06);}
  .hl-strip-phases .ph{font-size:9px;font-weight:800;color:var(--ink);padding:3px 8px;border-radius:99px;letter-spacing:0.2px;}
  .hl-strip-phases .ph.menstrual{background:#F4A6B8;color:#7A2B40;}
  .hl-strip-phases .ph.follicular{background:#F4B996;color:#7A4530;}
  .hl-strip-phases .ph.ovulation{background:#FFCB6B;color:#7A5520;}
  .hl-strip-phases .ph.luteal{background:#B59FE0;color:#3D2C5A;}
  .hl-strip-foot{font-size:9px;color:var(--ink-muted);text-align:center;margin-top:8px;font-weight:700;}

  /* ============ FINANCE — Visual dashboard ============ */
  .fin-wrap{display:flex;flex-direction:column;gap:14px;column-span:all;}
  .fin-month-bar{display:flex;align-items:center;justify-content:center;gap:14px;background:#fff;padding:10px 14px;border-radius:14px;border:1px solid var(--border);box-shadow:var(--shadow);}
  .fin-mb-arrow{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:#F7F3FB;color:var(--ink);font-size:18px;font-weight:900;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;}
  .fin-mb-arrow:hover{background:var(--lavender);}
  .fin-mb-label{font-size:15px;font-weight:900;color:var(--ink);text-transform:capitalize;}
  .fin-mb-now{font-size:9px;font-weight:800;color:#3F8C5C;background:#E2F5E7;padding:2px 7px;border-radius:99px;margin-left:4px;text-transform:uppercase;letter-spacing:0.4px;}

  .fin-hero{display:flex;align-items:center;gap:16px;padding:18px 20px;border-radius:22px;background:linear-gradient(135deg,#FFE5EC 0%,#EDE4FB 100%);border:1px solid rgba(180,150,200,0.25);box-shadow:0 6px 20px rgba(180,140,200,0.18);}
  .fin-hero.pos{background:linear-gradient(135deg,#E2F5E7 0%,#F2FBEF 100%);border-color:#B7DDC2;}
  .fin-hero.neg{background:linear-gradient(135deg,#FFE5EC 0%,#FFF1F4 100%);border-color:#F4C2CE;}
  .fin-hero-emoji{font-size:42px;line-height:1;}
  .fin-hero-body{flex:1;min-width:0;}
  .fin-hero-lbl{font-size:11px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;}
  .fin-hero-val{font-size:32px;font-weight:900;color:var(--ink);line-height:1.1;margin-top:2px;}
  .fin-hero.pos .fin-hero-val{color:#2E7D5B;}
  .fin-hero.neg .fin-hero-val{color:#B23B5A;}
  .fin-hero-sub{font-size:11px;color:var(--ink-soft);font-weight:700;margin-top:4px;}

  .fin-hero-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  @media (max-width:520px){.fin-hero-row{grid-template-columns:1fr;}}

  .fin-year-stats{background:#fff;border:1px solid var(--border);border-radius:18px;padding:14px 16px;box-shadow:var(--shadow);}
  .fin-year-stats .fys-ttl{font-size:12px;font-weight:900;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:12px;}
  .fin-year-stats .fys-grid{display:grid;grid-template-columns:repeat(4, 1fr);gap:9px;}
  @media (max-width:640px){.fin-year-stats .fys-grid{grid-template-columns:repeat(2,1fr);}}
  .fys-stat{padding:12px 10px;border-radius:14px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:5px;}
  .fys-emo{font-size:22px;line-height:1;}
  .fys-lbl{font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.4px;}
  .fys-rows{width:100%;display:flex;flex-direction:column;gap:3px;margin-top:2px;}
  .fys-row{display:flex;justify-content:space-between;align-items:baseline;padding:3px 8px;background:rgba(255,255,255,0.55);border-radius:8px;}
  .fys-row .k{font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;}
  .fys-row .v{font-size:14px;font-weight:900;color:var(--ink);}
  .fys-extra{font-size:9px;font-weight:700;color:var(--ink-soft);margin-top:2px;font-style:italic;}
  .fys-patrimonio{font-size:11px;font-weight:800;color:#5A4585;background:linear-gradient(135deg,#EFE6FB,#F7F0FE);padding:5px 12px;border-radius:99px;border:1px solid #D5C9EE;text-transform:none;letter-spacing:0;white-space:nowrap;}

  .fin-sg-add{font-size:11px;font-weight:800;background:linear-gradient(135deg,#88D4A3,#5FB077);color:#fff;border:0;border-radius:99px;padding:5px 12px;cursor:pointer;box-shadow:0 2px 6px rgba(95,176,119,0.3);}
  .fin-sg-add:hover{transform:translateY(-1px);}
  .sg-name{font-size:13px;font-weight:800;color:var(--ink);}
  .sg-actions{display:flex;align-items:center;gap:6px;}
  .sg-amt{font-size:12px;font-weight:800;color:var(--ink);}
  .sg-btn{width:36px;height:36px;border-radius:8px;border:0;background:transparent;cursor:pointer;font-size:11px;color:var(--ink-soft);}
  .sg-btn:hover{background:rgba(0,0,0,0.06);color:var(--ink);}
  .sg-btn.del:hover{background:#FFE5EC;color:#B23B5A;}

  .fin-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  @media (max-width:480px){.fin-tiles{grid-template-columns:1fr 1fr;}}
  .fin-tile{position:relative;display:flex;align-items:center;gap:12px;padding:14px 14px;border:1.5px solid;border-radius:18px;cursor:pointer;text-align:left;transition:transform .15s, box-shadow .15s;font-family:Nunito,sans-serif;box-shadow:0 4px 14px rgba(180,150,200,0.10);}
  .fin-tile:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(180,150,200,0.18);}
  .fin-tile.readonly{cursor:default;}
  .fin-tile.readonly:hover{transform:none;box-shadow:0 4px 14px rgba(180,150,200,0.10);}
  .fin-tile-emoji{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;color:#fff;box-shadow:0 2px 6px rgba(0,0,0,0.10);}
  .fin-tile-body{flex:1;min-width:0;}
  .fin-tile-lbl{font-size:10px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.4px;}
  .fin-tile-val{font-size:18px;font-weight:900;line-height:1.1;margin-top:1px;}
  .fin-tile-add{position:absolute;top:4px;right:4px;width:32px;height:32px;border-radius:50%;color:#fff;font-size:14px;font-weight:900;display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 2px 6px rgba(0,0,0,0.15);}

  .fin-card{background:#fff;border:1px solid var(--border);border-radius:18px;padding:16px;box-shadow:var(--shadow);}
  .fin-card-h{font-size:13px;font-weight:900;color:var(--ink);margin-bottom:12px;}

  .fin-donut-wrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap;}
  .fin-donut{width:150px;height:150px;flex-shrink:0;}
  .fin-legend{flex:1;min-width:160px;display:flex;flex-direction:column;gap:7px;}
  .fin-legend-row{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--ink);}
  .fin-legend-row .sw{width:14px;height:14px;border-radius:4px;flex-shrink:0;}
  .fin-legend-row .lbl{flex:1;min-width:0;}
  .fin-legend-row .pct{color:var(--ink-soft);font-size:10px;font-weight:800;min-width:34px;text-align:right;}
  .fin-legend-row .val{font-weight:900;color:var(--ink);min-width:50px;text-align:right;}

  .fin-bars-legend{display:flex;gap:14px;font-size:11px;font-weight:700;color:var(--ink-soft);margin-bottom:10px;}
  .fin-bars-legend .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle;}
  .fin-bars{display:flex;align-items:flex-end;gap:8px;height:140px;padding:6px 4px 0;}
  .fin-bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;border-radius:8px;padding:4px 2px;transition:background .15s;}
  .fin-bar-col:hover{background:rgba(180,150,200,0.08);}
  .fin-bar-col.active{background:rgba(180,150,200,0.18);}
  .fin-bar-pair{flex:1;display:flex;align-items:flex-end;gap:3px;width:100%;justify-content:center;}
  .fin-bar{width:42%;border-radius:4px 4px 0 0;min-height:2px;transition:height .4s cubic-bezier(.22,.65,.4,1);}
  .fin-bar.income{background:linear-gradient(180deg,#88D4A3,#5FB077);}
  .fin-bar.expense{background:linear-gradient(180deg,#F4A6B8,#D8456D);}
  .fin-bar-lbl{font-size:10px;font-weight:800;color:var(--ink-soft);text-transform:capitalize;}
  .fin-bar-col.active .fin-bar-lbl{color:var(--ink);}

  .fin-tx{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid rgba(0,0,0,0.04);cursor:pointer;transition:background .15s;border-radius:8px;padding-left:6px;padding-right:6px;margin:0 -6px;}
  .fin-tx:last-child{border-bottom:0;}
  .fin-tx:hover{background:rgba(180,150,200,0.06);}
  .fin-tx-ico{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0;}
  .fin-tx-body{flex:1;min-width:0;}
  .fin-tx-ttl{font-size:13px;font-weight:800;color:var(--ink);}
  .fin-tx-sub{font-size:10px;color:var(--ink-soft);font-weight:700;margin-top:2px;}
  .fin-tx-amt{font-size:14px;font-weight:900;}
  .fin-tx-del{width:30px;height:30px;border-radius:50%;border:1px solid #F4C2CE;background:#FFE5EC;color:#B23B5A;font-size:13px;font-weight:900;cursor:pointer;transition:background .15s, transform .15s;flex-shrink:0;display:flex;align-items:center;justify-content:center;line-height:1;}
  .fin-tx-del:hover{background:#FFCFD9;transform:scale(1.08);}

  .fin-empty{text-align:center;padding:28px 16px;}
  .fin-empty-emo{font-size:38px;margin-bottom:6px;}
  .fin-empty-msg{font-size:12px;font-weight:700;color:var(--ink-soft);}
  .fin-empty-small{font-size:12px;color:var(--ink-soft);font-weight:700;text-align:center;padding:14px 8px;}

  .fin-savings-goal{padding:10px 0;border-bottom:1px solid rgba(0,0,0,0.04);}
  .fin-savings-goal:last-child{border-bottom:0;}
  .fin-sg-head{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:800;color:var(--ink);}

  /* Transaction modal */
  .fin-tx-modal{padding:24px;}
  .fin-tx-modal .fin-tx-types{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px;}
  .fin-tx-modal .fin-tx-type{padding:11px 6px;border-radius:14px;border:1.5px solid;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;font-family:Nunito,sans-serif;font-weight:800;transition:transform .12s;}
  .fin-tx-modal .fin-tx-type:hover{transform:translateY(-1px);}
  .fin-tx-modal .fin-tx-type .emo{font-size:20px;}
  .fin-tx-modal .fin-tx-type .lbl{font-size:10px;}
  .fin-tx-modal .fin-tx-section-h{font-size:10px;font-weight:900;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;margin:10px 0 6px;}
  .fin-tx-modal .fin-tx-cats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;max-height:200px;overflow-y:auto;padding:2px;}
  @media (max-width:380px){.fin-tx-modal .fin-tx-cats{grid-template-columns:repeat(2,1fr);}}
  .fin-tx-modal .fin-tx-cat{padding:9px 5px;border-radius:11px;border:1.5px solid var(--border);background:#fff;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;font-family:Nunito,sans-serif;font-weight:700;font-size:10px;color:var(--ink);transition:transform .12s, border-color .12s;}
  .fin-tx-modal .fin-tx-cat:hover{transform:translateY(-1px);border-color:var(--lavender-deep);}
  .fin-tx-modal .fin-tx-cat .emo{font-size:18px;}
  .fin-tx-modal .fin-tx-cat .lbl{font-size:10px;line-height:1.1;text-align:center;}
  .fin-tx-modal .fin-tx-amount-wrap{display:flex;align-items:center;gap:6px;border:1.5px solid var(--border);border-radius:14px;padding:0 14px;background:#fff;}
  .fin-tx-modal .fin-tx-amount-wrap input{flex:1;border:0;outline:none;background:transparent;font-size:24px;font-weight:900;padding:14px 0;font-family:Nunito,sans-serif;color:var(--ink);width:100%;}
  .fin-tx-modal .fin-tx-amount-wrap .curr{font-size:20px;font-weight:900;}
  .fin-tx-modal .fin-tx-date input{width:100%;border:1.5px solid var(--border);border-radius:11px;padding:10px 12px;font-family:Nunito,sans-serif;font-size:13px;font-weight:700;color:var(--ink);outline:none;background:#fff;}

  .fin-card-clickable{border:1px solid var(--border);transition:transform .15s, box-shadow .15s;font-family:Nunito,sans-serif;}
  .fin-card-clickable:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgba(180,140,200,0.18);}
  .fin-expand-hint{font-size:10px;font-weight:700;color:var(--ink-soft);background:#F7F3FB;padding:3px 8px;border-radius:99px;}
  .fin-legend-more{font-size:11px;font-weight:700;color:var(--ink-soft);font-style:italic;padding:4px 0;}

  /* Category explorer overlay */
  .fin-cat-overlay{position:fixed;inset:0;background:rgba(80,60,90,0.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:500;display:flex;align-items:flex-start;justify-content:center;padding:20px;animation:fadeIn .2s ease;overflow-y:auto;}
  @keyframes fadeIn{from{opacity:0;}to{opacity:1;}}
  .fin-cat-body{background:#fff;border-radius:24px;width:100%;max-width:980px;padding:24px;box-shadow:0 24px 60px rgba(80,60,90,0.4);margin:auto;animation:catSlideIn .25s cubic-bezier(.22,.65,.4,1);}
  @keyframes catSlideIn{from{transform:translateY(20px);opacity:0;}to{transform:translateY(0);opacity:1;}}
  .fin-cat-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px;}
  .fin-cat-head h2{margin:4px 0 6px;font-size:22px;font-weight:900;color:var(--ink);}
  .fin-cat-mlbl{font-size:11px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;}
  .fin-cat-total{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
  .fin-cat-total .big{font-size:30px;font-weight:900;color:var(--ink);}
  .fin-cat-total .lbl{font-size:12px;color:var(--ink-soft);font-weight:800;}
  .fin-cat-total .mom{font-size:11px;font-weight:800;padding:4px 10px;border-radius:99px;}
  .fin-cat-total .mom.up{background:#FFE5EC;color:#B23B5A;}
  .fin-cat-total .mom.down{background:#E2F5E7;color:#2E7D5B;}
  .fin-cat-close{width:38px;height:38px;border-radius:50%;border:1px solid var(--border);background:#fff;font-size:18px;font-weight:900;color:var(--ink);cursor:pointer;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;}
  .fin-cat-close:hover{background:var(--border);}

  .fin-cat-main{display:grid;grid-template-columns:1fr 1.1fr;gap:24px;margin-bottom:18px;}
  @media (max-width:760px){.fin-cat-main{grid-template-columns:1fr;}}
  .fin-cat-donut-wrap{display:flex;align-items:center;justify-content:center;}
  .fin-cat-donut{width:100%;max-width:320px;height:auto;}
  .fin-slice-g{transition:transform .25s cubic-bezier(.22,.65,.4,1);transform-origin:150px 150px;}
  .fin-slice-g:hover{transform:scale(1.04);}
  .fin-slice-g.sel{filter:drop-shadow(0 4px 10px rgba(0,0,0,0.18));}

  .fin-cat-list{display:flex;flex-direction:column;gap:8px;padding:2px;}
  .fin-cat-row{display:flex;align-items:center;gap:12px;padding:11px 12px;border:1.5px solid var(--border);border-radius:14px;background:#fff;cursor:pointer;font-family:Nunito,sans-serif;text-align:left;transition:border-color .15s, transform .12s;}
  .fin-cat-row:hover{transform:translateX(2px);border-color:#B59FE0;}
  .fin-cat-row.sel{box-shadow:0 4px 12px rgba(180,140,200,0.15);}
  .fcr-emo{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0;}
  .fcr-body{flex:1;min-width:0;}
  .fcr-name{font-size:13px;font-weight:800;color:var(--ink);}
  .fcr-bar{height:5px;background:rgba(0,0,0,0.05);border-radius:3px;margin-top:5px;overflow:hidden;}
  .fcr-bar span{display:block;height:100%;border-radius:3px;transition:width .4s ease;}
  .fcr-amounts{text-align:right;flex-shrink:0;}
  .fcr-val{font-size:14px;font-weight:900;color:var(--ink);}
  .fcr-meta{font-size:10px;font-weight:700;color:var(--ink-soft);margin-top:1px;}

  .fin-cat-drill{background:#FAF7FB;border-radius:18px;padding:18px;}
  .fin-cat-drill-h{display:flex;align-items:center;gap:10px;padding-bottom:12px;margin-bottom:12px;border-bottom:2px solid;}
  .fin-cat-drill-h .emo{width:36px;height:36px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px;}
  .fin-cat-drill-h .ttl{font-size:16px;font-weight:900;color:var(--ink);flex:1;}
  .fin-cat-drill-h .cnt{font-size:11px;font-weight:700;color:var(--ink-soft);}
  .fin-cat-drill-h .chg{font-size:11px;font-weight:800;padding:3px 9px;border-radius:99px;}
  .fin-cat-drill-h .chg.up{background:#FFE5EC;color:#B23B5A;}
  .fin-cat-drill-h .chg.down{background:#E2F5E7;color:#2E7D5B;}
  .fin-cat-drill-list{display:flex;flex-direction:column;gap:4px;}
  .fin-cat-tx{display:grid;grid-template-columns:90px 1fr auto;gap:12px;align-items:center;padding:10px 12px;background:#fff;border-radius:12px;cursor:pointer;border:1px solid transparent;transition:border-color .15s;}
  .fin-cat-tx:hover{border-color:#D5C9EE;}
  .fct-dt{font-size:11px;font-weight:800;color:var(--ink-soft);}
  .fct-note{font-size:12px;font-weight:700;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .fct-amt{font-size:13px;font-weight:900;}
  .fin-cat-drill-empty{font-size:12px;color:var(--ink-soft);font-weight:700;text-align:center;padding:18px;}

  .fin-hero.clickable{cursor:pointer;border:0;font-family:Nunito,sans-serif;text-align:left;width:100%;position:relative;}
  .fin-hero.clickable:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(180,150,200,0.22);}
  .fin-hero-chev{position:absolute;top:50%;right:14px;transform:translateY(-50%);font-size:24px;color:var(--ink-soft);font-weight:900;opacity:0.5;}
  .fin-hero.clickable:hover .fin-hero-chev{opacity:1;color:var(--ink);}
  .fys-stat.clickable{cursor:pointer;border:0;font-family:Nunito,sans-serif;transition:transform .15s, box-shadow .15s;}
  .fys-stat.clickable:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(180,150,200,0.18);}

  /* ============ FINANCE STATS modal ============ */
  .fst-overlay{position:fixed;inset:0;background:rgba(80,60,90,0.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:500;display:flex;align-items:flex-start;justify-content:center;padding:20px;overflow-y:auto;animation:fadeIn .2s ease;}
  .fst-body{background:#fff;border-radius:24px;width:100%;max-width:920px;padding:0;box-shadow:0 24px 60px rgba(80,60,90,0.4);margin:auto;animation:catSlideIn .25s cubic-bezier(.22,.65,.4,1);overflow:hidden;}
  .fst-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:22px 24px;border-bottom:1px solid var(--border);}
  .fst-head-l{display:flex;align-items:center;gap:14px;}
  .fst-head-emo{width:54px;height:54px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:26px;color:#fff;box-shadow:0 4px 12px rgba(0,0,0,0.18);}
  .fst-head h2{margin:2px 0;font-size:18px;font-weight:900;color:var(--ink);}
  .fst-head-scope{font-size:11px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.4px;}
  .fst-head-total{font-size:26px;font-weight:900;}
  .fst-close{width:38px;height:38px;border-radius:50%;border:1px solid var(--border);background:#fff;font-size:16px;font-weight:900;color:var(--ink);cursor:pointer;line-height:1;flex-shrink:0;}
  .fst-close:hover{background:var(--border);}

  .fst-content{padding:18px 24px 24px;display:flex;flex-direction:column;gap:18px;}
  .fst-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;}
  @media (max-width:560px){.fst-summary{grid-template-columns:repeat(2,1fr);}}
  .fst-sum-item{background:#FAF7FB;border-radius:12px;padding:10px 12px;}
  .fst-sum-item .k{font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;}
  .fst-sum-item .v{font-size:16px;font-weight:900;color:var(--ink);margin-top:2px;}
  .fst-sum-item .v.up{color:#B23B5A;}
  .fst-sum-item .v.down{color:#2E7D5B;}

  .fst-block{background:#fff;border:1px solid var(--border);border-radius:16px;padding:14px;}
  .fst-block-h{font-size:12px;font-weight:900;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.4px;margin-bottom:10px;}

  .fst-donut-wrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap;}
  .fst-donut{width:150px;height:150px;flex-shrink:0;}
  .fst-type-legend{flex:1;min-width:160px;display:flex;flex-direction:column;gap:6px;}
  .fst-t-row{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--ink);}
  .fst-t-row .dot{width:10px;height:10px;border-radius:50%;}
  .fst-t-row .emo{font-size:14px;}
  .fst-t-row .lbl{flex:1;}
  .fst-t-row .pct{font-size:10px;color:var(--ink-soft);font-weight:800;min-width:36px;text-align:right;}
  .fst-t-row .val{font-weight:900;min-width:60px;text-align:right;}

  .fst-bars{display:flex;align-items:flex-end;gap:6px;height:160px;}
  .fst-bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;}
  .fst-bar-col.now{background:rgba(180,150,200,0.12);border-radius:8px;}
  .fst-bar-val{font-size:8px;font-weight:800;color:var(--ink-soft);height:11px;}
  .fst-bar-track{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;}
  .fst-bar{width:80%;border-radius:4px 4px 0 0;min-height:2px;transition:height .4s cubic-bezier(.22,.65,.4,1);}
  .fst-bar-lbl{font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:capitalize;}

  .fst-daily{display:flex;align-items:flex-end;gap:2px;height:110px;}
  .fst-day{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;}
  .fst-day-bar{width:90%;border-radius:2px 2px 0 0;min-height:1px;transition:height .4s ease;}
  .fst-day-lbl{font-size:7px;font-weight:700;color:var(--ink-muted);}

  .fst-cats{display:flex;flex-direction:column;gap:7px;}
  .fst-cat{display:flex;align-items:center;gap:11px;}
  .fst-cat-emo{width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
  .fst-cat-body{flex:1;min-width:0;}
  .fst-cat-name{font-size:12px;font-weight:800;color:var(--ink);}
  .fst-cat-bar{height:4px;background:rgba(0,0,0,0.05);border-radius:3px;margin-top:4px;overflow:hidden;}
  .fst-cat-bar span{display:block;height:100%;border-radius:3px;transition:width .4s ease;}
  .fst-cat-amounts{text-align:right;}
  .fst-cat-val{font-size:13px;font-weight:900;color:var(--ink);}
  .fst-cat-pct{font-size:10px;font-weight:700;color:var(--ink-soft);}

  .fst-txs{display:flex;flex-direction:column;gap:3px;}
  .fst-tx{display:flex;align-items:center;gap:11px;padding:8px 6px;border-radius:10px;cursor:pointer;}
  .fst-tx:hover{background:#FAF7FB;}
  .fst-tx-ico{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;}
  .fst-tx-body{flex:1;min-width:0;}
  .fst-tx-ttl{font-size:12px;font-weight:800;color:var(--ink);}
  .fst-tx-sub{font-size:10px;color:var(--ink-soft);font-weight:700;margin-top:1px;}
  .fst-tx-amt{font-size:13px;font-weight:900;}

  /* ============ SAPIOBJETIVOS — Maintenance ============ */
  .sapio-maint{column-span:all;position:relative;padding:40px 20px;display:flex;flex-direction:column;align-items:center;gap:14px;min-height:50vh;justify-content:center;}
  .sm-tape{align-self:stretch;height:22px;background:repeating-linear-gradient(45deg,#FFE16B 0 22px,#1A1A1A 22px 44px);border-radius:6px;opacity:0.85;box-shadow:0 2px 6px rgba(0,0,0,0.12);}
  .sm-tape.bottom{transform:scaleX(-1);}
  .sm-card{background:linear-gradient(135deg,#FFFBEC 0%,#FFF1D7 100%);border:2px dashed #E0A040;border-radius:22px;padding:36px 30px;text-align:center;max-width:380px;width:100%;box-shadow:0 12px 36px rgba(180,130,30,0.18);}
  .sm-emo{font-size:54px;line-height:1;animation:smPulse 2.2s ease-in-out infinite;}
  @keyframes smPulse{0%,100%{transform:rotate(-3deg) scale(1);}50%{transform:rotate(3deg) scale(1.05);}}
  .sm-ttl{font-size:22px;font-weight:900;color:#8A6F1F;margin-top:10px;letter-spacing:0.5px;}
  .sm-sub{font-size:13px;font-weight:700;color:var(--ink-soft);margin-top:8px;line-height:1.4;}
  .sm-tag{margin-top:18px;display:inline-block;font-size:10px;font-weight:900;color:#fff;background:#1A1A1A;padding:5px 14px;border-radius:99px;text-transform:uppercase;letter-spacing:1px;}

  /* ============ SAPIOBJETIVOS ============ */
  .sap-wrap{column-span:all;display:flex;flex-direction:column;gap:14px;}
  .sap-hero{display:flex;align-items:center;gap:16px;padding:20px;border-radius:22px;background:linear-gradient(135deg,#FFE5EC 0%,#EFE6FB 50%,#FFF1E5 100%);border:1px solid #D5C9EE;box-shadow:0 8px 26px rgba(180,140,200,0.18);}
  .sap-hero-emo{font-size:46px;}
  .sap-hero-body{flex:1;min-width:0;}
  .sap-hero-tag{font-size:11px;font-weight:900;color:#5A4585;text-transform:uppercase;letter-spacing:1px;}
  .sap-hero-body h2{margin:2px 0 4px;font-size:32px;font-weight:900;color:var(--ink);line-height:1;}
  .sap-hero-sub{font-size:11px;color:var(--ink-soft);font-weight:700;}
  .sap-hero-stats{display:flex;gap:6px;flex-direction:column;}
  .sap-stat{background:rgba(255,255,255,0.6);padding:7px 12px;border-radius:12px;text-align:center;min-width:64px;}
  .sap-stat .v{font-size:18px;font-weight:900;color:var(--ink);line-height:1;}
  .sap-stat .l{font-size:10px;font-weight:800;color:var(--ink-soft);margin-top:2px;}
  .sap-stat.win .v{color:#2E7D5B;}
  .sap-stat.fail .v{color:#B23B5A;}

  .sap-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;font-weight:700;color:var(--ink-soft);padding:0 4px;}
  .sap-legend .sl-dot{display:inline-block;width:12px;height:12px;border-radius:4px;vertical-align:middle;margin-right:5px;}
  .sap-legend .sl-dot.ok{background:#88D4A3;}
  .sap-legend .sl-dot.ko{background:#F4A6B8;}
  .sap-legend .sl-dot.empty{background:rgba(0,0,0,0.08);}

  .sap-card{background:#fff;border:1px solid var(--border);border-radius:18px;padding:16px;box-shadow:var(--shadow);}
  .sap-card-h{font-size:13px;font-weight:900;color:var(--ink);margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;}
  .sap-card-cnt{font-size:11px;font-weight:800;color:var(--ink-soft);background:#FAF7FB;padding:3px 10px;border-radius:99px;}

  .sap-table-wrap{overflow-x:auto;}
  .sap-table{width:100%;border-collapse:separate;border-spacing:3px;font-family:Nunito,sans-serif;}
  .sap-table th{font-size:10px;font-weight:900;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.4px;padding:6px 4px;text-align:center;}
  .sap-table th.cur{color:#D8456D;background:#FFE5EC;border-radius:6px;}
  .sap-row-h{font-size:11px;font-weight:800;color:var(--ink);white-space:nowrap;padding:0 8px;text-align:left;background:#FAF7FB;border-radius:8px;}
  .sap-row-h .emo{margin-right:6px;}
  .sap-cell{width:30px;height:30px;text-align:center;font-size:14px;font-weight:900;cursor:pointer;border-radius:8px;transition:transform .12s;user-select:none;}
  .sap-cell:hover{transform:scale(1.1);}
  .sap-cell.ok{background:#E2F5E7;color:#2E7D5B;}
  .sap-cell.ko{background:#FFE5EC;color:#B23B5A;}
  .sap-cell.empty{background:rgba(0,0,0,0.04);color:var(--ink-muted);}
  .sap-cell.cur{outline:2px solid #D8456D;outline-offset:-1px;}
  .sap-table-hint{font-size:10px;color:var(--ink-soft);font-weight:700;text-align:center;margin-top:8px;font-style:italic;}

  .sap-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
  @media (max-width:640px){.sap-grid-2{grid-template-columns:1fr;}}

  .sap-opt-row{display:flex;align-items:center;gap:10px;padding:7px 4px;border-bottom:1px solid rgba(0,0,0,0.04);}
  .sap-opt-row:last-child{border-bottom:0;}
  .sap-opt-row.done .sap-opt-name{text-decoration:line-through;color:var(--ink-soft);}
  .sap-opt-check{width:26px;height:26px;border-radius:8px;border:1.5px solid var(--border);background:#fff;cursor:pointer;font-size:13px;font-weight:900;color:#2E7D5B;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;transition:transform .12s, background .15s;}
  .sap-opt-check:hover{transform:scale(1.08);}
  .sap-opt-check.on{background:#88D4A3;color:#fff;border-color:#5FB077;}
  .sap-opt-check.big{width:46px;height:46px;border-radius:14px;font-size:22px;}
  .sap-opt-body{flex:1;min-width:0;}
  .sap-opt-name{font-size:13px;font-weight:700;color:var(--ink);}
  .sap-opt-place{font-size:10px;font-weight:700;color:#5A4585;margin-top:2px;}
  .sap-opt-edit{width:28px;height:28px;border-radius:8px;border:1px solid var(--border);background:#fff;cursor:pointer;font-size:12px;flex-shrink:0;padding:0;}
  .sap-opt-edit:hover{background:#EFE6FB;border-color:#B59FE0;}
  .sap-opt-input{flex:1;border:1px dashed transparent;background:transparent;font-family:Nunito,sans-serif;font-size:13px;font-weight:700;color:var(--ink);outline:none;padding:4px 6px;border-radius:6px;}
  .sap-opt-input:hover, .sap-opt-input:focus{border-color:#D5C9EE;background:#FAF7FB;}

  .sap-project{display:flex;align-items:center;gap:14px;padding:8px;background:linear-gradient(135deg,#FFFBEC,#FFF1C7);border-radius:14px;border:1px solid #F0D7A8;}
  .sap-project.done{background:#E2F5E7;border-color:#88D4A3;}
  .sap-project-name{font-size:14px;font-weight:800;color:var(--ink);flex:1;}
  .sap-project.done .sap-project-name{text-decoration:line-through;color:var(--ink-soft);}

  .sap-options-card .sap-card-h{margin-bottom:8px;}
  .sap-opts-nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;}
  .sap-opt-tab{display:flex;align-items:center;gap:6px;padding:7px 11px;border-radius:99px;border:1px solid var(--border);background:#fff;cursor:pointer;font-family:Nunito,sans-serif;font-size:11px;font-weight:800;color:var(--ink);transition:transform .12s;}
  .sap-opt-tab:hover{transform:translateY(-1px);}
  .sap-opt-tab.active{background:linear-gradient(135deg,#F4A6B8,#B59FE0);color:#fff;border-color:transparent;box-shadow:0 4px 12px rgba(180,140,200,0.3);}
  .sap-opt-tab .emo{font-size:14px;}
  .sap-opt-tab .cnt{font-size:10px;font-weight:700;opacity:0.7;}
  .sap-opt-tab.active .cnt{opacity:0.85;}

  .sap-rules{font-size:11px;font-weight:700;color:#5A4585;background:#EFE6FB;border-radius:10px;padding:9px 12px;margin-bottom:10px;line-height:1.4;}

  .sap-mt-group{margin-bottom:10px;}
  .sap-mt-h{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:0.5px;padding:6px 10px;border-radius:8px;border:1px solid;margin-bottom:6px;display:inline-block;}

  .notes-wishes-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;column-span:all;}
  @media (max-width:640px){.notes-wishes-grid{grid-template-columns:1fr;}}
  /* Notas estilo iPhone */
  .nt-search{width:100%;margin:0 0 10px;padding:9px 12px;border-radius:12px;border:1px solid var(--border);background:#fff;font:inherit;font-size:13px;color:var(--ink);}
  .nt-list{padding:4px 0;margin-bottom:10px;}
  .nt-group{font-size:11px;font-weight:800;color:var(--ink-soft);padding:8px 14px 2px;}
  .nt-row{display:flex;align-items:center;gap:6px;padding:10px 8px 10px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s;}
  .nt-row:hover{background:#FAF5F2;}
  .nt-row:last-child{border-bottom:none;}
  .nt-body{flex:1;min-width:0;}
  .nt-ttl{font-size:13.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .nt-sub{font-size:11.5px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px;}
  .nt-sub .dt{color:var(--ink-muted);font-weight:700;margin-right:4px;}
  .nt-pin{background:transparent;border:none;font-size:14px;opacity:.2;cursor:pointer;width:36px;height:36px;flex-shrink:0;border-radius:50%;}
  .nt-pin.on{opacity:1;}
  .nt-editor{width:100%;max-width:560px;display:flex;flex-direction:column;gap:6px;}
  .nt-ed-bar{display:flex;justify-content:flex-end;gap:6px;}
  .nt-ed-btn{width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:#FAF5F2;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;}
  .nt-ed-btn.ok{background:var(--accent);font-weight:900;color:var(--ink);}
  .nt-ed-text{width:100%;min-height:50vh;border:none;resize:none;font:inherit;font-size:14px;line-height:1.55;outline:none;background:transparent;color:var(--ink);}
  .nw-col{display:flex;flex-direction:column;}
  .nw-item{position:relative;}
  .nw-actions{display:flex;gap:4px;align-items:center;margin-left:auto;flex-shrink:0;}
  .nw-btn{width:28px;height:28px;border-radius:8px;border:1px solid var(--border);background:#fff;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .15s, transform .12s;}
  .nw-btn:hover{transform:translateY(-1px);}
  .nw-btn.edit:hover{background:#EFE6FB;border-color:#B59FE0;}
  .nw-btn.del:hover{background:#FFE5EC;border-color:#F4A6B8;}

  /* ============ BLOOM — Gamification ============ */
  .bloom-toast{position:fixed;left:50%;top:24px;transform:translate(-50%,-30px);z-index:9999;background:#fff;border:1px solid var(--border);border-radius:16px;padding:11px 16px;box-shadow:0 14px 40px rgba(80,60,90,0.28);display:flex;align-items:center;gap:12px;opacity:0;transition:opacity .25s ease, transform .35s cubic-bezier(.22,.65,.4,1);min-width:280px;max-width:90vw;font-family:Nunito,sans-serif;}
  .bloom-toast.show{opacity:1;transform:translate(-50%,0);}
  .bloom-toast.xp{background:linear-gradient(135deg,#FFF8FD 0%,#FFFBF0 100%);border-color:#F4C2CE;}
  .bloom-toast.xp .bt-icon{font-size:22px;}
  .bloom-toast.xp .bt-body{display:flex;flex-direction:column;flex:1;}
  .bloom-toast.xp .bt-amt{font-size:15px;font-weight:900;color:#D8456D;line-height:1;}
  .bloom-toast.xp .bt-rsn{font-size:10px;font-weight:700;color:var(--ink-soft);margin-top:2px;}
  .bloom-toast.xp .bt-pet{font-size:13px;font-weight:800;color:#B23B5A;background:#FFE5EC;padding:5px 9px;border-radius:99px;}
  .bloom-toast.levelup{background:linear-gradient(135deg,#EFE6FB 0%,#FFE5EC 100%);border-color:#B59FE0;padding:16px 22px;animation:bloomPulse 2s ease infinite;}
  @keyframes bloomPulse{0%,100%{box-shadow:0 14px 40px rgba(180,140,200,0.3);}50%{box-shadow:0 16px 50px rgba(180,140,200,0.55);}}
  .bloom-toast.levelup .bl-emo{font-size:38px;animation:bloomBounce 1s ease;}
  @keyframes bloomBounce{0%{transform:scale(0);}50%{transform:scale(1.3);}100%{transform:scale(1);}}
  .bloom-toast.levelup .bl-body{display:flex;flex-direction:column;}
  .bloom-toast.levelup .bl-lbl{font-size:10px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;}
  .bloom-toast.levelup .bl-num{font-size:30px;font-weight:900;color:var(--ink);line-height:1;}
  .bloom-toast.levelup .bl-tier{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:0.4px;}
  .bloom-toast.ach{padding:14px 18px;border-width:2px;}
  .bloom-toast.ach .ba-emo{font-size:32px;}
  .bloom-toast.ach .ba-body{flex:1;display:flex;flex-direction:column;}
  .bloom-toast.ach .ba-rar{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:0.5px;}
  .bloom-toast.ach .ba-ttl{font-size:15px;font-weight:900;color:var(--ink);line-height:1.1;}
  .bloom-toast.ach .ba-desc{font-size:11px;font-weight:700;color:var(--ink-soft);margin-top:2px;}
  .bloom-toast.ach .ba-reward{font-size:11px;font-weight:800;color:var(--ink);text-align:right;line-height:1.3;background:rgba(255,255,255,0.6);padding:6px 10px;border-radius:10px;}
  .bloom-toast.ach-common{background:#E8F5EC;border-color:#9DB5A8;}
  .bloom-toast.ach-rare{background:#D6F0DD;border-color:#5FB077;}
  .bloom-toast.ach-epic{background:#EFE6FB;border-color:#8B7AC4;}
  .bloom-toast.ach-legendary{background:linear-gradient(135deg,#FFF1D7,#FFE5BC);border-color:#E0A040;animation:bloomShine 2s ease infinite;}
  .bloom-toast.ach-mythic{background:linear-gradient(135deg,#FFE5EC,#FFD0DE,#EFE6FB);border-color:#D8456D;animation:bloomShine 1.5s ease infinite;}
  .bloom-toast.ach-secret{background:linear-gradient(135deg,#EAE5EE,#3D2C3F);color:#fff;border-color:#3D2C3F;}
  .bloom-toast.ach-secret .ba-ttl, .bloom-toast.ach-secret .ba-desc{color:#fff;}
  .bloom-toast.ach-secret .ba-reward{background:rgba(255,255,255,0.2);color:#fff;}
  @keyframes bloomShine{0%,100%{filter:brightness(1);}50%{filter:brightness(1.15);}}

  /* Sidebar BLOOM chip */
  .bloom-chip{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:99px;background:linear-gradient(135deg,#FFE5EC 0%,#EFE6FB 100%);border:1px solid #D5C9EE;font-family:Nunito,sans-serif;cursor:pointer;transition:transform .15s;margin:6px 8px 0;}
  .bloom-chip:hover{transform:translateY(-1px);}
  .bloom-chip .bc-emo{font-size:14px;}
  .bloom-chip .bc-lvl{font-size:11px;font-weight:900;color:var(--ink);}
  .bloom-chip .bc-bar{flex:1;height:4px;background:rgba(0,0,0,0.07);border-radius:99px;overflow:hidden;min-width:24px;}
  .bloom-chip .bc-bar span{display:block;height:100%;background:linear-gradient(90deg,#F4A6B8,#B59FE0);border-radius:99px;}

  /* BLOOM dashboard page */
  .bloom-wrap{column-span:all;display:flex;flex-direction:column;gap:14px;}
  .bloom-hero{display:flex;align-items:center;gap:18px;padding:20px;border-radius:22px;background:linear-gradient(135deg,#FFE5EC 0%,#EFE6FB 100%);border:1px solid #D5C9EE;box-shadow:0 8px 26px rgba(180,140,200,0.18);position:relative;}
  .bloom-help-row{display:flex;justify-content:flex-end;margin-bottom:-6px;}
  .bloom-help-btn-tiny{background:transparent;border:0;padding:4px 8px;font-family:Nunito,sans-serif;font-size:11px;font-weight:700;color:var(--ink-soft);cursor:pointer;opacity:0.7;transition:opacity .15s;}
  .bloom-help-btn-tiny:hover{opacity:1;color:#5A4585;}
  .bloom-help-btn-tiny span{font-weight:900;margin-right:3px;}

  /* Bloom info modal */
  .bloom-info-modal{padding:24px;max-height:88vh;overflow-y:auto;}
  .bloom-info-modal .bi-hero{text-align:center;background:linear-gradient(135deg,#FFE5EC,#EFE6FB);border-radius:18px;padding:18px;margin-bottom:18px;}
  .bloom-info-modal .bi-hero-emo{font-size:42px;line-height:1;}
  .bloom-info-modal .bi-hero h2{margin:6px 0 2px;font-size:22px;font-weight:900;color:#5A4585;letter-spacing:2px;}
  .bloom-info-modal .bi-sub{font-size:11px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;}
  .bloom-info-modal .bi-section{margin-bottom:18px;}
  .bloom-info-modal .bi-section-rwd{background:linear-gradient(135deg,#FFF8FD,#FFFBF0);border:1px solid #F4C2CE;border-radius:14px;padding:14px;}
  .bloom-info-modal .bi-h{font-size:14px;font-weight:900;color:var(--ink);margin-bottom:8px;}
  .bloom-info-modal p{font-size:12px;line-height:1.5;color:var(--ink);margin:0 0 6px;font-weight:600;}
  .bloom-info-modal .bi-list{display:flex;flex-direction:column;gap:5px;margin-top:8px;}
  .bloom-info-modal .bi-item{display:flex;align-items:center;gap:10px;padding:7px 10px;background:#FAF7FB;border-radius:10px;}
  .bloom-info-modal .bi-item .bi-emo{font-size:16px;}
  .bloom-info-modal .bi-item .bi-txt{flex:1;font-size:12px;font-weight:700;color:var(--ink);}
  .bloom-info-modal .bi-item .bi-xp{font-size:12px;font-weight:900;color:#D8456D;}
  .bloom-info-modal .bi-tiers{display:grid;grid-template-columns:repeat(auto-fit, minmax(90px, 1fr));gap:6px;margin-top:8px;}
  .bloom-info-modal .bi-tier{background:#FAF7FB;border-radius:10px;padding:8px 6px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px;}
  .bloom-info-modal .bi-tier > span:first-child{font-size:18px;}
  .bloom-info-modal .bi-tier > span:nth-child(2){font-size:11px;font-weight:800;color:var(--ink);}
  .bloom-info-modal .bi-tier small{font-size:9px;font-weight:700;color:var(--ink-soft);}
  .bloom-info-modal .bi-rarity-row{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px;}
  @media (max-width:480px){.bloom-info-modal .bi-rarity-row{grid-template-columns:repeat(2,1fr);}}
  .bloom-info-modal .bi-rar{text-align:center;font-size:10px;font-weight:800;padding:8px 4px;border-radius:10px;line-height:1.4;}
  .bloom-info-modal .bi-rar.r-common{background:#E8F5EC;color:#3F6E50;}
  .bloom-info-modal .bi-rar.r-rare{background:#D6F0DD;color:#2E7D5B;}
  .bloom-info-modal .bi-rar.r-epic{background:#EFE6FB;color:#5A4585;}
  .bloom-info-modal .bi-rar.r-legendary{background:linear-gradient(135deg,#FFF1D7,#FFE5BC);color:#8A6F1F;}
  .bloom-info-modal .bi-rar.r-mythic{background:linear-gradient(135deg,#FFE5EC,#FFD0DE);color:#B23B5A;}
  .bloom-info-modal .bi-rar.r-secret{background:#3D2C3F;color:#fff;}
  .bloom-info-modal .bi-tips{margin:6px 0 0;padding-left:18px;font-size:12px;font-weight:600;color:var(--ink);line-height:1.6;}
  .bloom-info-modal .bi-tips li{margin-bottom:4px;}
  .bloom-hero .bh-emo{font-size:48px;}
  .bloom-hero .bh-body{flex:1;min-width:0;}
  .bloom-hero .bh-tier{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:0.5px;}
  .bloom-hero .bh-lvl{font-size:38px;font-weight:900;color:var(--ink);line-height:1;}
  .bloom-hero .bh-sub{font-size:11px;color:var(--ink-soft);font-weight:700;margin-top:4px;}
  .bloom-hero .bh-bar{height:8px;background:rgba(0,0,0,0.06);border-radius:99px;margin-top:8px;overflow:hidden;}
  .bloom-hero .bh-bar span{display:block;height:100%;background:linear-gradient(90deg,#F4A6B8,#B59FE0);border-radius:99px;transition:width .5s ease;}
  .bloom-hero .bh-stats{display:flex;gap:8px;flex-direction:column;}
  .bloom-hero .bh-stat{background:rgba(255,255,255,0.55);border-radius:12px;padding:7px 12px;text-align:center;min-width:80px;}
  .bloom-hero .bh-sk{font-size:10px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.4px;}
  .bloom-hero .bh-sv{font-size:18px;font-weight:900;color:var(--ink);line-height:1;}

  .bloom-card{background:#fff;border:1px solid var(--border);border-radius:18px;padding:16px;box-shadow:var(--shadow);}
  .bloom-card-h{font-size:13px;font-weight:900;color:var(--ink);margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:8px;}
  .bloom-card-h .small{font-size:11px;color:var(--ink-soft);font-weight:700;}

  .bloom-achs{display:grid;grid-template-columns:repeat(auto-fill, minmax(150px, 1fr));gap:10px;}
  .bloom-ach{background:#FAF7FB;border:1.5px solid var(--border);border-radius:14px;padding:11px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;transition:transform .15s;position:relative;}
  .bloom-ach.locked{opacity:0.45;filter:grayscale(0.7);}
  .bloom-ach:hover{transform:translateY(-2px);}
  .bloom-ach .bah-emo{font-size:28px;filter:drop-shadow(0 2px 4px rgba(0,0,0,0.12));}
  .bloom-ach .bah-name{font-size:11px;font-weight:900;color:var(--ink);line-height:1.1;}
  .bloom-ach .bah-desc{font-size:9px;font-weight:700;color:var(--ink-soft);line-height:1.2;}
  .bloom-ach .bah-rar{position:absolute;top:6px;right:6px;font-size:8px;font-weight:900;text-transform:uppercase;letter-spacing:0.3px;padding:2px 6px;border-radius:99px;}
  .bloom-ach.r-common  .bah-rar{background:#E8F5EC;color:#3F6E50;}
  .bloom-ach.r-rare    .bah-rar{background:#D6F0DD;color:#2E7D5B;}
  .bloom-ach.r-epic    .bah-rar{background:#EFE6FB;color:#5A4585;}
  .bloom-ach.r-legendary .bah-rar{background:linear-gradient(135deg,#FFF1D7,#FFE5BC);color:#8A6F1F;}
  .bloom-ach.r-mythic  .bah-rar{background:linear-gradient(135deg,#FFE5EC,#FFD0DE);color:#B23B5A;}
  .bloom-ach.r-secret  .bah-rar{background:#3D2C3F;color:#fff;}

  .bloom-rwd-edit{width:28px;height:28px;border-radius:8px;border:1px solid var(--border);background:#fff;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}
  .bloom-rwd-edit:hover{background:#F7F3FB;}
  .bloom-rwds{display:flex;flex-direction:column;gap:10px;}
  .bloom-rwd{display:flex;align-items:flex-start;gap:12px;padding:12px;border-radius:14px;border:1.5px solid var(--border);background:#FAF7FB;transition:transform .15s;}
  .bloom-rwd.unlocked{background:linear-gradient(135deg,#FFE5EC 0%,#FFFBF0 100%);border-color:#F4A6B8;box-shadow:0 4px 14px rgba(216,69,109,0.15);animation:bloomGlow 2.5s ease infinite;}
  @keyframes bloomGlow{0%,100%{box-shadow:0 4px 14px rgba(216,69,109,0.15);}50%{box-shadow:0 6px 24px rgba(216,69,109,0.35);}}
  .bloom-rwd.locked{opacity:0.85;}
  .bloom-rwd.claimed{opacity:0.7;background:#E8F5EC;border-color:#88D4A3;}
  .bloom-rwd.claimed.unlocked{animation:none;}
  .brwd-emo{font-size:32px;flex-shrink:0;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:12px;box-shadow:var(--shadow);}
  .brwd-body{flex:1;min-width:0;}
  .brwd-name{font-size:14px;font-weight:900;color:var(--ink);}
  .brwd-desc{font-size:11px;font-weight:700;color:var(--ink-soft);margin-top:2px;}
  .brwd-cond{font-size:10px;font-weight:800;color:#5A4585;background:#EFE6FB;display:inline-block;padding:3px 8px;border-radius:99px;margin-top:6px;}
  .brwd-bar{height:5px;background:rgba(0,0,0,0.06);border-radius:99px;margin-top:8px;overflow:hidden;}
  .brwd-bar span{display:block;height:100%;background:linear-gradient(90deg,#F4A6B8,#B59FE0);border-radius:99px;transition:width .4s ease;}
  .brwd-pct{font-size:10px;font-weight:700;color:var(--ink-soft);margin-top:3px;}
  .brwd-claim{margin-top:8px;background:linear-gradient(135deg,#F4A6B8,#D8456D);color:#fff;border:0;border-radius:99px;padding:7px 14px;font-family:Nunito,sans-serif;font-size:11px;font-weight:800;cursor:pointer;}
  .brwd-claim:hover{transform:translateY(-1px);}
  .brwd-claimed{font-size:11px;font-weight:800;color:#2E7D5B;margin-top:6px;}

  .rwd-editor .rwd-list{display:flex;flex-direction:column;gap:10px;max-height:55vh;overflow-y:auto;padding:4px;}
  .rwd-editor .rwd-row{display:flex;gap:8px;align-items:flex-start;background:#FAF7FB;border-radius:12px;padding:10px;}
  .rwd-editor .rwd-emo{width:48px;height:48px;text-align:center;font-size:22px;border:1px solid var(--border);border-radius:10px;background:#fff;outline:none;flex-shrink:0;font-family:Nunito,sans-serif;}
  .rwd-editor .rwd-row-body{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0;}
  .rwd-editor .rwd-name, .rwd-editor .rwd-desc{border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-family:Nunito,sans-serif;font-size:12px;background:#fff;outline:none;color:var(--ink);width:100%;}
  .rwd-editor .rwd-name{font-weight:800;}
  .rwd-editor .rwd-cond-row{display:flex;gap:6px;}
  .rwd-editor .rwd-ctype{flex:1;border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-family:Nunito,sans-serif;font-size:11px;font-weight:700;background:#fff;outline:none;color:var(--ink);}
  .rwd-editor .rwd-cval{width:80px;text-align:center;border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-family:Nunito,sans-serif;font-size:11px;font-weight:800;background:#fff;outline:none;color:var(--ink);}
  .rwd-editor .rwd-del{width:32px;height:32px;border-radius:8px;border:1px solid var(--border);background:#fff;cursor:pointer;font-size:13px;flex-shrink:0;}
  .rwd-editor .rwd-del:hover{background:#FFE5EC;border-color:#F4A6B8;}

  .bloom-hist{display:flex;flex-direction:column;gap:6px;max-height:240px;overflow-y:auto;}
  .bloom-hist-row{display:flex;align-items:center;gap:10px;padding:6px 4px;border-bottom:1px solid rgba(0,0,0,0.04);}
  .bloom-hist-row .bhr-rsn{flex:1;font-size:12px;font-weight:700;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .bloom-hist-row .bhr-xp{font-size:12px;font-weight:900;color:#D8456D;}
  .bloom-hist-row .bhr-pet{font-size:11px;font-weight:800;color:#B23B5A;background:#FFE5EC;padding:2px 7px;border-radius:99px;}

  /* Finance PIN lock */
  .fin-lock{display:flex;justify-content:center;align-items:center;min-height:50vh;column-span:all;}
  .fin-lock-card{background:#fff;border:1px solid var(--border);border-radius:22px;padding:28px 24px;box-shadow:var(--shadow);max-width:300px;text-align:center;}
  .fin-lock-emoji{font-size:42px;margin-bottom:6px;}
  .fin-lock-ttl{font-size:17px;font-weight:900;color:var(--ink);margin-bottom:4px;}
  .fin-lock-sub{font-size:12px;color:var(--ink-soft);font-weight:700;margin-bottom:16px;}
  .fin-lock-card input{width:100%;text-align:center;font-size:22px;font-weight:900;letter-spacing:8px;padding:12px;border-radius:14px;border:1px solid var(--border);background:rgba(0,0,0,0.02);outline:none;color:var(--ink);}
  .fin-lock-card input:focus{border-color:var(--lavender-deep);background:#fff;}
  .fin-lock-err{font-size:11px;color:#C66;font-weight:800;min-height:14px;margin:6px 0 10px;}
  @media (max-width:520px){
    .hl-strip-lane{flex-direction:column;align-items:stretch;gap:4px;}
    .hl-strip-lane .lbl{min-width:0;}
    .hl-strip-cell{height:14px;}
  }

  /* Health day modal */
  .hl-dm-row{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px dashed rgba(0,0,0,0.06);}
  .hl-dm-row:last-of-type{border-bottom:none;}
  .hl-dm-ico{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;}
  .hl-dm-ico.sleep{background:#EFE6FB;}
  .hl-dm-ico.period{background:#FFE5EC;}
  .hl-dm-ico.ex{background:#E8F5EC;}
  .hl-dm-body{flex:1;min-width:0;}
  .hl-dm-ttl{font-size:10px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.4px;margin-bottom:3px;}
  .hl-dm-val{font-size:14px;font-weight:800;color:var(--ink);}
  .hl-dm-syms{display:flex;gap:6px;margin-top:6px;font-size:14px;}
  .hl-dm-wlist{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;}
  .hl-dm-wchip{background:rgba(95,176,119,0.12);border:1px solid rgba(95,176,119,0.25);color:#3F6F4D;font-size:11px;font-weight:800;padding:4px 10px;border-radius:99px;cursor:pointer;font-family:inherit;}
  .hl-dm-wchip:hover{background:rgba(95,176,119,0.25);}
  .hl-dm-actions{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap;}
  .hl-dm-btn{flex:1;min-width:90px;padding:9px 10px;border-radius:12px;border:none;font-size:11px;font-weight:800;cursor:pointer;font-family:inherit;transition:transform .15s;}
  .hl-dm-btn:hover{transform:translateY(-1px);}
  .hl-dm-btn.sleep{background:#DCCBF2;color:#5A4585;}
  .hl-dm-btn.period{background:#FBD4DC;color:#9A5566;}
  .hl-dm-btn.ex{background:#C4E0CE;color:#3F6E50;}

  /* Mood */
  .hl-mood-pick{display:flex;justify-content:space-between;margin:10px 0;}
  .hl-mood-btn{flex:1;font-size:24px;background:rgba(255,255,255,0.6);border:2px solid transparent;border-radius:14px;padding:8px 0;cursor:pointer;transition:all .15s ease;}
  .hl-mood-btn:hover{transform:scale(1.1);}
  .hl-mood-btn.on{background:#fff;border-color:#F4B996;box-shadow:0 4px 10px rgba(244,185,150,0.3);transform:scale(1.1);}
  .hl-mood-week{display:flex;gap:4px;justify-content:space-between;margin-top:6px;}
  .hl-mood-week span{flex:1;text-align:center;font-size:18px;opacity:0.7;}
  .hl-mood-week .e{font-size:10px;color:var(--ink-soft);margin-top:2px;font-weight:800;text-transform:uppercase;}

  /* Body */
  .hl-body-empty{text-align:center;padding:14px 6px;font-size:12px;color:var(--ink-soft);}
  .hl-body-metric{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px dashed rgba(0,0,0,0.07);font-size:12px;}
  .hl-body-metric:last-child{border-bottom:none;}
  .hl-body-metric .v{font-weight:900;font-size:14px;color:var(--ink);}

  /* Insights banner */
  .hl-insights{background:linear-gradient(135deg,#FFE9EC 0%,#EFE6FB 50%,#E8F5EC 100%);border-radius:22px;padding:16px 18px;border:1px solid var(--border);box-shadow:var(--shadow);}
  .hl-insights .ih{font-size:11px;font-weight:800;letter-spacing:0.5px;color:var(--ink-soft);text-transform:uppercase;margin-bottom:10px;display:flex;align-items:center;gap:6px;}
  .hl-insights .list{display:flex;flex-direction:column;gap:8px;}
  .hl-insights .item{background:rgba(255,255,255,0.7);padding:10px 14px;border-radius:14px;font-size:12px;font-weight:700;color:var(--ink);}
  .hl-insights .empty{padding:6px 4px;font-size:12px;color:var(--ink-soft);background:transparent;text-align:center;}

  /* Toast */
  .hl-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(40px);background:linear-gradient(135deg,#FCD5DD,#EFE6FB);color:var(--ink);padding:10px 22px;border-radius:999px;font-weight:800;font-size:13px;box-shadow:0 10px 30px rgba(60,40,65,0.2);opacity:0;transition:all .3s ease;z-index:200;pointer-events:none;}
  .hl-toast.on{opacity:1;transform:translateX(-50%) translateY(0);}

  /* Quality picker (modal) */
  .hl-q-pick{display:flex;gap:10px;justify-content:space-around;margin:8px 0 4px;}
  .hl-q-btn{flex:1;text-align:center;background:rgba(255,255,255,0.6);border:2px solid var(--border);border-radius:14px;padding:10px 6px;cursor:pointer;}
  .hl-q-btn .e{font-size:30px;display:block;}
  .hl-q-btn .l{font-size:11px;font-weight:800;margin-top:4px;color:var(--ink-soft);}
  .hl-q-btn.on{background:#fff;border-color:#B59FE0;color:var(--ink);}
  .hl-q-btn.on .l{color:var(--ink);}

  /* ========== NUTRITION ========== */
  .nu-wrap{display:flex;flex-direction:column;gap:14px;column-span:all;-webkit-column-span:all;}
  .nu-topbar{display:flex;flex-direction:column;align-items:center;gap:10px;background:#fff;border:1px solid var(--border);border-radius:18px;padding:12px 16px;box-shadow:var(--shadow);}
  .nu-topbar-btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;}
  .nu-week-nav{display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;font-weight:800;color:var(--ink);flex-wrap:wrap;}
  .nu-week-nav button{background:rgba(0,0,0,0.04);border:none;width:30px;height:30px;border-radius:50%;font-size:14px;cursor:pointer;color:var(--ink);font-weight:800;transition:background .15s ease;}
  .nu-week-nav button:hover{background:rgba(0,0,0,0.08);}
  .nu-week-nav .lbl{min-width:0;max-width:100%;text-align:center;}
  .nu-week-nav .today-pill{font-size:10px;color:var(--lavender-deep);font-weight:800;text-transform:uppercase;}
  /* Touch devices: swipe changes week — hide the arrow buttons (keep the "this week" pill) */
  @media (hover:none){
    .nu-week-nav [data-nu-week="prev"],.nu-week-nav [data-nu-week="next"]{display:none!important;}
  }
  .nu-goals-btn{background:#FFF1E5;border:1px solid #F4D2BC;color:var(--ink);font-weight:800;font-size:12px;padding:7px 14px;border-radius:99px;cursor:pointer;}
  /* App only: paleta de semana más estrecha — botones solo emoji, arriba a la derecha, fondo de la paleta */
  @media (max-width:767px){
    .nu-topbar{position:relative;padding:8px 12px;gap:4px;}
    .nu-topbar-btns{position:absolute;top:6px;right:8px;gap:4px;}
    .nu-goals-btn{background:#fff;border:none;padding:0;width:28px;height:28px;border-radius:8px;font-size:14px;line-height:28px;text-align:center;}
    .nu-goals-btn .nu-btn-lbl{display:none;}
    /* App only: el botón "Esta semana" solo confunde — la etiqueta ya sale en la semana actual */
    .nu-week-nav [data-nu-week="today"]{display:none!important;}
    /* App only: la paleta entera abre la vista completa — fuera el botón ⛶ */
    .nu-topbar [data-nu-fullscreen]{display:none!important;}
    .nu-topbar{cursor:pointer;}
  }

  /* ===== Nutrición: anillos de progreso del día ===== */
  .nu-rings{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;background:#fff;border:1px solid var(--border);border-radius:18px;padding:14px 8px;box-shadow:var(--shadow);box-sizing:border-box;max-width:100%;overflow:hidden;}
  .nu-ring{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;min-width:0;max-width:100%;}
  .nu-ring svg{width:100%;max-width:64px;height:auto;aspect-ratio:1;}
  .nu-ring .lbl{font-size:10px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.3px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .nu-ring .v{font-size:9px;font-weight:700;color:var(--ink-soft);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

  /* ===== Nutrición: tendencia 4 semanas ===== */
  .nu-trend{background:#fff;border:1px solid var(--border);border-radius:18px;padding:16px 14px 12px;box-shadow:var(--shadow);}
  .nu-trend .bars{position:relative;display:flex;align-items:flex-end;gap:14px;height:120px;}
  .nu-trend .goal{position:absolute;left:0;right:0;border-top:2px dashed #B59FE0;z-index:1;pointer-events:none;}
  .nu-trend .goal span{position:absolute;right:0;top:-16px;font-size:9px;font-weight:800;color:#7859A6;background:#F6F0FE;border-radius:6px;padding:1px 6px;}
  .nu-trend .tcol{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:100%;}
  .nu-trend .tbar{width:100%;max-width:70px;border-radius:10px 10px 4px 4px;background:linear-gradient(180deg,#F4C6D2,#F9E2E8);}
  .nu-trend .tcol.now .tbar{background:linear-gradient(180deg,#F4A6B8,#E88AA2);}
  .nu-trend .tbar.over{background:linear-gradient(180deg,#E8938F,#F4B996);}
  .nu-trend .tval{font-size:11px;font-weight:900;color:var(--ink);}
  .nu-trend .tlbl{font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;}
  .nu-trend .tcol.now .tlbl{color:#D8456D;}

  /* ===== Nutrición: consejos ===== */
  .nu-tips{display:flex;flex-direction:column;gap:8px;}
  .nu-tip{display:flex;gap:10px;align-items:flex-start;background:#fff;border:1px solid var(--border);border-radius:14px;padding:12px 14px;box-shadow:var(--shadow);font-size:12px;font-weight:700;color:var(--ink);line-height:1.5;}
  .nu-tip .e{font-size:18px;flex-shrink:0;}
  .nu-tip.edu{background:linear-gradient(135deg,#F6F0FE,#EFE6FB);border-color:#D5C9EE;}
  .nu-tip.ok{background:linear-gradient(135deg,#E9F8EE,#DFF3E6);border-color:#BFE3CC;}

  /* ===== Nutrición: botón "como ayer" en celdas vacías ===== */
  .nu-yday{background:#F6F0FE;border:1px solid #D5C9EE;color:#553D8C;font-size:9px;font-weight:800;border-radius:99px;padding:3px 8px;cursor:pointer;align-self:flex-start;margin:2px 0;}
  .nu-yday:hover{background:#EDE4FB;}

  /* Weekly summary banner */
  .nu-week-summary{background:linear-gradient(135deg,#FFE9EC 0%,#EFE6FB 60%,#E8F5EC 100%);border-radius:20px;padding:16px 18px;border:1px solid var(--border);box-shadow:var(--shadow);}
  .nu-week-summary .sh{font-size:11px;font-weight:800;letter-spacing:0.5px;color:var(--ink-soft);text-transform:uppercase;margin-bottom:10px;}
  .nu-week-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
  @media (max-width:760px){.nu-week-stats{grid-template-columns:1fr;}}
  .nu-stat{background:rgba(255,255,255,0.7);padding:10px 12px;border-radius:14px;}
  .nu-stat .l{font-size:10px;color:var(--ink-soft);font-weight:800;text-transform:uppercase;letter-spacing:0.4px;}
  .nu-stat .v{font-size:18px;font-weight:900;color:var(--ink);margin-top:2px;}
  .nu-stat .s{font-size:10px;color:var(--ink-soft);font-weight:700;margin-top:2px;}
  /* Chart */
  .nu-chart{margin-top:14px;background:rgba(255,255,255,0.6);border-radius:14px;padding:10px 12px;}
  .nu-chart .ch-bars{display:flex;gap:6px;align-items:flex-end;height:84px;}
  .nu-chart .ch-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;}
  .nu-chart .ch-bar{width:100%;background:linear-gradient(180deg,#B59FE0,#8B7AC4);border-radius:6px 6px 0 0;transition:height .4s cubic-bezier(.22,.65,.4,1);min-height:3px;}
  .nu-chart .ch-bar.over{background:linear-gradient(180deg,#F4A6B8,#E08AA0);}
  .nu-chart .ch-bar.free{background:repeating-linear-gradient(45deg,#F4B996,#F4B996 4px,#FFD6B8 4px,#FFD6B8 8px);}
  .nu-chart .ch-lbl{font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;}
  .nu-chart .ch-val{font-size:9px;color:var(--ink);font-weight:700;}
  .nu-chart .ch-goal-line{position:relative;height:1px;margin:0 0 -1px;}
  .nu-chart .ch-goal-line::before{content:'';position:absolute;left:4%;right:4%;height:1px;border-top:1.5px dashed rgba(91,69,133,0.35);}

  /* ===== Inline (non-fullscreen) dashboard ===== */
  .nu-hero{display:grid;grid-template-columns:auto 1fr;gap:18px;background:#fff;border:1px solid var(--border);border-radius:20px;padding:18px;box-shadow:var(--shadow);align-items:center;}
  @media (max-width:760px){.nu-hero{grid-template-columns:1fr;text-align:center;}}
  .nu-ring{display:flex;align-items:center;justify-content:center;}
  .nu-ring svg{width:140px;height:140px;}
  .nu-ring .ring-bg{fill:none;stroke:rgba(0,0,0,0.05);stroke-width:10;}
  .nu-ring .ring-fg{fill:none;stroke-linecap:round;stroke-width:10;transform:rotate(-90deg);transform-origin:center;transition:stroke-dashoffset .6s cubic-bezier(.22,.65,.4,1);}
  .nu-ring .ring-fg.within{stroke:url(#nuGradWithin);}
  .nu-ring .ring-fg.over{stroke:url(#nuGradOver);}
  .nu-ring .ring-fg.under{stroke:url(#nuGradUnder);}
  .nu-ring text.kcal{font-size:24px;font-weight:900;fill:var(--ink);font-family:Nunito;}
  .nu-ring text.lbl{font-size:9px;fill:var(--ink-soft);font-weight:800;font-family:Nunito;}
  .nu-hero-body{display:flex;flex-direction:column;gap:10px;}
  .nu-hero-title{font-size:11px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;}
  .nu-hero-day{font-size:18px;font-weight:900;color:var(--ink);}
  .nu-macro-bars{display:flex;flex-direction:column;gap:7px;margin-top:4px;}
  .nu-macro{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;}
  .nu-macro .nm{width:90px;color:var(--ink-soft);font-weight:800;}
  .nu-macro .trk{flex:1;height:10px;background:rgba(0,0,0,0.04);border-radius:5px;overflow:hidden;}
  .nu-macro .bar{height:100%;border-radius:5px;transition:width .5s ease;}
  .nu-macro.p .bar{background:linear-gradient(90deg,#F4A6B8,#E08AA0);}
  .nu-macro.f .bar{background:linear-gradient(90deg,#F4B996,#E89E72);}
  .nu-macro.c .bar{background:linear-gradient(90deg,#B59FE0,#8B7AC4);}
  .nu-macro.fi .bar{background:linear-gradient(90deg,#88D4A3,#5FB077);}
  .nu-macro .val{width:62px;text-align:right;color:var(--ink);font-weight:900;}

  .nu-edit-cta{background:linear-gradient(135deg,#FCE2E8 0%,#EFE6FB 100%);border:none;color:var(--ink);font-weight:900;font-size:13px;padding:14px 22px;border-radius:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 4px 14px rgba(180,140,180,0.18);transition:transform .15s ease,box-shadow .15s ease;column-span:all;-webkit-column-span:all;}
  .nu-edit-cta:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(180,140,180,0.25);}

  /* Per-day summary cards (richer than the old strip) */
  .nu-days-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;}
  .nu-day-sum{background:#fff;border:1px solid var(--border);border-radius:16px;padding:12px 14px;box-shadow:var(--shadow);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;display:flex;flex-direction:column;gap:8px;}
  .nu-day-sum:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(180,140,180,0.14);}
  .nu-day-sum.today{border-color:#F4A6B8;background:linear-gradient(160deg,#FFF5F7 0%,#FFFBFA 100%);box-shadow:0 4px 18px rgba(244,166,184,0.18);}
  .nu-day-sum.free{background:linear-gradient(160deg,#FFF1E5 0%,#FFFBF0 100%);border-color:#F4D2BC;}
  /* Kcal status palettes — pastel red if over, pastel green if within */
  .nu-day-sum.kcal-over{background:linear-gradient(160deg,#FFE5EC 0%,#FFF1F4 100%);border-color:#F4C2CE;}
  .nu-day-sum.kcal-over.today{background:linear-gradient(160deg,#FFD9E3 0%,#FFEDF2 100%);border-color:#F4A6B8;}
  .nu-day-sum.kcal-ok{background:linear-gradient(160deg,#E2F5E7 0%,#F1FBF3 100%);border-color:#B7DDC2;}
  .nu-day-sum.kcal-ok.today{background:linear-gradient(160deg,#D2EFDA 0%,#EAF8EE 100%);border-color:#8FCC9F;}
  .nu-day-sum-head{display:flex;align-items:baseline;justify-content:space-between;gap:6px;}
  .nu-day-sum-head .dn{font-size:11px;font-weight:900;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.4px;}
  .nu-day-sum-head .dn.today{color:#8B3A52;}
  .nu-day-sum-head .dt{font-size:13px;font-weight:900;color:var(--ink);}
  .nu-day-sum-kcal{display:flex;align-items:baseline;gap:6px;}
  .nu-day-sum-kcal .v{font-size:22px;font-weight:900;color:var(--ink);line-height:1;}
  .nu-day-sum-kcal .u{font-size:10px;color:var(--ink-soft);font-weight:800;}
  .nu-day-sum-kcal .g{margin-left:auto;font-size:10px;color:var(--ink-soft);font-weight:700;}
  .nu-day-sum-net{font-size:10px;font-weight:700;color:var(--ink-soft);background:rgba(255,255,255,0.6);border-radius:8px;padding:4px 8px;margin-top:2px;}
  .nu-day-sum-net b{color:var(--ink);font-weight:900;}
  .nu-day-sum-bar{height:5px;background:rgba(0,0,0,0.04);border-radius:3px;overflow:hidden;}
  .nu-day-sum-bar span{display:block;height:100%;background:linear-gradient(90deg,#88D4A3,#5FB077);transition:width .4s ease;border-radius:3px;}
  .nu-day-sum-bar span.over{background:linear-gradient(90deg,#F4A6B8,#E08AA0);}
  .nu-day-sum-bar span.under{background:linear-gradient(90deg,#B59FE0,#8B7AC4);}
  .nu-day-sum-macros{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:5px;font-size:10px;}
  .nu-day-sum-macros .mac{background:rgba(0,0,0,0.025);border-radius:7px;padding:5px 4px;text-align:center;}
  .nu-day-sum-macros .mac .l{font-size:8px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;}
  .nu-day-sum-macros .mac .v{font-size:11px;font-weight:900;color:var(--ink);margin-top:1px;}
  .nu-day-sum-macros .mac.p{background:#FCE2E8;} .nu-day-sum-macros .mac.p .v{color:#8B3A52;}
  .nu-day-sum-macros .mac.f{background:#FFE9D7;} .nu-day-sum-macros .mac.f .v{color:#8A5634;}
  .nu-day-sum-macros .mac.c{background:#EFE6FB;} .nu-day-sum-macros .mac.c .v{color:#5A4585;}
  .nu-day-sum-macros .mac.fi{background:#E2F8E9;} .nu-day-sum-macros .mac.fi .v{color:#3F6F4D;}
  .nu-day-sum-free{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:14px 0;color:#8A5634;}
  .nu-day-sum-free .e{font-size:32px;}
  .nu-day-sum-free .t{font-size:11px;font-weight:800;margin-top:4px;}
  .nu-day-sum-empty{text-align:center;color:var(--ink-muted);font-size:11px;font-weight:700;padding:14px 0;}

  /* Wellbeing avatar (in-grid stat variant) */
  .nu-stat.nu-stat-avatar{display:flex;align-items:center;gap:10px;padding:8px 10px;background:linear-gradient(135deg,#FFF5F7 0%,#FFFBF0 60%,#F2FBEF 100%);}
  .nu-stat.nu-stat-avatar .ava{flex-shrink:0;}
  .nu-stat.nu-stat-avatar .ava .nu-avatar-svg{width:62px;height:80px;display:block;}
  .nu-stat.nu-stat-avatar .body{flex:1;min-width:0;}
  .nu-stat.nu-stat-avatar .l{font-size:10px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.4px;}
  .nu-stat.nu-stat-avatar .ava-ttl{font-size:14px;font-weight:900;color:var(--ink);margin-top:2px;}
  .nu-stat.nu-stat-avatar .ava-msg{font-size:10px;color:var(--ink-soft);font-weight:600;line-height:1.3;margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}

  /* Extras (dulce / pan) counters */
  .nu-extras-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
  @media (max-width:760px){.nu-extras-row{grid-template-columns:1fr;}}
  .nu-extras{background:#fff;border:1px solid var(--border);border-radius:20px;padding:14px 16px;box-shadow:var(--shadow);}
  .nu-extras.dulce-panel{background:linear-gradient(160deg,#FFF1F4 0%,#FFFFFF 100%);border-color:#F4BFCC;}
  .nu-extras.pan-panel{background:linear-gradient(160deg,#FFF8EE 0%,#FFFFFF 100%);border-color:#F0CC8C;}
  .nu-extras-h{font-size:13px;font-weight:900;color:var(--ink);letter-spacing:0.3px;margin-bottom:10px;display:flex;align-items:center;gap:6px;}
  .nu-extras-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:10px;}
  .nu-extras-grid.two{grid-template-columns:1fr 1fr;}
  @media (max-width:760px){.nu-extras-grid{grid-template-columns:1fr 1fr;}}
  .nu-extras-card{padding:10px 12px;border-radius:14px;}
  .nu-extras-card.dulce{background:linear-gradient(160deg,#FCE2E8 0%,#FFF1F4 100%);border:1px solid #F4BFCC;}
  .nu-extras-card.pan{background:linear-gradient(160deg,#FBEAD0 0%,#FFF8EE 100%);border:1px solid #F0CC8C;}
  .nu-extras-card .label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:0.4px;color:var(--ink-soft);}
  .nu-extras-card .ttl{font-size:12px;font-weight:900;color:var(--ink);display:flex;align-items:center;gap:5px;margin-top:2px;}
  .nu-extras-card .count{font-size:22px;font-weight:900;color:var(--ink);line-height:1;margin-top:6px;}
  .nu-extras-card .kc{font-size:11px;font-weight:700;color:var(--ink-soft);margin-top:3px;}

  /* Macro split donut + numbers card */
  .nu-split-card{background:#fff;border:1px solid var(--border);border-radius:20px;padding:16px 18px;box-shadow:var(--shadow);display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;}
  @media (max-width:760px){.nu-split-card{grid-template-columns:1fr;text-align:center;}}
  .nu-split-donut{width:130px;height:130px;}
  .nu-split-list{display:flex;flex-direction:column;gap:6px;}
  .nu-split-row{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;}
  .nu-split-row .sw{width:12px;height:12px;border-radius:4px;flex-shrink:0;}
  .nu-split-row .nm{flex:1;color:var(--ink);}
  .nu-split-row .v{color:var(--ink-soft);font-weight:900;}

  .nu-section-h{font-size:11px;font-weight:900;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;margin:6px 4px 0;}

  /* Week matrix: 1 label column + 7 day columns × 5 meal rows + totals row */
  .nu-matrix-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;background:#fff;border:1px solid var(--border);border-radius:18px;padding:10px;box-shadow:var(--shadow);}
  .nu-matrix{display:grid;grid-template-columns:130px repeat(7, minmax(160px, 1fr));gap:6px;min-width:1200px;}
  @media (max-width:760px){.nu-matrix{grid-template-columns:110px repeat(7, minmax(140px, 1fr));min-width:1100px;}}

  .nu-cell{padding:8px 9px;background:rgba(0,0,0,0.015);border-radius:10px;min-height:60px;display:flex;flex-direction:column;min-width:0;}
  .nu-cell-empty{background:transparent;}

  /* Day header (top row) */
  .nu-dh{background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 4px;text-align:center;min-height:auto;}
  .nu-dh .name{font-size:11px;font-weight:900;color:var(--ink);text-transform:uppercase;letter-spacing:0.5px;}
  .nu-dh .date{font-size:13px;color:var(--ink-soft);font-weight:800;margin-top:1px;}
  .nu-dh.today .name{color:#8B3A52;}
  .nu-dh.today .date{color:#8B3A52;}
  .nu-dh .free-btn{background:transparent;border:1px solid var(--border);color:var(--ink-soft);font-size:12px;padding:2px 8px;border-radius:99px;cursor:pointer;margin-top:5px;}
  .nu-dh .free-btn.on{background:#F4B996;border-color:#F4B996;color:#fff;}

  /* Meal label (left column) — centered both vertically and horizontally */
  .nu-ml{background:linear-gradient(180deg,#FFF8F0 0%,#FFF1E5 100%);border:1px solid #F4E4D2;display:flex;align-items:center;justify-content:center;gap:6px;font-size:11px;font-weight:900;color:var(--ink);text-transform:uppercase;letter-spacing:0.4px;padding:8px 10px;border-radius:10px;text-align:center;}
  .nu-ml .ico{font-size:15px;}

  /* Meal cell within matrix — base */
  .nu-mc{background:#fff;border:1px solid var(--border);position:relative;}
  .nu-mc.free{background:linear-gradient(140deg,#FFF1E5 0%,#FFFBF0 100%);border-color:#F4D2BC;display:flex;align-items:center;justify-content:center;color:#8A5634;font-size:18px;}
  .nu-mc-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:5px;min-height:18px;}
  .nu-mc-head .nu-mc-kcal{font-size:10px;font-weight:900;color:var(--ink-soft);margin-left:auto;}
  .nu-mc-portion{font-size:9px;font-weight:800;padding:2px 9px;border-radius:99px;background:rgba(255,255,255,0.85);border:1px solid rgba(0,0,0,0.08);text-transform:uppercase;letter-spacing:0.3px;cursor:pointer;color:var(--ink-soft);transition:transform .12s ease;}
  .nu-mc-portion:hover{transform:scale(1.05);}
  .nu-mc-portion.small{color:#5A8466;border-color:#A8D896;}
  .nu-mc-portion.normal{color:var(--ink-soft);}
  .nu-mc-portion.large{color:#8A5634;background:#FFE2C8;border-color:#F0B57A;}
  .nu-mc-foods{display:flex;flex-direction:column;gap:3px;}

  /* Tint per meal row (soft pastels by time of day) */
  .nu-mc.meal-breakfast{background:#FFF5F5;border-color:#FBE4E7;}
  .nu-mc.meal-midmorning{background:#FFFBF0;border-color:#FBEAD0;}
  .nu-mc.meal-lunch{background:#F2FBEF;border-color:#DAEFD7;}
  .nu-mc.meal-snack{background:#FFF6EE;border-color:#FAE0CB;}
  .nu-mc.meal-dinner{background:#F5F1FC;border-color:#E1D6F4;}
  /* Meal label column matching tint */
  .nu-ml.meal-breakfast{background:linear-gradient(180deg,#FCE5E8 0%,#FFF5F5 100%);border-color:#F4B6BF;}
  .nu-ml.meal-midmorning{background:linear-gradient(180deg,#FBE3B5 0%,#FFFBF0 100%);border-color:#F0CC8C;}
  .nu-ml.meal-lunch{background:linear-gradient(180deg,#D6EFCB 0%,#F2FBEF 100%);border-color:#A8D896;}
  .nu-ml.meal-snack{background:linear-gradient(180deg,#FBD7B0 0%,#FFF6EE 100%);border-color:#F0B57A;}
  .nu-ml.meal-dinner{background:linear-gradient(180deg,#DCCDF1 0%,#F5F1FC 100%);border-color:#B8A0E0;}
  /* Subtle weekday vs weekend column striping (Sat/Sun a touch warmer) */
  .nu-mc.day-5, .nu-mc.day-6{background-blend-mode:multiply;}
  .nu-mc.day-5::after, .nu-mc.day-6::after{content:'';position:absolute;inset:0;background:rgba(255,229,200,0.18);pointer-events:none;border-radius:inherit;}
  /* Today's column — gentle accent on every cell of that column */
  .nu-mc.today-col{box-shadow:inset 0 0 0 2px rgba(244,166,184,0.45);}
  .nu-dh.today{background:linear-gradient(180deg,#FFE5EC 0%,#FFF5F7 100%);border-radius:10px;}
  .nu-tot.today{box-shadow:0 0 0 2px #F4A6B8;}

  /* Totals row */
  .nu-tot{background:linear-gradient(180deg,#EFE6FB 0%,#F6F0FE 100%);border:1px solid #D5C9EE;text-align:center;padding:8px 6px;}
  .nu-tot .v{font-size:16px;font-weight:900;color:var(--ink);line-height:1;}
  .nu-tot .l{font-size:9px;color:var(--ink-soft);font-weight:800;text-transform:uppercase;margin-top:2px;}
  .nu-tot .bar{height:4px;background:rgba(0,0,0,0.05);border-radius:2px;margin-top:6px;overflow:hidden;}
  .nu-tot .bar span{display:block;height:100%;background:linear-gradient(90deg,#88D4A3,#5FB077);border-radius:2px;transition:width .4s ease;}
  .nu-tot .bar span.over{background:linear-gradient(90deg,#F4A6B8,#E08AA0);}
  .nu-tot .bar span.under{background:linear-gradient(90deg,#B59FE0,#8B7AC4);}
  .nu-tot.free{background:linear-gradient(180deg,#FFE2C8 0%,#FFF1E5 100%);border-color:#F4D2BC;}
  .nu-tot.today{box-shadow:0 0 0 2px #F4A6B8;}
  .nu-tot-macros{display:flex;justify-content:space-around;gap:4px;margin-top:6px;font-size:10px;font-weight:800;}
  .nu-tot-macros .m{display:inline-flex;align-items:baseline;gap:1px;padding:2px 5px;border-radius:6px;color:var(--ink);}
  .nu-tot-macros .m i{font-style:normal;font-size:8px;font-weight:800;color:var(--ink-soft);margin-left:1px;}
  .nu-tot-macros .m.p{background:#FCE2E8;color:#8B3A52;}
  .nu-tot-macros .m.f{background:#FFE9D7;color:#8A5634;}
  .nu-tot-macros .m.c{background:#EFE6FB;color:#5A4585;}

  .nu-meals{display:flex;flex-direction:column;gap:6px;}
  .nu-meal{border-top:1px dashed rgba(0,0,0,0.07);padding-top:6px;}
  .nu-meal:first-child{border-top:none;padding-top:0;}
  .nu-meal-head{display:flex;align-items:center;justify-content:space-between;font-size:10px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;}
  .nu-meal-head .ico{font-size:13px;margin-right:4px;}
  .nu-meal-head .kcal{font-weight:900;color:var(--ink);font-size:11px;}
  .nu-foods{display:flex;flex-direction:column;gap:4px;margin-top:4px;}
  /* Food chip — when cell-level portion is on, foods are simple name + delete; older variant kept
   * for the dashboard view (still uses 2-row layout). */
  .nu-food{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:2px 6px;background:rgba(255,255,255,0.45);border-radius:9px;padding:5px 8px;font-size:11px;align-items:center;}
  .nu-food.simple{display:flex;align-items:center;justify-content:center;gap:6px;grid-template-columns:none;grid-template-rows:none;position:relative;padding-right:22px;}
  .nu-food.simple .nm{font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;text-align:center;}
  .nu-food.simple .x{position:absolute;right:6px;top:50%;transform:translateY(-50%);}
  .nu-food .nm{grid-column:1 / 2;grid-row:1;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
  .nu-food .x{grid-column:2;grid-row:1;background:transparent;border:none;color:var(--ink-muted);cursor:pointer;font-size:13px;padding:0 2px;line-height:1;justify-self:end;}
  .nu-food .x:hover{color:#D88;}
  .nu-food .meta{grid-column:1 / -1;grid-row:2;display:flex;align-items:center;justify-content:space-between;gap:6px;}
  .nu-food .pt{font-size:9px;font-weight:800;color:var(--ink-soft);padding:1px 7px;border-radius:99px;background:rgba(255,255,255,0.75);border:1px solid rgba(0,0,0,0.06);text-transform:uppercase;letter-spacing:0.3px;cursor:pointer;}
  .nu-food .pt.small{color:#5A8466;}
  .nu-food .pt.normal{color:var(--ink-soft);}
  .nu-food .pt.large{color:#8A5634;background:#FFF1E5;border-color:#F4D2BC;}
  .nu-food .kc{font-size:10px;font-weight:900;color:var(--ink);}

  .nu-add{display:flex;gap:4px;margin-top:4px;position:relative;min-width:0;max-width:100%;}
  .nu-add input{flex:1;min-width:0;width:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,0.06);background:rgba(255,255,255,0.45);border-radius:9px;padding:5px 8px;font-size:11px;color:var(--ink);outline:none;font-family:inherit;}
  .nu-add input:focus{border-color:var(--lavender-deep);background:rgba(255,255,255,0.7);}
  .nu-add button{background:#EFE6FB;border:1px solid #D5C9EE;color:var(--ink);font-weight:800;font-size:11px;padding:4px 9px;border-radius:9px;cursor:pointer;}
  .nu-add button:hover{background:var(--lavender);}
  .nu-suggest{position:absolute;left:0;right:0;top:100%;margin-top:3px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 20px rgba(0,0,0,0.12);z-index:20;max-height:180px;overflow-y:auto;display:none;}
  .nu-suggest.show{display:block;}
  .nu-suggest .row{padding:7px 10px;font-size:11px;cursor:pointer;border-bottom:1px solid rgba(0,0,0,0.04);display:flex;justify-content:space-between;gap:6px;}
  .nu-suggest .row:last-child{border-bottom:none;}
  .nu-suggest .row:hover,.nu-suggest .row.hi{background:#FFEFE0;}
  .nu-suggest .row .nm{font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;}
  .nu-suggest .row .src{font-size:9px;color:var(--ink-soft);font-weight:700;}
  .nu-suggest .empty{padding:8px 10px;font-size:11px;color:var(--ink-soft);font-style:italic;}

  /* Day summary footer */
  .nu-day-summary{margin-top:6px;padding-top:8px;border-top:1px solid var(--border);}
  .nu-day-totals{display:flex;justify-content:space-between;font-size:10px;font-weight:800;color:var(--ink-soft);}
  .nu-day-totals .big{font-size:14px;font-weight:900;color:var(--ink);}
  .nu-progress{height:6px;background:rgba(0,0,0,0.04);border-radius:3px;overflow:hidden;margin-top:6px;}
  .nu-progress .bar{height:100%;background:linear-gradient(90deg,#88D4A3,#5FB077);transition:width .4s ease;border-radius:3px;}
  .nu-progress .bar.over{background:linear-gradient(90deg,#F4A6B8,#E08AA0);}
  .nu-progress .bar.under{background:linear-gradient(90deg,#B59FE0,#8B7AC4);}
  .nu-status{display:inline-block;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:0.3px;padding:2px 8px;border-radius:99px;margin-top:5px;}
  .nu-status.within{background:#D6F0DD;color:#3F6F4D;}
  .nu-status.over{background:#FCD5DD;color:#8B3A52;}
  .nu-status.under{background:#E8DCFB;color:#5A4585;}
  .nu-status.free{background:#FFE2C8;color:#8A5634;}

  .nu-macros-mini{display:flex;gap:6px;font-size:9px;font-weight:800;color:var(--ink-soft);margin-top:4px;}
  .nu-macros-mini span b{color:var(--ink);font-weight:900;}

  /* Free day banner inside cell */
  .nu-free-banner{text-align:center;padding:20px 8px;color:#8A5634;}
  .nu-free-banner .e{font-size:36px;}
  .nu-free-banner .t{font-size:12px;font-weight:800;margin-top:6px;}

  /* Goals modal */
  .nu-goals-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:8px;}
  .nu-goals-grid .fld label{display:block;font-size:10px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;}
  .nu-goals-grid .fld input{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:10px;font-size:14px;font-weight:800;color:var(--ink);text-align:center;}

  /* "Libre" toggle (mark days as cheat day by tapping cells) */
  .nu-libre-toggle{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:99px;font-size:12px;font-weight:800;cursor:pointer;background:#FFF1E5;color:#8A5634;border:1px solid #F4D2BC;box-shadow:var(--shadow);transition:background .15s, transform .15s;}
  .nu-libre-toggle:hover{background:#FFE2C8;transform:translateY(-1px);}
  .nu-libre-toggle.active{background:linear-gradient(135deg,#FFD4B0,#F4B996);color:#fff;border-color:#E89E72;}
  .nu-libre-toggle.active .libre-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#fff;animation:vacPulse 1.6s ease-in-out infinite;}
  .nu-libre-toggle .libre-dot{display:none;}
  body.nu-libre-mode .nu-mc{cursor:pointer;outline:2px dashed transparent;outline-offset:-3px;transition:outline-color .15s ease,background .15s ease;}
  body.nu-libre-mode .nu-mc:hover{outline-color:#F4B996;background:#FFF5EB;}
  body.nu-libre-mode .nu-mc.free:hover{outline-color:#E89E72;background:linear-gradient(140deg,#FFD4B0 0%,#FFE2C8 100%);}
  body.nu-libre-mode .nu-mc input,
  body.nu-libre-mode .nu-mc .pt,
  body.nu-libre-mode .nu-mc .x{pointer-events:none;opacity:0.55;}
  .nu-libre-hint{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#fff;border:1px solid #F4D2BC;color:#8A5634;font-size:12px;font-weight:800;padding:9px 18px;border-radius:99px;box-shadow:0 6px 22px rgba(0,0,0,0.10);z-index:301;display:none;}
  body.nu-libre-mode .nu-libre-hint{display:block;}

  /* Toggles row inside the fullscreen header */
  .nu-fs-toggles{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-left:8px;}
  .nu-week-tpl-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:99px;font-size:12px;font-weight:800;cursor:pointer;background:#EFE6FB;color:#5A4585;border:1px solid #D5C9EE;box-shadow:var(--shadow);transition:background .15s, transform .15s;}
  .nu-week-tpl-btn:hover{background:var(--lavender);transform:translateY(-1px);}

  /* "Dulce" toggle */
  .nu-dulce-toggle{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:99px;font-size:12px;font-weight:800;cursor:pointer;background:#FCE2E8;color:#8B3A52;border:1px solid #F4BFCC;box-shadow:var(--shadow);transition:background .15s, transform .15s;}
  .nu-dulce-toggle:hover{background:#FAD0D8;transform:translateY(-1px);}
  .nu-dulce-toggle.active{background:linear-gradient(135deg,#FBA8B8,#E08AA0);color:#fff;border-color:#D87898;}
  .nu-dulce-toggle.active .dulce-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#fff;animation:vacPulse 1.6s ease-in-out infinite;}
  .nu-dulce-toggle .dulce-dot{display:none;}
  body.nu-dulce-mode .nu-mc:not(.free){cursor:pointer;outline:2px dashed transparent;outline-offset:-3px;transition:outline-color .15s ease,background .15s ease;}
  body.nu-dulce-mode .nu-mc:not(.free):hover{outline-color:#F4A6B8;background:#FFF0F4;}
  body.nu-dulce-mode .nu-mc input,
  body.nu-dulce-mode .nu-mc .pt,
  body.nu-dulce-mode .nu-mc .x{pointer-events:none;opacity:0.55;}
  .nu-dulce-hint{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#fff;border:1px solid #F4BFCC;color:#8B3A52;font-size:12px;font-weight:800;padding:9px 18px;border-radius:99px;box-shadow:0 6px 22px rgba(0,0,0,0.10);z-index:301;display:none;}
  body.nu-dulce-mode .nu-dulce-hint{display:block;}

  /* Dulce marker on a cell */
  .nu-mc.dulce{box-shadow:inset 0 0 0 2px #F4A6B8;}
  .nu-mc-dulce{position:absolute;top:5px;left:6px;font-size:13px;line-height:1;pointer-events:none;animation:nuDulcePop .35s ease;}
  @keyframes nuDulcePop{from{transform:scale(0);}to{transform:scale(1);}}

  /* "Pan" toggle */
  .nu-pan-toggle{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:99px;font-size:12px;font-weight:800;cursor:pointer;background:#FBEAD0;color:#8A5634;border:1px solid #F0CC8C;box-shadow:var(--shadow);transition:background .15s, transform .15s;}
  .nu-pan-toggle:hover{background:#F7DDB0;transform:translateY(-1px);}
  .nu-pan-toggle.active{background:linear-gradient(135deg,#E8B872,#C99850);color:#fff;border-color:#B88340;}
  .nu-pan-toggle.active .pan-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#fff;animation:vacPulse 1.6s ease-in-out infinite;}
  .nu-pan-toggle .pan-dot{display:none;}
  body.nu-pan-mode .nu-mc:not(.free){cursor:pointer;outline:2px dashed transparent;outline-offset:-3px;transition:outline-color .15s ease,background .15s ease;}
  body.nu-pan-mode .nu-mc:not(.free):hover{outline-color:#E8B872;background:#FFF6E5;}
  body.nu-pan-mode .nu-mc input,
  body.nu-pan-mode .nu-mc .pt,
  body.nu-pan-mode .nu-mc .x{pointer-events:none;opacity:0.55;}
  .nu-pan-hint{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#fff;border:1px solid #F0CC8C;color:#8A5634;font-size:12px;font-weight:800;padding:9px 18px;border-radius:99px;box-shadow:0 6px 22px rgba(0,0,0,0.10);z-index:301;display:none;}
  body.nu-pan-mode .nu-pan-hint{display:block;}

  /* Pan marker on a cell — appears just to the right of dulce if both present */
  .nu-mc.pan{box-shadow:inset 0 0 0 2px #E8B872;}
  .nu-mc.pan.dulce{box-shadow:inset 0 0 0 2px #F4A6B8, inset 0 0 0 4px #E8B872;}
  .nu-mc-pan{position:absolute;top:5px;left:6px;font-size:13px;line-height:1;pointer-events:none;animation:nuDulcePop .35s ease;}
  .nu-mc-dulce + .nu-mc-pan,
  .nu-mc.dulce .nu-mc-pan{left:24px;}

  /* Fullscreen overlay for the weekly matrix */
  .nu-fs-overlay{position:fixed;inset:0;z-index:300;background:
    radial-gradient(at 15% 5%, #FFE5EC 0%, transparent 50%),
    radial-gradient(at 85% 95%, #EFE6FB 0%, transparent 50%),
    var(--bg);
    display:flex;flex-direction:column;animation:nuFsIn .25s ease;overflow:hidden;}
  @keyframes nuFsIn{from{opacity:0;transform:scale(.98);}to{opacity:1;transform:scale(1);}}
  .nu-fs-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 22px;background:rgba(255,255,255,0.85);border-bottom:1px solid var(--border);flex-shrink:0;}
  .nu-fs-title{display:flex;align-items:center;gap:14px;}
  .nu-fs-title h3{margin:0;font-size:16px;font-weight:900;color:var(--ink);}
  .nu-fs-title .lbl{font-size:13px;color:var(--ink-soft);font-weight:700;}
  .nu-fs-nav{display:flex;align-items:center;gap:6px;}
  .nu-fs-nav button{background:rgba(0,0,0,0.04);border:none;width:30px;height:30px;border-radius:50%;font-size:14px;cursor:pointer;color:var(--ink);font-weight:800;}
  .nu-fs-close-btn{background:#FCE2E8;border:none;width:36px;height:36px;border-radius:50%;font-size:16px;cursor:pointer;color:#8B3A52;font-weight:900;display:flex;align-items:center;justify-content:center;}
  .nu-fs-body{flex:1;overflow:auto;padding:20px 22px;}
  .nu-fs-body .nu-matrix-wrap{box-shadow:0 8px 28px rgba(180,140,180,0.10);}
  .nu-fs-body .nu-matrix{min-width:auto;}
  @media (max-width:760px){.nu-fs-body .nu-matrix{min-width:1100px;}}

  /* Escritorio: los emojis de los toggles no se muestran (se ve el texto) */
  .nu-fs-toggles .nu-tgl-emoji{display:none;}

  /* App only: cabecera de vista completa como paleta — Nutrición, semana debajo y emojis debajo */
  @media (max-width:767px){
    .nu-fs-head{position:relative;flex-direction:column;align-items:center;gap:6px;margin:10px 10px 4px;padding:12px 14px;background:#fff;border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow);border-bottom:1px solid var(--border);}
    .nu-fs-title{flex-direction:column;align-items:center;gap:6px;width:100%;}
    .nu-fs-toggles{margin-left:0;justify-content:center;gap:10px;}
    .nu-fs-toggles .nu-tgl-lbl,
    .nu-fs-toggles .libre-dot,
    .nu-fs-toggles .dulce-dot,
    .nu-fs-toggles .pan-dot{display:none!important;}
    .nu-fs-toggles .nu-tgl-emoji{display:inline;font-size:18px;line-height:1;}
    .nu-libre-toggle,.nu-dulce-toggle,.nu-pan-toggle{background:#fff!important;border:none!important;box-shadow:none!important;width:40px;height:40px;padding:0!important;justify-content:center;border-radius:12px;}
    .nu-libre-toggle.active{background:linear-gradient(135deg,#FFD4B0,#F4B996)!important;box-shadow:inset 0 2px 6px rgba(0,0,0,0.18)!important;}
    .nu-dulce-toggle.active{background:linear-gradient(135deg,#FBA8B8,#E08AA0)!important;box-shadow:inset 0 2px 6px rgba(0,0,0,0.18)!important;}
    .nu-pan-toggle.active{background:linear-gradient(135deg,#E8B872,#C99850)!important;box-shadow:inset 0 2px 6px rgba(0,0,0,0.18)!important;}
    .nu-fs-close-btn{position:absolute;top:8px;right:8px;width:30px;height:30px;font-size:13px;}
    /* App only: entre semanas se navega deslizando — fuera las flechas ‹ › */
    .nu-fs-nav [data-nu-week="prev"],
    .nu-fs-nav [data-nu-week="next"]{display:none!important;}
  }

  /* Templates list (week) */
  .nu-tpl-list{display:flex;flex-direction:column;gap:6px;max-height:300px;overflow-y:auto;}
  .nu-tpl-row{display:flex;align-items:center;gap:8px;background:rgba(0,0,0,0.03);border:1px solid var(--border);border-radius:12px;padding:8px 12px;}
  .nu-tpl-row .info{flex:1;min-width:0;}
  .nu-tpl-row .nm{font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .nu-tpl-row .sub{font-size:10px;color:var(--ink-soft);font-weight:700;margin-top:2px;}
  .nu-tpl-row .ld{background:#EFE6FB;border:1px solid #D5C9EE;color:var(--ink);font-weight:800;font-size:11px;padding:5px 11px;border-radius:99px;cursor:pointer;}
  .nu-tpl-row .ld:hover{background:var(--lavender);}
  .nu-tpl-row .dl{background:transparent;border:none;color:var(--ink-muted);font-size:13px;cursor:pointer;padding:2px 4px;}
  .nu-tpl-row .dl:hover{color:#D88;}

  /* Day summary modal */
  .nu-sum-top{display:flex;align-items:center;gap:14px;margin-bottom:12px;}
  .nu-sum-kcal{min-width:90px;text-align:center;}
  .nu-sum-kcal .big{font-size:30px;font-weight:900;color:var(--ink);line-height:1;}
  .nu-sum-kcal .lbl{font-size:10px;color:var(--ink-soft);font-weight:800;text-transform:uppercase;margin-top:3px;}
  .nu-sum-macros{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:6px;margin-bottom:10px;}
  .nu-sum-macros .m{padding:8px 6px;border-radius:10px;text-align:center;}
  .nu-sum-macros .m .l{display:block;font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;}
  .nu-sum-macros .m .v{display:block;font-size:14px;font-weight:900;color:var(--ink);margin-top:2px;}
  .nu-sum-macros .m.p{background:#FCE2E8;} .nu-sum-macros .m.p .v{color:#8B3A52;}
  .nu-sum-macros .m.f{background:#FFE9D7;} .nu-sum-macros .m.f .v{color:#8A5634;}
  .nu-sum-macros .m.c{background:#EFE6FB;} .nu-sum-macros .m.c .v{color:#5A4585;}
  .nu-sum-macros .m.fi{background:#E2F8E9;} .nu-sum-macros .m.fi .v{color:#3F6F4D;}
  .nu-sum-flags{display:flex;gap:8px;margin:6px 0 0;flex-wrap:wrap;}
  .nu-sum-flags .flag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:99px;font-size:11px;font-weight:800;}
  .nu-sum-flags .flag.dulce{background:#FCE2E8;color:#8B3A52;border:1px solid #F4BFCC;}
  .nu-sum-flags .flag.pan{background:#FBEAD0;color:#8A5634;border:1px solid #F0CC8C;}
  .nu-sum-meals{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
  @media (max-width:560px){.nu-sum-meals{grid-template-columns:1fr;}}
  /* Wider modal for the day summary so it fits without scroll */
  .modal-bg.nu-day-modal .modal{max-width:760px;padding:14px 16px;}
  .modal-bg.nu-day-modal h3{margin-bottom:10px;}
  .nu-sum-meal{border:1px solid var(--border);border-radius:12px;padding:7px 10px;background:#fff;}
  .nu-sum-meal-h{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:900;color:var(--ink);}
  .nu-sum-meal-h .ico{font-size:14px;margin-right:5px;}
  .nu-sum-meal-h .kcal{font-size:11px;color:var(--ink-soft);font-weight:800;}
  .nu-sum-foods{display:flex;flex-direction:column;gap:3px;margin-top:6px;}
  .nu-sum-food{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:700;color:var(--ink);background:rgba(0,0,0,0.025);border-radius:8px;padding:4px 9px;}
  .nu-sum-food .pt-mini{font-size:9px;font-weight:800;text-transform:uppercase;color:var(--ink-soft);padding:1px 7px;border-radius:99px;background:#fff;border:1px solid var(--border);}
  .nu-sum-food .pt-mini.small{color:#5A8466;border-color:#A8D896;}
  .nu-sum-food .pt-mini.large{color:#8A5634;background:#FFE2C8;border-color:#F0B57A;}
  .nu-sum-empty{font-size:11px;color:var(--ink-soft);font-style:italic;padding:4px 0;}

  /* Copy menu */
  .nu-copy-menu{display:flex;flex-direction:column;gap:5px;}
  .nu-copy-menu button{background:rgba(0,0,0,0.03);border:1px solid var(--border);text-align:left;padding:8px 12px;border-radius:10px;font-size:12px;font-weight:700;color:var(--ink);cursor:pointer;}
  .nu-copy-menu button:hover{background:#FFEFE0;}

  /* MODAL */
  .modal-bg{position:fixed;inset:0;background:rgba(60,40,65,0.4);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:10px;}
  .modal{background:#fff;width:100%;max-width:520px;border-radius:22px;padding:18px 18px;max-height:94vh;overflow-y:auto;}
  .modal h3{margin:0 0 14px;font-size:18px;font-weight:800;}
  .modal label{font-size:11px;color:var(--ink-soft);font-weight:800;text-transform:uppercase;letter-spacing:0.5px;display:block;margin-bottom:4px;}

  .him{background:linear-gradient(135deg,#FFE5EC 0%,#EDE4FB 100%);border-radius:var(--radius-lg);padding:22px;text-align:center;box-shadow:var(--shadow);}
  .him .from{font-size:11px;letter-spacing:2px;color:#8B3A52;font-weight:800;text-transform:uppercase;}
  .him .msg{font-size:16px;font-weight:700;color:var(--ink);margin-top:10px;line-height:1.5;font-style:italic;}
  .him .date{font-size:11px;color:var(--ink-soft);margin-top:10px;}

  .empty{text-align:center;color:var(--ink-muted);font-size:13px;padding:24px;font-weight:600;}
  .pie{width:120px;height:120px;display:block;margin:0 auto;}
  .legend{display:flex;flex-direction:column;gap:6px;margin-top:10px;}
  .legend-row{display:flex;align-items:center;gap:8px;font-size:12px;}
  .legend-row .sw{width:10px;height:10px;border-radius:3px;}

  .bar-week{display:flex;align-items:flex-end;gap:6px;height:80px;margin-top:8px;}
  .bar-week .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;}
  .bar-week .bar{width:100%;background:linear-gradient(to top,var(--lavender-deep),var(--lavender));border-radius:8px 8px 0 0;}
  .bar-week .lbl{font-size:9px;color:var(--ink-soft);font-weight:800;}

  .jrnl{padding:14px;background:#fff;border-radius:var(--radius-md);margin-bottom:8px;border:1px solid var(--border);box-shadow:var(--shadow);}
  .jrnl .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
  .jrnl .top .dt{font-size:11px;color:var(--ink-soft);font-weight:800;letter-spacing:0.4px;text-transform:uppercase;}
  .jrnl .top .m{font-size:18px;}
  .jrnl .tx{font-size:13px;color:var(--ink);line-height:1.5;white-space:pre-wrap;}

  textarea{width:100%;border-radius:12px;border:1px solid var(--border);padding:12px;font-size:13px;background:#FAF5F2;outline:none;resize:vertical;min-height:60px;}
  textarea:focus{background:#fff;border-color:var(--accent-deep);}

  .swipe-del{color:#A43838;font-weight:800;font-size:11px;padding:4px 8px;border-radius:8px;background:#FFD0D0;cursor:pointer;}

  /* WEATHER MODAL */
  .wx-now{display:flex;align-items:center;gap:18px;margin:6px 0 16px;}
  .wx-now-ico{font-size:58px;line-height:1;}
  .wx-now-temp{font-size:36px;font-weight:800;line-height:1;color:var(--ink);}
  .wx-now-cond{font-size:14px;color:var(--ink);font-weight:700;margin-top:4px;}
  .wx-now-sub{font-size:11px;color:var(--ink-soft);margin-top:6px;line-height:1.5;}
  .wx-summary{padding:12px 14px;background:linear-gradient(135deg,#FFFBEC,#FFF8E7);border-radius:12px;font-size:13px;color:var(--ink);margin-bottom:14px;line-height:1.45;font-weight:600;}
  .wx-hd{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--ink-soft);margin:18px 0 6px;}
  .wx-list{display:flex;flex-direction:column;}
  .wx-day{display:grid;grid-template-columns:46px 30px 1fr 60px 70px 18px;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);font-size:13px;}
  @media (max-width:480px){.wx-day{grid-template-columns:40px 26px 48px 1fr 16px;gap:6px;font-size:12px;}.wx-day .wx-day-cond{display:none;}}
  .wx-day-clickable{cursor:pointer;border:0;border-bottom:1px solid var(--border);background:transparent;font:inherit;color:inherit;width:100%;text-align:left;font-family:Nunito,sans-serif;padding:10px 4px;border-radius:0;transition:background .15s;}
  .wx-day-clickable:hover{background:rgba(180,140,200,0.05);}
  .wx-day-clickable.open{background:linear-gradient(135deg,#FFE5EC,#EFE6FB);border-radius:10px 10px 0 0;border-bottom-color:transparent;}
  .wx-day-chev{font-size:14px;font-weight:900;color:var(--ink-soft);text-align:center;}

  .wx-hourly{background:linear-gradient(180deg,#FAF7FB,#FFF);border-radius:0 0 14px 14px;padding:14px 4px;margin-bottom:8px;border:1px solid var(--border);border-top:0;}
  .wx-hourly-h{font-size:11px;font-weight:900;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;padding:0 14px 10px;}
  .wx-hourly-scroll{display:flex;gap:6px;overflow-x:auto;overflow-y:hidden;padding:2px 10px 8px;-webkit-overflow-scrolling:touch;touch-action:pan-x;scrollbar-width:thin;cursor:grab;user-select:none;}
  .wx-hourly-scroll.dragging{cursor:grabbing;}
  .wx-hourly-scroll::-webkit-scrollbar{height:6px;}
  .wx-hourly-scroll::-webkit-scrollbar-thumb{background:#D5C9EE;border-radius:99px;}
  .wx-hourly-scroll::-webkit-scrollbar-track{background:transparent;}
  .wx-h{flex-shrink:0;width:60px;background:#fff;border:1px solid var(--border);border-radius:12px;padding:10px 6px;display:flex;flex-direction:column;align-items:center;gap:6px;scroll-snap-align:start;}
  .wx-h-hr{font-size:11px;font-weight:800;color:var(--ink-soft);}
  .wx-h-emo{font-size:22px;line-height:1;}
  .wx-h-temp{font-size:15px;font-weight:900;color:var(--ink);background:linear-gradient(135deg,#FFE5EC,#FFF1F4);padding:3px 9px;border-radius:99px;border:1px solid #F4C2CE;}
  .wx-h-rain{font-size:9px;font-weight:800;color:#3A6A8A;background:#E0EEF7;padding:2px 6px;border-radius:99px;}
  .wx-day:last-child{border-bottom:none;}
  .wx-day-name{font-weight:800;color:var(--ink-soft);font-size:11px;letter-spacing:0.5px;text-transform:uppercase;}
  .wx-day-ico{font-size:22px;text-align:center;}
  .wx-day-cond{color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .wx-day-temp{font-weight:800;color:var(--ink);text-align:right;}
  .wx-day-rain{font-size:10px;color:#4A8BC2;text-align:right;font-weight:700;}
  .wx-updated{font-size:10px;color:var(--ink-muted);text-align:center;margin:14px 0 0;}

  /* BIRTHDAYS MODAL */
  .bd-group{margin-bottom:14px;}
  .bd-group-h{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--ink-soft);margin:14px 0 6px;}
  .bd-row{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--border);}
  .bd-row:last-child{border-bottom:none;}
  .bd-ico{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,#FFE5EC,#FFD6E0);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;}
  .bd-body{flex:1;min-width:0;}
  .bd-name{font-size:14px;font-weight:800;color:var(--ink);}
  .bd-meta{font-size:11px;color:var(--ink-soft);margin-top:2px;}
  .bd-days{text-align:right;flex-shrink:0;}
  .bd-days-n{font-size:20px;font-weight:800;color:var(--ink);line-height:1;}
  .bd-days-l{font-size:10px;color:var(--ink-soft);font-weight:700;margin-top:2px;text-transform:lowercase;}

  /* TODAY'S BIRTHDAY — festive styling */
  .item.today-bday{
    background:linear-gradient(135deg,#FFE5EC 0%,#FFD6E0 40%,#EDE4FB 100%);
    border:2px solid #F4A6B8;
    box-shadow:0 6px 22px rgba(244,166,184,0.35);
    position:relative;overflow:hidden;
    padding:14px 12px;
    animation:bday-pulse 2.5s ease-in-out infinite;
  }
  .item.today-bday .ico.bday-ico{
    background:linear-gradient(135deg,#FFC8D6,#F4A6B8) !important;
    font-size:24px;
    animation:bday-wiggle 1.4s ease-in-out infinite;
  }
  .item.today-bday .ttl{color:#8B3A52;font-weight:800;}
  .item.today-bday .sub{color:#8B3A52;}
  .bday-badge{
    display:inline-block;
    background:linear-gradient(90deg,#F4A6B8,#B59FE0);
    color:#fff;font-weight:800;font-size:10px;letter-spacing:1px;
    padding:3px 10px;border-radius:99px;
    margin-bottom:6px;
    box-shadow:0 2px 8px rgba(244,166,184,0.5);
  }
  .bday-badge.sm{font-size:9px;padding:2px 8px;}
  .bday-confetti{
    position:absolute;font-size:18px;pointer-events:none;opacity:0.6;
    animation:bday-float 3s ease-in-out infinite;
  }
  .bday-confetti{top:6px;right:60px;}
  .bday-confetti.c2{top:auto;bottom:6px;right:90px;font-size:14px;animation-delay:0.8s;animation-duration:3.5s;}
  .bday-confetti.c3{top:50%;right:18px;font-size:13px;animation-delay:1.5s;animation-duration:4s;}
  @keyframes bday-pulse{
    0%,100%{box-shadow:0 6px 22px rgba(244,166,184,0.35);}
    50%{box-shadow:0 8px 28px rgba(244,166,184,0.55);}
  }
  @keyframes bday-wiggle{
    0%,100%{transform:rotate(-4deg);}
    50%{transform:rotate(4deg);}
  }
  @keyframes bday-float{
    0%,100%{transform:translateY(0);opacity:0.5;}
    50%{transform:translateY(-6px);opacity:0.85;}
  }
  /* Birthday modal variant */
  .bd-row.today-bday-row{
    background:linear-gradient(135deg,#FFE5EC 0%,#FFD6E0 40%,#EDE4FB 100%);
    border-radius:14px;padding:12px;border:2px solid #F4A6B8;
    margin-bottom:8px;animation:bday-pulse 2.5s ease-in-out infinite;
  }
  .bd-row.today-bday-row .bd-ico.bday-ico{
    background:linear-gradient(135deg,#FFC8D6,#F4A6B8);
    animation:bday-wiggle 1.4s ease-in-out infinite;
  }
  .bd-row.today-bday-row .bd-name,.bd-row.today-bday-row .bd-meta{color:#8B3A52;}
  .bd-row.today-bday-row .bd-days-n{font-size:22px;}

  /* CYCLE MODAL */
  .cycle-modal{max-height:92vh;}
  .cycle-hero{display:flex;justify-content:center;align-items:center;margin:6px 0 18px;}
  .cycle-dial-wrap{position:relative;width:200px;height:200px;flex-shrink:0;}
  .cycle-dial-wrap.big{width:280px;height:280px;}
  .cycle-dial{width:100%;height:100%;display:block;}
  .cycle-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;}
  .cycle-day-n{font-size:56px;font-weight:800;line-height:1;color:var(--ink);}
  .cycle-day-l{font-size:11px;color:var(--ink-soft);font-weight:800;letter-spacing:1px;text-transform:uppercase;margin-top:4px;}
  .cycle-phase-pill{display:inline-block;margin-top:10px;padding:5px 12px;border-radius:99px;font-size:11px;font-weight:800;letter-spacing:0.4px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,0.15);}
  .phase-info{padding:12px 14px;background:#FAF5F2;border-radius:12px;margin-bottom:14px;}
  .phase-info-h{font-size:13px;font-weight:800;color:var(--ink);}
  .phase-info-tip{font-size:13px;color:var(--ink);margin-top:6px;line-height:1.45;font-weight:600;}
  .phase-legend{display:flex;flex-wrap:wrap;gap:10px 14px;justify-content:center;padding:10px 0 14px;font-size:11px;font-weight:700;color:var(--ink-soft);}
  .phase-legend span{display:inline-flex;align-items:center;gap:6px;}
  .lg-dot{display:inline-block;width:10px;height:10px;border-radius:50%;}
  .cycle-grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:0;}
  .cycle-pred{background:#fff;border:1px solid var(--border);border-radius:12px;padding:10px;text-align:center;}
  .cp-l{font-size:9px;font-weight:800;color:var(--ink-soft);letter-spacing:0.8px;text-transform:uppercase;}
  .cp-v{font-size:18px;font-weight:800;color:var(--ink);margin-top:4px;line-height:1;}
  .cp-s{font-size:10px;color:var(--ink-soft);margin-top:4px;font-weight:700;}
  .cy-hd{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--ink-soft);margin:14px 0 8px;}
  .hist-wrap{display:flex;flex-direction:column;}
  .hist-row{display:flex;justify-content:space-between;align-items:center;padding:8px 4px;border-bottom:1px solid var(--border);font-size:12px;}
  .hist-row:last-child{border-bottom:none;}
  .hist-date{font-weight:800;color:var(--ink);font-size:12px;}
  .hist-sub{font-size:11px;color:var(--ink-soft);font-weight:600;}
  @media (max-width:520px){
    .cycle-dial-wrap.big{width:240px;height:240px;}
    .cycle-day-n{font-size:46px;}
    .cycle-grid3{grid-template-columns:1fr 1fr;}
  }

  /* ============ WORLD MAP FULLSCREEN ============ */
  .map-wrap{cursor:pointer;}
  .map-wrap:hover{transform:translateY(-1px);transition:transform .2s;}
  .map-fs{position:fixed;inset:0;z-index:1000;background:linear-gradient(180deg,#FEFAF6 0%,#F8F2EC 100%);display:flex;flex-direction:column;animation:mapFadeIn .25s ease;}
  @keyframes mapFadeIn{from{opacity:0;}to{opacity:1;}}
  .map-fs-header{padding:16px 18px 8px;display:flex;flex-direction:column;gap:10px;background:#FFFFFFAA;backdrop-filter:blur(10px);border-bottom:1px solid var(--border);}
  .map-fs-top{display:flex;align-items:center;justify-content:space-between;gap:12px;}
  .map-fs-title{font-size:16px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:8px;}
  .map-fs-close{width:36px;height:36px;border-radius:12px;background:#fff;border:1px solid var(--border);box-shadow:var(--shadow);font-size:18px;color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer;}
  .map-fs-back{padding:8px 14px;border-radius:12px;background:#fff;border:1px solid var(--border);box-shadow:var(--shadow);font-size:12px;font-weight:700;color:var(--ink-soft);cursor:pointer;}
  .map-fs-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
  .map-stat{background:#fff;border-radius:var(--radius-md);padding:10px 12px;border:1px solid var(--border);box-shadow:var(--shadow);}
  .map-stat .v{font-size:22px;font-weight:800;color:var(--ink);line-height:1;}
  .map-stat .l{font-size:10px;font-weight:700;letter-spacing:0.5px;color:var(--ink-soft);text-transform:uppercase;margin-top:4px;}
  .map-progress{height:6px;background:#F0E8E3;border-radius:99px;overflow:hidden;}
  .map-progress-bar{height:100%;background:linear-gradient(90deg,#F4A6B8,#B59FE0);border-radius:99px;transition:width .6s ease;}
  .map-fs-body{flex:1;position:relative;overflow:hidden;}
  .map-svg-wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;}
  .map-svg-wrap svg{width:100%;height:100%;}
  .map-svg-wrap svg.map-zoomable{cursor:grab;}
  .map-svg-wrap svg.map-zoomable:active{cursor:grabbing;}
  /* Spain province mode — visited in pastel red, not visited white */
  .map-svg-wrap svg.spain-mode .country{fill:#FFFFFF;stroke:#C4A8AE;stroke-width:0.5;}
  .map-svg-wrap svg.spain-mode .country:hover{fill:#FFEBED;}
  .map-svg-wrap svg.spain-mode .country.visited{fill:#F4B5B5;stroke:#fff;}
  .map-svg-wrap svg.spain-mode .country.visited:hover{fill:#EE9C9C;}
  .map-svg-wrap svg.spain-mode .country.wishlist{fill:#E0D4F7;stroke:#fff;}
  .map-svg-wrap svg.spain-mode .country.wishlist:hover{fill:#CCBAF0;}
  /* City pins: solid red dot on a solid white ring — same look world & Spain */
  .map-svg-wrap svg .map-pin-halo{fill:#fff;}
  .map-svg-wrap svg .map-pin-dot{fill:#D31A2B;stroke:none;}
  .map-svg-wrap svg .map-pin-g{cursor:pointer;}
  .map-svg-wrap svg .map-pin-g:hover .map-pin-dot{fill:#A9121F;}
  .map-svg-wrap svg .map-pin-lbl{fill:#3D2C3F;font-family:Nunito,sans-serif;font-weight:800;pointer-events:none;paint-order:stroke;stroke:#fff;stroke-width:0.9;stroke-linejoin:round;}
  .map-zoom-hint{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,0.6);color:#fff;font-size:11px;font-weight:700;padding:7px 14px;border-radius:99px;pointer-events:none;backdrop-filter:blur(8px);z-index:5;}
  .map-svg-wrap{animation:mapZoomIn .5s cubic-bezier(0.4, 0, 0.2, 1);}
  @keyframes mapZoomIn{from{opacity:0;transform:scale(0.92);}to{opacity:1;transform:scale(1);}}
  .map-svg-wrap svg .country{fill:#EFE6DF;stroke:#FFFFFF;stroke-width:0.4;transition:fill .25s, transform .25s;cursor:pointer;}
  .map-svg-wrap svg .country:hover{fill:#E0D4C8;}
  .map-svg-wrap svg .country.visited{fill:#F4A6B8;}
  .map-svg-wrap svg .country.visited:hover{fill:#EE8FA7;}
  .map-svg-wrap svg .country.wishlist{fill:#E0D4F7;}
  .map-svg-wrap svg .country.wishlist:hover{fill:#CCBAF0;}
  .map-svg-wrap svg .country.dimmed{opacity:0.35;}
  .map-svg-wrap svg .country.focus{fill:#F4A6B8;stroke:#B5708A;stroke-width:0.7;}
  .map-tooltip{position:absolute;pointer-events:none;background:var(--ink);color:#fff;padding:8px 12px;border-radius:10px;font-size:12px;font-weight:700;box-shadow:0 4px 14px rgba(0,0,0,0.2);opacity:0;transition:opacity .15s;z-index:10;white-space:nowrap;transform:translate(-50%,-130%);}
  .map-tooltip.show{opacity:1;}
  .map-tooltip .sub{font-size:10px;font-weight:600;opacity:0.8;margin-top:2px;}
  .map-legend{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);background:#FFFFFFEE;backdrop-filter:blur(10px);padding:8px 14px;border-radius:99px;border:1px solid var(--border);box-shadow:var(--shadow);display:flex;gap:14px;font-size:11px;font-weight:700;color:var(--ink-soft);z-index:5;}
  .map-legend .lg{display:flex;align-items:center;gap:5px;}
  .map-legend .dot{width:10px;height:10px;border-radius:50%;display:inline-block;}
  .map-legend .dot.visited{background:#F4A6B8;}
  .map-legend .dot.wishlist{background:#E0D4F7;}
  .map-legend .dot.notyet{background:#EFE6DF;border:1px solid #D0C5BB;}
  .map-fab{position:absolute;right:18px;bottom:70px;background:var(--lavender-deep);color:#fff;padding:12px 18px;border-radius:99px;font-size:13px;font-weight:800;border:none;box-shadow:0 6px 22px rgba(120,90,150,0.45);cursor:pointer;z-index:6;}
  .map-fab:hover{transform:translateY(-2px);}
  .map-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--ink-soft);font-size:13px;font-weight:700;}
  .map-loading .spinner{width:24px;height:24px;border:3px solid #F0E8E3;border-top-color:var(--lavender-deep);border-radius:50%;animation:mapSpin .8s linear infinite;margin-right:10px;}
  @keyframes mapSpin{to{transform:rotate(360deg);}}

  /* Level 3 city panel */
  .map-cities-panel{position:absolute;left:0;right:0;bottom:0;max-height:50%;background:#FFFFFFF2;backdrop-filter:blur(12px);border-top:1px solid var(--border);border-radius:22px 22px 0 0;padding:14px 16px;overflow-y:auto;box-shadow:0 -8px 24px rgba(0,0,0,0.06);z-index:5;}
  .map-cities-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
  .map-cities-title{font-size:13px;font-weight:800;color:var(--ink);}
  .map-city-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fff;border:1px solid var(--border);border-radius:14px;margin-bottom:8px;box-shadow:var(--shadow);}
  .map-city-row .body{flex:1;min-width:0;}
  .map-city-row .ttl{font-size:13px;font-weight:800;color:var(--ink);}
  .map-city-row .sub{font-size:11px;color:var(--ink-soft);margin-top:2px;}
  .map-city-row .del{background:transparent;border:none;color:var(--ink-muted);font-size:16px;cursor:pointer;padding:4px;}
  .map-city-row .del:hover{color:#D88;}
  .map-city-rests{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;}
  .map-city-rest{display:inline-flex;align-items:center;gap:3px;padding:3px 7px;background:#FFF7F2;border:1px solid var(--border);border-radius:999px;font-size:10px;font-weight:700;color:var(--ink);cursor:pointer;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .map-city-rest.visited{background:#FFF1E5;border-color:#F4D2BC;}
  .map-city-rest.pending{background:#F4ECFB;border-color:#E0D4F7;color:var(--ink-soft);}
  .map-city-rest:hover{transform:translateY(-1px);box-shadow:0 2px 6px rgba(0,0,0,.06);}
  .map-pin{position:absolute;width:22px;height:22px;transform:translate(-50%,-100%);cursor:pointer;animation:pinBounce 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);z-index:4;}
  @keyframes pinBounce{0%{transform:translate(-50%,-100%) scale(0) translateY(-20px);}60%{transform:translate(-50%,-100%) scale(1.2) translateY(0);}100%{transform:translate(-50%,-100%) scale(1) translateY(0);}}
  .map-pin .pin-dot{width:18px;height:18px;background:linear-gradient(135deg,#F4A6B8,#B59FE0);border:2px solid #fff;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 2px 6px rgba(120,90,150,0.4);}
  .map-pin-tip{position:absolute;background:#FFFFFFEE;color:var(--ink);padding:4px 9px;border-radius:8px;font-size:11px;font-weight:800;white-space:nowrap;bottom:24px;left:50%;transform:translateX(-50%);opacity:1;pointer-events:none;box-shadow:0 2px 8px rgba(120,90,150,0.25);border:1px solid var(--border);transition:opacity .15s;}
  .map-pin:hover .map-pin-tip{background:var(--ink);color:#fff;}

  /* Status picker modal */
  .map-picker{position:absolute;background:#fff;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,0.18);border:1px solid var(--border);padding:8px;z-index:20;min-width:180px;}
  .map-picker .opt{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:10px;cursor:pointer;font-size:13px;font-weight:700;color:var(--ink);}
  .map-picker .opt:hover{background:#FAF5F2;}
  .map-picker .opt .dot{width:10px;height:10px;border-radius:50%;}

  /* Milestone toast */
  .map-toast{position:fixed;left:50%;top:80px;transform:translateX(-50%) translateY(-20px);background:linear-gradient(135deg,#FFE5EC,#EDE4FB);color:var(--ink);padding:14px 22px;border-radius:99px;font-weight:800;font-size:14px;box-shadow:0 10px 30px rgba(180,140,180,0.35);z-index:2000;opacity:0;transition:opacity .3s, transform .3s;display:flex;align-items:center;gap:10px;}
  .map-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
  .map-toast .badge{font-size:22px;}

  /* Edit city modal */
  .map-city-modal{position:fixed;inset:0;background:rgba(50,30,50,0.4);display:flex;align-items:flex-end;justify-content:center;z-index:1500;animation:mapFadeIn .2s;}
  @media (min-width:560px){.map-city-modal{align-items:center;}}
  .map-city-modal .box{background:#fff;border-radius:22px 22px 0 0;width:100%;max-width:520px;padding:22px 20px;box-shadow:0 -10px 30px rgba(0,0,0,0.2);}
  @media (min-width:560px){.map-city-modal .box{border-radius:22px;}}
  .map-city-modal h4{font-size:16px;font-weight:800;margin-bottom:14px;color:var(--ink);}
  .map-city-modal label{display:block;font-size:11px;font-weight:700;color:var(--ink-soft);margin-bottom:4px;text-transform:uppercase;letter-spacing:0.5px;}
  .map-city-modal input, .map-city-modal textarea{width:100%;padding:11px 13px;border-radius:12px;border:1px solid var(--border);background:#FAF5F2;font-family:inherit;font-size:13px;color:var(--ink);margin-bottom:12px;}
  .map-city-modal textarea{resize:vertical;min-height:60px;}
  .map-city-modal .btns{display:flex;gap:8px;margin-top:8px;}
  .map-city-modal .btns button{flex:1;padding:12px;border-radius:12px;font-weight:800;font-size:13px;border:none;cursor:pointer;}
  .map-city-modal .btns .save{background:var(--lavender-deep);color:#fff;}
  .map-city-modal .btns .cancel{background:#FAF5F2;color:var(--ink-soft);}

  /* Confetti */
  .map-confetti{position:fixed;pointer-events:none;inset:0;z-index:1999;overflow:hidden;}
  .map-confetti span{position:absolute;width:8px;height:8px;border-radius:50%;animation:confettiDrop 2s ease-out forwards;}
  @keyframes confettiDrop{from{transform:translateY(-20px) rotate(0);opacity:1;}to{transform:translateY(100vh) rotate(720deg);opacity:0;}}

  /* ============ TRAVEL: FAVORITES / UPCOMING / VISITED COMPACT ============ */
  .fav-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fff;border:1px solid var(--border);border-radius:14px;margin-bottom:8px;box-shadow:var(--shadow);position:relative;cursor:grab;}
  .fav-row.dragging{opacity:0.5;cursor:grabbing;}
  .fav-row.drag-over{border:1px dashed var(--lavender-deep);background:#FBF5FF;}
  .fav-rank{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:linear-gradient(135deg,#FFE5EC,#EDE4FB);border-radius:8px;font-size:12px;font-weight:800;color:var(--ink);flex-shrink:0;}
  .fav-rank.gold{background:linear-gradient(135deg,#FFE7A8,#FFD27A);}
  .fav-rank.silver{background:linear-gradient(135deg,#F1ECF6,#DAD2E5);}
  .fav-rank.bronze{background:linear-gradient(135deg,#FFE0CC,#F4B996);}
  .fav-body{flex:1;min-width:0;}
  .fav-ttl{font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .fav-sub{font-size:11px;color:var(--ink-soft);margin-top:2px;display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
  .fav-cat{display:inline-block;padding:2px 8px;border-radius:99px;font-size:10px;font-weight:800;background:#FAF5F2;color:var(--ink-soft);}
  .fav-cat.city{background:#FFE5EC;color:#A05068;}
  .fav-cat.restaurant{background:#FFEFE0;color:#A06840;}
  .fav-cat.nature{background:#E2F8E9;color:#487A5A;}
  .fav-cat.culture{background:#EDE4FB;color:#6D5DA0;}
  .fav-cat.other{background:#FFF8E7;color:#8A7048;}
  .fav-handle{color:var(--ink-muted);font-size:18px;line-height:1;padding:0 2px;cursor:grab;user-select:none;}
  .fav-actions{display:flex;gap:2px;}
  .fav-actions button{background:transparent;border:none;color:var(--ink-muted);font-size:14px;cursor:pointer;padding:4px 6px;border-radius:6px;}
  .fav-actions button:hover{background:#FAF5F2;color:var(--ink);}
  .fav-list-toggle{margin-top:8px;font-size:12px;font-weight:700;color:var(--ink-soft);background:transparent;border:none;cursor:pointer;text-align:center;width:100%;padding:8px;border-radius:10px;}
  .fav-list-toggle:hover{background:#FAF5F2;color:var(--ink);}

  /* Upcoming trip card */
  .trip-card{display:flex;align-items:center;gap:12px;padding:14px;background:linear-gradient(135deg,#FFFFFF,#FBF5F0);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:10px;box-shadow:var(--shadow);position:relative;overflow:hidden;}
  .trip-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--lavender-deep);}
  .trip-card.idea::before{background:#C2B5E0;}
  .trip-card.planning::before{background:#F4B996;}
  .trip-card.booked::before{background:#88D4A3;}
  .trip-flag{font-size:32px;flex-shrink:0;}
  .trip-body{flex:1;min-width:0;}
  .trip-ttl{font-size:14px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
  .trip-sub{font-size:12px;color:var(--ink-soft);margin-top:4px;}
  .trip-status{display:inline-block;padding:3px 9px;border-radius:99px;font-size:10px;font-weight:800;letter-spacing:0.3px;text-transform:uppercase;}
  .trip-status.idea{background:#EDE4FB;color:#6D5DA0;}
  .trip-status.planning{background:#FFEFE0;color:#A06840;}
  .trip-status.booked{background:#E2F8E9;color:#487A5A;}
  .trip-countdown{font-size:20px;font-weight:800;color:var(--ink);background:linear-gradient(135deg,#FFFFFF,#FAF5F2);padding:8px 16px;border-radius:14px;border:1px solid var(--border);box-shadow:var(--shadow);line-height:1;min-width:54px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px;}
  .trip-countdown::after{content:attr(data-cd-label);font-size:9px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;}
  .trip-actions{display:flex;flex-direction:column;gap:2px;flex-shrink:0;}
  .trip-actions button{background:transparent;border:none;color:var(--ink-muted);font-size:14px;cursor:pointer;padding:4px 6px;border-radius:6px;}
  .trip-actions button:hover{background:#FAF5F2;color:var(--ink);}

  /* Visited compact expand animation */
  .visited-list{display:flex;flex-direction:column;gap:0;}
  .visited-list.hidden-extras .visited-extra{display:none;}
  .visited-extra{animation:expandIn .3s ease;}
  @keyframes expandIn{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:translateY(0);}}
  .visited-toggle{margin-top:6px;font-size:12px;font-weight:700;color:var(--ink-soft);background:#FAF5F2;border:1px solid var(--border);cursor:pointer;text-align:center;width:100%;padding:11px;border-radius:12px;}
  .visited-toggle:hover{background:#F1ECF6;color:var(--ink);}

  /* Travel calendar trip chip (cb-chip variant) */
  .cb-chip.trip, .mw-chip.trip{background:linear-gradient(90deg,#EDE4FB,#FFE5EC);color:var(--ink);font-weight:800;}

  /* Trip widget +more pill */
  .widget .trip-extra{position:absolute;top:8px;right:8px;background:#FFFFFFCC;color:var(--ink);font-size:10px;font-weight:800;padding:3px 7px;border-radius:99px;backdrop-filter:blur(6px);}
  .widget{position:relative;}

  /* ============ TASKS — 2 GRUPOS ============ */
  .task-groups{display:grid;grid-template-columns:1fr;gap:14px;column-span:all;-webkit-column-span:all;width:100%;}
  @media (min-width:760px){
    .task-groups{grid-template-columns:1fr 1fr;}
  }
  .tasks-add-row{column-span:all;-webkit-column-span:all;width:100%;display:flex;justify-content:center;margin-top:14px;}
  .tasks-add-row .btn{max-width:320px;width:100%;}
  .tasks-clear-row{column-span:all;-webkit-column-span:all;width:100%;display:flex;justify-content:center;margin-top:8px;}
  .tasks-clear-row .btn{max-width:320px;width:100%;background:transparent;color:var(--ink-soft);border:1px dashed var(--border);font-weight:700;font-size:12px;padding:10px;}
  .tasks-clear-row .btn:hover:not([disabled]){background:#FAF5F2;color:var(--ink);}
  .tasks-clear-row .btn[disabled]{opacity:0.4;cursor:not-allowed;}
  .task-group{padding:14px 14px 16px;border-radius:var(--radius-md);border:1px solid var(--border);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px;break-inside:avoid;-webkit-column-break-inside:avoid;page-break-inside:avoid;min-width:0;}
  .task-group.itp{background:linear-gradient(180deg,#F0E8FB 0%,#FFFFFF 60%);}
  .task-group.personal{background:linear-gradient(180deg,#FFE5EC 0%,#FFFFFF 60%);}
  .tg-head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
  .tg-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800;color:var(--ink);}
  .tg-title .ico{font-size:18px;}
  .tg-count{font-size:11px;font-weight:700;color:var(--ink-soft);background:#FFFFFFB0;padding:3px 9px;border-radius:99px;border:1px solid var(--border);}
  .tg-bucket{margin-top:4px;}
  .tg-bucket-h{font-size:10px;font-weight:800;letter-spacing:0.5px;text-transform:uppercase;color:var(--ink-soft);margin:2px 4px 4px;display:flex;align-items:center;gap:6px;}
  .tg-bucket-h.overdue{color:#B23B5A;}

  .task-card{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:#fff;border:1px solid var(--border);border-radius:12px;margin-bottom:6px;box-shadow:var(--shadow);}
  .task-card.done{opacity:0.55;}
  .task-card.overdue{border-left:3px solid #E08FA5;}
  .task-check{flex:0 0 auto;width:22px;height:22px;border-radius:50%;border:2px solid var(--border);background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;}
  .task-check.done{background:var(--lavender-deep);border-color:var(--lavender-deep);color:#fff;}
  .task-card.done .task-ttl{text-decoration:line-through;}
  .task-body{flex:1;min-width:0;cursor:pointer;}
  .task-ttl{font-size:13px;font-weight:700;color:var(--ink);line-height:1.25;}
  .task-meta{font-size:11px;color:var(--ink-soft);margin-top:4px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
  .task-meta .chip{font-size:10px;}
  .task-meta .chip.high{background:#FFE5EC;color:#A03A52;border-left:3px solid #F4A6B8;}
  .task-meta .chip.med{background:#FFEFE0;color:#A06840;border-left:3px solid #F4B996;}
  .task-meta .chip.low{background:#E2F8E9;color:#487A5A;border-left:3px solid #88D4A3;}
  .task-meta .when{color:var(--ink-soft);font-weight:700;}
  .task-meta .when.overdue{color:#B23B5A;font-weight:800;}
  .task-actions{display:flex;flex-direction:column;gap:2px;}
  .task-actions button{background:transparent;border:none;color:var(--ink-muted);font-size:13px;cursor:pointer;padding:3px 5px;border-radius:6px;}
  .task-actions button:hover{background:#FAF5F2;color:var(--ink);}

  .tg-completed{margin-top:8px;}
  .tg-completed-toggle{background:transparent;border:none;cursor:pointer;font-size:11px;font-weight:800;color:var(--ink-soft);padding:6px 4px;display:flex;align-items:center;gap:6px;text-transform:uppercase;letter-spacing:0.3px;width:100%;text-align:left;}
  .tg-completed-toggle:hover{color:var(--ink);}
  .tg-completed-toggle .caret{transition:transform .2s;display:inline-block;}
  .tg-completed-toggle.open .caret{transform:rotate(90deg);}
  .tg-completed-body{display:none;animation:expandIn .25s ease;}
  .tg-completed-body.open{display:block;}

  .task-group .btn.add-here{margin-top:6px;background:#FFFFFFB0;color:var(--ink);border:1px dashed var(--border);font-weight:700;}
  .task-group .btn.add-here:hover{background:#fff;}

  /* ============ CALENDAR — Vacation mode ============ */
  .cal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
  .cal-head-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0;}
  .cal-head-right{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
  .cal-vac-counter{font-size:11px;font-weight:700;color:#3A6A8A;background:#E0EEF7;padding:4px 10px;border-radius:99px;border:1px solid #B8D3E5;white-space:nowrap;}
  .cal-vac-info{position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:1px solid #B8D3E5;background:#F0F7FC;cursor:pointer;font-size:15px;line-height:1;padding:0;box-shadow:var(--shadow);transition:background .15s, transform .15s;}
  .cal-vac-info:hover{background:#DCEDF7;transform:translateY(-1px);}
  .cal-vac-info .vac-info-badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:#3A8AB8;color:#fff;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;border:2px solid #fff;}
  .vac-info-modal{text-align:center;padding:8px 4px;}
  .vac-info-modal .vi-ttl{font-size:32px;margin-bottom:6px;}
  .vac-info-modal .vi-row{display:flex;justify-content:space-around;gap:12px;margin-top:14px;}
  .vac-info-modal .vi-stat{background:#F0F7FC;border:1px solid #B8D3E5;border-radius:14px;padding:14px 10px;flex:1;}
  .vac-info-modal .vi-num{font-size:28px;font-weight:800;color:#1F4F70;line-height:1;}
  .vac-info-modal .vi-lbl{font-size:11px;font-weight:700;color:#3A6A8A;margin-top:6px;text-transform:uppercase;letter-spacing:0.5px;}
  .cal-vac-toggle{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:99px;font-size:12px;font-weight:800;cursor:pointer;background:#F0F7FC;color:#3A6A8A;border:1px solid #B8D3E5;box-shadow:var(--shadow);transition:background .15s, transform .15s;}
  .cal-vac-toggle:hover{background:#DCEDF7;transform:translateY(-1px);}
  .cal-vac-toggle.active{background:linear-gradient(135deg,#B8DCEF,#8DC1DE);color:#1F4F70;border-color:#7AB3D2;}
  .cal-vac-toggle.active .vac-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#3A8AB8;animation:vacPulse 1.6s ease-in-out infinite;}
  @keyframes vacPulse{0%,100%{opacity:0.5;transform:scale(0.9);}50%{opacity:1;transform:scale(1.15);}}
  .cal-vac-toggle .vac-dot{display:none;}
  .cal-vac-exit{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#fff;border:1px solid var(--border);color:var(--ink-soft);font-size:14px;cursor:pointer;box-shadow:var(--shadow);}
  .cal-vac-exit:hover{background:#FAF5F2;color:var(--ink);}
  .cal-vac-hint{font-size:11px;font-weight:700;color:#3A6A8A;background:#F0F7FC;padding:6px 12px;border-radius:10px;border:1px dashed #B8D3E5;flex:1 0 100%;text-align:center;margin-top:4px;}

  .cal-expand-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#fff;border:1px solid var(--border);color:var(--ink-soft);font-size:14px;font-weight:800;cursor:pointer;box-shadow:var(--shadow);transition:background .15s, transform .15s;}
  .cal-expand-btn:hover{background:#F4ECFF;color:var(--ink);transform:translateY(-1px);}
  .cal-expand-btn[aria-pressed="true"]{background:var(--lavender-deep);color:#fff;border-color:var(--lavender-deep);}

  /* Calendar expanded mode: hide page header + subtabs, calendar fills viewport */
  body.cal-mode .cal-fullscreen.cal-expanded{position:fixed;inset:0;z-index:90;background:var(--bg);margin:0;padding:14px 18px calc(28px + var(--safe-bottom));min-height:100vh;border-radius:0;overflow-y:auto;}
  body.cal-mode .cal-fullscreen.cal-expanded .cal-row{flex:1;}
  body.cal-mode .cal-fullscreen.cal-expanded .cal-head .ttl{font-size:30px;}
  body.cal-mode .cal-fullscreen.cal-expanded .cb-day{font-size:13px;}
  body.cal-mode .cal-fullscreen.cal-expanded .cb-day .cb-num{font-size:14px;min-height:26px;}
  body.cal-mode .cal-fullscreen.cal-expanded .cb-day .cb-num > span:first-child{width:26px;height:26px;font-size:13px;}
  body.cal-mode .cal-fullscreen.cal-expanded .cb-chip{font-size:11px;padding:3px 7px;}
  body.cal-mode .cal-fullscreen.cal-expanded .cal-dn{font-size:12px;padding:6px 4px;}

  body.vac-mode .cal-big .cb-day{cursor:crosshair;}
  body.vac-mode .cal-big .cb-day.muted{cursor:crosshair;}
  body.vac-mode{user-select:none;-webkit-user-select:none;}

  .cal-big .cb-day.vacation{background:#DCEEF7;}
  .cal-big .cb-day.vacation.weekend{background:#CCE3F0;}
  .cal-big .cb-day.vacation:hover{background:#C2DDED;}
  .cal-big .cb-day.vacation.today{background:linear-gradient(180deg,#A8CFE5 0%,#DCEEF7 65%);}
  .cb-vac-corner{position:absolute;top:3px;right:4px;font-size:11px;pointer-events:none;line-height:1;}
  .cal-big .cb-day.drag-preview{background:#B8DCEF !important;}

  /* Today vacation banner */
  .vac-today-banner{background:linear-gradient(135deg,#B8DCEF,#8DC1DE);color:#1F4F70;padding:10px 14px;border-radius:14px;font-weight:800;font-size:13px;display:flex;align-items:center;gap:8px;border:1px solid #7AB3D2;margin-bottom:12px;box-shadow:var(--shadow);}
  .vac-today-banner .em{font-size:18px;}

  /* ============ TRAVEL — Hero map + album layout ============ */
  .travel-hero{position:relative;column-span:all;-webkit-column-span:all;width:100%;background:linear-gradient(180deg,#FFF8E7 0%,#FBEFD9 100%);border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow);margin-bottom:18px;cursor:pointer;}
  .travel-hero-svg{display:block;width:100%;height:auto;min-height:280px;max-height:55vh;}
  .travel-hero svg{display:block;width:100%;height:100%;}
  .travel-hero svg .country{fill:#EFE6DF;stroke:#FFFFFF;stroke-width:0.5;transition:fill .25s;}
  .travel-hero svg .country.visited{fill:#F4A6B8;}
  .travel-hero svg .country.wishlist{fill:url(#hero-wish-pattern);}
  .travel-hero-stats{position:absolute;left:14px;bottom:14px;background:#FFFFFFCC;backdrop-filter:blur(10px);padding:10px 14px;border-radius:14px;border:1px solid var(--border);box-shadow:0 4px 14px rgba(120,90,150,0.15);}
  .travel-hero-stats .big{font-size:22px;font-weight:800;color:var(--ink);line-height:1.1;}
  .travel-hero-stats .sub{font-size:11px;color:var(--ink-soft);font-weight:700;margin-top:2px;}
  .travel-hero-expand{position:absolute;top:12px;right:12px;background:#FFFFFFE0;backdrop-filter:blur(8px);border:1px solid var(--border);color:var(--ink);font-size:12px;font-weight:800;padding:7px 13px;border-radius:99px;cursor:pointer;box-shadow:var(--shadow);}
  .travel-hero-expand:hover{background:#fff;transform:translateY(-1px);}
  .travel-hero-legend{position:absolute;bottom:14px;right:14px;display:flex;gap:10px;background:#FFFFFFCC;backdrop-filter:blur(8px);padding:6px 12px;border-radius:99px;border:1px solid var(--border);font-size:10px;font-weight:700;color:var(--ink-soft);}
  .travel-hero-legend .lg{display:flex;align-items:center;gap:4px;}
  .travel-hero-legend .dot{width:9px;height:9px;border-radius:50%;display:inline-block;}
  .travel-hero-legend .dot.v{background:#F4A6B8;}
  .travel-hero-legend .dot.w{background:repeating-linear-gradient(45deg,#E0D4F7 0 3px,transparent 3px 6px),#F0E8E3;}
  .travel-hero-legend .dot.n{background:#EFE6DF;border:1px solid #D0C5BB;}

  /* Two-column row */
  .travel-cols{column-span:all;-webkit-column-span:all;display:grid;grid-template-columns:1fr;gap:14px;margin-bottom:18px;}
  @media (min-width:760px){.travel-cols{grid-template-columns:1fr 1fr;}}
  .travel-col{background:#fff;border-radius:var(--radius-md);border:1px solid var(--border);box-shadow:var(--shadow);padding:14px;display:flex;flex-direction:column;gap:10px;break-inside:avoid;min-width:0;}
  .travel-col-head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
  .travel-col-head .ttl{font-size:14px;font-weight:800;color:var(--ink);}
  .travel-col-head .cnt{font-size:11px;font-weight:700;color:var(--ink-soft);}
  .travel-col-add{background:linear-gradient(135deg,#FFE5EC,#FFD0DE);color:#A03A52;border:1px solid #F4A6B8;border-radius:99px;padding:7px 14px;font-size:12px;font-weight:800;cursor:pointer;align-self:flex-start;}
  .travel-col.wishlist .travel-col-add{background:linear-gradient(135deg,#EDE4FB,#DCCFF5);color:#6D5DA0;border-color:#B59FE0;}
  .travel-col-add:hover{transform:translateY(-1px);}

  /* Album card */
  .album-card{display:flex;gap:10px;padding:10px 12px;background:linear-gradient(135deg,#FFFFFF,#FAF5F2);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);align-items:center;}
  .album-card.wish{background:linear-gradient(135deg,#FFFFFF,#F4ECFA);}
  .album-illust{flex:0 0 auto;width:58px;height:58px;border-radius:14px;background:linear-gradient(135deg,#FFE5EC,#FFD6E0);display:flex;align-items:center;justify-content:center;font-size:32px;line-height:1;box-shadow:inset 0 0 0 1px rgba(255,255,255,0.6);}
  .album-card.wish .album-illust{background:linear-gradient(135deg,#EDE4FB,#DCCFF5);}
  .album-body{flex:1;min-width:0;}
  .album-name{font-size:13px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:6px;}
  .album-meta{font-size:11px;color:var(--ink-soft);font-weight:700;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .album-note{font-size:11px;color:var(--ink-soft);font-style:italic;margin-top:2px;}
  .album-actions{display:flex;flex-direction:column;gap:2px;flex-shrink:0;}
  .album-actions button{background:transparent;border:none;color:var(--ink-muted);font-size:13px;cursor:pointer;padding:3px 5px;border-radius:6px;}
  .album-actions button:hover{background:#FAF5F2;color:var(--ink);}
  .album-mark{background:linear-gradient(135deg,#D4F4DD,#A8E0BA) !important;color:#2F6B47 !important;font-weight:800 !important;font-size:11px !important;padding:5px 10px !important;border-radius:99px !important;}
  .album-mark:hover{background:linear-gradient(135deg,#A8E0BA,#88D4A3) !important;}

  .travel-view-all{margin-top:6px;font-size:11px;font-weight:700;color:var(--ink-soft);background:transparent;border:none;cursor:pointer;text-align:center;padding:6px;border-radius:8px;}
  .travel-view-all:hover{background:#FAF5F2;color:var(--ink);}
  .col-add-row{display:flex;justify-content:flex-end;margin-top:6px;}
  .col-add-mini{border-radius:99px;padding:6px 12px;font-size:11px;font-weight:800;cursor:pointer;letter-spacing:0.2px;}
  .col-add-mini.visited{background:linear-gradient(135deg,#FFE5EC,#FFD0DE);color:#A03A52;border:1px solid #F4A6B8;}
  .col-add-mini.visited:hover{background:linear-gradient(135deg,#FFD0DE,#F4A6B8);transform:translateY(-1px);}
  .col-add-mini.wishlist{background:linear-gradient(135deg,#EDE4FB,#DCCFF5);color:#6D5DA0;border:1px solid #B59FE0;}
  .col-add-mini.wishlist:hover{background:linear-gradient(135deg,#DCCFF5,#C8B8EE);transform:translateY(-1px);}

  /* Upcoming trips reorg */
  .upcoming-head{display:flex;align-items:center;justify-content:space-between;gap:10px;column-span:all;-webkit-column-span:all;margin-bottom:10px;flex-wrap:wrap;}
  .upcoming-list{column-span:all;-webkit-column-span:all;display:flex;flex-direction:column;gap:8px;margin-bottom:20px;}
  .upcoming-empty{column-span:all;-webkit-column-span:all;padding:24px 14px;text-align:center;font-size:13px;color:var(--ink-soft);font-weight:700;background:#FAF5F2;border-radius:14px;border:1px dashed var(--border);margin-bottom:20px;}

  /* Upcoming trips modal (from Today widget) */
  .upcoming-modal-list{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow-y:auto;margin-bottom:12px;}
  .upcoming-modal-row{display:flex;align-items:center;gap:12px;padding:12px;background:linear-gradient(135deg,#FFFFFF,#FBF5F0);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);position:relative;overflow:hidden;}
  .upcoming-modal-row::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--lavender-deep);}
  .upcoming-modal-row.idea::before{background:#C2B5E0;}
  .upcoming-modal-row.planning::before{background:#F4B996;}
  .upcoming-modal-row.booked::before{background:#88D4A3;}
  .upcoming-modal-flag{font-size:28px;flex-shrink:0;}
  .upcoming-modal-body{flex:1;min-width:0;}
  .upcoming-modal-name{font-size:13px;font-weight:800;color:var(--ink);}
  .upcoming-modal-sub{font-size:11px;color:var(--ink-soft);font-weight:700;margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
  .upcoming-modal-cd{flex-shrink:0;background:#fff;border:1px solid var(--border);border-radius:12px;padding:8px 14px;font-size:18px;font-weight:800;color:var(--ink);line-height:1;text-align:center;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:2px;align-items:center;min-width:54px;}
  .upcoming-modal-cd .lbl{font-size:9px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.4px;}
  .upcoming-modal-del{flex-shrink:0;width:26px;height:26px;border-radius:8px;border:1px solid var(--border);background:#FAF5F2;color:var(--ink-soft);font-size:11px;font-weight:800;cursor:pointer;}
  .upcoming-modal-del:hover{background:#FFE3E3;color:#C0392B;border-color:#E8B4B4;}
  .upcoming-modal-go{width:100%;padding:10px;background:linear-gradient(135deg,#EDE4FB,#DCCFF5);color:#6D5DA0;border:1px solid #B59FE0;border-radius:99px;font-size:12px;font-weight:800;cursor:pointer;transition:transform .15s, background .15s;}
  .upcoming-modal-go:hover{background:linear-gradient(135deg,#DCCFF5,#C8B8EE);transform:translateY(-1px);}
  .upcoming-add-inline{padding:8px 16px;width:auto;font-size:12px;border-radius:99px;margin:0;}
  .upcoming-add-row{display:flex;justify-content:flex-end;column-span:all;-webkit-column-span:all;margin:4px 0 10px;}
  .upcoming-add-mini{background:linear-gradient(135deg,#FFE4D1,#FFD0A8);color:#8B5A2B;border:1px solid #F4B996;border-radius:99px;padding:7px 14px;font-size:11px;font-weight:800;cursor:pointer;letter-spacing:0.2px;white-space:nowrap;flex-shrink:0;}
  .upcoming-add-mini:hover{background:linear-gradient(135deg,#FFD0A8,#F4B996);transform:translateY(-1px);}

  /* Inline date range picker */
  .range-picker{background:#fff;border:1px solid var(--border);border-radius:14px;padding:10px 12px;box-shadow:var(--shadow);user-select:none;}
  .rp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
  .rp-head button{background:#FAF5F2;border:1px solid var(--border);border-radius:8px;width:28px;height:28px;font-size:14px;font-weight:800;color:var(--ink-soft);cursor:pointer;}
  .rp-head button:hover{background:var(--lavender-deep);color:#fff;border-color:var(--lavender-deep);}
  .rp-title{font-size:13px;font-weight:800;color:var(--ink);text-transform:capitalize;}
  .rp-dn{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px;}
  .rp-dn div{text-align:center;font-size:9px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;padding:4px 0;}
  .rp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
  .rp-cell{aspect-ratio:1;background:transparent;border:none;font:inherit;font-size:12px;font-weight:700;color:var(--ink);border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s;}
  .rp-cell.empty{visibility:hidden;cursor:default;}
  .rp-cell:hover:not(.empty):not(.rp-start):not(.rp-end){background:#FAF5F2;}
  .rp-cell.rp-mid{background:#F4ECFA;color:#6D5DA0;border-radius:0;}
  .rp-cell.rp-start{background:var(--lavender-deep);color:#fff;border-radius:8px 0 0 8px;font-weight:800;box-shadow:0 2px 6px rgba(120,90,150,0.35);}
  .rp-cell.rp-end{background:var(--lavender-deep);color:#fff;border-radius:0 8px 8px 0;font-weight:800;box-shadow:0 2px 6px rgba(120,90,150,0.35);}
  .rp-cell.rp-start.rp-end{border-radius:8px;}
  .rp-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px;padding-top:8px;border-top:1px dashed var(--border);}
  .rp-label{font-size:11px;font-weight:700;color:var(--ink);}
  .rp-clear{background:transparent;border:1px solid var(--border);color:var(--ink-soft);font-size:10px;font-weight:700;padding:4px 10px;border-radius:99px;cursor:pointer;}
  .rp-clear:hover{background:#FAF5F2;color:var(--ink);}

  /* Compact trip modal form */
  .trip-modal-form{display:flex;flex-direction:column;gap:8px;}
  .trip-modal-form label{font-size:10px;font-weight:800;letter-spacing:0.4px;color:var(--ink-soft);text-transform:uppercase;display:block;margin-bottom:3px;}
  .trip-modal-form .field{margin:0;}
  .trip-modal-form .field input,
  .trip-modal-form .field select{padding:8px 10px;border-radius:10px;font-size:13px;}
  .trip-modal-form .row-2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .trip-modal-form .row-full{width:100%;}
  .trip-modal-form .checkbox-row{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--ink-soft);font-weight:700;text-transform:none;letter-spacing:normal;}
  .trip-modal-form .checkbox-row input{margin:0;}

  /* Compact range picker variant */
  .range-picker.compact{padding:8px 10px;}
  .range-picker.compact .rp-head{margin-bottom:6px;}
  .range-picker.compact .rp-head button{width:24px;height:24px;font-size:12px;}
  .range-picker.compact .rp-title{font-size:12px;}
  .range-picker.compact .rp-dn div{font-size:8px;padding:2px 0;}
  .range-picker.compact .rp-cell{aspect-ratio:auto;height:28px;font-size:11px;border-radius:6px;}
  .range-picker.compact .rp-cell.rp-start, .range-picker.compact .rp-cell.rp-end{border-radius:6px 0 0 6px;}
  .range-picker.compact .rp-cell.rp-end{border-radius:0 6px 6px 0;}
  .range-picker.compact .rp-cell.rp-start.rp-end{border-radius:6px;}
  .range-picker.compact .rp-foot{margin-top:6px;padding-top:6px;}
  .range-picker.compact .rp-label{font-size:10px;}
  .range-picker.compact .rp-clear{font-size:9px;padding:3px 8px;}
  .upcoming-filters{display:flex;gap:6px;flex-wrap:wrap;column-span:all;-webkit-column-span:all;margin-bottom:10px;}
  .upc-chip{padding:5px 12px;border-radius:99px;background:#fff;border:1px solid var(--border);font-size:11px;font-weight:800;color:var(--ink-soft);cursor:pointer;letter-spacing:0.2px;}
  .upc-chip:hover{background:#FAF5F2;color:var(--ink);}
  .upc-chip.active{background:var(--ink);color:#fff;border-color:var(--ink);}
  .upc-chip.idea.active{background:#6D5DA0;border-color:#6D5DA0;}
  .upc-chip.planning.active{background:#A06840;border-color:#A06840;}
  .upc-chip.booked.active{background:#487A5A;border-color:#487A5A;}
  .upcoming-month-header{font-size:10px;font-weight:800;letter-spacing:0.6px;text-transform:uppercase;color:var(--ink-soft);margin:12px 4px 6px;padding-bottom:4px;border-bottom:1px solid var(--border);column-span:all;-webkit-column-span:all;}

  /* Featured trip card (largest, the imminent one) */
  .trip-featured{position:relative;background:linear-gradient(135deg,#FFFFFF 0%,#FBF5F0 100%);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px;box-shadow:0 4px 18px rgba(180,140,180,0.12);margin-bottom:14px;column-span:all;-webkit-column-span:all;overflow:hidden;}
  .trip-featured::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--lavender-deep);}
  .trip-featured.idea::before{background:#C2B5E0;}
  .trip-featured.planning::before{background:#F4B996;}
  .trip-featured.booked::before{background:#88D4A3;}
  .trip-featured-top{display:flex;align-items:center;gap:14px;}
  .trip-flag-big{font-size:48px;line-height:1;flex-shrink:0;}
  .trip-featured-body{flex:1;min-width:0;}
  .trip-featured-title{font-size:18px;font-weight:800;color:var(--ink);}
  .trip-featured-meta{font-size:12px;color:var(--ink-soft);font-weight:700;margin-top:4px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
  .trip-featured-note{font-size:12px;color:var(--ink-soft);font-style:italic;margin-top:6px;}
  .trip-featured-cd{flex-shrink:0;text-align:center;background:#fff;border:1px solid var(--border);padding:8px 14px;border-radius:14px;font-size:24px;font-weight:800;color:var(--ink);line-height:1;}
  .trip-featured-cd-l{font-size:9px;font-weight:700;letter-spacing:0.3px;text-transform:uppercase;color:var(--ink-soft);margin-top:4px;}
  .trip-featured-actions{display:flex;gap:6px;margin-top:12px;padding-top:10px;border-top:1px dashed var(--border);justify-content:flex-end;}
  .trip-featured-actions button{background:transparent;border:1px solid var(--border);color:var(--ink-soft);font-size:11px;font-weight:700;padding:5px 12px;border-radius:99px;cursor:pointer;}
  .trip-featured-actions button:hover{background:#FAF5F2;color:var(--ink);}

  /* ============ VERA — Voice assistant + command palette ============ */
  .vera-bg{position:fixed;inset:0;background:rgba(60,40,65,0.5);backdrop-filter:blur(8px);z-index:1500;display:flex;align-items:flex-start;justify-content:center;padding:80px 16px 16px;animation:veraFadeIn .25s ease;}
  @keyframes veraFadeIn{from{opacity:0;}to{opacity:1;}}
  .vera-modal{background:#fff;width:100%;max-width:560px;max-height:80vh;border-radius:22px;box-shadow:0 20px 60px rgba(120,90,150,0.4);display:flex;flex-direction:column;overflow:hidden;animation:veraScaleIn .25s cubic-bezier(0.34, 1.56, 0.64, 1);}
  @keyframes veraScaleIn{from{transform:scale(0.92);opacity:0;}to{transform:scale(1);opacity:1;}}
  .vera-search-row{display:flex;align-items:center;gap:8px;padding:14px 14px 12px;border-bottom:1px solid var(--border);}
  .vera-icon{font-size:22px;flex-shrink:0;}
  .vera-input{flex:1;border:none;outline:none;background:transparent;font:inherit;font-size:16px;font-weight:600;color:var(--ink);min-width:0;padding:4px 0;}
  .vera-input::placeholder{color:var(--ink-muted);font-weight:600;}
  .vera-mic-btn{flex-shrink:0;width:36px;height:36px;border-radius:50%;background:#FAF5F2;border:1px solid var(--border);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;}
  .vera-mic-btn:hover{background:#F1ECF6;}
  .vera-mic-btn.listening{background:linear-gradient(135deg,#FFE5EC,#EDE4FB);border-color:#F4A6B8;animation:veraMicPulse 1.2s ease-in-out infinite;}
  @keyframes veraMicPulse{0%,100%{box-shadow:0 0 0 0 rgba(244,166,184,0.6);}50%{box-shadow:0 0 0 8px rgba(244,166,184,0);}}
  .vera-close{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:#FAF5F2;border:1px solid var(--border);font-size:13px;color:var(--ink-soft);cursor:pointer;}
  .vera-close:hover{background:#F1ECF6;color:var(--ink);}
  .vera-body{flex:1;overflow-y:auto;padding:10px 12px 14px;}
  .vera-section-title{font-size:10px;font-weight:800;letter-spacing:0.6px;text-transform:uppercase;color:var(--ink-soft);margin:10px 4px 6px;}
  .vera-back{display:inline-flex;align-items:center;gap:4px;background:#FAF5F2;border:1px solid var(--border);color:var(--ink-soft);font-size:11px;font-weight:800;padding:6px 12px;border-radius:99px;cursor:pointer;margin-bottom:4px;transition:background .15s, color .15s, transform .15s;}
  .vera-back:hover{background:var(--lavender-deep);color:#fff;transform:translateX(-2px);}
  .vera-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 2px;}
  .vera-chip{background:linear-gradient(135deg,#FFFFFF,#FAF5F2);border:1px solid var(--border);border-radius:99px;padding:7px 12px;font-size:12px;font-weight:700;color:var(--ink);cursor:pointer;transition:transform .15s, background .15s;}
  .vera-chip:hover{background:linear-gradient(135deg,#FFE5EC,#EDE4FB);transform:translateY(-1px);}
  .vera-result-group{margin:8px 0;}
  .vera-result-group .vera-section-title{margin-top:8px;}
  .vera-result{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;cursor:pointer;transition:background .15s;}
  .vera-result:hover, .vera-result.active{background:linear-gradient(90deg,#FFF5F8 0%,#F4ECFA 100%);}
  .vera-result .ico{font-size:18px;flex-shrink:0;width:24px;text-align:center;}
  .vera-result .body{flex:1;min-width:0;}
  .vera-result .ttl{font-size:13px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .vera-result .sub{font-size:11px;color:var(--ink-soft);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .vera-answer{background:linear-gradient(135deg,#FFE5EC 0%,#EDE4FB 100%);border-radius:14px;padding:14px 16px;font-size:14px;color:var(--ink);font-weight:700;display:flex;align-items:flex-start;gap:10px;margin:6px 0 8px;}
  .vera-answer .ico{font-size:22px;flex-shrink:0;}
  .vera-confirm-card{background:linear-gradient(135deg,#FFF8E7,#FFE5EC);border:1px solid #F4A6B8;border-radius:14px;padding:14px 16px;margin:6px 0 8px;}
  .vera-confirm-card .top{font-size:13px;font-weight:800;color:var(--ink);margin-bottom:10px;display:flex;align-items:center;gap:8px;}
  .vera-confirm-card .top .em{font-size:18px;}
  .vera-confirm-card .actions{display:flex;gap:8px;}
  .vera-confirm-card .actions button{flex:1;padding:8px 12px;border-radius:10px;border:none;font-weight:800;font-size:12px;cursor:pointer;}
  .vera-confirm-card .actions .ok{background:var(--lavender-deep);color:#fff;}
  .vera-confirm-card .actions .ok:hover{background:#9A82CC;}
  .vera-confirm-card .actions .no{background:#FFFFFFC0;color:var(--ink-soft);border:1px solid var(--border);}
  .vera-empty{text-align:center;padding:24px 14px;color:var(--ink-soft);font-size:12px;font-weight:700;}
  .vera-toast{position:fixed;top:80px;left:50%;transform:translateX(-50%) translateY(-20px);background:linear-gradient(135deg,#D4F4DD,#A8E0BA);color:#2F6B47;padding:10px 18px;border-radius:99px;font-size:13px;font-weight:800;box-shadow:0 10px 30px rgba(120,90,150,0.3);z-index:2200;opacity:0;transition:opacity .25s, transform .25s;}
  .vera-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

  /* Wake-word indicator on avatar */
  .today-avatar.vera-listening::after{content:'';position:absolute;right:0;bottom:0;width:12px;height:12px;background:#88D4A3;border:2px solid #fff;border-radius:50%;animation:veraDotPulse 1.6s ease-in-out infinite;}
  @keyframes veraDotPulse{0%,100%{opacity:0.6;transform:scale(0.95);}50%{opacity:1;transform:scale(1.15);}}
  .today-avatar{position:relative;}

  /* ============ READING — Watch & Read 3-col redesign ============ */
  .rd-wrap{column-span:all;-webkit-column-span:all;width:100%;}
  .rd-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
  .rd-add-btn{background:linear-gradient(135deg,#FFE5EC,#EDE4FB);color:var(--ink);border:1px solid #B59FE0;border-radius:99px;padding:8px 16px;font-size:12px;font-weight:800;cursor:pointer;letter-spacing:0.2px;}
  .rd-footer{display:flex;justify-content:center;margin-top:14px;}
  .rd-footer .rd-add-btn{padding:10px 24px;font-size:13px;}
  .rd-add-btn:hover{background:linear-gradient(135deg,#EDE4FB,#DCCFF5);transform:translateY(-1px);}
  .rd-mobile-tabs{display:none;}
  .rd-cols{display:grid;grid-template-columns:1fr;gap:14px;}
  @media (min-width:660px){.rd-cols{grid-template-columns:1fr 1fr;}}
  @media (min-width:980px){.rd-cols{grid-template-columns:1fr 1fr 1fr;}}
  .rd-col{background:#fff;border:1px solid var(--border);border-radius:var(--radius-md);padding:14px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px;break-inside:avoid;min-width:0;}
  .rd-col.books{background:linear-gradient(180deg,#F4ECFA 0%,#FFFFFF 30%);}
  .rd-col.series{background:linear-gradient(180deg,#FFE9EF 0%,#FFFFFF 30%);}
  .rd-col.movies{background:linear-gradient(180deg,#FFEFE0 0%,#FFFFFF 30%);}
  .rd-col-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--border);}
  .rd-col-head .ttl{font-size:14px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:6px;}
  .rd-col-head .cnt{font-size:11px;font-weight:700;color:var(--ink-soft);background:#FFFFFFB0;padding:3px 9px;border-radius:99px;}

  .rd-section{display:flex;flex-direction:column;gap:6px;}
  .rd-section-head{font-size:10px;font-weight:800;letter-spacing:0.4px;text-transform:uppercase;color:var(--ink-soft);display:flex;align-items:center;justify-content:space-between;margin-top:4px;}
  .rd-section-empty{padding:10px 12px;background:#FAF5F2;border-radius:10px;font-size:11px;color:var(--ink-soft);font-weight:700;text-align:center;font-style:italic;}

  .rd-card{display:flex;gap:10px;padding:10px 12px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);align-items:flex-start;cursor:pointer;transition:transform .12s, box-shadow .12s;}
  .rd-card:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(120,90,150,0.15);}
  .rd-card-emoji{font-size:22px;flex-shrink:0;line-height:1;}
  .rd-card-body{flex:1;min-width:0;}
  .rd-card-title{font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .rd-card-author{font-size:10px;font-weight:600;color:var(--ink-soft);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .rd-card-progress{display:flex;align-items:center;gap:6px;margin-top:6px;}
  .rd-card-progress .bar{flex:1;height:5px;background:#F0E8E3;border-radius:99px;overflow:hidden;}
  .rd-card-progress .fill{height:100%;background:linear-gradient(90deg,#F4A6B8,#B59FE0);border-radius:99px;transition:width .4s;}
  .rd-card-progress .pct{font-size:10px;font-weight:800;color:var(--ink-soft);min-width:30px;text-align:right;}
  .rd-card-rating{font-size:13px;margin-top:4px;letter-spacing:1px;}
  .rd-card-actions{display:flex;flex-direction:column;gap:2px;align-items:flex-end;flex-shrink:0;}
  .rd-card-actions .rd-btn{font-size:10px;font-weight:800;padding:5px 10px;border-radius:99px;border:none;cursor:pointer;white-space:nowrap;}
  .rd-card-actions .rd-btn.finish{background:linear-gradient(135deg,#D4F4DD,#A8E0BA);color:#2F6B47;}
  .rd-card-actions .rd-btn.start{background:linear-gradient(135deg,#FFE4D1,#FFD0A8);color:#8B5A2B;}
  .rd-card-actions .rd-btn.rewatch{background:transparent;color:var(--ink-soft);border:1px solid var(--border);font-size:9px;padding:4px 8px;}
  .rd-card-menu{background:transparent;border:none;color:var(--ink-muted);font-size:14px;cursor:pointer;padding:2px 4px;border-radius:6px;}
  .rd-card-menu:hover{background:#FAF5F2;color:var(--ink);}

  .rd-card.finished .rd-card-title{color:var(--ink-soft);}
  .rd-popover{position:fixed;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 22px rgba(120,90,150,0.18);padding:5px;z-index:50;min-width:140px;}
  .rd-popover button{display:block;width:100%;background:transparent;border:none;text-align:left;padding:7px 10px;font-size:12px;font-weight:700;color:var(--ink);cursor:pointer;border-radius:8px;}
  .rd-popover button:hover{background:#FAF5F2;}
  .rd-popover button.danger{color:#B23B5A;}

  /* Star rating */
  .star-row{display:inline-flex;gap:3px;}
  .star-btn{background:transparent;border:none;font-size:22px;cursor:pointer;line-height:1;padding:2px;color:#D8CDD5;transition:transform .12s;}
  .star-btn.on{color:#F4B996;}
  .star-btn:hover{transform:scale(1.15);}

  @media (max-width:660px){
    .rd-mobile-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;}
    .rd-mobile-tabs button{padding:6px 12px;border-radius:99px;background:#fff;border:1px solid var(--border);font-size:11px;font-weight:800;color:var(--ink-soft);cursor:pointer;}
    .rd-mobile-tabs button.active{background:var(--ink);color:#fff;border-color:var(--ink);}
    .rd-col[data-rd-hidden="true"]{display:none;}
  }

  /* ============ EAT — Restaurants ============ */
  .ea-wrap{column-span:all;-webkit-column-span:all;width:100%;}
  .ea-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
  .ea-add-btn{background:linear-gradient(135deg,#FFE4D1,#FFD0A8);color:#8B5A2B;border:1px solid #F4B996;border-radius:99px;padding:8px 16px;font-size:12px;font-weight:800;cursor:pointer;}
  .ea-add-btn:hover{background:linear-gradient(135deg,#FFD0A8,#F4B996);transform:translateY(-1px);}

  .ea-top-picks{background:linear-gradient(135deg,#FFF8E7,#FFE4D1);border:1px solid #F4B996;border-radius:var(--radius-md);padding:14px;margin-bottom:14px;}
  .ea-top-picks-title{font-size:13px;font-weight:800;color:#8B5A2B;margin-bottom:10px;}
  .ea-top-picks-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
  @media (max-width:560px){.ea-top-picks-row{grid-template-columns:1fr;}}
  .ea-top-pick-card{background:#FFFFFF;border:1px solid var(--border);border-radius:14px;padding:10px;cursor:pointer;text-align:center;}
  .ea-top-pick-emoji{font-size:24px;line-height:1;}
  .ea-top-pick-name{font-size:12px;font-weight:800;color:var(--ink);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .ea-top-pick-city{font-size:10px;color:var(--ink-soft);font-weight:600;margin-top:1px;}
  .ea-top-pick-stars{font-size:11px;color:#E8A23A;margin-top:4px;letter-spacing:1px;}

  .ea-filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;}
  .ea-chip{padding:5px 12px;border-radius:99px;background:#fff;border:1px solid var(--border);font-size:11px;font-weight:800;color:var(--ink-soft);cursor:pointer;letter-spacing:0.2px;}
  .ea-chip:hover{background:#FAF5F2;color:var(--ink);}
  .ea-chip.active{background:var(--ink);color:#fff;border-color:var(--ink);}

  .ea-section{margin-bottom:18px;}
  .ea-section-head{font-size:11px;font-weight:800;letter-spacing:0.5px;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;}
  .ea-section-head .cnt{background:#FAF5F2;padding:3px 9px;border-radius:99px;font-size:10px;}
  .ea-list{display:flex;flex-direction:column;gap:8px;}
  .ea-section-empty{padding:14px;background:#FAF5F2;border:1px dashed var(--border);border-radius:12px;font-size:12px;color:var(--ink-soft);text-align:center;font-weight:700;font-style:italic;}

  .ea-card{display:flex;gap:12px;padding:12px;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);align-items:center;cursor:pointer;transition:transform .12s, box-shadow .12s;}
  .ea-card:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(180,140,180,0.15);}
  .ea-card-emoji{font-size:28px;flex-shrink:0;line-height:1;background:linear-gradient(135deg,#FFE5EC,#EDE4FB);width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;}
  .ea-card-body{flex:1;min-width:0;}
  .ea-card-name{font-size:14px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
  .ea-card-name .traveled{font-size:11px;}
  .ea-card-city{font-size:11px;font-weight:700;color:var(--ink-soft);margin-top:2px;}
  .ea-card-meta{display:flex;gap:6px;margin-top:6px;align-items:center;flex-wrap:wrap;}
  .ea-cuisine-badge{font-size:10px;font-weight:800;padding:3px 9px;border-radius:99px;}
  .ea-cuisine-badge.italian{background:#FFE5EC;color:#A03A52;}
  .ea-cuisine-badge.spanish{background:#FFEFE0;color:#A06840;}
  .ea-cuisine-badge.japanese{background:#FAF5F2;color:#7B5A8C;}
  .ea-cuisine-badge.asian{background:#FFE5EC;color:#A03A52;}
  .ea-cuisine-badge.mexican{background:#FFE4D1;color:#8B5A2B;}
  .ea-cuisine-badge.french{background:#EDE4FB;color:#6D5DA0;}
  .ea-cuisine-badge.american{background:#FFEDD8;color:#A06840;}
  .ea-cuisine-badge.vegetarian{background:#E2F8E9;color:#487A5A;}
  .ea-cuisine-badge.seafood{background:#E0EEF7;color:#3A6A8A;}
  .ea-cuisine-badge.burger{background:#FFE4D1;color:#A06840;}
  .ea-cuisine-badge.pizza{background:#FFE5EC;color:#A03A52;}
  .ea-cuisine-badge.other{background:#FAF5F2;color:var(--ink-soft);}
  .ea-price{font-size:11px;color:var(--ink-soft);font-weight:800;}
  .ea-stars{font-size:13px;letter-spacing:1px;color:#E8A23A;}
  .ea-stars .off{color:#E0D4D8;}
  .ea-card-actions{display:flex;flex-direction:column;gap:4px;align-items:flex-end;flex-shrink:0;}
  .ea-card-actions .ea-btn{font-size:10px;font-weight:800;padding:5px 11px;border-radius:99px;border:none;cursor:pointer;white-space:nowrap;}
  .ea-card-actions .ea-btn.visit{background:linear-gradient(135deg,#FFE4D1,#FFD0A8);color:#8B5A2B;}
  .ea-card-actions .ea-btn.revisit{background:transparent;color:var(--ink-soft);border:1px solid var(--border);font-size:9px;padding:4px 8px;}
  .ea-card-menu{background:transparent;border:none;color:var(--ink-muted);font-size:14px;cursor:pointer;padding:2px 4px;border-radius:6px;}
  .ea-card-menu:hover{background:#FAF5F2;color:var(--ink);}

  .ea-popover{position:fixed;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 22px rgba(120,90,150,0.18);padding:5px;z-index:50;min-width:150px;}
  .ea-popover button{display:block;width:100%;background:transparent;border:none;text-align:left;padding:7px 10px;font-size:12px;font-weight:700;color:var(--ink);cursor:pointer;border-radius:8px;}
  .ea-popover button:hover{background:#FAF5F2;}
  .ea-popover button.danger{color:#B23B5A;}

  .ea-photo-thumb{width:100%;max-height:180px;object-fit:cover;border-radius:12px;display:block;margin:6px 0;}
  .ea-price-btn{padding:8px 14px;border-radius:999px;border:1.5px solid var(--border);background:#fff;color:var(--ink-soft);font-size:13px;font-weight:800;cursor:pointer;transition:all .15s ease;}
  .ea-price-btn:hover{border-color:var(--ink-muted);}
  .ea-price-btn.on{background:#FFF1E5;border-color:#F4D2BC;color:var(--ink);transform:scale(1.05);}
  .ea-photo-actions{display:flex;gap:8px;margin-top:6px;}
  .ea-photo-actions input[type="file"]{display:none;}
  .ea-photo-actions label, .ea-photo-actions button{background:#FAF5F2;border:1px solid var(--border);color:var(--ink-soft);font-size:11px;font-weight:700;padding:7px 14px;border-radius:99px;cursor:pointer;}
  .ea-photo-actions label:hover, .ea-photo-actions button:hover{background:#F1ECF6;color:var(--ink);}

  /* ============ ATHLETIC CLUB ============ */
  .ath-wrap{column-span:all;-webkit-column-span:all;width:100%;display:block;}
  .ath-wrap .ath-stats-row,
  .ath-wrap .ath-standings,
  .ath-wrap .ath-hero,
  .ath-wrap .ath-match,
  .ath-wrap .section-title{break-inside:avoid;-webkit-column-break-inside:avoid;}
  .ath-page-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:16px;font-weight:800;color:#B23B5A;margin:0 0 14px;}
  .ath-page-sub{font-size:11px;font-weight:700;color:var(--ink-soft);background:#FFE5EC;padding:3px 9px;border-radius:99px;letter-spacing:0.2px;text-transform:none;}
  .ath-page-spacer{flex:1;min-width:0;}
  .ath-page-title .ath-updated{font-size:10px;font-weight:700;color:var(--ink-muted);}
  .ath-page-title .ath-refresh{margin-left:4px;}
  .ath-hero{background:linear-gradient(135deg,#FFE5EC 0%,#FFFFFF 60%,#FFE5EC 100%);border:1px solid #F4A6B8;border-radius:var(--radius-md);padding:18px 16px;box-shadow:var(--shadow);text-align:center;margin-bottom:14px;}
  .ath-hero .label{font-size:10px;font-weight:800;letter-spacing:0.5px;text-transform:uppercase;color:#B23B5A;}
  .ath-hero .teams{display:flex;align-items:center;justify-content:center;gap:14px;margin:12px 0;}
  .ath-hero .team{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1;}
  .ath-hero .team .emoji{font-size:42px;line-height:1;}
  .ath-hero .team .name{font-size:13px;font-weight:800;color:var(--ink);}
  .ath-hero .vs{font-size:14px;font-weight:800;color:var(--ink-soft);}
  .ath-hero .meta{font-size:12px;color:var(--ink-soft);font-weight:700;margin-top:8px;}
  .ath-hero .countdown{display:inline-block;margin-top:8px;background:#F4A6B8;color:#fff;padding:6px 14px;border-radius:99px;font-size:12px;font-weight:800;}

  .ath-stats-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;}
  .ath-stat-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-md);padding:12px;box-shadow:var(--shadow);}
  .ath-stat-card .ttl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:0.4px;color:var(--ink-soft);margin-bottom:8px;}
  .ath-stat-row{display:flex;justify-content:space-between;font-size:12px;color:var(--ink);margin-bottom:4px;}
  .ath-stat-row .lbl{color:var(--ink-soft);}
  .ath-stat-row .v{font-weight:800;}
  .ath-form{display:flex;gap:3px;margin-top:6px;}
  .ath-form-pill{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;color:#fff;}
  .ath-form-pill.W{background:#88D4A3;}
  .ath-form-pill.D{background:#F4B996;}
  .ath-form-pill.L{background:#E08FA5;}

  .ath-standings{background:#fff;border:1px solid var(--border);border-radius:var(--radius-md);padding:12px;box-shadow:var(--shadow);margin-bottom:14px;}
  .ath-standings .ttl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:0.4px;color:var(--ink-soft);margin-bottom:10px;}
  .ath-table{width:100%;border-collapse:collapse;font-size:12px;}
  .ath-table th{font-size:9px;font-weight:800;text-transform:uppercase;color:var(--ink-soft);padding:4px 6px;text-align:left;border-bottom:1px solid var(--border);}
  .ath-table th.num{text-align:center;}
  .ath-table td{padding:6px;border-bottom:1px solid var(--border);}
  .ath-table td.num{text-align:center;font-weight:700;}
  .ath-table tr.is-athletic{background:linear-gradient(90deg,#FFE5EC 0%,#FFEEF1 100%);font-weight:800;}
  .ath-table tr.is-athletic td{color:#B23B5A;}
  .ath-table .pos{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:#FAF5F2;font-weight:800;font-size:11px;}
  .ath-table .team-name{display:flex;align-items:center;gap:6px;}
  .ath-view-full{margin-top:10px;width:100%;padding:8px;border-radius:10px;background:#FAF5F2;border:1px solid var(--border);font-weight:700;font-size:11px;color:var(--ink-soft);cursor:pointer;}
  .ath-view-full:hover{background:#fff;color:var(--ink);}

  .ath-cal-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;}
  .ath-cal-tab{padding:6px 12px;border-radius:99px;background:#fff;border:1px solid var(--border);font-size:11px;font-weight:800;color:var(--ink-soft);cursor:pointer;}
  .ath-cal-tab.active{background:var(--ink);color:#fff;border-color:var(--ink);}
  .ath-cal-filters{display:flex;gap:6px;margin-bottom:10px;}
  .ath-cal-filter{padding:4px 10px;border-radius:99px;background:transparent;border:1px dashed var(--border);font-size:10px;font-weight:700;color:var(--ink-soft);cursor:pointer;}
  .ath-cal-filter.active{background:#FAF5F2;color:var(--ink);border-style:solid;}

  .ath-match{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fff;border:1px solid var(--border);border-radius:12px;margin-bottom:6px;box-shadow:var(--shadow);}
  .ath-match.upcoming{border-left:3px solid #B59FE0;}
  .ath-match.won{border-left:3px solid #88D4A3;}
  .ath-match.lost{border-left:3px solid #E08FA5;}
  .ath-match.drew{border-left:3px solid #F4B996;}
  .ath-match-date{flex:0 0 60px;font-size:10px;font-weight:800;color:var(--ink-soft);text-align:center;line-height:1.3;}
  .ath-match-date .d{display:block;font-size:18px;color:var(--ink);font-weight:800;}
  .ath-match-body{flex:1;min-width:0;}
  .ath-match-teams{font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .ath-match-meta{font-size:10px;color:var(--ink-soft);font-weight:700;margin-top:2px;}
  .ath-match-score{flex:0 0 auto;font-size:14px;font-weight:800;color:var(--ink);background:#FAF5F2;padding:4px 10px;border-radius:8px;min-width:46px;text-align:center;}
  .ath-match-score.upcoming{background:#F1ECF8;color:var(--ink-soft);font-size:11px;}
  .ath-updated-row{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:-6px 0 12px;font-size:11px;color:var(--ink-soft);font-weight:700;}
  .ath-refresh{width:26px;height:26px;border-radius:50%;background:#fff;border:1px solid var(--border);color:var(--ink-soft);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);transition:transform .2s;}
  .ath-refresh:hover{transform:rotate(180deg);background:#FAF5F2;color:var(--ink);}
  .ath-refresh:disabled{opacity:0.5;cursor:not-allowed;}

  /* ============ GARDEN — Virtual habit garden ============ */
  .garden-banner{position:relative;column-span:all;-webkit-column-span:all;width:100%;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow);margin-bottom:14px;cursor:pointer;}
  .garden-banner-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;background:#FFFFFFAA;backdrop-filter:blur(6px);border-bottom:1px solid var(--border);}
  .garden-banner-title{font-size:13px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:6px;}
  .garden-banner-meta{font-size:11px;font-weight:700;color:var(--ink-soft);}
  .garden-scene{position:relative;height:200px;background:linear-gradient(180deg,#FFF8E7 0%,#FDF3F4 50%,#F1ECF9 100%);overflow:hidden;}
  @media (max-width:560px){.garden-scene{height:160px;}}
  .garden-ground{position:absolute;left:0;right:0;bottom:0;height:42px;background:linear-gradient(180deg,#D4F4DD 0%,#B8E5C7 100%);border-top:1px solid #A6D8B8;}
  .garden-el{position:absolute;line-height:1;user-select:none;pointer-events:none;display:inline-block;will-change:transform;}
  .garden-progress-row{padding:8px 14px;background:#FFFFFFAA;backdrop-filter:blur(6px);border-top:1px solid var(--border);display:flex;align-items:center;gap:10px;}
  .garden-progress{flex:1;height:7px;background:#F0E8E3;border-radius:99px;overflow:hidden;}
  .garden-progress-fill{height:100%;background:linear-gradient(90deg,#F4A6B8,#E0D4F7,#88D4A3);border-radius:99px;transition:width .8s ease;}
  .garden-progress-msg{font-size:11px;font-weight:700;color:var(--ink-soft);font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%;}

  /* Garden element animations */
  @keyframes gdSway{0%,100%{transform:rotate(-2deg);}50%{transform:rotate(2deg);}}
  @keyframes gdSwayLong{0%,100%{transform:rotate(-1deg);}50%{transform:rotate(1deg);}}
  @keyframes gdBreathe{0%,100%{transform:scale(1) rotate(0deg);}50%{transform:scale(0.97) rotate(-1deg);}}
  @keyframes gdButterfly{0%{transform:translate(0,0) rotate(-3deg);opacity:0;}10%{opacity:1;}50%{transform:translate(60vw, -10px) rotate(2deg);}90%{opacity:1;}100%{transform:translate(110vw, 0) rotate(-2deg);opacity:0;}}
  @keyframes gdBee{0%,100%{transform:translate(0,0);}50%{transform:translate(10px,-6px);}}
  @keyframes gdSparkle{0%,100%{opacity:0.3;transform:scale(0.8);}50%{opacity:1;transform:scale(1.1);}}
  @keyframes gdFirefly{0%,100%{opacity:0.4;}50%{opacity:1;}}
  .gd-sway{animation:gdSway 3.5s ease-in-out infinite;transform-origin:bottom center;}
  .gd-sway-long{animation:gdSwayLong 5.5s ease-in-out infinite;transform-origin:bottom center;}
  .gd-breathe{animation:gdBreathe 4s ease-in-out infinite;transform-origin:bottom center;}
  .gd-butterfly{animation:gdButterfly 14s linear infinite;}
  .gd-bee{animation:gdBee 2s ease-in-out infinite;}
  .gd-sparkle{animation:gdSparkle 2.5s ease-in-out infinite;}
  .gd-firefly{animation:gdFirefly 2.8s ease-in-out infinite;}
  @media (prefers-reduced-motion: reduce){
    .gd-sway,.gd-sway-long,.gd-breathe,.gd-butterfly,.gd-bee,.gd-sparkle,.gd-firefly{animation:none;}
  }

  /* Sleep states */
  .garden-scene.gd-sleepy .garden-el{animation-duration:7s;filter:saturate(0.85);}
  .garden-scene.gd-hibernating{filter:saturate(0.7) brightness(0.95);}
  .garden-scene.gd-hibernating .garden-el{animation-duration:10s;}
  .garden-scene.gd-deep_sleep{background:linear-gradient(180deg,#2D2840 0%,#3D365A 60%,#4A3C66 100%);}
  .garden-scene.gd-deep_sleep .garden-ground{background:linear-gradient(180deg,#3F4F47 0%,#2F3D38 100%);border-top-color:#2F3D38;}
  .garden-scene.gd-deep_sleep .garden-el{filter:brightness(0.7);animation-duration:12s;}
  .garden-scene.gd-deep_sleep .gd-moon{filter:none;opacity:1;}

  /* Garden mini card (Today widget) */
  .widget.garden{background:linear-gradient(135deg,#F1ECF9 0%,#FFF1F2 100%);cursor:pointer;overflow:hidden;position:relative;}
  .widget.garden .label{position:relative;z-index:2;}
  .widget.garden .value{position:relative;z-index:2;}
  .widget.garden .sub{position:relative;z-index:2;}
  .widget.garden .gd-mini-scene{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;gap:4px;padding-bottom:6px;font-size:24px;line-height:1;opacity:0.7;pointer-events:none;}
  .widget.garden .gd-mini-scene .gd-mini-el{animation:gdSway 4s ease-in-out infinite;transform-origin:bottom center;display:inline-block;}

  /* Garden modal */
  .gd-modal-hero{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:12px;}
  .gd-modal-hero .lvl-emoji{font-size:54px;line-height:1;animation:gdBreathe 3.5s ease-in-out infinite;transform-origin:bottom center;}
  .gd-modal-hero .lvl-name{font-size:18px;font-weight:800;color:var(--ink);}
  .gd-modal-stat{padding:10px 12px;background:#FAF5F2;border-radius:12px;margin-bottom:8px;font-size:12px;color:var(--ink-soft);}
  .gd-modal-stat .v{font-weight:800;color:var(--ink);}
  .gd-modal-msg{padding:12px 14px;background:linear-gradient(135deg,#FFE5EC,#EDE4FB);border-radius:14px;font-size:13px;font-style:italic;color:var(--ink);text-align:center;margin-top:10px;font-weight:700;}

  /* Birthday balloons overlay */
  .gd-balloons{position:absolute;inset:0;pointer-events:none;overflow:hidden;}
  .gd-balloons span{position:absolute;font-size:22px;animation:gdBalloon 8s linear infinite;}
  @keyframes gdBalloon{from{transform:translateY(120%);}to{transform:translateY(-120%);}}

  /* ============ HABITS — Gamified redesign ============ */
  .hb-wrap{column-span:all;-webkit-column-span:all;width:100%;}
  .hb-banner{background:linear-gradient(135deg,#FFE5EC 0%,#EDE4FB 100%);border-radius:var(--radius-md);padding:18px 18px;display:flex;flex-wrap:wrap;gap:16px;align-items:center;box-shadow:var(--shadow);border:1px solid var(--border);margin-bottom:18px;}
  .hb-ring{flex:0 0 auto;width:120px;height:120px;position:relative;}
  .hb-ring svg{width:100%;height:100%;transform:rotate(-90deg);}
  .hb-ring .bg-c{stroke:#FFFFFFB0;stroke-width:10;fill:none;}
  .hb-ring .fg-c{stroke:url(#hbGrad);stroke-width:10;fill:none;stroke-linecap:round;transition:stroke-dashoffset .6s ease;}
  .hb-ring-inner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}
  .hb-ring-val{font-size:24px;font-weight:800;color:var(--ink);line-height:1;}
  .hb-ring-lbl{font-size:10px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;margin-top:2px;}
  .hb-stats{flex:1;min-width:160px;display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  @media (min-width:560px){.hb-stats{grid-template-columns:1fr 1fr 1fr;}}
  .hb-stat{background:#FFFFFFB0;backdrop-filter:blur(6px);padding:8px 10px;border-radius:12px;border:1px solid var(--border);}
  .hb-stat .v{font-size:15px;font-weight:800;color:var(--ink);line-height:1.1;display:flex;align-items:center;gap:5px;}
  .hb-stat .l{font-size:9px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;margin-top:2px;}
  .hb-level-row{flex:1 0 100%;display:flex;align-items:center;gap:10px;background:#FFFFFFB0;backdrop-filter:blur(6px);padding:10px 12px;border-radius:12px;border:1px solid var(--border);}
  .hb-level-badge{font-size:13px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:6px;white-space:nowrap;}
  .hb-level-bar{flex:1;height:6px;background:#F0E8E3;border-radius:99px;overflow:hidden;}
  .hb-level-bar-fill{height:100%;background:linear-gradient(90deg,#F4A6B8,#B59FE0);border-radius:99px;transition:width .6s ease;}
  .hb-level-next{font-size:11px;font-weight:700;color:var(--ink-soft);white-space:nowrap;}
  .hb-view-ach{background:#FFFFFFB0;backdrop-filter:blur(6px);border:1px solid var(--border);font-weight:700;font-size:11px;padding:8px 12px;border-radius:99px;color:var(--ink);cursor:pointer;}
  .hb-view-ach:hover{background:#fff;}
  .hb-motiv{flex:1 0 100%;text-align:center;font-size:12px;font-style:italic;color:var(--ink-soft);font-weight:700;}

  .hb-grid{column-span:all;-webkit-column-span:all;width:100%;display:grid;grid-template-columns:1fr;gap:12px;}
  @media (min-width:520px){.hb-grid{grid-template-columns:1fr 1fr;}}
  @media (min-width:900px){.hb-grid{grid-template-columns:1fr 1fr 1fr;}}
  .hb-card{background:#fff;border-radius:var(--radius-md);padding:14px;border:1px solid var(--border);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px;cursor:pointer;transition:transform .15s ease, box-shadow .15s ease;break-inside:avoid;min-width:0;}
  .hb-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(120,90,150,0.15);}
  .hb-card-head{display:flex;align-items:center;justify-content:space-between;gap:6px;}
  .hb-card-title{font-size:13px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:6px;flex:1;min-width:0;}
  .hb-card-title .emo{font-size:18px;flex-shrink:0;}
  .hb-card-title .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hb-menu{background:transparent;border:none;color:var(--ink-muted);font-size:18px;cursor:pointer;width:36px;height:36px;border-radius:6px;line-height:1;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .hb-menu:hover{background:#FAF5F2;color:var(--ink);}
  .hb-check{display:flex;justify-content:center;padding:6px 0 4px;}
  .hb-check button{width:64px;height:64px;border-radius:50%;border:2.5px solid #E0D4C8;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:30px;color:transparent;transition:all .2s cubic-bezier(0.34, 1.56, 0.64, 1);}
  .hb-check button:hover{transform:scale(1.05);border-color:var(--lavender-deep);}
  .hb-check button.done{background:linear-gradient(135deg,#88D4A3,#B5E5C5);border-color:#88D4A3;color:#fff;animation:hbPop .35s cubic-bezier(0.34, 1.56, 0.64, 1);}
  @keyframes hbPop{0%{transform:scale(1);}50%{transform:scale(1.18);}100%{transform:scale(1);}}
  .hb-streak{text-align:center;font-size:14px;font-weight:800;color:var(--ink);}
  .hb-streak.zero{color:var(--ink-soft);font-style:italic;font-weight:700;font-size:12px;}
  .hb-streak.jump{animation:hbStreakJump .5s ease;}
  @keyframes hbStreakJump{0%,100%{transform:translateY(0);}40%{transform:translateY(-6px) scale(1.15);}}
  .hb-mini{display:grid;grid-template-columns:repeat(14,1fr);gap:2px;margin-top:4px;}
  .hb-mini-cell{height:14px;border-radius:3px;background:#F3EDE7;}
  .hb-mini-cell.done{background:linear-gradient(135deg,#88D4A3,#A8E0BA);}
  .hb-mini-cell.today{box-shadow:inset 0 0 0 1.5px var(--lavender-deep);}

  .bday-edit-list{display:flex;flex-direction:column;gap:6px;max-height:60vh;overflow-y:auto;margin-top:4px;}
  .bday-edit-row{display:flex;align-items:center;gap:10px;background:rgba(0,0,0,0.03);border:1px solid var(--border);border-radius:12px;padding:9px 12px;cursor:pointer;text-align:left;width:100%;font-family:inherit;}
  .bday-edit-row:hover{background:var(--lavender);transform:translateY(-1px);}
  .bday-edit-row .nm{flex:1;min-width:0;font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .bday-edit-row .dt{font-size:11px;color:var(--ink-soft);font-weight:700;}
  .bday-edit-row .ch{font-size:16px;color:var(--ink-muted);margin-left:2px;}

  .bday-month-header{font-size:11px;font-weight:800;letter-spacing:0.6px;text-transform:uppercase;color:var(--ink-soft);margin:14px 4px 6px;padding-bottom:5px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;}
  .bday-month-header.current{color:var(--lavender-deep);}
  .bday-month-header.current::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--lavender-deep);}

  /* ===== BIRTHDAYS — columns of 10 ===== */
  .bday-section{column-span:all;-webkit-column-span:all;}
  .bday-cols{display:grid;grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));gap:14px;column-span:all;-webkit-column-span:all;margin-top:6px;align-items:start;}
  .bday-col{display:flex;flex-direction:column;gap:8px;min-width:0;}
  .bday-col > .bday-today{margin:0;}
  .bday-col > .bday-month-header{margin:8px 4px 2px;padding-bottom:4px;}
  .bday-col > .bday-month-header:first-child{margin-top:0;}

  .bday-card{display:flex;align-items:center;gap:11px;padding:11px 12px;background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);transition:transform .15s ease,box-shadow .15s ease;min-width:0;position:relative;}
  .bday-card.next{background:linear-gradient(135deg,#FFF6E5,#FFE9F0);border:2px solid var(--pink-deep);box-shadow:0 6px 18px rgba(244,166,184,0.35);}
  .bday-card.next .b-days{background:var(--pink-deep);color:#fff;border-radius:12px;padding:4px 8px;}
  .bday-card.next .b-days .l{color:#fff;opacity:.85;}
  .b-next-badge{position:absolute;top:-9px;left:12px;font-size:14px;line-height:1;filter:drop-shadow(0 2px 3px rgba(0,0,0,0.15));}
  .bday-card:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(180,140,180,0.16);}
  .bday-card .b-ico{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#FFE5EC,#FFD6E0);display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0;}
  .bday-card .b-body{flex:1;min-width:0;}
  .bday-card .b-name{font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .bday-card .b-meta{font-size:10px;color:var(--ink-soft);margin-top:2px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .bday-card .b-days{text-align:right;flex-shrink:0;line-height:1;}
  .bday-card .b-days .n{font-size:18px;font-weight:900;color:var(--ink);}
  .bday-card .b-days .l{font-size:9px;font-weight:700;color:var(--ink-soft);text-transform:lowercase;margin-top:2px;}
  .bday-card .b-days.soon .n{color:var(--lavender-deep);}

  /* Today's birthday banner (full width across grid) */
  .bday-today{
    background:linear-gradient(135deg,#FFE5EC 0%,#FFD6E0 40%,#EDE4FB 100%);
    border:2px solid #F4A6B8;
    box-shadow:0 6px 22px rgba(244,166,184,0.35);
    border-radius:18px;
    padding:14px 14px;
    display:flex;align-items:center;gap:14px;
    position:relative;overflow:hidden;
    animation:bday-pulse 2.5s ease-in-out infinite;
  }
  .bday-today .bt-ico{
    width:48px;height:48px;border-radius:14px;
    background:linear-gradient(135deg,#FFC8D6,#F4A6B8);
    display:flex;align-items:center;justify-content:center;font-size:24px;
    flex-shrink:0;
    animation:bday-wiggle 1.4s ease-in-out infinite;
  }
  .bday-today .bt-body{flex:1;min-width:0;}
  .bday-today .bt-badge{display:inline-block;background:linear-gradient(90deg,#F4A6B8,#B59FE0);color:#fff;font-weight:800;font-size:10px;letter-spacing:1px;padding:3px 10px;border-radius:99px;margin-bottom:5px;box-shadow:0 2px 8px rgba(244,166,184,0.5);}
  .bday-today .bt-name{font-size:14px;font-weight:800;color:#8B3A52;}
  .bday-today .bt-meta{font-size:11px;color:#8B3A52;margin-top:2px;}
  .bday-today .bt-confetti{position:absolute;font-size:18px;pointer-events:none;opacity:0.6;animation:bday-float 3s ease-in-out infinite;top:6px;right:60px;}
  .bday-today .bt-confetti.c2{top:auto;bottom:6px;right:90px;font-size:14px;animation-delay:0.8s;animation-duration:3.5s;}
  .bday-today .bt-confetti.c3{top:50%;right:18px;font-size:13px;animation-delay:1.5s;animation-duration:4s;}
  .bday-today .bt-right{font-size:28px;}
  .card-title{position:relative;}
  .card-go-btn{margin-left:auto;background:#FAF5F2;border:1px solid var(--border);color:var(--ink-soft);width:26px;height:26px;border-radius:50%;font-size:14px;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;transition:background .15s, color .15s, transform .15s;}
  .card-go-btn:hover{background:var(--lavender-deep);color:#fff;transform:translateX(2px);}
  .hb-add-row{column-span:all;-webkit-column-span:all;display:flex;justify-content:flex-end;margin-bottom:10px;}
  .hb-add-small{background:#FFFFFFB0;backdrop-filter:blur(6px);border:1px dashed var(--border);color:var(--ink-soft);font-weight:800;font-size:12px;padding:7px 14px;border-radius:99px;cursor:pointer;letter-spacing:0.2px;transition:background .15s, color .15s, border-color .15s;}
  .hb-add-small:hover{background:#fff;color:var(--ink);border-color:var(--lavender-deep);}

  /* Habit menu popover */
  .hb-popover{position:fixed;background:#fff;border-radius:10px;box-shadow:0 8px 20px rgba(0,0,0,0.15);border:1px solid var(--border);padding:6px;z-index:30;min-width:130px;}
  .hb-popover button{display:block;width:100%;background:transparent;border:none;text-align:left;padding:8px 10px;font-size:12px;font-weight:700;color:var(--ink);cursor:pointer;border-radius:8px;}
  .hb-popover button:hover{background:#FAF5F2;}
  .hb-popover button.danger{color:#B23B5A;}

  /* Achievements modal */
  .ach-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;}
  @media (min-width:520px){.ach-grid{grid-template-columns:1fr 1fr 1fr;}}
  .ach-card{background:#FAF5F2;border-radius:12px;padding:12px;text-align:center;border:1px solid var(--border);}
  .ach-card.unlocked{background:linear-gradient(135deg,#FFE5EC,#EDE4FB);border-color:#E0BFD8;}
  .ach-card .badge{font-size:28px;line-height:1;margin-bottom:6px;}
  .ach-card.locked .badge{filter:grayscale(1);opacity:0.4;}
  .ach-card .name{font-size:12px;font-weight:800;color:var(--ink);margin-bottom:2px;}
  .ach-card .desc{font-size:10px;color:var(--ink-soft);line-height:1.3;}
  .ach-card .when{font-size:9px;color:var(--ink-soft);margin-top:4px;font-weight:700;}
  .ach-toast{position:fixed;left:50%;top:90px;transform:translateX(-50%) translateY(-30px);background:linear-gradient(135deg,#FFE5EC,#EDE4FB);color:var(--ink);padding:12px 18px;border-radius:14px;font-weight:800;font-size:13px;box-shadow:0 10px 30px rgba(180,140,180,0.35);z-index:2000;opacity:0;transition:opacity .3s, transform .3s;display:flex;align-items:center;gap:10px;max-width:300px;}
  .ach-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
  .ach-toast .badge{font-size:24px;}
  .ach-toast .sub{font-size:10px;font-weight:700;color:var(--ink-soft);margin-top:1px;}

  /* Habit detail modal */
  .hb-detail-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:10px 0 14px;}
  .hb-detail-stat{background:#FAF5F2;padding:10px 8px;border-radius:10px;text-align:center;}
  .hb-detail-stat .v{font-size:18px;font-weight:800;color:var(--ink);}
  .hb-detail-stat .l{font-size:9px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.3px;margin-top:2px;}
  .hb-year-grid{display:grid;grid-template-columns:repeat(53, 1fr);gap:2px;}
  .hb-year-grid .cell{aspect-ratio:1;border-radius:2px;background:#F3EDE7;cursor:pointer;transition:background .15s;}
  .hb-year-grid .cell.done{background:linear-gradient(135deg,#88D4A3,#A8E0BA);}
  .hb-year-grid .cell:hover{box-shadow:inset 0 0 0 1.5px var(--lavender-deep);}
  .hb-year-grid .cell.today{box-shadow:inset 0 0 0 1.5px var(--ink);}

  /* ===== Compact task modal form ===== */
  .task-modal-form{display:flex;flex-direction:column;gap:8px;}
  .task-modal-form label{font-size:10px;font-weight:800;letter-spacing:0.4px;color:var(--ink-soft);text-transform:uppercase;display:block;margin-bottom:3px;}
  .task-modal-form .field{margin:0;}
  .task-modal-form .field input,
  .task-modal-form .field select,
  .task-modal-form .field textarea{padding:8px 10px;border-radius:10px;font-size:13px;}
  .task-modal-form .row-2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .task-modal-form .row-full{width:100%;}
  .task-modal-form .field textarea{min-height:42px;}

/* ============ SYNC — indicador de estado (icono en sidebar) ============ */
.sync-chip{background:none;border:0;cursor:pointer;font-size:14px;line-height:1;padding:4px 6px;border-radius:99px;opacity:0.85;transition:transform .15s ease,opacity .15s ease;vertical-align:middle;}
.sync-chip:active{transform:scale(0.9);}
.sync-chip[data-state="syncing"]{animation:syncSpin 1.1s ease infinite;}
.sync-chip[data-state="error"],.sync-chip[data-state="offline"]{opacity:1;}
.sync-chip.sync-pulse{animation:syncPulse .6s ease;}
@keyframes syncSpin{0%{opacity:0.85;}50%{opacity:0.35;}100%{opacity:0.85;}}
@keyframes syncPulse{0%{transform:scale(1);}40%{transform:scale(1.35);}100%{transform:scale(1);}}
