:root{--bg:#ffffff;--bg-sunken:#f5f6f8;--surface:#ffffff;--surface-hover:#f6f7f9;--surface-active:#eef0f4;--fg:#1b2330;--fg-soft:#4e5968;--fg-muted:#8b95a1;--border:#e8ebef;--border-strong:#d4d9e0;--brand:#03c75a;--brand-hover:#02b351;--brand-fg:#ffffff;--brand-soft:#e9f9f0;--brand-line:#a5e8c3;--accent:#2d5bd1;--accent-soft:#eef3ff;--accent-line:#c4d4f5;--accent-fg:#ffffff;--solid:#1b2330;--solid-hover:#303b4d;--solid-fg:#ffffff;--ok:#148a54;--ok-soft:#e6f5ee;--ok-line:#b8e2cd;--warn:#9a6a00;--err:#d63c2e;--info:#2d5bd1;--r-1:10px;--r-2:14px;--r-3:20px;--r-pill:999px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-7:32px;--s-8:40px;--t-xs:11px;--t-sm:13px;--t-md:14px;--t-lg:16px;--t-xl:22px;--t-2xl:30px;--shadow-1:0 1px 3px rgba(27,35,48,0.05),0 4px 14px rgba(27,35,48,0.05);--shadow-2:0 6px 24px rgba(27,35,48,0.1);--font:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Segoe UI","Apple SD Gothic Neo","Malgun Gothic",sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#171b22;--bg-sunken:#11141a;--surface:#1d222b;--surface-hover:#232935;--surface-active:#2b3240;--fg:#eceef2;--fg-soft:#aab3c0;--fg-muted:#7b8494;--border:#2b313c;--border-strong:#3b4350;--brand:#0ed46a;--brand-hover:#33dd82;--brand-fg:#0c2417;--brand-soft:#14301f;--brand-line:#24603c;--accent:#7ba0f0;--accent-soft:#1d2536;--accent-line:#33436a;--accent-fg:#11141a;--solid:#eceef2;--solid-hover:#cfd4dc;--solid-fg:#171b22;--ok:#46c088;--ok-soft:#16301f;--ok-line:#245c39;--warn:#d6a441;--err:#e5766a;--info:#7ba0f0;--shadow-1:0 1px 3px rgba(0,0,0,0.4);--shadow-2:0 6px 24px rgba(0,0,0,0.5)}}*{box-sizing:border-box}body{margin:0;background:var(--bg-sunken);color:var(--fg);font:var(--t-md) /1.6 var(--font);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.015em}h1{font-size:var(--t-xl)}h2{font-size:var(--t-lg)}h3{font-size:var(--t-md)}a{color:inherit;text-decoration:none}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.92em;background:var(--bg-sunken);border:1px solid var(--border);border-radius:6px;padding:0 4px}.muted{color:var(--fg-muted)}.soft{color:var(--fg-soft)}.small{font-size:var(--t-sm)}.xs{font-size:var(--t-xs)}.row{gap:var(--s-2);flex-wrap:wrap}.between,.row{display:flex;align-items:center}.between{justify-content:space-between;gap:var(--s-3)}.stack{display:flex;flex-direction:column;gap:var(--s-2)}.section{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-3);box-shadow:var(--shadow-1);padding:var(--s-6);margin-bottom:var(--s-5)}.section>h2{margin-bottom:var(--s-4)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-3)}.section-desc{color:var(--fg-soft);font-size:var(--t-sm);margin:calc(var(--s-1) * -1) 0 var(--s-3)}.panel{border:1px solid var(--border);border-radius:var(--r-2);background:var(--bg-sunken)}.list{border-top:1px solid var(--border)}.list-item{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-4) var(--s-2);border-bottom:1px solid var(--border);border-radius:0}.list-item:hover{background:var(--surface-hover)}.list-item .grow{flex:1 1;min-width:0}.list-item .title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn,button{font:600 var(--t-md) /1 var(--font);padding:10px 16px;border:1px solid var(--border-strong);border-radius:var(--r-1);background:var(--surface);color:var(--fg);cursor:pointer;transition:background .12s,border-color .12s,transform .06s}.btn:hover,button:hover:not(:disabled){background:var(--surface-hover)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-fg);font-weight:700}button.primary:hover:not(:disabled){background:var(--brand-hover);border-color:var(--brand-hover)}button.solid{background:var(--solid);border-color:var(--solid);color:var(--solid-fg)}button.solid:hover:not(:disabled){background:var(--solid-hover);border-color:var(--solid-hover)}button.ghost{border-color:transparent;background:transparent}button.ghost:hover:not(:disabled){background:var(--surface-hover)}button.danger{color:var(--err);border-color:var(--border-strong)}button.sm{padding:6px 11px;font-size:var(--t-sm)}input[type=date],input[type=email],input[type=number],input[type=text],input[type=url],select,textarea{width:100%;font:var(--t-md) /1.4 var(--font);padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--r-1);background:var(--surface);color:var(--fg)}input:focus,select:focus,textarea:focus{outline:3px solid var(--brand-line);outline-offset:-1px;border-color:var(--brand)}label{display:block;font-size:var(--t-sm);font-weight:600;color:var(--fg-soft);margin-bottom:var(--s-1)}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:var(--s-3);gap:var(--s-3)}.chip{display:inline-flex;align-items:center;gap:4px;font-size:var(--t-xs);font-weight:600;line-height:1;padding:5px 10px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--bg-sunken);color:var(--fg-soft);white-space:nowrap}.chip.ok{color:var(--ok);background:var(--ok-soft);border-color:var(--ok-line)}.chip.warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 35%,var(--border))}.chip.err{color:var(--err);border-color:color-mix(in srgb,var(--err) 35%,var(--border))}.chip.run{color:var(--info);background:var(--accent-soft);border-color:var(--accent-line)}.notice{border:1px solid var(--border);border-radius:var(--r-2);padding:var(--s-3) var(--s-4);font-size:var(--t-sm);background:var(--surface);margin-bottom:var(--s-3);box-shadow:var(--shadow-1)}.notice.ok{background:var(--ok-soft);border-color:var(--ok-line)}.notice.warn{background:var(--brand-soft);border-color:var(--brand-line)}.notice.err{background:color-mix(in srgb,var(--err) 7%,var(--surface));border-color:color-mix(in srgb,var(--err) 30%,var(--border))}table{width:100%;border-collapse:collapse;font-size:var(--t-md)}th{text-align:left;font-weight:600;font-size:var(--t-sm);color:var(--fg-muted);padding:var(--s-2)}td,th{border-bottom:1px solid var(--border)}td{padding:var(--s-3) var(--s-2);vertical-align:top}tbody tr:hover{background:var(--surface-hover)}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--r-2);padding:var(--s-7) var(--s-4);text-align:center;color:var(--fg-soft);line-height:1.8;cursor:pointer;background:var(--bg-sunken);transition:border-color .12s,background .12s}.dropzone.over,.dropzone:hover{border-color:var(--brand);background:var(--brand-soft)}.dropzone strong{color:var(--fg)}.log{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:var(--t-sm);line-height:1.65;background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--r-1);padding:var(--s-3);max-height:320px;overflow:auto;white-space:pre-wrap}.topnav{position:-webkit-sticky;position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--border)}.topnav-inner{max-width:1080px;margin:0 auto;padding:0 var(--s-6);height:64px;gap:var(--s-6)}.brand,.topnav-inner{display:flex;align-items:center}.brand{gap:var(--s-2);flex:none}.brand-mark{width:30px;height:30px;border-radius:9px;background:var(--brand);color:var(--brand-fg);display:grid;place-items:center;font-size:var(--t-md);font-weight:800}.brand-name{font-weight:800;font-size:var(--t-lg);letter-spacing:-.02em}.topnav-menu{display:flex;gap:var(--s-1)}.nav-link{padding:8px var(--s-3);border-radius:var(--r-1);color:var(--fg-soft);font-size:var(--t-md);font-weight:600}.nav-link:hover{background:var(--surface-hover);color:var(--fg)}.nav-link.active{color:var(--fg);background:var(--surface-active)}.nav-link .count{margin-left:6px;font-size:var(--t-xs);font-weight:700;color:var(--brand-fg);background:var(--brand);border-radius:var(--r-pill);padding:2px 7px}.topnav .spacer{flex:1 1}.quota-pill{display:flex;align-items:center;gap:var(--s-2);font-size:var(--t-sm);color:var(--fg-soft);background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--r-pill);padding:6px 12px}.quota-pill .progress{width:64px}.avatar{width:32px;height:32px;background:var(--surface-active);color:var(--fg-soft);display:grid;place-items:center;font-size:var(--t-sm);font-weight:700}.avatar,.progress{border-radius:var(--r-pill)}.progress{height:6px;background:var(--surface-active);overflow:hidden}.progress>i{display:block;height:100%;background:var(--brand)}.main{max-width:1080px;margin:0 auto;padding:var(--s-7) var(--s-6) var(--s-8)}.page-head{margin-bottom:var(--s-6)}.page-date{font-size:var(--t-sm);font-weight:600;color:var(--fg-muted)}.page-title{font-size:var(--t-2xl);font-weight:800;letter-spacing:-.03em;margin-top:var(--s-1);line-height:1.25}.dash-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-gap:var(--s-4);gap:var(--s-4);align-items:start}.dash-grid .section{padding:var(--s-4);margin-bottom:var(--s-4)}.dash-grid .section>h2{font-size:var(--t-md);margin-bottom:var(--s-3)}.dropzone.slim{padding:var(--s-4);line-height:1.5}.draft-scroll{max-height:44vh;overflow-y:auto}.page-head.compact{display:flex;align-items:baseline;gap:var(--s-3);margin-bottom:var(--s-4)}.page-head.compact .page-title{font-size:var(--t-xl);margin-top:0}.radio-row{display:flex;gap:var(--s-3);flex-wrap:wrap}.radio-row label{display:inline-flex;align-items:center;gap:6px;font-weight:500;color:var(--fg);margin:0;font-size:var(--t-md)}@media (max-width:900px){.dash-grid{grid-template-columns:1fr}}.week{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--border);border-radius:var(--r-2);overflow:hidden;background:var(--surface)}.week>div{padding:var(--s-3) var(--s-2);text-align:center;border-left:1px solid var(--border);font-size:var(--t-sm)}.week>div:first-child{border-left:0}.week .dow{color:var(--fg-muted);font-size:var(--t-xs);font-weight:600}.week .day{font-weight:700;font-size:var(--t-lg);margin:2px 0}.week .mark{font-size:var(--t-xs);color:var(--fg-muted)}.week .today{background:var(--brand-soft)}.week .has{color:var(--accent);font-weight:700}@media (max-width:720px){.topnav-inner{gap:var(--s-3);padding:0 var(--s-4);overflow-x:auto}.main{padding:var(--s-5) var(--s-4) var(--s-7)}}