/* ACTIVATE150 W13: manual calendar workspace. Every rule is scoped under .cal-ws (the root, its parts
   and the opener .cal-ws-open in the read view detail). Tokens come from design.css; the renderer
   sets only --cal-ws-x, --cal-ws-w, --cal-ws-at and --cal-ws-hours as shares of the real Bratislava
   day, the gesture sets only --cal-ws-drag. One column on a phone, form and preview side by side
   on a wide workspace. No selector list inside parentheses, so a plain comma split stays exact.
   Colours: design.css has tokens only for blue and neutral tones, so those are var(). design.css has
   no amber, red or green token; the few hex values below are copies, never new colours. Amber
   #c78a21, #edd9ae, #fff8e9 and #925b08 mirror the warning colours of machine-calendar.css and
   calendar-read-view.css. Red #b34a46, #ffeeec and #f0d9d9 mirror design.css .badge-red and
   .btn-danger, green #226a4f and #e9f6ef mirror design.css .badge-green (no red or green in the
   two calendar stylesheets). */
.cal-ws{container:cal-ws/inline-size;display:grid;gap:var(--space-3);max-width:56rem;min-width:0;padding:var(--space-card);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);overflow-wrap:anywhere}
.cal-ws-open{justify-self:start;max-width:100%;white-space:normal}
.cal-ws .cal-ws-head{display:grid;gap:2px;min-width:0}
.cal-ws .cal-ws-head>h2{margin:0;font-size:var(--text-lg);font-weight:650;letter-spacing:-.15px;line-height:1.35}
.cal-ws .cal-ws-head>h2:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.cal-ws .cal-ws-case{margin:0;color:var(--muted);font-size:var(--text-sm)}
.cal-ws .cal-ws-case>strong{color:var(--ink)}
.cal-ws .cal-ws-status{margin:0;padding:8px 12px;border-left:3px solid var(--accent);border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--ink-2);font-size:var(--text-sm);line-height:1.5}
.cal-ws[data-status=unknown] .cal-ws-status,.cal-ws[data-status=conflict] .cal-ws-status,.cal-ws[data-status=stale] .cal-ws-status{border-left-color:#c78a21;background:#fff8e9;color:#925b08}
.cal-ws[data-status=rejected] .cal-ws-status{border-left-color:#b34a46;background:#ffeeec;color:#b34a46}
.cal-ws[data-status=saved] .cal-ws-status{border-left-color:#226a4f;background:#e9f6ef;color:#226a4f}
.cal-ws .cal-ws-alert{margin:0;padding:9px 12px;border:1px solid #f0d9d9;border-radius:var(--radius-control);background:#ffeeec;color:#b34a46;font-size:var(--text-sm);line-height:1.5}
.cal-ws .cal-ws-hint,.cal-ws .cal-ws-quiet,.cal-ws .cal-ws-legend{margin:0;color:var(--muted);font-size:var(--text-xs);line-height:1.5}
.cal-ws .cal-ws-muted{color:var(--muted)}

/* Closed: case choice next to the create button, stacked on a phone. */
.cal-ws .cal-ws-create{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-2) var(--space-3);min-width:0}
.cal-ws .cal-ws-create>.cal-ws-field{flex:1 1 16rem}
.cal-ws .cal-ws-create>.btn{flex:none}

/* Editor: one column, form and preview side by side when the workspace is wide enough. */
.cal-ws .cal-ws-body{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);align-items:start;min-width:0}
@container cal-ws (min-width:44rem){
 .cal-ws .cal-ws-body{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}
}
.cal-ws .cal-ws-form{display:grid;gap:var(--space-3);min-width:0}
.cal-ws .cal-ws-field{margin:0;min-width:0}
.cal-ws .cal-ws-field>.input{max-width:100%}
.cal-ws .cal-ws-field>.input[aria-invalid=true]{border-color:#b34a46}
.cal-ws .cal-ws-field-error{display:flex;align-items:flex-start;gap:6px;margin:0;color:#b34a46;font-size:var(--text-xs);line-height:1.4}
.cal-ws .cal-ws-field-error>.icon{flex:none;width:14px;height:14px;margin-top:1px}
.cal-ws .cal-ws-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2);min-width:0;margin:0;padding:0;border:0}
.cal-ws .cal-ws-steps>legend{margin:0 0 var(--space-2);padding:0;color:var(--ink-2);font-size:var(--text-xs);font-weight:600}
.cal-ws .cal-ws-steps>.btn{min-width:0;white-space:normal}
.cal-ws .cal-ws-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}
.cal-ws .cal-ws-actions>.btn{white-space:normal}
.cal-ws .btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.cal-ws .input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}

/* Preview: every row shows Pred and Po; the note is the exact text that will be sent. */
.cal-ws .cal-ws-side{display:grid;gap:var(--space-3);min-width:0}
.cal-ws .cal-ws-sub{margin:0;font-size:var(--text-md);font-weight:650}
.cal-ws .cal-ws-preview{display:grid;margin:0;font-size:var(--text-sm);line-height:1.45}
.cal-ws .cal-ws-preview>div{display:grid;grid-template-columns:6.5rem minmax(0,1fr) minmax(0,1fr);gap:4px var(--space-2);align-items:baseline;padding:6px 0;border-bottom:1px solid var(--line-soft)}
.cal-ws .cal-ws-preview dt{color:var(--muted);font-size:var(--text-xs);font-weight:600}
.cal-ws .cal-ws-preview dd{min-width:0;margin:0;color:var(--ink-2)}
.cal-ws .cal-ws-tag{display:inline-block;margin-right:6px;padding:0 5px;border-radius:3px;background:var(--surface-2);color:var(--muted);font-size:var(--text-xs);font-weight:600}
.cal-ws .cal-ws-preview .cal-ws-after{grid-column:3}
.cal-ws .cal-ws-after>.cal-ws-tag{background:var(--accent-soft);color:var(--accent)}
.cal-ws .cal-ws-count{white-space:nowrap;color:var(--muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums}
.cal-ws .cal-ws-count.is-over{color:#b34a46;font-weight:650}
@container cal-ws (max-width:30rem){
 .cal-ws .cal-ws-preview>div{grid-template-columns:minmax(0,1fr);gap:2px}
 .cal-ws .cal-ws-preview .cal-ws-after{grid-column:auto}
}
.cal-ws .cal-ws-frozen{display:grid;gap:var(--space-2);margin:0;padding:var(--space-3);border:1px dashed #edd9ae;border-radius:var(--radius-sm);background:var(--surface-2);font-size:var(--text-sm)}
.cal-ws .cal-ws-frozen>div{display:grid;gap:2px;min-width:0}
.cal-ws .cal-ws-frozen dt{color:var(--muted);font-size:var(--text-xs);font-weight:600}
.cal-ws .cal-ws-frozen dd{margin:0;color:var(--ink);white-space:pre-wrap}

/* Mini axis: ticks, other blocks of the machine, the dashed original and the proposed bar. */
.cal-ws .cal-ws-axis{display:grid;gap:4px;min-width:0;margin:0}
.cal-ws .cal-ws-axis>figcaption{color:var(--ink-2);font-size:var(--text-xs);font-weight:600}
.cal-ws .cal-ws-ruler{position:relative;height:1rem;overflow:hidden}
.cal-ws .cal-ws-tick{position:absolute;top:0;left:calc(var(--cal-ws-at) * 1%);padding-left:3px;border-left:1px solid var(--line);color:var(--muted);font-size:10px;line-height:1rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.cal-ws .cal-ws-track{position:relative;height:3.5rem;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-sm);background-color:var(--surface-2);
 background-image:repeating-linear-gradient(to right,var(--line-soft) 0 1px,transparent 1px calc(100% / var(--cal-ws-hours,24)));-webkit-user-select:none;user-select:none}
.cal-ws .cal-ws-other{position:absolute;bottom:4px;left:calc(var(--cal-ws-x) * 1%);width:calc(var(--cal-ws-w) * 1%);min-width:3px;height:6px;border-radius:2px;background:var(--subtle)}
.cal-ws .cal-ws-ghost{position:absolute;top:6px;bottom:14px;left:calc(var(--cal-ws-x) * 1%);width:calc(var(--cal-ws-w) * 1%);min-width:4px;border:2px dashed var(--subtle);border-radius:4px}
.cal-ws .cal-ws-bar{position:absolute;top:8px;bottom:16px;left:calc(var(--cal-ws-x) * 1%);width:calc(var(--cal-ws-w) * 1%);min-width:6px;border-radius:4px;background:var(--accent);transition:left .15s ease,width .15s ease}
.cal-ws .cal-ws-bar.is-after{border-top-right-radius:0;border-bottom-right-radius:0}
.cal-ws .cal-ws-bar[data-calendar-ws-handle]{cursor:grab;touch-action:none}
.cal-ws .cal-ws-end{position:absolute;top:0;bottom:0;left:clamp(0px,calc(var(--cal-ws-end) * 1% - 24px + var(--cal-ws-drag,0px)),calc(100% - 24px));width:24px;cursor:ew-resize;touch-action:none}
.cal-ws .cal-ws-end::after{content:"";position:absolute;top:30%;bottom:30%;left:50%;width:4px;margin-left:-2px;border-radius:2px;background:var(--navy)}
/* During a drag only --cal-ws-drag changes; the saved draft changes at pointerup through the host. */
.cal-ws .cal-ws-track[data-calendar-ws-drag] .cal-ws-bar{cursor:grabbing;transition:none;box-shadow:0 0 0 2px var(--accent-hover)}
.cal-ws .cal-ws-track[data-calendar-ws-drag=move] .cal-ws-bar{transform:translateX(var(--cal-ws-drag,0px))}
.cal-ws .cal-ws-track[data-calendar-ws-drag=end] .cal-ws-bar{width:calc(var(--cal-ws-w) * 1% + var(--cal-ws-drag,0px))}

/* Collision and deadline are information, never a ban. */
.cal-ws .cal-ws-warnings{display:grid;gap:6px;padding:var(--space-2) var(--space-3);border:1px solid #edd9ae;border-radius:var(--radius-sm);background:#fff8e9}
.cal-ws .cal-ws-warnings>ul{display:grid;gap:4px;margin:0;padding:0;list-style:none}
.cal-ws .cal-ws-warnings li{display:flex;align-items:flex-start;gap:6px;color:#925b08;font-size:var(--text-xs);line-height:1.4}
.cal-ws .cal-ws-warnings .icon{flex:none;width:14px;height:14px;margin-top:1px}
.cal-ws .cal-ws-warnings>p{margin:0;color:#925b08;font-size:var(--text-xs);line-height:1.5}
.cal-ws .cal-ws-warnings>.cal-ws-hint{color:var(--muted)}

/* Phone 375 and 390: one column, 44 px touch targets, long texts wrap, no sideways page scroll. */
@media (max-width:699px){
 .cal-ws{padding:var(--space-3)}
 .cal-ws .btn{min-height:44px;white-space:normal}
 .cal-ws .input{min-height:44px}
 .cal-ws .cal-ws-actions>.btn{flex:1 1 9rem}
 .cal-ws .cal-ws-create>.btn{flex:1 1 100%}
 .cal-ws-open{min-height:44px}
}
@media (pointer:coarse){
 .cal-ws .cal-ws-track{height:4rem}
 .cal-ws .cal-ws-end{left:clamp(0px,calc(var(--cal-ws-end) * 1% - 44px + var(--cal-ws-drag,0px)),calc(100% - 44px));width:44px}
}
@media (prefers-reduced-motion:reduce){
 .cal-ws .cal-ws-bar{transition:none}
}
