*{box-sizing:border-box}html{font-family:Inter,system-ui,-apple-system,"Noto Sans KR",sans-serif;background:#06110d;color:#ecf8f2}body{margin:0;min-height:100vh;background:radial-gradient(circle at 85% -10%,#164c39 0,transparent 38%),#06110d}.top{position:sticky;top:0;z-index:10;background:#07140fee;border-bottom:1px solid #1e4335;backdrop-filter:blur(12px)}.brand{max-width:900px;margin:auto;padding:16px 14px 9px;display:flex;justify-content:space-between;align-items:center}.brand b{font-size:18px}.brand span{font-size:12px;color:#86a99a}.tabs{max-width:900px;margin:auto;padding:0 10px 10px;display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.tabs a{min-height:45px;border-radius:13px;background:#0b1d16;border:1px solid #204637;color:#9ab9ac;text-decoration:none;font-weight:900;display:flex;align-items:center;justify-content:center}.tabs a.on{background:#27e39e;color:#052017;border-color:#27e39e}.wrap{max-width:900px;margin:auto;padding:14px 10px 70px}.card{background:#0b1a14;border:1px solid #1e4033;border-radius:19px;padding:16px;margin-bottom:13px;box-shadow:0 14px 35px #0004}h1{font-size:22px;margin:0 0 7px}h2{font-size:17px;margin:0}.sub{font-size:13px;line-height:1.55;color:#8fac9f}.drop{border:1.5px dashed #3b7660;border-radius:18px;padding:29px 14px;text-align:center;background:#081711}.drop input{margin-top:16px;width:100%}.progress{height:10px;background:#13261e;border-radius:999px;overflow:hidden;margin-top:12px}.bar{height:100%;width:0;background:#28e39f;transition:width .2s}.row{display:flex;gap:8px;flex-wrap:wrap}.btn{min-height:44px;border-radius:12px;padding:0 14px;background:#153126;border:1px solid #285443;color:#eff8f4;font-weight:900;cursor:pointer}.btn.primary{background:#28e39f;border-color:#28e39f;color:#042017}.btn.danger{background:#381918;border-color:#62312d;color:#ffc0bb}.btn:disabled{opacity:.45}.pill{padding:6px 9px;border-radius:999px;background:#173328;color:#8bf1c4;font-size:12px;font-weight:900}.head{display:flex;justify-content:space-between;gap:8px;align-items:center}.output,textarea{width:100%;border:1px solid #24493b;border-radius:14px;background:#030906;color:#c9f8e2;padding:13px;font:13px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}.output{min-height:220px;max-height:55vh;overflow:auto;white-space:pre-wrap;word-break:break-word}textarea{min-height:155px;resize:vertical}.job{padding:13px;border:1px solid #1f4033;border-radius:14px;margin-top:10px;background:#08140f}.jobname{font-weight:900;word-break:break-all}.meta{font-size:12px;color:#86a397;margin-top:5px}.login{position:fixed;inset:0;background:#06100df5;display:none;z-index:99;align-items:center;justify-content:center;padding:18px}.login.on{display:flex}.loginbox{width:min(420px,100%);background:#0c1b15;border:1px solid #2a5846;border-radius:20px;padding:20px}.loginbox input,select{width:100%;padding:14px;border-radius:12px;border:1px solid #2a5846;background:#07120e;color:#fff;margin:12px 0}.notice{padding:11px;border-radius:12px;background:#13281f;color:#a4c9b9;font-size:13px}.warn{background:#30230e;color:#f7dda1}.files{margin-top:10px}.file{padding:8px 0;border-top:1px solid #183329;display:flex;justify-content:space-between;gap:8px}.file a,.btnlink{color:#4deeb1;text-decoration:none;font-weight:800}@media(max-width:520px){.brand span{display:none}.card{padding:14px;border-radius:16px}.btn{flex:1}.tabs a{font-size:13px}}

/* PH6 UX */
.drop{transition:border-color .18s,background .18s,transform .18s;cursor:pointer}
.drop.drag{border-color:#28e39f;background:#0d241b;transform:scale(1.01)}
.drop input{display:none}
.dropicon{width:46px;height:46px;border-radius:16px;margin:0 auto 10px;background:#153b2d;color:#52f0b5;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:300}
.btn.ghost{background:#0c2219;border-color:#2c5d48;color:#8ef0c5;white-space:nowrap}
.actionNotice{min-height:0;margin:0;text-align:center;font-weight:1000;font-size:22px;line-height:1.2;color:#4ff0b2;opacity:0;transform:translateY(-5px);transition:.18s}
.actionNotice.show{min-height:38px;margin:8px 0 4px;opacity:1;transform:translateY(0)}
.actionNotice.error{color:#ff938b}
@media(max-width:520px){.head>.btn.ghost{flex:0 0 auto;min-height:40px;padding:0 11px;font-size:12px}.actionNotice{font-size:20px}}

