:root {
  color-scheme: light;
  --bg: #f5f5f7;
  --surface: rgba(255,255,255,.92);
  --surface-solid: #fff;
  --text: #161617;
  --muted: #6e6e73;
  --line: rgba(60,60,67,.14);
  --blue: #0a6cff;
  --blue-dark: #0058d6;
  --red: #d82c2c;
  --green: #25a55f;
  --shadow: 0 18px 50px rgba(0,0,0,.08),0 2px 10px rgba(0,0,0,.04);
  --radius: 24px;
  --font: -apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",sans-serif;
}

* { box-sizing: border-box; }
html { min-height: 100%; background: var(--bg); }
body { margin: 0; min-height: 100%; color: var(--text); font: 16px/1.45 var(--font); -webkit-font-smoothing: antialiased; }
button,input,select,textarea { font: inherit; }
button,a,select,input { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; }
a { color: var(--blue); }
[hidden] { display: none !important; }
.sr-only { position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important; }

.public-page {
  background:
    radial-gradient(circle at 12% 0%,rgba(65,144,255,.14),transparent 30rem),
    radial-gradient(circle at 90% 20%,rgba(255,87,94,.08),transparent 27rem),var(--bg);
}
.public-shell { width: min(680px,calc(100% - 32px)); margin: 0 auto; padding: max(36px,env(safe-area-inset-top)) 0 max(32px,env(safe-area-inset-bottom)); }
.brand-header { display:flex;align-items:center;gap:18px;margin: 8px 2px 28px; }
.brand-header h1 { margin:2px 0 0;font-size:clamp(1.8rem,7vw,2.5rem);letter-spacing:-.045em;line-height:1.05; }
.eyebrow { margin:0;color:var(--muted);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase; }
.calendar-mark { width:74px;height:74px;border-radius:19px;background:linear-gradient(180deg,#ff615b 0 29%,#fff 29%);box-shadow:0 8px 20px rgba(0,0,0,.14);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:5px;flex:none;overflow:hidden; }
.calendar-mark span { align-self:stretch;margin-bottom:auto;text-align:center;color:#fff;font-size:.65rem;font-weight:800;line-height:21px;letter-spacing:.08em; }
.calendar-mark strong { font-size:2rem;line-height:1;color:#111;font-variant-numeric:tabular-nums; }
.calendar-mark.small { width:62px;height:62px;border-radius:16px;margin-bottom:18px; }
.calendar-mark.small strong { font-size:1.7rem; }
.calendar-mark.tiny { width:38px;height:38px;border-radius:10px;padding:3px; }
.calendar-mark.tiny span { font-size:.45rem;line-height:12px; }
.calendar-mark.tiny strong { font-size:1rem; }

.subscribe-card,.help-card,.login-card { background:var(--surface);border:1px solid rgba(255,255,255,.8);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px); }
.subscribe-card { padding:clamp(22px,6vw,38px); }
.card-heading { margin-bottom:26px; }
.card-heading h2,.help-card h2 { margin:13px 0 7px;letter-spacing:-.025em;font-size:1.4rem; }
.card-heading p:not(.status-pill),.help-card p { margin:0;color:var(--muted); }
.status-pill { display:inline-flex;align-items:center;gap:7px;margin:0;padding:6px 10px;border-radius:999px;background:#edf8f1;color:#267646;font-size:.78rem;font-weight:700; }
.status-pill span { width:7px;height:7px;border-radius:50%;background:#2fbc68;box-shadow:0 0 0 4px rgba(47,188,104,.13); }

.field-label,.form-grid label>span,.catalog-form label>span { display:block;margin:0 0 7px;color:#4a4a4f;font-size:.85rem;font-weight:650; }
input,select,textarea { width:100%;border:1px solid var(--line);border-radius:13px;background:rgba(248,248,250,.95);color:var(--text);padding:12px 13px;outline:none;transition:border .16s,box-shadow .16s,background .16s; }
input:focus,select:focus,textarea:focus { border-color:rgba(10,108,255,.65);box-shadow:0 0 0 4px rgba(10,108,255,.12);background:#fff; }
.select-control { appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9'%3E%3Cpath d='m1 1 6 6 6-6' fill='none' stroke='%236e6e73' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 15px center;padding-right:42px;min-height:50px; }
.select-control.compact { width:auto;min-width:190px;min-height:42px;padding-block:9px; }
.field-help { margin:7px 2px 20px;color:var(--muted);font-size:.8rem; }
.group-fields { display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:24px; }
.group-field:first-child:last-child { grid-column:1/-1; }
.primary-button,.secondary-button,.danger-button,.ghost-button { border:0;border-radius:14px;padding:13px 17px;font-weight:700;transition:transform .12s,background .12s,opacity .12s; }
.primary-button { width:100%;min-height:52px;background:var(--blue);color:#fff;box-shadow:0 8px 20px rgba(10,108,255,.24); }
.primary-button:hover { background:var(--blue-dark); }
.primary-button:active,.secondary-button:active { transform:scale(.985); }
.primary-button:disabled { opacity:.55;cursor:wait; }
.primary-button.compact { width:auto;min-height:42px;padding:10px 15px; }
.secondary-button { background:#ececf0;color:#222; }
.danger-button { background:#fff0f0;color:var(--red); }
.ghost-button { padding:8px 12px;background:transparent;color:var(--blue); }
.form-message { min-height:1.25em;margin:11px 2px 0;color:var(--red);font-size:.86rem;text-align:center; }

.subscription-result { margin-top:25px;padding-top:24px;border-top:1px solid var(--line); }
.success-row { display:flex;align-items:center;gap:12px;margin-bottom:16px; }
.success-row p { margin:1px 0 0;color:var(--muted);font-size:.86rem; }
.success-icon { display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#e8f8ee;color:var(--green);font-weight:900; }
.url-control { display:flex;gap:8px;padding:6px;border:1px solid var(--line);border-radius:15px;background:#f3f3f5; }
.url-control input { min-width:0;border:0;box-shadow:none;background:transparent;padding:7px 8px;font-size:.83rem;color:var(--muted); }
.url-control button { border:0;border-radius:10px;background:#fff;color:var(--blue);padding:7px 12px;font-weight:700;box-shadow:0 1px 4px rgba(0,0,0,.08); }
.calendar-actions { display:grid;gap:9px;margin-top:14px; }
.provider-button { display:block;border-radius:13px;padding:12px 14px;text-decoration:none;font-weight:700;text-align:center;background:#f3f3f5;color:#1d1d1f; }
.provider-button:first-child { background:#171719;color:#fff; }

.help-card { margin-top:18px;padding:22px 26px; }
.help-card h2 { margin-top:0; }
details { border-top:1px solid var(--line);padding:14px 0 2px; }
details:first-of-type { margin-top:12px; }
summary { list-style:none;cursor:pointer;font-weight:650; }
summary::-webkit-details-marker { display:none; }
details p { padding:10px 0 8px;font-size:.9rem; }
footer { display:flex;justify-content:center;gap:9px;padding:26px;color:var(--muted);font-size:.78rem; }
footer a { color:inherit;text-decoration:none; }

.login-shell { min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 0,rgba(10,108,255,.14),transparent 35rem),var(--bg); }
.login-card { width:min(430px,100%);padding:36px; }
.login-card h1 { margin:5px 0 4px;letter-spacing:-.035em; }
.login-card>p:not(.eyebrow) { margin:0 0 25px;color:var(--muted); }
.login-card form { display:grid;gap:11px; }
.login-card .primary-button { margin-top:8px; }
.back-link { display:block;margin-top:22px;color:var(--muted);font-size:.85rem;text-align:center;text-decoration:none; }

.admin-page { background:var(--bg); }
.admin-header { position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;height:66px;padding:0 max(20px,calc((100vw - 1320px)/2));background:rgba(250,250,252,.88);border-bottom:1px solid var(--line);backdrop-filter:blur(22px); }
.admin-brand { display:flex;align-items:center;gap:11px; }
.admin-brand>div:last-child { display:flex;flex-direction:column;line-height:1.2; }
.admin-brand span,.admin-account span { color:var(--muted);font-size:.78rem; }
.admin-account { display:flex;align-items:center;gap:8px; }
.admin-shell { width:min(1320px,calc(100% - 32px));margin:0 auto;padding:24px 0 50px; }
.toolbar { display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px; }
.tab-bar { display:flex;gap:4px;padding:4px;border-radius:14px;background:#e9e9ed;overflow:auto; }
.tab { flex:none;border:0;border-radius:10px;padding:9px 14px;background:transparent;color:var(--muted);font-size:.86rem;font-weight:650; }
.tab.active { background:#fff;color:var(--text);box-shadow:0 1px 5px rgba(0,0,0,.09); }
.tab-panel { display:none;padding-top:21px; }
.tab-panel.active { display:block; }
.section-heading { display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:17px; }
.section-heading h1,.week-toolbar h1 { margin:0;font-size:1.3rem;letter-spacing:-.025em; }
.section-heading p { margin:3px 0 0;color:var(--muted);font-size:.87rem; }

.week-toolbar { display:grid;grid-template-columns:44px 1fr 44px;align-items:center;margin:0 auto 14px;max-width:520px;text-align:center; }
.week-toolbar>div { display:flex;align-items:center;justify-content:center;gap:10px; }
.icon-button { display:grid;place-items:center;width:38px;height:38px;border:0;border-radius:50%;background:#fff;color:var(--blue);font-size:1.8rem;box-shadow:0 2px 9px rgba(0,0,0,.07); }
.text-button { border:0;background:transparent;color:var(--blue);font-size:.82rem; }
.schedule-scroll { overflow:auto;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 8px 30px rgba(0,0,0,.04); }
.schedule { position:relative;min-width:900px;height:696px;padding-left:58px; }
.schedule-header { position:absolute;left:58px;right:0;top:0;height:45px;display:grid;grid-template-columns:repeat(5,1fr);background:#fbfbfc;border-bottom:1px solid var(--line); }
.schedule-day-head { display:flex;align-items:center;justify-content:center;border-left:1px solid var(--line);font-size:.8rem;font-weight:700;color:#555; }
.schedule-day-head.today { color:var(--blue);background:#eef5ff; }
.schedule-grid { position:absolute;left:58px;right:0;top:45px;height:630px;display:grid;grid-template-columns:repeat(5,1fr); }
.schedule-day { position:relative;border-left:1px solid var(--line); }
.schedule-hour-line { position:absolute;left:0;right:0;border-top:1px solid rgba(60,60,67,.1);pointer-events:none; }
.schedule-hour { position:absolute;left:8px;width:43px;transform:translateY(-50%);font-size:.7rem;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums; }
.schedule-event { position:absolute;z-index:2;min-height:22px;border:0;border-left:4px solid var(--event-color,#3478f6);border-radius:8px;padding:5px 6px;background:color-mix(in srgb,var(--event-color,#3478f6) 17%,#fff);color:#252528;text-align:left;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.08); }
.schedule-event:hover { filter:brightness(.98);z-index:5; }
.schedule-event strong { display:block;font-size:.7rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.schedule-event span { display:block;margin-top:2px;font-size:.62rem;line-height:1.15;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.schedule-event.cancelled { opacity:.5;text-decoration:line-through;background:#eee; }

.data-list { display:grid;gap:9px; }
.data-row { display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(140px,.8fr) minmax(180px,1fr) auto;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:15px;background:#fff; }
.data-row h3 { margin:0;font-size:.95rem; }
.data-row p { margin:2px 0 0;color:var(--muted);font-size:.78rem; }
.data-row .status { display:inline-flex;width:max-content;border-radius:999px;padding:4px 8px;background:#eef5ff;color:#286bbd;font-size:.7rem;font-weight:700;text-transform:uppercase; }
.data-row .status.cancelled { background:#fff0f0;color:var(--red); }
.row-actions { display:flex;gap:5px; }
.row-actions button { border:0;border-radius:9px;padding:7px 10px;background:#f0f0f3;color:#333; }
.row-actions .delete { color:var(--red); }
.empty-state { padding:38px;border:1px dashed var(--line);border-radius:18px;color:var(--muted);text-align:center; }

.catalogs-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:14px; }
.catalog-card { padding:18px;border:1px solid var(--line);border-radius:18px;background:#fff; }
.catalog-card h2 { margin:0 0 14px;font-size:1rem; }
.catalog-form { display:grid;grid-template-columns:1fr auto;gap:8px;margin-bottom:14px; }
.catalog-form.subject-form { grid-template-columns:1fr 52px auto; }
.catalog-form button { border:0;border-radius:11px;background:var(--blue);color:#fff;padding:0 13px;font-weight:700; }
.catalog-list { display:flex;flex-wrap:wrap;gap:6px; }
.catalog-chip { display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:999px;background:#f1f1f4;font-size:.76rem; }
.catalog-dot { width:8px;height:8px;border-radius:50%; }
.history-list { overflow:hidden;border:1px solid var(--line);border-radius:18px;background:#fff; }
.history-row { display:grid;grid-template-columns:150px 1fr 130px;gap:14px;padding:13px 16px;border-bottom:1px solid var(--line);font-size:.82rem; }
.history-row:last-child { border-bottom:0; }
.history-row time,.history-row span:last-child { color:var(--muted); }

.modal { width:min(760px,calc(100% - 28px));max-height:calc(100vh - 34px);padding:0;border:0;border-radius:22px;background:#fff;color:var(--text);box-shadow:0 24px 80px rgba(0,0,0,.28); }
.modal::backdrop { background:rgba(15,16,20,.34);backdrop-filter:blur(4px); }
.modal form,.action-modal { padding:24px; }
.small-modal { width:min(620px,calc(100% - 28px)); }
.action-modal { width:min(500px,calc(100% - 28px)); }
.modal-header { display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:20px; }
.modal-header h2 { margin:2px 0 0;letter-spacing:-.025em; }
.modal-header p:not(.eyebrow) { margin:4px 0;color:var(--muted);font-size:.88rem; }
.close-button { flex:none;display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:50%;background:#ececef;color:#555;font-size:1.3rem; }
.form-grid { display:grid;grid-template-columns:1fr 1fr;gap:15px; }
.form-grid label { min-width:0; }
.form-grid .wide { grid-column:1/-1; }
.form-section { margin-top:18px;padding-top:17px;border-top:1px solid var(--line); }
.switch-row { display:flex!important;align-items:center;gap:9px; }
.switch-row input { width:20px;height:20px;margin:0; }
.compact-grid { margin-top:12px; }
.checkbox-grid { display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px; }
.checkbox-option { display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:11px;background:#f4f4f6;font-size:.82rem; }
.checkbox-option input { width:18px;height:18px; }
.modal-actions { display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:22px; }
.modal-actions.split { justify-content:space-between; }
.modal-actions.split>div { display:flex;gap:8px; }
.action-list { display:grid;gap:1px;border-radius:14px;overflow:hidden;background:var(--line); }
.action-list button { border:0;padding:14px;background:#fff;text-align:left;color:var(--blue);font-weight:650; }
.action-list .danger-text { color:var(--red); }
.toast { position:fixed;z-index:100;left:50%;bottom:max(20px,env(safe-area-inset-bottom));transform:translate(-50%,20px);padding:10px 15px;border-radius:999px;background:#1c1c1e;color:#fff;font-size:.85rem;opacity:0;pointer-events:none;transition:.2s;box-shadow:0 8px 28px rgba(0,0,0,.25); }
.toast.show { opacity:1;transform:translate(-50%,0); }

@media (max-width:760px) {
  .public-shell { width:min(100% - 22px,680px);padding-top:max(24px,env(safe-area-inset-top)); }
  .brand-header { margin-left:8px; }
  .subscribe-card { border-radius:22px; }
  .group-fields,.form-grid,.checkbox-grid { grid-template-columns:1fr; }
  .form-grid .wide { grid-column:auto; }
  .admin-header { padding:0 13px; }
  .admin-account span { display:none; }
  .admin-shell { width:calc(100% - 22px);padding-top:13px; }
  .toolbar { align-items:stretch; }
  .toolbar .select-control { min-width:0;width:100%; }
  .toolbar>div { flex:1; }
  .primary-button.compact { white-space:nowrap; }
  .tab-bar { margin-inline:-11px;border-radius:0;padding-inline:11px; }
  .data-row { grid-template-columns:1fr auto;gap:8px; }
  .data-row>div:nth-child(2),.data-row>div:nth-child(3) { grid-column:1; }
  .row-actions { grid-column:2;grid-row:1/4;flex-direction:column; }
  .catalogs-grid { grid-template-columns:1fr; }
  .history-row { grid-template-columns:1fr;gap:3px; }
  .week-toolbar>div { flex-direction:column;gap:0; }
  .modal { max-height:calc(100dvh - 18px);border-radius:20px; }
  .modal form,.action-modal { padding:19px; }
  .modal-actions.split { align-items:stretch;flex-direction:column; }
  .modal-actions.split>div { justify-content:flex-end; }
}

@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important;transition:none!important;animation:none!important; } }
