:root{--bg:#f7f8fa;--panel:#ffffff;--panel-soft:#fafafa;--panel-hover:#f4f4f5;--ink:#09090b;--muted:#71717a;--line:#e4e4e7;--line-strong:#d4d4d8;--accent:#5e6ad2;--accent-strong:#4f46c8;--accent-soft:#f1f2ff;--button:#050505;--button-hover:#242424;--warn:#a15c07;--warn-soft:#fff7ed;--danger:#b42318;--ok:#16803c;--ok-soft:#eefbf3;--focus:#5e6ad2}*{box-sizing:border-box}body,html{min-height:100%;margin:0;background:linear-gradient(180deg,#fbfbfc 0,var(--bg) 220px);color:var(--ink);font-family:Noto Sans JP,Yu Gothic,Meiryo,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}a,button,input,textarea{outline-color:var(--focus)}a{color:var(--accent-strong);text-decoration:none}a:hover{text-decoration:underline}.appShell{width:min(1480px,100%);margin:0 auto;padding:22px}.topBar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px;padding-bottom:18px;border-bottom:1px solid var(--line)}.titleBlock{min-width:0}.eyebrow{display:inline-flex;align-items:center;color:var(--muted);font-size:11px;font-weight:760;letter-spacing:0;text-transform:uppercase}.titleBlock h1{margin:5px 0 6px;font-size:28px;font-weight:760;line-height:1.25}.titleBlock p{margin:0;color:var(--muted);font-size:14px}.statusPills{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.pill{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.78);color:var(--muted);font-size:12px;font-weight:720;white-space:nowrap}.pill.ok{border-color:#b9e8c8;background:var(--ok-soft);color:var(--ok)}.pill.warn{border-color:#fed7aa;background:var(--warn-soft);color:var(--warn)}.pill.pending{border-color:var(--line);background:var(--panel-soft);color:var(--muted)}.grid{grid-template-columns:minmax(360px,430px) minmax(0,1fr);grid-gap:16px}.grid,.workspaceGrid{display:grid;gap:16px;align-items:start}.workspaceGrid{grid-template-columns:1fr;grid-gap:16px}.conditionPanel,.resultPanel,.sourcePanel{min-width:0}.panel{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 1px 2px rgba(9,9,11,.03)}.panelHeader{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);background:#fff}.panelHeader h2{margin:0;font-size:15px;font-weight:760;line-height:1.3}.panelHeader svg{color:var(--muted)}.panelBody{padding:16px}.sourcePanel .panelBody{display:grid;grid-template-columns:minmax(420px,1.45fr) minmax(280px,.85fr);grid-gap:16px;gap:16px;align-items:start}.sourceOptionList,.sourceUrlField{margin-bottom:0}.sourcePanel .spreadsheetInput{min-height:96px}.conditionPanel .panelBody{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:16px;gap:16px;align-items:start}.conditionPanel .alert,.conditionPanel .field{margin-bottom:0}.periodField{grid-column:span 5}.lengthField{grid-column:span 4}.maxGroupsField{grid-column:span 3}.filterField,.instructionField{grid-column:span 6}.conditionPanel .numberInput{width:100%;max-width:180px}.conditionPanel .instructionInput{min-height:88px}.field{display:grid;grid-gap:8px;gap:8px;margin-bottom:16px}.field label{color:var(--ink);font-size:13px;font-weight:800}.fieldHint{margin:0;color:var(--muted);font-size:12px;line-height:1.55}.instructionInput,.numberInput,.spreadsheetInput{border:1px solid var(--line-strong);border-radius:8px;color:var(--ink);background:#fff;box-shadow:inset 0 1px 0 rgba(9,9,11,.02)}.instructionInput:focus,.numberInput:focus,.spreadsheetInput:focus{border-color:var(--focus);box-shadow:0 0 0 3px rgba(94,106,210,.14)}.spreadsheetInput{width:100%;min-height:116px;resize:vertical;padding:11px 12px;line-height:1.65}.numberInput{width:132px;min-height:38px;padding:8px 10px}.instructionInput{width:100%;min-height:76px;resize:vertical;padding:10px 12px;line-height:1.55}.segmentedControl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:4px;gap:4px;border:1px solid var(--line);border-radius:8px;padding:4px;background:var(--panel-soft)}.segmentOption{display:grid;grid-gap:3px;gap:3px;min-width:0;min-height:54px;border:1px solid transparent;border-radius:7px;padding:8px 6px;background:transparent;color:var(--muted);cursor:pointer;text-align:center;transition:background .14s ease,border-color .14s ease,color .14s ease,box-shadow .14s ease}.segmentOption:hover{background:#fff;color:var(--ink)}.segmentOption.active{border-color:#d8dcff;background:#fff;color:var(--accent-strong);box-shadow:0 1px 2px rgba(9,9,11,.05)}.segmentOption strong{font-size:13px;line-height:1.2}.segmentOption span{font-size:11px;font-weight:750;line-height:1.25}.dateRange{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-gap:10px;gap:10px;align-items:stretch}.datePickerField{position:relative;display:grid;grid-gap:7px;gap:7px;min-width:0}.datePickerLabel{color:var(--muted);font-size:11px;font-weight:850;text-transform:uppercase}.dateTrigger{display:flex;align-items:center;gap:10px;min-height:62px;width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 11px;background:#fff;color:var(--ink);cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 1px 2px rgba(9,9,11,.04);text-align:left;transition:border-color .14s ease,box-shadow .14s ease,background .14s ease}.dateTrigger.open,.dateTrigger:hover{border-color:#c6caff;background:#fff;box-shadow:0 0 0 3px rgba(94,106,210,.1),0 8px 18px rgba(9,9,11,.07)}.dateTriggerIcon{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:30px;height:30px;border-radius:8px;background:var(--accent-soft);color:var(--accent)}.dateTriggerText{display:grid;grid-gap:2px;gap:2px;min-width:0}.dateTriggerText strong{color:var(--ink);font-size:14px;line-height:1.2}.dateTriggerText span{color:var(--muted);font-size:11px;font-weight:750}.dateTrigger.hasValue .dateTriggerText strong{color:var(--accent-strong)}.dateDivider{display:inline-flex;align-items:center;justify-content:center;color:var(--muted);font-size:14px;font-weight:900}.calendarPopover{position:absolute;z-index:30;top:calc(100% + 8px);left:0;width:306px;border:1px solid var(--line);border-radius:10px;padding:12px;background:rgba(255,255,255,.98);box-shadow:0 18px 50px rgba(9,9,11,.14),0 2px 8px rgba(9,9,11,.06)}.alignEnd .calendarPopover{right:0;left:auto}.calendarHeader{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.calendarHeader strong{font-size:14px;line-height:1.2}.calendarIconButton{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);cursor:pointer}.calendarIconButton:hover{border-color:#aeb8ff;background:var(--accent-soft)}.calendarGrid,.weekdayGrid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px}.weekdayGrid{margin-bottom:5px}.weekdayGrid span{color:var(--muted);font-size:11px;font-weight:850;text-align:center}.calendarDay{display:inline-flex;align-items:center;justify-content:center;height:34px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--ink);cursor:pointer;font-size:13px;font-weight:750}.calendarDay:hover{background:var(--accent-soft);color:var(--accent-strong)}.calendarDay.outside{color:#b7bfcd}.calendarDay.today{border-color:#bfcbff}.calendarDay.selected{border-color:var(--accent);background:var(--accent);color:#fff;box-shadow:0 6px 14px rgba(94,106,210,.24)}.calendarFooter{display:flex;justify-content:space-between;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.calendarFooter button{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:30px;border:1px solid var(--line);border-radius:8px;padding:5px 9px;background:#fff;color:var(--ink);cursor:pointer;font-size:12px;font-weight:800}.calendarFooter button:hover{background:var(--panel-hover)}.checkboxList{display:grid;grid-gap:9px;gap:9px;margin:0 0 16px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-soft)}.checkRow{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:13px;font-weight:650}.checkRow input{width:16px;height:16px;accent-color:var(--accent)}.actions{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px}.runDock{margin:-16px -16px 16px;padding:14px 16px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fff,#fbfbfc);color:var(--ink)}.runDockHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.runDockHeader strong{display:block;margin-top:3px;font-size:16px;line-height:1.25}.runDockHeader>span{display:inline-flex;align-items:center;min-height:28px;border:1px solid var(--line);border-radius:999px;padding:4px 9px;background:#fff;color:var(--muted);font-size:12px;font-weight:850;white-space:nowrap}.runDock .eyebrow{color:var(--muted)}.runDock .actions{grid-template-columns:minmax(170px,.9fr) minmax(170px,.9fr) minmax(240px,1.25fr);gap:8px}.runDock .btn.accent{grid-column:auto}.runDock .btn.secondary{border-color:var(--line-strong);background:#fff;color:var(--ink)}.runDock .btn.secondary:hover{background:var(--panel-hover)}.buttonRow{display:flex;flex-wrap:wrap;gap:10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;border:1px solid transparent;border-radius:8px;padding:9px 13px;background:var(--button);color:#fff;cursor:pointer;font-weight:760;line-height:1.2;transition:background .14s ease,border-color .14s ease,transform .14s ease}.btn:hover{background:var(--button-hover);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{cursor:not-allowed;opacity:.55;transform:none}.btn.secondary{border-color:var(--line-strong);background:#fff;color:var(--ink)}.btn.secondary:hover{background:var(--panel-hover)}.btn.accent{background:var(--button)}.btn.accent:hover{background:var(--button-hover)}.progressCard{margin-top:14px;border:1px solid var(--line);border-radius:8px;padding:14px;background:#fff;color:var(--ink)}.progressCard.complete{border-color:#b9e8c8;background:var(--ok-soft)}.progressCard.error{border-color:#fda29b;background:#fff7f7}.progressTop{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.progressTop strong{display:block;margin-top:3px;font-size:17px}.progressCard .eyebrow{color:var(--muted)}.progressPercent{color:var(--ink);font-size:22px;font-weight:850;line-height:1}.progressBar{overflow:hidden;height:8px;margin:14px 0 12px;border-radius:999px;background:#eceef3}.progressBar span{display:block;width:0;height:100%;border-radius:inherit;background:var(--accent);transition:width .26s ease}.progressCard.complete .progressBar span{background:#4ade80}.progressCard.error .progressBar span{background:#f97066}.progressMetaGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px}.progressMetaGrid span{display:inline-flex;align-items:center;gap:5px;min-width:0;color:var(--muted);font-size:12px;white-space:nowrap}.progressCard p{margin:12px 0 0;color:var(--muted);font-size:13px;line-height:1.55}.resultLink{display:inline-flex;align-items:center;gap:7px;margin-top:12px;color:var(--ink);font-size:13px;font-weight:800}.alert{display:flex;align-items:flex-start;gap:8px;margin-top:14px;border:1px solid #fed7aa;border-radius:8px;padding:10px 12px;background:var(--warn-soft);color:#7c2d12;font-size:13px;line-height:1.5}.inlineAlert{margin:-4px 0 14px}.success{border-color:#b9e8c8;background:var(--ok-soft);color:#14532d}.summaryGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:10px;gap:10px;margin-bottom:14px}.metric{display:grid;grid-gap:5px;gap:5px;min-height:92px;border:1px solid var(--line);border-radius:8px;padding:12px;background:var(--panel-soft)}.metric svg{color:var(--accent)}.metric span{display:block;color:var(--muted);font-size:12px;font-weight:750}.metric strong{display:block;font-size:24px;line-height:1.1}.metric small{color:var(--muted);font-size:11px;font-weight:750}.tableWrap{overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff}.tableWrap.compact{max-height:420px}table{width:100%;min-width:920px;border-collapse:collapse;background:#fff}td,th{border-bottom:1px solid var(--line);padding:9px 10px;text-align:left;vertical-align:top;font-size:13px}th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:#f1f3f6;color:#344054;font-weight:850}tr:last-child td{border-bottom:0}tbody tr:hover td{background:#fafcff}.muted{color:var(--muted)}.logList{display:grid;grid-gap:8px;gap:8px;margin:0;padding:0;list-style:none}.logItem{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--panel-soft);font-size:13px}.logItem strong{display:block;margin-bottom:4px}.sectionTitle{margin:18px 0 10px;font-size:15px}.userPill{max-width:220px;overflow:hidden;text-overflow:ellipsis}.authShell{display:grid;min-height:100vh;place-items:center;padding:20px;background:linear-gradient(180deg,#fbfbfc 0,var(--bg) 100%)}.authPanel{display:grid;grid-gap:14px;gap:14px;width:min(420px,100%);border:1px solid var(--line);border-radius:8px;padding:24px;background:#fff;box-shadow:0 12px 40px rgba(9,9,11,.08)}.authMark{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:8px;background:var(--accent-soft);color:var(--accent)}.authTitle h1{margin:5px 0 0;font-size:26px;line-height:1.2}.authInput{width:100%;max-width:none}.authButton{width:100%}.authAlert{margin-top:0}.adminGrid{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);grid-gap:16px;gap:16px;align-items:start;margin-top:16px}.userForm{display:grid;grid-gap:12px;gap:12px}.userForm .field{margin-bottom:0}.userTable table{min-width:980px}.tableInput{width:100%;max-width:none;min-width:150px}.compactCheck{min-height:38px}.tableActions{display:flex;flex-wrap:wrap;gap:6px}.tableActions .btn{min-height:34px;padding:7px 9px;font-size:12px}.dangerButton{border-color:#fda29b!important;color:var(--danger)!important}.dangerButton:hover{background:#fff7f7!important}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:1120px){.adminGrid,.grid,.sourcePanel .panelBody,.workspaceGrid{grid-template-columns:1fr}.conditionPanel .panelBody{grid-template-columns:repeat(2,minmax(0,1fr))}.filterField,.instructionField,.lengthField,.maxGroupsField,.periodField{grid-column:span 1}.runDock .actions{grid-template-columns:repeat(2,minmax(0,1fr))}.runDock .btn.accent{grid-column:1/-1}}@media (max-width:760px){.appShell{padding:14px}.topBar{flex-direction:column}.statusPills{justify-content:flex-start}.conditionPanel .panelBody,.dateRange,.progressMetaGrid,.runDock .actions,.segmentedControl,.summaryGrid{grid-template-columns:1fr}.dateDivider{justify-content:flex-start;padding-left:10px}}