:root {
    --color-primary: #1d9e49;
    --color-primary-dark: #137336;
    --color-bg: #f4f7f5;
    --color-surface: #ffffff;
    --color-text: #1f2933;
    --color-muted: #6b7280;
    --color-border: #d9e2dc;
    --color-danger: #dc2626;
    --color-success: #15803d;
    --sidebar-width: 260px;
    --topbar-height: 64px;
    --radius-lg: 18px;
    --shadow-card: 0 10px 30px rgba(15, 23, 42, 0.08);
}

* {
    box-sizing: border-box;
}

html {
    min-height: 100%;
}

body {
    min-height: 100%;
    margin: 0;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: var(--color-text);
    background: var(--color-bg);
}

a {
    color: inherit;
    text-decoration: none;
}

button,
input,
select,
textarea {
    font: inherit;
}

.app-shell {
    min-height: 100vh;
}

/* sidebar は main の外に配置する */
.sidebar {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 1000;
    width: var(--sidebar-width);
    height: 100vh;
    padding: 22px 18px;
    background: var(--color-surface);
    border-right: 1px solid var(--color-border);
    overflow-y: auto;
}

.sidebar__brand {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4px 0 24px;
}

.sidebar__logo-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.sidebar__logo {
    display: block;
    width: 160px;
    max-width: 100%;
    height: auto;
}

.sidebar__nav {
    display: grid;
    gap: 8px;
}

.sidebar__link {
    display: block;
    padding: 12px 14px;
    border-radius: 12px;
    color: var(--color-text);
    font-weight: 600;
}

.sidebar__link:hover,
.sidebar__link.is-active {
    color: var(--color-primary-dark);
    background: rgba(29, 158, 73, 0.1);
}

.sidebar__section {
    margin: 16px 0 4px;
    padding: 14px;
    border: 1px solid var(--color-border);
    border-radius: 14px;
    background: #f8faf9;
}

.sidebar__section-title {
    margin-bottom: 8px;
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 800;
}

.sidebar__user {
    display: grid;
    gap: 4px;
}

.sidebar__user-name {
    font-weight: 800;
}

.sidebar__user-role {
    color: var(--color-muted);
    font-size: 13px;
}

.topbar__profile {
    display: grid;
    gap: 2px;
    min-width: 0;
    padding: 7px 12px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 999px;
}

.topbar__profile-main {
    color: var(--color-text);
    font-size: 13px;
    font-weight: 900;
    line-height: 1.2;
    white-space: nowrap;
}

.topbar__profile-sub {
    color: var(--color-muted);
    font-size: 11px;
    font-weight: 800;
    line-height: 1.2;
    white-space: nowrap;
}

.topbar__logout {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    padding: 8px 13px;
    color: var(--color-danger);
    background: #fff;
    border: 1px solid rgba(220, 38, 38, 0.22);
    border-radius: 999px;
    font-size: 13px;
    font-weight: 900;
}

.topbar__logout:hover {
    color: #991b1b;
    background: rgba(220, 38, 38, 0.08);
}

.sidebar-backdrop {
    display: none;
}

/* PC / タブレット幅では main 側だけが sidebar 分を持つ */
.main {
    min-height: 100vh;
    margin-left: var(--sidebar-width);
    width: calc(100% - var(--sidebar-width));
    min-width: 0;
    overflow-x: hidden;
}

/* topbar は main の中で幅100% */
.topbar {
    position: sticky;
    top: 0;
    z-index: 500;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    min-height: var(--topbar-height);
    width: 100%;
    min-width: 0;
    padding: 14px 28px;
    background: rgba(255, 255, 255, 0.94);
    border-bottom: 1px solid var(--color-border);
    backdrop-filter: blur(10px);
}

.topbar__actions {
    display: flex;
    align-items: center;
    gap: 10px;
}

.topbar__status {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 6px 12px;
    border-radius: 999px;
    color: var(--color-primary-dark);
    background: rgba(29, 158, 73, 0.1);
    font-size: 13px;
    font-weight: 700;
}

.topbar__status--muted {
    color: var(--color-muted);
    background: #f3f6f4;
}

.content {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    padding: 28px;
}

.admin-content {
    display: grid;
    gap: 22px;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.admin-page-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
}

.admin-page-title {
    margin: 0;
    font-size: 28px;
    line-height: 1.3;
    font-weight: 800;
}

.admin-page-lead {
    margin: 8px 0 0;
    color: var(--color-muted);
    line-height: 1.7;
}

.admin-page-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}

.admin-card {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    padding: 22px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
}

.admin-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 18px;
}

.admin-card-title {
    margin: 0;
    font-size: 18px;
    font-weight: 800;
}

.admin-table-wrap {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    overflow-x: auto;
}

.admin-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}

.admin-table th,
.admin-table td {
    padding: 12px 14px;
    border-bottom: 1px solid var(--color-border);
    text-align: left;
    vertical-align: middle;
}

.admin-table th {
    color: var(--color-muted);
    background: #f8faf9;
    font-weight: 700;
    white-space: nowrap;
}

.admin-form {
    display: grid;
    gap: 18px;
}

.admin-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    align-items: start;
}

.admin-form-field {
    display: grid;
    gap: 7px;
    align-self: start;
}

.admin-form-field--full {
    grid-column: 1 / -1;
}

.admin-form-field label {
    font-weight: 700;
}

.admin-form-help {
    margin: 0;
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 700;
    line-height: 1.5;
}

.admin-check-label {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    width: fit-content;
    line-height: 1.5;
}

.admin-form-field input:not([type="checkbox"]):not([type="radio"]),
.admin-form-field select,
.admin-form-field textarea {
    width: 100%;
    padding: 11px 12px;
    border: 1px solid var(--color-border);
    border-radius: 12px;
    background: #fff;
}

.admin-form-field input:not([type="checkbox"]):not([type="radio"]):disabled,
.admin-form-field select:disabled,
.admin-form-field textarea:disabled {
    color: var(--color-muted);
    background: #f3f6f4;
    border-color: #e3e9e5;
    cursor: not-allowed;
    opacity: 1;
}

.admin-form-field input[type="checkbox"],
.admin-form-field input[type="radio"] {
    width: auto;
    padding: 0;
    margin: 0;
    accent-color: var(--color-primary);
}

.admin-form-field textarea {
    min-height: 120px;
    resize: vertical;
}

.admin-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}

.admin-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 10px 16px;
    border: 1px solid transparent;
    border-radius: 12px;
    cursor: pointer;
    font-weight: 800;
    line-height: 1.2;
}

.admin-btn--primary {
    color: #fff;
    background: var(--color-primary);
}

.admin-btn--primary:hover {
    background: var(--color-primary-dark);
}

.admin-btn--secondary {
    color: var(--color-text);
    background: #fff;
    border-color: var(--color-border);
}

.admin-btn--danger {
    color: #fff;
    background: var(--color-danger);
}

.admin-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    max-width: max-content;
    flex: 0 0 auto;
    padding: 5px 9px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.admin-badge--active {
    color: var(--color-primary-dark);
    background: rgba(29, 158, 73, 0.12);
}

.admin-badge--inactive {
    color: #6b7280;
    background: #eef2f1;
}

.admin-empty {
    padding: 28px;
    color: var(--color-muted);
    text-align: center;
    background: #f8faf9;
    border: 1px dashed var(--color-border);
    border-radius: 14px;
}

.admin-alert {
    margin-bottom: 18px;
    padding: 13px 15px;
    border-radius: 14px;
    font-weight: 700;
    line-height: 1.6;
}

.admin-alert--success {
    color: var(--color-success);
    background: rgba(21, 128, 61, 0.1);
    border: 1px solid rgba(21, 128, 61, 0.18);
}

.admin-alert--error {
    color: var(--color-danger);
    background: rgba(220, 38, 38, 0.08);
    border: 1px solid rgba(220, 38, 38, 0.16);
}

.auth-main {
    display: grid;
    place-items: center;
    min-height: 100vh;
    padding: 32px 16px 96px;
}

.auth-card {
    width: min(100%, 440px);
    padding: 30px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 22px;
    box-shadow: var(--shadow-card);
}

.auth-logo {
    display: flex;
    justify-content: center;
    margin-bottom: 22px;
}

.auth-logo img {
    display: block;
    width: 170px;
    max-width: 100%;
    height: auto;
}

.auth-title {
    margin: 0;
    font-size: 26px;
    text-align: center;
}

.auth-lead {
    margin: 10px 0 22px;
    color: var(--color-muted);
    line-height: 1.7;
    text-align: center;
}

.auth-links {
    margin-top: 18px;
    text-align: center;
}

.auth-links a {
    color: var(--color-primary-dark);
    font-weight: 800;
}

.mobile-bottom-nav {
    display: none;
}

@media (max-width: 768px) {
    body {
        padding-bottom: 72px;
    }

    .sidebar {
        transform: translateX(-100%);
        transition: transform 0.2s ease;
    }

    body.is-sidebar-open .sidebar {
        transform: translateX(0);
    }

    .sidebar-backdrop {
        position: fixed;
        inset: 0;
        z-index: 900;
        display: block;
        background: rgba(15, 23, 42, 0.35);
    }

    .sidebar-backdrop[hidden] {
        display: none;
    }

    .main {
        margin-left: 0;
        width: 100%;
        min-width: 0;
        overflow-x: hidden;
    }

    .topbar {
        padding: 14px 16px;
    }

    .topbar__actions {
        gap: 6px;
    }

    .topbar__profile {
        padding: 7px 10px;
    }

    .topbar__profile-main {
        max-width: 150px;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .topbar__profile-sub {
        max-width: 150px;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .topbar__logout {
        display: none;
    }

    .topbar__status--muted {
        display: none;
    }

    .content {
        padding: 18px 14px;
    }

    .admin-page-header {
        display: grid;
        gap: 14px;
    }

    .admin-page-title {
        font-size: 24px;
    }

    .admin-page-actions,
    .admin-actions {
        justify-content: stretch;
    }

    .admin-btn {
        width: 100%;
    }

    .admin-form-grid {
        grid-template-columns: 1fr;
    }

    .admin-card {
        padding: 18px;
    }

    .auth-card {
        padding: 24px 18px;
    }

    .mobile-bottom-nav {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1200;
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        min-height: 64px;
        background: #fff;
        border-top: 1px solid var(--color-border);
        box-shadow: 0 -8px 24px rgba(15, 23, 42, 0.08);
    }

    .mobile-bottom-nav__button {
        display: grid;
        place-items: center;
        gap: 2px;
        padding: 8px 4px;
        color: var(--color-text);
        background: transparent;
        border: 0;
        cursor: pointer;
    }

    .mobile-bottom-nav__icon {
        font-size: 20px;
        line-height: 1;
    }

    .mobile-bottom-nav__label {
        font-size: 11px;
        font-weight: 700;
    }
}

/* 個人打刻 */
.clock-card__lead {
    margin: 6px 0 0;
    color: var(--color-muted);
    line-height: 1.7;
}

.clock-panel {
    display: grid;
    grid-template-columns: minmax(220px, 300px) minmax(0, 1fr);
    gap: 22px;
    align-items: stretch;
    margin-top: 18px;
}

.clock-now {
    display: grid;
    align-content: center;
    gap: 8px;
    min-height: 220px;
    padding: 24px;
    color: #fff;
    background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
    border-radius: 18px;
}

.clock-now__label {
    font-size: 13px;
    font-weight: 800;
    opacity: 0.9;
}

.clock-now__time {
    font-size: 42px;
    line-height: 1;
    font-weight: 900;
    letter-spacing: 0.04em;
}

.clock-now__date {
    font-weight: 800;
    opacity: 0.95;
}

.clock-form {
    display: grid;
    gap: 14px;
    align-content: start;
    min-width: 0;
}

.clock-shift-summary,
.clock-gps-status {
    padding: 14px 15px;
    color: var(--color-text);
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 14px;
    line-height: 1.7;
}

.clock-gps-status {
    color: var(--color-muted);
}

.clock-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.clock-actions .admin-btn {
    min-width: 110px;
}

.clock-message {
    padding: 13px 15px;
    border-radius: 14px;
    font-weight: 700;
    line-height: 1.6;
}

.clock-message--success {
    color: var(--color-success);
    background: rgba(21, 128, 61, 0.1);
    border: 1px solid rgba(21, 128, 61, 0.18);
}

.clock-message--error {
    color: var(--color-danger);
    background: rgba(220, 38, 38, 0.08);
    border: 1px solid rgba(220, 38, 38, 0.16);
}

@media (max-width: 768px) {
    .clock-panel {
        grid-template-columns: 1fr;
    }

    .clock-now {
        min-height: 160px;
    }

    .clock-now__time {
        font-size: 34px;
    }

    .clock-actions {
        display: grid;
        grid-template-columns: 1fr;
    }
}

/* 現場端末打刻 */
.terminal-main {
    margin-left: 0;
    width: 100%;
}

.terminal-main .topbar {
    justify-content: flex-end;
}

.terminal-card {
    overflow: hidden;
}

.terminal-panel {
    margin-top: 18px;
}

.terminal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}

.terminal-muted {
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 700;
}

.terminal-row-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.terminal-row-actions .admin-btn {
    min-height: 36px;
    padding: 8px 12px;
    border-radius: 10px;
}

.terminal-punch-button:disabled {
    cursor: not-allowed;
    opacity: 0.45;
}

.terminal-auth-tabs {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    padding: 4px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 14px;
}

.terminal-auth-tab {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 9px 14px;
    color: var(--color-text);
    background: transparent;
    border: 0;
    border-radius: 11px;
    cursor: pointer;
    font-weight: 800;
}

.terminal-auth-tab.is-active {
    color: #fff;
    background: var(--color-primary);
}

.terminal-auth-panel {
    display: grid;
    gap: 14px;
}

.terminal-auth-panel[hidden] {
    display: none;
}

.terminal-ic-card-box {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 16px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 16px;
}

.terminal-ic-card-title {
    font-weight: 900;
}

.terminal-ic-card-lead {
    margin: 6px 0 0;
    color: var(--color-muted);
    line-height: 1.7;
}

.terminal-ic-card-status {
    margin: 8px 0 0;
    color: var(--color-primary-dark);
    font-weight: 800;
    line-height: 1.6;
}

.terminal-row-actions--four {
    min-width: 280px;
}

@media (max-width: 768px) {
    .terminal-actions,
    .terminal-row-actions,
    .terminal-auth-tabs,
    .terminal-ic-card-box {
        display: grid;
        grid-template-columns: 1fr;
    }

    .terminal-row-actions .admin-btn,
    .terminal-auth-tab {
        width: 100%;
    }

    .terminal-row-actions--four {
        min-width: 0;
    }
}


/* 打刻修正申請 */
.admin-badge--pending {
    color: #92400e;
    background: rgba(245, 158, 11, 0.14);
}

.correction-detail-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.correction-detail-item {
    display: grid;
    gap: 6px;
    min-width: 0;
    padding: 14px 15px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 14px;
}

.correction-detail-item--full {
    grid-column: 1 / -1;
}

.correction-detail-item span {
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 800;
}

.correction-detail-item strong {
    min-width: 0;
    line-height: 1.6;
    word-break: break-word;
}

.correction-diff {
    display: grid;
    gap: 5px;
    line-height: 1.6;
}

.correction-diff__label {
    display: inline-flex;
    align-items: center;
    min-width: 42px;
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 800;
}

.correction-filter {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}

.correction-filter label {
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 800;
}

.correction-filter select {
    min-height: 42px;
    padding: 9px 12px;
    border: 1px solid var(--color-border);
    border-radius: 12px;
    background: #fff;
}

.correction-compare {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.correction-compare__box {
    padding: 18px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 16px;
}

.correction-compare__box--requested {
    background: rgba(29, 158, 73, 0.08);
    border-color: rgba(29, 158, 73, 0.22);
}

.correction-compare__box h3,
.correction-reason h3 {
    margin: 0 0 10px;
    font-size: 16px;
}

.correction-compare__box p,
.correction-reason p {
    margin: 0;
    line-height: 1.8;
}

.correction-compare__box p + p {
    margin-top: 6px;
}

.correction-reason {
    margin-top: 18px;
    padding: 18px;
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: 16px;
}

.correction-review-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    align-items: start;
}

@media (max-width: 768px) {
    .correction-detail-grid,
    .correction-compare,
    .correction-review-actions {
        grid-template-columns: 1fr;
    }

    .correction-filter {
        display: grid;
        grid-template-columns: 1fr;
        width: 100%;
    }

    .correction-filter .admin-btn {
        width: 100%;
    }
}

/* 勤怠状態判定 */
.attendance-status-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.attendance-status-card {
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
    box-shadow: var(--shadow-card);
}

.attendance-status-card span {
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 800;
}

.attendance-status-card strong {
    font-size: 26px;
    line-height: 1;
}

.attendance-status-card--warning {
    background: rgba(245, 158, 11, 0.08);
    border-color: rgba(245, 158, 11, 0.24);
}

.attendance-status-meta {
    margin: 6px 0 0;
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

.attendance-status-table td {
    vertical-align: top;
}

.attendance-status-times {
    display: grid;
    gap: 5px;
    line-height: 1.6;
}

.attendance-status-description {
    margin: 8px 0 0;
    color: var(--color-muted);
    font-size: 12px;
    line-height: 1.6;
}

.attendance-status-flags {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.admin-badge--before-work {
    color: #374151;
    background: #eef2f1;
}

.admin-badge--not-clocked-in {
    color: #92400e;
    background: rgba(245, 158, 11, 0.14);
}

.admin-badge--working {
    color: var(--color-primary-dark);
    background: rgba(29, 158, 73, 0.12);
}

.admin-badge--breaking {
    color: #075985;
    background: rgba(14, 165, 233, 0.14);
}

.admin-badge--breaking {
    color: #075985;
    background: rgba(14, 165, 233, 0.14);
}

.admin-badge--clocked-out {
    color: #374151;
    background: #e5e7eb;
}

.admin-badge--missing-clock-out,
.admin-badge--warning {
    color: #b45309;
    background: rgba(245, 158, 11, 0.18);
}

@media (max-width: 1100px) {
    .attendance-status-summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .attendance-status-summary {
        grid-template-columns: 1fr;
    }
}

/* 勤怠一覧 */
.attendance-list-summary {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.attendance-list-summary-card {
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
    box-shadow: var(--shadow-card);
}

.attendance-list-summary-card span {
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 800;
}

.attendance-list-summary-card strong {
    font-size: 22px;
    line-height: 1.2;
    word-break: keep-all;
}

.attendance-list-summary-card--warning {
    background: rgba(245, 158, 11, 0.08);
    border-color: rgba(245, 158, 11, 0.24);
}

.attendance-list-meta {
    margin: 6px 0 0;
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

.attendance-list-table {
    min-width: 1280px;
}

.attendance-list-table td {
    vertical-align: top;
}

.attendance-list-times {
    display: grid;
    gap: 5px;
    line-height: 1.6;
}

.attendance-list-muted {
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 700;
}

.attendance-list-description {
    margin: 8px 0 0;
    color: var(--color-muted);
    font-size: 12px;
    line-height: 1.6;
}

.attendance-list-flags {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.attendance-list-note {
    display: grid;
    gap: 4px;
    margin-top: 8px;
    color: var(--color-muted);
    font-size: 12px;
    line-height: 1.6;
}

@media (max-width: 1300px) {
    .attendance-list-summary {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {
    .attendance-list-summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .attendance-list-summary {
        grid-template-columns: 1fr;
    }
}

/* 管理者による勤怠修正 */
.attendance-edit-detail-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.attendance-edit-detail-item {
    display: grid;
    gap: 6px;
    min-width: 0;
    padding: 14px 15px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 14px;
}

.attendance-edit-detail-item span {
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 800;
}

.attendance-edit-detail-item strong {
    min-width: 0;
    line-height: 1.6;
    word-break: break-word;
}

.attendance-edit-section-title {
    margin: 0;
    font-size: 18px;
    font-weight: 900;
}

.attendance-edit-help {
    margin: 8px 0 14px;
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 700;
    line-height: 1.7;
}

.attendance-edit-breaks {
    display: grid;
    gap: 12px;
}

.attendance-edit-break-row {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
    gap: 12px;
    align-items: end;
    min-width: 0;
    padding: 14px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 14px;
}

.attendance-edit-break-row--new {
    background: rgba(29, 158, 73, 0.06);
    border-color: rgba(29, 158, 73, 0.18);
}

.attendance-edit-delete-check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 42px;
    padding: 10px 12px;
    color: var(--color-danger);
    background: #fff;
    border: 1px solid rgba(220, 38, 38, 0.18);
    border-radius: 12px;
    cursor: pointer;
    font-weight: 900;
}

.attendance-edit-delete-check input {
    width: auto;
    margin: 0;
}

.attendance-edit-delete-placeholder {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 10px 12px;
    color: var(--color-muted);
    background: #fff;
    border: 1px dashed var(--color-border);
    border-radius: 12px;
    font-size: 12px;
    font-weight: 900;
}

.attendance-edit-required {
    color: var(--color-danger);
    font-size: 12px;
    font-weight: 900;
}

.attendance-edit-log-table {
    min-width: 980px;
}

@media (max-width: 1000px) {
    .attendance-edit-detail-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .attendance-edit-break-row {
        grid-template-columns: 1fr;
    }

    .attendance-edit-delete-check,
    .attendance-edit-delete-placeholder {
        width: 100%;
    }
}

@media (max-width: 768px) {
    .attendance-edit-detail-grid {
        grid-template-columns: 1fr;
    }
}


/* 有休管理 */
.paid-leave-summary {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.paid-leave-summary-card {
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
    box-shadow: var(--shadow-card);
}

.paid-leave-summary-card span {
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 800;
}

.paid-leave-summary-card strong {
    font-size: 26px;
    line-height: 1.2;
}

.paid-leave-table {
    min-width: 980px;
}

.paid-leave-muted {
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 700;
}

.paid-leave-days {
    color: var(--color-primary-dark);
    font-weight: 900;
}

.paid-leave-days--minus {
    color: var(--color-danger);
}

.paid-leave-row-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.paid-leave-row-actions .admin-btn {
    min-height: 36px;
    padding: 8px 12px;
    border-radius: 10px;
}

.paid-leave-detail-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.paid-leave-detail-item {
    display: grid;
    gap: 6px;
    min-width: 0;
    padding: 14px 15px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 14px;
}

.paid-leave-detail-item--full {
    grid-column: 1 / -1;
}

.paid-leave-detail-item span {
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 800;
}

.paid-leave-detail-item strong {
    min-width: 0;
    line-height: 1.6;
    word-break: break-word;
}

.paid-leave-review-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    align-items: start;
}

.admin-badge--danger {
    color: #991b1b;
    background: rgba(220, 38, 38, 0.12);
}

@media (max-width: 768px) {
    .paid-leave-summary,
    .paid-leave-detail-grid,
    .paid-leave-review-actions {
        grid-template-columns: 1fr;
    }

    .paid-leave-row-actions {
        display: grid;
        grid-template-columns: 1fr;
    }
}

/* 打刻修正申請：休憩修正 */
.correction-break-list {
    display: grid;
    gap: 12px;
}

.correction-break-row {
    display: grid;
    gap: 10px;
    padding: 14px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 14px;
}

.correction-break-row--new {
    background: rgba(29, 158, 73, 0.06);
    border-color: rgba(29, 158, 73, 0.18);
}

.correction-break-row__title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    font-weight: 900;
    flex-wrap: wrap;
}

.correction-break-row__fields {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: end;
}

.correction-break-row__fields label {
    display: grid;
    gap: 7px;
    font-weight: 700;
}

.correction-break-row__fields input[type="datetime-local"] {
    width: 100%;
    padding: 11px 12px;
    border: 1px solid var(--color-border);
    border-radius: 12px;
    background: #fff;
}

.correction-break-delete {
    display: inline-flex !important;
    grid-template-columns: auto 1fr;
    align-items: center;
    justify-content: flex-start;
    min-height: 44px;
    padding: 10px 12px;
    color: var(--color-danger);
    background: #fff;
    border: 1px solid rgba(220, 38, 38, 0.18);
    border-radius: 12px;
    cursor: pointer;
}

.correction-break-delete input {
    width: auto;
}

.terminal-correction-form {
    margin-top: 18px;
}

@media (max-width: 768px) {
    .correction-break-row__fields {
        grid-template-columns: 1fr;
    }

    .correction-break-delete {
        width: 100%;
    }
}


/* 打刻漏れ確認 */
.attendance-missing-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.attendance-missing-summary-card {
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
    box-shadow: var(--shadow-card);
}

.attendance-missing-summary-card span {
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 800;
}

.attendance-missing-summary-card strong {
    font-size: 26px;
    line-height: 1.2;
}

.attendance-missing-summary-card--warning {
    background: rgba(245, 158, 11, 0.08);
    border-color: rgba(245, 158, 11, 0.24);
}

.attendance-missing-meta {
    margin: 6px 0 0;
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

.attendance-missing-table {
    min-width: 1180px;
}

.attendance-missing-table td {
    vertical-align: top;
}

.attendance-missing-muted {
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 700;
}

.attendance-missing-times {
    display: grid;
    gap: 5px;
    line-height: 1.6;
}

.attendance-missing-inline-form {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
}

.attendance-missing-bulk-box {
    display: grid;
    gap: 16px;
    margin-top: 18px;
    padding: 18px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 16px;
}

.dashboard-notification-table {
    min-width: 860px;
}

.dashboard-notification-body {
    display: inline-block;
    margin-top: 6px;
    color: var(--color-muted);
    line-height: 1.7;
}

.dashboard-notification-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.dashboard-notification-actions form {
    margin: 0;
}

.dashboard-notification-actions .admin-btn {
    min-height: 36px;
    padding: 8px 12px;
    border-radius: 10px;
}

@media (max-width: 1100px) {
    .attendance-missing-summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .attendance-missing-summary {
        grid-template-columns: 1fr;
    }

    .attendance-missing-inline-form,
    .dashboard-notification-actions {
        display: grid;
        grid-template-columns: 1fr;
        width: 100%;
    }

    .dashboard-notification-actions .admin-btn {
        width: 100%;
    }
}


/* 通知一覧 */
.notification-filter-tabs {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.notification-filter-tab {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 9px 14px;
    color: var(--color-text);
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    font-size: 13px;
    font-weight: 900;
}

.notification-filter-tab:hover,
.notification-filter-tab.is-active {
    color: #fff;
    background: var(--color-primary);
    border-color: var(--color-primary);
}

.notification-meta {
    margin: 6px 0 0;
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

.notification-table {
    min-width: 1120px;
}

.notification-table td {
    vertical-align: top;
}

.notification-muted {
    margin: 6px 0 0;
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 700;
    line-height: 1.6;
}

.notification-body {
    display: inline-block;
    margin-top: 6px;
    color: var(--color-muted);
    line-height: 1.7;
}

.notification-status-list {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.notification-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.notification-actions form {
    margin: 0;
}

.notification-actions .admin-btn {
    min-height: 36px;
    padding: 8px 12px;
    border-radius: 10px;
}

@media (max-width: 768px) {
    .notification-filter-tabs,
    .notification-actions {
        display: grid;
        grid-template-columns: 1fr;
        width: 100%;
    }

    .notification-filter-tab,
    .notification-actions .admin-btn {
        width: 100%;
    }
}


/* 打刻漏れ通知設定 */
.attendance-missing-settings-meta {
    margin: 6px 0 0;
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

.attendance-missing-settings-table {
    min-width: 920px;
}

.attendance-missing-settings-table td {
    vertical-align: top;
}

.attendance-missing-settings-muted {
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 700;
}


/* 打刻漏れ一括登録理由テンプレート */
.attendance-missing-note-templates {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 4px;
}

.attendance-missing-note-template {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    padding: 8px 12px;
    color: var(--color-primary-dark);
    background: rgba(29, 158, 73, 0.08);
    border: 1px solid rgba(29, 158, 73, 0.2);
    border-radius: 999px;
    cursor: pointer;
    font-size: 13px;
    font-weight: 900;
    line-height: 1.2;
}

.attendance-missing-note-template:hover {
    color: #fff;
    background: var(--color-primary);
    border-color: var(--color-primary);
}

@media (max-width: 768px) {
    .attendance-missing-note-templates {
        display: grid;
        grid-template-columns: 1fr;
    }

    .attendance-missing-note-template {
        width: 100%;
    }
}


/* 勤怠個別修正：修正理由テンプレート */
.attendance-edit-reason-templates {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 4px;
}

.attendance-edit-reason-template {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    padding: 8px 12px;
    color: var(--color-primary-dark);
    background: rgba(29, 158, 73, 0.08);
    border: 1px solid rgba(29, 158, 73, 0.2);
    border-radius: 999px;
    cursor: pointer;
    font-size: 13px;
    font-weight: 900;
    line-height: 1.2;
}

.attendance-edit-reason-template:hover {
    color: #fff;
    background: var(--color-primary);
    border-color: var(--color-primary);
}

@media (max-width: 768px) {
    .attendance-edit-reason-templates {
        display: grid;
        grid-template-columns: 1fr;
    }

    .attendance-edit-reason-template {
        width: 100%;
    }
}


/* 月次集計 */
.monthly-summary-meta {
    margin: 6px 0 0;
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

.monthly-summary-cards {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.monthly-summary-card {
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
    box-shadow: var(--shadow-card);
}

.monthly-summary-card span {
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 800;
}

.monthly-summary-card strong {
    font-size: 22px;
    line-height: 1.2;
    word-break: keep-all;
}

.monthly-summary-card--warning {
    background: rgba(245, 158, 11, 0.08);
    border-color: rgba(245, 158, 11, 0.24);
}

.monthly-summary-table {
    min-width: 1380px;
}

.monthly-summary-table td {
    vertical-align: top;
}

.monthly-summary-muted {
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 700;
}

.monthly-summary-lines {
    display: grid;
    gap: 5px;
    line-height: 1.6;
}

@media (max-width: 1300px) {
    .monthly-summary-cards {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {
    .monthly-summary-cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .monthly-summary-cards {
        grid-template-columns: 1fr;
    }
}


/* ダッシュボード強化 */
.dashboard-summary-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.dashboard-summary-grid--employee {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.dashboard-summary-card,
.dashboard-kpi-card {
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
    box-shadow: var(--shadow-card);
}

.dashboard-summary-card span,
.dashboard-kpi-card span {
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 800;
}

.dashboard-summary-card strong,
.dashboard-kpi-card strong {
    font-size: 26px;
    line-height: 1.2;
    word-break: keep-all;
}

.dashboard-summary-card p,
.dashboard-card-lead {
    margin: 0;
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

.dashboard-kpi-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.dashboard-kpi-grid--employee {
    grid-template-columns: repeat(6, minmax(0, 1fr));
}

.dashboard-kpi-card--success {
    background: rgba(29, 158, 73, 0.08);
    border-color: rgba(29, 158, 73, 0.22);
}

.dashboard-kpi-card--warning {
    background: rgba(245, 158, 11, 0.08);
    border-color: rgba(245, 158, 11, 0.24);
}

.dashboard-two-column {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px;
    width: 100%;
    min-width: 0;
}

.dashboard-task-list {
    display: grid;
    gap: 10px;
}

.dashboard-task-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    min-width: 0;
    padding: 14px 15px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 14px;
}

.dashboard-task-item:hover {
    border-color: rgba(29, 158, 73, 0.32);
    background: rgba(29, 158, 73, 0.06);
}

.dashboard-task-item span {
    min-width: 0;
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 800;
}

.dashboard-task-item strong {
    color: var(--color-text);
    font-size: 18px;
    font-weight: 900;
    white-space: nowrap;
}

.dashboard-shortcut-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.dashboard-shortcut {
    display: grid;
    gap: 7px;
    min-width: 0;
    padding: 16px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 16px;
}

.dashboard-shortcut:hover {
    border-color: rgba(29, 158, 73, 0.32);
    background: rgba(29, 158, 73, 0.06);
}

.dashboard-shortcut strong {
    font-size: 15px;
    font-weight: 900;
}

.dashboard-shortcut span {
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

.dashboard-shift-list {
    display: grid;
    gap: 12px;
}

.dashboard-shift-item {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    min-width: 0;
    padding: 16px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 16px;
}

.dashboard-shift-item strong {
    font-size: 17px;
    font-weight: 900;
}

.dashboard-shift-item p {
    margin: 7px 0 0;
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

@media (max-width: 1300px) {
    .dashboard-kpi-grid,
    .dashboard-kpi-grid--employee,
    .dashboard-shortcut-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 1100px) {
    .dashboard-summary-grid,
    .dashboard-summary-grid--employee {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .dashboard-two-column {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 768px) {
    .dashboard-summary-grid,
    .dashboard-summary-grid--employee,
    .dashboard-kpi-grid,
    .dashboard-kpi-grid--employee,
    .dashboard-shortcut-grid {
        grid-template-columns: 1fr;
    }

    .dashboard-task-item,
    .dashboard-shift-item {
        display: grid;
        grid-template-columns: 1fr;
    }

    .dashboard-task-item strong {
        white-space: normal;
    }
}


.admin-card-header > .admin-badge {
    margin-left: auto;
}



/* 総合テスト・補修 */
.system-check-summary {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.system-check-summary-card,
.system-check-count-card,
.system-check-manual-card {
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
    box-shadow: var(--shadow-card);
}

.system-check-summary-card span,
.system-check-count-card span {
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 800;
}

.system-check-summary-card strong,
.system-check-count-card strong {
    font-size: 26px;
    line-height: 1.2;
    word-break: keep-all;
}

.system-check-summary-card p {
    margin: 0;
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

.system-check-summary-card--ok {
    background: rgba(29, 158, 73, 0.08);
    border-color: rgba(29, 158, 73, 0.22);
}

.system-check-summary-card--warning {
    background: rgba(245, 158, 11, 0.08);
    border-color: rgba(245, 158, 11, 0.24);
}

.system-check-summary-card--error {
    background: rgba(220, 38, 38, 0.08);
    border-color: rgba(220, 38, 38, 0.18);
}

.system-check-count-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.system-check-table {
    min-width: 980px;
}

.system-check-table td {
    vertical-align: top;
}

.system-check-manual-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.system-check-manual-card h3 {
    margin: 0;
    font-size: 16px;
    font-weight: 900;
}

.system-check-manual-card ul {
    display: grid;
    gap: 8px;
    margin: 0;
    padding-left: 1.2em;
    color: var(--color-muted);
    line-height: 1.7;
}

.system-check-manual-card li {
    padding-left: 2px;
}

@media (max-width: 1100px) {
    .system-check-count-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .system-check-manual-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 768px) {
    .system-check-summary,
    .system-check-count-grid {
        grid-template-columns: 1fr;
    }
}


/* 有休付与ルール・候補作成 */
.paid-leave-rule-detail-list {
    display: grid;
    gap: 12px;
    margin-top: 4px;
}

.paid-leave-rule-detail-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    min-width: 0;
    padding: 14px;
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 14px;
}

.paid-leave-candidate-table {
    min-width: 1380px;
}

.paid-leave-candidate-table td {
    vertical-align: top;
}

.paid-leave-expiring-table {
    min-width: 1120px;
}

.paid-leave-expiring-table td {
    vertical-align: top;
}

.paid-leave-adjustment-table {
    min-width: 1180px;
}

.paid-leave-adjustment-table td {
    vertical-align: top;
}

@media (max-width: 768px) {
    .paid-leave-rule-detail-row {
        grid-template-columns: 1fr;
    }

    .paid-leave-candidate-table form,
    .paid-leave-row-actions form {
        width: 100%;
    }
}


/* 打刻漏れ候補：一括選択 */
.attendance-missing-select-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.attendance-missing-select-actions .admin-btn {
    min-height: 36px;
    padding: 8px 12px;
    border-radius: 10px;
}

.attendance-missing-select-count {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 8px 12px;
    color: var(--color-muted);
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    font-size: 13px;
    font-weight: 900;
}

@media (max-width: 768px) {
    .attendance-missing-select-actions {
        display: grid;
        grid-template-columns: 1fr;
    }

    .attendance-missing-select-actions .admin-btn,
    .attendance-missing-select-count {
        width: 100%;
    }
}


/* 出勤予定一覧 */
.work-schedule-summary {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.work-schedule-summary-card {
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
    box-shadow: var(--shadow-card);
}

.work-schedule-summary-card span {
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 800;
}

.work-schedule-summary-card strong {
    font-size: 24px;
    line-height: 1.2;
    word-break: keep-all;
}

.work-schedule-summary-card--success {
    background: rgba(29, 158, 73, 0.08);
    border-color: rgba(29, 158, 73, 0.22);
}

.work-schedule-summary-card--warning {
    background: rgba(245, 158, 11, 0.08);
    border-color: rgba(245, 158, 11, 0.24);
}

.work-schedule-meta {
    margin: 6px 0 0;
    color: var(--color-muted);
    font-size: 13px;
    line-height: 1.6;
}

.work-schedule-table {
    min-width: 1080px;
}

.work-schedule-no-shift-table {
    min-width: 780px;
}

.work-schedule-table td,
.work-schedule-no-shift-table td {
    vertical-align: top;
}

.work-schedule-muted {
    color: var(--color-muted);
    font-size: 12px;
    font-weight: 700;
}

.work-schedule-lines {
    display: grid;
    gap: 6px;
    line-height: 1.6;
}

.work-schedule-lines strong {
    font-weight: 900;
}

.work-schedule-badges {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

@media (max-width: 1300px) {
    .work-schedule-summary {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {
    .work-schedule-summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .work-schedule-summary {
        grid-template-columns: 1fr;
    }
}


/* 出勤簿出力 */
.attendance-book-note {
    display: grid;
    gap: 6px;
    padding: 15px;
    color: var(--color-text);
    background: #f8faf9;
    border: 1px solid var(--color-border);
    border-radius: 14px;
    line-height: 1.7;
}

.attendance-book-note strong {
    font-weight: 900;
}

.attendance-book-note p {
    margin: 0;
    color: var(--color-muted);
}


/* 出勤簿設定 */
.attendance-book-settings-grid {
    align-items: stretch;
}

@media (max-width: 768px) {
    .attendance-book-settings-grid {
        grid-template-columns: 1fr;
    }
}