:root{--ink:#1d2a25;--muted:#65716b;--paper:#f5f6f2;--line:#dbe1d8;--green:#195b43;--lime:#d6edb4}*{box-sizing:border-box}body{margin:0;background:var(--paper);font:15px/1.6 system-ui,sans-serif;color:var(--ink)}header{display:flex;align-items:center;gap:24px;padding:20px 5vw;border-bottom:1px solid var(--line);background:#fff}header .muted{flex:1}.brand{font-weight:750;font-size:20px;text-decoration:none;color:var(--ink);display:flex;gap:12px;align-items:center}.logo{background:var(--green);color:var(--lime);width:35px;height:35px;border-radius:9px;text-align:center}main{max-width:1460px;margin:auto;padding:44px 5vw 80px}h1{font-size:clamp(32px,4vw,52px);line-height:1.15;letter-spacing:-1.5px;margin:16px 0}h2{font-size:24px;line-height:1.3}h3{font-size:18px}p{color:var(--muted)}.eyebrow{letter-spacing:2px;font-size:11px;font-weight:750;color:var(--green)}.intro{font-size:18px}.muted{color:var(--muted);font-size:13px}.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:24px}button{background:white;border:1px solid #bac8be;padding:10px 16px;border-radius:8px;font:inherit;font-size:14px;cursor:pointer;color:var(--ink)}button:hover{background:#e9f0e7}button.primary{background:var(--green);color:white;border-color:var(--green)}button:disabled{opacity:.5;cursor:wait}input,select{font:inherit;border:1px solid #becbc2;border-radius:7px;padding:9px 12px;background:white;max-width:100%}label{display:flex;gap:8px;flex-direction:column;font-size:13px;font-weight:600}#login{max-width:780px;padding:3vh 0}#login-form{max-width:400px;margin-top:32px;display:grid;gap:16px}nav{display:flex;gap:8px;margin:32px 0;border-bottom:1px solid var(--line);padding-bottom:16px;flex-wrap:wrap}nav button{border-color:transparent;background:transparent}nav button.active{background:var(--green);color:white}.section-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:24px 0}.section-head p{max-width:800px}.upload{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.upload p{flex:1;font-size:12px}.file{display:flex;align-items:center;gap:16px;background:white;border:1px solid var(--line);padding:16px;border-radius:10px;margin-bottom:8px}.file .name{flex:1;min-width:0;overflow-wrap:anywhere}.file small{display:block;color:var(--muted)}.file a{font-size:13px;color:var(--green)}.status{font-size:11px;letter-spacing:.5px;font-weight:650;background:#edf1e9;border-radius:5px;padding:4px 8px}.status.FAILED,.status.PARTIAL{background:#fff0d8;color:#814c04}.status.SUCCEEDED,.status.PROCESSED{background:#dcefd6;color:#236337}.status.RUNNING{background:#dce9f2;color:#1c567c}.graph-tools{display:flex;gap:20px;align-items:end;margin-bottom:20px;flex-wrap:wrap}.graph-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px}#graph-canvas{padding:0;overflow:hidden;min-height:560px}#graph-canvas svg{width:100%;height:560px;touch-action:none}#graph-detail{max-height:560px;overflow:auto}#graph-detail pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}#graph-detail blockquote{border-left:3px solid var(--green);margin:16px 0;padding-left:12px;white-space:pre-wrap;font-size:13px}.graph-node{cursor:pointer}.graph-edge{cursor:pointer}.job{margin:12px 0}.job-head{display:flex;justify-content:space-between;gap:20px}.job progress{width:100%;height:7px;accent-color:var(--green)}.job pre{white-space:pre-wrap;overflow-wrap:anywhere;color:#834b15;font-size:12px}#notice{position:fixed;bottom:20px;left:5vw;right:5vw;background:#1d2a25;color:white;padding:16px 20px;border-radius:10px;z-index:10}#report-frame{width:100%;height:900px;border:1px solid var(--line);border-radius:14px;background:white}#report-links{display:flex;gap:16px}#report-links a{color:var(--green)}footer{padding:24px 5vw;border-top:1px solid var(--line);color:var(--muted);font-size:12px}[hidden]{display:none!important}@media(max-width:850px){header .muted{display:none}header{justify-content:space-between}.graph-layout{grid-template-columns:1fr}#graph-detail{max-height:350px}.section-head,.file{flex-wrap:wrap}main{padding-top:28px}#report-frame{height:800px}.upload{align-items:stretch;flex-direction:column}}

.header-link{color:var(--green);font-size:14px;text-decoration:none;white-space:nowrap}.header-link:hover{text-decoration:underline}@media(max-width:600px){header{gap:12px;flex-wrap:wrap}.header-link{font-size:12px}}
