:root{font-family:system-ui,-apple-system,sans-serif;--border: #d1d5db;--bar-bg: #1f2937}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:#f3f4f6}button{cursor:pointer;font:inherit}.calendar-screen{display:flex;flex-direction:column;height:100%}.loading{padding:2rem;text-align:center}.login{max-width:320px;margin:4rem auto;display:flex;flex-direction:column;gap:.75rem;padding:1.5rem;background:#fff;border-radius:8px}.login h1{margin:0 0 .5rem;font-size:1.25rem;text-align:center}.login input{padding:.6rem;border:1px solid var(--border);border-radius:6px}.login button{padding:.6rem;border:0;border-radius:6px;background:var(--bar-bg);color:#fff}.error{color:#dc2626;margin:0;font-size:.9rem}.calendar-screen__bar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.5rem .75rem;background:var(--bar-bg);color:#fff}.calendar-screen__bar button{padding:.4rem .7rem;border:0;border-radius:6px;background:#374151;color:#fff}.calendar-screen__add{background:#2563eb!important}.calendar-screen__mobile-nav{display:flex;align-items:center;gap:.5rem}.week-grid{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:56px repeat(var(--day-count),minmax(0,1fr));grid-auto-rows:max-content;gap:1px;background:var(--border);padding:1px;overflow:auto}.week-grid__corner{position:sticky;top:0;left:0;z-index:3;background:#fff}.week-grid__hour-label{min-height:64px;display:flex;align-items:flex-start;justify-content:flex-end;padding:2px 4px;font-size:.75rem;color:#6b7280;background:#fff}.day-column__head{position:sticky;top:0;z-index:2;min-height:36px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-bottom:1px solid var(--border);font-size:.8rem;background:#fff}.day-column__weekday{font-weight:600}.day-column__date{color:#6b7280;font-size:.7rem}.slot-cell{min-height:64px;background:#fff;padding:2px;display:flex;flex-direction:column;gap:2px}.slot-cell__add{margin-top:auto;border:1px dashed var(--border);border-radius:4px;background:transparent;color:#9ca3af;font-size:.85rem;line-height:1.2}.appointment-card{text-align:left;border:1px solid var(--border);border-radius:4px;background:#eff6ff;padding:3px 5px;display:flex;flex-direction:column;flex-shrink:0;font-size:.72rem}.appointment-card__model{font-weight:600}.appointment-card__works{color:#4b5563}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#00000073;display:flex;align-items:center;justify-content:center;padding:1rem}.modal__body{background:#fff;border-radius:8px;width:100%;max-width:380px;max-height:90vh;overflow-y:auto}.appointment-form{display:flex;flex-direction:column;gap:.6rem;padding:1.25rem}.appointment-form h2{margin:0;font-size:1.1rem}.appointment-form label{display:flex;flex-direction:column;gap:.2rem;font-size:.85rem}.appointment-form input,.appointment-form select,.appointment-form textarea{padding:.45rem;border:1px solid var(--border);border-radius:6px;font:inherit}.appointment-form textarea{resize:vertical;min-height:48px}.appointment-form__actions{display:flex;gap:.5rem;flex-wrap:wrap}.appointment-form__actions button{flex:1;padding:.55rem;border:0;border-radius:6px;background:#2563eb;color:#fff}.appointment-form__actions button[type=button]{background:#6b7280}.appointment-form__actions .danger{background:#dc2626}.voice-modal{padding:1.25rem;display:flex;flex-direction:column;gap:.75rem}.voice-modal h2{margin:0;font-size:1.1rem}.voice-modal__timer{font-size:2rem;font-variant-numeric:tabular-nums;text-align:center;margin:.25rem 0}.voice-modal__hint{color:#4b5563;font-size:.9rem;margin:0}.voice-modal__actions{display:flex;gap:.5rem;flex-wrap:wrap}.voice-modal__actions button{flex:1;padding:.55rem;border:0;border-radius:6px;background:#2563eb;color:#fff}.voice-modal__actions button[type=button]:last-child{background:#6b7280}.appointment-form__transcript{background:#fef3c7;border:1px solid #fbbf24;border-radius:6px;padding:.5rem .6rem;font-size:.85rem;color:#92400e}.calendar-screen__mic{background:#16a34a!important;font-size:1.05rem}.calendar-screen__mic[disabled]{opacity:.5;cursor:default}
