:root{--ink-900:#1c2b33;--ink-800:#253943;--ink-700:#33505c;--paper-50:#f6f1e7;--paper-100:#fffdf9;--brass-500:#c9a15b;--brass-600:#a9813d;--wine-600:#8c3a3a;--wine-700:#732e2e;--sage-600:#6b7f5e;--text-ink:#26221d;--text-muted:#6b6459;--line:#ddd2ba;--shadow-soft:0 8px 24px #1c2b331f;--shadow-modal:0 24px 60px #14181b59;--font-display:"Frank Ruhl Libre", Georgia, "Times New Roman", serif;--font-body:"IBM Plex Sans", system-ui, -apple-system, sans-serif;--font-mono:"IBM Plex Mono", "SFMono-Regular", Consolas, monospace;--radius-m:10px;--radius-l:16px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper-50);color:var(--text-ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}:focus-visible{outline:2px solid var(--brass-500);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.app{flex-direction:column;min-height:100%;display:flex}.app-header{background:var(--ink-900);color:var(--paper-50);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:18px 28px;display:flex}.app-header__brand{align-items:center;gap:12px;display:flex}.app-header__mark{color:var(--brass-500);font-size:1.6rem;display:inline-block;transform:rotate(-8deg)}.app-header__title{font-family:var(--font-display);letter-spacing:.01em;margin:0;font-size:1.35rem;font-weight:700}.app-header__tagline{color:#f6f1e7a6;margin:2px 0 0;font-size:.8rem}.app-header__actions{flex-wrap:wrap;gap:10px;display:flex}.app-body{flex:1;grid-template-columns:96px 1fr;align-items:start;display:grid}.app-main{min-width:0;padding:28px clamp(16px,4vw,48px) 80px}.hero{background:linear-gradient(155deg, var(--ink-800), var(--ink-900) 70%);color:var(--paper-50);padding:40px clamp(16px,4vw,48px);position:relative}.hero:before{content:"";background:linear-gradient(90deg, var(--brass-500), transparent 70%);height:4px;position:absolute;inset:0 0 auto}.hero__ribbon{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--brass-500);margin:0 0 10px;font-size:.72rem}.hero__names{flex-direction:column;gap:2px;display:flex}.hero__headline{font-family:var(--font-display);margin:0;font-size:clamp(1.7rem,4vw,2.6rem);font-weight:700;line-height:1.15}.hero__age{font-family:var(--font-body);color:#f6f1e7b3;font-size:.55em;font-weight:400}.hero__sub{color:#f6f1e7bf;max-width:46ch}.hero__meta{font-family:var(--font-mono);color:#f6f1e7d9;align-items:center;gap:10px;margin-top:14px;font-size:.95rem;display:flex}.hero__dot{color:var(--brass-500)}.hero__countdown{color:var(--brass-500);font-weight:500}.hero--empty .hero__headline{font-size:clamp(1.4rem,3.2vw,1.9rem)}.month-tabs{background:var(--ink-900);flex-direction:column;align-self:start;gap:4px;height:100vh;padding:14px 0;display:flex;position:sticky;top:0;overflow-y:auto}.month-tab{color:#f6f1e78c;font-family:var(--font-mono);letter-spacing:.04em;cursor:pointer;background:0 0;border:none;border-radius:0 999px 999px 0;flex-direction:column;align-items:center;gap:2px;margin-right:10px;padding:9px 4px;font-size:.72rem;transition:background-color .15s,color .15s,margin-right .15s;display:flex}.month-tab:hover{background:var(--ink-700);color:var(--paper-50)}.month-tab--current{background:var(--brass-500);color:var(--ink-900);margin-right:0;font-weight:600}.month-tab__count{opacity:.75;font-size:.65rem}.search-input{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--paper-100);width:100%;max-width:420px;margin-bottom:24px;padding:10px 14px}.search-input::placeholder{color:var(--text-muted)}.birthday-book{flex-direction:column;gap:36px;display:flex}.month-section__title{font-family:var(--font-display);border-bottom:2px solid var(--brass-500);margin:0 0 14px;padding-bottom:8px;font-size:1.5rem;font-weight:700;display:inline-block}.birthday-rows{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.birthday-row{background:var(--paper-100);border:1px solid var(--line);border-radius:var(--radius-m);grid-template-columns:44px 1fr auto auto;align-items:center;gap:16px;padding:12px 16px;display:grid}.birthday-row--today{border-color:var(--brass-500);box-shadow:0 0 0 1px var(--brass-500)}.birthday-row__date{justify-content:center;align-items:center;display:flex}.birthday-row__day{font-family:var(--font-mono);color:var(--brass-600);font-size:1.3rem}.birthday-row__main{min-width:0}.birthday-row__name{margin:0;font-size:1.02rem;font-weight:600}.birthday-row__meta{color:var(--text-muted);margin:2px 0 0;font-size:.85rem}.birthday-row__notes{color:var(--text-muted);margin:4px 0 0;font-size:.85rem;font-style:italic}.birthday-row__countdown{font-family:var(--font-mono);color:var(--wine-600);white-space:nowrap;font-size:.85rem}.birthday-row__actions{gap:4px;display:flex}.empty-state{text-align:center;color:var(--text-muted);padding:64px 20px}.empty-state p{font-family:var(--font-display);color:var(--text-ink);margin:0 0 6px;font-size:1.2rem}.empty-state__sub{font-family:var(--font-body)!important;color:var(--text-muted)!important;font-size:.95rem!important}.button{border-radius:var(--radius-m);cursor:pointer;border:1px solid #0000;padding:9px 16px;font-weight:500;transition:background-color .15s,border-color .15s,transform 50ms}.button:active{transform:translateY(1px)}.button--primary{background:var(--brass-500);color:var(--ink-900)}.button--primary:hover{background:var(--brass-600)}.button--primary:disabled{background:var(--line);color:var(--text-muted);cursor:not-allowed}.button--ghost{color:inherit;background:0 0;border-color:#ffffff59}.app-header .button--ghost{color:var(--paper-50);border-color:#f6f1e759}.app-header .button--ghost:hover{background:#f6f1e71a}.modal .button--ghost{border-color:var(--line);color:var(--text-ink)}.modal .button--ghost:hover{background:var(--paper-50)}.button--danger{background:var(--wine-600);color:var(--paper-50)}.button--danger:hover{background:var(--wine-700)}.icon-button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.icon-button:hover{background:var(--paper-50);color:var(--text-ink)}.icon-button--danger:hover{color:var(--wine-600);background:#8c3a3a1a}.form{flex-direction:column;gap:16px;display:flex}.form__field{color:var(--text-muted);flex-direction:column;flex:1;gap:6px;font-size:.85rem;display:flex}.form__field input,.form__field select,.form__field textarea{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--paper-100);color:var(--text-ink);padding:9px 12px}.form__field--small{max-width:140px}.form__row{flex-wrap:wrap;gap:12px;display:flex}.form__error{color:var(--wine-600);margin:0;font-size:.85rem}.form__actions{justify-content:flex-end;gap:10px;margin-top:8px;display:flex}.checkbox-field{cursor:pointer;align-items:center;gap:8px;font-size:.88rem;display:flex}.confirm__message{color:var(--text-ink)}.modal-overlay{z-index:100;background:#14181b8c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--paper-100);border-radius:var(--radius-l);width:100%;max-width:480px;max-height:88vh;box-shadow:var(--shadow-modal);overflow-y:auto}.modal--wide{max-width:640px}.modal__header{border-bottom:1px solid var(--line);background:var(--paper-100);justify-content:space-between;align-items:center;padding:18px 24px;display:flex;position:sticky;top:0}.modal__header h2{font-family:var(--font-display);margin:0;font-size:1.2rem}.modal__body{padding:22px 24px 26px}.import,.export{flex-direction:column;gap:18px;display:flex}.import__intro{color:var(--text-muted);margin:0;font-size:.92rem}.import__detected{color:var(--sage-600);font-size:.82rem;font-family:var(--font-mono);margin:-8px 0 0}.file-drop{border:1.5px dashed var(--line);border-radius:var(--radius-m);text-align:center;cursor:pointer;color:var(--text-muted);padding:22px;transition:border-color .15s,color .15s}.file-drop:hover{border-color:var(--brass-500);color:var(--text-ink)}.file-drop input{display:none}.import__messages{color:var(--text-muted);margin:0;padding-left:20px;font-size:.85rem}.import__preview{border:1px solid var(--line);border-radius:var(--radius-m);max-height:320px;overflow-y:auto}.import__list{margin:0;padding:4px;list-style:none}.import__row{border-bottom:1px solid var(--line)}.import__row:last-child{border-bottom:none}.import__row .checkbox-field{align-items:flex-start;padding:10px 12px}.import__row-main{flex-direction:column;gap:2px;display:flex}.import__row-date{color:var(--text-muted);font-size:.82rem}.import__empty{color:var(--text-muted);font-size:.9rem}.badge{border-radius:999px;width:fit-content;padding:2px 8px;font-size:.72rem;display:inline-block}.badge--warning{color:var(--brass-600);background:#c9a15b33}.export__option{border:1px solid var(--line);border-radius:var(--radius-m);padding:16px 18px}.export__option h3{font-family:var(--font-display);margin:0 0 6px;font-size:1.05rem}.export__option p{color:var(--text-muted);margin:0 0 12px;font-size:.88rem}.export__controls{flex-wrap:wrap;align-items:center;gap:18px;margin-bottom:12px;display:flex}.export__empty{color:var(--wine-600);font-size:.9rem}.toast-stack{z-index:200;flex-direction:column;gap:8px;width:min(92vw,420px);display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{background:var(--ink-900);color:var(--paper-50);border-radius:var(--radius-m);box-shadow:var(--shadow-soft);border-left:3px solid var(--brass-500);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:.9rem;display:flex}.toast--success{border-left-color:var(--sage-600)}.toast--error{border-left-color:var(--wine-600)}.toast__dismiss{color:inherit;cursor:pointer;background:0 0;border:none;font-size:1.1rem;line-height:1}@media (width<=780px){.app-body{grid-template-columns:1fr}.month-tabs{z-index:10;flex-direction:row;height:auto;padding:10px 12px;position:sticky;top:0;overflow:auto hidden}.month-tab{border-radius:999px;flex-direction:row;flex-shrink:0;gap:6px;margin-right:0;padding:8px 12px}.month-tab--current{margin-right:0}.birthday-row{grid-template-columns:36px 1fr;grid-template-areas:"date main""date countdown"".actions"}.birthday-row__date{grid-area:date;align-self:start}.birthday-row__main{grid-area:main}.birthday-row__countdown{grid-area:countdown}.birthday-row__actions{grid-area:actions;justify-self:end}.app-header{padding:16px 18px}}
