:root{--bg:#f5f6fa;--card:#fff;--ink:#1f2533;--muted:#8b94a7;--accent:#5b6ef5;--accent2:#7c4dff;--line:#eceef3}
*{box-sizing:border-box}
body{margin:0;font-family:Pretendard,"Malgun Gothic",sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}
a{text-decoration:none}
.app{display:flex;min-height:100vh}
/* [2026-08-13] 좌메뉴 흰색 전환(직원요구·구앱색 #fff/#171717 기준). 남색 원복하려면 아래 4줄 주석 참고
   .sidebar{...background:linear-gradient(180deg,#1b2030,#232a3d);color:#cfd4e2...(border-right 제거)}
   .brand{color:#fff}  .sidebar nav a{color:#aab2c5}  .sidebar nav a:hover{background:rgba(255,255,255,.06);color:#fff} */
.sidebar{width:230px;background:#fff;color:#171717;position:fixed;top:0;bottom:0;left:0;padding:22px 0;border-right:1px solid var(--line)}
.brand{font-size:18px;font-weight:700;color:#171717;padding:0 24px 22px;display:flex;align-items:center;gap:8px}
.sidebar nav{display:flex;flex-direction:column;gap:3px;padding:0 12px}
.sidebar nav a{display:flex;align-items:center;gap:10px;color:#171717;padding:11px 14px;border-radius:10px;font-size:14.5px;transition:.15s}
.sidebar nav a:hover{background:#f0f2f7;color:#171717}
.sidebar nav a.active{background:linear-gradient(90deg,var(--accent),var(--accent2));color:#fff;box-shadow:0 5px 14px rgba(91,110,245,.4)}
.main{flex:1;margin-left:230px;min-width:0;max-width:calc(100vw - 230px)}
.topbar{background:#fff;height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.topbar .page-title{font-size:17px;font-weight:600}
.topbar .user{font-size:13.5px;color:var(--muted);display:flex;align-items:center;gap:10px}
.badge{background:#eef0fe;color:var(--accent);padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600}
.topbar .user a{color:var(--muted)}.topbar .user a:hover{color:var(--accent)}
.content{padding:28px}
h2{font-size:18px;margin:0 0 18px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px;margin-bottom:28px}
.card{background:var(--card);border-radius:14px;padding:22px;box-shadow:0 2px 12px rgba(20,30,60,.05);display:flex;align-items:center;gap:16px}
.card .ico{width:50px;height:50px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:23px;background:#eef0fe;flex-shrink:0}
.card .num{font-size:27px;font-weight:700;line-height:1}.card .label{color:var(--muted);font-size:13px;margin-top:6px}
.tablewrap{background:#fff;border-radius:14px;box-shadow:0 2px 12px rgba(20,30,60,.05);overflow:hidden}
.tablebar{padding:14px 18px;font-weight:600;font-size:14px;border-bottom:1px solid var(--line)}
.tablebar small{color:var(--muted);font-weight:400;margin-left:6px}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
th{background:#fafbfd;color:var(--muted);font-weight:600;font-size:12px}
tbody tr:last-child td{border-bottom:0} tbody tr:hover{background:#fafbff}
.note{color:var(--muted);font-size:12.5px;margin-top:16px}
.login-bg{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#5b6ef5,#7c4dff)}
.login-box{width:360px;background:#fff;padding:40px 34px;border-radius:18px;box-shadow:0 22px 55px rgba(40,30,90,.28)}
.lb-brand{text-align:center;font-size:23px;font-weight:700;margin-bottom:3px}
.lb-sub{text-align:center;color:var(--muted);font-size:13px;margin-bottom:26px}
.login-box input{width:100%;padding:13px 14px;margin-bottom:12px;border:1.5px solid #e3e6ee;border-radius:10px;font-size:14px;outline:none;transition:.15s}
.login-box input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,110,245,.15)}
.login-box button{width:100%;padding:14px;background:linear-gradient(90deg,var(--accent),var(--accent2));color:#fff;border:0;border-radius:10px;cursor:pointer;font-size:15px;font-weight:600;margin-top:4px}
.login-box button:hover{opacity:.93}
.err{background:#fdecea;color:#c0392b;font-size:13px;padding:11px;border-radius:9px;margin-bottom:14px;text-align:center}
.navtoggle{display:none;background:none;border:0;font-size:23px;line-height:1;cursor:pointer;color:var(--ink);padding:4px 6px;border-radius:8px}
.navtoggle:hover{background:#f0f1f6}
.backdrop{display:none;position:fixed;inset:0;background:rgba(15,20,40,.45);z-index:8;backdrop-filter:blur(1px)}
@media(max-width:820px){
  .navtoggle{display:block}
  .sidebar{transform:translateX(-100%);transition:transform .26s cubic-bezier(.4,0,.2,1);width:240px;z-index:9}
  .app.nav-open .sidebar{transform:translateX(0);box-shadow:0 0 60px rgba(0,0,0,.4)}
  .app.nav-open .backdrop{display:block}
  .brand span,.sidebar nav a span{display:inline}
  .sidebar nav a{padding:13px 16px;font-size:15.5px}
  .main{margin-left:0}
  .content{padding:14px}
  .topbar{padding:0 12px}.topbar .page-title{font-size:15px}
  .topbar .user{font-size:12px;gap:6px}.topbar .user .badge{display:none}
  [style*="grid-template-columns"]{grid-template-columns:1fr !important}
  table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}
  h2{font-size:16px}
}

.ovl{display:none;position:fixed;inset:0;background:rgba(15,20,40,.62);z-index:50;align-items:center;justify-content:center;flex-direction:column;color:#fff}
.ovl.on{display:flex}
.spin{width:54px;height:54px;border:5px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.ovlmsg{margin-top:20px;font-size:16px;font-weight:600;text-align:center;padding:0 20px}
.ovlsub{margin-top:6px;font-size:13px;opacity:.8}

/* 반응형 넘침 차단 (Phase48) */
html,body{overflow-x:hidden;max-width:100%}
.app{max-width:100vw}
@media(max-width:820px){
  .main{max-width:100vw;overflow-x:hidden}
  .content{overflow-x:hidden}
  .content a{overflow-wrap:anywhere;word-break:break-word}
  .content [style*="display:flex"]{flex-wrap:wrap;min-width:0}
  .content [style*="white-space:nowrap"]{white-space:normal !important}
  td [style*="white-space:nowrap"]{white-space:nowrap !important}
  .topbar .user b{max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}
}
/* Phase49: 그리드 자연 reflow — 태블릿 경계/가로스크롤 해결 */
@media(max-width:1024px){
  .content [style*="grid-template-columns"]{grid-template-columns:repeat(auto-fit,minmax(250px,1fr)) !important;gap:14px !important}
}
@media(max-width:560px){
  .content [style*="grid-template-columns"]{grid-template-columns:1fr !important}
}
/* Phase50: 태블릿 테이블 스크롤 + 카드 상단정렬(삐뚤 방지) */
@media(max-width:1024px){
  .content table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}
  .content [style*="grid-template-columns"]{align-items:start !important}
}
/* Phase51: 테이블 카드형 변환(모바일) + 템플릿 masonry */
.masonry{columns:2;column-gap:16px}
.masonry > div{break-inside:avoid;width:100%;margin-bottom:16px;display:inline-block}
@media(max-width:980px){
  .masonry{columns:1}
  .content thead{display:none}
  .content table,.content tbody,.content tr,.content td{display:block;width:auto}
  .content table{white-space:normal;overflow:visible}
  .content tr{background:#fff;border:1px solid #eef0f5;border-radius:13px;margin:0 0 11px;padding:5px 3px;box-shadow:0 2px 8px rgba(20,30,60,.06)}
  .content td{border:0 !important;padding:7px 16px !important;white-space:normal !important;text-align:left !important;font-size:14px}
  .content td:first-child{font-weight:700;font-size:15px;padding-top:12px !important;color:#1f2533}
  .content td:empty{display:none}
  .content tr td form{display:inline-block;margin-top:4px}
}
/* Phase52: 카드 타일링(격자) — 허함 방지 */
@media(max-width:980px){
  .content tbody{display:grid !important;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;align-items:start}
  .content tr{margin:0 !important;height:100%}
}
/* Phase53: 카드 라벨 */
@media(max-width:980px){
  .ctab td{display:flex !important;justify-content:space-between;gap:12px;align-items:baseline}
  .ctab td::before{color:#8b94a7;font-weight:600;font-size:12px;flex-shrink:0}
  .ctab td:first-child{display:block !important;font-weight:700;font-size:15px;border-bottom:1px solid #f0f2f7;padding-bottom:9px !important;margin-bottom:2px}
  .ct-users td:nth-child(2)::before{content:"이름"}
  .ct-users td:nth-child(3)::before{content:"이메일"}
  .ct-users td:nth-child(4)::before{content:"권한"}
  .ct-users td:nth-child(5)::before{content:"상태"}
  .ct-users td:nth-child(6)::before{content:"가입일"}
  .ct-companies td:nth-child(2)::before{content:"업체명"}
  .ct-companies td:nth-child(3)::before{content:"대표자"}
  .ct-companies td:nth-child(4)::before{content:"업종"}
  .ct-companies td:nth-child(5)::before{content:"지역"}
  .ct-companies td:nth-child(6)::before{content:"지점"}
  .ct-companies td:nth-child(7)::before{content:"주소"}
  .ct-companies td:nth-child(8)::before{content:"사업자번호"}
  .ct-companies td:nth-child(9)::before{content:"사이트수"}
  .ct-companies td:nth-child(10)::before{content:"대표번호"}
  .ct-companies td:nth-child(11)::before{content:"등록일"}
  .ct-histories td:nth-child(2)::before{content:"업체"}
  .ct-histories td:nth-child(3)::before{content:"타입"}
  .ct-histories td:nth-child(4)::before{content:"AI"}
  .ct-histories td:nth-child(5)::before{content:"생성방식"}
  .ct-histories td:nth-child(6)::before{content:"상태"}
  .ct-histories td:nth-child(7)::before{content:"만든사람"}
  .ct-histories td:nth-child(8)::before{content:"생성일"}
  .ct-sites td:nth-child(2)::before{content:"업체"}
  .ct-sites td:nth-child(3)::before{content:"생성방식"}
  .ct-sites td:nth-child(4)::before{content:"지역"}
  .ct-sites td:nth-child(5)::before{content:"AI"}
  .ct-sites td:nth-child(6)::before{content:"상태"}
  .ct-sites td:nth-child(7)::before{content:"배포일"}
  .ct-sites td:nth-child(8)::before{content:"만든사람"}
  .ct-sites td:nth-child(9)::before{content:"배포자"}
  .ct-sites td:nth-child(10)::before{content:"URL"}
}
/* Phase54: 빈 값 칸 숨김(라벨만 뜨는 거 방지) */
@media(max-width:980px){ .ctab td:empty{display:none !important} }
/* Phase55: 목록 테이블 가로스크롤(viewport 캡) */
.scrollbox{max-width:calc(100vw - 290px)}
@media(max-width:820px){.scrollbox{max-width:calc(100vw - 30px)}}

/* Phase56: 목록 테이블을 화면폭에 강제로 맞춤(줄바꿈) — 가로넘침 원천차단 */
.scrollbox table{table-layout:fixed;width:100%}
.scrollbox table th,.scrollbox table td{white-space:normal !important;word-break:break-word;overflow-wrap:anywhere;vertical-align:top;font-size:12px;padding:8px 8px}
.scrollbox table td a{word-break:break-all}
