:root{--bg:#f4f5f7;--panel:#ffffff;--line:#e6e8eb;--ink:#17171b;--muted:#75758a;--muted2:#9e9ea3;--brand:#1f522f;--brand-soft:#e7f0ea;--brand-tint:#f4f8f5;--ok:#1a8a45;--ok-soft:#e6f6ec;--danger:#d23b2b;--danger-soft:#fdeceb;--warn:#b7791f;--warn-soft:#fff6e6;--idle-soft:#eceef1}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}.adm-top{justify-content:space-between;height:60px;padding:0 20px;background:var(--panel);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:20}.adm-top,.adm-top-left{display:flex;align-items:center;gap:16px}.adm-top-left{min-width:0}.adm-logo{display:inline-flex;align-items:center;flex-shrink:0}.adm-logo svg{height:20px;width:auto;display:block}.adm-nav{display:flex;gap:4px}.adm-nav a{padding:6px 12px;border-radius:8px;font-size:13px;font-weight:600;color:var(--muted);text-decoration:none}.adm-nav a:hover{background:var(--bg);color:var(--ink)}.adm-nav a[aria-current=page]{background:var(--brand-soft);color:var(--brand)}.adm-tz{font-size:12px;color:var(--muted2);white-space:nowrap}main{max-width:1320px;margin:0 auto;padding:32px 24px 80px}@media (max-width:640px){main{padding:20px 16px 56px}}h1{font-size:20px;font-weight:700;margin:0 0 4px;letter-spacing:-.01em}.page-back{display:inline-block;margin-bottom:10px;font-size:12.5px;color:var(--muted);text-decoration:none}.page-back:hover{color:var(--brand)}.page-head{margin-bottom:20px}.page-head h1{margin-bottom:6px}.page-head .muted{margin:0;font-size:13px}h2{font-size:15px;font-weight:700;margin:32px 0 12px}a{color:var(--brand)}.muted{color:var(--muted)}.hint{color:var(--muted2);font-size:12px;margin-top:6px}.mono{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12.5px}.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.card{padding:16px}.card,.table-wrap{background:var(--panel);border:1px solid var(--line);border-radius:12px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}td,th{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line)}th{background:#fafbfc;font-weight:600;color:var(--muted);font-size:12px}tbody tr:last-child td{border-bottom:none}tbody tr.clickable:hover{background:var(--brand-tint)}td.rowlink{position:relative}td.rowlink a:after{content:"";position:absolute;inset:0}tr.group td{background:#fafbfc;font-weight:700;font-size:12.5px;color:var(--ink)}tr.group td .count{font-weight:500;color:var(--muted2);margin-left:6px}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.badge-PENDING{background:var(--idle-soft);color:var(--muted)}.badge-RUNNING{background:var(--warn-soft);color:var(--warn)}.badge-SUCCESS{background:var(--ok-soft);color:var(--ok)}.badge-FAILED{background:var(--danger-soft);color:var(--danger)}.badge-CANCELLED{background:var(--idle-soft);color:var(--muted2)}.pill{font-size:11px;color:var(--brand);background:var(--brand-soft);border-radius:999px;padding:2px 8px}.pill,label{font-weight:600}label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:6px}input,select,textarea{font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 12px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ink)}input:disabled,select:disabled{color:var(--muted2);background:#fafbfc}button{font:inherit;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:8px 14px;cursor:pointer;transition:.12s}button:hover:not(:disabled){border-color:#c8cdd0}button.primary{background:var(--brand);border-color:var(--brand);color:#fff}button.primary:hover:not(:disabled){opacity:.9;border-color:var(--brand)}button.danger{color:var(--danger);border-color:#f1c6c1}button.sm{padding:6px 10px;font-size:12px;border-radius:6px}button:disabled{opacity:.45;cursor:default}button.linklike{border:none;background:none;padding:0;color:var(--brand);font-size:12px;font-weight:600;text-decoration:underline}.field{margin-bottom:16px}.filters{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin:16px 0}.filters label{margin-bottom:4px}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}.segmented a{padding:8px 14px;font-size:13px;font-weight:600;color:var(--muted);text-decoration:none;border-right:1px solid var(--line)}.segmented a:last-child{border-right:none}.segmented a:hover{background:var(--bg)}.segmented a[aria-current=true]{background:var(--brand);color:#fff}dl.detail{display:grid;grid-template-columns:132px minmax(0,1fr);grid-gap:10px 16px;gap:10px 16px;margin:0}dl.detail dt{color:var(--muted);font-size:12.5px;font-weight:600}dl.detail dd{margin:0}.notice{border:1px solid #f0e2c4;border-left:3px solid var(--warn);background:var(--warn-soft);color:#7c5a17;font-size:13px;margin-bottom:16px}.error,.notice{padding:10px 12px;border-radius:8px}.error{color:var(--danger);background:var(--danger-soft);margin:12px 0;list-style-position:inside}.empty{border:1px dashed var(--line);border-radius:12px;padding:28px 16px;color:var(--muted);font-size:13px;text-align:center;background:#fbfbfc}pre{margin:0;padding:8px 10px;background:#fafbfc;overflow-x:auto;max-width:420px;white-space:pre-wrap;word-break:break-all;font-size:12px;color:var(--muted)}.picker-list,pre{border:1px solid var(--line);border-radius:8px}.picker-list{margin-top:8px;max-height:280px;overflow-y:auto;background:#fff}.picker-item{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;border:none;border-bottom:1px solid var(--line);border-radius:0;background:none;padding:10px 12px;font-weight:400}.picker-item:last-child{border-bottom:none}.picker-item:focus-visible,.picker-item:hover{background:var(--brand-tint);border-color:var(--line)}.picker-name{font-weight:600}.picker-empty{padding:14px 12px;color:var(--muted2);font-size:12.5px}.picked{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;border:1px solid var(--brand);border-radius:8px;padding:12px;background:var(--brand-tint)}.stock-out{color:var(--danger);font-weight:600}table a{text-decoration:none}tbody tr.clickable:hover td .mono,tbody tr.clickable:hover td.rowlink a{color:var(--brand)}a.pill{text-decoration:none}.pager{margin-top:16px;display:flex;justify-content:flex-end}.pager a{font-size:13px;font-weight:600;text-decoration:none;border:1px solid var(--line);border-radius:8px;padding:8px 14px;background:#fff}.pager a:hover{border-color:#c8cdd0}.adm-nav a{white-space:nowrap}@media (max-width:640px){.adm-top{height:auto;min-height:52px;padding:8px 14px;gap:10px}.adm-logo svg{height:16px}.adm-nav a{padding:5px 9px;font-size:12px}.adm-tz{display:none}main{padding:16px 14px 56px}h1{font-size:18px}.row.spread{align-items:flex-start}.segmented a{padding:7px 12px;font-size:12px}dl.detail{grid-template-columns:96px minmax(0,1fr);gap:8px 12px}pre{max-width:220px}}.adm-top-right{display:flex;align-items:center;gap:10px}.adm-user{font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap}.login-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;min-height:calc(100vh - 96px);justify-content:center}.login-card{width:100%;max-width:380px;padding:28px}@media (max-width:640px){.adm-top-right{gap:8px}.adm-user{font-size:12px}}.login-head{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:28px}.login-logo{display:inline-flex;color:var(--brand)}.login-logo svg{height:26px;width:auto;display:block}.login-title{font-size:12px;letter-spacing:.06em;color:var(--muted);padding:3px 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand)}.login-title,.stock-target,.stock-zero{font-weight:600}.stock-zero{color:var(--danger)}.alert-failed{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:16px;padding:12px 14px;border:1px solid #f1c6c1;border-left:3px solid var(--danger);border-radius:8px;background:var(--danger-soft);color:#8a2b1f;font-size:13px}.alert-failed a{color:var(--danger);font-weight:600;white-space:nowrap}tbody tr.past td{color:var(--muted)}tbody tr.past td .mono{color:var(--muted2)}.picked-list{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.picked-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line)}.picked-row:last-child{border-bottom:none}.picked-info{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:2px}.picked-info strong{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picked-info .hint{margin-top:0}.picked-input{display:flex;align-items:center;gap:6px;flex-shrink:0}.picked-input input{width:86px;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.picked-input .hint{margin-top:0}.picker-item:disabled{opacity:1;cursor:default;background:var(--brand-tint)}.picker-added{margin-left:6px;font-weight:600;color:var(--brand)}@media (max-width:640px){.picked-row{flex-wrap:wrap}.picked-info{flex-basis:100%}}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}.calendar-head{background:#fafbfc;padding:8px 10px;font-size:12px;font-weight:600;color:var(--muted);text-align:center}.calendar-cell.sun .calendar-date,.calendar-head.sun{color:var(--danger)}.calendar-cell.sat .calendar-date,.calendar-head.sat{color:var(--accent,#2563eb)}.calendar-cell{position:relative;background:var(--panel);min-height:104px;padding:6px;display:flex;flex-direction:column;gap:3px}.calendar-cell.outside{background:#fbfbfc}.calendar-cell.outside .calendar-date{color:var(--muted2)}.calendar-cell.today .calendar-date{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:var(--brand);color:#fff}.calendar-date{font-size:12px;font-weight:700;margin-bottom:2px}.calendar-date,.calendar-job{position:relative;z-index:1;color:var(--ink)}.calendar-job{display:flex;align-items:baseline;gap:5px;padding:3px 6px;border-radius:6px;font-size:11.5px;text-decoration:none;background:var(--idle-soft);border-left:3px solid var(--muted2)}.calendar-job:hover{filter:brightness(.97)}.calendar-job.status-PENDING{border-left-color:var(--muted)}.calendar-job.status-RUNNING{background:var(--warn-soft);border-left-color:var(--warn)}.calendar-job.status-SUCCESS{background:var(--ok-soft);border-left-color:var(--ok)}.calendar-job.status-FAILED{background:var(--danger-soft);border-left-color:var(--danger)}.calendar-job.status-CANCELLED{color:var(--muted2);text-decoration:line-through}.calendar-time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--muted);flex-shrink:0}.calendar-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-stock{font-weight:700;flex-shrink:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (max-width:640px){.calendar-cell{min-height:74px;padding:4px}.calendar-name{display:none}.calendar-time{font-size:10px}.adm-user{display:none}.adm-nav{gap:2px}.adm-nav a{padding:5px 7px}.calendar-time{display:none}.calendar-job{justify-content:center;padding:3px 4px}.calendar-stock{font-size:11px}}.weekday-picker{display:flex;gap:6px;flex-wrap:wrap}.weekday{width:38px;padding:7px 0;text-align:center;border-radius:8px;font-size:13px;font-weight:600;color:var(--muted)}.weekday.on{background:var(--brand);border-color:var(--brand);color:#fff}.weekday-picker .weekday:first-child:not(.on){color:var(--danger)}.weekday-picker .weekday:last-child:not(.on){color:#2563eb}.form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,380px);grid-gap:20px;gap:20px;align-items:start}.form-side{position:-webkit-sticky;position:sticky;top:76px;max-height:calc(100vh - 110px);overflow-y:auto}.datetime{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.datetime-field{display:flex;flex-direction:column;gap:4px}.datetime-label{font-size:11.5px;font-weight:600;color:var(--muted2)}.datetime-field input[type=date]{min-width:158px}.datetime-field select{min-width:72px}.datetime-zone{font-size:12px;color:var(--muted2);padding-bottom:10px}@media (max-width:900px){.form-grid{grid-template-columns:minmax(0,1fr)}.form-side{position:static;max-height:none}}.conflict{margin-top:16px;padding:14px 16px;border:1px solid #ecd9ae;border-left:3px solid var(--warn);border-radius:10px;background:var(--warn-soft)}.conflict-head{display:block;margin-bottom:10px;color:#8a5a10;font-size:14px}.conflict-list{margin:0 0 10px;padding-left:18px;font-size:13px;line-height:1.7}.conflict-list a{color:var(--ink);font-weight:600}.conflict .hint{margin:0 0 12px;color:#8a5a10}.calendar-job.projected{background:transparent;border-left:1px dashed var(--brand);border:1px dashed var(--brand);border-left-width:3px;color:var(--brand)}.calendar-job.projected .calendar-time{color:var(--brand);opacity:.75}.calendar-job.projected:hover{background:var(--brand-tint);filter:none}.calendar-legend{display:flex;align-items:center;flex-wrap:wrap;gap:6px 16px;margin-top:14px;font-size:12px;color:var(--muted)}.legend-item{display:inline-flex;align-items:center;gap:6px}.legend-swatch{display:inline-block;width:22px;height:12px;border-radius:4px;background:var(--idle-soft);border-left:3px solid var(--muted2);flex-shrink:0}.legend-swatch.status-PENDING{border-left-color:var(--muted)}.legend-swatch.status-SUCCESS{background:var(--ok-soft);border-left-color:var(--ok)}.legend-swatch.status-FAILED{background:var(--danger-soft);border-left-color:var(--danger)}.legend-swatch.status-CANCELLED{background:var(--idle-soft);border-left-color:var(--muted2)}.legend-swatch.projected{background:transparent;border-left:1px dashed var(--brand);border:1px dashed var(--brand);border-left-width:3px}.calendar-layout{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:16px;gap:16px;align-items:start}@media (min-width:1280px){.calendar-layout{grid-template-columns:minmax(0,1fr) 300px}.day-panel{position:-webkit-sticky;position:sticky;top:76px}}.calendar-pick{position:absolute;inset:0;z-index:0;border-radius:0}.calendar-pick:hover{background:var(--brand-tint)}.calendar-more{position:relative;z-index:1;padding:2px 6px;font-size:11px;font-weight:600;color:var(--brand);text-decoration:none}.calendar-more:hover{text-decoration:underline}.calendar-cell.selected{background:var(--brand-tint);box-shadow:inset 0 0 0 2px var(--brand)}.day-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}.day-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.day-panel-head strong{font-size:14px}.day-panel-close{color:var(--muted2);text-decoration:none;font-size:13px;line-height:1;padding:4px}.day-panel-close:hover{color:var(--ink)}.day-panel-count{margin:0 0 10px;font-size:12px;color:var(--muted)}.day-panel-empty{margin:0;font-size:12.5px;color:var(--muted);line-height:1.6}.day-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.day-item{padding:8px 10px;border-radius:8px;background:var(--idle-soft);border-left:3px solid var(--muted2)}.day-item>a{display:flex;align-items:baseline;gap:8px;color:var(--ink);text-decoration:none;font-size:13px}.day-item>a:hover .day-item-name{text-decoration:underline}.day-item-time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600;flex-shrink:0}.day-item-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-item-stock{font-weight:700;flex-shrink:0}.day-item-meta{display:block;margin-top:3px;font-size:11.5px;color:var(--muted)}.day-item.status-PENDING{border-left-color:var(--muted)}.day-item.status-RUNNING{background:var(--warn-soft);border-left-color:var(--warn)}.day-item.status-SUCCESS{background:var(--ok-soft);border-left-color:var(--ok)}.day-item.status-FAILED{background:var(--danger-soft);border-left-color:var(--danger)}.day-item.status-CANCELLED{color:var(--muted2)}.day-item.status-CANCELLED .day-item-name{text-decoration:line-through}.day-item.projected{background:transparent;border-left:1px dashed var(--brand);border:1px dashed var(--brand);border-left-width:3px}.day-item.projected>a{color:var(--brand)}@media (max-width:640px){.calendar-more{padding:1px 3px;font-size:10px}.calendar-more .more-unit{display:none}.day-panel{padding:12px 14px}}.alert-filter{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:16px;padding:10px 14px;border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:8px;background:var(--brand-tint);color:var(--ink);font-size:13px}.alert-filter a{color:var(--brand);font-weight:600;white-space:nowrap}.alert-filter.empty{border:1px solid #ecd9ae;border-left:3px solid var(--warn);background:var(--warn-soft);color:#8a5a10}.alert-filter.empty a{color:#8a5a10}.period-row{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.period-field{display:flex;flex-direction:column;gap:4px}.period-sep{padding-bottom:8px}.period-cell{font-size:12.5px;white-space:nowrap}:root{--control-h:38px}input:not([type=checkbox]):not([type=radio]),select{height:var(--control-h);box-sizing:border-box}button{min-height:var(--control-h);padding-top:0;padding-bottom:0;box-sizing:border-box}button.sm{min-height:30px}button.linklike,button.picker-item{min-height:0}button.picker-item{padding:10px 12px}.segmented a{height:var(--control-h);display:inline-flex;align-items:center;box-sizing:border-box}.filters{gap:10px 24px}.filters #targetId{width:120px}.row-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.form-submit{margin-top:20px}.period-row{gap:10px}.period-field input{width:150px}.period-sep{padding-bottom:0;color:var(--muted2)}.period-row .linklike,.period-sep{align-self:center;margin-top:18px}.picker-group{border-bottom:1px solid var(--line)}.picker-group:last-child{border-bottom:none}.picker-group-head{display:flex;flex-direction:column;gap:2px;padding:10px 12px 6px;background:#fafbfc}.picker-item.picker-option{padding-left:26px;border-bottom:none}.picker-item.picker-option:before{content:"";position:absolute;left:14px;top:12px;bottom:12px;width:2px;background:var(--line)}.picker-item.picker-option{position:relative}