body.dw-role-route{background:#f4f7fb;color:#15233b}
body.dw-role-route>#splash,body.dw-role-route>#mainApp,body.dw-role-route>#leaderGoBtn,body.dw-role-route>#adminGoBtn{display:none!important}
.role-shell{width:min(1180px,100%);margin:0 auto;min-height:100vh;padding:18px;box-sizing:border-box}
.role-shell__head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;background:#102a4c;color:#fff;border-radius:14px}
.role-shell__head h1{font-size:clamp(22px,3vw,32px);margin:0}.role-shell__head p{margin:5px 0 0;color:#cbd9ea}
.role-shell__badge{border:1px solid #90add0;border-radius:999px;padding:7px 11px;white-space:nowrap;font-weight:800}
.role-shell__nav{display:flex;gap:8px;overflow-x:auto;padding:14px 0}.role-shell button,.role-shell input,.role-shell select,.role-shell textarea{font:inherit}
.role-shell button{min-height:44px;border:1px solid #b8c5d5;border-radius:9px;background:#fff;color:#15233b;padding:9px 14px;font-weight:750;cursor:pointer}
.role-shell button:focus-visible,.role-shell input:focus-visible,.role-shell select:focus-visible,.role-shell textarea:focus-visible{outline:3px solid #2c7be5;outline-offset:2px}
.role-shell button[aria-current="page"],.role-shell .role-primary{background:#185fa8;color:#fff;border-color:#185fa8}.role-shell button:disabled{opacity:.55;cursor:not-allowed}
.role-panel{background:#fff;border:1px solid #d8e0ea;border-radius:14px;padding:20px;box-shadow:0 5px 20px rgba(16,42,76,.06);overflow-wrap:anywhere}
.role-panel h2{margin:0 0 8px;font-size:21px}.role-fields{display:grid;grid-template-columns:1fr 130px auto;gap:10px;align-items:end;margin:18px 0}.role-field{display:grid;gap:6px;font-weight:700}.role-field input,.role-field select,.role-field textarea{width:100%;box-sizing:border-box;min-height:44px;border:1px solid #aebdd0;border-radius:8px;padding:9px;background:#fff;color:#15233b}
.role-field textarea{min-height:190px;resize:vertical}.role-table-wrap{overflow:auto;max-width:100%}.role-table{border-collapse:collapse;width:100%;min-width:620px}.role-table th,.role-table td{border-bottom:1px solid #dce3ec;padding:10px;text-align:left}.role-status{min-height:24px;padding:10px 0;font-weight:700}.role-status[data-state="error"]{color:#a51d2d}.role-status[data-state="done"]{color:#176b3a}
.role-status-actions{min-height:0;margin:0 0 10px}.role-status-actions:not(:empty){min-height:44px}.role-shell .role-retry{border-color:#185fa8;color:#185fa8}
.role-queue{display:grid;gap:8px;margin:15px 0}.role-queue>div{display:flex;justify-content:space-between;gap:10px;border-left:4px solid #9aabc0;background:#f4f7fb;padding:10px}.role-queue [data-state="done"]{border-color:#22834a}.role-queue [data-state="error"]{border-color:#bd2b3a}.role-queue [data-state="ready"]{border-color:#2c7be5}
.role-denied{text-align:center;padding:70px 20px}.role-denied h2{font-size:26px}.role-denied code{word-break:break-word}
.role-legacy{width:min(1180px,100%);margin:12px auto}.role-legacy #mainApp{display:block!important}
@media(max-width:1099px){.role-shell{padding:12px}.role-shell__head{align-items:flex-start;flex-direction:column}.role-fields{grid-template-columns:1fr}.role-panel{padding:15px}.role-legacy{padding:0 12px;box-sizing:border-box}}
@media(min-width:1100px){.role-shell{padding-top:24px}.role-shell__nav{position:sticky;top:0;z-index:5}.role-panel{min-height:420px}}
/* 업무 표면은 밝게 유지하고 내비게이션만 공통 재질 토큰을 사용한다. */
.role-shell__nav{margin:12px 0;padding:6px;border:1px solid var(--glass-edge);border-radius:24px}
.role-shell__nav button{border-radius:18px;background:transparent;border-color:transparent}
.role-shell__nav button[aria-current="page"]{background:var(--glass-overlay);color:#004990;box-shadow:0 1px 4px var(--glass-shadow)}
@media(prefers-contrast:more){.role-shell__nav button[aria-current="page"]{background:#004990;color:#fff}}

/* 독립 관리자 포털: 로그인과 업무 화면이 같은 대원여객 색·재질을 공유한다. */
body.dw-admin-route{max-width:none;background:linear-gradient(155deg,#e9f1fa 0%,#f5f8fc 52%,#e9eef7 100%)}
body.dw-admin-route #mainApp{display:none!important}
.dw-admin-route .role-shell{width:min(1280px,100%);padding:24px clamp(14px,3vw,38px) 48px}
.dw-admin-route .role-shell__head{border:1px solid rgba(255,255,255,.42);border-radius:22px;background:linear-gradient(125deg,#004990,#0a3970 65%,#072a52);box-shadow:0 14px 38px rgba(0,48,99,.17)}
.dw-admin-route .role-shell__head h1{font-size:clamp(22px,2.4vw,30px);letter-spacing:-.035em}
.dw-admin-route .role-shell__head p{color:#d6e8fa;font-size:14px}
.dw-admin-route .role-shell__head .admin-portal__logout{border-color:rgba(255,255,255,.55);background:rgba(255,255,255,.12);color:#fff;white-space:nowrap}
.dw-admin-route .role-shell__head .admin-portal__logout:hover{background:rgba(255,255,255,.23)}
.dw-admin-route .role-panel{border:1px solid rgba(138,164,195,.35);border-radius:22px;box-shadow:0 20px 55px rgba(18,54,95,.09)}
.dw-admin-route .admin-portal--login{display:flex;flex-direction:column}
.dw-admin-route .admin-portal__login{display:grid;place-items:center;flex:1;margin-top:18px;padding:clamp(20px,5vw,54px);background:rgba(255,255,255,.54);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}
.admin-login-card{width:min(440px,100%);box-sizing:border-box;border:1px solid #dce7f3;border-radius:20px;padding:clamp(24px,5vw,38px);background:#fff;box-shadow:0 20px 50px rgba(15,57,105,.12)}
.admin-login-eyebrow{display:block;margin-bottom:10px;color:#0068b7;font-size:12px;font-weight:900;letter-spacing:.13em}
.admin-login-card h2{margin:0 0 9px;color:#092c52;font-size:27px;letter-spacing:-.04em}
.admin-login-card>p{margin:0 0 24px;color:#56677d;line-height:1.55;font-size:14px}
.admin-login-modes{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:5px;margin-bottom:22px;border:1px solid #e0e9f3;border-radius:14px;background:#f1f6fb}
.dw-admin-route .admin-login-modes button{min-width:0;border:0;border-radius:10px;padding:10px 4px;background:transparent;color:#52657d;font-size:13px}
.dw-admin-route .admin-login-modes button[aria-pressed="true"]{background:#fff;color:#004990;box-shadow:0 2px 9px rgba(22,66,112,.13)}
.admin-login-form{display:grid;gap:16px}
.admin-login-field{display:grid;gap:7px}
.admin-login-field[hidden]{display:none}
.admin-login-field label{color:#1e3551;font-weight:800;font-size:13px}
.dw-admin-route .admin-login-field input{min-height:48px;width:100%;box-sizing:border-box;border:1px solid #bdccdd;border-radius:11px;padding:11px 13px;background:#fff;color:#102d50;font-size:16px}
.dw-admin-route .admin-login-field input:focus{border-color:#0068b7}
.admin-login-error{min-height:1.2em;margin:0;color:#a52634;font-size:13px;line-height:1.4}
.admin-login-error[data-state="done"]{color:#126139}
.admin-approval-panel>p{color:#56677d}
.admin-approval-list{display:grid;gap:10px;margin-top:14px}
.admin-approval-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px;border:1px solid #dce7f3;border-radius:13px;background:#f7faff}
.admin-approval-row strong,.admin-approval-row small{display:block}
.admin-approval-row small{margin-top:4px;color:#62748b}
.admin-approval-actions{display:flex;gap:8px;flex-shrink:0}
.ai-account-panel>p{color:#56677d}.ai-account-form{display:grid;gap:16px;max-width:460px;margin:22px 0}.ai-account-form label{display:grid;gap:7px;color:#1e3551;font-size:14px;font-weight:800}.ai-account-form input{box-sizing:border-box;width:100%;min-height:48px;padding:11px 13px;border:1px solid #bdccdd;border-radius:11px;background:#fff;color:#102d50;font-size:16px}.ai-account-panel>a{display:inline-block;margin-top:16px;color:#0068b7;font-weight:750}
.dw-admin-route .admin-login-form>.role-primary{width:100%;min-height:48px;border-radius:11px;background:#004990;border-color:#004990}
.dw-admin-route .admin-login-form>.role-primary:hover{background:#0068b7}
.admin-login-back{display:inline-block;margin-top:21px;color:#315d89;font-size:13px;font-weight:700;text-decoration:none}
.admin-login-back:hover{text-decoration:underline}
.dw-admin-route .admin-portal--ready{display:grid;grid-template-columns:210px minmax(0,1fr);column-gap:20px;align-items:start}
.dw-admin-route .admin-portal--ready .role-shell__head{grid-column:1/-1;margin-bottom:20px}
.dw-admin-route .admin-portal--ready .role-shell__nav{position:sticky;top:20px;display:grid;gap:5px;margin:0;padding:10px;overflow:visible;border:1px solid rgba(173,194,216,.55);border-radius:18px;background:rgba(255,255,255,.64);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 12px 32px rgba(20,60,105,.07)}
.dw-admin-route .admin-portal--ready .role-shell__nav button{text-align:left;border-radius:11px;padding:11px 14px;color:#294761}
.dw-admin-route .admin-portal--ready .role-shell__nav button[aria-current="page"]{background:#dcecff;color:#004990;box-shadow:inset 3px 0 #0068b7}
.dw-admin-route .role-shell__nav[hidden]{display:none!important}
.dw-admin-route .admin-portal__content{min-width:0;min-height:500px;padding:22px;background:rgba(255,255,255,.85)}
.dw-admin-route .admin-portal__content .tab-content{display:none;padding:0!important}
.dw-admin-route .admin-portal__content .tab-content.active{display:block}
.dw-admin-route .admin-portal__content .board-back-row,.dw-admin-route .admin-portal__content #adminMain>.admin-sec-nav,.dw-admin-route .admin-portal__content #adminMain>div:first-child,.dw-admin-route .admin-portal__content #leaderMain>.admin-sec-nav,.dw-admin-route .admin-portal__content .desktop-redundant-logout{display:none!important}
.dw-admin-route .admin-portal__content #adminMain>.admin-badge-tag{display:none}
.dw-admin-route .admin-portal__content .card{max-width:none}
.dw-admin-route .admin-portal__message{margin-top:18px;text-align:center;padding:55px 20px}
.dw-admin-route .admin-portal__message h2{color:#952b38}
@media(max-width:760px){
  .dw-admin-route .role-shell{padding:12px 12px 30px}
  .dw-admin-route .role-shell__head{padding:18px;align-items:flex-start;flex-direction:row}
  .dw-admin-route .role-shell__head p{font-size:12px}
  .dw-admin-route .admin-portal--ready{display:block}
  .dw-admin-route .admin-portal--ready .role-shell__head{margin-bottom:12px}
  .dw-admin-route .admin-portal--ready .role-shell__nav{position:sticky;top:0;z-index:20;display:flex;gap:4px;margin:0 0 12px;overflow-x:auto;white-space:nowrap;border-radius:15px}
  .dw-admin-route .admin-portal--ready .role-shell__nav button{text-align:center;padding:9px 12px;font-size:13px}
  .dw-admin-route .admin-portal--ready .role-shell__nav button[aria-current="page"]{box-shadow:inset 0 -3px #0068b7}
  .dw-admin-route .admin-portal__content{padding:14px}
  /* 배차 운영의 네 가지 서브 메뉴는 가로 스크롤 없이 카드 안에 2열로 둔다. */
  .dw-admin-route .admin-portal__content #leadersec-dispatch>.dispatch-mgmt-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;overflow:visible}
  .dw-admin-route .admin-portal__content .dispatch-mgmt-tabs>.subtab-btn{box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:8px 6px;font-size:13px}
  .dw-admin-route .admin-portal__login{margin-top:12px;padding:14px}
  .admin-approval-row{align-items:flex-start;flex-direction:column}
}
@media(prefers-color-scheme:dark){
  body.dw-admin-route{background:linear-gradient(150deg,#0a1930,#101b2c 65%,#09182e)}
  .dw-admin-route .admin-portal__login,.dw-admin-route .admin-portal__content,.dw-admin-route .admin-portal--ready .role-shell__nav{background:rgba(20,33,52,.77);border-color:rgba(151,184,218,.26)}
  .dw-admin-route .admin-login-card{background:#152740;border-color:#38546f}
  .admin-login-card h2,.admin-login-field label{color:#f2f7ff}
  .admin-login-card>p{color:#a9bdd2}
  .admin-login-modes{background:#102239;border-color:#395270}
  .dw-admin-route .admin-login-modes button{color:#a9bdd2}
  .dw-admin-route .admin-login-modes button[aria-pressed="true"]{background:#294567;color:#e8f5ff}
  .dw-admin-route .admin-login-field input{background:#0d2037;color:#fff;border-color:#52718e}
  .dw-admin-route .admin-portal--ready .role-shell__nav button{color:#d6e7fa}
  .dw-admin-route .admin-portal--ready .role-shell__nav button[aria-current="page"]{background:#23466b;color:#fff}
  .admin-approval-panel>p,.admin-approval-row small{color:#aec1d6}
  .admin-approval-row{background:#152740;border-color:#38546f}
}
