*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
     background:#f0f2f5;color:#1a1a2e;min-height:100vh}
a{text-decoration:none}
header{background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);
       color:#fff;padding:1.6rem 2rem;box-shadow:0 4px 20px rgba(0,0,0,.3)}
header h1{font-size:1.8rem;font-weight:800}
header p{opacity:.65;margin-top:.3rem;font-size:.9rem}
.back{color:rgba(255,255,255,.7);border:1px solid rgba(255,255,255,.3);
      padding:.4rem .9rem;border-radius:6px;font-size:.85rem;margin-right:1rem;
      transition:background .2s}
.back:hover{background:rgba(255,255,255,.12);color:#fff}
main{max-width:1100px;margin:2rem auto;padding:0 1.5rem}

/* ── Index cards ── */
.month-label{font-size:.72rem;font-weight:700;text-transform:uppercase;
             letter-spacing:1.5px;color:#0f3460;margin:1.8rem 0 .6rem .1rem;
             grid-column:1/-1}
.month-label:first-child{margin-top:0}
.card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.65rem}
@media(max-width:600px){.card-grid{grid-template-columns:1fr}}
.card-link{display:flex;align-items:center;gap:1.1rem;background:#fff;
           border-radius:12px;padding:1.1rem 1.3rem;box-shadow:0 1px 4px rgba(0,0,0,.06);
           transition:all .2s;border:2px solid transparent;color:inherit}
.card-link:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.1);
                 border-color:#0f3460}
.card-link.filled{border-left:4px solid #e94560}
.card-link.istoday{background:#fff9f0}
.badge{flex-shrink:0;width:54px;height:54px;background:#f0f4ff;border-radius:10px;
       display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:700}
.card-link.filled .badge{background:#fff0f3}
.card-link.istoday .badge{background:#fff3e0}
.badge .num{font-size:1.4rem;line-height:1;color:#0f3460}
.card-link.istoday .badge .num{color:#d07000}
.badge .mon{font-size:.62rem;text-transform:uppercase;color:#999;letter-spacing:.4px}
.info{flex:1;min-width:0}
.info .ttl{font-weight:600;font-size:.93rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.info .sub{font-size:.8rem;color:#999;margin-top:.15rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.today-tag{display:inline-block;background:#f4a261;color:#fff;font-size:.62rem;
           font-weight:700;text-transform:uppercase;padding:.12rem .45rem;border-radius:20px;
           margin-left:.45rem;vertical-align:middle}
.arrow{color:#ddd;font-size:1.1rem}
.card-link:hover .arrow{color:#0f3460}

/* ── Entry form ── */
.entry-card{background:#fff;border-radius:16px;box-shadow:0 2px 12px rgba(0,0,0,.08);overflow:hidden;margin-top:.5rem}
.entry-header{background:linear-gradient(135deg,#0f3460,#e94560);color:#fff;padding:1.5rem 2rem}
.entry-header .lbl{font-size:.72rem;text-transform:uppercase;letter-spacing:1px;opacity:.75}
.entry-header .dt{font-size:1.75rem;font-weight:800;margin-top:.2rem}
.entry-body{padding:2rem}
.fg{margin-bottom:1.4rem}
.fg label{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;
          letter-spacing:.8px;color:#777;margin-bottom:.45rem}
.inp,.txt{width:100%;border:2px solid #e8e8e8;border-radius:8px;padding:.75rem 1rem;
          font-size:1rem;font-family:inherit;color:#1a1a2e;transition:border-color .2s;resize:vertical}
.inp:focus,.txt:focus{outline:none;border-color:#0f3460}
.actions{display:flex;gap:.7rem;flex-wrap:wrap}
.btn-save{background:linear-gradient(135deg,#0f3460,#e94560);color:#fff;border:none;
          padding:.75rem 2rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;
          transition:opacity .2s,transform .1s}
.btn-save:hover{opacity:.9;transform:translateY(-1px)}
.btn-clear{background:#fff;color:#cc0000;border:2px solid #ffcccc;padding:.75rem 1.4rem;
           border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}
.btn-clear:hover{background:#fff0f0;border-color:#cc0000}
.meta{margin-top:1.4rem;padding-top:1rem;border-top:1px solid #f0f0f0;
      font-size:.75rem;color:#bbb}
.nav{display:flex;justify-content:space-between;margin-top:1.3rem}
.nav-a{background:#fff;color:#0f3460;padding:.5rem .85rem;border-radius:8px;
       font-size:.84rem;font-weight:500;box-shadow:0 1px 4px rgba(0,0,0,.08);transition:all .2s}
.nav-a:hover{background:#0f3460;color:#fff}
.msg-ok{background:#e8f5e9;color:#2e7d32;border:1px solid #c8e6c9;
        padding:.75rem 1rem;border-radius:8px;margin-bottom:1.2rem;font-size:.9rem}
.msg-err{background:#fce4ec;color:#c62828;border:1px solid #f8bbd0;
         padding:.75rem 1rem;border-radius:8px;margin-bottom:1.2rem;font-size:.9rem}

/* ── Bulk calendar picker ── */
.bulk-card{background:#fff;border-radius:16px;box-shadow:0 2px 12px rgba(0,0,0,.08);
           overflow:hidden;margin-top:1.2rem}
.bulk-header{padding:1rem 1.5rem;background:#f8f9ff;border-bottom:1px solid #eef0f8;
             display:flex;align-items:center;justify-content:space-between;cursor:pointer;
             user-select:none}
.bulk-header h3{font-size:.9rem;font-weight:700;color:#0f3460}
.bulk-header .chev{font-size:.85rem;color:#aaa;transition:transform .2s}
.bulk-header.open .chev{transform:rotate(180deg)}
.bulk-body{padding:1.5rem;display:none}
.bulk-body.open{display:block}
.mini-cal-wrap{display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1.2rem}
.mini-cal{min-width:200px;flex:1}
.mini-cal-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;
                color:#0f3460;margin-bottom:.6rem;text-align:center}
.mini-cal table{width:100%;border-collapse:collapse;font-size:.82rem}
.mini-cal th{text-align:center;padding:.25rem;color:#aaa;font-weight:600;font-size:.7rem;
             text-transform:uppercase}
.mini-cal td{text-align:center;padding:.2rem}
.mini-cal td.thu button{width:34px;height:34px;border-radius:8px;border:2px solid #e0e4f0;
                         background:#f0f4ff;color:#0f3460;font-weight:700;cursor:pointer;
                         font-size:.82rem;transition:all .15s}
.mini-cal td.thu button:hover{background:#d0d8ff;border-color:#0f3460}
.mini-cal td.thu button.selected{background:#0f3460;color:#fff;border-color:#0f3460}
.mini-cal td.thu button.has-data{border-color:#e94560;background:#fff0f3;color:#c0003a}
.mini-cal td.thu button.has-data.selected{background:#e94560;color:#fff;border-color:#e94560}
.mini-cal td.thu button.is-current{box-shadow:0 0 0 2px #f4a261}
.mini-cal td.empty{opacity:0}
.bulk-sel-info{font-size:.82rem;color:#666;margin-bottom:1rem;min-height:1.2em}
.bulk-sel-info strong{color:#0f3460}
.bulk-actions{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center}
.btn-bulk-save{background:linear-gradient(135deg,#0f3460,#e94560);color:#fff;border:none;
               padding:.7rem 1.6rem;border-radius:8px;font-size:.9rem;font-weight:600;
               cursor:pointer;transition:opacity .2s,transform .1s}
.btn-bulk-save:hover{opacity:.9;transform:translateY(-1px)}
.btn-bulk-save:disabled{opacity:.4;cursor:not-allowed;transform:none}
.btn-sel-all{background:#fff;border:2px solid #e0e4f0;color:#0f3460;padding:.6rem 1rem;
             border-radius:8px;font-size:.82rem;font-weight:600;cursor:pointer;transition:all .2s}
.btn-sel-all:hover{border-color:#0f3460;background:#f0f4ff}
.btn-sel-none{background:#fff;border:2px solid #e0e4f0;color:#888;padding:.6rem 1rem;
              border-radius:8px;font-size:.82rem;font-weight:600;cursor:pointer;transition:all .2s}
.btn-sel-none:hover{border-color:#aaa}
