{"version":3,"file":"Scheduler.module.cjs","names":[],"sources":["../../../src/components/Scheduler/Scheduler.module.css"],"sourcesContent":[".wrapper {\n    /*\n     * Column widths are declared once here and reused by the header, the all-day\n     * lane and the grid — three separate grids that have to line up exactly, and\n     * would drift the moment any of them computed its own tracks.\n     */\n    --tempest-scheduler-gutter: 3.5rem;\n    --tempest-scheduler-height: 32rem;\n\n    display: flex;\n    flex-direction: column;\n    width: 100%;\n    border: 1px solid var(--tempest-border);\n    border-radius: var(--tempest-radius-lg);\n    background-color: var(--tempest-bg);\n    font-family: var(--tempest-font-sans);\n    overflow: hidden;\n}\n\n.head,\n.allDayLane {\n    display: grid;\n    grid-template-columns: var(--tempest-scheduler-gutter) repeat(\n            var(--tempest-scheduler-days),\n            minmax(0, 1fr)\n        );\n    border-bottom: 1px solid var(--tempest-border);\n    background-color: var(--tempest-surface);\n}\n\n.dayHead {\n    padding: var(--tempest-space-2);\n    text-align: center;\n    color: var(--tempest-text-muted);\n    font-size: var(--tempest-text-xs);\n    font-weight: var(--tempest-weight-semibold);\n    letter-spacing: var(--tempest-tracking-wide);\n    text-transform: capitalize;\n    border-left: 1px solid var(--tempest-border);\n}\n\n.dayHead.today {\n    color: var(--tempest-primary);\n}\n\n.gutterHead {\n    padding: var(--tempest-space-2);\n    color: var(--tempest-text-muted);\n    font-size: 0.625rem;\n    text-align: right;\n}\n\n.allDayTrack {\n    display: grid;\n    grid-template-columns: repeat(var(--tempest-scheduler-days), minmax(0, 1fr));\n    grid-column: 2 / -1;\n    gap: 2px;\n    padding: 2px;\n}\n\n.allDayEvent {\n    overflow: hidden;\n    padding: 0 var(--tempest-space-2);\n    border: none;\n    border-radius: var(--tempest-radius-sm);\n    background-color: var(--tempest-primary);\n    color: var(--tempest-primary-foreground);\n    font: inherit;\n    font-size: var(--tempest-text-xs);\n    line-height: 1.5rem;\n    text-align: left;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    cursor: pointer;\n}\n\n.allDayEvent:disabled {\n    cursor: default;\n}\n\n.body {\n    display: grid;\n    grid-template-columns: var(--tempest-scheduler-gutter) 1fr;\n    height: var(--tempest-scheduler-height);\n    overflow-y: auto;\n}\n\n.gutter {\n    position: relative;\n    border-right: 1px solid var(--tempest-border);\n}\n\n.hourLabel {\n    position: absolute;\n    right: var(--tempest-space-1);\n    /*\n     * Nudged up by half a line so the label reads as sitting *on* its hour line\n     * rather than hanging below it.\n     */\n    transform: translateY(-50%);\n    color: var(--tempest-text-muted);\n    font-size: 0.625rem;\n    font-variant-numeric: tabular-nums;\n}\n\n.grid {\n    position: relative;\n    display: grid;\n    grid-template-columns: repeat(var(--tempest-scheduler-days), minmax(0, 1fr));\n}\n\n.dayColumn {\n    position: relative;\n    grid-row: 1;\n    border-left: 1px solid var(--tempest-border);\n}\n\n.dayColumn:first-child {\n    border-left: none;\n}\n\n.todayColumn {\n    background-color: var(--tempest-surface);\n}\n\n.hourLine {\n    position: absolute;\n    left: 0;\n    right: 0;\n    border-top: 1px solid var(--tempest-border);\n    pointer-events: none;\n}\n\n/*\n * Events live in the same grid as the day columns, one row deep, positioned inside\n * their column by percentage. Being siblings of the columns rather than children is\n * what lets an event overlay the hour lines without clipping.\n */\n/*\n * Absolutely positioned, so the inline `grid-column` it is placed with must name\n * BOTH lines. For an abspos child of a grid container an `auto` side does not\n * mean \"span 1\" — CSS Grid §9.2 resolves it to the container's padding edge, so\n * a bare `grid-column: 3` runs from column 3 to the end of the week and every\n * event covers the whole view. A one-day scheduler hides it: there, \"column 1 to\n * the edge\" happens to be one column. Hence `N / span 1` in Scheduler.tsx.\n */\n.event {\n    position: absolute;\n    grid-row: 1;\n    display: flex;\n    flex-direction: column;\n    gap: 1px;\n    overflow: hidden;\n    padding: 2px var(--tempest-space-1);\n    border: 1px solid var(--tempest-bg);\n    border-radius: var(--tempest-radius-sm);\n    background-color: var(--tempest-primary);\n    color: var(--tempest-primary-foreground);\n    font: inherit;\n    text-align: left;\n    cursor: pointer;\n}\n\n.event:disabled {\n    cursor: default;\n}\n\n.event:focus-visible {\n    outline: 2px solid var(--tempest-text);\n    outline-offset: -2px;\n}\n\n/*\n * No `opacity` here, deliberately. Dimming the time to signal it as secondary drops\n * it below the AA contrast threshold against the event fill — the browser `axe` sweep\n * caught exactly that (jsdom cannot, since it does not paint). The hierarchy comes\n * from size and weight instead, which cost nothing in contrast.\n */\n.eventTime {\n    font-size: 0.625rem;\n    font-variant-numeric: tabular-nums;\n}\n\n.eventTitle {\n    font-size: var(--tempest-text-xs);\n    font-weight: var(--tempest-weight-medium);\n    line-height: var(--tempest-leading-snug);\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n\n.nowLine {\n    position: absolute;\n    left: 0;\n    right: 0;\n    grid-row: 1;\n    grid-column: 1 / -1;\n    height: 0;\n    border-top: 2px solid var(--tempest-danger, #dc2626);\n    pointer-events: none;\n    z-index: 1;\n}\n\n@media (max-width: 640px) {\n    .wrapper {\n        --tempest-scheduler-gutter: 2.75rem;\n    }\n\n    .dayHead {\n        font-size: 0.625rem;\n        padding: var(--tempest-space-1);\n    }\n}\n"],"mappings":";"}