:root{color-scheme:light;font-family:Inter,"Noto Sans KR",system-ui,sans-serif;color:#1d1b3a;background:linear-gradient(160deg,#F4F3FF,#E9E6FF) fixed}*{box-sizing:border-box}body{margin:0;font-size:14px}header{position:relative;padding:26px clamp(24px,4vw,54px);color:#fff;background:linear-gradient(145deg,#6C60F2,#4A3FD6 55%,#3329A8)}.lang-switch{position:absolute;top:18px;right:clamp(16px,4vw,54px);display:flex;gap:4px}.lang-switch button{width:auto;padding:5px 11px;margin:0;background:transparent;color:#E4E1FF;border:1px solid #ffffff40;border-radius:6px;font-size:.72rem;font-weight:800;text-transform:lowercase}.lang-switch button.active{background:#fff;color:#2a2290;border-color:#fff}header h1{font-size:clamp(1.75rem,4vw,2.6rem);margin:3px 0 5px;letter-spacing:-.045em}header>p:not(.eyebrow){margin:0;color:#E4E1FF}.eyebrow{margin:0;font-size:.68rem;font-weight:800;letter-spacing:.18em;color:#C9C4FF}.badge{display:inline-flex;margin-top:12px;padding:6px 10px;border:1px solid #ffffff55;border-radius:999px;background:#ffffff12;font-size:.76rem}.tabs{display:flex;gap:4px;padding:0 clamp(24px,4vw,54px);background:#2a2290;overflow-x:auto}.tabs .tab-link{width:auto;padding:14px 16px;margin:0;background:transparent;color:#D5D2F5;border:0;border-bottom:3px solid transparent;border-radius:0;font-weight:700;white-space:nowrap}.tabs .tab-link:hover{color:#fff}.tabs .tab-link.active{color:#fff;border-bottom-color:#ffffff}main{max-width:1240px;margin:auto;padding:18px}main>section[id^="tab-"]{display:none}main>section[id^="tab-"].active{display:block}section{background:#fff;border:1px solid #E3E0FF;border-radius:20px;margin:14px 0;padding:22px;box-shadow:0 4px 18px #2a22900d}section.primary{border-top:3px solid #6C60F2}.section-title{display:flex;justify-content:space-between;gap:20px;align-items:center}h2{margin:2px 0 8px;font-size:1.35rem;letter-spacing:-.025em}.notice{font-size:.82rem;color:#6b6890}.compact{width:auto;padding:8px 13px}.filter-bar{display:grid;grid-template-columns:auto repeat(3,minmax(120px,1fr)) auto auto;gap:9px;align-items:end;margin:16px 0 12px;padding:13px;background:#F7F6FF;border:1px solid #E3E0FF;border-radius:12px}.quick-range{display:flex;gap:5px}.quick-range button{width:auto;padding:9px 12px;margin:0;background:#fff;color:#4A3FD6;border:1px solid #D5D2F5}.filter-bar label{font-size:.72rem;color:#6b6890}form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;align-items:end}label{font-size:.78rem;font-weight:700}input,select,button{display:block;width:100%;padding:10px;margin-top:5px;border:1px solid #D5D2F5;border-radius:8px;background:#fff;font:inherit}button{background:#4A3FD6;color:#fff;border:0;font-weight:750;cursor:pointer}button:hover:not(:disabled){filter:brightness(.96)}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #6C60F255;outline-offset:1px}.secondary{background:#fff;color:#4A3FD6;border:1px solid #D5D2F5}.list{margin-top:8px;overflow-x:auto;border:1px solid #E3E0FF;border-radius:11px}.log-head,.log-row{display:grid;grid-template-columns:178px 140px minmax(180px,1.15fr) minmax(190px,1fr) 120px;gap:12px;align-items:center;min-width:850px}.log-head{padding:11px 14px;background:#F0EEFF;color:#6b6890;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.log-row{min-height:58px;padding:11px 14px;border-top:1px solid #ECEAFB;transition:background .15s}.log-row:hover{background:#FAF9FF}.log-row time{color:#6b6890;font-size:.78rem;font-variant-numeric:tabular-nums}.actor{display:flex;align-items:center;gap:8px;font-weight:650}.actor i{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:#ECEAFF;color:#4A3FD6;font-size:.72rem;font-style:normal}.action-badge{display:inline-flex;padding:5px 9px;border-radius:999px;background:#ECEAFF;color:#4A3FD6;font-size:.76rem;font-style:normal;white-space:nowrap}.action-badge.order{background:#e9eff9;color:#315f9a}.action-badge.export{background:#fff0d8;color:#8a5510}.action-badge.change{background:#f0eaff;color:#6842a1}.action-badge.danger{background:#fde9e7;color:#a13c32}.detail{font-weight:600;color:#2c2a4d}.detail small{display:block;margin-top:4px;color:#6b6890;font-weight:400}.log-row code{display:inline-flex;width:max-content;padding:4px 7px;border-radius:6px;background:#F1F0FB;color:#6b6890;font-family:ui-monospace,monospace;font-size:.72rem}.reason-button{width:auto;display:inline-block;padding:5px 8px;margin:5px 0 0;background:#fff6e7;color:#8a5510;border:1px solid #e9c992;font-size:.7rem}.pagination{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:13px}.pagination button{width:auto;min-width:68px;padding:8px 12px}.pagination span{min-width:150px;text-align:center;color:#6b6890;font-size:.8rem}.pagination button:disabled{opacity:.4;cursor:not-allowed}.empty-state{padding:44px;text-align:center;color:#6b6890}.summary,.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:12px 0}.summary>div,.card{padding:14px;border-radius:10px;background:#F7F6FF;border:1px solid #E3E0FF}.summary strong{display:block;font-size:1.4rem}.card h3{font-size:.92rem}.status{font-size:.68rem;font-weight:800}.covered{color:#14743b}.partial{color:#a65d00}.not_configured,.unknown{color:#6b6890}.unsupported{color:#a22b2b}.item{padding:11px;border-bottom:1px solid #ECEAFB}.item small{display:block;color:#6b6890}.item-actions{display:flex;gap:6px;flex-wrap:wrap;flex:none}.item-actions button{width:auto;padding:6px 10px;font-size:.76rem}.staff-row{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.staff-row .staff-line{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Native <input type="file"> always shows browser/OS-language chrome
   ("Choose file"/"No file chosen") that page code cannot translate - this
   hides it (still focusable/clickable via the wrapping <label>, so no JS
   is needed to open the file picker) and shows our own translated button
   + filename text instead. */
.file-picker{cursor:pointer}
.file-picker-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.file-picker-row{display:flex;align-items:center;gap:10px;margin-top:5px}
.file-picker-button{width:auto;padding:10px 14px;border:1px solid #D5D2F5;border-radius:8px;background:#fff;color:#4A3FD6;font-weight:700}
.file-picker-row span:last-child{color:#6b6890;font-size:.85rem;font-weight:400}details{background:#fff;border:1px solid #E3E0FF;border-radius:12px;margin:14px 0}summary{padding:16px 20px;cursor:pointer;font-weight:750;color:#4a4670}.details-content{padding:0 20px 20px}@media(max-width:900px){.filter-bar{grid-template-columns:repeat(2,minmax(140px,1fr))}.quick-range{grid-column:1/-1}.pagination{justify-content:center}}@media(max-width:620px){header{padding:22px 18px}main{padding:10px}section{padding:16px}.section-title{align-items:flex-start}.filter-bar{grid-template-columns:1fr}.quick-range{grid-column:auto}.quick-range button{flex:1}.log-head{display:none}.log-row{min-width:0;grid-template-columns:1fr 1fr;gap:8px}.log-row time{grid-column:1/-1}.log-row strong,.detail{grid-column:1/-1}.pagination span{min-width:auto}}

.form-error{display:block;margin-top:6px;color:#a22b2b;font-size:.8rem}

.app-footer{margin:2rem auto 1.5rem;padding:0 1rem;text-align:center;color:#666;font-size:.9rem}.app-footer a{color:inherit;text-decoration:underline}
