:root{--brand:#1a4f8b;--brand-dark:#143a66;--brand-100:#dbe7f5;--brand-050:#f2f6fb;--ok:#1f7a3d;--ng:#b00020;--ink:#1a1a1a;--muted:#566575;--line:#e3e8ef;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-sm:0 1px 2px #0f172a0d;--shadow-xl:0 20px 25px #0f172a26;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-md:16px;--ease-out:cubic-bezier(.16, 1, .3, 1);--duration-fast:.15s;--duration-base:.2s;--color-primary:var(--brand);--color-primary-hover:var(--brand-dark);--color-primary-soft:var(--brand-100);--color-on-primary:#fff;--color-accent:var(--brand);--color-text:var(--ink);--color-text-muted:var(--muted);--color-border:var(--line);--color-bg:#f5f6f8;--color-surface:#fff;--color-surface-sunken:var(--brand-050);--color-danger:var(--ng);--color-danger-text:var(--ng);--color-danger-soft:#fef2f2;--color-success:var(--ok);--color-success-soft:#f0fdf4;--color-warning-text:#92400e;--color-warning-soft:#fffbeb;--focus-ring:0 0 0 2px var(--color-surface), 0 0 0 4px var(--color-accent);--status-todo-bg:#eceff1;--status-todo-fg:#455a64;--status-doing-bg:#d6e8ff;--status-doing-fg:#0b4d93;--status-review-bg:#fff0c7;--status-review-fg:#6d4c00;--status-done-bg:#d3f0dd;--status-done-fg:#14612f;--status-hold-bg:#f3e2f7;--status-hold-fg:#6c2a7d;color:#1a1a1a;background:#f5f6f8;font-family:Segoe UI,Hiragino Kaku Gothic ProN,Yu Gothic,Meiryo,sans-serif}*{box-sizing:border-box}body{padding-top:env(safe-area-inset-top);margin:0}main{padding-bottom:4rem}button{min-height:36px;font-size:.95rem}input,select{min-height:32px;font-size:16px}table input,table select{min-height:28px;font-size:.85rem}@media (width<=900px),(orientation:portrait) and (width<=1080px){table input,table select{font-size:16px}}h1,h2,h3{line-height:1.3}.app-brand svg,.app-brand img{object-fit:cover;border-radius:6px;width:1.7em;height:1.7em}.signin-logo{object-fit:cover;border-radius:14px;width:56px;height:56px;margin:0 auto 14px;display:block}table{border-collapse:collapse}table tbody tr{transition:background-color 80ms}table tbody tr:hover{background-color:#f1f6fb}.report-grid tbody tr:hover{background-color:#0000}.shell-v2{min-height:100dvh;display:flex}.sidebar{background:linear-gradient(180deg, #fff 0%, var(--brand-050) 100%);border-right:1px solid var(--line);width:232px;height:100dvh;transition:width var(--duration-base) var(--ease-out);flex-direction:column;flex-shrink:0;display:flex;position:sticky;top:0}.sidebar.collapsed{width:72px}.sidebar-brand{align-items:center;gap:var(--space-sm);padding:var(--space-md);border-bottom:1px solid var(--line);min-height:60px;color:var(--brand-dark);font-weight:700;font-size:var(--text-md);white-space:nowrap;display:flex;overflow:hidden}.sidebar-brand img{object-fit:contain;border-radius:8px;flex-shrink:0;width:30px;height:30px}.sidebar-close-btn{width:44px;height:44px;color:var(--muted);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-md);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;display:none}.sidebar-close-btn:hover{background:var(--brand-100);color:var(--brand-dark)}.sidebar-nav{padding:var(--space-sm) var(--space-sm) var(--space-md);flex:1;overflow-y:auto}.nav-link{padding:9px var(--space-sm);border-radius:var(--radius-sm);color:#37475a;font-size:var(--text-base);white-space:nowrap;cursor:pointer;text-align:left;width:100%;transition:background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);background:0 0;border:none;align-items:center;gap:10px;text-decoration:none;display:flex;overflow:hidden}.nav-link:hover{background:var(--brand-100);color:var(--brand-dark)}.nav-link.active{background:var(--brand);color:#fff;font-weight:600}.nav-link:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.sidebar.collapsed .nav-link{justify-content:center;padding:9px 0}.sidebar-collapse-btn{align-items:center;gap:var(--space-sm);margin:0 var(--space-sm) var(--space-sm);padding:9px var(--space-sm);border-radius:var(--radius-sm);color:var(--muted);font-size:var(--text-sm);cursor:pointer;white-space:nowrap;transition:background var(--duration-fast) var(--ease-out);background:0 0;border:none;display:flex}.sidebar-collapse-btn:hover{background:var(--brand-100);color:var(--brand-dark)}.sidebar.collapsed .sidebar-collapse-btn{justify-content:center}.sidebar-footer{gap:var(--space-sm);padding:var(--space-sm) var(--space-sm) var(--space-md);border-top:1px solid var(--line);flex-direction:column;display:none}.sidebar-user-chip{align-items:center;gap:var(--space-sm);box-sizing:border-box;background:var(--brand-050);border:1px solid var(--brand-100);min-height:44px;font-size:var(--text-sm);color:var(--ink);border-radius:999px;padding:4px 10px 4px 4px;display:flex;overflow:hidden}.sidebar-user-chip-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sidebar-signout-btn{align-items:center;gap:var(--space-sm);min-height:44px;padding:9px var(--space-sm);border:1px solid var(--line);border-radius:var(--radius-sm);color:#37475a;font-size:var(--text-sm);cursor:pointer;background:#fff;display:flex}.sidebar-signout-btn:hover{background:var(--brand-050);border-color:var(--brand-100)}.sidebar-scrim{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:90;background:#0f172a73;position:fixed;inset:0}.shell-main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{align-items:center;gap:var(--space-md);padding:0 var(--space-lg);padding-top:env(safe-area-inset-top);min-height:calc(56px + env(safe-area-inset-top));background:var(--brand);color:#fff;border-bottom:1px solid var(--line);z-index:80;flex-wrap:wrap;row-gap:6px;display:flex;position:sticky;top:0}.topbar-menu-btn{color:#fff;cursor:pointer;padding:var(--space-xs);border-radius:var(--radius-sm);font-size:var(--text-md);background:0 0;border:none;display:none}.topbar-app-icon{display:none}.topbar-heading{font-size:var(--text-md);color:#fff;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:700;overflow:hidden}.topbar-actions{align-items:center;gap:var(--space-sm);flex-wrap:wrap;margin-left:auto;display:flex}.topbar-btn{border-radius:var(--radius-sm);color:#fff;cursor:pointer;min-height:44px;font-size:var(--text-sm);background:0 0;border:1px solid #fff6;align-items:center;gap:6px;padding:.5rem .85rem;display:inline-flex}.topbar-btn:hover{background:#ffffff1f}.topbar-clock{font-variant-numeric:tabular-nums;font-weight:600;font-size:var(--text-sm)}.topbar-user-chip{color:#fff;cursor:pointer;font-size:var(--text-sm);background:0 0;border:none;border-radius:14px;align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.topbar-user-chip:hover,.topbar-user-chip.open{background:#ffffff2e}.topbar-user-chip .role-pill{font-size:var(--text-xs);background:#fff3;border-radius:10px;padding:2px 8px}.page-main-shell{padding:var(--space-lg);flex:1}@media (width<=900px),(orientation:portrait) and (width<=1080px){.sidebar{z-index:100;transition:transform var(--duration-base) var(--ease-out);width:240px;box-shadow:var(--shadow-xl);position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.sidebar-brand{padding-top:calc(var(--space-md) + env(safe-area-inset-top))}.sidebar.mobile-open{transform:translate(0)}.sidebar.collapsed{width:240px}.sidebar .sidebar-collapse-btn{display:none}.sidebar-close-btn{display:inline-flex}.sidebar-footer{padding-bottom:calc(var(--space-md) + env(safe-area-inset-bottom));display:flex}.nav-link{box-sizing:border-box;min-height:44px}.topbar-menu-btn{display:inline-flex}.topbar-app-icon{object-fit:cover;border-radius:6px;flex-shrink:0;width:28px;height:28px;display:block}.topbar-actions .topbar-clock,.topbar-actions .topbar-user-chip,.topbar-actions .topbar-btn[aria-label=ログアウト]{display:none}.page-main-shell{padding:var(--space-md);padding-bottom:calc(var(--space-md) + 64px + env(safe-area-inset-bottom))}}.bottom-nav{z-index:85;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);background:#fff;display:none;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 12px #0f172a0f}.sidebar.mobile-open~.bottom-nav{pointer-events:none}.bottom-nav-inner{justify-content:space-around;align-items:stretch;display:flex}.bottom-nav-item{min-height:56px;color:var(--muted);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:6px 2px;font-size:.66rem;font-weight:500;display:flex}.bottom-nav-item .icon{font-size:18px;line-height:1}.bottom-nav-item.active{color:var(--brand);font-weight:700}.bottom-nav-item:focus-visible{outline:none;box-shadow:inset 0 0 0 2px #1a4f8b4d}@media (width<=900px),(orientation:portrait) and (width<=1080px){.bottom-nav{display:block}}@media print{@page{size:A4 landscape;margin:6mm}header,.roster-noprint{display:none!important}.roster-overview{font-size:6.5pt!important}}.form-print-root{display:none}@media print{body.print-record #root{display:none!important}body.print-record .form-print-root{color:#000;font-size:8.5pt;display:block!important}.form-print-header{margin-bottom:6mm}.form-print-header h1{margin:0 0 2mm;font-size:13pt}.form-print-header-fields{color:#333;gap:12px;font-size:9pt;display:flex}.form-print-table{border-collapse:collapse;width:100%;margin-bottom:4mm}.form-print-table caption{text-align:left;padding-bottom:1mm;font-weight:700}.form-print-table th,.form-print-table td{text-align:left;border:.3mm solid #666;padding:1mm 2mm}.form-print-kv th{background:#f1f5f9;width:30%}.form-print-note{margin-bottom:4mm}.form-print-note-label{font-size:9pt;font-weight:700}.form-print-note-value{white-space:pre-wrap;border:.3mm solid #666;min-height:10mm;padding:2mm}.form-print-signatures{gap:4mm;margin:6mm 0;display:flex}.form-print-sig-box{text-align:center;border:.3mm solid #666;min-width:30mm;padding:2mm}.form-print-sig-label{color:#333;font-size:8pt}.form-print-sig-value{min-height:8mm;font-size:11pt;font-weight:700}.form-print-sig-date{color:#666;font-size:7pt}.form-print-footer{color:#666;border-top:.3mm solid #999;gap:12px;padding-top:2mm;font-size:7pt;display:flex}}.status-badge{height:24px;font-size:var(--text-xs);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:0 10px 0 8px;font-weight:600;display:inline-flex}.status-badge:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}.status-badge.is-todo{background:var(--status-todo-bg);color:var(--status-todo-fg)}.status-badge.is-doing{background:var(--status-doing-bg);color:var(--status-doing-fg)}.status-badge.is-review{background:var(--status-review-bg);color:var(--status-review-fg)}.status-badge.is-done{background:var(--status-done-bg);color:var(--status-done-fg)}.status-badge.is-hold{background:var(--status-hold-bg);color:var(--status-hold-fg)}
