*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--tg-bg-color, #ffffff);color:var(--tg-text-color, #000000);-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer;border:none;background:none}button:disabled{cursor:not-allowed;opacity:.5}.app-container{min-height:100vh;display:flex;flex-direction:column}.page{padding:16px 16px 32px;display:flex;flex-direction:column;gap:16px;animation:fade-in .2s ease-out}.page h1{font-size:20px;font-weight:600;margin-bottom:4px}.page-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.link-button{font-size:14px;font-weight:600;color:var(--tg-button-color, #2481cc);white-space:nowrap}.empty-state{color:var(--tg-hint-color, #999999);text-align:center;padding:32px 0;font-size:14px}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.primary-button{background:var(--tg-button-color, #2481cc);color:var(--tg-button-text-color, #ffffff);padding:14px 20px;border-radius:12px;font-size:16px;font-weight:600;width:100%;transition:opacity .15s ease}.primary-button:active:not(:disabled){opacity:.8}.loading-spinner{display:flex;align-items:center;justify-content:center;min-height:60vh}.spinner{width:36px;height:36px;border:3px solid var(--tg-secondary-bg-color, #f4f4f5);border-top-color:var(--tg-button-color, #2481cc);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{background:#fdecea;color:#c0392b;border-radius:10px;padding:12px 14px;font-size:14px;display:flex;flex-direction:column;gap:8px}.retry-button{align-self:flex-start;color:#c0392b;text-decoration:underline;font-weight:600;font-size:13px}.service-list{display:flex;flex-direction:column;gap:10px}.service-card{background:var(--tg-secondary-bg-color, #f4f4f5);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;transition:transform .1s ease}.service-card:active{transform:scale(.98)}.service-name{font-size:16px;font-weight:600;color:var(--tg-text-color, #000000)}.service-meta{font-size:13px;color:var(--tg-hint-color, #999999)}.calendar{display:flex;flex-direction:column;gap:10px}.calendar-header{display:flex;align-items:center;justify-content:space-between}.calendar-month-label{font-size:15px;font-weight:600;text-transform:capitalize}.calendar-nav{width:32px;height:32px;border-radius:50%;background:var(--tg-secondary-bg-color, #f4f4f5);color:var(--tg-text-color, #000000);font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-weekday{font-size:11px;text-align:center;text-transform:uppercase;opacity:.6}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-cell-empty{height:40px}.calendar-day{height:40px;border-radius:10px;background:var(--tg-secondary-bg-color, #f4f4f5);color:var(--tg-text-color, #000000);font-size:14px;font-weight:500;transition:background .15s ease,color .15s ease}.calendar-day-today{box-shadow:inset 0 0 0 1.5px var(--tg-button-color, #2481cc)}.calendar-day-selected{background:var(--tg-button-color, #2481cc);color:var(--tg-button-text-color, #ffffff)}.slot-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.slot-button{position:relative;padding:14px 10px;border-radius:12px;font-size:14px;font-weight:500;text-align:center}.slot-free{background:var(--tg-secondary-bg-color, #f4f4f5);color:var(--tg-text-color, #000000)}.slot-free:active{background:var(--tg-button-color, #2481cc);color:var(--tg-button-text-color, #ffffff)}.slot-booked{background:transparent;border:1px solid var(--tg-hint-color, #cccccc);color:var(--tg-hint-color, #999999);text-decoration:line-through}.slot-badge{display:block;font-size:10px;text-decoration:none;margin-top:2px;opacity:.8}.note-input{width:100%;min-height:90px;padding:12px;border-radius:12px;border:1px solid var(--tg-secondary-bg-color, #e0e0e0);background:var(--tg-secondary-bg-color, #f4f4f5);color:var(--tg-text-color, #000000);font-size:14px;resize:vertical}.note-input:focus{outline:2px solid var(--tg-button-color, #2481cc)}.booking-list{display:flex;flex-direction:column;gap:10px}.booking-card{background:var(--tg-secondary-bg-color, #f4f4f5);border-radius:12px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;border-left:4px solid transparent}.booking-pending{border-left-color:#e0a800}.booking-confirmed{border-left-color:#2ecc71}.booking-cancelled{border-left-color:#e74c3c;opacity:.6}.booking-status{font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;background:#0000000d}.cancel-button{font-size:13px;color:#e74c3c;font-weight:600;text-decoration:underline}@media(max-width:360px){.slot-grid{grid-template-columns:1fr}}
