.flc { position:fixed; z-index:5500; top:0; left:0; }
.flc[hidden] { display:none; }
.flc-panel { position:fixed; width:680px; max-width:calc(100vw - 24px); background:#fff; border-radius:20px; box-shadow:0 28px 70px -20px rgba(9,40,90,.45), 0 0 0 1px rgba(9,58,120,.06); font-family:inherit; color:#132540; overflow:hidden; animation:flcIn .16s ease-out; }
@keyframes flcIn { from { opacity:0; transform:translateY(-6px); } }

.flc-tabs { display:flex; align-items:center; gap:8px; padding:14px 16px 10px; border-bottom:1px solid #eef3fa; }
.flc-tab { flex:1; display:flex; flex-direction:column; align-items:flex-start; gap:1px; padding:8px 14px; border:1.5px solid #e6edf7; border-radius:12px; background:#fff; font:inherit; color:#132540; text-align:left; cursor:pointer; transition:border-color .15s, box-shadow .15s, background .15s; }
.flc-tab small { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:#8ba0b8; }
.flc-tab b { font-size:15px; }
.flc-tab.active { border-color:#0c73fe; background:#f5f9ff; box-shadow:0 0 0 3px rgba(12,115,254,.12); }
.flc-tab-sep { color:#a8b6c7; font-weight:700; }
.flc-spin { width:11px; height:11px; border-radius:50%; border:2px solid #cfe0f7; border-top-color:#0c73fe; flex-shrink:0; animation:flcSpin .7s linear infinite; }
@keyframes flcSpin { to { transform:rotate(360deg); } }

.flc-body { position:relative; padding:12px 16px 6px; }
.flc-nav { position:absolute; top:12px; width:34px; height:34px; border-radius:50%; border:1.5px solid #e1ebfb; background:#fff; color:#0c73fe; font-size:20px; line-height:1; cursor:pointer; z-index:1; transition:background .15s; }
.flc-nav.prev { left:16px; }
.flc-nav.next { right:16px; }
.flc-nav:hover:not(:disabled) { background:#eaf2fe; }
.flc-nav:disabled { opacity:.35; cursor:default; }
.flc-months { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.flc-month-title { text-align:center; font-size:15px; font-weight:800; line-height:34px; margin-bottom:6px; }
.flc-grid { display:grid; grid-template-columns:repeat(7, 1fr); row-gap:2px; }
.flc-dow { text-align:center; font-size:11px; font-weight:700; color:#8ba0b8; padding:4px 0 6px; }
.flc-dow.we { color:#e0641f; }

.flc-day { position:relative; height:44px; border:none; background:none; padding:0; font:inherit; color:#132540; cursor:pointer; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:0; z-index:0; }
.flc-day::before { content:''; position:absolute; inset:3px 2px; border-radius:12px; z-index:-1; transition:background .12s; }
.flc-day .n { font-size:14px; font-weight:600; line-height:1.1; }
.flc-day .p { font-size:9.5px; font-weight:700; color:#8ba0b8; line-height:1.1; margin-top:2px; }
.flc-day.cheap .p { color:#12805c; }
.flc-day.cheap::after { content:''; position:absolute; top:5px; right:7px; width:5px; height:5px; border-radius:50%; background:#12805c; }
.flc-day.we .n { color:#e0641f; }
.flc-day.today .n::after { content:''; position:absolute; left:50%; bottom:5px; width:4px; height:4px; margin-left:-2px; border-radius:50%; background:#0c73fe; }
.flc-day:hover:not(:disabled)::before { background:#eaf2fe; }
.flc-day:disabled { cursor:default; }
.flc-day:disabled .n, .flc-day:disabled .p { color:#c7d1dd; }

.flc-day.in-range, .flc-day.hover-range { background:#eaf2fe; }
.flc-day.in-range::before, .flc-day.hover-range::before { background:none; }
.flc-day.band-right { background:linear-gradient(90deg, transparent 50%, #eaf2fe 50%); }
.flc-day.band-left { background:linear-gradient(90deg, #eaf2fe 50%, transparent 50%); }
.flc-day.is-start::before, .flc-day.is-end::before { background:#0c73fe; box-shadow:0 6px 14px -6px rgba(12,115,254,.7); }
.flc-day.hover-end::before { background:#cfe0fb; }
.flc-day.is-start .n, .flc-day.is-end .n, .flc-day.is-start .p, .flc-day.is-end .p { color:#fff; }

.flc-foot { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 16px 14px; border-top:1px solid #eef3fa; }
.flc-summary { font-size:13.5px; color:#51667e; }
.flc-summary b { color:#132540; }
.flc-done { border:none; border-radius:12px; padding:11px 26px; background:#0c73fe; color:#fff; font:inherit; font-weight:800; cursor:pointer; transition:background .15s; }
.flc-done:hover:not(:disabled) { background:#0958c9; }
.flc-done:disabled { background:#b9cde8; cursor:default; }

.flc.sheet { inset:0; background:rgba(9,40,90,.45); }
.flc.sheet .flc-panel { left:0; right:0; bottom:0; top:auto; width:auto; max-width:none; max-height:88vh; max-height:88dvh; border-radius:20px 20px 0 0; display:flex; flex-direction:column; animation:flcUp .2s ease-out; }
@keyframes flcUp { from { transform:translateY(40px); opacity:.6; } }
.flc.sheet .flc-body { overflow-y:auto; }
.flc.sheet .flc-months { grid-template-columns:1fr; gap:14px; }
.flc.sheet .flc-nav { display:none; }
.flc.sheet .flc-body { position:relative; flex:1; min-height:0; padding-top:0; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }
.flc.sheet .flc-months { gap:6px; }
.flc.sheet .flc-month-title { position:sticky; top:0; z-index:3; background:#fff; text-align:left; font-size:16px; line-height:44px; margin:0 -16px 2px; padding:0 18px; border-bottom:1px solid #f0f4fa; }
.flc.sheet .flc-foot { padding-bottom:calc(14px + env(safe-area-inset-bottom)); }
.flc.sheet .flc-done { padding:14px 28px; font-size:15px; }
html.flc-lock, html.flc-lock body { overflow:hidden; }
