:root{--bg-0:#e8eef2;--bg-1:#f4f7f9;--ink:#0b1c24;--ink-soft:#3d5360;--line:rgba(11,28,36,0.12);--accent:#0f6e6a;--accent-deep:#0a4f4c;--accent-glow:rgba(15,110,106,0.18);--long:#1a7a4c;--short:#b33a2b;--warn:#9a6b12;--surface:rgba(255,255,255,0.72);--surface-strong:rgba(255,255,255,0.92);--shadow:0 18px 50px rgba(11,28,36,0.08);--radius:14px;--font-display:"Pretendard",-apple-system,BlinkMacSystemFont,system-ui,sans-serif;--font-body:"Pretendard",-apple-system,BlinkMacSystemFont,system-ui,sans-serif;--font-mono:"Pretendard",-apple-system,BlinkMacSystemFont,system-ui,sans-serif}*{box-sizing:border-box}body,html{min-height:100%}body{margin:0;color:var(--ink);font-family:var(--font-body);background:radial-gradient(1200px 600px at 12% -10%,rgba(15,110,106,.16),transparent 55%),radial-gradient(900px 500px at 90% 0,rgba(26,90,140,.12),transparent 50%),linear-gradient(180deg,var(--bg-1),var(--bg-0));background-attachment:fixed}body:before{content:"";position:fixed;inset:0;pointer-events:none;background-image:linear-gradient(rgba(11,28,36,.035) 1px,transparent 0),linear-gradient(90deg,rgba(11,28,36,.035) 1px,transparent 0);background-size:48px 48px;-webkit-mask-image:radial-gradient(ellipse at center,black 30%,transparent 78%);mask-image:radial-gradient(ellipse at center,black 30%,transparent 78%);z-index:0}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.app-shell{position:relative;z-index:1;width:min(1180px,calc(100% - 2rem));margin:0 auto;padding:1.5rem 0 3rem}.brand-bar{justify-content:space-between;gap:1rem;margin-bottom:1.75rem;animation:rise .55s ease both}.brand-bar,.brand-lockup{display:flex;align-items:center}.brand-lockup{gap:.75rem}.brand-lockup img{width:48px;height:48px;border-radius:12px;flex-shrink:0}.login-panel .brand-lockup{margin-bottom:.35rem}.login-panel .brand-lockup img{width:56px;height:56px;border-radius:14px}.brand{font-family:var(--font-display);font-weight:800;font-size:clamp(1.8rem,4vw,2.6rem);letter-spacing:-.03em;line-height:1}.brand span{color:var(--accent)}.brand-sub{color:var(--ink-soft);font-size:.92rem}.panel{background:var(--surface);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--radius);box-shadow:var(--shadow);animation:rise .6s ease both}.panel+.panel{margin-top:1rem}.panel-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:.75rem;padding:1.1rem 1.25rem;border-bottom:1px solid var(--line)}.panel-head h1,.panel-head h2{margin:0;font-family:var(--font-display);font-size:1.2rem;letter-spacing:-.02em}.panel-body{padding:1rem 1.25rem 1.25rem}.muted{color:var(--ink-soft)}.mono{font-family:var(--font-mono);font-size:.86em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.row-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--surface-strong);color:var(--ink);border-radius:999px;padding:.45rem .95rem;cursor:pointer;transition:transform .15s ease,background .15s ease,border-color .15s ease}.btn:hover{transform:translateY(-1px);border-color:rgba(15,110,106,.45)}.btn-primary{background:var(--accent);border-color:var(--accent);color:white}.btn-primary:hover{background:var(--accent-deep)}.input{border:1px solid var(--line);background:var(--surface-strong);border-radius:10px;padding:.55rem .75rem;min-width:12rem}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:.92rem}table.data td,table.data th{text-align:left;padding:.7rem .55rem;border-bottom:1px solid var(--line);vertical-align:top}table.data th{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);font-weight:600}table.data tr.clickable{cursor:pointer;transition:background .15s ease}table.data tr.clickable:hover{background:var(--accent-glow)}table.data tr.expanded{background:rgba(15,110,106,.08)}.badge{display:inline-flex;align-items:center;gap:.3rem;border-radius:999px;padding:.18rem .55rem;font-size:.75rem;font-weight:600;border:1px solid var(--line);background:rgba(255,255,255,.7);white-space:nowrap}.badge.running{color:var(--accent-deep);border-color:rgba(15,110,106,.35);background:rgba(15,110,106,.12)}.badge.error,.badge.offline,.badge.stopped{color:var(--short);border-color:rgba(179,58,43,.3);background:rgba(179,58,43,.08)}.badge.starting,.badge.stopping{color:var(--warn);border-color:rgba(154,107,18,.35);background:rgba(154,107,18,.1)}.pos-inline{display:flex;flex-direction:column;gap:.35rem;min-width:12rem}.pos-inline-row{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.badge.buy,.badge.long{color:var(--long);border-color:rgba(26,122,76,.35);background:rgba(26,122,76,.1)}.badge.close,.badge.sell,.badge.short{color:var(--short);border-color:rgba(179,58,43,.3);background:rgba(179,58,43,.08)}.badge.dry{color:var(--warn);border-color:rgba(154,107,18,.35);background:rgba(154,107,18,.1)}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:.75rem;gap:.75rem;margin:.75rem 0 1rem}.metric{padding:.75rem .85rem;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.55)}.metric .label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin-bottom:.25rem}.metric .value{font-family:var(--font-mono);font-weight:500;font-size:.95rem}.tf-table{width:100%;border-collapse:collapse;font-size:.84rem;margin-top:.5rem}.tf-table td,.tf-table th{padding:.45rem .4rem;border-bottom:1px solid var(--line);text-align:right;font-family:var(--font-mono)}.tf-table td:first-child,.tf-table th:first-child{text-align:left}.tf-table th{color:var(--ink-soft);font-family:var(--font-body);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.checks{display:grid;grid-gap:.35rem;gap:.35rem;margin-top:.65rem}.check{display:grid;grid-template-columns:4.5rem 1fr;grid-gap:.55rem;gap:.55rem;align-items:start;padding:.45rem .55rem;border-radius:10px;border:1px solid var(--line);background:rgba(255,255,255,.45);font-size:.84rem}.check.pass .result{color:var(--long)}.check.fail .result{color:var(--short)}.check.skip .result{color:var(--warn)}.detail-block{padding:.85rem .9rem 1rem;animation:expand .28s ease both}.detail-block h3{margin:0 0 .35rem;font-family:var(--font-display);font-size:1rem}.empty,.error-box,.loading{padding:2rem 1rem;text-align:center;color:var(--ink-soft)}.error-box{color:var(--short)}.login-wrap{min-height:70vh;display:grid;place-items:center}.login-panel{width:min(420px,100%);padding:1.5rem}.login-panel h1{font-family:var(--font-display);margin:0 0 .35rem}.login-panel form{display:grid;grid-gap:.75rem;gap:.75rem;margin-top:1rem}.back-link{display:inline-flex;align-items:center;gap:.35rem;color:var(--accent-deep);font-weight:500;margin-bottom:.85rem}.summary-strip{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.25rem}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes expand{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (max-width:720px){.app-shell{width:min(100% - 1.25rem,1180px);padding-top:1rem}.brand-bar{flex-direction:column;align-items:flex-start}}