:root{--bg:#f4f6f8;--bg-muted:#eef1f4;--surface:#fff;--text:#1a1f26;--text-secondary:#3d4654;--text-muted:#7a8494;--border:#e2e7ee;--accent:#0d9488;--accent-soft:#ccfbf1;--danger:#c0392b;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--shadow:0 1px 2px #1018280a, 0 4px 12px #1018280a;--shadow-lg:0 12px 40px #10182829;--font:"Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font);background:radial-gradient(ellipse at top, #e6fffa 0%, transparent 45%), var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;line-height:1.45}button,input,textarea{font-family:inherit}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:16px}.btn{border-radius:var(--radius-md);min-height:48px;font:inherit;cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:10px 16px;font-size:.95rem;font-weight:600;transition:background .15s,border-color .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{filter:brightness(.95)}.btn-secondary{background:var(--bg-muted);color:var(--text);border-color:var(--border)}.btn-secondary:hover{background:var(--border)}.btn-ghost{color:var(--text);background:0 0}.btn-ghost:hover{background:var(--bg-muted)}.btn-text{min-height:36px;color:var(--text-secondary);background:0 0;padding:6px 10px;font-size:.875rem}.btn-text:hover{background:var(--bg-muted)}.btn-text.danger{color:var(--danger)}.btn-sm{min-height:36px;padding:6px 12px;font-size:.85rem}.modal-backdrop{z-index:1000;background:#14181e73;justify-content:center;align-items:flex-end;padding:16px;display:flex;position:fixed;inset:0}@media (width>=560px){.modal-backdrop{align-items:center}}.modal{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-width:420px;max-height:85vh;box-shadow:var(--shadow-lg);padding:20px;overflow:auto}.modal__header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal__header h3{margin:0;font-size:1.1rem}.app{flex-direction:column;gap:14px;width:100%;max-width:640px;margin:0 auto;padding:20px 16px 48px;display:flex}.app__header{justify-content:space-between;align-items:flex-start;gap:12px;padding:8px 4px 4px;display:flex}.app__eyebrow{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin:0 0 2px;font-size:.75rem;font-weight:600}.app__title{letter-spacing:-.02em;color:var(--text);margin:0;font-size:1.75rem;font-weight:800}.app__footer{text-align:center;color:var(--text-muted);margin-top:8px;font-size:.8rem;line-height:1.4}.calendar__header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.calendar__title{text-align:center;margin:0;font-size:1.15rem;font-weight:700}.calendar__toolbar{justify-content:flex-end;margin-bottom:12px;display:flex}.calendar__weekdays{grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px;display:grid}.calendar__weekday{text-align:center;color:var(--text-muted);padding:4px 0;font-size:.75rem;font-weight:600}.calendar__weekday:first-child{color:#c44}.calendar__weekday:last-child{color:#368}.calendar__grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.calendar .btn-ghost{width:44px;height:44px;padding:0;font-size:1.5rem;line-height:1}.calendar-day{aspect-ratio:1;border-radius:var(--radius-sm);color:var(--text);font:inherit;cursor:pointer;background:0 0;border:2px solid #0000;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:44px;padding:4px;font-size:.95rem;font-weight:500;transition:background .15s,border-color .15s;display:flex}.calendar-day:hover{background:var(--bg-muted)}.calendar-day.is-outside{color:var(--text-muted);opacity:.45}.calendar-day.is-today{background:var(--accent-soft);color:var(--accent);font-weight:700}.calendar-day.is-selected{border-color:var(--accent);background:var(--accent);color:#fff}.calendar-day.is-selected .calendar-day__dot{background:#fff}.calendar-day.is-selected .calendar-day__count{color:#fff}.calendar-day.has-record:not(.is-selected) .calendar-day__number{color:var(--accent);font-weight:700}.calendar-day__marker{align-items:center;gap:2px;min-height:12px;display:flex}.calendar-day__dot{background:var(--accent);border-radius:50%;width:6px;height:6px}.calendar-day__count{color:var(--accent);font-size:.65rem;font-weight:600;line-height:1}.day-detail{flex-direction:column;gap:14px;display:flex}.day-detail__header{justify-content:space-between;align-items:center;gap:12px;display:flex}.day-detail__date{color:var(--text-muted);margin:0 0 4px;font-size:.85rem}.day-detail__title{margin:0;font-size:1.2rem}.day-detail__danger{border-top:1px solid var(--border);justify-content:center;margin-top:14px;padding-top:12px;display:flex}.exercise-list{flex-direction:column;gap:16px;display:flex}.exercise-list__empty{text-align:center;color:var(--text-muted);background:var(--bg-muted);border-radius:var(--radius-md);margin:0;padding:20px}.exercise-list__items{flex-direction:column;gap:10px;display:flex}.exercise-list__totals{background:var(--accent-soft);border-radius:var(--radius-md);padding:14px}.exercise-list__totals h4{color:var(--accent);margin:0 0 10px;font-size:.9rem}.exercise-list__totals ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.exercise-list__totals li{flex-direction:column;gap:2px;font-size:.95rem;display:flex}.exercise-list__totals li span{color:var(--text-secondary)}.exercise-record{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);flex-direction:column;gap:10px;padding:14px;display:flex}.exercise-record.is-completed{opacity:.65}.exercise-record.is-completed .exercise-record__name{text-decoration:line-through}.exercise-record__main{align-items:flex-start;gap:10px;display:flex}.exercise-record__check{padding-top:2px;display:flex}.exercise-record__check input{width:20px;height:20px;accent-color:var(--accent);cursor:pointer}.exercise-record__body{flex:1;min-width:0}.exercise-record__name{flex-wrap:wrap;align-items:center;gap:8px;font-size:1rem;font-weight:700;display:flex}.exercise-record__index{color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:600}.exercise-record__summary{color:var(--text-secondary);margin-top:4px;font-size:.95rem}.exercise-record__difficulty{color:var(--text-muted);margin-top:4px;font-size:.8rem}.exercise-record__actions{justify-content:flex-end;gap:4px;display:flex}.template-list{flex-direction:column;gap:10px;display:flex}.template-list__item{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);width:100%;min-height:52px;color:var(--text);font:inherit;text-align:left;cursor:pointer;padding:14px 16px;font-size:1rem;font-weight:600;transition:border-color .15s,background .15s}.template-list__item:hover,.template-list__item:focus-visible{border-color:var(--accent);background:var(--accent-soft);outline:none}.exercise-form{flex-direction:column;gap:14px;display:flex}.exercise-form__title{margin:0 0 4px;font-size:1.1rem}.field{color:var(--text);flex-direction:column;gap:6px;font-size:.9rem;font-weight:600;display:flex}.field__row{align-items:center;gap:8px;display:flex}.field input{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);min-height:48px;color:var(--text);font:inherit;flex:1;padding:10px 14px;font-size:1rem;font-weight:500}.field input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.field__unit{min-width:28px;color:var(--text-muted);font-weight:500}.optional{color:var(--text-muted);font-size:.8rem;font-style:normal;font-weight:400}.difficulty{border:1px solid var(--border);border-radius:var(--radius-md);margin:4px 0 0;padding:12px}.difficulty legend{padding:0 6px;font-size:.9rem;font-weight:600}.difficulty__options{flex-direction:column;gap:8px;display:flex}.difficulty__option{cursor:pointer;align-items:center;gap:10px;min-height:36px;font-weight:500;display:flex}.difficulty__option input{width:18px;height:18px;accent-color:var(--accent)}.form-error{color:#c0392b;margin:0;font-size:.9rem}.exercise-form__actions{gap:10px;margin-top:4px;display:flex}.exercise-form__actions .btn{flex:1}.daily-summary__title{margin:0 0 6px;font-size:1rem}.daily-summary__meta{color:var(--text-muted);margin:0 0 12px;font-size:.9rem}.daily-summary__list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.daily-summary__list li{border-bottom:1px solid var(--border);flex-direction:column;gap:2px;padding-bottom:10px;display:flex}.daily-summary__list li:last-child{border-bottom:none;padding-bottom:0}.daily-summary__list span{color:var(--text-secondary);font-size:.95rem}.daily-memo__title{margin:0 0 10px;font-size:1rem}.daily-memo__input{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);width:100%;min-height:88px;color:var(--text);font:inherit;resize:vertical;padding:12px 14px;font-size:.95rem;line-height:1.5}.daily-memo__input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.daily-memo__actions{justify-content:flex-end;margin-top:10px;display:flex}.monthly-stats__title{margin:0 0 14px;font-size:1rem}.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.stat-card{background:var(--bg-muted);border-radius:var(--radius-md);flex-direction:column;gap:6px;padding:14px;display:flex}.stat-card--primary{background:var(--accent-soft);grid-column:1/-1}.stat-card__label{color:var(--text-muted);font-size:.8rem;font-weight:600}.stat-card__value{color:var(--text);word-break:keep-all;font-size:1.05rem;font-weight:700}.stat-card--primary .stat-card__value{color:var(--accent);font-size:1.4rem}.monthly-stats__empty{color:var(--text-muted);text-align:center;margin:12px 0 0;font-size:.9rem}.streak-badge{color:#9a3412;background:linear-gradient(135deg,#fff7ed,#ffedd5);border:1px solid #fed7aa;justify-content:center;align-items:center;gap:8px;padding:14px 16px;font-size:.95rem;display:flex}.streak-badge strong{font-size:1.1rem}.streak-badge__icon{font-size:1.2rem}.streak-badge--empty{background:var(--bg-muted);border:1px solid var(--border);color:var(--text-muted);text-align:center;font-size:.9rem}.backup-controls__title{margin:0 0 6px;font-size:1rem}.backup-controls__desc{color:var(--text-muted);margin:0 0 14px;font-size:.85rem;line-height:1.4}.backup-controls__actions{flex-wrap:wrap;gap:10px;display:flex}.backup-controls__actions .btn{flex:1;min-width:140px}
