:root{--ink: #14171c;--paper: #f4f4f2;--panel: #ffffff;--signal: #e8542a;--signal-soft: #fce4da;--slate: #5b6270;--success: #2f855a;--success-soft: #e2f3ea;--border: #e2e1dc;--font-display: "Space Grotesk", sans-serif;--font-body: "Inter", sans-serif;--font-mono: "IBM Plex Mono", monospace}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3,h4{font-family:var(--font-display);margin:0;letter-spacing:-.01em}button{font-family:var(--font-body);cursor:pointer}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.app-shell{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--ink);color:#fff;display:flex;flex-direction:column;flex-shrink:0}.sidebar-brand{padding:20px;border-bottom:1px solid rgba(255,255,255,.1);display:flex;justify-content:center}.sidebar-brand img{width:140px;height:auto;display:block}.sidebar-nav{display:flex;flex-direction:column;padding:12px;gap:2px;flex:1}.sidebar-link{color:#ffffffb3;text-decoration:none;padding:10px 12px;border-radius:8px;font-size:14px;font-weight:500;transition:background .15s,color .15s}.sidebar-link:hover{background:#ffffff0f;color:#fff}.sidebar-link.active{background:var(--signal);color:#fff}.sidebar-footer{padding:16px 20px;border-top:1px solid rgba(255,255,255,.1);font-size:13px;color:#fff9}.sidebar-footer button{background:none;border:none;color:var(--signal);font-size:13px;padding:0;margin-top:6px}.main{flex:1;min-width:0;padding:32px 40px;max-width:1200px}.page-header{margin-bottom:24px}.page-header h1{font-size:26px}.page-header p{color:var(--slate);margin:4px 0 0;font-size:14px}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:20px}.grid-2{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;align-items:start}.btn{display:inline-flex;align-items:center;gap:6px;border:none;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;background:var(--ink);color:#fff}.btn.primary{background:var(--signal)}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--border)}.btn:disabled{opacity:.5;cursor:not-allowed}.badge{display:inline-block;font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px;font-family:var(--font-mono)}.badge.scheduled{background:var(--signal-soft);color:var(--signal)}.badge.completed{background:var(--success-soft);color:var(--success)}.badge.cancelled{background:#eee;color:var(--slate)}.timeline{position:relative;border-left:2px solid var(--border);margin-left:52px;padding-left:20px}.timeline-hour{position:relative;min-height:44px;border-bottom:1px dashed var(--border);padding:4px 0}.timeline-hour:last-child{border-bottom:none}.timeline-hour-label{position:absolute;left:-72px;top:-8px;width:52px;text-align:right;font-family:var(--font-mono);font-size:12px;color:var(--slate)}.timeline-session{background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--signal);border-radius:8px;padding:6px 10px;font-size:13px;margin-bottom:4px}.timeline-session .time{font-family:var(--font-mono);color:var(--slate);margin-right:8px}.month-cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.month-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.month-cal-dow{font-size:11px;text-align:center;color:var(--slate);font-weight:600}.month-cal-day{aspect-ratio:1;border:1px solid var(--border);border-radius:8px;background:var(--panel);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:13px;position:relative;-webkit-user-select:none;user-select:none}.month-cal-day.empty{border:none;background:none}.month-cal-day.past{color:var(--slate)}.month-cal-day.has-session{border-color:var(--signal)}.month-cal-day.selected{background:var(--ink);color:#fff;border-color:var(--ink)}.month-cal-day.selected.past{color:#fff}.month-cal-day{cursor:pointer}.month-cal-day .dot-row{display:flex;gap:2px;margin-top:3px}.month-cal-day .status-dot{width:5px;height:5px;border-radius:50%;background:var(--signal)}.month-cal-day .status-dot.completed{background:var(--success)}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--ink)}.login-card{background:var(--panel);border-radius:16px;padding:40px;width:340px}.login-card h1{font-size:22px;margin-bottom:4px}.login-card p{color:var(--slate);font-size:13px;margin:0 0 24px}.field{margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:500;margin-bottom:6px}.field input,.field select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:var(--font-body)}.error-text{color:var(--signal);font-size:13px;margin:8px 0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14171c80;display:flex;align-items:center;justify-content:center;z-index:50}.modal-card{background:var(--panel);border-radius:14px;padding:24px;width:320px}.context-menu{position:absolute;background:var(--ink);border-radius:10px;padding:6px;z-index:60;min-width:160px;box-shadow:0 12px 30px #00000040}.context-menu button{display:block;width:100%;text-align:left;background:none;border:none;color:#fff;font-size:13px;padding:8px 10px;border-radius:6px}.context-menu button:hover{background:#ffffff1f}.context-menu button.danger{color:#ff9d85}.client-list-item{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border);text-decoration:none;color:var(--ink)}.client-list-item:last-child{border-bottom:none}.client-list-item:hover{background:#faf9f7}.client-list-item .meta{font-size:12px;color:var(--slate);margin-top:2px}.pkg-pill{font-family:var(--font-mono);font-size:12px;color:var(--slate)}@media (max-width: 800px){.app-shell{flex-direction:column}.sidebar{width:100%;flex-direction:row;align-items:center}.sidebar-brand{padding:10px 14px;border-bottom:none;border-right:1px solid rgba(255,255,255,.1)}.sidebar-brand img{width:72px}.sidebar-nav{flex-direction:row;overflow-x:auto}.sidebar-footer{display:none}.main{padding:20px}.grid-2{grid-template-columns:1fr}}
