
:root{
  --brand:#2d78ff;
  --brand2:#49d7ff;
  --ink:#122338;
  --muted:#718397;
  --bg:#f3f6fa;
  --card:#ffffff;
  --line:#e1e8f0;
  --nav:#071426;
  --nav2:#0b2441;
  --good:#18a873;
  --warn:#e8a128;
  --danger:#d95b63;
  --shadow:0 18px 50px rgba(18,35,56,.08);
  --r:18px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,"Pretendard","Noto Sans KR","Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--ink)}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.hidden{display:none!important}
.small{font-size:11px;color:var(--muted)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}

/* LOGIN */
.login-shell{
  min-height:100vh;
  display:grid;
  grid-template-columns:minmax(520px,1.12fr) minmax(420px,.88fr);
  background:
    radial-gradient(circle at 13% 16%,rgba(63,205,255,.17),transparent 27%),
    radial-gradient(circle at 84% 88%,rgba(45,120,255,.18),transparent 33%),
    linear-gradient(135deg,#06111f,#091d35 54%,#0a2b4c);
}
.login-left{position:relative;padding:64px 70px;color:white;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}
.login-left:before{
  content:"";position:absolute;inset:auto -250px -310px auto;width:700px;height:700px;border-radius:50%;
  border:1px solid rgba(255,255,255,.075);
  box-shadow:0 0 0 95px rgba(255,255,255,.022),0 0 0 190px rgba(255,255,255,.013);
}
.login-brand{display:flex;align-items:center;gap:14px;position:relative;z-index:2}
.logo-box{background:white;border-radius:14px;padding:8px 12px;box-shadow:0 18px 44px rgba(0,0,0,.24)}
.logo-box img{display:block;width:104px;height:58px;object-fit:contain}
.login-brand b{display:block;font-size:17px;letter-spacing:.12em}
.login-brand span{display:block;margin-top:5px;color:#8fb9df;font-size:11px;letter-spacing:.06em}
.hero{position:relative;z-index:2;max-width:760px}
.kicker{font-size:11px;letter-spacing:.19em;font-weight:900;text-transform:uppercase;color:#67dcff}
.hero h1{font-size:clamp(48px,5.7vw,82px);line-height:.98;letter-spacing:-.055em;margin:15px 0 22px}
.hero p{font-size:16px;line-height:1.75;color:#b4cae0;max-width:650px}
.hero-features{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:32px}
.hero-feature{padding:16px;border:1px solid rgba(255,255,255,.11);border-radius:16px;background:rgba(255,255,255,.055);backdrop-filter:blur(10px)}
.hero-feature b{display:block;font-size:13px}
.hero-feature span{display:block;margin-top:5px;font-size:10px;line-height:1.45;color:#8fb0cd}
.login-foot{position:relative;z-index:2;font-size:10px;color:#5f87aa;letter-spacing:.04em}

.login-right{display:flex;align-items:center;justify-content:center;padding:42px;background:rgba(255,255,255,.975)}
.login-card{width:min(450px,100%)}
.login-card .kicker{color:var(--brand)}
.login-card h2{font-size:32px;margin:9px 0 8px;letter-spacing:-.04em}
.login-card>p{margin:0 0 28px;color:var(--muted);font-size:13px;line-height:1.65}
.field{margin-bottom:14px}
.field label{display:block;margin-bottom:7px;font-size:10px;color:#667b91;font-weight:900;letter-spacing:.04em;text-transform:uppercase}
.field input,.field select,.field textarea{
  width:100%;padding:12px 13px;border:1px solid #d7e1eb;border-radius:11px;background:white;color:var(--ink);outline:none
}
.field input:focus,.field select:focus,.field textarea:focus{border-color:#7baeff;box-shadow:0 0 0 4px rgba(45,120,255,.10)}
.login-btn{
  width:100%;border:0;border-radius:12px;padding:14px 16px;margin-top:3px;
  color:white;font-weight:900;background:linear-gradient(135deg,#2169ed,#3c9fff);
  box-shadow:0 14px 28px rgba(45,120,255,.24)
}
.demo-hint{text-align:center;margin-top:13px;color:#8999a9;font-size:10px}

/* APP LAYOUT */
.app{min-height:100vh}
.sidebar{
  position:fixed;left:0;top:0;bottom:0;width:260px;z-index:30;
  background:linear-gradient(180deg,var(--nav),var(--nav2) 72%,#0b2b4a);
  color:#b9ccde;padding:18px 14px;display:flex;flex-direction:column;
  box-shadow:16px 0 48px rgba(6,20,38,.12)
}
.side-brand{display:flex;align-items:center;gap:11px;padding:5px 7px 18px;border-bottom:1px solid rgba(255,255,255,.075)}
.side-brand img{width:66px;height:40px;padding:4px;background:#fff;object-fit:contain;border-radius:9px}
.side-brand b{display:block;color:white;font-size:13px}
.side-brand span{display:block;margin-top:3px;color:#7598b8;font-size:9px;letter-spacing:.09em}
.tenant-panel{margin:14px 4px 15px;padding:10px 11px;border-radius:12px;border:1px solid rgba(88,180,255,.13);background:rgba(71,157,255,.075)}
.tenant-panel .ey{font-size:8px;color:#74a6ce;letter-spacing:.16em;text-transform:uppercase;font-weight:900}
.tenant-panel .nm{margin-top:4px;color:white;font-size:12px;font-weight:850}
.nav-title{margin:15px 8px 6px;font-size:8px;letter-spacing:.17em;color:#6587a5;font-weight:900}
.nav-btn{
  width:100%;border:0;background:transparent;color:#adc2d5;padding:9px 11px;border-radius:9px;
  display:flex;align-items:center;gap:10px;text-align:left;font-size:11px;font-weight:750;margin:1px 0
}
.nav-btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-btn:hover{background:rgba(255,255,255,.06);color:#fff}
.nav-btn.active{
  color:#fff;background:linear-gradient(90deg,rgba(45,120,255,.25),rgba(71,215,255,.08));
  box-shadow:inset 3px 0 var(--brand2)
}
.side-bottom{margin-top:auto;padding:14px 7px 2px;border-top:1px solid rgba(255,255,255,.075)}
.profile{display:flex;align-items:center;gap:9px}
.avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#286ff1,#51d4ff);color:white;font-weight:900;font-size:10px}
.profile b{display:block;color:white;font-size:10px}.profile span{display:block;color:#7898b5;font-size:9px;margin-top:2px}

.main{margin-left:260px;min-height:100vh}
.topbar{
  position:sticky;top:0;z-index:20;height:68px;padding:0 27px;background:rgba(255,255,255,.90);
  backdrop-filter:blur(17px);border-bottom:1px solid #dfe7ef;display:flex;align-items:center;justify-content:space-between
}
.top-title .super{font-size:8px;text-transform:uppercase;letter-spacing:.14em;color:#8a9bad;font-weight:900}
.top-title .title{font-size:17px;font-weight:900;margin-top:2px}
.top-actions{display:flex;align-items:center;gap:8px}
.top-actions select,.top-icon,.ghost-btn{
  border:1px solid #dce5ed;background:white;color:#334c64;border-radius:10px;padding:8px 10px;font-size:10px;font-weight:800
}
.top-icon{width:35px;height:35px;padding:0;display:grid;place-items:center}
.content{padding:25px 27px 50px;max-width:1700px;margin:0 auto}
.page{display:none}.page.active{display:block}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}
.page-head h1{font-size:27px;margin:0 0 5px;letter-spacing:-.04em}
.page-head p{margin:0;color:var(--muted);font-size:11px}
.primary-btn{
  border:0;border-radius:10px;padding:10px 14px;background:linear-gradient(135deg,#236cf0,#38a1ff);
  color:white;font-size:10px;font-weight:900;box-shadow:0 10px 22px rgba(45,120,255,.19)
}
.secondary-btn{border:1px solid #dce5ed;border-radius:10px;padding:9px 13px;background:white;color:#40596f;font-size:10px;font-weight:900}
.danger-btn{border:1px solid #f0ccd0;border-radius:10px;padding:9px 13px;background:#fff7f8;color:#b74b56;font-size:10px;font-weight:900}

/* CARDS */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.stat{
  background:var(--card);border:1px solid var(--line);border-radius:16px;padding:17px 18px;
  box-shadow:0 10px 26px rgba(18,35,56,.045);position:relative;overflow:hidden
}
.stat:after{content:"";position:absolute;width:74px;height:74px;border-radius:50%;right:-26px;top:-27px;background:radial-gradient(circle,rgba(45,120,255,.13),transparent 70%)}
.stat .label{font-size:9px;text-transform:uppercase;letter-spacing:.09em;color:#718599;font-weight:900}
.stat .num{font-size:30px;font-weight:950;letter-spacing:-.05em;margin-top:8px}
.stat .sub{font-size:9px;color:#7c8fa2;margin-top:5px}
.grid-2{display:grid;grid-template-columns:1.45fr .9fr;gap:14px;margin-top:14px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.card{
  background:white;border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 30px rgba(18,35,56,.052);overflow:hidden
}
.card-head{padding:14px 16px;border-bottom:1px solid #edf1f5;display:flex;justify-content:space-between;align-items:center}
.card-head b{font-size:11px}.card-head span{font-size:9px;color:#899aaa}
.card-body{padding:15px 16px}
.badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:8px;font-weight:900}
.badge.blue{background:#e7f0ff;color:#2d64c8}.badge.green{background:#e2f7ee;color:#147c59}.badge.amber{background:#fff1d7;color:#9c6717}.badge.gray{background:#edf2f6;color:#687c8e}.badge.red{background:#fde9eb;color:#b84f58}
.vessel-list{display:grid;gap:9px}
.vessel-row{
  display:grid;grid-template-columns:1.25fr .72fr .72fr .58fr;gap:10px;align-items:center;
  padding:12px;border:1px solid #e6edf3;border-radius:12px;background:linear-gradient(180deg,#fff,#fbfdff)
}
.vessel-row strong{font-size:11px}.vessel-row small{display:block;color:#8192a4;font-size:8px;margin-top:3px}
.timebox b{font-size:10px}.timebox span{display:block;color:#8494a5;font-size:8px;margin-top:3px}
.timeline{display:grid;gap:14px}
.timeline-item{display:grid;grid-template-columns:12px 1fr;gap:9px}
.dot{width:8px;height:8px;border-radius:50%;background:var(--brand);margin-top:3px;box-shadow:0 0 0 4px #e6f0ff}
.timeline-item b{font-size:10px}.timeline-item p{margin:3px 0 0;font-size:9px;line-height:1.45;color:#7d8fa1}

.ops-strip{
  margin-top:14px;display:grid;grid-template-columns:1fr 1fr 1fr 1fr;border:1px solid var(--line);
  background:linear-gradient(135deg,#0b1d33,#0c2b4a);border-radius:16px;overflow:hidden;color:white;box-shadow:0 14px 36px rgba(6,28,52,.12)
}
.ops-cell{padding:16px;border-right:1px solid rgba(255,255,255,.08)}.ops-cell:last-child{border-right:0}
.ops-cell .k{font-size:8px;color:#78a6cc;text-transform:uppercase;letter-spacing:.1em;font-weight:900}
.ops-cell .v{margin-top:6px;font-size:13px;font-weight:900}.ops-cell .s{font-size:8px;color:#8eb1cf;margin-top:3px}

.module-card{padding:18px;border:1px solid var(--line);border-radius:15px;background:white;box-shadow:0 10px 26px rgba(18,35,56,.045)}
.module-icon{width:39px;height:39px;border-radius:11px;background:linear-gradient(135deg,#e7f1ff,#e3fbff);display:grid;place-items:center;color:#2d6ed0}
.module-icon svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8}
.module-card h3{font-size:12px;margin:11px 0 5px}.module-card p{font-size:9px;line-height:1.5;color:#7d8fa1;min-height:42px}
.module-card button{border:0;border-radius:8px;background:#eff5fb;color:#335a7e;padding:7px 9px;font-size:9px;font-weight:900}

.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse;font-size:9px}
th{background:#f7f9fc;text-align:left;color:#718397;padding:10px;border-bottom:1px solid #e4ebf2;font-weight:900;white-space:nowrap}
td{padding:11px 10px;border-bottom:1px solid #edf1f5;white-space:nowrap}
tr:hover td{background:#fbfdff}

/* FORMS / SETTINGS */
.form-section{padding:18px}
.form-section h3{font-size:12px;margin:0 0 15px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.form-grid .field{margin:0}
.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:17px}
.brand-preview{display:grid;grid-template-columns:130px 1fr;gap:18px;align-items:center}
.preview-logo{height:82px;border:1px dashed #cbd8e4;border-radius:13px;display:grid;place-items:center;background:#f9fbfd}
.preview-logo img{max-width:105px;max-height:58px;object-fit:contain}

/* CALL AI */
.ai-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ai-console{background:linear-gradient(145deg,#071525,#0b2949);color:#fff;border-radius:16px;padding:19px;min-height:330px;box-shadow:0 16px 40px rgba(5,23,42,.16)}
.ai-status{display:flex;justify-content:space-between;align-items:center}
.pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:#28dc99;box-shadow:0 0 0 6px rgba(40,220,153,.1)}
.wave{height:72px;display:flex;align-items:center;justify-content:center;gap:4px;margin:26px 0}
.wave i{display:block;width:3px;border-radius:4px;background:linear-gradient(#4fe3ff,#3b77ff);animation:wave 1.15s ease-in-out infinite}
.wave i:nth-child(2n){animation-delay:.11s}.wave i:nth-child(3n){animation-delay:.22s}.wave i:nth-child(5n){animation-delay:.33s}
@keyframes wave{0%,100%{height:10px}50%{height:62px}}
.ai-log{padding:11px;border-radius:9px;background:rgba(255,255,255,.045);font-size:9px;color:#98b8d3;line-height:1.8}

/* TENANTS */
.tenant-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.tenant-card{padding:18px;border:1px solid var(--line);background:white;border-radius:16px;box-shadow:0 10px 25px rgba(18,35,56,.045)}
.tenant-head{display:flex;justify-content:space-between;align-items:flex-start}.tenant-logo{width:78px;height:45px;border-radius:10px;border:1px solid #e1e8ef;display:grid;place-items:center;font-weight:950;letter-spacing:-.03em;background:#fafcff}
.tenant-logo img{max-width:68px;max-height:35px;object-fit:contain}.tenant-card h3{font-size:12px;margin:13px 0 4px}.tenant-card p{font-size:9px;color:#7c8fa1;line-height:1.5}
.tenant-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px}.tenant-meta div{padding:9px;background:#f7f9fc;border-radius:9px}.tenant-meta b{display:block;font-size:9px}.tenant-meta span{display:block;font-size:8px;color:#8293a4;margin-top:3px}

/* MODULE IFRAMES */
.module-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.notice{padding:10px 12px;border-radius:10px;background:#eef6ff;border:1px solid #d8eaff;color:#416a8f;font-size:9px}
.iframe-shell{height:calc(100vh - 148px);min-height:720px;border:1px solid #dce6ef;border-radius:15px;overflow:hidden;background:white;box-shadow:var(--shadow)}
.iframe-shell iframe{width:100%;height:100%;border:0}

/* RESPONSIVE */
@media(max-width:1150px){
  .stats{grid-template-columns:repeat(2,1fr)}
  .grid-2,.ai-grid{grid-template-columns:1fr}
  .grid-3,.tenant-cards{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:820px){
  .login-shell{grid-template-columns:1fr}.login-left{display:none}
  .sidebar{width:74px;padding:12px 7px}.side-brand b,.side-brand span,.tenant-panel,.nav-title,.nav-btn span,.side-bottom{display:none}
  .side-brand{justify-content:center;padding-bottom:14px}.side-brand img{width:52px}
  .nav-btn{justify-content:center}.main{margin-left:74px}.topbar{padding:0 13px}.content{padding:17px 13px 35px}
  .grid-3,.tenant-cards,.form-grid{grid-template-columns:1fr}.ops-strip{grid-template-columns:1fr 1fr}
}


/* ===== V2 OFFICE ERP / ELECTRONIC APPROVAL ===== */
.approval-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:14px}
.approval-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:14px}
.approval-detail-card{min-height:470px}
.approval-row-click{cursor:pointer}.approval-row-click:hover td{background:#f4f8ff}
.empty-state{min-height:360px;display:grid;place-items:center;text-align:center;color:#8a9aaa;font-size:11px}
.approval-doc-head{display:flex;justify-content:space-between;gap:15px;padding-bottom:14px;border-bottom:1px solid #e9eef4}
.approval-doc-head h2{font-size:18px;margin:0 0 5px}.approval-doc-head p{font-size:9px;color:#7b8ea1;margin:0}
.doc-value{text-align:right}.doc-value b{font-size:17px}.doc-value span{display:block;margin-top:4px;font-size:8px;color:#7d8fa2}
.approval-body{margin-top:15px;padding:13px;border:1px solid #e5ecf3;border-radius:12px;background:#fbfdff;font-size:10px;line-height:1.7}
.approval-route{display:flex;gap:8px;flex-wrap:wrap;margin:15px 0}
.approval-step{position:relative;min-width:92px;padding:10px;border:1px solid #dfe7ef;background:white;border-radius:11px;text-align:center}
.approval-step.done{background:#effaf5;border-color:#caebdd}.approval-step.current{background:#eef5ff;border-color:#a9c8ff;box-shadow:0 0 0 3px rgba(45,120,255,.07)}.approval-step.rejected{background:#fff0f1;border-color:#f1c7cb}
.approval-step .role{font-size:8px;color:#7e90a2}.approval-step .person{font-size:10px;font-weight:900;margin-top:3px}.approval-step .sign{font:italic 14px "Segoe Script","Brush Script MT",cursive;color:#145aa9;margin-top:6px}.approval-step .when{font-size:7px;color:#8b9aaa;margin-top:3px}
.approval-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:15px}.approve-btn{border:0;border-radius:9px;padding:9px 12px;background:linear-gradient(135deg,#1e9c70,#2cb887);color:#fff;font-size:9px;font-weight:900}.reject-btn{border:1px solid #f0c9ce;border-radius:9px;padding:9px 12px;background:#fff5f6;color:#b84c57;font-size:9px;font-weight:900}.hold-btn{border:1px solid #e2e8ee;border-radius:9px;padding:9px 12px;background:#fff;color:#5d7286;font-size:9px;font-weight:900}
.policy-box{padding:13px;border:1px solid #dfe7ef;border-radius:12px;background:#f8fbfe;color:#647a8f;font-size:10px;line-height:1.7}
.signature-seal{display:inline-flex;min-width:70px;justify-content:center;font:italic 15px "Segoe Script","Brush Script MT",cursive;color:#1b5faa;padding:4px 8px;border-bottom:1px solid #7aa7d5}
.approval-highlight{background:linear-gradient(145deg,#fff,#f5f9ff);border-color:#cfe0ff!important}
@media(max-width:1150px){.approval-layout{grid-template-columns:1fr}.approval-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.approval-summary{grid-template-columns:1fr}.approval-route{flex-direction:column}.approval-step{width:100%}}


/* ===== V3 TENANT BRANDING / WHITE LABEL ===== */
.logo-upload-panel{
  margin-top:16px;padding:13px 14px;border:1px solid #dfe7ef;border-radius:12px;
  background:linear-gradient(180deg,#fbfdff,#f5f9fd);display:flex;align-items:center;
  justify-content:space-between;gap:16px
}
.logo-upload-panel b{display:block;font-size:11px}
.logo-upload-panel span{display:block;font-size:9px;color:#7c8ea0;margin-top:4px}
.logo-upload-actions{display:flex;gap:8px;flex-wrap:wrap}
.file-btn{position:relative;overflow:hidden;display:inline-flex;align-items:center}
.file-btn input{position:absolute;inset:0;opacity:0;cursor:pointer}
.preview-logo>div{font-size:22px}
@media(max-width:760px){.logo-upload-panel{align-items:flex-start;flex-direction:column}}

.brand-asset-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:10px}.brand-asset-card{border:1px solid #dfe7ef;border-radius:12px;padding:12px;background:#fbfdff}.brand-asset-preview{height:70px;border:1px dashed #cbd8e4;border-radius:9px;background:#fff;display:grid;place-items:center;margin-bottom:9px;overflow:hidden}.brand-asset-card>b{display:block;font-size:10px}.brand-asset-card>span{display:block;font-size:8px;line-height:1.45;color:#7c8ea0;margin:4px 0 9px}@media(max-width:900px){.brand-asset-grid{grid-template-columns:1fr}}


/* ===== V5: KOREAN ERP NAV + APPROVAL URGENCY ===== */
.nav-alert-badge{
  margin-left:auto;
  min-width:18px;height:18px;padding:0 5px;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;
  background:#e5484d;color:#fff;font-size:8px;font-weight:950;
  box-shadow:0 0 0 3px rgba(229,72,77,.12);
  font-style:normal;
}
.pending-num.urgent,
.approval-count-urgent{
  color:#df3f46 !important;
}
.pending-stat.has-pending{
  border-color:#f0c5c8;
  box-shadow:0 10px 28px rgba(223,63,70,.09);
}
.pending-stat.has-pending .label{
  color:#bf343b;
}
.pending-stat.has-pending:before{
  content:"결재 필요";
  position:absolute;
  right:14px;top:13px;
  padding:4px 7px;border-radius:999px;
  background:#fff0f1;color:#c53b42;
  font-size:7px;font-weight:950;
  letter-spacing:.04em;
}


/* ===== V6 ERP FORM TOOLBAR ===== */
.erp-head-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  flex-wrap:wrap;
}
.danger-soft{
  color:#b44149 !important;
  border-color:#efc8cc !important;
  background:#fff8f8 !important;
}
.print-btn{
  color:#1e5e96 !important;
  border-color:#c7dcef !important;
  background:#f6fbff !important;
}
.preview-head-actions{
  display:flex;
  align-items:center;
  gap:10px;
}
.mini-print-btn{
  border:1px solid #d8e4ef;
  background:#fff;
  color:#325c7d;
  border-radius:8px;
  padding:5px 8px;
  font-size:8px;
  font-weight:900;
}
@media(max-width:900px){
  .erp-head-actions{justify-content:flex-start}
}


/* ===== V7 COMPACT + SCROLLABLE SIDEBAR =====
   24/27인치 모니터에서도 메뉴를 한눈에 보기 쉽도록 세로 밀도 조정 */
.sidebar{
  padding:10px 11px 9px !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
  scrollbar-width:thin;
  scrollbar-color:rgba(135,176,210,.42) transparent;
  overscroll-behavior:contain;
}
.sidebar::-webkit-scrollbar{
  width:6px;
}
.sidebar::-webkit-scrollbar-track{
  background:transparent;
}
.sidebar::-webkit-scrollbar-thumb{
  background:rgba(135,176,210,.34);
  border-radius:999px;
}
.sidebar::-webkit-scrollbar-thumb:hover{
  background:rgba(135,176,210,.56);
}

.side-brand{
  gap:9px !important;
  padding:3px 6px 10px !important;
}
.side-brand img{
  width:60px !important;
  height:36px !important;
  border-radius:8px !important;
}
.side-brand b{
  font-size:12px !important;
  line-height:1.15 !important;
}
.side-brand span{
  margin-top:2px !important;
  font-size:8px !important;
  line-height:1.1 !important;
}

.tenant-panel{
  margin:8px 3px 8px !important;
  padding:8px 9px !important;
  border-radius:10px !important;
}
.tenant-panel .ey{
  font-size:7px !important;
  line-height:1.05 !important;
}
.tenant-panel .nm{
  margin-top:3px !important;
  font-size:10.5px !important;
  line-height:1.12 !important;
}

.nav-title{
  margin:8px 7px 3px !important;
  font-size:7px !important;
  line-height:1 !important;
  letter-spacing:.15em !important;
}
.nav-btn{
  min-height:30px !important;
  padding:6px 9px !important;
  border-radius:8px !important;
  gap:8px !important;
  font-size:10px !important;
  line-height:1.1 !important;
  margin:0 !important;
}
.nav-btn svg{
  width:14px !important;
  height:14px !important;
  flex:0 0 14px !important;
}
.nav-btn span{
  line-height:1.1 !important;
  white-space:nowrap;
}

.nav-alert-badge{
  min-width:16px !important;
  height:16px !important;
  padding:0 4px !important;
  font-size:7px !important;
}

.side-bottom{
  margin-top:8px !important;
  padding:8px 6px 2px !important;
  flex:0 0 auto;
}
.profile{
  gap:7px !important;
}
.avatar{
  width:28px !important;
  height:28px !important;
  font-size:9px !important;
}
.profile b{
  font-size:9px !important;
  line-height:1.1 !important;
}
.profile span{
  font-size:8px !important;
  line-height:1.1 !important;
  margin-top:1px !important;
}

/* 낮은 세로 해상도(예: 1080px에서 브라우저 상단바가 큰 경우) 추가 압축 */
@media (max-height: 900px) and (min-width: 821px){
  .sidebar{padding-top:8px !important;padding-bottom:7px !important}
  .side-brand{padding-bottom:8px !important}
  .tenant-panel{margin-top:6px !important;margin-bottom:6px !important;padding:7px 8px !important}
  .nav-title{margin-top:6px !important;margin-bottom:2px !important}
  .nav-btn{min-height:28px !important;padding:5px 8px !important;font-size:9.7px !important}
  .side-bottom{margin-top:6px !important;padding-top:6px !important}
}

/* 820px 이하 기존 모바일 축소 동작에서는 스크롤바를 감춤 */
@media(max-width:820px){
  .sidebar{scrollbar-width:none}
  .sidebar::-webkit-scrollbar{display:none}
}


/* =====================================================================
   V8 PREMIUM EXECUTIVE DESIGN
   - Sidebar 글자 크기 복원/확대
   - Deep Navy + Champagne Gold
   - 과한 장식이 아닌 고급 호텔/금융 ERP 수준의 절제된 황실 문양
   ===================================================================== */
:root{
  --lux-gold:#c8a24a;
  --lux-gold-2:#e5cc86;
  --lux-gold-soft:#f7efd8;
  --lux-ink:#0c1c31;
  --lux-navy:#071526;
  --lux-navy-2:#0a2542;
  --lux-cream:#f7f5ef;
  --lux-line:#e5dfcf;
  --lux-shadow:0 18px 44px rgba(12,28,49,.10);
}

/* 전체 배경: 순백색보다 따뜻한 고급 ERP 톤 */
html,body{
  background:
    radial-gradient(circle at 96% 4%,rgba(200,162,74,.065),transparent 25%),
    radial-gradient(circle at 4% 100%,rgba(45,120,255,.035),transparent 22%),
    linear-gradient(180deg,#f8fafc 0%,#f4f3ee 100%) !important;
}
.main{
  background:
    linear-gradient(rgba(255,255,255,.18),rgba(255,255,255,.18)),
    radial-gradient(circle at 100% 0,rgba(200,162,74,.055),transparent 24%);
}

/* -------------------------------------------------
   SIDEBAR: 글자는 키우되 세로 높이는 Compact 유지
   ------------------------------------------------- */
.sidebar{
  background:
    linear-gradient(180deg,rgba(255,255,255,.018),transparent 15%),
    radial-gradient(circle at 0 0,rgba(200,162,74,.085),transparent 27%),
    linear-gradient(180deg,#061221 0%,#08203a 58%,#092b4a 100%) !important;
  border-right:1px solid rgba(229,204,134,.24);
  box-shadow:18px 0 44px rgba(3,14,28,.16) !important;
}

/* 아주 은은한 황실 격자/문양 */
.sidebar:before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.15;
  background:
    linear-gradient(45deg,transparent 48%,rgba(229,204,134,.16) 49%,rgba(229,204,134,.16) 50%,transparent 51%),
    linear-gradient(-45deg,transparent 48%,rgba(229,204,134,.10) 49%,rgba(229,204,134,.10) 50%,transparent 51%);
  background-size:52px 52px;
  mask-image:linear-gradient(to bottom,rgba(0,0,0,.55),transparent 72%);
}
.sidebar>*{position:relative;z-index:1}

.side-brand{
  border-bottom:1px solid rgba(229,204,134,.22) !important;
}
.side-brand img{
  background:linear-gradient(180deg,#fff,#faf7ee) !important;
  border:1px solid rgba(229,204,134,.7);
  box-shadow:0 6px 16px rgba(0,0,0,.14), inset 0 0 0 1px rgba(255,255,255,.8);
}
.side-brand b{
  font-size:13.2px !important;
  letter-spacing:.01em;
  text-shadow:0 1px 0 rgba(0,0,0,.18);
}
.side-brand span{
  font-size:9.2px !important;
  color:#93abc1 !important;
  letter-spacing:.085em !important;
}

.tenant-panel{
  border:1px solid rgba(229,204,134,.24) !important;
  background:
    linear-gradient(135deg,rgba(200,162,74,.095),rgba(49,118,185,.07)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
}
.tenant-panel .ey{
  font-size:8.2px !important;
  color:#c2a965 !important;
}
.tenant-panel .nm{
  font-size:11.5px !important;
  color:#fff !important;
}

/* 그룹명도 너무 작지 않게 */
.nav-title{
  margin:7px 7px 3px !important;
  font-size:8.4px !important;
  line-height:1.05 !important;
  color:#7897b4 !important;
  letter-spacing:.13em !important;
}

/* 핵심: 메뉴 글자 11~12px 수준으로 복원 */
.nav-btn{
  min-height:30px !important;
  padding:5px 9px !important;
  gap:8px !important;
  font-size:11.7px !important;
  line-height:1.08 !important;
  font-weight:760 !important;
  color:#c1d1df !important;
  border:1px solid transparent !important;
  transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease;
}
.nav-btn svg{
  width:15px !important;
  height:15px !important;
  flex:0 0 15px !important;
}
.nav-btn:hover{
  color:#fff !important;
  background:linear-gradient(90deg,rgba(255,255,255,.065),rgba(200,162,74,.045)) !important;
  border-color:rgba(229,204,134,.12) !important;
  transform:translateX(1px);
}
.nav-btn.active{
  color:#fff !important;
  background:
    linear-gradient(90deg,rgba(45,120,255,.20),rgba(200,162,74,.11)) !important;
  border-color:rgba(229,204,134,.48) !important;
  box-shadow:
    inset 3px 0 var(--lux-gold),
    0 5px 14px rgba(0,0,0,.10) !important;
}
.nav-btn.active:after{
  content:"";
  margin-left:auto;
  width:5px;height:5px;border-radius:50%;
  background:var(--lux-gold-2);
  box-shadow:0 0 0 3px rgba(229,204,134,.10);
}
.nav-btn.active .nav-alert-badge{margin-left:auto}
.side-bottom{
  border-top:1px solid rgba(229,204,134,.20) !important;
}
.profile b{font-size:10.3px !important}
.profile span{font-size:8.7px !important}
.avatar{
  background:linear-gradient(145deg,#2a7af7,#1c5fb8) !important;
  border:1px solid rgba(229,204,134,.45);
  box-shadow:0 4px 10px rgba(0,0,0,.16);
}

/* 세로 높이가 낮아도 글자 크기는 줄이지 않고 padding만 축소 */
@media (max-height:900px) and (min-width:821px){
  .nav-btn{
    min-height:28px !important;
    padding:4px 8px !important;
    font-size:11.4px !important;
  }
  .nav-title{margin-top:5px !important}
  .side-brand b{font-size:12.8px !important}
}

/* -------------------------------------------------
   TOP BAR: 금색 헤어라인 + 정제된 컨트롤
   ------------------------------------------------- */
.topbar{
  background:rgba(255,255,255,.94) !important;
  border-bottom:1px solid #ded8c9 !important;
  box-shadow:0 5px 18px rgba(12,28,49,.045);
}
.topbar:after{
  content:"";
  position:absolute;
  left:27px;right:27px;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(200,162,74,.55),transparent);
}
.top-title .super{
  color:#a58a4b !important;
  font-size:8.5px !important;
}
.top-title .title{
  color:#15263a;
  font-size:18px !important;
}
.top-actions select,.top-icon,.ghost-btn{
  border-color:#ddd6c5 !important;
  background:linear-gradient(180deg,#fff,#fbfaf7) !important;
  box-shadow:0 3px 10px rgba(12,28,49,.035);
}
.top-actions select:hover,.top-icon:hover,.ghost-btn:hover{
  border-color:#c7a85a !important;
}

/* -------------------------------------------------
   PAGE HEADINGS
   ------------------------------------------------- */
.page-head{
  position:relative;
  padding-bottom:10px;
}
.page-head:after{
  content:"";
  position:absolute;
  left:0;bottom:0;
  width:92px;height:2px;
  background:linear-gradient(90deg,var(--lux-gold),rgba(200,162,74,.05));
}
.page-head h1{
  color:#102239 !important;
  font-size:29px !important;
  letter-spacing:-.035em !important;
}
.page-head p{font-size:11.5px !important}

/* -------------------------------------------------
   BUTTONS: 고급 금속감은 아주 절제해서
   ------------------------------------------------- */
.primary-btn{
  border:1px solid rgba(255,255,255,.22) !important;
  background:linear-gradient(135deg,#1f68e9,#347fd8) !important;
  box-shadow:
    0 10px 22px rgba(31,104,233,.18),
    inset 0 1px 0 rgba(255,255,255,.22) !important;
}
.primary-btn:hover{filter:brightness(1.04)}
.secondary-btn{
  border-color:#ddd5c1 !important;
  background:linear-gradient(180deg,#fff,#fbf9f4) !important;
}
.secondary-btn:hover{border-color:#c7a85a !important}

/* -------------------------------------------------
   CARDS: Ivory / gold hairline / premium shadows
   ------------------------------------------------- */
.card,.stat,.module-card,.tenant-card{
  border-color:#e3ddce !important;
  background:
    linear-gradient(180deg,rgba(255,255,255,.995),rgba(253,252,249,.995)) !important;
  box-shadow:
    0 13px 32px rgba(12,28,49,.065),
    inset 0 1px 0 rgba(255,255,255,.9) !important;
}
.card{
  position:relative;
}
.card:before,.stat:before,.module-card:before,.tenant-card:before{
  content:"";
  position:absolute;
  left:16px;right:16px;top:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(200,162,74,.34),transparent);
  pointer-events:none;
}
.card-head{
  background:linear-gradient(180deg,#fff,#fcfbf7);
  border-bottom-color:#ece6d9 !important;
}
.card-head b{
  font-size:11.5px !important;
  letter-spacing:.02em;
  color:#182a3e;
}
.card-head span{font-size:9.3px !important}

.stat{
  border-top:2px solid rgba(200,162,74,.55) !important;
}
.stat:after{
  background:
    radial-gradient(circle,rgba(200,162,74,.16),transparent 68%) !important;
}
.stat .label{
  color:#8e7b4c !important;
  font-size:9.3px !important;
}
.stat .num{
  color:#102239;
  text-shadow:0 1px 0 white;
}
.stat .sub{font-size:9.3px !important}

/* Dashboard central dark strip */
.ops-strip{
  position:relative;
  background:
    radial-gradient(circle at 0 0,rgba(200,162,74,.12),transparent 24%),
    linear-gradient(135deg,#07182a,#0b3153) !important;
  border-color:rgba(200,162,74,.33) !important;
  box-shadow:
    0 16px 36px rgba(5,22,39,.16),
    inset 0 1px 0 rgba(255,255,255,.04) !important;
}
.ops-strip:before{
  content:"";
  position:absolute;left:0;right:0;top:0;height:2px;
  background:linear-gradient(90deg,transparent,var(--lux-gold),transparent);
}
.ops-cell{border-right-color:rgba(229,204,134,.12) !important}
.ops-cell .k{color:#c9b371 !important;font-size:8.6px !important}
.ops-cell .v{font-size:13.5px !important}
.ops-cell .s{font-size:8.7px !important}

/* Vessel list refinement */
.vessel-row{
  border-color:#e5dfd2 !important;
  background:linear-gradient(180deg,#fff,#fdfcf9) !important;
  transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;
}
.vessel-row:hover{
  transform:translateY(-1px);
  border-color:#d6c69d !important;
  box-shadow:0 7px 18px rgba(12,28,49,.055);
}
.vessel-row strong{font-size:11.5px !important}
.vessel-row small{font-size:8.6px !important}
.timebox b{font-size:10.5px !important}
.timebox span{font-size:8.5px !important}

/* Timeline */
.dot{
  background:var(--lux-gold) !important;
  box-shadow:0 0 0 4px rgba(200,162,74,.12) !important;
}
.timeline-item b{font-size:10.5px !important}
.timeline-item p{font-size:9px !important}

/* Module cards */
.module-card{
  position:relative;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.module-card:hover{
  transform:translateY(-2px);
  border-color:#d7c79d !important;
  box-shadow:0 16px 34px rgba(12,28,49,.09) !important;
}
.module-icon{
  background:
    linear-gradient(145deg,#fff9e9,#f4e6bd) !important;
  color:#9f7c27 !important;
  border:1px solid #e8d6a2;
}
.module-card h3{font-size:12.5px !important;color:#152a40}
.module-card p{font-size:9.5px !important}

/* Table refinement */
table{font-size:9.5px !important}
th{
  background:linear-gradient(180deg,#faf9f5,#f4f1e9) !important;
  color:#715f36 !important;
  border-bottom-color:#ded7c8 !important;
}
td{border-bottom-color:#eee9df !important}
tr:hover td{background:#fffdf7 !important}

/* Forms / settings */
.field label{
  color:#715f36 !important;
  font-size:10.3px !important;
}
.field input,.field select,.field textarea{
  border-color:#ddd6c7 !important;
  background:linear-gradient(180deg,#fff,#fefdfb) !important;
}
.field input:focus,.field select:focus,.field textarea:focus{
  border-color:#c6a455 !important;
  box-shadow:0 0 0 4px rgba(200,162,74,.105) !important;
}
.preview-logo{
  border-color:#d7cba9 !important;
  background:
    linear-gradient(135deg,#fff,#fbf7eb) !important;
}

/* White-label settings upload cards */
.logo-upload-panel{
  border-color:#ded5bd !important;
  background:linear-gradient(180deg,#fffdf7,#faf6eb) !important;
}

/* Iframe shell: actual modules also framed as one premium product */
.iframe-shell{
  border-color:#d9cfb6 !important;
  box-shadow:
    0 18px 42px rgba(12,28,49,.09),
    0 0 0 1px rgba(200,162,74,.04) !important;
}
.notice{
  border-color:#ddcfaa !important;
  background:linear-gradient(180deg,#fffaf0,#f8f1df) !important;
  color:#6e5a2c !important;
}

/* Approval / ERP */
.approval-highlight{
  background:
    linear-gradient(145deg,#fff,#fffaf0) !important;
  border-color:#dccb9f !important;
}
.approval-step.current{
  border-color:#d0b15e !important;
  background:#fff9e9 !important;
  box-shadow:0 0 0 3px rgba(200,162,74,.08) !important;
}
.approval-step.done{
  border-color:#c9ddcf !important;
  background:#f2fbf6 !important;
}

/* Footer user info stays legible */
.profile b{color:#fff !important}
.profile span{color:#8fa7bd !important}

/* -------------------------------------------------
   LOGIN: refined executive / maritime luxury
   ------------------------------------------------- */
.login-shell{
  background:
    radial-gradient(circle at 12% 15%,rgba(200,162,74,.17),transparent 26%),
    radial-gradient(circle at 78% 84%,rgba(39,109,197,.13),transparent 31%),
    linear-gradient(135deg,#05101c,#081d33 56%,#0a2c4d) !important;
}
.login-left:after{
  content:"";
  position:absolute;
  left:34px;right:34px;top:34px;bottom:34px;
  border:1px solid rgba(229,204,134,.18);
  pointer-events:none;
}
.login-left:before{
  border-color:rgba(229,204,134,.10) !important;
  box-shadow:
    0 0 0 95px rgba(200,162,74,.018),
    0 0 0 190px rgba(200,162,74,.010) !important;
}
.login-brand .logo-box{
  border:1px solid rgba(229,204,134,.7);
}
.login-brand b{color:#f7f2e5}
.login-brand span{color:#9fb4c8}
.kicker{color:#d6b75d !important}
.hero h1{
  font-family:Georgia,"Times New Roman",serif;
  font-weight:700;
  letter-spacing:-.035em !important;
}
.hero-feature{
  border-color:rgba(229,204,134,.16) !important;
  background:linear-gradient(135deg,rgba(255,255,255,.055),rgba(200,162,74,.035)) !important;
}
.login-btn{
  background:linear-gradient(135deg,#184d8a,#276fc4) !important;
  border:1px solid rgba(229,204,134,.38) !important;
}

/* Small screens: premium 유지 */
@media(max-width:820px){
  .nav-btn{font-size:11px !important}
}


/* v10.1 Tenant / User Provisioning */
.tenant-card{position:relative;transition:.18s ease}.tenant-card.tenant-selected{border-color:rgba(176,133,42,.55);box-shadow:0 14px 34px rgba(20,35,54,.09),inset 0 0 0 1px rgba(176,133,42,.12)}
.tenant-card-actions{display:flex;gap:8px;margin-top:13px;padding-top:12px;border-top:1px solid var(--line)}
.secondary-btn.mini{padding:8px 10px;font-size:9px;min-height:32px;flex:1}
.saas-modal{position:fixed;inset:0;z-index:5000;background:rgba(5,18,32,.64);backdrop-filter:blur(5px);display:none;align-items:center;justify-content:center;padding:24px}
.saas-modal.open{display:flex}.saas-modal-card{width:min(680px,96vw);max-height:92vh;overflow:auto;background:#fff;border:1px solid rgba(190,151,61,.4);border-radius:18px;box-shadow:0 32px 80px rgba(3,18,33,.32)}
.saas-modal-card.wide{width:min(880px,96vw)}
.saas-modal-head{display:flex;justify-content:space-between;gap:20px;padding:22px 24px 16px;border-bottom:1px solid #e9edf2;background:linear-gradient(180deg,#fffdf8,#fff)}
.saas-modal-head h2{margin:3px 0 5px;font-size:22px;letter-spacing:-.04em;color:#102840}.saas-modal-head p{margin:0;color:#718397;font-size:10px}.modal-kicker{font-size:8px;font-weight:900;letter-spacing:.18em;color:#a77c24}
.modal-close{width:34px;height:34px;border-radius:10px;border:1px solid #dce3ea;background:#fff;font-size:24px;line-height:1;color:#51677b;cursor:pointer}
.modal-section-title{padding:16px 24px 0;font-size:9px;letter-spacing:.13em;font-weight:950;color:#9b7426;text-transform:uppercase}
.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:13px 24px 4px}.modal-grid .span-2{grid-column:1/-1}
.modal-grid .field label{font-size:8px;font-weight:900;letter-spacing:.08em;color:#53697d}.modal-grid input,.modal-grid select{width:100%;box-sizing:border-box}
.input-suffix{display:flex;align-items:center;border:1px solid #d9e0e7;border-radius:10px;overflow:hidden;background:#fff}.input-suffix input{border:0!important;border-radius:0!important}.input-suffix span{padding:0 12px;color:#8494a3;font-size:9px;white-space:nowrap;border-left:1px solid #e6ebef;background:#f8fafc;height:40px;display:flex;align-items:center}
.modal-foot{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:17px 24px 22px;margin-top:12px;border-top:1px solid #e9edf2;background:#fbfcfd}.modal-foot>span{font-size:9px;color:#8191a0}.modal-foot>div{display:flex;gap:8px}
@media(max-width:760px){.modal-grid{grid-template-columns:1fr}.modal-grid .span-2{grid-column:auto}.modal-foot{align-items:flex-start;flex-direction:column}.saas-modal{padding:10px}}
