/* ES業務管理システム v2 — 日式極簡デザイン */
/* Tokens: CR-20260715-1.md に準拠 */

:root {
    --font-serif: 'Noto Serif JP', 'Songti SC', serif;
    --font-sans: 'Noto Sans JP', 'PingFang SC', 'Microsoft YaHei', sans-serif;
    --font-mono: 'SF Mono', 'Menlo', monospace;

    --bg-page: #FAFAFA;
    --bg-card: #FFFFFF;
    --bg-hover: #F5F5F5;

    --text: #1A1A1A;
    --text-secondary: #666666;
    --text-muted: #999999;

    --accent: #2C4A7C;
    --accent-light: #E8EDF3;

    --success: #4A7C59;
    --success-bg: #EDF3EF;
    --warning: #C4A44A;
    --warning-bg: #FBF6EA;
    --danger: #C45A4A;
    --danger-bg: #F9EEEC;

    --border: #E8E8E8;
    --border-light: #F0F0F0;

    --radius-sm: 4px;
    --radius: 8px;
    --radius-lg: 12px;

    --sidebar-width: 200px;
    --sidebar-collapsed: 52px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
    font-family: var(--font-sans);
    font-size: 13px;
    color: var(--text);
    background: var(--bg-page);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}

a { color: var(--accent); text-decoration: none; }
a:hover { opacity: 0.7; }

/* ============================================================
   侧边栏 — 白底细线
   ============================================================ */
.sidebar {
    position: fixed; left: 0; top: 0; bottom: 0;
    width: var(--sidebar-width);
    background: #FFFFFF;
    border-right: 1px solid var(--border);
    z-index: 100;
    transition: width 0.2s ease;
    overflow-x: hidden;
}
.sidebar.collapsed { width: var(--sidebar-collapsed); }

.sidebar-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 20px 16px 16px;
}
.sidebar-header h2 {
    font-family: var(--font-serif);
    font-size: 15px; font-weight: 500;
    color: var(--text); white-space: nowrap;
    letter-spacing: 0.04em;
}
.toggle-btn {
    background: none; border: none; color: var(--text-muted);
    font-size: 16px; cursor: pointer; padding: 4px 6px; border-radius: var(--radius-sm);
    line-height: 1;
}
.toggle-btn:hover { background: var(--bg-hover); color: var(--text); }

.sidebar-nav { padding: 4px 0; }
.sidebar-nav a {
    display: flex; align-items: center;
    padding: 10px 16px; color: var(--text-secondary);
    font-size: 13px; white-space: nowrap;
    border-left: 2px solid transparent;
    transition: all 0.15s; text-decoration: none;
}
.sidebar-nav a:hover {
    background: var(--bg-hover); color: var(--text);
}
.sidebar-nav a.active {
    background: var(--accent-light); color: var(--accent);
    border-left-color: var(--accent);
    font-weight: 500;
}
.nav-icon { font-size: 15px; margin-right: 10px; min-width: 20px; text-align: center; }
.collapsed .nav-icon { margin-right: 0; }

/* ============================================================
   主内容区
   ============================================================ */
.main-content {
    margin-left: var(--sidebar-width);
    padding: 28px 32px;
    min-height: 100vh;
    transition: margin-left 0.2s ease;
}
.collapsed ~ .main-content { margin-left: var(--sidebar-collapsed); }

/* ============================================================
   卡片
   ============================================================ */
.card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 24px;
    margin-bottom: 20px;
}
.card-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 20px; padding-bottom: 14px;
    border-bottom: 1px solid var(--border-light);
}
.card-title {
    font-family: var(--font-serif);
    font-size: 15px; font-weight: 500;
    color: var(--text);
    letter-spacing: 0.03em;
}

/* ============================================================
   统计卡片 — 大数字明朝体 + 顶部细线
   ============================================================ */
.stats-row {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 16px; margin-bottom: 24px;
}
.stat-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 20px; position: relative;
}
.stat-card::before {
    content: '';
    position: absolute; top: 0; left: 12px; right: 12px;
    height: 1px; background: var(--border-light);
}
.stat-label {
    font-size: 10px; color: var(--text-muted);
    letter-spacing: 0.08em; text-transform: uppercase;
    margin-bottom: 10px;
    white-space: nowrap;
}
.stat-value {
    font-family: var(--font-serif);
    font-size: 24px; font-weight: 500;
    color: var(--text); line-height: 1.2;
}
.stat-sub {
    font-size: 11px; color: var(--text-muted);
    margin-top: 6px;
}
.stat-card.accent::before { background: var(--accent); }
.stat-card.success::before { background: var(--success); }
.stat-card.warning::before { background: var(--warning); }
.stat-card.danger::before { background: var(--danger); }

/* Dashboard v4 */
.dashboard-heading {
    display: flex; align-items: flex-end; justify-content: space-between;
    gap: 16px; margin-bottom: 20px;
}
.dashboard-heading h2 {
    margin: 0; font-family: var(--font-serif); font-size: 20px; font-weight: 500;
}
.dashboard-heading p, .card-caption {
    margin: 4px 0 0; color: var(--text-muted); font-size: 10px;
}
.dashboard-range, .dashboard-date { color: var(--text-muted); font-size: 10px; white-space: nowrap; }
.dashboard-kpi-grid {
    display: grid; grid-template-columns: repeat(5, minmax(150px, 1fr));
    gap: 14px; margin-bottom: 18px;
}
.dashboard-kpi-grid .stat-card { min-width: 0; padding: 18px; }
.dashboard-kpi-grid .stat-sub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dashboard-capacity-card, .dashboard-trend-card, .dashboard-people-card { margin-bottom: 18px; }
.dashboard-capacity-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.capacity-heading { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 8px; font-size: 11px; }
.capacity-heading span { color: var(--text-muted); white-space: nowrap; }
.capacity-track { height: 9px; background: var(--bg-hover); border-radius: 99px; overflow: hidden; }
.capacity-fill { height: 100%; border-radius: 99px; min-width: 2px; }
.capacity-fill.normal { background: var(--accent); }
.capacity-fill.plan { background: var(--success); }
.dashboard-trend-chart { height: 330px; }
.dashboard-people-header { gap: 18px; align-items: flex-end; }
.dashboard-people-filters { display: flex; gap: 8px; min-width: 520px; }
.dashboard-people-filters .form-input { min-width: 210px; }
.dashboard-people-filters .form-select { min-width: 110px; }
.dashboard-people-table-wrap { max-height: 540px; overflow: auto; }
.dashboard-people-table { min-width: 980px; }
.dashboard-people-table thead { position: sticky; top: 0; z-index: 2; background: var(--bg-card); }
.dashboard-people-table th { white-space: nowrap; }
.dashboard-people-table td { padding-top: 9px; padding-bottom: 9px; }
.person-name { font-weight: 600; white-space: nowrap; }
.responsibility-pill {
    display: inline-flex; align-items: center; padding: 2px 8px;
    border-radius: 99px; font-size: 10px; white-space: nowrap;
}
.responsibility-pill.is-receive { color: #725C16; background: #FFF7D6; }
.responsibility-pill.is-design { color: var(--accent); background: var(--accent-light); }
.responsibility-pill.is-check { color: var(--success); background: var(--success-bg); }
.responsibility-pill.is-training { color: #7A5794; background: #F3EAF8; }
.work-status { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.work-status i { width: 7px; height: 7px; border-radius: 50%; background: var(--text-muted); }
.work-status i.status-scheduled { background: var(--accent); box-shadow: 0 0 0 3px var(--accent-light); }
.work-status i.status-working { background: var(--warning); }
.work-status i.status-checking { background: var(--success); }
.current-project { min-width: 240px; max-width: 420px; }
.current-project strong { display: block; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.current-project small { display: block; color: var(--text-muted); font-size: 9px; margin-top: 2px; }
.today-hours {
    display: inline-flex; justify-content: center; min-width: 52px;
    padding: 3px 8px; border-radius: 5px; color: var(--text-muted); background: var(--bg-hover);
    font-family: var(--font-mono); font-weight: 600;
}
.today-hours.has-hours { color: #fff; background: var(--accent); }
.dashboard-empty { text-align: center; padding: 32px; color: var(--text-muted); font-size: 11px; }

@media (max-width: 1100px) {
    .dashboard-kpi-grid { grid-template-columns: repeat(3, minmax(160px, 1fr)); }
    .dashboard-people-header { align-items: flex-start; flex-direction: column; }
    .dashboard-people-filters { min-width: 0; width: 100%; }
}
@media (max-width: 700px) {
    .dashboard-kpi-grid { grid-template-columns: repeat(2, minmax(140px, 1fr)); }
    .dashboard-capacity-grid { grid-template-columns: 1fr; gap: 16px; }
    .dashboard-people-filters { flex-wrap: wrap; }
    .dashboard-people-filters .form-input, .dashboard-people-filters .form-select { min-width: 0; flex: 1 1 140px; }
}

/* Customer portal: five-business-day preview */
.guest-panel-heading { display:flex; justify-content:space-between; gap:24px; align-items:flex-end; margin-bottom:22px; }
.guest-panel-heading h1 { margin:3px 0 6px; font-size:25px; letter-spacing:.01em; }
.guest-panel-heading p { margin:0; color:var(--text-muted); font-size:12px; }
.guest-eyebrow { color:var(--accent) !important; font-size:10px !important; font-weight:700; letter-spacing:.13em; }
.guest-updated { flex:none; color:var(--text-muted); font-size:10px; padding-bottom:2px; }
.guest-stats .stat-card { min-width:0; }
.guest-stats .stat-value small { margin-left:3px; font-size:12px; color:var(--text-muted); }
.stat-note { margin-top:7px; color:var(--text-muted); font-size:9px; }
.guest-five-day { margin-bottom:20px; overflow:hidden; }
.guest-section-header { align-items:flex-start; }
.guest-section-header p { margin:5px 0 0; color:var(--text-muted); font-size:10px; }
.guest-demo-label { padding:5px 8px; border:1px solid rgba(44,95,77,.2); border-radius:999px; background:rgba(44,95,77,.07); color:var(--accent); font-size:9px; white-space:nowrap; }
.guest-schedule-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; padding:14px 16px 18px; }
.guest-day { min-width:0; border:1px solid var(--border); border-radius:8px; background:#fafaf9; overflow:hidden; }
.guest-day.is-today { border-color:rgba(44,95,77,.55); box-shadow:0 0 0 1px rgba(44,95,77,.08); }
.guest-day > header { display:flex; justify-content:space-between; align-items:center; gap:8px; padding:10px 11px; border-bottom:1px solid var(--border-light); background:#fff; }
.guest-day > header div { display:flex; align-items:baseline; gap:5px; }
.guest-day > header strong { font-family:var(--font-mono); font-size:14px; }
.guest-day-week { color:var(--text-muted); font-size:9px; }
.guest-day-total { color:var(--accent); font-size:10px; font-weight:700; white-space:nowrap; }
.guest-day-items { display:flex; flex-direction:column; gap:7px; padding:8px; }
.guest-schedule-item { padding:9px; border:1px solid var(--border-light); border-left:3px solid var(--accent); border-radius:6px; background:#fff; box-shadow:0 1px 3px rgba(27,37,33,.04); }
.guest-item-top,.guest-item-meta,.guest-item-footer { display:flex; justify-content:space-between; align-items:center; gap:6px; }
.guest-item-top strong { font-family:var(--font-mono); font-size:11px; }
.guest-type { display:inline-flex; align-items:center; min-height:18px; padding:2px 6px; border-radius:999px; font-size:8px; font-weight:700; white-space:nowrap; }
.guest-type.normal { color:#235948; background:rgba(44,95,77,.10); }
.guest-type.plan { color:#72551d; background:rgba(184,137,48,.14); }
.guest-item-name { margin:7px 0 6px; min-height:31px; font-size:10px; line-height:1.5; font-weight:600; overflow-wrap:anywhere; }
.guest-item-meta { color:var(--text-muted); font-family:var(--font-mono); font-size:8px; }
.guest-item-meta span:last-child { max-width:58%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.guest-item-footer { margin-top:7px; padding-top:6px; border-top:1px dashed var(--border-light); color:var(--text-muted); font-size:8px; }
.guest-item-footer span:first-child { font-weight:700; }
.guest-item-footer .accent { color:var(--accent); }
.guest-item-footer .warn { color:var(--warning); }
.guest-item-footer .danger { color:var(--danger); }
.guest-item-footer .success { color:var(--success); }
.guest-day-empty,.guest-empty { padding:24px 8px; text-align:center; color:var(--text-muted); font-size:10px; }
.guest-lower-grid { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(280px,.75fr); gap:20px; margin-bottom:22px; }
.guest-deadline-list { min-width:0; }
.guest-deadline-row { display:flex; justify-content:space-between; gap:14px; padding:12px 16px; border-top:1px solid var(--border-light); }
.guest-deadline-row > div { min-width:0; display:flex; flex-direction:column; gap:4px; }
.guest-deadline-row > div:first-child { flex:1; }
.guest-deadline-row > div:last-child { text-align:right; flex:none; }
.guest-deadline-row strong { font-size:10px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.guest-deadline-row > div:last-child strong { color:var(--accent); font-family:var(--font-mono); font-size:13px; }
.guest-deadline-row span { color:var(--text-muted); font-size:8px; }
.guest-table-title { margin:0 0 11px; font-size:15px; }
.guest-request-no { font-family:var(--font-mono); font-size:10px; }
.guest-delivery-cell { white-space:nowrap; }
.guest-delivery-cell strong,.guest-delivery-cell span { display:block; }
.guest-delivery-cell span { margin-top:2px; color:var(--text-muted); font-size:9px; }
.guest-progress { display:inline-block; vertical-align:middle; width:68px; height:6px; margin-right:5px; border-radius:999px; background:var(--border-light); overflow:hidden; }
.guest-progress i { display:block; height:100%; border-radius:inherit; background:var(--accent); }

@media (max-width: 1100px) {
    .guest-schedule-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .guest-lower-grid { grid-template-columns:1fr; }
}
@media (max-width: 700px) {
    .guest-panel-heading { align-items:flex-start; flex-direction:column; }
    .guest-schedule-grid { grid-template-columns:1fr; }
}

/* ============================================================
   表格 — 无底色表头 / 细线 / 宽松行高
   ============================================================ */
.table-wrap { overflow-x: auto; }
table {
    width: 100%; border-collapse: collapse;
    font-size: 12px; line-height: 1.6;
}
th {
    padding: 10px 14px; text-align: left;
    font-size: 10px; font-weight: 500;
    color: var(--text-muted); letter-spacing: 0.06em;
    text-transform: uppercase;
    border-bottom: 1px solid var(--border);
    background: none;
}
td {
    padding: 11px 14px;
    border-bottom: 1px solid var(--border-light);
}
tr:hover td { background: var(--bg-hover); }

/* ============================================================
   按钮
   ============================================================ */
.btn {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 7px 16px; border: 1px solid var(--border);
    border-radius: var(--radius-sm); background: var(--bg-card);
    color: var(--text); font-size: 12px; font-family: var(--font-sans);
    cursor: pointer; transition: all 0.15s; white-space: nowrap;
    line-height: 1.5;
}
.btn:hover { background: var(--bg-hover); border-color: var(--text-muted); }
.btn-primary {
    background: var(--accent); color: #FFFFFF; border-color: var(--accent);
}
.btn-primary:hover { background: #243D66; border-color: #243D66; }
.btn-danger {
    color: var(--danger); border-color: var(--danger);
}
.btn-danger:hover { background: var(--danger-bg); }
.btn-success {
    background: var(--success); color: #FFFFFF; border-color: var(--success);
}
.btn-success:hover { background: #3D6A4A; }
.btn-sm { padding: 4px 10px; font-size: 11px; }

/* ============================================================
   表单
   ============================================================ */
.form-group { margin-bottom: 14px; }
.form-label {
    display: block; font-size: 10px; font-weight: 500;
    color: var(--text-muted); letter-spacing: 0.05em;
    margin-bottom: 5px; text-transform: uppercase;
}
.form-input, .form-select, textarea {
    width: 100%; padding: 8px 12px;
    border: 1px solid var(--border); border-radius: var(--radius-sm);
    font-size: 13px; font-family: var(--font-sans);
    color: var(--text); background: var(--bg-card);
    transition: border-color 0.15s;
    line-height: 1.5;
}
.form-input:focus, .form-select:focus, textarea:focus {
    outline: none; border-color: var(--accent);
}
.form-row {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 12px;
}

/* ============================================================
   状态标签 — 细边框描边式
   ============================================================ */
.badge {
    display: inline-block; padding: 1px 10px;
    border-radius: var(--radius-sm);
    font-size: 10px; font-weight: 500;
    letter-spacing: 0.04em; line-height: 1.8;
    border: 1px solid; background: transparent;
}
.badge-pending { color: var(--text-muted); border-color: var(--border); }
.badge-progress { color: var(--warning); border-color: var(--warning); }
.badge-checking { color: var(--accent); border-color: var(--accent); }
.badge-revising { color: var(--danger); border-color: var(--danger); }
.badge-completed { color: var(--success); border-color: var(--success); }
.badge-delivered { color: var(--success); border-color: var(--success); }
.badge-cancelled { color: var(--danger); border-color: var(--danger); background: var(--danger-bg); }

/* ============================================================
   弹窗
   ============================================================ */
.modal-mask {
    position: fixed; inset: 0;
    background: rgba(0,0,0,0.25);
    display: flex; align-items: center; justify-content: center;
    z-index: 1000;
}
.modal {
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius-lg); padding: 28px;
    max-width: 800px; width: 90%; max-height: 85vh; overflow-y: auto;
}
.modal-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 24px;
}
.modal-title {
    font-family: var(--font-serif);
    font-size: 15px; font-weight: 500;
    letter-spacing: 0.03em;
}
.modal-close {
    background: none; border: none; font-size: 18px; cursor: pointer;
    color: var(--text-muted); padding: 4px 8px; border-radius: var(--radius-sm);
    line-height: 1;
}
.modal-close:hover { background: var(--bg-hover); color: var(--text); }

/* ============================================================
   Kanban — 细线下划线 + 语义色圆点
   ============================================================ */
.kanban { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 8px; }
.kanban-col { min-width: 240px; flex: 1; }
.kanban-col-header {
    padding: 12px 14px 10px;
    font-size: 12px; font-weight: 500;
    color: var(--text);
    border-bottom: 2px solid var(--border);
    display: flex; align-items: center; gap: 8px;
}
.kanban-col-header::before {
    content: '';
    display: inline-block; width: 8px; height: 8px;
    border-radius: 50%;
}
.kanban-col-header.c-pending::before { background: var(--text-muted); }
.kanban-col-header.c-progress::before,
.kanban-col-header.c-in_progress::before { background: var(--warning); }
.kanban-col-header.c-checking::before { background: var(--accent); }
.kanban-col-header.c-revising::before { background: var(--danger); }
.kanban-col-header.c-completed::before { background: var(--success); }
.kanban-col-header.c-delivered::before { background: var(--success); }

.kanban-col-body {
    min-height: 300px; padding: 10px 0;
}
.kanban-card {
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius); padding: 12px 14px;
    margin-bottom: 8px; cursor: pointer;
    transition: border-color 0.15s;
}
.kanban-card:hover { border-color: var(--accent); }
.kanban-card .kc-id {
    font-size: 10px; color: var(--text-muted);
    font-family: var(--font-mono); letter-spacing: 0.04em;
}
.kanban-card .kc-name {
    font-size: 12px; font-weight: 500; color: var(--text);
    margin: 5px 0; line-height: 1.4;
}
.kanban-card .kc-meta {
    font-size: 10px; color: var(--text-muted);
    display: flex; justify-content: space-between;
}

/* ============================================================
   搜索栏
   ============================================================ */
.search-bar {
    display: flex; gap: 8px; margin-bottom: 18px;
    flex-wrap: wrap; align-items: center;
}
.search-bar .form-input,
.search-bar .form-select { max-width: 200px; }

/* ============================================================
   分页
   ============================================================ */
.pagination { display: flex; gap: 4px; justify-content: center; margin-top: 20px; }
.pagination button {
    padding: 6px 12px; border: 1px solid var(--border);
    border-radius: var(--radius-sm); background: var(--bg-card);
    cursor: pointer; font-size: 12px; color: var(--text);
    transition: all 0.15s;
}
.pagination button:hover { border-color: var(--accent); color: var(--accent); }
.pagination button.active {
    background: var(--accent); color: #FFFFFF; border-color: var(--accent);
}
.pagination button:disabled { opacity: 0.35; cursor: default; }

/* ============================================================
   图表容器
   ============================================================ */
.chart-container { width: 100%; height: 300px; }

/* ============================================================
   布局工具
   ============================================================ */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }

/* ============================================================
   响应式
   ============================================================ */
@media (max-width: 768px) {
    .sidebar { width: var(--sidebar-collapsed); }
    .sidebar .nav-label, .sidebar-header h2 { display: none; }
    .main-content { margin-left: var(--sidebar-collapsed); padding: 20px 16px; }
    .grid-2, .grid-3 { grid-template-columns: 1fr; }
    .stats-row { grid-template-columns: 1fr 1fr; }
}

/* ============================================================
   v3: 登录画面
   ============================================================ */
.login-container {
    display: flex; align-items: center; justify-content: center;
    min-height: 100vh; background: var(--bg-page);
}
.login-card {
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius-lg); padding: 40px 32px; width: 360px; max-width: 90vw;
}
.login-card h1 {
    font-family: var(--font-serif); font-size: 20px; text-align: center;
    margin: 0 0 8px; color: var(--text);
}
.login-subtitle {
    text-align: center; color: var(--text-muted); font-size: 13px; margin: 0 0 24px;
}
.login-form .field { margin-bottom: 16px; }
.login-form .field label {
    display: block; font-size: 13px; color: var(--text-secondary); margin-bottom: 4px;
}
.login-form .field input {
    width: 100%; padding: 8px 12px; border: 1px solid var(--border);
    border-radius: var(--radius-sm); font-size: 14px; box-sizing: border-box;
}
.login-form .field input:focus { border-color: var(--accent); outline: none; }
.login-error { color: var(--danger); font-size: 13px; margin: 0 0 12px; }
.login-form .btn-primary {
    width: 100%; padding: 10px; background: var(--accent); color: #fff;
    border: none; border-radius: var(--radius-sm); font-size: 14px; cursor: pointer;
    font-family: var(--font-sans);
}
.login-form .btn-primary:hover { opacity: 0.9; }
.login-form .btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }

/* ============================================================
   v3: サイドバーフッター (用户信息+退出)
   ============================================================ */
.sidebar-footer {
    position: absolute; bottom: 0; left: 0; right: 0;
    padding: 12px 16px; border-top: 1px solid var(--border-light);
}
.sidebar-footer .user-info {
    display: block; font-size: 12px; color: var(--text-secondary);
    margin-bottom: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.sidebar-footer .logout-btn {
    width: 100%; padding: 6px; background: var(--danger); color: #fff;
    border: none; border-radius: var(--radius-sm); font-size: 12px; cursor: pointer;
}
.sidebar-footer .logout-btn:hover { opacity: 0.9; }

/* ============================================================
   v3: 受付タブ（通常/プラン切替）
   ============================================================ */
.upload-tabs {
    display: flex; gap: 0; margin-bottom: 16px; border-bottom: 2px solid var(--border-light);
}
.upload-tabs .tab-btn {
    padding: 8px 20px; border: none; background: none; font-size: 14px;
    color: var(--text-muted); cursor: pointer; border-bottom: 2px solid transparent;
    margin-bottom: -2px; transition: all 0.15s;
}
.upload-tabs .tab-btn.active {
    color: var(--accent); border-bottom-color: var(--accent); font-weight: 500;
}
.upload-tabs .tab-btn:hover { color: var(--text); }
}
/* 排程日別配分：工数入力を狭い画面でも潰さない */
.schedule-allocation-grid {
    display: grid;
    grid-template-columns: minmax(150px, 1.35fr) minmax(105px, 1fr) minmax(90px, .8fr) auto;
    gap: 8px;
    align-items: end;
}

.schedule-calendar-table {
    table-layout: auto;
}

.schedule-day-cell {
    padding: 8px !important;
    vertical-align: top;
}

.schedule-time-axis {
    display: flex;
    justify-content: space-between;
    color: var(--text-muted);
    font-size: 9px;
    padding: 0 2px 4px;
    border-bottom: 1px dashed var(--border);
}

.schedule-case-card {
    margin-top: 8px;
    padding: 7px;
    border: 1px solid var(--border-light);
    border-radius: 7px;
    background: var(--bg-card);
    cursor: pointer;
    transition: box-shadow .15s ease, border-color .15s ease;
}

.schedule-case-card:hover {
    border-color: var(--accent);
    box-shadow: 0 2px 8px rgba(44, 74, 124, .12);
}

.schedule-case-name {
    color: var(--text);
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    white-space: normal;
    overflow-wrap: anywhere;
    margin-bottom: 6px;
}

.schedule-bar-track {
    position: relative;
    height: 24px;
    border-radius: 5px;
    background: repeating-linear-gradient(to right, var(--bg-hover) 0, var(--bg-hover) calc(12.5% - 1px), var(--border) 12.5%);
    overflow: hidden;
}

.schedule-time-bar {
    position: absolute;
    top: 2px;
    bottom: 2px;
    min-width: 5px;
    border-radius: 4px;
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .15);
}

.schedule-case-meta,
.schedule-day-remaining {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    margin-top: 5px;
    color: var(--text-muted);
    font-size: 9px;
}

.schedule-case-meta span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.schedule-case-meta strong {
    color: var(--text);
    white-space: nowrap;
}

.schedule-day-remaining {
    padding-top: 7px;
    border-top: 1px dashed var(--border);
}

.schedule-day-remaining span:first-child { color: var(--accent); }
.schedule-day-remaining span:last-child { color: var(--success); }

.schedule-empty-day {
    padding: 24px 0;
    text-align: center;
    color: var(--text-muted);
    font-size: 10px;
}

.schedule-allocation-grid .form-input {
    min-width: 0;
    width: 100%;
}

@media (max-width: 700px) {
    .schedule-allocation-grid {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    }

    .schedule-allocation-grid .btn-danger {
        width: 100%;
    }
}
