/* ASTRAN RECY — 제품 전용 스타일 (공통 키트는 app.css) */
.small{font-size:11.5px}
.demo-badge{margin-left:4px}
.logout-btn{height:36px;border-radius:10px;border:1px solid var(--line);background:var(--panel2);color:var(--sub);cursor:pointer;display:flex;align-items:center;gap:6px;padding:0 10px;font-size:12px}
.logout-btn svg{width:16px;height:16px}
/* 판정 4상태 */
.st{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:20px;white-space:nowrap}
.st::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.st-ok{background:rgba(61,220,151,.14);color:var(--green)}
.st-rv{background:rgba(255,176,32,.16);color:var(--orange)}
.st-ng{background:rgba(var(--red-rgb),.14);color:var(--red)}
.st-hd{background:rgba(139,149,165,.18);color:var(--sub)}
.src{font-size:10.5px;padding:1px 6px;border-radius:5px;border:1px solid var(--line2);color:var(--sub);white-space:nowrap}
.src.m{border-color:rgba(79,157,255,.5);color:var(--blue)}
.src.p{border-color:rgba(176,108,255,.5);color:var(--purple)}
.notice{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:10px;border:1px dashed rgba(255,176,32,.55);background:rgba(255,176,32,.07);font-size:12px;line-height:1.6;margin-top:12px}
.notice b{color:var(--orange);white-space:nowrap}
/* 배합 입력 */
.cands{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px}
.cand{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px}
.cand h4{margin:0 0 8px;font-size:13.5px;display:flex;align-items:center;gap:8px}
.comp-row{display:grid;grid-template-columns:1fr 74px;gap:8px;align-items:center;margin:4px 0;font-size:12px}
.comp-row input{height:28px;border-radius:7px;border:1px solid var(--line2);background:var(--bg2);color:var(--text);padding:0 8px;text-align:right;font-family:inherit;font-variant-numeric:tabular-nums;width:100%}
.comp-row input:focus{outline:0;border-color:var(--red)}
.comp-row .lb{color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.comp-row .lb.rec{color:var(--green)}
.sumline{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid var(--line);font-size:12px}
.sumline .bad{color:var(--red);font-weight:700}.sumline .ok{color:var(--green);font-weight:700}
.elvbar{height:8px;border-radius:5px;background:var(--panel);overflow:hidden;display:flex;margin-top:6px}
.elvbar i{display:block;height:100%}
/* 검토 상세 */
.rv-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.rv-head .pn{font-size:20px;font-weight:800;letter-spacing:.02em}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:4px 0 14px;overflow-x:auto}
.tabs button{border:0;background:none;color:var(--sub);padding:10px 14px;cursor:pointer;font-size:13px;border-bottom:2px solid transparent;white-space:nowrap;font-family:inherit}
.tabs button.on{color:var(--red);border-bottom-color:var(--red);font-weight:700}
.jgrid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}
@media(max-width:1250px){.jgrid{grid-template-columns:minmax(0,1fr)}}
table.jt{width:100%;border-collapse:collapse;font-size:12px}
table.jt th{position:sticky;top:0;background:var(--bg2);color:var(--sub);font-weight:600;text-align:left;padding:8px;border-bottom:1px solid var(--line2);white-space:nowrap;z-index:1}
table.jt td{padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
table.jt td:first-child,table.jt th:first-child{min-width:190px;position:sticky;left:0;background:var(--bg2);z-index:2}
table.jt tr.ov td:first-child{background:var(--panel2)}
table.jt td:nth-child(2){min-width:84px;white-space:nowrap}
table.jt td.r,table.jt th.r{text-align:right}
table.jt tr.ov td{background:var(--panel2);font-weight:700}
table.jt .val{font-variant-numeric:tabular-nums;white-space:nowrap}
table.jt .rng{color:var(--mute);font-size:10.5px;white-space:nowrap}
.rid{font-family:ui-monospace,Consolas,monospace;font-size:10.5px;color:var(--mute)}
.need{font-size:10px;color:var(--red);border:1px solid rgba(var(--red-rgb),.4);border-radius:4px;padding:0 4px;margin-left:4px}
.ref{font-size:10px;color:var(--mute);border:1px solid var(--line2);border-radius:4px;padding:0 4px;margin-left:4px}
.cell-click{cursor:pointer}.cell-click:hover{background:var(--redbg)}
/* 판정 그림 (구간 막대) */
.gauge{position:relative;height:14px;min-width:120px;background:var(--panel2);border-radius:4px}
.gauge .band{position:absolute;top:3px;bottom:3px;border-radius:3px;background:rgba(176,108,255,.35)}
.gauge .pt{position:absolute;top:1px;width:3px;bottom:1px;margin-left:-1px;background:var(--text);border-radius:2px}
.gauge .thr{position:absolute;top:-2px;bottom:-2px;width:2px;margin-left:-1px;background:var(--red)}
.gauge .ok{position:absolute;top:0;bottom:0;background:rgba(61,220,151,.10)}
/* AI 근거 설명 */
.agent{position:sticky;top:0}
.agent .msgs{max-height:440px;overflow:auto;display:flex;flex-direction:column;gap:10px;margin-bottom:10px}
.agent .q{align-self:flex-end;background:var(--redbg);border-radius:12px 12px 2px 12px;padding:8px 11px;font-size:12.5px;max-width:90%}
.agent .a{background:var(--panel2);border:1px solid var(--line);border-radius:12px 12px 12px 2px;padding:10px 12px;font-size:12.5px;line-height:1.65}
.agent .a ul{margin:4px 0 0 16px;padding:0}
.agent .a .cite{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line2);font-size:11px;color:var(--sub)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.chip{border:1px solid var(--line2);background:var(--panel2);color:var(--sub);border-radius:20px;padding:4px 10px;font-size:11.5px;cursor:pointer;font-family:inherit}
.chip:hover{border-color:var(--red);color:var(--text)}
/* 추천 */
.bounds{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px 16px}
.bnd{display:grid;grid-template-columns:1fr 62px 62px;gap:6px;align-items:center;font-size:12px}
.bnd input{height:28px;border-radius:7px;border:1px solid var(--line2);background:var(--bg2);color:var(--text);padding:0 6px;text-align:right;font-family:inherit;width:100%}
.scen{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
@media(max-width:900px){.scen{grid-template-columns:repeat(2,minmax(0,1fr))}}
.scen>div{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--panel2);font-size:12px}
.scen b.big{font-size:18px;display:block;margin-bottom:4px}
/* 시험·검증 */
.dv input.inp{height:28px;margin:0;font-size:12px}
.dv select{height:28px;border-radius:7px;border:1px solid var(--line2);background:var(--bg2);color:var(--text);font-family:inherit;font-size:12px;padding:0 4px}
.kind-mat{color:var(--blue)}.kind-part{color:var(--purple)}
/* 이력 */
.tl{border-left:2px solid var(--line2);margin-left:6px;padding-left:16px}
.tl .ev{position:relative;padding:4px 0 12px}
.tl .ev::before{content:"";position:absolute;left:-22px;top:9px;width:10px;height:10px;border-radius:50%;background:var(--bg2);border:2px solid var(--red)}
.tl .ev .at{font-size:11px;color:var(--mute)}
.tl .ev .ch{font-size:12px;margin-top:3px}
.tl .ev .ch span{display:inline-block;margin:2px 6px 2px 0;padding:1px 7px;border-radius:6px;background:var(--panel2)}
/* 목록 카드 */
.rvlist .rvc{display:grid;grid-template-columns:150px minmax(0,1fr) 230px 190px 90px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);cursor:pointer}
.rvlist .rvc:hover{background:var(--redbg)}
@media(max-width:1100px){.rvlist .rvc{grid-template-columns:1fr 1fr}}
.cnts{display:flex;gap:4px;flex-wrap:wrap}
.flow4{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:14px}
@media(max-width:1000px){.flow4{grid-template-columns:repeat(2,minmax(0,1fr))}}
.flow4>div{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel);position:relative}
.flow4>div b{display:block;font-size:13px;margin:4px 0}
.flow4 .n{font-size:11px;color:var(--red);font-weight:800;letter-spacing:.05em}
.flow4 .d{font-size:11.5px;color:var(--sub);line-height:1.55}
.area-h{display:flex;gap:10px;align-items:baseline;margin:12px 0 6px}.area-h b{font-size:13px;color:var(--red)}
.part-pick{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.part-pick button{text-align:left;border:1px solid var(--line2);background:var(--panel2);color:var(--text);border-radius:12px;padding:12px;cursor:pointer;font-family:inherit}
.part-pick button.on{border-color:var(--red);background:var(--redbg)}
.part-pick button b{display:block;font-size:13.5px;margin-bottom:4px}
.pre td{font-size:11.5px}
.mono{font-family:ui-monospace,Consolas,monospace}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:12.5px}
.kv span:nth-child(odd){color:var(--sub)}
.doc-hit{padding:10px 0;border-bottom:1px solid var(--line)}
.doc-hit .t{font-weight:700;font-size:13px}
.doc-hit .m{font-size:11px;color:var(--mute);margin:2px 0 4px}
.doc-hit .b{font-size:12.5px;line-height:1.6;color:var(--sub)}
mark{background:rgba(255,176,32,.3);color:inherit;border-radius:3px;padding:0 2px}
.helpwrap h3{margin:20px 0 8px}
.helpwrap p,.helpwrap li{line-height:1.75;font-size:13px}
.chipbtn.on{border-color:var(--red);color:var(--red);background:var(--redbg)}

/* 비밀번호 눈 단추 */
.pw-wrap{position:relative;display:block}
.pw-wrap .inp{padding-right:42px}
.pw-eye{position:absolute;right:5px;bottom:4px;width:30px;height:28px;display:grid;place-items:center;border:0;border-radius:7px;background:transparent;color:var(--sub);cursor:pointer;padding:0}
.pw-eye:hover,.pw-eye:focus-visible{color:var(--text);background:var(--redbg);outline:none}
.pw-eye[aria-pressed="true"]{color:var(--red)}
.pw-eye svg{width:18px;height:18px}

/* 로그인 그림 (자체 제작 벡터 · brand/recy_login.svg) */
#login .art img.recy-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 30%}
#login .art .art-fade{position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(6,8,12,.92) 88%)}
#login .art h2,#login .art p{position:relative;z-index:1}
