@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:ital,wght@1,600&display=swap");:root{color-scheme:light;--ink:#18221d;--muted:#707a74;--surface:#f7f8fa;--card:#fff;--accent:#476b55;--accent-soft:#e6eee8;--line:#e5e8e6}*{box-sizing:border-box}html{background:var(--surface);font-family:DM Sans,sans-serif;-webkit-text-size-adjust:100%}body{margin:0;color:var(--ink)}button,input{font:inherit}a,button{-webkit-tap-highlight-color:transparent}button{color:inherit}.eyebrow{margin:0 0 6px;color:var(--accent);font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.auth-shell{min-height:100dvh;display:grid;align-items:end;overflow:hidden;background:radial-gradient(circle at 85% 8%,#cbded0 0,transparent 35%),linear-gradient(160deg,#f9faf9 10%,#eef3ef)}.auth-shell:before{content:"";position:fixed;width:260px;height:260px;border:1px solid rgba(71,107,85,.14);border-radius:50%;top:-78px;right:-72px;box-shadow:0 0 0 28px rgba(71,107,85,.04),0 0 0 60px rgba(71,107,85,.025)}.auth-card{position:relative;width:100%;max-width:480px;margin:0 auto;padding:32px 26px max(32px,env(safe-area-inset-bottom));border-radius:34px 34px 0 0;background:rgba(255,255,255,.92);box-shadow:0 -16px 60px rgba(39,60,47,.08);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.brand-mark{width:46px;height:46px;margin-bottom:30px;display:grid;place-items:center;border-radius:15px 15px 15px 5px;color:white;background:var(--accent);box-shadow:0 9px 22px rgba(71,107,85,.24)}.brand-mark span{font-family:Fraunces,serif;font-size:24px;font-style:italic}.environment-switcher{position:absolute;top:34px;right:26px}.environment-trigger{min-width:82px;padding:7px 11px;border:0;border-radius:999px;color:white;font-size:11px;font-weight:700;letter-spacing:.02em}.environment-localhost{background:#ff9800}.environment-stage{background:#2196f3}.environment-stage2{background:#673ab7}.environment-prod{background:#4caf50}.environment-overlay{position:fixed;z-index:20;inset:0;display:grid;place-items:center;padding:24px;background:rgba(15,22,18,.5);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.environment-dialog{width:min(100%,320px);padding:22px;border-radius:22px;background:white;box-shadow:0 24px 70px rgba(24,34,29,.24)}.environment-dialog h2{margin:0 0 18px;text-align:center;font-size:18px}.environment-options{display:grid;gap:8px}.environment-options button{padding:12px 14px;display:grid;gap:3px;border:2px solid transparent;border-radius:12px;background:#f3f5f3}.environment-options button.selected{border-color:var(--accent);color:white;background:var(--accent)}.environment-options strong{font-size:14px}.environment-options span{color:var(--muted);font-size:11px}.environment-options button.selected span{color:rgba(255,255,255,.7)}.environment-cancel{width:100%;margin-top:14px;padding:11px;border:0;border-radius:12px;background:#e5e8e6;font-weight:600}.auth-card h1{margin:0;font-size:clamp(42px,12vw,58px);line-height:.98;letter-spacing:-.055em}.auth-card h1 em{color:var(--accent);font-family:Fraunces,serif;font-weight:600}.auth-intro{margin:20px 0 30px;color:var(--muted);font-size:15px;line-height:1.55;max-width:330px}.auth-card form{display:grid;gap:18px}.auth-card label{display:grid;gap:8px;font-size:13px;font-weight:600}.auth-card input{width:100%;height:54px;padding:0 16px;outline:0;border:1px solid var(--line);border-radius:15px;background:#f9faf9;color:var(--ink);transition:border-color .2s,box-shadow .2s}.auth-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(71,107,85,.1)}.password-field{position:relative}.password-field button{position:absolute;inset:0 4px 0 auto;width:48px;border:0;background:transparent;display:grid;place-items:center}.password-field svg{width:19px;color:var(--muted)}.primary-button{height:56px;margin-top:4px;padding:0 18px;display:flex;align-items:center;justify-content:center;gap:10px;border:0;border-radius:17px;color:white;background:var(--ink);font-weight:700;box-shadow:0 10px 24px rgba(24,34,29,.18)}.primary-button svg{width:19px}.primary-button:disabled{opacity:.65}.form-error{margin:-5px 0 0;color:#a23d3d;font-size:13px}.support-link{display:block;margin-top:22px;color:var(--muted);text-align:center;font-size:13px;text-decoration:none}.schedule-shell{width:100%;min-height:100dvh;max-width:640px;margin:auto;padding:max(22px,env(safe-area-inset-top)) 18px max(30px,env(safe-area-inset-bottom))}.schedule-header{display:flex;align-items:center;justify-content:space-between;padding:4px 4px 20px}.schedule-header h1{margin:0;font-size:27px;line-height:1;letter-spacing:-.04em}.icon-button,.month-nav button{display:grid;place-items:center;border:1px solid var(--line);background:var(--card)}.icon-button{width:43px;height:43px;border-radius:14px}.icon-button svg,.month-nav svg{width:19px}.month-nav{height:42px;margin-bottom:18px;display:grid;grid-template-columns:42px 1fr 42px;gap:8px}.month-nav button{border-radius:12px}.month-nav .today-button{font-size:13px;font-weight:700}.date-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;padding-bottom:22px}.date-strip button{height:70px;padding:7px 2px;display:grid;justify-items:center;align-content:space-between;border:0;border-radius:17px;background:transparent}.date-strip span{color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase}.date-strip strong{font-size:17px}.date-strip i{width:4px;height:4px;border-radius:50%;background:transparent}.date-strip button.selected{color:white;background:var(--accent);box-shadow:0 9px 22px rgba(71,107,85,.22)}.date-strip button.selected span{color:rgba(255,255,255,.72)}.date-strip button.selected i{background:white}.agenda{min-height:420px;margin:0 -18px -30px;padding:26px 22px 40px;border-radius:30px 30px 0 0;background:var(--card);box-shadow:0 -8px 35px rgba(24,34,29,.045)}.agenda-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:24px}.agenda-title p{margin:0 0 3px;color:var(--accent);font-size:12px;font-weight:700}.agenda-title h2{margin:0;font-size:24px;letter-spacing:-.035em}.agenda-title>span{padding:7px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:700}.appointment-list{display:grid;gap:15px}.appointment-card{display:grid;grid-template-columns:52px 3px 1fr;gap:13px;min-height:112px}.appointment-card time{padding-top:4px;font-size:15px;font-weight:700}.appointment-line{border-radius:99px;background:#b9cebf}.appointment-content{padding:15px;border:1px solid #edf0ee;border-radius:17px;background:#fafbfa}.appointment-content h3{margin:10px 0 4px;font-size:16px}.appointment-content p{margin:0;color:var(--muted);font-size:13px}.status-row{display:flex;justify-content:space-between;align-items:center}.status-row>span:last-child{display:flex;gap:4px;align-items:center;color:var(--muted);font-size:11px}.status-row svg{width:13px}.status{padding:4px 7px;border-radius:7px;background:var(--accent-soft);color:var(--accent);font-size:9px;font-weight:700;text-transform:uppercase}.empty-state,.schedule-state{padding:55px 25px;color:var(--muted);text-align:center}.schedule-state.error{color:#a23d3d}.empty-state svg{width:34px;height:34px;margin:0 auto 14px;color:#9caf9f}.empty-state h3{margin:0 0 6px;color:var(--ink);font-size:17px}.empty-state p{max-width:280px;margin:auto;font-size:13px;line-height:1.5}@media (min-width:600px){.auth-shell{align-items:center}.auth-card{border-radius:34px}.agenda{border-radius:30px;margin-bottom:0}}@media (prefers-reduced-motion:no-preference){.auth-card{animation:rise .5s cubic-bezier(.22,.8,.25,1) both}@keyframes rise{0%{opacity:0;transform:translateY(22px)}}}.schedule-list-shell{padding-inline:0;background:var(--surface)}.schedule-list-shell .schedule-header{position:relative;display:grid;grid-template-columns:44px 1fr 44px;gap:8px;padding:8px 62px 16px 14px;text-align:center}.month-arrow{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:14px;background:white}.month-arrow svg{width:18px}.sign-out-button{position:absolute;right:14px;top:8px}.mobile-month-calendar{padding:4px 13px 12px;border-radius:0 0 28px 28px;background:var(--surface);box-shadow:0 8px 20px rgba(24,34,29,.06)}.month-days,.month-weekday-labels{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}.month-weekday-labels{padding-bottom:5px}.month-weekday-labels span{height:20px;color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase}.month-days{row-gap:4px}.month-days button{position:relative;width:40px;height:40px;margin:auto;padding:0;display:grid;place-items:center;border:0;border-radius:12px;background:transparent}.month-days button>strong{font-size:14px}.month-days button.outside-month{color:#aeb4b1}.month-days button.today{color:var(--accent);background:var(--accent-soft)}.month-days button.selected{color:white;background:var(--accent)}.month-days button i{position:absolute;top:-3px;right:-7px;min-width:23px;height:16px;padding:0 4px;display:grid;place-items:center;border:2px solid var(--surface);border-radius:999px;color:white;background:var(--accent);font-size:8px;font-style:normal;font-weight:700}.schedule-filter-bar{position:sticky;z-index:7;top:0;padding:10px 14px;display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;background:rgba(247,248,250,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.schedule-filter-bar::-webkit-scrollbar{display:none}.schedule-filter-bar button{flex:0 0 auto;padding:7px 11px;border:1px solid var(--line);border-radius:999px;color:var(--muted);background:white;font-size:11px;font-weight:600}.schedule-filter-bar button.active{border-color:rgba(71,107,85,.25);color:var(--accent);background:var(--accent-soft)}.mobile-list-content{min-height:500px;padding:6px 8px 100px}.next-appointments-title{margin:26px 0 16px 44px;font-size:24px;letter-spacing:-.04em}.mobile-date-group{display:grid;grid-template-columns:38px 1fr;gap:6px;padding-bottom:16px}.mobile-date-group>aside{padding-top:9px;display:grid;align-content:start;justify-items:center}.mobile-date-group>aside strong{font-size:20px;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mobile-date-group>aside span{margin-top:4px;color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase}.mobile-date-group>aside.today span,.mobile-date-group>aside.today strong{color:var(--accent)}.mobile-group-items{min-width:0;display:grid;gap:12px}.mobile-empty-date{padding:30px 16px;border:1px dashed #d7dcda;border-radius:17px;color:var(--muted);text-align:center;font-size:13px}.mobile-appointment-card{position:relative;min-height:116px;display:grid;grid-template-columns:4px 52px 1fr;overflow:hidden;border:1px solid rgba(0,0,0,.05);border-radius:17px;background:white;box-shadow:0 2px 8px rgba(24,34,29,.045);cursor:pointer}.appointment-actions{position:absolute;z-index:5;top:7px;right:7px}.appointment-more{width:30px;height:30px;display:grid;place-items:center;border:0;border-radius:50%;color:#8b928e;background:transparent}.appointment-more:hover{background:#eef1ef}.appointment-more svg{width:18px}.appointment-actions-popover{position:absolute;z-index:20;top:32px;right:0;width:205px;padding:6px;display:grid;border:1px solid var(--line);border-radius:15px;background:white;box-shadow:0 18px 46px rgba(24,34,29,.18)}.appointment-actions-popover a,.appointment-actions-popover button{min-height:38px;padding:8px 10px;display:flex;align-items:center;gap:9px;border:0;border-radius:10px;color:var(--ink);background:transparent;font-size:12px;text-align:left;text-decoration:none}.appointment-actions-popover a:hover,.appointment-actions-popover button:hover{background:#f2f4f3}.appointment-actions-popover button.danger{color:#bd4848}.appointment-actions-popover svg{width:15px;height:15px}.floating-add-appointment{position:fixed;z-index:10;right:max(20px,calc((100vw - 640px) / 2 + 20px));bottom:max(20px,env(safe-area-inset-bottom));width:52px;height:52px;border:0;border-radius:18px;color:white;background:var(--ink);font-size:29px;font-weight:300;box-shadow:0 8px 24px rgba(24,34,29,.28)}.appointment-modal-overlay{position:fixed;z-index:30;inset:0;display:grid;align-items:end;background:rgba(15,22,18,.52);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.appointment-modal{width:min(100%,620px);max-height:92dvh;margin:0 auto;overflow-y:auto;border-radius:28px 28px 0 0;background:white;box-shadow:0 -20px 70px rgba(24,34,29,.24)}.appointment-modal>header{position:sticky;z-index:3;top:0;padding:20px 22px 16px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.appointment-modal h2{margin:0;font-size:24px;letter-spacing:-.035em}.appointment-modal>header>button{width:38px;height:38px;display:grid;place-items:center;border:0;border-radius:12px;background:#f0f2f1}.appointment-modal>header svg{width:18px}.appointment-modal form{padding:20px 22px max(28px,env(safe-area-inset-bottom));display:grid;gap:20px}.appointment-modal fieldset{min-width:0;margin:0;padding:16px;display:grid;gap:14px;border:1px solid var(--line);border-radius:18px}.appointment-modal legend{padding:0 6px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.appointment-modal label{display:grid;gap:7px;color:#4f5753;font-size:12px;font-weight:600}.appointment-modal input,.appointment-modal select{width:100%;height:46px;padding:0 12px;border:1px solid var(--line);border-radius:12px;outline:0;background:#fafbfa;color:var(--ink)}.appointment-modal input:focus,.appointment-modal select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(71,107,85,.1)}.form-grid{display:grid;gap:12px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.appointment-service-editor{position:relative;padding:14px;display:grid;gap:12px;border-radius:15px;background:#f6f8f6}.service-editor-head{display:flex;align-items:center;justify-content:space-between}.service-editor-head strong{font-size:13px}.service-editor-head button{width:30px;height:30px;display:grid;place-items:center;border:0;border-radius:9px;color:#bd4848;background:#fff}.service-editor-head svg{width:14px}.add-service-button{min-height:43px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px dashed #bdc9c1;border-radius:12px;color:var(--accent);background:var(--accent-soft);font-weight:700}.add-service-button svg{width:16px}.appointment-totals{padding:14px 16px;display:flex;justify-content:space-between;border-radius:14px;background:var(--accent-soft);color:var(--accent)}.appointment-modal form>footer{display:grid;grid-template-columns:1fr 2fr;gap:10px}.appointment-modal form>footer .primary-button{margin:0}.secondary-button{border:1px solid var(--line);border-radius:17px;background:white;font-weight:700}@media (min-width:640px){.appointment-modal-overlay{align-items:center;padding:30px}.appointment-modal{border-radius:28px}}@media (max-width:420px){.form-grid.two{grid-template-columns:1fr}}.mobile-appointment-card .card-accent{background:transparent}.mobile-appointment-card.completed .card-accent{background:#3ea568}.mobile-appointment-card.cancelled .card-accent{background:#dc5f5f}.card-time{padding:12px 4px 8px;display:flex;flex-direction:column;align-items:center}.card-time strong{color:#626a66;font-size:11px}.card-time span{margin-top:2px;color:#9ba19e;font-size:10px}.card-time svg{width:23px;height:23px;margin-top:auto;color:#9ba19e}.mobile-appointment-card.completed .card-time svg{color:#3ea568}.card-main{min-width:0;display:grid;grid-template-rows:1fr auto}.card-details{padding:12px 10px 6px 2px;display:grid;align-content:start;gap:4px}.card-details span,.card-details strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.card-details strong{font-weight:700}.card-details span{color:#59615d}.mobile-appointment-card.cancelled .card-details{color:#737a76}.card-main footer{min-height:38px;padding:4px 10px 7px 2px;display:flex;align-items:center;justify-content:space-between;gap:8px}.card-status{color:var(--muted);font-size:12px;font-weight:600;text-transform:capitalize}.completed .card-status{color:#348b58}.cancelled .card-status{color:#c14d4d}.card-actions{display:flex;gap:7px}.card-actions a{width:28px;height:28px;display:grid;place-items:center;border:1px solid rgba(71,107,85,.15);border-radius:50%;color:var(--accent);background:var(--accent-soft)}.card-actions a:last-child{color:#128c7e;background:rgba(18,140,126,.08)}.card-actions svg{width:13px;height:13px}.floating-today{position:fixed;z-index:10;left:50%;bottom:max(20px,env(safe-area-inset-bottom));transform:translateX(-50%);padding:9px 18px;border:0;border-radius:999px;color:white;background:var(--accent);font-size:12px;font-weight:700;box-shadow:0 7px 20px rgba(24,34,29,.3)}@media (min-width:640px){.schedule-list-shell{margin-block:20px;border-radius:28px;overflow:clip;box-shadow:0 18px 60px rgba(24,34,29,.08)}.floating-today{bottom:32px}}