.ff-book{--ff-primary:#1a2d66;--ff-secondary:#eef1f8;--ff-ink:#18111a;--ff-muted:#747474;--ff-line:#e8e8ec;--ff-mist:#f6f6f8;--ff-green:#1f9d61;--ff-danger:#b42318;--ff-font-head:"Source Sans 3", "Segoe UI", sans-serif;--ff-font-brand:"Libre Baskerville", Georgia, serif;--ff-font-body:"Source Sans 3", "Segoe UI", sans-serif;color:var(--ff-ink);font-family:var(--ff-font-body)}.ff-book--embed{padding:0}.ff-book__toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;display:flex}.ff-book__trust{color:var(--ff-muted);align-items:center;gap:.45rem;font-size:.82rem;font-weight:600;display:inline-flex}.ff-book__trust:before{content:"";background:#33cc80;border-radius:999px;width:8px;height:8px;box-shadow:0 0 0 4px #33cc802e}.ff-book__lead{color:#747474;max-width:40rem;margin:.65rem 0 0;font-size:1.05rem;line-height:1.5}.ff-book__tabs{border:1px solid var(--ff-line);background:#ffffffb8;border-radius:999px;gap:2px;padding:5px;display:inline-flex;box-shadow:0 1px 2px #18111a0a}.ff-book__tab{font-family:var(--ff-font-head);color:var(--ff-muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.7rem 1.2rem;font-size:.92rem;font-weight:600;transition:background .2s,color .2s,box-shadow .2s}.ff-book__tab.is-active{background:var(--ff-primary);color:#fff;box-shadow:0 8px 20px #1a2d6638}.ff-book__panel{border:1px solid var(--ff-line);background:#fff;border-radius:24px;padding:clamp(1.15rem,2vw,1.75rem);box-shadow:0 2px 4px #18111a08,0 18px 48px #1a2d660f}.ff-book__progress{border-bottom:1px solid var(--ff-line);flex-wrap:wrap;gap:.55rem 1rem;margin:0 0 1.5rem;padding:0 0 1.15rem;list-style:none;display:flex}.ff-book__progress li{color:var(--ff-muted);align-items:center;gap:.45rem;font-size:.88rem;font-weight:600;display:inline-flex}.ff-book__progress li.is-active{color:var(--ff-primary)}.ff-book__progress li.is-done{color:var(--ff-green)}.ff-book__progress-dot{background:var(--ff-mist);border:1px solid var(--ff-line);border-radius:999px;justify-content:center;align-items:center;width:22px;height:22px;font-size:.72rem;display:inline-flex}.ff-book__progress li.is-active .ff-book__progress-dot{background:var(--ff-primary);border-color:var(--ff-primary);color:#fff}.ff-book__progress li.is-done .ff-book__progress-dot{color:var(--ff-green);background:#e8f8ef;border-color:#b8ebcd}.ff-book__section h2{font-family:var(--ff-font-head);letter-spacing:-.02em;margin:0;font-size:1.35rem}.ff-book__hint{color:var(--ff-muted);margin:.35rem 0 0;font-size:.98rem}.ff-book__section-head{align-items:flex-start;gap:1rem;margin-bottom:1.15rem;display:flex}.ff-book__back{border:1px solid var(--ff-line);cursor:pointer;background:#fff;border-radius:999px;flex-shrink:0;align-items:center;gap:.2rem;margin-top:.2rem;padding:.4rem .65rem;font-size:.88rem;font-weight:600;display:inline-flex}.ff-book__back:hover{border-color:var(--ff-primary);color:var(--ff-primary)}.ff-book__grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.9rem;margin-top:1.15rem;display:grid}.ff-book__card{text-align:left;border:1px solid var(--ff-line);background:linear-gradient(180deg, #fff 0%, var(--ff-secondary) 160%);cursor:pointer;border-radius:18px;flex-direction:column;gap:.35rem;min-height:168px;padding:1.1rem 1.15rem 1.2rem;transition:border-color .2s,box-shadow .2s,transform .15s;display:flex}.ff-book__card:hover{border-color:#b8c3df;transform:translateY(-2px);box-shadow:0 10px 28px #1a2d661a}.ff-book__card.is-selected{border-color:var(--ff-primary);box-shadow:0 0 0 2px #1a2d662e}.ff-book__card-icon{width:40px;height:40px;color:var(--ff-primary);border:1px solid var(--ff-line);background:#fff;border-radius:12px;justify-content:center;align-items:center;margin-bottom:.25rem;display:inline-flex}.ff-book__card-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--ff-muted);font-size:.72rem;font-weight:700}.ff-book__card strong{font-family:var(--ff-font-head);font-size:1.05rem}.ff-book__card p{color:#555;margin:.15rem 0 0;font-size:.9rem;line-height:1.4}.ff-book__card-meta{color:var(--ff-primary);align-items:center;gap:.35rem;font-size:.85rem;font-weight:600;display:inline-flex}.ff-book__search{border:1px solid var(--ff-line);background:var(--ff-mist);border-radius:14px;align-items:center;gap:.65rem;margin:.85rem 0 1rem;padding:.75rem .95rem;display:flex}.ff-book__search input{font:inherit;background:0 0;border:0;outline:none;flex:1}.ff-book__list{flex-direction:column;gap:.55rem;max-height:420px;padding-right:2px;display:flex;overflow:auto}.ff-book__list-item{text-align:left;border:1px solid var(--ff-line);cursor:pointer;background:#fff;border-radius:16px;align-items:flex-start;gap:.85rem;width:100%;padding:.95rem 1rem;transition:border-color .2s,box-shadow .2s;display:flex}.ff-book__list-item:hover,.ff-book__list-item.is-selected{border-color:var(--ff-primary);box-shadow:0 8px 22px #1a2d6614}.ff-book__list-icon{background:var(--ff-secondary);width:36px;height:36px;color:var(--ff-primary);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ff-book__list-item strong{font-family:var(--ff-font-head);display:block}.ff-book__muted{color:var(--ff-muted);margin-top:.2rem;font-size:.9rem;display:block}.ff-book__calendar-wrap{grid-template-columns:1.1fr .9fr;gap:1.25rem;display:grid}@media (width<=860px){.ff-book__calendar-wrap{grid-template-columns:1fr}}.ff-book__calendar,.ff-book__times{border:1px solid var(--ff-line);background:linear-gradient(180deg, #fff, var(--ff-mist));border-radius:18px;padding:1rem}.ff-book__cal-nav{justify-content:space-between;align-items:center;margin-bottom:.85rem;display:flex}.ff-book__cal-nav button{border:1px solid var(--ff-line);cursor:pointer;background:#fff;border-radius:999px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.ff-book__cal-grid{grid-template-columns:repeat(7,1fr);gap:.35rem;display:grid}.ff-book__cal-dow{text-align:center;color:var(--ff-muted);letter-spacing:.04em;padding-bottom:.25rem;font-size:.72rem;font-weight:700}.ff-book__cal-day{aspect-ratio:1;cursor:pointer;color:#bbb;background:0 0;border:1px solid #0000;border-radius:12px;font-size:.9rem;font-weight:600}.ff-book__cal-day.has-slots{color:var(--ff-ink);border-color:var(--ff-line);background:#fff}.ff-book__cal-day.has-slots:hover{border-color:var(--ff-primary);color:var(--ff-primary)}.ff-book__cal-day.is-selected{background:var(--ff-primary);border-color:var(--ff-primary);color:#fff}.ff-book__cal-day:disabled{cursor:default;opacity:.55}.ff-book__cal-status{color:var(--ff-muted);align-items:center;gap:.45rem;margin:.75rem 0 0;font-size:.88rem;display:flex}.ff-book__times h3{font-family:var(--ff-font-head);align-items:center;gap:.4rem;margin:0 0 .75rem;font-size:1rem;display:flex}.ff-book__time-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:.45rem;max-height:280px;margin:.75rem 0 1rem;display:grid;overflow:auto}.ff-book__time{border:1px solid var(--ff-line);cursor:pointer;background:#fff;border-radius:999px;padding:.55rem .4rem;font-size:.88rem;font-weight:600}.ff-book__time.is-selected,.ff-book__time:hover{border-color:var(--ff-primary);color:var(--ff-primary);background:var(--ff-secondary)}.ff-book__primary,.ff-book__ghost,.ff-book__danger{font-family:var(--ff-font-head);cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.45rem;padding:.8rem 1.35rem;font-size:.95rem;font-weight:600;transition:background .2s,border-color .2s,transform .15s;display:inline-flex}.ff-book__primary{background:var(--ff-primary);color:#fff;width:100%}.ff-book__primary:hover:not(:disabled){filter:brightness(1.08)}.ff-book__primary:disabled{opacity:.45;cursor:not-allowed}.ff-book__ghost{border-color:var(--ff-line);color:var(--ff-ink);background:#fff}.ff-book__danger{color:var(--ff-danger);background:#fff;border-color:#f3c1bc;width:100%}.ff-book__danger:hover:not(:disabled){background:#fef3f2}.ff-book__form{flex-direction:column;gap:.9rem;max-width:640px;display:flex}.ff-book__form-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}@media (width<=640px){.ff-book__form-row{grid-template-columns:1fr}}.ff-book__form label,.ff-book__manage-form label,.ff-book__cancel label{flex-direction:column;gap:.35rem;font-size:.9rem;font-weight:600;display:flex}.ff-book__form input,.ff-book__form textarea,.ff-book__manage-form input,.ff-book__cancel select{font:inherit;border:1px solid var(--ff-line);background:#fff;border-radius:12px;padding:.7rem .85rem;font-weight:400}.ff-book__optional{color:var(--ff-muted);font-weight:400}.ff-book__confirm{text-align:center;padding-top:.5rem}.ff-book__confirm-badge{width:72px;height:72px;color:var(--ff-green);background:#e8f8ef;border-radius:999px;justify-content:center;align-items:center;margin:0 auto 1rem;animation:.55s ff-pop;display:flex}@keyframes ff-pop{0%{opacity:0;transform:scale(.6)}70%{transform:scale(1.08)}to{opacity:1;transform:scale(1)}}.ff-book__summary{text-align:left;background:var(--ff-secondary);border:1px solid #d9e0ef;border-radius:16px;gap:.75rem;max-width:420px;margin:1.35rem auto;padding:1rem 1.15rem;display:grid}.ff-book__summary div{grid-template-columns:110px 1fr;gap:.5rem;display:grid}.ff-book__summary dt{color:var(--ff-muted);font-size:.85rem}.ff-book__summary dd{margin:0;font-weight:600}.ff-book__confirm-actions{flex-wrap:wrap;justify-content:center;gap:.65rem;display:flex}.ff-book__confirm-actions .ff-book__primary,.ff-book__confirm-actions .ff-book__ghost{width:auto;min-width:160px}.ff-book__manage-form{grid-template-columns:1fr auto;align-items:end;gap:.75rem;margin:1rem 0;display:grid}@media (width<=640px){.ff-book__manage-form{grid-template-columns:1fr}}.ff-book__manage-card{border:1px solid var(--ff-line);background:#fff;border-radius:18px;margin-top:.5rem;padding:1rem}.ff-book__manage-card.is-canceled{opacity:.92}.ff-book__cancel{gap:.75rem;margin-top:1rem;display:grid}.ff-book__canceled-msg{color:var(--ff-green);align-items:center;gap:.4rem;font-weight:600;display:inline-flex}.ff-book__error{color:var(--ff-danger);margin:.5rem 0 0;font-size:.92rem}.ff-book__empty{color:var(--ff-muted);font-size:.95rem}.ff-book__state{min-height:240px;color:var(--ff-muted);flex-direction:column;justify-content:center;align-items:center;gap:.75rem;display:flex}.ff-book__state--error{color:var(--ff-danger)}.ff-book__spin{animation:.8s linear infinite ff-spin}@keyframes ff-spin{to{transform:rotate(360deg)}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
