:root{--color-primary: #1A73E8;--color-primary-strong: #1667D2;--color-primary-soft: #E8F0FE;--color-primary-contrast: #FFFFFF;--color-accent-teal: #0F8A6E;--color-success: #0F8A6E;--color-success-soft: #E3F5EF;--color-warning: #C5221F;--color-warning-soft: #FCE8E6;--color-error: #C5221F;--color-error-soft: #FCE8E6;--color-info: #1A73E8;--color-info-soft: #E8F0FE;--color-bg: #FFFFFF;--color-surface: #FFFFFF;--color-surface-2: #F8F9FA;--color-ink: #202124;--color-ink-2: #3C4043;--color-ink-3: #5F6368;--color-line: #E8EAED;--color-line-strong: #DADCE0;--color-focus: #1A73E8;--focus-ring: 0 0 0 3px rgba(26,115,232,.3);--font-body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "SF Mono", "Roboto Mono", ui-monospace, monospace;--text-xs: .8125rem;--text-sm: .9375rem;--text-base: 1.0625rem;--text-lg: 1.25rem;--text-xl: 1.5rem;--text-2xl: 1.875rem;--text-3xl: 2.5rem;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--leading-tight: 1.2;--leading-normal: 1.5;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--touch-min: 56px;--touch-primary: 64px;--touch-gap: var(--space-3);--radius-sm: 8px;--radius: 12px;--radius-lg: 20px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(22,32,28,.06);--shadow: 0 2px 8px rgba(22,32,28,.08);--shadow-lg: 0 8px 28px rgba(22,32,28,.14);--nav-rail-width: 260px;--topbar-height: 68px;--content-max: 1400px;--page-pad: var(--space-6);--ease: cubic-bezier(.2, 0, 0, 1);--dur-fast: .12s;--dur: .18s}@media (max-width: 640px){:root{--page-pad: var(--space-4);--nav-rail-width: 0px;--topbar-height: 60px;--text-3xl: 2rem}}@media (min-width: 1440px){:root{--nav-rail-width: 280px;--page-pad: var(--space-7)}}@media (prefers-reduced-motion: reduce){:root{--dur-fast: 0ms;--dur: 0ms}}:root{--ink: var(--color-ink);--ink-soft: var(--color-ink-2);--paper: var(--color-bg);--surface: var(--color-surface);--line: var(--color-line);--line-strong: var(--color-line-strong);--accent: var(--color-primary);--accent-soft: var(--color-primary-soft);--muted: var(--color-ink-3);--warn-bg: var(--color-warning-soft);--warn-ink: var(--color-warning);--danger: var(--color-error);--font: var(--font-body)}*{box-sizing:border-box}body{margin:0;font-family:var(--font-body);color:var(--color-ink);background:var(--color-bg);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased}a{color:var(--color-primary);text-decoration:none}.app{display:flex;height:100vh;height:100dvh;max-width:100%;overflow:hidden}.sidebar{width:var(--nav-rail-width);background:var(--color-surface-2);color:var(--color-ink-2);border-right:1px solid var(--color-line);padding:var(--space-5) 0;height:100%;padding-top:calc(var(--space-5) + env(safe-area-inset-top));padding-bottom:calc(var(--space-5) + env(safe-area-inset-bottom));flex-shrink:0;display:flex;flex-direction:column;overflow-y:auto}.brand{font-size:var(--text-2xl);font-weight:var(--weight-bold);letter-spacing:.01em;padding:0 var(--space-5) var(--space-5);color:var(--color-ink);display:inline-flex;align-items:center}.brand span{color:var(--color-primary)}.sidebar-top{display:flex;align-items:center;justify-content:space-between;padding-right:var(--space-3)}.sidebar-top .brand{padding-bottom:0}.rail-toggle{min-height:40px;width:40px;padding:0;border:none;background:none;color:var(--color-ink-3);border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.rail-toggle:hover{background:var(--color-line);color:var(--color-ink);border:none}@media (max-width: 640px){.rail-toggle{display:none}}@media (min-width: 641px) and (max-width: 1024px) and (orientation: portrait){.rail-toggle{display:none}}.nav{flex:1;display:flex;flex-direction:column;gap:2px;padding:0 var(--space-3)}.nav a{display:flex;align-items:center;gap:var(--space-3);min-height:var(--touch-min);padding:0 var(--space-4);border-radius:var(--radius-pill);color:var(--color-ink-2);font-size:var(--text-lg);font-weight:var(--weight-medium)}.nav-icon{display:inline-flex;flex-shrink:0;width:24px;height:24px}.nav-label{white-space:nowrap;overflow:hidden}.nav a:hover{background:var(--color-line);color:var(--color-ink)}.nav a.active{color:var(--color-primary);background:var(--color-primary-soft);font-weight:var(--weight-semibold)}.sidebar-user{border-top:1px solid var(--color-line);margin-top:var(--space-2);padding:var(--space-4) var(--space-5) var(--space-1);display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.who-name{color:var(--color-ink);font-size:var(--text-base);font-weight:var(--weight-semibold)}.who-role{color:var(--color-ink-3);font-size:var(--text-sm)}.sidebar-user .link{color:var(--color-primary)}.sidebar-user .link:hover{color:var(--color-primary-strong)}.signout-btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;width:40px;padding:0;border:none;background:none;color:var(--color-ink-3);border-radius:var(--radius-pill);flex-shrink:0}.signout-btn:hover{background:var(--color-line);color:var(--color-warning);border:none}.content{flex:1;min-width:0;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--page-pad);padding-top:calc(var(--page-pad) + env(safe-area-inset-top));padding-right:calc(var(--page-pad) + env(safe-area-inset-right));padding-left:calc(var(--page-pad) + env(safe-area-inset-left));padding-bottom:calc(var(--page-pad) + env(safe-area-inset-bottom));max-width:var(--content-max);width:100%}.page-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap}.page-head h1{font-size:var(--text-2xl);margin:0;font-weight:var(--weight-semibold);color:var(--color-ink)}.page-sub{color:var(--color-ink-3);font-size:var(--text-sm);margin:var(--space-1) 0 0}button{font-family:var(--font-body);font-size:var(--text-base);min-height:var(--touch-min);border-radius:var(--radius);border:1.5px solid var(--color-line-strong);background:var(--color-surface);color:var(--color-ink);padding:0 var(--space-5);cursor:pointer;font-weight:var(--weight-medium);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease)}button:hover{border-color:var(--color-ink-3)}button:focus-visible{outline:none;box-shadow:var(--focus-ring)}button.primary{min-height:var(--touch-primary);background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-contrast);font-weight:var(--weight-semibold);font-size:var(--text-lg);padding:0 var(--space-6)}button.primary:hover{background:var(--color-primary-strong);border-color:var(--color-primary-strong)}button.link,button.danger-link{border:none;background:none;min-height:var(--touch-min);padding:0 var(--space-3);font-weight:var(--weight-medium)}button.link{color:var(--color-primary)}button.danger-link{color:var(--color-error)}button:disabled{opacity:.45;cursor:not-allowed}table{width:100%;border-collapse:collapse;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius);overflow:hidden}th,td{text-align:left;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-line);font-size:var(--text-base)}th{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-ink-3);font-weight:var(--weight-semibold);background:var(--color-surface-2)}tbody tr{min-height:var(--touch-min)}tr:last-child td{border-bottom:none}td.num,th.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm);padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);font-weight:var(--weight-medium);min-height:34px;border:1px solid transparent}.badge.review{background:var(--color-warning-soft);color:var(--color-warning);border-color:#f5c9c6}.badge.archived{background:var(--color-surface-2);color:var(--color-ink-3);border-color:var(--color-line-strong)}.badge.partial{background:var(--color-info-soft);color:var(--color-info);border-color:#c6dafb}.badge.complete,.badge.ok{background:var(--color-success-soft);color:var(--color-success);border-color:#bfe7da}.badge.warn{background:var(--color-warning-soft);color:var(--color-warning);border-color:#f5c9c6}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.field{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.field.full{grid-column:1 / -1}label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-ink-2)}input,select,textarea{font-family:var(--font-body);font-size:var(--text-lg);min-height:var(--touch-min);padding:0 var(--space-4);border:1.5px solid var(--color-line-strong);border-radius:var(--radius);background:var(--color-surface);color:var(--color-ink)}textarea{padding:var(--space-3) var(--space-4);min-height:96px;line-height:var(--leading-normal)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--focus-ring)}input[inputmode=decimal],input.mono{font-family:var(--font-mono)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#16201c73;display:flex;align-items:flex-start;justify-content:center;padding:var(--space-7) var(--space-4);z-index:50;overflow-y:auto}.modal{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6);width:100%;max-width:680px;box-shadow:var(--shadow-lg)}.modal h2{margin:0 0 var(--space-4);font-size:var(--text-xl)}.modal h2:empty{display:none}.detail-title{margin:var(--space-4) 0 var(--space-4);font-size:var(--text-2xl);font-weight:var(--weight-bold)}.error-banner{background:var(--color-error-soft);color:var(--color-error);border:1px solid #F0C4C0;padding:var(--space-3) var(--space-4);border-radius:var(--radius);margin-bottom:var(--space-4);font-size:var(--text-base)}.field-error{color:var(--color-error);font-size:var(--text-sm)}.empty{padding:var(--space-7);text-align:center;color:var(--color-ink-3);background:var(--color-surface);border:1px dashed var(--color-line-strong);border-radius:var(--radius);font-size:var(--text-lg)}.toolbar{display:flex;gap:var(--space-3);align-items:center;margin-bottom:var(--space-4);flex-wrap:wrap}.toolbar input[type=search]{flex:1;max-width:360px}.hint{font-size:var(--text-sm);color:var(--color-ink-3)}.row-actions{display:flex;gap:var(--space-2);justify-content:flex-end;align-items:center}.filters{display:flex;gap:var(--space-3);align-items:center;margin:var(--space-1) 0 var(--space-4);flex-wrap:wrap}.filters label{display:inline-flex;gap:var(--space-2);align-items:center}.filters input[type=date],.filters select{margin-left:var(--space-1)}.summary-cards{display:flex;gap:var(--space-4);margin:var(--space-1) 0 var(--space-5);flex-wrap:wrap}.summary-card{flex:1 1 200px;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5)}.summary-label{color:var(--color-ink-3);font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.04em}.summary-value{font-size:var(--text-3xl);font-weight:var(--weight-medium);color:var(--color-ink);margin-top:var(--space-1);line-height:var(--leading-tight)}.summary-note{color:var(--color-ink-3);font-size:var(--text-sm);margin-top:var(--space-2)}.detail-grid{display:flex;flex-direction:column;gap:0}.detail-row{display:flex;padding:var(--space-3) 0;border-bottom:1px solid var(--color-line)}.detail-label{flex:0 0 180px;color:var(--color-ink-3);font-size:var(--text-base)}.detail-value{flex:1;color:var(--color-ink);font-size:var(--text-base)}.task-layout{display:flex;gap:var(--space-5);align-items:flex-start;flex-wrap:wrap}.task-main{flex:1 1 440px;display:flex;flex-direction:column;gap:var(--space-4)}.task-side{flex:0 0 320px;display:flex;flex-direction:column;gap:var(--space-4)}.card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:var(--space-5)}.card h3{margin:0 0 var(--space-3);font-size:var(--text-lg);font-weight:var(--weight-semibold)}.line-row{display:grid;grid-template-columns:140px minmax(0,1fr) 100px 110px 44px;gap:var(--space-2);align-items:center;margin-bottom:var(--space-2)}.line-head{font-size:var(--text-xs);text-transform:uppercase;color:var(--color-ink-3);font-weight:var(--weight-semibold)}.line-row>select,.line-row>input,.line-row>button{min-width:0;max-width:100%}.line-row>select{text-overflow:ellipsis}.step-row{display:grid;grid-template-columns:32px minmax(0,1fr) 32px;gap:var(--space-2);align-items:start;margin-bottom:var(--space-2)}.step-num{display:inline-flex;align-items:center;justify-content:center;min-height:40px;font-weight:var(--weight-semibold);color:var(--color-ink-3)}.step-row>textarea{min-width:0;width:100%}.tag-filter{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.chip{min-height:40px;padding:0 var(--space-4);border-radius:var(--radius-pill);border:1px solid var(--color-line-strong);background:var(--color-surface);color:var(--color-ink-2);font-size:var(--text-base);font-weight:var(--weight-medium)}.chip:hover{border-color:var(--color-primary);color:var(--color-primary)}.chip--active{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary);font-weight:var(--weight-semibold)}.row-clickable{cursor:pointer}.row-clickable:hover{background:var(--color-primary-soft)}.detail-banner{margin:calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) var(--space-5);position:relative;height:260px;background:var(--color-surface-2);border-radius:var(--radius-lg) var(--radius-lg) 0 0;overflow:hidden}.detail-banner-img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.detail-banner-empty{display:flex;align-items:center;justify-content:center;height:100%}.detail-banner-actions{position:absolute;right:var(--space-3);bottom:var(--space-3);display:flex;gap:var(--space-2);background:var(--color-surface);padding:var(--space-1) var(--space-2);border-radius:var(--radius-pill);box-shadow:var(--shadow-sm)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg);padding:var(--space-5)}.login-card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:var(--space-6);width:100%;max-width:400px;box-shadow:var(--shadow-lg)}.login-brand{font-size:var(--text-3xl);font-weight:var(--weight-bold);letter-spacing:.01em;color:var(--color-ink)}.login-brand span{color:var(--color-primary)}.login-sub{color:var(--color-ink-3);margin:var(--space-1) 0 var(--space-5);font-size:var(--text-base)}@media (max-width: 640px){.app{flex-direction:column;height:auto;min-height:100vh;min-height:100dvh;overflow:visible}.sidebar{position:fixed;bottom:0;left:0;right:0;top:auto;width:100%;height:auto;flex-direction:row;align-items:center;padding:0;padding-bottom:env(safe-area-inset-bottom);padding-top:0;z-index:40;border-right:none;border-top:1px solid var(--color-line);background:var(--color-surface);overflow-x:auto;overflow-y:visible}.brand,.sidebar-user{display:none}.nav{flex-direction:row;gap:0;padding:0;width:100%;justify-content:space-around}.nav a{flex-direction:column;justify-content:center;gap:2px;min-height:60px;padding:var(--space-2) var(--space-2);font-size:var(--text-xs);border-radius:0;border-top:3px solid transparent;text-align:center;white-space:nowrap}.nav a.active{background:none;border-top-color:var(--color-primary)}.nav-label{display:block}.nav-icon{width:22px;height:22px}.content{height:auto;overflow-y:visible;padding:var(--page-pad);padding-bottom:calc(84px + env(safe-area-inset-bottom))}.form-grid{grid-template-columns:1fr}.task-side{flex-basis:100%}.detail-label{flex-basis:130px}}@media (max-width: 780px) and (min-width: 641px){.task-side{flex-basis:100%}}@media (min-width: 641px){.app--collapsed .sidebar{width:76px}.app--collapsed .brand{padding:0;overflow:hidden}.app--collapsed .brand svg{height:22px;width:auto}.app--collapsed .sidebar-top{justify-content:center;padding-right:0;flex-direction:column;gap:var(--space-2)}.app--collapsed .nav{padding:0}.app--collapsed .nav a{justify-content:center;padding:0;gap:0;margin:0 auto;width:52px;border-radius:var(--radius);min-height:var(--touch-primary)}.app--collapsed .nav-label{display:none}.app--collapsed .sidebar-user{justify-content:center;padding:var(--space-4) 0 var(--space-1)}.app--collapsed .sidebar-user .who{display:none}}@media (min-width: 641px) and (max-width: 1024px) and (orientation: portrait){:root{--nav-rail-width: 76px}.nav{padding:0}.brand{padding:0 0 var(--space-5);text-align:center;display:flex;justify-content:center;overflow:hidden}.brand svg{height:22px;width:auto}.nav a{justify-content:center;padding:0;gap:0;margin:0 auto;width:52px;border-radius:var(--radius);min-height:var(--touch-primary)}.nav-label{display:none}.sidebar-user{justify-content:center;padding:var(--space-4) 0 var(--space-1)}.sidebar-user .who{display:none}}.pwa-toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--space-4) + env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;gap:var(--space-3);max-width:calc(100vw - 2 * var(--space-4));padding:var(--space-3) var(--space-4);background:var(--color-ink);color:var(--color-primary-contrast);border-radius:var(--radius-pill);box-shadow:var(--shadow-lg);font-size:var(--text-sm)}@media (max-width: 640px){.pwa-toast{bottom:calc(84px + var(--space-3) + env(safe-area-inset-bottom))}}.pwa-toast--hint{background:var(--color-surface);color:var(--color-ink);border:1px solid var(--color-line-strong)}.pwa-toast-action{min-height:36px;padding:0 var(--space-3);border:none;border-radius:var(--radius-pill);background:var(--color-primary);color:var(--color-primary-contrast);font-weight:var(--weight-semibold);font-size:var(--text-sm);flex-shrink:0}.pwa-toast-action:hover{background:var(--color-primary-strong)}.pwa-toast--hint .pwa-toast-action{background:var(--color-line);color:var(--color-ink)}.boot-splash{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--color-ink-3);font-size:var(--text-sm)}.load-more{display:flex;justify-content:center;padding:var(--space-4) 0}
