*{box-sizing:border-box;margin:0;padding:0}body{background:var(--color-bg-secondary);color:var(--color-text-primary);-webkit-font-smoothing:antialiased;font-family:Inter,sans-serif;font-size:14px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit}button{cursor:pointer;background:0 0;border:none}a{color:inherit;text-decoration:none}ul,ol{list-style:none}:root{--color-bg:#fff;--color-bg-secondary:#f7f7f7;--color-bg-tertiary:#efefef;--color-border:#e4e4e4;--color-border-dark:#ccc;--color-text-primary:#111;--color-text-secondary:#555;--color-text-muted:#999;--color-accent:#111;--color-accent-hover:#333;--color-pink:#fea6c3;--color-pink-light:#fea6c324;--color-danger:#dc2626;--color-success:#16a34a;--text-xs:.618rem;--text-sm:.764rem;--text-base:1rem;--text-md:1.236rem;--text-lg:1.618rem;--text-xl:2.058rem;--text-2xl:2.618rem;--font-weight-regular:400;--font-weight-medium:500;--font-weight-bold:600;--line-height-tight:1.2;--line-height-normal:1.5;--line-height-loose:1.8;--space-xs:.236rem;--space-sm:.382rem;--space-md:.618rem;--space-lg:1rem;--space-xl:1.618rem;--space-2xl:2.618rem;--space-3xl:4.236rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 3px #0000000f;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 24px #0000001a;--transition:.15s ease}body{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:var(--text-base);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-text-primary);background:var(--color-bg)}h1{font-size:var(--text-2xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight)}h2{font-size:var(--text-xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight)}h3{font-size:var(--text-lg);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight)}h4{font-size:var(--text-md);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight)}p{font-size:var(--text-base);line-height:var(--line-height-loose);color:var(--color-text-secondary)}small{font-size:var(--text-sm);color:var(--color-text-muted)}label{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.layout__app{min-height:100vh;display:flex}.layout__sidebar{background:var(--color-bg);border-right:1px solid var(--color-border);z-index:10;flex-direction:column;width:220px;min-height:100vh;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar__brand{padding:var(--space-xl) var(--space-xl) var(--space-lg);font-size:var(--text-base);font-weight:var(--font-weight-bold);letter-spacing:-.01em;color:var(--color-text-primary);cursor:pointer;-webkit-user-select:none;user-select:none}.sidebar__nav{padding:0 var(--space-md);flex-direction:column;flex:1;gap:2px;display:flex;overflow-y:auto}.nav__item{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-weight-regular);color:var(--color-text-secondary);cursor:pointer;text-align:left;width:100%;transition:background var(--transition), color var(--transition);background:0 0;border:none;line-height:1;display:flex}.nav__item:hover{background:var(--color-bg-secondary);color:var(--color-text-primary)}.nav__item--active{background:var(--color-pink-light);color:var(--color-text-primary);font-weight:var(--font-weight-medium)}.nav__item--active svg{color:var(--color-pink)}.nav__icon{opacity:.7;flex-shrink:0;width:16px;height:16px}.nav__item--active .nav__icon{opacity:1}.sidebar__footer{padding:var(--space-lg) var(--space-xl);border-top:1px solid var(--color-border);gap:var(--space-sm);flex-direction:column;display:flex}.sidebar__user{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sidebar__logout{font-size:var(--text-xs);color:var(--color-text-muted);text-align:left;justify-content:flex-start;padding:0}.sidebar__logout:hover{color:var(--color-danger);background:0 0}.layout__main{background:var(--color-bg-secondary);flex:1;min-height:100vh;margin-left:220px}.layout__content{max-width:900px;padding:var(--space-2xl) var(--space-2xl)}.layout__title{font-size:var(--text-lg);font-weight:var(--font-weight-bold);margin-bottom:var(--space-xl);color:var(--color-text-primary);letter-spacing:-.02em}.layout__center{justify-content:center;align-items:center;min-height:100vh;display:flex}.home-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.home-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-xl);text-align:left;cursor:pointer;transition:border-color var(--transition), box-shadow var(--transition);gap:var(--space-sm);flex-direction:column;display:flex}.home-card:hover{border-color:var(--color-pink);box-shadow:var(--shadow-sm)}.home-card__title{font-size:var(--text-base);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.home-card__desc{font-size:var(--text-sm);color:var(--color-text-muted)}.btn{padding:var(--space-md) var(--space-xl);font-size:var(--text-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);transition:all var(--transition);white-space:nowrap;justify-content:center;align-items:center;display:inline-flex}.btn--primary{background:var(--color-accent);color:#fff}.btn--primary:hover{background:var(--color-accent-hover)}.btn--secondary{background:var(--color-bg);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn--secondary:hover{background:var(--color-bg-tertiary)}.btn--danger{background:var(--color-danger);color:#fff}.btn--danger:hover{opacity:.9}.btn--ghost{color:var(--color-text-secondary)}.btn--ghost:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.input{width:100%;padding:var(--space-md) var(--space-lg);font-size:var(--text-base);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text-primary);transition:border-color var(--transition);outline:none}.input:focus{border-color:var(--color-pink)}.input::placeholder{color:var(--color-text-muted)}.form__group{gap:var(--space-sm);flex-direction:column;display:flex}.form__row{gap:var(--space-lg);flex-wrap:wrap;display:flex}.card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-xl)}.card__title{font-size:var(--text-md);font-weight:var(--font-weight-bold);margin-bottom:var(--space-lg)}.table{border-collapse:collapse;background:var(--color-bg);border-radius:var(--radius-lg);border:1px solid var(--color-border);width:100%;overflow:hidden}.table th{padding:var(--space-lg);text-align:left;font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border)}.table td{padding:var(--space-lg);font-size:var(--text-sm);border-bottom:1px solid var(--color-border);color:var(--color-text-secondary)}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--color-bg-secondary)}.tab{padding:var(--space-md) var(--space-lg);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);border-radius:var(--radius-md);transition:all var(--transition);border:1px solid #0000}.tab:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.tab--active{color:var(--color-text-primary);background:var(--color-bg);border-color:var(--color-border);font-weight:var(--font-weight-medium)}.badge{padding:var(--space-xs) var(--space-md);font-size:var(--text-xs);font-weight:var(--font-weight-medium);border-radius:999px;align-items:center;display:inline-flex}.badge--pending{color:#854d0e;background:#fef9c3}.badge--confirmed{color:#166534;background:#dcfce7}.badge--cancelled{color:#991b1b;background:#fee2e2}.divider{background:var(--color-border);height:1px;margin:var(--space-xl) 0}.modal__overlay{z-index:100;padding:var(--space-lg);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal__box{background:var(--color-bg);border-radius:var(--radius-lg);width:100%;max-width:520px;box-shadow:var(--shadow-lg);max-height:90vh;overflow:hidden auto}.modal__header{padding:var(--space-xl);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:flex-start;display:flex}.modal__title{font-size:var(--text-md);font-weight:var(--font-weight-bold)}.modal__sub{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-xs)}.modal__tabs{gap:var(--space-sm);padding:var(--space-md) var(--space-xl);border-bottom:1px solid var(--color-border);background:var(--color-bg-secondary);display:flex}.modal__body{padding:var(--space-xl)}.booking-services{gap:var(--space-md);flex-direction:column;display:flex}.booking-service-card{padding:var(--space-xl);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:border-color var(--transition), box-shadow var(--transition);justify-content:space-between;align-items:center;display:flex}.booking-service-card:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm)}.booking-service-card__name{font-size:var(--text-base);font-weight:var(--font-weight-medium)}.booking-service-card__price{font-size:var(--text-base);color:var(--color-text-muted)}.booking-detail__grid{gap:var(--space-md);flex-direction:column;display:flex}.booking-detail__row{padding:var(--space-md) 0;border-bottom:1px solid var(--color-border);font-size:var(--text-sm);justify-content:space-between;align-items:center;display:flex}.booking-detail__row:last-child{border-bottom:none}.booking-detail__label{color:var(--color-text-muted)}.booking-detail__value{color:var(--color-text-primary);font-weight:var(--font-weight-medium)}.empty{text-align:center;padding:var(--space-3xl);color:var(--color-text-muted);font-size:var(--text-sm)}.week-nav{align-items:center;gap:var(--space-lg);display:flex}.week-grid{gap:var(--space-sm);grid-template-columns:repeat(7,1fr);display:grid;overflow-x:auto}.week-day{flex-direction:column;min-width:52px;display:flex}.week-day--past{opacity:.25;pointer-events:none}.week-day__header{padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-md);align-items:center;gap:var(--space-xs);flex-direction:column;display:flex}.week-day__name{font-size:var(--text-sm);font-weight:var(--font-weight-bold);color:var(--color-text-secondary)}.week-day__date{font-size:var(--text-xs);color:var(--color-text-muted)}.week-day__slots{gap:var(--space-sm);flex-direction:column;align-items:center;display:flex}.week-day__empty{font-size:var(--text-sm);color:var(--color-text-muted);padding:var(--space-sm) 0}.week-day__slot{width:100%;padding:var(--space-sm) var(--space-xs);font-size:var(--text-xs)}.stat-grid{gap:var(--space-lg);margin-bottom:var(--space-xl);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.stat-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-xl)}.stat-card__label{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-sm)}.stat-card__value{font-size:var(--text-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);line-height:var(--line-height-tight)}.stat-card__sub{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-xs)}.cal{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.cal__header{padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.cal__title{font-size:var(--text-md);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.cal__header-actions{align-items:center;gap:var(--space-sm);display:flex}.cal__nav-btn{border:1px solid var(--color-border);border-radius:var(--radius-md);width:30px;height:30px;font-size:var(--text-md);color:var(--color-text-secondary);background:var(--color-bg);transition:all var(--transition);cursor:pointer;justify-content:center;align-items:center;display:flex}.cal__nav-btn:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.cal__form{border-bottom:1px solid var(--color-border);padding:var(--space-lg) var(--space-xl);background:var(--color-bg-secondary)}.cal__form-inner{gap:var(--space-lg);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));align-items:end;display:grid}.cal__grid{overflow-x:auto}.cal__grid-inner{grid-template-rows:48px auto;grid-template-columns:52px repeat(7,1fr);min-width:680px;display:grid}.cal__corner{border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);grid-area:1/1}.cal__day-header{padding:var(--space-sm) 0;border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);flex-direction:column;grid-row:1;justify-content:center;align-items:center;gap:2px;height:48px;display:flex}.cal__day-header:last-of-type{border-right:none}.cal__day-name{font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.cal__day-date{font-size:var(--text-md);font-weight:var(--font-weight-bold);color:var(--color-text-primary);line-height:1}.cal__day-header--today .cal__day-date{background:var(--color-accent);color:#fff;width:26px;height:26px;font-size:var(--text-sm);border-radius:50%;justify-content:center;align-items:center;display:flex}.cal__time-col{border-right:1px solid var(--color-border);grid-area:2/1}.cal__time-label{height:var(--cal-row-h,56px);padding:var(--space-xs) var(--space-sm) 0 0;font-size:var(--text-xs);color:var(--color-text-muted);box-sizing:border-box;justify-content:flex-end;align-items:flex-start;display:flex}.cal__day-col{border-right:1px solid var(--color-border);grid-row:2;position:relative;overflow:hidden}.cal__day-col:last-child{border-right:none}.cal__row-line{background:var(--color-border);pointer-events:none;height:1px;position:absolute;left:0;right:0}.cal__schedule{border-radius:var(--radius-md);background:#f0f4ff;border:1.5px solid #c7d4f5;position:absolute;left:3px;right:3px;overflow:visible}.cal__booking{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm);cursor:pointer;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition);z-index:1;background:#fff;position:absolute;left:4px;right:4px;overflow:hidden}.cal__booking:hover{box-shadow:var(--shadow-md)}.cal__booking--pending{border-left:3px solid #f59e0b}.cal__booking--confirmed{border-left:3px solid #16a34a}.cal__booking--cancelled{opacity:.45}.cal__booking-time{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap}.cal__booking-name{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cal__booking-service{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@media (width<=640px){.cal__grid-inner{min-width:unset;grid-template-columns:44px 1fr}.cal__day-col--hidden-mobile,.cal__day-header.cal__day-col--hidden-mobile{display:none}.cal__mobile-day-nav{align-items:center;gap:var(--space-sm);display:flex}.cal__mobile-day-label{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);text-align:center;min-width:80px}}@media (width>=641px){.cal__mobile-day-nav{display:none}}
