@import url('https://fonts.googleapis.com/css2?family=Zen+Maru+Gothic:wght@500;700&family=Noto+Sans+JP:wght@400;500;700&display=swap');

.ldc-app{
  --ldc-bg:#fff4f1;
  --ldc-surface:#ffffff;
  --ldc-ink:#472a33;
  --ldc-ink-soft:#8b6470;
  --ldc-accent:#e15577;
  --ldc-accent-deep:#b8385c;
  --ldc-accent-soft:#fbdce3;
  --ldc-line:#f3d9de;
  --ldc-sun:#e2607e;
  --ldc-sat:#5a7fbf;
  --ldc-shadow: 0 8px 24px rgba(184,56,92,0.08);

  max-width:720px;
  margin:0 auto;
  overflow-x:hidden;
  color:var(--ldc-ink);
  font-family:"Noto Sans JP","Hiragino Kaku Gothic ProN",sans-serif;
  line-height:1.7;
  box-sizing:border-box;
}
.ldc-app *, .ldc-app *::before, .ldc-app *::after{ box-sizing:inherit; }

.ldc-app .ldc-loading{
  text-align:center;
  color:var(--ldc-ink-soft);
  padding:40px 0;
  font-size:14px;
}

.ldc-lede{
  color:var(--ldc-ink-soft);
  font-size:14.5px;
  margin:0 0 16px;
  max-width:56ch;
}
.ldc-lede .ldc-nowrap{ white-space:nowrap; }
.ldc-filter-row{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:16px;
  flex-wrap:wrap;
}
.ldc-filter-row label{
  font-size:13px;
  color:var(--ldc-ink-soft);
  white-space:nowrap;
}
.ldc-filter-row select{
  flex:1;
  min-width:160px;
  border:1px solid var(--ldc-line);
  border-radius:10px;
  padding:9px 12px;
  font-size:13.5px;
  font-family:inherit;
  background:var(--ldc-surface);
  color:var(--ldc-ink);
}

.ldc-pref-badge{
  display:inline-block;
  background:var(--ldc-accent-soft);
  color:var(--ldc-accent-deep);
  font-size:11px;
  padding:2px 8px;
  border-radius:999px;
  margin-bottom:5px;
}

.ldc-notice{
  background:var(--ldc-accent-soft);
  border-radius:14px;
  padding:12px 16px;
  font-size:13px;
  color:var(--ldc-ink);
  margin-bottom:20px;
}
.ldc-notice strong{ color:var(--ldc-accent-deep); }

.ldc-status-banner{
  display:none;
  border-radius:14px;
  padding:10px 16px;
  font-size:13px;
  margin-bottom:16px;
}
.ldc-status-banner.show{ display:block; }
.ldc-status-banner.info{ background:var(--ldc-accent-soft); color:var(--ldc-accent-deep); }
.ldc-status-banner.error{ background:#fde2e2; color:#9c2b2b; }

.ldc-cal-card{
  background:var(--ldc-surface);
  border-radius:20px;
  box-shadow:var(--ldc-shadow);
  padding:20px 16px 24px;
  border:1px solid var(--ldc-line);
}

.ldc-cal-nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:14px;
  padding:0 4px;
}
.ldc-cal-nav .ldc-month-label{
  font-family:"Zen Maru Gothic",sans-serif;
  font-weight:700;
  font-size:19px;
}
.ldc-nav-btn{
  width:36px; height:36px;
  border-radius:50%;
  border:1px solid var(--ldc-line);
  background:var(--ldc-surface);
  color:var(--ldc-accent-deep);
  font-size:16px;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer;
  transition:background .15s ease;
}
.ldc-nav-btn:hover{ background:var(--ldc-accent-soft); }
.ldc-app :focus-visible{
  outline:2px solid var(--ldc-accent); outline-offset:2px;
}

.ldc-weekday-row, .ldc-day-grid{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:6px;
}
.ldc-weekday-row{ margin-bottom:6px; }
.ldc-weekday{
  text-align:center;
  font-size:12px;
  color:var(--ldc-ink-soft);
  padding-bottom:4px;
}
.ldc-weekday.sun{ color:var(--ldc-sun); }
.ldc-weekday.sat{ color:var(--ldc-sat); }

.ldc-day-cell{
  min-height:76px;
  min-width:0;
  border-radius:12px;
  border:1px solid transparent;
  background:transparent;
  padding:6px 4px;
  text-align:left;
  cursor:pointer;
  font-family:inherit;
  color:inherit;
  display:flex;
  flex-direction:column;
  gap:3px;
  overflow:hidden;
  transition:background .15s ease, border-color .15s ease;
}
.ldc-day-cell:hover{ background:var(--ldc-accent-soft); }
.ldc-day-cell.outside{ opacity:0.32; cursor:default; }
.ldc-day-cell.outside:hover{ background:transparent; }
.ldc-day-cell.today{ border-color:var(--ldc-accent); }
.ldc-day-num{ font-size:12.5px; padding-left:4px; }
.ldc-day-num.sun{ color:var(--ldc-sun); }
.ldc-day-num.sat{ color:var(--ldc-sat); }

.ldc-pill{
  background:var(--ldc-accent-soft);
  color:var(--ldc-accent-deep);
  border-radius:999px;
  font-size:10.5px;
  padding:2px 7px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:100%;
  min-width:0;
  width:100%;
  box-sizing:border-box;
}
.ldc-pill.more{ background:transparent; color:var(--ldc-ink-soft); padding-left:7px; }

.ldc-empty-state{
  text-align:center;
  color:var(--ldc-ink-soft);
  font-size:13px;
  padding:14px 8px 2px;
}

.ldc-add-fab{
  display:block;
  width:100%;
  margin-bottom:16px;
  padding:13px;
  border-radius:14px;
  border:none;
  background:var(--ldc-accent);
  color:#fff;
  font-family:"Zen Maru Gothic",sans-serif;
  font-weight:700;
  font-size:15px;
  cursor:pointer;
  transition:background .15s ease;
}
.ldc-add-fab:hover{ background:var(--ldc-accent-deep); }

/* modal */
.ldc-overlay{
  position:fixed; inset:0;
  background:rgba(60,20,32,0.35);
  display:none;
  align-items:flex-end;
  justify-content:center;
  padding-bottom:calc(84px + env(safe-area-inset-bottom, 0px));
  z-index:2147483000;
}
.ldc-overlay.show{ display:flex; }
@media (min-width:560px){
  .ldc-overlay{ align-items:center; padding:20px; }
}
.ldc-modal{
  background:var(--ldc-surface);
  width:100%;
  max-width:480px;
  max-height:70vh;
  overflow-y:auto;
  border-radius:20px;
  padding:22px 20px 28px;
  color:var(--ldc-ink);
  font-family:"Noto Sans JP",sans-serif;
}
@media (min-width:560px){
  .ldc-modal{ border-radius:20px; }
}
.ldc-modal-head{
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:14px;
}
.ldc-modal-date-picker{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.ldc-modal-date-picker label{
  font-size:12.5px;
  color:var(--ldc-ink-soft);
  white-space:nowrap;
}
.ldc-modal-date-picker input[type="date"]{
  border:1px solid var(--ldc-line);
  border-radius:10px;
  padding:8px 10px;
  font-size:14px;
  font-family:inherit;
  background:var(--ldc-bg);
  color:var(--ldc-ink);
}

.ldc-modal-date{
  font-family:"Zen Maru Gothic",sans-serif;
  font-size:18px;
  font-weight:700;
}
.ldc-close-btn{
  border:none; background:none; font-size:22px; color:var(--ldc-ink-soft);
  cursor:pointer; line-height:1; padding:4px;
}

.ldc-entry-list{ display:flex; flex-direction:column; gap:10px; margin-bottom:18px; }
.ldc-entry-card{
  border:1px solid var(--ldc-line);
  border-radius:14px;
  padding:12px 14px;
}
.ldc-entry-card .ldc-fac{ font-weight:700; font-size:15px; margin-bottom:2px; }
.ldc-entry-card .ldc-meta{ font-size:12.5px; color:var(--ldc-ink-soft); }
.ldc-entry-card .ldc-memo{ font-size:13px; margin-top:6px; white-space:pre-wrap; }
.ldc-entry-actions{ display:flex; gap:14px; margin-top:8px; }
.ldc-entry-actions button{
  border:none; background:none; font-size:12.5px; cursor:pointer;
  color:var(--ldc-accent-deep); padding:0; font-family:inherit;
}
.ldc-entry-actions button.danger{ color:#b23b3b; }

.ldc-image-card{
  background:var(--ldc-surface);
  border-radius:20px;
  box-shadow:var(--ldc-shadow);
  padding:20px 16px 24px;
  border:1px solid var(--ldc-line);
  margin-top:20px;
}
.ldc-image-title{
  font-family:"Zen Maru Gothic",sans-serif;
  font-size:17px;
  margin:0 0 6px;
  color:var(--ldc-accent-deep);
}
.ldc-image-desc{
  font-size:13px;
  color:var(--ldc-ink-soft);
  margin:0 0 14px;
}
.ldc-image-controls{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  margin-bottom:14px;
}
.ldc-image-controls .ldc-field{ flex:1 1 160px; min-width:0; margin-bottom:0; }
.ldc-image-controls select, .ldc-image-controls input{
  width:100%;
  min-width:0;
  box-sizing:border-box;
}
.ldc-month-select-row{
  display:flex;
  gap:8px;
}
.ldc-month-select-row select{
  flex:1 1 0;
  min-width:0;
}
.ldc-image-generate{ width:100%; }
.ldc-image-result{ margin-top:16px; }
.ldc-image-status{ font-size:13px; color:var(--ldc-ink-soft); margin:0; }
.ldc-image-status.error{ color:#b23b3b; }
.ldc-image-preview{
  display:block;
  width:100%;
  max-width:100%;
  border-radius:12px;
  border:1px solid var(--ldc-line);
  margin-bottom:12px;
}
.ldc-image-download{ width:100%; }
.ldc-image-note{
  text-align:center;
  font-size:12.5px;
  color:var(--ldc-ink-soft);
  margin:0;
}

.ldc-links-heading{
  font-size:12.5px;
  color:var(--ldc-ink-soft);
  margin-top:2px;
  padding-top:10px;
  border-top:1px dashed var(--ldc-line);
}
.ldc-field-compact input{
  padding:8px 12px;
  font-size:13.5px;
}
.ldc-link-row{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:8px;
}
.ldc-link-chip{
  display:inline-block;
  background:var(--ldc-bg);
  border:1px solid var(--ldc-line);
  color:var(--ldc-accent-deep);
  font-size:11.5px;
  padding:4px 10px;
  border-radius:999px;
  text-decoration:none;
}
.ldc-link-chip:hover{ background:var(--ldc-accent-soft); }

form.ldc-entry-form{ display:flex; flex-direction:column; gap:12px; }
.ldc-form-title{
  margin:0 0 4px;
  font-size:14px;
  font-family:"Zen Maru Gothic", sans-serif;
  font-weight:700;
}
.ldc-field label{
  display:block; font-size:12.5px; color:var(--ldc-ink-soft); margin-bottom:5px;
}
.ldc-field input, .ldc-field textarea{
  width:100%;
  border:1px solid var(--ldc-line);
  border-radius:10px;
  padding:10px 12px;
  font-size:14px;
  font-family:inherit;
  background:var(--ldc-bg);
  color:var(--ldc-ink);
}
.ldc-field textarea{ min-height:64px; resize:vertical; }
.ldc-req{ color:var(--ldc-accent-deep); }
.ldc-form-error{ color:#b23b3b; font-size:12.5px; display:none; }
.ldc-form-error.show{ display:block; }
.ldc-hp-field{ position:absolute; left:-9999px; top:-9999px; }
.ldc-form-actions{
  display:flex;
  gap:10px;
  margin-top:4px;
  position:sticky;
  bottom:-1px;
  background:var(--ldc-surface);
  padding:10px 0 2px;
  border-top:1px solid var(--ldc-line);
  box-shadow:0 -6px 10px -6px rgba(71,42,51,0.12);
}
.ldc-btn-primary, .ldc-btn-secondary{
  flex:1;
  padding:11px;
  border-radius:12px;
  border:none;
  font-size:14px;
  font-weight:700;
  font-family:"Zen Maru Gothic",sans-serif;
  cursor:pointer;
}
.ldc-btn-primary{ background:var(--ldc-accent); color:#fff; }
.ldc-btn-primary:hover{ background:var(--ldc-accent-deep); }
.ldc-btn-primary:disabled{ opacity:0.6; cursor:default; }
.ldc-btn-secondary{ background:var(--ldc-accent-soft); color:var(--ldc-accent-deep); }
