:root{--color-paper: oklch(98.5% .004 250);--color-paper-2: oklch(96.5% .006 250);--color-paper-3: oklch(94% .008 250);--color-ink: oklch(24% .02 258);--color-ink-2: oklch(34% .018 257);--color-ink-3: oklch(52% .014 256);--color-rule: oklch(90% .008 252);--color-rule-2: oklch(84% .01 252);--color-accent: oklch(58% .2 256);--color-accent-soft: oklch(94% .03 256);--color-accent-ink: oklch(99% 0 0);--color-graphite: oklch(22% .016 260);--color-graphite-ink: oklch(92% .008 250);--color-focus: oklch(58% .2 256);--color-overdue: oklch(54% .19 27);--color-overdue-soft: oklch(95% .025 27);--color-today: oklch(62% .16 45);--color-today-soft: oklch(95.5% .03 65);--color-soon: oklch(70% .13 85);--color-soon-soft: oklch(96% .045 95);--color-ok: oklch(56% .12 155);--color-ok-soft: oklch(95% .03 155);--font-display: "Space Grotesk", "Noto Sans JP", sans-serif;--font-body: "Noto Sans JP", sans-serif;--font-mono: "JetBrains Mono", "Noto Sans JP", monospace;--text-xs: .6875rem;--text-sm: .8125rem;--text-md: .9375rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: clamp(1.6rem, 4vw + .5rem, 2.1rem);--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-fast: .15s;--dur-med: .3s}*{box-sizing:border-box;margin:0;padding:0}html,body{overflow-x:clip}html{-webkit-text-size-adjust:100%}body{background:var(--color-paper);color:var(--color-ink-2);font-family:var(--font-body);font-size:var(--text-md);line-height:1.6}#root{min-height:100dvh;display:flex;flex-direction:column}h1,h2,h3{font-family:var(--font-display);font-style:normal;color:var(--color-ink);overflow-wrap:anywhere;min-width:0}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}input,select,textarea{font:inherit;color:var(--color-ink)}a{color:var(--color-accent);text-decoration:none}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-sm)}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:var(--space-md);padding:0 var(--space-md);height:3.25rem;background:#f8fafdd9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-rule)}.wordmark{font-family:var(--font-display);font-weight:700;font-size:1rem;color:var(--color-ink);letter-spacing:.01em;white-space:nowrap}.wordmark .tick{color:var(--color-accent)}.topbar__nav{display:none;gap:var(--space-2xs);margin-left:var(--space-lg)}.topbar__spacer{flex:1}.topbar__user{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-3);white-space:nowrap;max-width:40vw;overflow:hidden;text-overflow:ellipsis}.navlink{padding:.35rem .75rem;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;color:var(--color-ink-2);white-space:nowrap;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.navlink:hover,.navlink.is-hover{background:var(--color-paper-3)}.navlink:active,.navlink.is-active-press{transform:translateY(1px)}.navlink[aria-current=true]{color:var(--color-accent);background:var(--color-accent-soft)}.tabbar{position:fixed;inset-inline:0;bottom:0;z-index:30;display:grid;grid-auto-flow:column;justify-items:center;background:#f8fafdeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--color-rule);padding-bottom:env(safe-area-inset-bottom)}.tabbar__btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:.5rem 1rem .55rem;min-width:4.5rem;min-height:48px;color:var(--color-ink-3);font-size:var(--text-xs);white-space:nowrap}.tabbar__btn svg{width:1.35rem;height:1.35rem}.tabbar__btn[aria-current=true]{color:var(--color-accent)}.main{flex:1;width:100%;max-width:72rem;margin:0 auto;padding:var(--space-md);padding-bottom:6rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem 1rem;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;white-space:nowrap;border:1px solid var(--color-rule-2);background:var(--color-paper);color:var(--color-ink);transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.btn:hover,.btn.is-hover{background:var(--color-paper-3)}.btn:active,.btn.is-active{transform:translateY(1px)}.btn:disabled,.btn.is-disabled{opacity:.45;cursor:not-allowed;transform:none}.btn[data-state=loading]{opacity:.7;pointer-events:none}.btn[data-state=error]{border-color:var(--color-overdue);color:var(--color-overdue)}.btn[data-state=success]{border-color:var(--color-ok);color:var(--color-ok)}.btn--primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink)}.btn--primary:hover,.btn--primary.is-hover{background:#0065cc;background:oklch(52% .2 256)}.btn--danger{color:var(--color-overdue);border-color:#f3c0b9}.btn--ghost{border-color:transparent}@media(pointer:coarse){.btn{min-height:44px}}.chiprow{display:flex;gap:var(--space-xs);overflow-x:auto;padding:2px 2px var(--space-xs);scrollbar-width:none}.chiprow::-webkit-scrollbar{display:none}.chip{padding:.3rem .8rem;border-radius:999px;white-space:nowrap;border:1px solid var(--color-rule-2);background:var(--color-paper);font-size:var(--text-sm);color:var(--color-ink-2);transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.chip:hover{background:var(--color-paper-3)}.chip[aria-pressed=true]{background:var(--color-graphite);border-color:var(--color-graphite);color:var(--color-graphite-ink)}@media(pointer:coarse){.chip{min-height:38px}}.board{display:flex;gap:var(--space-sm);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding-bottom:var(--space-md);margin-inline:calc(-1 * var(--space-md));padding-inline:var(--space-md)}.col{flex:0 0 clamp(16rem,82vw,20rem);scroll-snap-align:start;background:var(--color-paper-2);border:1px solid var(--color-rule);border-radius:var(--radius-md);display:flex;flex-direction:column;max-height:calc(100dvh - 14rem);min-height:12rem}.col__head{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-sm) var(--space-xs)}.col__title{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;color:var(--color-ink-3);text-transform:uppercase}.col__dot{width:8px;height:8px;border-radius:50%}.col__count{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-3);margin-left:auto}.col__body{flex:1;overflow-y:auto;padding:var(--space-xs) var(--space-xs) var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.col.is-over{border-color:var(--color-accent);background:var(--color-accent-soft)}.card{background:var(--color-paper);border:1px solid var(--color-rule);border-left:3px solid var(--color-rule-2);border-radius:var(--radius-sm);padding:.6rem .7rem;text-align:left;width:100%;touch-action:manipulation;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.card:hover{border-color:var(--color-rule-2);box-shadow:0 1px 2px #19202912}.is-dragging{opacity:.35}.card--overdue{border-left-color:var(--color-overdue)}.card--today{border-left-color:var(--color-today)}.card--soon{border-left-color:var(--color-soon)}.card--normal{border-left-color:var(--color-ok)}.card__title{font-size:var(--text-sm);font-weight:500;color:var(--color-ink);line-height:1.45;overflow-wrap:anywhere}.card--done .card__title{color:var(--color-ink-3);text-decoration:line-through;text-decoration-color:var(--color-rule-2)}.card__meta{display:flex;flex-wrap:wrap;gap:.3rem .6rem;margin-top:.35rem;align-items:center}.badge{font-family:var(--font-mono);font-size:var(--text-xs);line-height:1;padding:.2rem .45rem;border-radius:4px;white-space:nowrap}.badge--overdue{background:var(--color-overdue-soft);color:var(--color-overdue);font-weight:600}.badge--today{background:var(--color-today-soft);color:var(--color-today);font-weight:600}.badge--soon{background:var(--color-soon-soft);color:#856300;color:oklch(52% .12 85)}.badge--normal{background:var(--color-ok-soft);color:var(--color-ok)}.badge--plain{background:var(--color-paper-3);color:var(--color-ink-3)}.badge--ai{background:var(--color-accent-soft);color:var(--color-accent)}.card__assignee{font-size:var(--text-xs);color:var(--color-ink-3);margin-left:auto;white-space:nowrap}.fab{position:fixed;right:var(--space-md);bottom:calc(4.2rem + env(safe-area-inset-bottom));z-index:25;width:3.5rem;height:3.5rem;border-radius:50%;background:var(--color-accent);color:var(--color-accent-ink);font-size:1.7rem;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #0076eb59;box-shadow:0 4px 16px oklch(58% .2 256 / .35);transition:transform var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.fab:hover{background:#0065cc;background:oklch(52% .2 256)}.fab:active{transform:scale(.94)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#161b2273;animation:fadein var(--dur-fast) var(--ease-out)}.sheet{position:fixed;z-index:41;inset-inline:0;bottom:0;max-height:88dvh;overflow-y:auto;background:var(--color-paper);border-top:1px solid var(--color-rule);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-sm) var(--space-md) calc(var(--space-lg) + env(safe-area-inset-bottom));animation:sheetup var(--dur-med) var(--ease-out)}.sheet__grab{width:2.5rem;height:4px;border-radius:2px;background:var(--color-rule-2);margin:0 auto var(--space-sm)}.sheet h2{font-size:var(--text-lg);margin-bottom:var(--space-sm)}@keyframes sheetup{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.field{margin-bottom:var(--space-md)}.field>label{display:block;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;color:var(--color-ink-3);margin-bottom:.3rem}.input,.select,textarea.input{width:100%;padding:.55rem .7rem;border:1px solid var(--color-rule-2);border-radius:var(--radius-sm);background:var(--color-paper);min-height:44px;transition:border-color var(--dur-fast) var(--ease-out)}.input:hover,.select:hover{border-color:var(--color-ink-3)}.input:focus,.select:focus,textarea.input:focus{border-color:var(--color-accent);outline:none;box-shadow:0 0 0 2px var(--color-accent-soft)}.input:disabled,.select:disabled{opacity:.5;background:var(--color-paper-2)}.input[aria-invalid=true]{border-color:var(--color-overdue)}.field__error{color:var(--color-overdue);font-size:var(--text-xs);margin-top:.25rem}.seg{display:flex;border:1px solid var(--color-rule-2);border-radius:var(--radius-sm);overflow:hidden;width:fit-content;max-width:100%}.seg>button{padding:.45rem .9rem;font-size:var(--text-sm);white-space:nowrap;color:var(--color-ink-2);border-right:1px solid var(--color-rule);min-height:40px;transition:background var(--dur-fast) var(--ease-out)}.seg>button:last-child{border-right:none}.seg>button:hover{background:var(--color-paper-3)}.seg>button[aria-pressed=true]{background:var(--color-graphite);color:var(--color-graphite-ink)}.sheet__actions{display:flex;gap:var(--space-xs);margin-top:var(--space-lg);flex-wrap:wrap}.sheet__actions .btn{flex:1;min-width:8rem}.stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xs);margin-block:var(--space-md)}.stat{border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper);padding:var(--space-sm)}.stat__label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;color:var(--color-ink-3)}.stat__value{font-family:var(--font-mono);font-size:var(--text-xl);font-weight:600;color:var(--color-ink);margin-top:.2rem;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.stat__value.is-negative{color:var(--color-overdue)}.stat__sub{font-size:var(--text-xs);color:var(--color-ink-3)}.chart-card{border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper);padding:var(--space-sm);margin-bottom:var(--space-md)}.chart-card h3{font-size:var(--text-sm);margin-bottom:var(--space-xs)}.chart-scroll{overflow-x:auto}.barchart{display:flex;align-items:flex-end;gap:6px;height:9.5rem;min-width:min-content;padding-top:1.4rem}.barchart .barcol{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:2.1rem;position:relative}.barchart .bar{width:100%;min-height:2px;border-radius:4px 4px 0 0;background:var(--color-accent);position:relative;transition:opacity var(--dur-fast) var(--ease-out)}.barchart .bar.is-negative{background:var(--color-overdue)}.barchart .barcol:hover .bar{opacity:.75}.barchart .bar__value{position:absolute;top:-1.3rem;left:50%;transform:translate(-50%);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-3);white-space:nowrap;display:none}.barchart .barcol:hover .bar__value,.barchart .barcol.is-max .bar__value{display:block}.barchart .bar__label{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-3);white-space:nowrap}.table-scroll{overflow-x:auto;border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper)}table.data{border-collapse:collapse;width:100%;font-size:var(--text-sm)}table.data th{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;letter-spacing:.05em;color:var(--color-ink-3);text-align:right;padding:.55rem .7rem;border-bottom:1px solid var(--color-rule);white-space:nowrap}table.data th:first-child,table.data td:first-child{text-align:left}table.data td{padding:.5rem .7rem;border-bottom:1px solid var(--color-rule);text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono);white-space:nowrap;color:var(--color-ink-2)}table.data tr:last-child td{border-bottom:none}table.data tbody tr{cursor:pointer;transition:background var(--dur-fast) var(--ease-out)}table.data tbody tr:hover{background:var(--color-paper-2)}td.is-negative{color:var(--color-overdue)}.raw-report{background:var(--color-graphite);color:var(--color-graphite-ink);font-family:var(--font-mono);font-size:var(--text-sm);border-radius:var(--radius-md);padding:var(--space-md);white-space:pre-wrap;overflow-wrap:anywhere}.panel{border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper);padding:var(--space-md);margin-bottom:var(--space-md)}.panel h2{font-size:var(--text-lg);margin-bottom:var(--space-sm)}.row-item{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) 0;border-bottom:1px solid var(--color-rule);flex-wrap:wrap}.row-item:last-child{border-bottom:none}.login{min-height:100dvh;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:var(--space-xl);max-width:26rem;margin:0 auto}.login h1{font-size:var(--text-2xl);letter-spacing:-.01em;margin-bottom:var(--space-md)}.login ol{padding-left:1.2rem;display:grid;gap:var(--space-xs);color:var(--color-ink-2)}.login .eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;color:var(--color-accent);margin-bottom:var(--space-sm)}.empty{text-align:center;color:var(--color-ink-3);padding:var(--space-xl) var(--space-md);font-size:var(--text-sm)}.section-head{display:flex;align-items:center;gap:var(--space-sm);margin-block:var(--space-sm);flex-wrap:wrap}.section-head h2{font-size:var(--text-lg)}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(5rem + env(safe-area-inset-bottom));z-index:60;background:var(--color-graphite);color:var(--color-graphite-ink);padding:.6rem 1.1rem;border-radius:var(--radius-sm);font-size:var(--text-sm);box-shadow:0 4px 16px #161b224d;animation:fadein var(--dur-fast) var(--ease-out);max-width:min(92vw,30rem)}.spin{display:inline-block;width:1em;height:1em;border:2px solid var(--color-rule-2);border-top-color:var(--color-accent);border-radius:50%;animation:rot .8s linear infinite}@keyframes rot{to{transform:rotate(360deg)}}@media(min-width:40rem){.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:60rem){.topbar__nav{display:flex}.tabbar{display:none}.main{padding:var(--space-lg);padding-bottom:var(--space-2xl)}.board{margin-inline:0;padding-inline:0}.col{flex:1 1 0;max-height:calc(100dvh - 13rem)}.fab,.toast{bottom:var(--space-xl)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
