/* Shared by the wall display, the phone page and the calendar. */
.timeline { position: relative; height: 100%; min-height: 0; border-left: 1px solid var(--line); margin-left: 44px; }
.hour { position: absolute; left: 0; right: 0; border-top: 1px solid var(--line); }
.hour span { position: absolute; left: -44px; top: -10px; width: 36px; text-align: right; color: var(--muted); font-family: var(--font-mono); font-size: 13px; }
.block { position: absolute; left: 10px; right: 0; --c: var(--muted); color: var(--ink); background: color-mix(in srgb, var(--c) 16%, var(--panel, var(--card))); border-left: 3px solid var(--c); border-radius: 12px; padding: 7px 12px; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-start; gap: 2px; min-height: 8px; box-shadow: 0 1px 2px rgba(27,38,103,0.05); }
.block .bl { flex: none; font-weight: 600; font-size: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.block .bt { flex: none; color: var(--muted); font-family: var(--font-mono); font-size: 12px; }
.block.thin { padding-top: 2px; padding-bottom: 2px; justify-content: center; }
.block.thin .bt { display: none; }
.block.current { --c: var(--busy); }
.block.mine { --c: var(--accent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent); }
.block.repeat .bl::before { content: "↻ "; color: var(--muted); font-weight: 400; }
.block[data-cancel] { cursor: pointer; }
.now { position: absolute; left: -6px; right: 0; height: 2px; background: var(--accent); z-index: 1; pointer-events: none; }
.now::before { content: ""; position: absolute; left: -5px; top: -4px; width: 10px; height: 10px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 20%, transparent); }

.sheet { position: fixed; inset: 0; background: rgba(27,38,103,0.35); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); display: flex; align-items: flex-end; justify-content: center; z-index: 10; padding: 16px; }
.sheet-card { width: min(560px, 100%); background: var(--panel, var(--card)); border-radius: 28px; padding: 26px; margin-bottom: env(safe-area-inset-bottom); display: flex; flex-direction: column; gap: 14px; box-shadow: 0 30px 80px -30px rgba(27,38,103,0.5); }
.sheet-card h2 { margin: 0; font-family: var(--font-display); font-size: 24px; font-weight: 600; letter-spacing: -0.02em; color: var(--ink); }
.sheet-card p { margin: 0; }
.durations { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.durations button { padding: 16px 8px; border-radius: 16px; background: var(--bg); border: 1px solid var(--line); font-size: 18px; font-weight: 600; color: var(--ink); }
.durations button.selected, .durations button:active { background: var(--accent); color: #fff; border-color: var(--accent); }
.sheet-cancel { width: 100%; padding: 12px; color: var(--muted); font-size: 16px; background: none; border: 0; }
.wide { width: 100%; padding: 15px; border-radius: 999px; font-size: 17px; font-weight: 600; }
.repeat-row { display: flex; gap: 10px; flex-wrap: wrap; }
.repeat-row label { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 14px; }
.repeat-row select { padding: 9px 14px; border-radius: 999px; border: 1px solid var(--line); background: var(--bg); color: var(--ink); font: inherit; }
button.wide.danger.outline { background: none; color: var(--danger, var(--busy)); border: 1px solid var(--danger, var(--busy)); }
