:root{--bg: #f2f4f7;--surface: #ffffff;--border: #e4e8ed;--text: #18212f;--text-muted: #5a6478;--text-faint: #9aa3b4;--primary: #4f46e5;--primary-light: #eef2ff;--urgent: #e53535;--urgent-bg: #fff0f0;--warning: #d97706;--warning-bg: #fffbeb;--ok: #059669;--ok-bg: #f0fdf8;--radius: 16px;--radius-sm: 10px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;font-size:14px;line-height:1.5}header{background:transparent}.header-inner{max-width:520px;margin:0 auto;padding:18px 20px 12px;display:flex;align-items:center;justify-content:center}.logo{display:flex;align-items:center}main{max-width:520px;margin:0 auto;padding:0 14px 96px}.loading{color:var(--text-faint);font-size:13px;padding:40px 0;text-align:center}.event-list{display:flex;flex-direction:column;gap:7px}.month-divider{display:flex;align-items:center;gap:10px;padding:10px 2px;color:var(--text-faint);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em}.month-divider:before,.month-divider:after{content:"";flex:1;height:1px;background:var(--border)}.event-card{background:var(--surface);border-radius:var(--radius);box-shadow:0 1px 3px #0000000f,0 0 0 1px #0000000a;display:flex;align-items:center;gap:12px;padding:11px 13px;cursor:pointer;transition:transform .12s,box-shadow .15s;-webkit-tap-highlight-color:transparent;overflow:hidden}.event-card:active{transform:scale(.985)}.event-avatar{width:42px;height:42px;border-radius:50%;color:#fff;font-size:17px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:-.01em}.event-avatar--emoji{font-size:21px}.event-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.event-name{font-size:16px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.015em;line-height:1.2}.event-meta{font-size:12px;color:var(--text-faint);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-chips{display:flex;gap:4px;margin-top:7px;flex-wrap:wrap}.chip{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.chip svg{width:12px;height:12px}.chip--card{background:#ede9fe;color:#5b21b6}.chip--call{background:#dcfce7;color:#15803d}.chip--gift{background:#fce7f3;color:#be185d}.event-right{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0;gap:4px}.event-countdown{font-size:12px;font-weight:700;padding:3px 9px;border-radius:20px;white-space:nowrap}.event-countdown.urgent{background:var(--urgent-bg);color:var(--urgent)}.event-countdown.warning{background:var(--warning-bg);color:var(--warning)}.event-countdown.ok{background:var(--ok-bg);color:var(--ok)}.event-countdown.far{color:var(--text-faint);font-weight:600;font-size:12px}.event-age{font-size:11px;color:var(--text-faint);font-weight:500}.event-card--dim{background:transparent;box-shadow:none;border:1px solid var(--border);border-radius:12px;padding:8px 13px}.event-card--dim .event-body{flex-direction:row;align-items:center;gap:7px}.event-card--dim .event-name{font-size:14px;font-weight:500;color:var(--text-muted)}.event-card--dim .event-chips{margin-top:0;gap:3px}.event-card--dim .chip{width:20px;height:20px;border-radius:5px}.event-card--dim .chip svg{width:10px;height:10px}.event-card--dim .event-countdown{font-size:11px;padding:2px 7px}.section-heading{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);padding:4px 2px 8px}.home-view{display:flex;flex-direction:column;gap:8px;padding-top:4px}.home-section{display:flex;flex-direction:column;gap:8px}.home-section-label{font-size:13px;font-weight:700;color:var(--text-muted);letter-spacing:-.01em;padding:0 2px}.home-clear{font-size:14px;font-weight:500;color:var(--text-faint);padding:12px 2px;text-align:center}.home-quiet{font-size:13px;color:var(--text-faint);padding:4px 2px}.upcoming-list{background:var(--surface);border-radius:var(--radius);box-shadow:0 1px 3px #0000000f,0 0 0 1px #0000000a;overflow:hidden}.upcoming-row{display:flex;align-items:center;gap:10px;padding:10px 13px;cursor:pointer;border-bottom:1px solid var(--border);transition:background .1s;-webkit-tap-highlight-color:transparent}.upcoming-row:last-child{border-bottom:none}.upcoming-row:active{background:var(--bg)}.upcoming-avatar{width:30px;height:30px;border-radius:50%;color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.upcoming-avatar--emoji{font-size:16px}.upcoming-info{flex:1;min-width:0}.upcoming-name{font-size:14px;font-weight:600;color:var(--text);letter-spacing:-.01em}.upcoming-detail{font-size:13px;color:var(--text-faint);font-weight:400}.show-more-btn{width:100%;padding:10px 14px;background:none;border:1.5px dashed var(--border);border-radius:12px;color:var(--text-muted);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .12s,border-color .12s,color .12s;margin-top:2px}.show-more-btn:hover{background:var(--surface);border-color:var(--text-faint);border-style:solid;color:var(--text)}.settings-view{display:flex;flex-direction:column;gap:6px;padding-top:4px}.settings-section{display:flex;flex-direction:column;gap:6px}.settings-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);padding:10px 2px;text-align:center}.settings-card{background:var(--surface);border-radius:var(--radius);box-shadow:0 1px 3px #0000000f,0 0 0 1px #0000000a;overflow:hidden}.settings-row{display:flex;align-items:center;gap:12px;padding:13px 15px}.settings-row--between{justify-content:space-between;gap:8px}.settings-row-avatar{width:36px;height:36px;border-radius:50%;color:#fff;font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.settings-row-body{flex:1}.settings-row-name{font-size:15px;font-weight:500;color:var(--text)}.settings-row-meta{font-size:12px;color:var(--text-faint);margin-top:1px}.settings-row-value{font-size:14px;color:var(--text-faint);font-weight:500;flex-shrink:0}.settings-divider{height:1px;background:var(--border);margin:0 15px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 20px 40px;gap:10px;text-align:center}.empty-state svg{margin-bottom:4px}.empty-state-title{font-size:18px;font-weight:700;color:var(--text);letter-spacing:-.02em}.empty-state-body{font-size:14px;color:var(--text-muted)}.call-note{font-size:12px;color:var(--text-muted);margin-top:2px}.tab-bar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:520px;background:var(--surface);border-top:1px solid var(--border);display:flex;align-items:stretch;z-index:100;padding-bottom:env(safe-area-inset-bottom,0px)}.tab-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:none;background:none;cursor:pointer;color:var(--text-faint);font-family:inherit;padding:10px 0;position:relative;transition:color .15s;-webkit-tap-highlight-color:transparent}.tab-btn--active{color:var(--primary)}.tab-icon{display:flex;align-items:center;justify-content:center}.icon-fill,.tab-btn--active .icon-outline{display:none}.tab-btn--active .icon-fill{display:block}.tab-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;line-height:1}.tab-badge{position:absolute;top:8px;right:calc(50% - 22px);background:var(--urgent);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px;line-height:1}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:200;display:flex;align-items:flex-end;justify-content:center;padding:0;opacity:0;transition:opacity .2s ease}.modal-overlay--open{opacity:1}.modal{background:var(--surface);border-radius:var(--radius) var(--radius) 0 0;box-shadow:0 -8px 40px #00000029;width:100%;max-width:520px;max-height:88vh;display:flex;flex-direction:column;transform:translateY(20px);transition:transform .25s ease}.modal-overlay--open .modal{transform:translateY(0)}.modal-handle{width:36px;height:4px;background:var(--border);border-radius:2px;margin:10px auto 0;flex-shrink:0}.modal-header{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:14px;flex-shrink:0}.modal-contact-info{display:flex;align-items:center;gap:11px}.modal-avatar{width:40px;height:40px;border-radius:50%;color:#fff;font-size:16px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-contact-name{font-size:16px;font-weight:700;color:var(--text);letter-spacing:-.01em}.modal-contact-meta{font-size:12px;color:var(--text-muted);margin-top:1px}.modal-close{width:30px;height:30px;border:none;background:var(--bg);border-radius:50%;font-size:14px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .1s}.modal-close:hover{background:var(--border)}.modal-body{padding:16px 18px;overflow-y:auto;flex:1}.modal-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:10px}.modal-entries{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.modal-empty{font-size:13px;color:var(--text-faint);padding:4px 0}.modal-entry{border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;background:var(--bg);display:flex;flex-direction:column;gap:9px}.modal-field-row{display:flex;gap:10px}.modal-field-row .modal-field{flex:1}.modal-field{display:flex;flex-direction:column;gap:4px}.modal-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.modal-label-optional{font-weight:400;text-transform:none;letter-spacing:0;color:var(--text-faint)}.modal-input{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:7px;font-size:13px;color:var(--text);background:var(--surface);outline:none;font-family:inherit;transition:border-color .1s,box-shadow .1s}.modal-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51a}.modal-entry-footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.modal-entry-type{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:3px 9px;border-radius:99px;width:fit-content}.modal-entry-type--card{background:#ede9fe;color:#5b21b6}.modal-entry-type--call{background:#dcfce7;color:#15803d}.modal-entry-type--gift{background:#fce7f3;color:#be185d}.modal-status-select{padding:4px 10px;border-radius:99px;font-size:11px;font-weight:600;border:1px solid transparent;cursor:pointer;outline:none;font-family:inherit}.modal-status-select.status-not_ordered{background:var(--urgent-bg);color:var(--urgent);border-color:#fecaca}.modal-status-select.status-ordered{background:var(--warning-bg);color:var(--warning);border-color:#fde68a}.modal-status-select.status-sent{background:var(--ok-bg);color:var(--ok);border-color:#a7f3d0}.modal-status-select.status-not_done{background:var(--urgent-bg);color:var(--urgent);border-color:#fecaca}.modal-status-select.status-done,.modal-status-select.status-given{background:var(--ok-bg);color:var(--ok);border-color:#a7f3d0}.btn-remove-entry{font-size:11px;font-weight:600;color:var(--urgent);background:none;border:none;cursor:pointer;padding:4px 8px;border-radius:4px;font-family:inherit;transition:background .1s}.btn-remove-entry:hover{background:var(--urgent-bg)}.add-reminder-row{display:flex;gap:8px}.btn-add-reminder{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:9px 6px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;border:1.5px dashed;background:none;transition:background .12s,border-color .12s}.btn-add-reminder--card{color:#5b21b6;border-color:#c4b5fd}.btn-add-reminder--call{color:#15803d;border-color:#86efac}.btn-add-reminder--gift{color:#be185d;border-color:#f9a8d4}.btn-add-reminder--card:hover{background:#ede9fe;border-style:solid}.btn-add-reminder--call:hover{background:#dcfce7;border-style:solid}.btn-add-reminder--gift:hover{background:#fce7f3;border-style:solid}@media (min-width: 521px){.modal-overlay{align-items:center;padding:16px}.modal{border-radius:var(--radius);max-height:85vh}.modal-handle{display:none}}
