:root{--brand: #1e7a2e;--brand-dark: #5ac873;--accent: #2ead45;--warn: #f5a623;--danger: #d23b3b;--bg: #ffffff;--surface: #f4f9f5;--card: #ffffff;--fg: #0d1f10;--hint: #4a6651;--border: #d1e8d5;--primary: var(--brand)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);font-family:Inter,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3,.font-head{font-family:Montserrat,Inter,sans-serif;font-weight:700}#root{max-width:520px;margin:0 auto;min-height:100vh}button{font-family:inherit;cursor:pointer}.app{padding:12px 14px 32px}.month-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:14px}.month-title{font-family:Montserrat,sans-serif;font-weight:700;font-size:18px;text-align:center;flex:1}.nav-btn{background:var(--surface);border:1px solid var(--border);color:var(--fg);border-radius:10px;width:40px;height:40px;font-size:18px;display:flex;align-items:center;justify-content:center;flex:none}.today-btn{background:transparent;border:1px solid var(--primary);color:var(--primary);border-radius:999px;padding:7px 14px;font-size:13px;font-weight:600;flex:none}.weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}.weekday{text-align:center;font-size:12px;font-weight:600;color:var(--hint);padding:4px 0}.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cell{position:relative;aspect-ratio:1 / 1;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:4px 4px 3px;display:flex;flex-direction:column;align-items:stretch;text-align:left;color:inherit;overflow:hidden}.cell:disabled{visibility:hidden}.cell.out{opacity:.32}.cell.past{opacity:.55}.cell.today{border-color:var(--primary);box-shadow:inset 0 0 0 2px var(--primary)}.cell-day{font-size:13px;font-weight:600;line-height:1.1}.cell.today .cell-day{color:var(--primary)}.dots{margin-top:auto;display:flex;flex-wrap:wrap;gap:2px;align-items:center}.dot{width:7px;height:7px;border-radius:50%;flex:none}.dot-more{font-size:9px;font-weight:700;color:var(--hint);line-height:1}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-end;justify-content:center;z-index:50}.sheet{background:var(--bg);width:100%;max-width:520px;border-radius:16px 16px 0 0;padding:16px 16px 28px;max-height:82vh;overflow-y:auto;box-shadow:0 -8px 32px #00000040}.sheet-title{font-family:Montserrat,sans-serif;font-weight:700;font-size:17px;margin:0 0 14px}.meeting-row{display:block;width:100%;text-align:left;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:11px 12px;margin-bottom:8px;color:inherit}.meeting-row-top{display:flex;align-items:center;gap:8px;font-weight:600}.meeting-time{color:var(--primary);font-weight:700}.meeting-row-sub{margin-top:4px;font-size:13px;color:var(--hint);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.dir-tag{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:2px 9px;border-radius:999px;color:#fff}.dir-swatch{width:8px;height:8px;border-radius:50%;background:#fff;flex:none}.detail-field{display:flex;gap:8px;padding:9px 0;border-bottom:1px solid var(--border);font-size:14px}.detail-field:last-of-type{border-bottom:none}.detail-label{flex:none;color:var(--hint)}.detail-value{font-weight:600;word-break:break-word}.phone-link{color:var(--primary);text-decoration:none;font-weight:600}.status-badge{display:inline-block;font-size:12px;font-weight:600;padding:2px 9px;border-radius:999px}.status-active{background:#2ead4526;color:var(--accent)}.status-cancelled{background:#d23b3b26;color:var(--danger)}.btn-danger{width:100%;margin-top:18px;background:var(--danger);color:#fff;border:none;border-radius:12px;padding:13px;font-size:15px;font-weight:600}.btn-danger:disabled{opacity:.6}.btn-secondary{width:100%;margin-top:8px;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:12px;padding:13px;font-size:15px;font-weight:600}.btn-retry{margin-top:14px;background:var(--primary);color:#fff;border:none;border-radius:12px;padding:11px 22px;font-size:14px;font-weight:600}.confirm-box{margin-top:16px;background:#f5a6231f;border:1px solid var(--warn);border-radius:12px;padding:14px}.confirm-text{font-size:14px;font-weight:600;margin:0 0 12px}.confirm-actions{display:flex;gap:8px}.confirm-actions button{flex:1;border-radius:10px;padding:11px;font-size:14px;font-weight:600;border:none}.confirm-yes{background:var(--danger);color:#fff}.confirm-no{background:var(--surface);border:1px solid var(--border)!important;color:var(--fg)}.state{text-align:center;padding:48px 20px;color:var(--hint)}.state-strong{font-family:Montserrat,sans-serif;font-weight:700;font-size:17px;color:var(--fg);margin-bottom:6px}.empty{text-align:center;color:var(--hint);padding:28px 12px;font-size:14px}.spinner{width:34px;height:34px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 14px}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%);background:var(--fg);color:var(--bg);padding:9px 16px;border-radius:999px;font-size:13px;font-weight:600;z-index:80}
