:root{--color-bg:#fafafa;--color-surface:#fff;--color-line:#e5e5e5;--color-text:#000;--color-text-muted:#666;--color-primary:#000;--color-primary-light:#333;--color-primary-dark:#000;--color-primary-bg:#f5f5f5;--color-accent:#000;--color-accent-weak:#f5f5f5;--color-success:#22c55e;--color-success-bg:#dcfce7;--color-warning:#f59e0b;--color-warning-bg:#fef3c7;--color-danger:#ef4444;--color-danger-bg:#fee2e2;--color-info:#3b82f6;--color-info-bg:#dbeafe;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--shadow-sm:0 1px 1px rgba(0,0,0,.03);--shadow-md:0 1px 2px rgba(0,0,0,.05);--shadow-lg:0 2px 4px rgba(0,0,0,.06);--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--font-sans:var(--font-inter),var(--font-noto-sans-jp),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";--font-size-xs:12px;--font-size-sm:14px;--font-size-md:16px;--font-size-lg:18px;--font-size-xl:20px;--font-size-2xl:24px;--line-height:1.6;--line-height-tight:1.4;--focus-ring:0 0 0 2px rgba(0,0,0,.1)}@media (prefers-color-scheme:dark){:root{--color-bg:#0a0a0a;--color-surface:#171717;--color-line:#262626;--color-text:#fafafa;--color-text-muted:#a3a3a3;--color-primary:#fff;--color-primary-light:#e5e5e5;--color-primary-dark:#fff;--color-primary-bg:#262626;--color-accent:#fff;--color-accent-weak:#262626;--shadow-sm:0 1px 1px rgba(0,0,0,.5);--shadow-md:0 1px 2px rgba(0,0,0,.6);--shadow-lg:0 2px 4px rgba(0,0,0,.7);--focus-ring:0 0 0 2px hsla(0,0%,100%,.2)}}body,html{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-size-md);line-height:var(--line-height);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.container{max-width:1024px;margin:0 auto;padding:var(--space-md)}.ui-card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-lg);transition:all .15s ease}.ui-card:hover{box-shadow:var(--shadow-md)}.ui-card h3{margin:0 0 var(--space-md);font-size:var(--font-size-lg);font-weight:600;line-height:var(--line-height-tight)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);height:40px;padding:0 var(--space-md);border-radius:var(--radius-md);border:1px solid transparent;font-weight:500;cursor:pointer;transition:all .15s ease;box-sizing:border-box;font-size:var(--font-size-md)}.ui-btn--sm{height:32px;padding:0 12px}.ui-btn--equal{min-width:120px;font-size:var(--font-size-sm)}.ui-btn:focus{outline:none;box-shadow:var(--focus-ring)}.ui-btn--primary{background:var(--color-primary);color:var(--color-surface);border-color:var(--color-primary)}.ui-btn--primary:hover{background:var(--color-primary-light);border-color:var(--color-primary-light);opacity:.9}.ui-btn--primary:active{opacity:.8}.ui-btn--secondary{background:var(--color-primary-bg);color:var(--color-text);border-color:var(--color-line)}.ui-btn--secondary:hover{background:var(--color-line);border-color:var(--color-text-muted)}.ui-btn--outline{background:transparent;color:var(--color-text);border-color:var(--color-line)}.ui-btn--outline:hover{background:var(--color-bg);border-color:var(--color-text-muted)}.ui-btn--text{background:transparent;color:var(--color-text);padding:0;height:auto}.ui-btn--text:hover{opacity:.7}.ui-field{display:grid;grid-gap:var(--space-sm);gap:var(--space-sm)}.ui-input,.ui-select,.ui-textarea{width:100%;max-width:100%;box-sizing:border-box;padding:8px 12px;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);transition:all .15s ease;font-family:inherit;color:var(--color-text);font-size:var(--font-size-md);line-height:var(--line-height)}.ui-input:hover,.ui-select:hover,.ui-textarea:hover{border-color:var(--color-text-muted)}.ui-input:focus,.ui-select:focus,.ui-textarea:focus{outline:none;border-color:var(--color-text);box-shadow:var(--focus-ring);background:var(--color-surface)}.ui-select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23000000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5L6 7.5L9 4.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}@media (prefers-color-scheme:dark){.ui-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23FFFFFF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5L6 7.5L9 4.5'/%3E%3C/svg%3E")}}.ui-hint{color:var(--color-text-muted)}.ui-error,.ui-hint{font-size:var(--font-size-sm)}.ui-error{color:var(--color-danger)}.ui-tabs{display:flex;gap:var(--space-md);border-bottom:1px solid var(--color-line)}.ui-tab{padding:var(--space-sm) var(--space-xs);color:var(--color-text-muted);border-bottom:1px solid transparent;cursor:pointer;transition:all .15s ease;font-size:var(--font-size-md)}.ui-tab[aria-selected=true]{color:var(--color-text);border-color:var(--color-text);font-weight:600}.ui-tab:hover{color:var(--color-text)}.ui-toast{position:fixed;right:var(--space-md);top:var(--space-md);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-md);font-size:var(--font-size-md)}.board-wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:var(--space-md);gap:var(--space-md);align-items:start;padding:var(--space-md) 0 var(--space-md);width:100%}.board-col{display:flex;flex-direction:column;gap:var(--space-sm);min-width:0}.board-column-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm)}.board-column-title{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}.board-column-count,.board-column-title{font-size:var(--font-size-sm);font-weight:600}.board-column-count{color:var(--color-text)}.board-card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-sm) var(--space-md);width:100%;box-sizing:border-box;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;display:flex;flex-direction:column;gap:var(--space-sm)}.board-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-text-muted)}.board-card__title-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.board-card__title{font-size:var(--font-size-md);font-weight:600;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-card__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.board-card__tags{display:flex;flex-wrap:wrap;gap:6px}.board-tag{font-size:11px;font-weight:600;letter-spacing:.04em;border-radius:999px;padding:2px 8px;text-transform:uppercase;background:var(--color-bg);color:var(--color-text-muted)}.board-tag--neutral{background:var(--color-primary-bg);color:var(--color-text-muted)}.board-tag--warning{background:rgba(245,158,11,.16);color:#b45309}.board-tag--danger{background:rgba(239,68,68,.16);color:#b91c1c}.board-avatar--placeholder,.board-card__assignee{display:flex;align-items:center}.board-avatar--placeholder{width:28px;height:28px;border-radius:50%;background:var(--color-line);justify-content:center;color:var(--color-text-muted);font-weight:600;font-size:12px}.gantt-wrap{overflow:auto}.gantt-head{display:grid;grid-template-columns:repeat(21,64px);grid-gap:2px;gap:2px;position:-webkit-sticky;position:sticky;top:0;background:var(--color-surface);z-index:1}.gantt-cell{text-align:center;font-size:var(--font-size-sm);color:var(--color-text-muted);padding:var(--space-xs) 0;border-bottom:1px solid var(--color-line)}.gantt-body{grid-gap:var(--space-sm)}.gantt-body,.gantt-row{display:grid;gap:var(--space-sm)}.gantt-row{grid-template-columns:240px 1fr;align-items:center;grid-gap:var(--space-sm)}.gantt-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-line{display:grid;grid-template-columns:repeat(21,64px);grid-gap:2px;gap:2px;align-items:center}.gantt-bar{height:8px;border-radius:var(--radius-md);background:var(--color-text)}.gantt-bar--overdue{background:var(--color-text-muted)}:where(a,button,input,select,textarea,[role=tab],[role=button]){outline:none}:where(a,button,input,select,textarea,[role=tab],[role=button]):focus-visible{box-shadow:var(--focus-ring);border-color:var(--color-text)}.app-shell{display:flex;min-height:100dvh}.sidebar{width:240px;flex:0 0 240px;background:var(--color-surface);display:flex;flex-direction:column;border-right:1px solid var(--color-line)}.sidebar,.sidebar a{color:var(--color-text)}.sidebar a{text-decoration:none;padding:var(--space-sm) var(--space-sm);border-radius:var(--radius-md);display:block;transition:all .15s ease;font-weight:500}.sidebar a:hover{background:var(--color-bg);color:var(--color-text)}.sidebar a:active,.sidebar a[aria-current=page]{background:var(--color-text);color:var(--color-surface);font-weight:600}.sidebar .sidebar-section{padding:var(--space-md);border-bottom:1px solid var(--color-line)}.sidebar .sidebar-nav{padding:var(--space-md);display:grid;grid-gap:var(--space-xs);gap:var(--space-xs)}.main{flex:1 1;background:var(--color-bg);min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);border-bottom:1px solid var(--color-line);background:var(--color-surface);position:-webkit-sticky;position:sticky;top:0;z-index:5}.topbar .brand{font-weight:600}.topbar .profile{display:flex;align-items:center;gap:8px}.topbar .avatar{width:28px;height:28px;border-radius:50%;background:var(--color-line)}.content{max-width:1200px;margin:0 auto;padding:var(--space-lg);background:var(--color-bg);min-height:calc(100vh - 80px)}.header-tabs{margin-top:8px}