/* Randevu Takvimi — calendar presentation. Interaction feedback only; drag/resize behaviour lives in renderer.ts. */
.appointment-studio{display:grid;gap:12px}.date-control{width:140px;min-height:36px;padding:6px 9px}
.studio-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:9px 12px}
.studio-controls label{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:10.5px;font-weight:700}.studio-controls select{min-height:32px;padding-block:5px}
.segmented{display:flex;padding:3px;border-radius:10px;background:#eee5df}
.segmented button{min-width:66px;padding:6px 10px;border:0;border-radius:8px;color:var(--muted);background:transparent;font-size:11px;font-weight:800}
.segmented button:hover{color:var(--ink)}.segmented button.active{color:#fff;background:var(--rose-deep);box-shadow:0 3px 8px rgba(111,63,82,.2)}
.hours-legend{display:flex;align-items:center;flex-wrap:wrap;gap:5px;color:var(--muted);font-size:9.5px}
.hours-legend i{width:13px;height:9px;border:1px solid var(--line);border-radius:3px;background:#fff}
.hours-legend i.closed{margin-left:8px;background:repeating-linear-gradient(135deg,#eee5df,#eee5df 3px,#e5d8cf 3px,#e5d8cf 6px)}
.hours-legend i.legend-status{margin-left:8px;width:9px;border:0;border-radius:50%}
.hours-legend i.scheduled{background:#7e84b8}.hours-legend i.confirmed{background:#3f9a76}.hours-legend i.in_service{background:#d9a441}.hours-legend i.completed{background:#7e9678}

.utilization-strip{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:8px}
.util-card{display:grid;grid-template-columns:28px 1fr;grid-template-rows:auto auto auto;align-items:center;column-gap:8px;padding:8px 9px;border:1px solid var(--line);border-radius:12px;background:var(--card);text-align:left;transition:border-color .15s,transform .15s}
.util-card:hover{border-color:var(--staff-color);transform:translateY(-1px)}
.util-card .avatar{grid-row:1/3}.util-card b{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.util-card small{color:var(--muted);font-size:9.5px}
.util-card>i{grid-column:1/-1;height:4px;margin-top:7px;border-radius:3px;background:#eee5df}.util-card em{display:block;height:100%;width:0;border-radius:3px;background:var(--staff-color)}

.calendar-shell{min-height:400px}
.calendar-head{display:grid;grid-template-columns:54px repeat(7,minmax(120px,1fr));position:sticky;top:0;z-index:12;border-bottom:1px solid var(--line);background:var(--card)}
.calendar-head>header{border-left:1px solid var(--line);padding:9px 8px;text-align:center;font-size:11px;font-weight:700}
.calendar-head>header.today{color:var(--rose-deep);background:var(--rose-tint)}
.calendar-head small{display:block;margin-top:2px;color:var(--muted);font-size:9.5px;font-weight:500}
.calendar-scroll{display:grid;grid-template-columns:54px minmax(800px,1fr);max-height:640px;overflow:auto}
.time-axis{position:relative;border-right:1px solid var(--line);background:#faf6f2}.time-axis span{position:absolute;right:8px;transform:translateY(-50%);color:var(--muted);font-size:9.5px;font-variant-numeric:tabular-nums}
.calendar-columns{display:grid;position:relative;background:repeating-linear-gradient(to bottom,transparent 0,transparent 23px,rgba(209,193,182,.36) 24px)}
.calendar-column{position:relative;min-width:0;border-right:1px solid var(--line);transition:background .12s,box-shadow .12s}
.calendar-column.today{background:rgba(155,96,120,.035)}
.calendar-column.drop-target{background:rgba(111,128,106,.12);box-shadow:inset 0 0 0 2px rgba(111,128,106,.55)}
.calendar-column.drop-invalid{background:rgba(180,82,90,.09);box-shadow:inset 0 0 0 2px rgba(180,82,90,.5);cursor:not-allowed}
.closed-band{position:absolute;left:0;right:0;top:0;z-index:0;background:repeating-linear-gradient(135deg,rgba(235,226,219,.75),rgba(235,226,219,.75) 5px,rgba(226,214,205,.65) 5px,rgba(226,214,205,.65) 10px);pointer-events:none}

/* Appointment cards: staff colour on the spine, status colour on the corner chip. */
.calendar-appointment{position:absolute;z-index:3;left:4px;right:4px;min-height:24px;overflow:hidden;padding:5px 8px 9px 9px;border:1px solid #dccbd3;border-left:4px solid var(--staff-color);border-radius:8px;background:#fbf5f8;box-shadow:0 2px 6px rgba(61,47,43,.08);cursor:grab;user-select:none;transition:box-shadow .12s,transform .12s,opacity .12s}
.calendar-appointment:hover{z-index:8;border-color:#c7a4b4;box-shadow:0 8px 18px rgba(61,47,43,.18);transform:translateY(-1px)}
.calendar-appointment:active{cursor:grabbing}
.calendar-appointment.dragging{opacity:.35;box-shadow:none;transform:none;border-style:dashed}
.calendar-appointment.selected{z-index:9;border-color:var(--rose-deep);box-shadow:0 0 0 2px rgba(111,63,82,.35),0 8px 18px rgba(61,47,43,.18)}
.calendar-appointment .card-status{position:absolute;right:6px;top:6px;width:7px;height:7px;border-radius:50%;background:#7e84b8}
.calendar-appointment.status-confirmed .card-status{background:#3f9a76}.calendar-appointment.status-arrived .card-status{background:#58758b}
.calendar-appointment.status-in_service .card-status{background:#d9a441;box-shadow:0 0 0 3px rgba(217,164,65,.25)}.calendar-appointment.status-completed .card-status{background:#7e9678}
.calendar-appointment time,.calendar-appointment b,.calendar-appointment small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calendar-appointment time{padding-right:12px;font-size:9.5px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--rose-deep)}
.calendar-appointment b{margin:2px 0 1px;font-size:11px}.calendar-appointment small{font-size:9.5px;color:#635b58}
.calendar-appointment.status-in_service{background:#fff8ea;border-color:#ead8b0}.calendar-appointment.status-confirmed{background:#f3faf6;border-color:#c9e3d5}
.calendar-appointment.status-cancelled,.calendar-appointment.status-no_show{opacity:.5;text-decoration:line-through}
.calendar-appointment.status-completed{background:#f5f6f2;border-color:#d5dccf;filter:saturate(.6)}
.card-badges{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px}
.card-badges .status{padding:2px 6px;font-size:8px}
.source-badge,.buffer-badge{display:inline-block;padding:2px 5px;border-radius:5px;background:rgba(255,255,255,.75);border:1px solid rgba(0,0,0,.06);font-size:8px;font-weight:800;color:#6a5f5a}
.calendar-appointment.compact .card-badges{display:none}
.calendar-appointment.dense{padding-block:2px 4px}.calendar-appointment.dense b,.calendar-appointment.dense small,.calendar-appointment.dense .card-badges{display:none}
.calendar-appointment.dense time{font-size:9px}
.resize-handle{position:absolute;left:10px;right:10px;bottom:0;height:8px;border:0;border-radius:5px;background:transparent;cursor:ns-resize;opacity:.55;transition:opacity .12s}
.calendar-appointment:hover .resize-handle,.calendar-appointment.selected .resize-handle{opacity:1}
.resize-handle:after{content:"";display:block;width:26px;height:3px;margin:3px auto;border-radius:2px;background:var(--staff-color)}

.waiting-board{overflow:visible}
.waiting-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;padding:12px}
.waiting-entry{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:8px;padding:9px;border:1px solid var(--line);border-radius:11px;background:#faf6f2}
.waiting-entry b,.waiting-entry small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.waiting-entry b{font-size:11.5px}.waiting-entry small{margin-top:2px;color:var(--muted);font-size:9.5px}
.month-board{padding:12px}.month-weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,1fr)}
.month-weekdays b{padding:7px;color:var(--muted);font-size:9.5px;text-align:center;text-transform:uppercase;letter-spacing:.5px}
.month-day{min-height:104px;padding:8px;border:1px solid var(--line);background:var(--card);text-align:left;transition:background .12s}
.month-day:hover{z-index:1;border-color:var(--rose);background:var(--rose-tint)}
.month-day>b{display:block;font-size:14px;font-weight:800}.month-day>span{display:block;min-height:12px;margin:3px 0;color:var(--muted);font-size:9px}
.month-day i{display:block;margin:2px 0;padding:2px 4px;border-left:3px solid var(--staff-color);border-radius:3px;background:#f6eef1;font-size:9px;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.month-day em{display:block;margin-top:2px;color:var(--muted);font-size:9px;font-style:normal;font-weight:700}
.month-day.muted{opacity:.45}.month-day.today{background:var(--rose-tint)}.month-day.today>b{color:var(--rose-deep)}

.modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;background:rgba(39,31,30,.42);backdrop-filter:blur(3px)}
.modal-card{width:min(680px,100%);max-height:92vh;overflow:auto;border:1px solid var(--line);border-radius:16px;background:var(--paper);box-shadow:0 28px 70px rgba(35,25,24,.28)}
.modal-card header,.modal-card footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.modal-card header h2{margin:2px 0 0;font-size:17px;font-weight:800}
.modal-card header>button{width:30px;height:30px;border:0;border-radius:50%;background:#eee5df;font-size:19px;line-height:1}
.modal-card>.form-grid{padding:16px 18px}.modal-card footer{justify-content:flex-end;gap:8px;border-top:1px solid var(--line);border-bottom:0}
.modal-card textarea{min-height:68px}
.detail-summary{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:9px;background:#f7f1ed;color:var(--muted);font-size:10.5px}

@media(max-width:1250px){.utilization-strip{grid-template-columns:repeat(3,1fr)}.waiting-grid{grid-template-columns:1fr 1fr}}
@media(max-width:900px){.studio-controls{align-items:flex-start;flex-direction:column}.waiting-grid{grid-template-columns:1fr}.appointment-studio .page-intro{align-items:flex-start;flex-direction:column}}
.card-badges{overflow:hidden;white-space:nowrap;flex-wrap:nowrap}
body.is-dragging .calendar-appointment:not(.dragging){pointer-events:none}
.calendar-appointment.tight small{display:none}
