@tailwind base;@tailwind components;@tailwind utilities;@layer base{:root{--lantern-600: #F4B43A;--lantern-500: #F8C75A;--lantern-200: #FFE6B0;--petal-600: #E86A8D;--petal-500: #F08CAA;--petal-100: #FFE3EC;--ink-900: #1B1B22;--ink-700: #3A3A4A;--ink-500: #6B6B7B;--cream-50: #FFF9F1;--cream-100: #fffefd;--mist-200: #E9E3FF;--mist-500: #8A7CFF;--success: #2FBF71;--warning: #F4B43A;--error: #E24A4A;--info: #3B82F6;--background: var(--cream-50);--card: var(--cream-100);--popover: var(--cream-100);--foreground: var(--ink-900);--muted-foreground: var(--ink-500);--primary: var(--lantern-600);--primary-foreground: var(--ink-900);--secondary: var(--petal-100);--secondary-foreground: var(--ink-900);--accent: var(--petal-600);--accent-foreground: #FFFFFF;--border: rgba(27, 27, 34, .1);--input: rgba(27, 27, 34, .14);--ring: var(--lantern-500);--destructive: var(--error);--destructive-foreground: #FFFFFF}body{@apply bg-background text-foreground;font-feature-settings:"rlig" 1,"calt" 1}}:root{--tf-color-pink: var(--petal-600);--tf-color-dark-brown: var(--ink-900);--tf-color-light-orange: var(--cream-50);--tf-color-card-bg: var(--cream-100);--tf-color-page-bg: var(--cream-50);--tf-color-text-main: var(--ink-900);--tf-color-text-muted: var(--ink-500);--tf-color-border-subtle: var(--border);--tf-color-pill-border: var(--border);--tf-shadow-soft: 0 8px 20px rgba(0, 0, 0, .06)}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background-color:var(--tf-color-page-bg);color:var(--tf-color-text-main)}.app-layout{display:flex;min-height:100vh;background-color:var(--tf-color-page-bg)}.app-layout__main{flex:1;padding:32px 40px;display:flex;flex-direction:column;gap:24px}.sidebar{width:80px;background-color:var(--tf-color-light-orange);border-right:1px solid var(--tf-color-border-subtle);display:flex;flex-direction:column;align-items:center;padding:24px 0;gap:20px}.sidebar__icon-button{width:44px;height:44px;border-radius:999px;border:none;background:transparent;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;transition:background-color .12s ease,box-shadow .12s ease,transform .12s ease;position:relative}.sidebar__icon-button:before{content:"";position:absolute;top:-2px;right:-2px;width:60%;height:60%;background:radial-gradient(circle at top right,rgba(248,199,90,.2),rgba(232,106,141,.15),transparent 70%);border-radius:0 12px 0 0;filter:blur(10px);opacity:0;pointer-events:none;z-index:1;transition:opacity .22s cubic-bezier(.2,.8,.2,1)}.sidebar__icon-button:hover{background-color:#ffffffb3;box-shadow:var(--tf-shadow-soft);transform:translateY(-1px)}.sidebar__icon-button:hover:before,.sidebar__icon-button:focus-visible:before{opacity:.18}.sidebar__icon-button:focus-visible:before{opacity:.24}@media (prefers-reduced-motion: reduce){.sidebar__icon-button:before{transition:opacity .16s cubic-bezier(.25,.46,.45,.94)}}.sidebar__icon-button--active{background-color:var(--tf-color-card-bg);box-shadow:var(--tf-shadow-soft)}.sidebar__icon{width:22px;height:22px;display:block}.sidebar__logo{padding:1rem 0;display:flex;justify-content:center}.sidebar__logo-icon{width:48px;height:48px}.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.dashboard-header__text-main{font-family:Quicksand,system-ui,-apple-system,sans-serif;font-size:22px;font-weight:600}.dashboard-header__text-sub{margin-top:4px;font-size:14px;color:var(--tf-color-text-muted)}.dashboard-header__actions{display:flex;gap:12px}.btn{font-family:inherit;font-size:14px;border-radius:.75rem;padding:8px 20px;border:none;cursor:pointer;transition:background-color .12s ease,box-shadow .12s ease,transform .12s ease;white-space:nowrap}.btn-primary{background-color:var(--lantern-600);color:var(--ink-900);position:relative;isolation:isolate;overflow:hidden}.btn-primary:before,.btn-primary:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .22s cubic-bezier(.2,.8,.2,1);z-index:-1;border-radius:inherit}.btn-primary:before{background:radial-gradient(circle at center,rgba(248,199,90,.3),transparent 70%)}.btn-primary:after{background:linear-gradient(135deg,var(--lantern-500) 0%,var(--petal-500) 50%,var(--lantern-500) 100%);background-size:200% 200%;filter:blur(18px);transform:scale(1.2)}.btn-primary:hover{background-color:var(--lantern-500);box-shadow:var(--tf-shadow-soft);transform:translateY(-1px)}.btn-primary:hover:before,.btn-primary:hover:after{opacity:.18}.btn-primary:hover:after{animation:ll-glow-drift .7s cubic-bezier(.2,.8,.2,1) infinite}.btn-primary:focus-visible:before,.btn-primary:focus-visible:after{opacity:.24}.btn-primary:focus-visible:after{animation:ll-glow-drift .7s cubic-bezier(.2,.8,.2,1) infinite}.btn-primary:active{opacity:.9}.btn-primary:active:before,.btn-primary:active:after{opacity:.126;transform:scale(1.05)}.btn-secondary{background-color:var(--cream-100);color:var(--ink-900);border:1px solid var(--border);position:relative;isolation:isolate;overflow:hidden}.btn-secondary:before,.btn-secondary:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .22s cubic-bezier(.2,.8,.2,1);z-index:-1;border-radius:inherit}.btn-secondary:before{background:radial-gradient(circle at center,rgba(248,199,90,.2),transparent 70%)}.btn-secondary:after{background:linear-gradient(135deg,var(--lantern-500) 0%,var(--petal-500) 50%,var(--lantern-500) 100%);background-size:200% 200%;filter:blur(18px);transform:scale(1.2)}.btn-secondary:hover{background-color:var(--cream-50);box-shadow:var(--tf-shadow-soft);transform:translateY(-1px)}.btn-secondary:hover:before,.btn-secondary:hover:after{opacity:.15}.btn-secondary:hover:after{animation:ll-glow-drift .7s cubic-bezier(.2,.8,.2,1) infinite}.btn-secondary:focus-visible:before,.btn-secondary:focus-visible:after{opacity:.22}.btn-secondary:focus-visible:after{animation:ll-glow-drift .7s cubic-bezier(.2,.8,.2,1) infinite}.btn-secondary:active{opacity:.9}.btn-secondary:active:before,.btn-secondary:active:after{opacity:.1;transform:scale(1.05)}@media (prefers-reduced-motion: reduce){.btn-primary:after,.btn-secondary:after{animation:none!important;background-position:50% 50%}.btn-primary:hover:after,.btn-primary:focus-visible:after,.btn-secondary:hover:after,.btn-secondary:focus-visible:after{animation:none!important}}.card{background-color:var(--tf-color-card-bg);border-radius:1rem;border:1px solid var(--tf-color-border-subtle);padding:32px 28px;box-shadow:var(--tf-shadow-soft);position:relative;transition:box-shadow .42s cubic-bezier(.2,.8,.2,1)}.card:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:inherit;background:radial-gradient(ellipse at center,rgba(248,199,90,.15),rgba(232,106,141,.1),transparent 70%);filter:blur(28px);opacity:0;pointer-events:none;z-index:-1;transition:opacity .42s cubic-bezier(.2,.8,.2,1)}.card:hover,.card:focus-within{box-shadow:0 12px 32px #00000014,0 0 0 1px #f8c75a1a}.card:hover:before,.card:focus-within:before{opacity:.18}@media (prefers-reduced-motion: reduce){.card:before{transition:opacity .16s cubic-bezier(.25,.46,.45,.94)}}.card__title{font-family:Quicksand,system-ui,-apple-system,sans-serif;text-align:center;font-size:20px;font-weight:600;margin:0 0 4px}.card__subtext{text-align:center;font-size:14px;color:var(--tf-color-text-muted);margin:0 0 24px}.dashboard-main{margin-top:24px}.card--dashboard{max-width:960px;margin:0 auto 40px;border-radius:1rem;border:1px solid var(--tf-color-border-subtle);box-shadow:var(--tf-shadow-soft);padding:32px 40px 40px;position:relative;transition:box-shadow .42s cubic-bezier(.2,.8,.2,1)}.card--dashboard:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:inherit;background:radial-gradient(ellipse at center,rgba(248,199,90,.15),rgba(232,106,141,.1),transparent 70%);filter:blur(28px);opacity:0;pointer-events:none;z-index:-1;transition:opacity .42s cubic-bezier(.2,.8,.2,1)}.card--dashboard:hover,.card--dashboard:focus-within{box-shadow:0 12px 32px #00000014,0 0 0 1px #f8c75a1a}.card--dashboard:hover:before,.card--dashboard:focus-within:before{opacity:.18}@media (prefers-reduced-motion: reduce){.card--dashboard:before{transition:opacity .16s cubic-bezier(.25,.46,.45,.94)}}.dashboard-card__section-separator{height:1px;background-color:var(--tf-color-border-subtle);margin:32px 0}.dashboard-section{text-align:center}.dashboard-section__title{font-family:Quicksand,system-ui,-apple-system,sans-serif;font-size:20px;font-weight:600;margin:0 0 4px}.dashboard-section__subtext{font-size:14px;color:var(--tf-color-text-muted);margin:0 0 24px}.dashboard-section__body{text-align:left}.birthday-list{list-style:none;margin:0;padding:0}.birthday-row{display:grid;grid-template-columns:minmax(120px,1.1fr) minmax(220px,2fr) auto;column-gap:24px;row-gap:4px;align-items:center;padding:10px 0;border-top:1px solid var(--tf-color-border-subtle);font-size:14px}.birthday-row:first-child{border-top:none}.birthday-row__col--name{font-weight:500}.birthday-row__col--description{color:var(--tf-color-text-muted)}.birthday-row__middle,.birthday-row__name{display:flex;justify-content:left;align-items:center;text-align:center}.birthday-row__middle{text-align:left;align-items:left}.birthday-row__col--cta{justify-self:flex-end;display:flex;align-items:center;gap:8px}.birthday-row .pill{font-size:12px;padding:5px 12px}.birthday-row .btn-primary--small{padding:6px 18px;font-size:13px}.dashboard-section__empty{display:flex;flex-direction:column;align-items:center;gap:16px}.dashboard-section__empty--compact{margin-top:16px}.dashboard-section__empty-text{font-size:14px;color:var(--tf-color-text-muted)}.dashboard-section__empty-icon{width:100px;max-width:50%;opacity:.5}.pill-with-edit{display:inline-flex;align-items:center;gap:8px}.pill{display:inline-flex;align-items:center;padding:6px 14px;border-radius:999px;border:1px solid var(--tf-color-pill-border);background-color:var(--petal-100);font-size:12px;font-weight:500;color:var(--ink-900)}.pill__icon{margin-right:6px}.pill-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.reminder-pill{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:999px;border:1px solid var(--border);background-color:var(--cream-100);font-size:14px;font-weight:500;color:var(--ink-900);cursor:pointer;transition:all .2s ease;outline:none}.reminder-pill:not(.reminder-pill--selected):not(:disabled):hover{background-color:var(--cream-50);border-color:var(--ink-500)}.reminder-pill:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.reminder-pill--selected{background-color:var(--petal-100);border-color:var(--petal-600);color:var(--ink-900);font-weight:600;box-shadow:0 2px 4px #e86a8d26}.reminder-pill--selected:hover:not(:disabled){background-color:var(--petal-100);border-color:var(--petal-600);box-shadow:0 3px 6px #e86a8d33}.reminder-pill:disabled,.reminder-pill--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.reminder-pill--derived{cursor:default}.reminder-pill--derived:disabled{cursor:default;pointer-events:none}.reminder-pill--muted:not(.reminder-pill--selected){opacity:.6}.reminder-pill--muted:not(.reminder-pill--selected):hover{opacity:.8}.reminder-pill--off.reminder-pill--selected{background-color:var(--ink-500);border-color:var(--ink-700);color:#fff}.reminder-pill--off.reminder-pill--selected:hover:not(:disabled){background-color:var(--ink-700);border-color:var(--ink-900)}.btn-primary--small{padding:6px 16px;font-size:13px}.icon-button{border:none;background:transparent;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.icon-button--ghost img{width:18px;height:18px}.page-card--settings{max-width:720px}.settings-section+.settings-section{margin-top:16px}.settings-section__title{font-size:16px;font-weight:600;margin:0 0 4px}.settings-section__description{margin:0 0 12px;font-size:14px;color:var(--tf-color-text-muted)}.settings-field{display:flex;flex-direction:column;gap:6px;max-width:260px}.settings-field__label{font-size:13px;font-weight:500}.settings-field__input{border-radius:.75rem;border:1px solid var(--input);background-color:var(--cream-100);padding:8px 10px;font-family:inherit;font-size:14px}.settings-toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer;margin-top:4px}.page-card--notes{max-width:820px}.notes-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.notes-list__item{border-radius:1rem;border:1px solid var(--tf-color-border-subtle);padding:10px 14px;background-color:var(--cream-100);cursor:pointer;transition:box-shadow .12s ease,transform .12s ease}.notes-list__item:hover{box-shadow:var(--tf-shadow-soft);transform:translateY(-1px)}.notes-list__header-row{display:flex;justify-content:space-between;align-items:center;gap:8px}.notes-list__contact-name{font-weight:600}.notes-list__date{font-size:12px;color:var(--tf-color-text-muted)}.notes-list__snippet{margin:4px 0 0;font-size:14px}.page-card--plan{max-width:960px}.plan-detail{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.9fr);gap:24px}.plan-detail__main{display:flex;flex-direction:column;gap:16px}.plan-field{display:flex;flex-direction:column;gap:6px}.plan-field__label{font-size:13px;font-weight:500}.plan-field__input,.plan-field__textarea{border-radius:.75rem;border:1px solid var(--input);background-color:var(--cream-100);padding:8px 10px;font-family:inherit;font-size:14px}.plan-field__textarea{resize:vertical}.plan-detail__aside{border-radius:1rem;border:1px solid var(--tf-color-border-subtle);background-color:var(--cream-100);padding:14px 14px 16px}.plan-detail__aside-title{margin:0 0 6px;font-size:14px;font-weight:600}.plan-detail__aside-empty{margin:4px 0 0;font-size:13px;color:var(--tf-color-text-muted)}.plan-ideas{display:flex;flex-wrap:wrap;gap:8px}.plan-ideas__chip{border-radius:999px;padding:4px 10px;font-size:12px;background-color:var(--petal-100);border:1px solid var(--tf-color-pill-border);color:var(--ink-900)}.plan-detail__actions{margin-top:20px;display:flex;justify-content:flex-end;gap:12px}.settings-section__hint{margin-top:8px;font-size:13px;color:var(--tf-color-text-muted)}.settings-toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer;margin-top:8px}.settings-toggle__input{position:absolute;opacity:0}.settings-toggle__pill{width:34px;height:18px;border-radius:999px;background-color:var(--ink-500);position:relative;flex-shrink:0}.settings-toggle__pill:before{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:999px;background-color:#fff;transition:transform .12s ease}.settings-toggle__input:checked+.settings-toggle__pill:before{transform:translate(16px)}.settings-toggle__input:checked+.settings-toggle__pill{background-color:var(--petal-500)}.settings-toggle__label{font-size:14px}.contact-detail__section--reminders{margin-top:24px}.contact-detail__reminders-description{margin:4px 0 10px;font-size:13px;color:var(--tf-color-text-muted)}.reminders-options{display:flex;flex-direction:column;gap:8px}.reminders-option{display:flex;align-items:flex-start;gap:8px;font-size:13px;cursor:pointer}.reminders-option input[type=radio]{margin-top:4px}.reminders-option__body{display:flex;flex-direction:column;gap:2px}.reminders-option__label{font-weight:600}.reminders-option__description{color:var(--tf-color-text-muted)}.chip-toggle-group{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.chip-toggle{border-radius:999px;padding:.25rem .9rem;border:1px solid var(--border);background:var(--cream-100);font-size:.85rem;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease,transform .05s ease}.chip-toggle:hover{transform:translateY(-1px);background:var(--petal-100)}.chip-toggle--active{background:var(--petal-600);color:#fff;border-color:var(--petal-600)}.chip-toggle__hint{margin-top:.75rem;font-size:.8rem;color:var(--ink-500)}.contact-detail{max-width:960px;margin:2.5rem auto 4rem;padding:2.5rem 3rem 3rem;background:var(--cream-100);border-radius:1rem;box-shadow:0 18px 40px #0000000a;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,sans-serif}.contact-detail__back{font-size:.875rem;border-radius:999px;padding:.35rem .9rem;border:1px solid var(--border);background:var(--cream-100);cursor:pointer;margin-bottom:1.5rem}.contact-detail__back:hover{background:var(--cream-50)}.contact-detail__name{font-family:Quicksand,system-ui,-apple-system,sans-serif;font-size:1.8rem;font-weight:700;color:var(--ink-900);margin:0 0 .25rem}.contact-detail__birthday{margin:0;font-size:.95rem;color:var(--ink-500)}.contact-section{margin-top:2rem}.contact-section+.contact-section{padding-top:1.75rem;border-top:1px solid var(--border)}.contact-section__title{font-family:Quicksand,system-ui,-apple-system,sans-serif;font-size:1.1rem;font-weight:600;margin-bottom:.5rem;color:var(--ink-900)}.contact-section__body{margin:0 0 .75rem;font-size:.95rem;color:var(--ink-900)}.contact-section__hint{margin-top:.75rem;font-size:.85rem;color:var(--ink-500)}.chip-group{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.chip{border-radius:999px;padding:.3rem .9rem;font-size:.85rem;border:1px solid var(--border);background:var(--cream-100);color:var(--ink-900);cursor:pointer}.chip:hover{background:var(--cream-50)}.chip--active{background:var(--petal-100);border-color:var(--petal-600);color:var(--ink-900);box-shadow:0 0 0 1px #e86a8d4d}.contact-notes__input{width:100%;min-height:80px;border-radius:.75rem;border:1px solid var(--input);background:var(--cream-100);padding:.65rem .8rem;font-size:.95rem;resize:vertical;box-sizing:border-box}.contact-notes__input:focus{outline:none;border-color:var(--ring);box-shadow:0 0 0 2px #f8c75a33}.contact-notes__actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem}.btn.btn-secondary{background:var(--cream-100);color:var(--ink-900);border:1px solid var(--border)}.btn.btn-secondary:hover{background:var(--cream-50)}.contact-section--ideas p,.contact-section--suggestions p,.contact-section--history p{font-size:.95rem}.contact-detail{max-width:1120px;margin:0 auto;padding:2.5rem 2rem 4rem}.contact-detail__back{margin-bottom:1rem;font-size:.875rem}.contact-detail__header{margin-bottom:1.5rem}.contact-detail__name{font-size:1.5rem;font-weight:700;margin-bottom:.25rem}.contact-detail__birthday{font-size:.875rem;color:var(--color-text-muted)}.contact-detail__layout{display:flex;align-items:flex-start;gap:1.75rem}.contact-detail__primary{flex:2;display:flex;flex-direction:column;gap:1.25rem}.contact-detail__settings{flex:1;display:flex;flex-direction:column;gap:1rem}.contact-card{background:var(--cream-100);border-radius:1rem;box-shadow:0 8px 24px #00000008;border:1px solid var(--border);padding:1.25rem 1.5rem;position:relative;transition:box-shadow .42s cubic-bezier(.2,.8,.2,1)}.contact-card:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:inherit;background:radial-gradient(ellipse at center,rgba(248,199,90,.15),rgba(232,106,141,.1),transparent 70%);filter:blur(28px);opacity:0;pointer-events:none;z-index:-1;transition:opacity .42s cubic-bezier(.2,.8,.2,1)}.contact-card:hover,.contact-card:focus-within{box-shadow:0 12px 32px #00000014,0 0 0 1px #f8c75a1a}.contact-card:hover:before,.contact-card:focus-within:before{opacity:.18}@media (prefers-reduced-motion: reduce){.contact-card:before{transition:opacity .16s cubic-bezier(.25,.46,.45,.94)}}.contact-card h2{font-family:Quicksand,system-ui,-apple-system,sans-serif;font-size:1rem;font-weight:600;margin-bottom:.5rem}.contact-card__header-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem}.contact-card__columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem}.contact-card ul{margin:.75rem 0 0;padding-left:0;list-style:none}.contact-card li+li{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border)}.contact-card--notes textarea{width:100%;min-height:120px;border-radius:.75rem;border:1px solid var(--input);background:var(--cream-100);padding:.75rem .9rem;font-family:inherit;font-size:.95rem}.contact-card--notes .btn-row{margin-top:.75rem;display:flex;flex-wrap:wrap;gap:.5rem}.btn-ghost{border-radius:999px;border:1px solid var(--border);padding:.35rem .8rem;font-size:.8rem;background:var(--cream-100)}@media (max-width: 900px){.contact-detail__layout{flex-direction:column}.contact-detail__settings{order:-1}.contact-card__columns{grid-template-columns:minmax(0,1fr)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000002e;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--tf-color-light-orange, #fff);border-radius:1rem;padding:32px 40px 28px;width:min(820px,calc(100% - 48px));box-shadow:0 24px 60px #0000001f;display:flex;flex-direction:column;gap:24px;opacity:1!important;z-index:1001;position:relative}body.modal-open{overflow:hidden}.modal__header{position:relative;margin-bottom:8px}.modal__header--centered{text-align:center}.modal__title{font-family:Quicksand,system-ui,-apple-system,sans-serif;font-size:24px;line-height:1.3;font-weight:700;color:var(--ink-900);margin:0 0 8px}.modal__subtitle{margin:0;font-size:15px;color:var(--ink-500)}.icon-button.icon-button--floating{position:absolute;top:0;right:0;border:none;background:var(--petal-100);color:var(--ink-900);border-radius:999px;width:32px;height:32px;font-size:18px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.icon-button.icon-button--floating:hover{background:var(--petal-500)}.modal__body{margin-top:4px}.modal__body--stacked{display:flex;flex-direction:column;gap:16px}.modal__placeholder-card{border-radius:1rem;background:var(--cream-50);border:1px solid var(--border);padding:20px 24px;font-size:15px;color:var(--ink-500)}.modal__actions{margin-top:8px;display:flex;gap:12px}.modal__actions--right{justify-content:flex-end}.btn-primary{display:flex;align-items:center;background-color:var(--cream-100);border:2px solid var(--lantern-200);color:var(--ink-900);box-shadow:0 4px 10px #f4b43a4d}.btn-primary img{padding:0 4px}.btn-primary:hover{background-color:var(--lantern-200);box-shadow:0 6px 14px #f4b43a59}.btn-secondary{background-color:var(--cream-100);color:var(--ink-900);border-color:var(--border)}.btn-secondary:hover{background-color:var(--cream-50);border-color:var(--border)}@media (max-width: 640px){.modal{width:calc(100% - 32px);padding:24px 20px 20px;border-radius:1rem}.modal__title{font-size:20px}.modal__subtitle{font-size:14px}}.mobile-tab-bar{position:fixed;bottom:0;left:0;right:0;display:none;align-items:center;justify-content:space-around;background-color:var(--tf-color-light-orange);border-top:1px solid var(--tf-color-border-subtle);padding:8px 0;padding-bottom:calc(8px + env(safe-area-inset-bottom));z-index:100;box-shadow:0 -2px 8px #0000000a}.mobile-tab-bar__item{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:none;background:transparent;padding:8px 16px;cursor:pointer;transition:background-color .12s ease,transform .12s ease;border-radius:12px;position:relative}.mobile-tab-bar__item:before{content:"";position:absolute;top:-2px;right:-2px;width:60%;height:60%;background:radial-gradient(circle at top right,rgba(248,199,90,.2),rgba(232,106,141,.15),transparent 70%);border-radius:0 12px 0 0;filter:blur(10px);opacity:0;pointer-events:none;z-index:1;transition:opacity .22s cubic-bezier(.2,.8,.2,1)}.mobile-tab-bar__item:hover:before,.mobile-tab-bar__item:focus-visible:before{opacity:.18}.mobile-tab-bar__item:focus-visible:before{opacity:.24}@media (prefers-reduced-motion: reduce){.mobile-tab-bar__item:before{transition:opacity .16s cubic-bezier(.25,.46,.45,.94)}}.mobile-tab-bar__item:hover{background-color:#ffffff80}.mobile-tab-bar__item--active{background-color:var(--tf-color-card-bg)}.mobile-tab-bar__item--active:before{content:"";position:absolute;top:-2px;left:50%;transform:translate(-50%);width:32px;height:3px;background-color:var(--petal-600);border-radius:0 0 2px 2px}.mobile-tab-bar__item--primary{background-color:var(--petal-100);border:1px solid var(--petal-600);box-shadow:0 2px 4px #e86a8d26}.mobile-tab-bar__item--primary:hover{background-color:var(--petal-100);transform:translateY(-2px);box-shadow:0 4px 8px #e86a8d33}.mobile-tab-bar__icon{width:24px;height:24px;display:block}@media (max-width: 768px){.mobile-tab-bar{display:flex}.sidebar{display:none}.app-layout__main{padding:24px 20px;padding-bottom:calc(80px + env(safe-area-inset-bottom))}}@media (min-width: 769px){.mobile-tab-bar{display:none}.sidebar{display:flex}.contact-detail__mobile{display:none!important}.contact-detail__desktop{display:block!important}}@media (max-width: 768px){.contact-detail__mobile{display:block!important}.contact-detail__desktop{display:none!important}}.action-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:flex-end;justify-content:center;z-index:1000;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.action-sheet{background:var(--tf-color-light-orange);border-radius:20px 20px 0 0;width:100%;max-width:600px;max-height:80vh;padding:0 0 calc(20px + env(safe-area-inset-bottom));box-shadow:0 -4px 24px #00000026;animation:slideUp .3s ease;display:flex;flex-direction:column;overflow:hidden}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.action-sheet__handle{width:40px;height:4px;background-color:var(--ink-500);border-radius:2px;margin:12px auto 16px;opacity:.3}.action-sheet__header{display:flex;align-items:center;justify-content:space-between;padding:0 24px 16px;border-bottom:1px solid var(--tf-color-border-subtle);position:relative}.action-sheet__title{font-family:Quicksand,system-ui,-apple-system,sans-serif;font-size:20px;font-weight:600;color:var(--ink-900);margin:0}.action-sheet__close{position:absolute;top:0;right:24px;width:32px;height:32px;border:none;background:var(--petal-100);color:var(--ink-900);border-radius:999px;font-size:20px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .12s ease}.action-sheet__close:hover{background:var(--petal-500)}.action-sheet__body{padding:16px 24px;display:flex;flex-direction:column;gap:12px;overflow-y:auto}.action-sheet__action{display:flex;flex-direction:column;align-items:flex-start;padding:16px 20px;border:1px solid var(--tf-color-border-subtle);background:var(--cream-100);border-radius:12px;cursor:pointer;transition:background-color .12s ease,transform .12s ease,box-shadow .12s ease;text-align:left;width:100%}.action-sheet__action:hover{background:var(--cream-50);transform:translateY(-1px);box-shadow:var(--tf-shadow-soft)}.action-sheet__action:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.action-sheet__action-label{font-size:16px;font-weight:600;color:var(--ink-900);margin-bottom:4px}.action-sheet__action-description{font-size:14px;color:var(--ink-500)}.birthday-card-mobile{background-color:var(--cream-100);border-radius:1rem;border:1px solid var(--tf-color-border-subtle);padding:16px;box-shadow:var(--tf-shadow-soft);cursor:pointer;transition:box-shadow .42s cubic-bezier(.2,.8,.2,1),transform .12s ease;display:flex;flex-direction:column;gap:12px;margin-bottom:20px;position:relative}.birthday-card-mobile:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:inherit;background:radial-gradient(ellipse at center,rgba(248,199,90,.15),rgba(232,106,141,.1),transparent 70%);filter:blur(28px);opacity:0;pointer-events:none;z-index:-1;transition:opacity .42s cubic-bezier(.2,.8,.2,1)}.birthday-card-mobile:hover:before{opacity:.18}.birthday-card-mobile:hover{box-shadow:0 12px 28px #00000014,0 0 0 1px #f8c75a1a}@media (prefers-reduced-motion: reduce){.birthday-card-mobile:before{transition:opacity .16s cubic-bezier(.25,.46,.45,.94)}}.birthday-card-mobile:last-child{margin-bottom:0}.birthday-card-mobile:hover{box-shadow:0 12px 28px #00000014;transform:translateY(-1px)}.birthday-card-mobile__header{display:flex;flex-direction:column;gap:4px}.birthday-card-mobile__name-row{display:flex;justify-content:space-between;align-items:center;gap:8px}.birthday-card-mobile__name{font-size:16px;font-weight:600;color:var(--ink-900);margin:0}.birthday-card-mobile__status{font-size:12px;color:var(--success);font-weight:500}.birthday-card-mobile__date{font-size:13px;color:var(--ink-500)}.birthday-card-mobile__helper{font-size:14px;color:var(--ink-500);margin:0;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.birthday-card-mobile__action{margin-top:4px;display:flex;align-items:center}.birthday-card-mobile__button{margin-top:4px;min-height:44px;width:auto;display:inline-flex;align-items:center;justify-content:center}.birthday-card-mobile--upcoming{padding:14px 16px}.birthday-card-mobile--upcoming .birthday-card-mobile__header{gap:6px}.upcoming-toggle{width:100%;text-align:left;background:transparent;border:none;padding:0;cursor:pointer;transition:opacity .12s ease}.upcoming-toggle:hover{opacity:.8}.upcoming-toggle__header{display:flex;justify-content:space-between;align-items:center;gap:8px}.upcoming-toggle__chevron{font-size:18px;color:var(--ink-500);transition:transform .2s ease}@media (max-width: 768px){.card--dashboard{padding:20px 16px 24px;margin:0 auto 24px}.dashboard-card__section-separator{margin:24px 0}.dashboard-section__title{font-size:18px}.dashboard-section__subtext{font-size:13px;margin:0 0 20px}.birthday-list,.birthday-row,ul.birthday-list,li.birthday-row{display:none!important}.birthday-card-mobile{display:flex!important}.dashboard-section__body>ul.birthday-list{display:none!important}.dashboard-section>div.hidden.md\:block,.dashboard-section__header{display:none!important}}@media (min-width: 769px){.birthday-card-mobile,.upcoming-toggle{display:none!important}.dashboard-section--today>div.md\:hidden{display:none!important}}:root{--dur-xs: .16s;--dur-sm: .22s;--dur-md: .42s;--dur-lg: .7s;--dur-xl: 1.2s;--ease-soft: cubic-bezier(.2, .8, .2, 1);--ease-standard: cubic-bezier(.16, 1, .3, 1);--ease-fade: cubic-bezier(.25, .46, .45, .94);--glow-ambient-opacity: .08;--glow-hover-opacity: .18;--glow-focus-opacity: .24;--glow-blur-sm: 10px;--glow-blur-md: 18px;--glow-blur-lg: 28px;--glow-spread: 8px;--glow-a: var(--lantern-500);--glow-b: var(--petal-500);--glow-c: var(--mist-500)}@media (prefers-reduced-motion: reduce){:root{--dur-xs: .16s;--dur-sm: .16s;--dur-md: .16s;--dur-lg: .16s;--dur-xl: .16s}}.ll-transition-soft{transition:opacity var(--dur-md) var(--ease-soft),transform var(--dur-md) var(--ease-soft)}@media (prefers-reduced-motion: reduce){.ll-transition-soft{transition:opacity var(--dur-xs) var(--ease-fade);transform:none!important}}.btn-primary.ll-glow-cta,.btn-secondary.ll-glow-cta,.ll-glow-cta{position:relative!important;overflow:visible!important;isolation:auto!important}.btn-primary.ll-glow-cta:before{content:""!important;position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important;pointer-events:none!important;opacity:0!important;transition:opacity var(--dur-md) var(--ease-soft)!important;z-index:-1!important;border-radius:inherit!important;overflow:hidden!important}.btn-primary.ll-glow-cta:after{content:""!important;position:absolute!important;top:-12px!important;right:-12px!important;bottom:-12px!important;left:-12px!important;pointer-events:none!important;opacity:0!important;transition:opacity var(--dur-md) var(--ease-soft)!important;z-index:-1!important;border-radius:inherit!important}.btn-secondary.ll-glow-cta,.ll-glow-cta{overflow:visible}.btn-secondary.ll-glow-cta:before,.ll-glow-cta:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity var(--dur-md) var(--ease-soft);z-index:-1;border-radius:inherit;overflow:hidden}.btn-secondary.ll-glow-cta:after,.ll-glow-cta:after{content:"";position:absolute;top:-12px;right:-12px;bottom:-12px;left:-12px;pointer-events:none;opacity:0;transition:opacity var(--dur-md) var(--ease-soft);z-index:-1;border-radius:inherit}.btn-primary.ll-glow-cta:before{background:radial-gradient(circle at center,rgba(248,199,90,.3),transparent 70%)!important;border-radius:inherit!important}.btn-secondary.ll-glow-cta:before,.ll-glow-cta:before{background:radial-gradient(circle at center,rgba(248,199,90,.3),transparent 70%);border-radius:inherit}.btn-primary.ll-glow-cta:after{background:linear-gradient(135deg,var(--glow-a) 0%,var(--glow-b) 50%,var(--glow-a) 100%)!important;background-size:200% 200%!important;filter:blur(var(--glow-blur-md))!important;transform:none!important;border-radius:inherit!important;opacity:0!important}.btn-secondary.ll-glow-cta:after,.ll-glow-cta:after{background:linear-gradient(135deg,var(--glow-a) 0%,var(--glow-b) 50%,var(--glow-a) 100%);background-size:200% 200%;filter:blur(var(--glow-blur-md));transform:none;border-radius:inherit;opacity:0}.btn-primary.ll-glow-cta:hover:before,.btn-primary.ll-glow-cta:hover:after{opacity:var(--glow-hover-opacity)!important;transition:opacity var(--dur-md) var(--ease-soft)!important}.btn-primary.ll-glow-cta:hover:after{animation:ll-glow-drift .8s var(--ease-soft) infinite!important}.btn-secondary.ll-glow-cta:hover:before,.btn-secondary.ll-glow-cta:hover:after,.ll-glow-cta:hover:before,.ll-glow-cta:hover:after{opacity:var(--glow-hover-opacity);transition:opacity var(--dur-md) var(--ease-soft)}.btn-secondary.ll-glow-cta:hover:after,.ll-glow-cta:hover:after{animation:ll-glow-drift .8s var(--ease-soft) infinite}.btn-primary.ll-glow-cta:focus-visible:before,.btn-primary.ll-glow-cta:focus-visible:after{opacity:var(--glow-focus-opacity)!important;transition:opacity var(--dur-md) var(--ease-soft)!important}.btn-primary.ll-glow-cta:focus-visible:after{animation:ll-glow-drift .8s var(--ease-soft) infinite!important}.btn-secondary.ll-glow-cta:focus-visible:before,.btn-secondary.ll-glow-cta:focus-visible:after,.ll-glow-cta:focus-visible:before,.ll-glow-cta:focus-visible:after{opacity:var(--glow-focus-opacity);transition:opacity var(--dur-md) var(--ease-soft)}.btn-secondary.ll-glow-cta:focus-visible:after,.ll-glow-cta:focus-visible:after{animation:ll-glow-drift .8s var(--ease-soft) infinite}.btn-primary.ll-glow-cta:active{opacity:.9!important}.btn-primary.ll-glow-cta:active:before,.btn-primary.ll-glow-cta:active:after{opacity:calc(var(--glow-hover-opacity) * .7)!important;filter:blur(calc(var(--glow-blur-md) * .9))!important}.btn-secondary.ll-glow-cta:active,.ll-glow-cta:active{opacity:.9}.btn-secondary.ll-glow-cta:active:before,.btn-secondary.ll-glow-cta:active:after,.ll-glow-cta:active:before,.ll-glow-cta:active:after{opacity:calc(var(--glow-hover-opacity) * .7);filter:blur(calc(var(--glow-blur-md) * .9))}@keyframes ll-glow-drift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@media (prefers-reduced-motion: reduce){.btn-primary.ll-glow-cta:before,.btn-primary.ll-glow-cta:after,.btn-secondary.ll-glow-cta:before,.btn-secondary.ll-glow-cta:after,.ll-glow-cta:before,.ll-glow-cta:after{transition:opacity var(--dur-xs) var(--ease-fade)}.btn-primary.ll-glow-cta:after,.btn-secondary.ll-glow-cta:after,.ll-glow-cta:after{animation:none!important;background-position:50% 50%}.btn-primary.ll-glow-cta:hover:after,.btn-primary.ll-glow-cta:focus-visible:after,.btn-secondary.ll-glow-cta:hover:after,.btn-secondary.ll-glow-cta:focus-visible:after,.ll-glow-cta:hover:after,.ll-glow-cta:focus-visible:after{animation:none!important}}.contact-card.ll-glow-card,.birthday-card-mobile.ll-glow-card,.card.ll-glow-card,.ll-glow-card{position:relative;transition:box-shadow var(--dur-md) var(--ease-soft)}.contact-card.ll-glow-card:before,.birthday-card-mobile.ll-glow-card:before,.card.ll-glow-card:before,.ll-glow-card:before{content:"";position:absolute;inset:calc(-1 * var(--glow-spread));border-radius:inherit;background:radial-gradient(ellipse at center,rgba(248,199,90,.15),rgba(232,106,141,.1),transparent 70%);filter:blur(var(--glow-blur-lg));opacity:0;pointer-events:none;z-index:-1;transition:opacity var(--dur-md) var(--ease-soft),transform var(--dur-md) var(--ease-soft);transform:translate(0)}.contact-card.ll-glow-card:hover,.contact-card.ll-glow-card:focus-within,.birthday-card-mobile.ll-glow-card:hover,.birthday-card-mobile.ll-glow-card:focus-within,.card.ll-glow-card:hover,.card.ll-glow-card:focus-within,.ll-glow-card:hover,.ll-glow-card:focus-within{box-shadow:0 12px 32px #00000014,0 0 0 1px #f8c75a1a}.contact-card.ll-glow-card:hover:before,.contact-card.ll-glow-card:focus-within:before,.birthday-card-mobile.ll-glow-card:hover:before,.birthday-card-mobile.ll-glow-card:focus-within:before,.card.ll-glow-card:hover:before,.card.ll-glow-card:focus-within:before,.ll-glow-card:hover:before,.ll-glow-card:focus-within:before{opacity:var(--glow-hover-opacity);transform:translateY(2px)}@media (prefers-reduced-motion: reduce){.contact-card.ll-glow-card:before,.birthday-card-mobile.ll-glow-card:before,.card.ll-glow-card:before,.ll-glow-card:before{transition:opacity var(--dur-xs) var(--ease-fade)}}.ll-nav-corner-glow{position:relative}.ll-nav-corner-glow:before{content:"";position:absolute;top:-2px;right:-2px;width:60%;height:60%;background:radial-gradient(circle at top right,rgba(248,199,90,.2),rgba(232,106,141,.15),transparent 70%);border-radius:0 12px 0 0;filter:blur(var(--glow-blur-sm));opacity:0;pointer-events:none;z-index:1;transition:opacity var(--dur-sm) var(--ease-soft)}.ll-nav-corner-glow:hover:before,.ll-nav-corner-glow:focus-visible:before{opacity:var(--glow-hover-opacity)}.ll-nav-corner-glow:focus-visible:before{opacity:var(--glow-focus-opacity)}@media (prefers-reduced-motion: reduce){.ll-nav-corner-glow:before{transition:opacity var(--dur-xs) var(--ease-fade)}}.ll-loader-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#fff9f1;pointer-events:none;z-index:9999;display:flex;align-items:center;justify-content:center;opacity:0;animation:ll-loader-fade-in var(--dur-sm) var(--ease-fade) forwards}.ll-loader-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;font-family:Quicksand,system-ui,-apple-system,sans-serif;font-size:18px;font-weight:500;color:var(--ink-700);opacity:0;letter-spacing:.02em;animation:ll-loader-message-fade var(--dur-md) var(--ease-fade) forwards;animation-delay:.1s}.ll-loader-overlay.ll-loader-overlay--hidden{animation:ll-loader-fade-out var(--dur-md) var(--ease-soft) forwards}.ll-loader-blob{position:absolute;border-radius:50%;filter:blur(var(--glow-blur-lg));pointer-events:none}.ll-loader-blob--a{width:200px;height:200px;background:radial-gradient(circle,rgba(248,199,90,.4),rgba(232,106,141,.3),transparent 70%);top:20%;left:20%;opacity:.6;animation:ll-loader-drift-a var(--dur-xl) var(--ease-soft) infinite}.ll-loader-blob--b{width:150px;height:150px;background:radial-gradient(circle,rgba(232,106,141,.5),rgba(248,199,90,.3),transparent 70%);bottom:20%;right:20%;opacity:.7;animation:ll-loader-drift-b calc(var(--dur-xl) * 1.2) var(--ease-soft) infinite}@keyframes ll-loader-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ll-loader-message-fade{0%{opacity:0;transform:translate(-50%,calc(-50% + 4px))}to{opacity:.8;transform:translate(-50%,-50%)}}@keyframes ll-loader-fade-out{0%{opacity:1}to{opacity:0}}@keyframes ll-loader-drift-a{0%{transform:translate(0) scale(1);opacity:.6}33%{transform:translate(30px,-20px) scale(1.03);opacity:.65}66%{transform:translate(-20px,25px) scale(.98);opacity:.55}to{transform:translate(0) scale(1);opacity:.6}}@keyframes ll-loader-drift-b{0%{transform:translate(0) scale(1);opacity:.7}33%{transform:translate(-25px,30px) scale(.97);opacity:.75}66%{transform:translate(35px,-15px) scale(1.04);opacity:.65}to{transform:translate(0) scale(1);opacity:.7}}@media (prefers-reduced-motion: reduce){.ll-loader-blob--a,.ll-loader-blob--b{animation:none!important;transform:none!important}.ll-loader-overlay{animation:ll-loader-fade-in var(--dur-xs) var(--ease-fade) forwards}.ll-loader-overlay.ll-loader-overlay--hidden{animation:ll-loader-fade-out var(--dur-xs) var(--ease-fade) forwards}}
