
/* Learning Portal Final Integration - 2026-05-05 */
:root{
  --portal-bg:#f5f7fb;
  --portal-card:#ffffff;
  --portal-line:#e5e9f2;
  --portal-text:#111827;
  --portal-muted:#64748b;
  --portal-primary:#4f46e5;
  --portal-primary-soft:#eef2ff;
  --portal-green:#059669;
  --portal-green-soft:#ecfdf5;
  --portal-blue:#2563eb;
  --portal-blue-soft:#eff6ff;
  --portal-amber:#d97706;
  --portal-amber-soft:#fffbeb;
  --portal-red:#e11d48;
  --portal-red-soft:#fff1f2;
  --portal-dark:#0f172a;
  --portal-radius:22px;
}
body{background:var(--portal-bg)!important;overflow:hidden;}
#app-wrapper{height:100vh;width:100vw;display:none;}
.portal-main{box-sizing:border-box;flex:1;min-width:0;width:calc(100vw - 260px);max-width:none!important;padding:28px!important;gap:0!important;background:var(--portal-bg);overflow-y:auto;}
.portal-main::before{display:none!important;}
.portal-page{width:100%;max-width:none;margin:0;display:flex;flex-direction:column;gap:18px;}
.portal-topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;background:linear-gradient(135deg,#fff 0%,#f8faff 100%);border:1px solid var(--portal-line);border-radius:28px;padding:24px;box-shadow:0 16px 40px rgba(15,23,42,.05);}
.portal-topbar.compact-topbar{padding:22px 24px;}
.portal-kicker,.portal-label{margin:0 0 6px;color:var(--portal-primary);font-size:0.75rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;}
.portal-topbar h1{margin:0;font-size:clamp(24px,3vw,38px);line-height:1.12;font-weight:950;letter-spacing:-.04em;color:var(--portal-text);}
.portal-topbar p{margin:8px 0 0;color:var(--portal-muted);font-size:0.9375rem;line-height:1.55;}
.portal-topbar-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end;}
.portal-btn,a.portal-btn,button.portal-btn{border:0;border-radius:16px;padding:13px 17px;font-weight:900;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;white-space:nowrap;font-size:0.875rem;}
.portal-btn.primary{background:var(--portal-primary);color:#fff;box-shadow:0 12px 26px rgba(79,70,229,.22);}
.portal-btn.secondary{background:#fff;color:#334155;border:1px solid var(--portal-line);}
.portal-btn.full{width:100%;}
.portal-btn:disabled{opacity:.5;cursor:not-allowed;}
.portal-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);gap:18px;}
.portal-two-col{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.75fr);gap:18px;}
.portal-card{background:var(--portal-card);border:1px solid var(--portal-line);border-radius:var(--portal-radius);padding:20px;box-shadow:0 10px 28px rgba(15,23,42,.04);min-width:0;}
.portal-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px;}
.portal-card-head h2{margin:0;font-size:1.1875rem;line-height:1.25;font-weight:950;color:var(--portal-text);letter-spacing:-.025em;}
.portal-card-head a,.portal-card-head button{border:0;background:#f8fafc;color:#475569;border-radius:12px;padding:9px 12px;text-decoration:none;font-size:0.8125rem;font-weight:900;cursor:pointer;}
.portal-hero-card{min-height:240px;display:flex;flex-direction:column;justify-content:space-between;}
.portal-chip{display:inline-flex;align-items:center;border-radius:999px;padding:7px 10px;background:var(--portal-primary-soft);color:var(--portal-primary);font-size:0.75rem;font-weight:900;white-space:nowrap;}
.portal-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.portal-action-grid.compact{margin-top:18px;}
.portal-action-card{border:1px solid var(--portal-line);background:#f8fafc;border-radius:20px;padding:18px;text-decoration:none;color:var(--portal-text);display:flex;flex-direction:column;gap:8px;min-height:104px;transition:.18s ease;}
.portal-action-card:hover{transform:translateY(-2px);border-color:#c7d2fe;box-shadow:0 14px 32px rgba(15,23,42,.08);}
.portal-action-card b{font-size:1.0625rem;font-weight:950;}
.portal-action-card span{font-size:0.8125rem;line-height:1.5;color:var(--portal-muted);}
.portal-action-card.accent-blue{background:var(--portal-blue-soft);border-color:#bfdbfe;}
.portal-action-card.accent-green{background:var(--portal-green-soft);border-color:#bbf7d0;}
.portal-action-card.accent-dark{background:var(--portal-dark);border-color:var(--portal-dark);color:#fff;}
.portal-action-card.accent-dark span{color:rgba(255,255,255,.72);}
.portal-profile-row{display:flex;gap:16px;align-items:center;margin-bottom:16px;}
.portal-avatar-lg{width:62px;height:62px;border-radius:22px;background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:950;font-size:1.375rem;flex:0 0 auto;}
.portal-profile-card h2{margin:0;font-size:1.375rem;font-weight:950;}
.portal-profile-card p{margin:5px 0 0;color:var(--portal-muted);font-size:0.875rem;line-height:1.5;}
.portal-profile-list{display:grid;gap:10px;}
.portal-profile-list div{display:flex;justify-content:space-between;gap:14px;border-radius:14px;background:#f8fafc;padding:12px 13px;color:#334155;font-size:0.875rem;}
.portal-profile-list span{color:var(--portal-muted);font-weight:700;}
.portal-profile-list b{font-weight:900;text-align:right;word-break:break-all;}
.portal-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
.portal-metric{background:#fff;border:1px solid var(--portal-line);border-radius:20px;padding:18px;box-shadow:0 10px 24px rgba(15,23,42,.035);}
.portal-metric span{display:block;color:var(--portal-muted);font-weight:800;font-size:0.8125rem;}
.portal-metric b{display:block;margin-top:8px;color:var(--portal-text);font-size:1.875rem;font-weight:950;letter-spacing:-.04em;}
.portal-metric small{display:block;margin-top:5px;color:#94a3b8;font-weight:700;line-height:1.35;}
.portal-notice{align-items:center;gap:12px;background:#fff;border:1px solid #fecaca;border-left:6px solid #ef4444;border-radius:18px;padding:14px 16px;color:#334155;}
.portal-notice strong{color:#dc2626;font-weight:950;}
.portal-notice span{flex:1;line-height:1.45;}
.portal-notice button{border:0;background:#fee2e2;color:#991b1b;border-radius:10px;padding:5px 10px;font-weight:900;cursor:pointer;}
.portal-chart{height:220px;display:grid;grid-template-columns:repeat(7,1fr);align-items:end;gap:10px;padding:12px 4px 0;}
.portal-bar{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:8px;}
.portal-bar-track{width:100%;height:160px;border-radius:14px;background:#f1f5f9;display:flex;align-items:flex-end;overflow:hidden;}
.portal-bar-fill{width:100%;min-height:4px;background:linear-gradient(180deg,#6366f1,#4f46e5);border-radius:14px 14px 0 0;transition:height .45s ease;}
.portal-bar-label{font-size:0.75rem;font-weight:900;color:#64748b;}
.portal-bar-value{font-size:0.75rem;font-weight:900;color:#111827;}
.portal-record-list{display:grid;gap:10px;}
.portal-record-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:14px;border:1px solid var(--portal-line);border-radius:16px;background:#fff;}
.portal-record-item:hover{background:#f8fafc;}
.portal-record-title{font-weight:950;color:#111827;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.portal-record-meta{margin-top:4px;color:#64748b;font-size:0.8125rem;line-height:1.4;}
.portal-record-score{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
.portal-badge{display:inline-flex;border-radius:999px;padding:6px 9px;font-size:0.75rem;font-weight:950;background:#f1f5f9;color:#334155;white-space:nowrap;}
.portal-badge.good{background:var(--portal-green-soft);color:#047857;}
.portal-badge.warn{background:var(--portal-amber-soft);color:#b45309;}
.portal-badge.bad{background:var(--portal-red-soft);color:#be123c;}
.portal-stack{display:grid;gap:12px;}
.portal-empty{border:1px dashed #cbd5e1;background:#f8fafc;border-radius:18px;padding:22px;text-align:center;color:#64748b;line-height:1.55;}
.portal-chart .portal-empty{grid-column:1/-1;align-self:center;}
.portal-empty b{display:block;color:#111827;margin-bottom:6px;}
.portal-feedback-card{border:1px solid var(--portal-line);border-radius:18px;padding:16px;background:#fff;}
.portal-feedback-card .status{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;}
.portal-feedback-card h3{margin:0;font-size:0.9375rem;font-weight:950;line-height:1.4;}
.portal-feedback-card p{margin:8px 0 0;color:#475569;line-height:1.55;font-size:0.875rem;}
.portal-tabs{display:flex;gap:8px;background:#fff;border:1px solid var(--portal-line);border-radius:20px;padding:8px;overflow-x:auto;}
.portal-tabs button{border:0;background:transparent;color:#64748b;border-radius:14px;padding:12px 15px;font-weight:950;cursor:pointer;white-space:nowrap;}
.portal-tabs button.active{background:var(--portal-dark);color:#fff;box-shadow:0 10px 22px rgba(15,23,42,.16);}
.sticky-tabs{position:sticky;top:-28px;z-index:5;}
.practice-layout{display:grid;grid-template-columns:360px minmax(0,1fr);gap:18px;align-items:start;}
.practice-selector{position:sticky;top:14px;max-height:calc(100vh - 140px);overflow:auto;}
.practice-filter-row{display:grid;grid-template-columns:1fr 120px;gap:8px;margin-bottom:12px;}
.practice-filter-row input,.practice-filter-row select,.manual-practice-box input,.manual-practice-box textarea{width:100%;box-sizing:border-box;border:1px solid var(--portal-line);border-radius:13px;background:#f8fafc;padding:11px 12px;font-family:inherit;font-size:0.875rem;outline:none;}
.manual-practice-box textarea{min-height:92px;resize:vertical;line-height:1.5;}
.manual-practice-box{margin-top:14px;border-top:1px solid var(--portal-line);padding-top:14px;}
.manual-practice-box summary{cursor:pointer;font-weight:950;color:#334155;margin-bottom:12px;}
.manual-practice-box label{display:block;font-size:0.75rem;color:#64748b;font-weight:900;margin:10px 0;}
.practice-material-list{display:grid;gap:8px;}
.practice-material{border:1px solid var(--portal-line);background:#fff;border-radius:15px;padding:12px;text-align:left;cursor:pointer;display:block;width:100%;}
.practice-material.active{background:var(--portal-primary-soft);border-color:#a5b4fc;box-shadow:0 0 0 3px rgba(79,70,229,.12);}
.practice-material b{display:block;font-size:0.875rem;color:#111827;line-height:1.35;}
.practice-material span{display:block;margin-top:4px;color:#64748b;font-size:0.75rem;line-height:1.35;}
.practice-workspace{min-height:590px;}
.practice-work-head{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid var(--portal-line);padding-bottom:16px;margin-bottom:16px;}
.practice-work-head h2{margin:0;font-size:1.375rem;font-weight:950;letter-spacing:-.03em;}
.practice-work-head p{margin:6px 0 0;color:#64748b;line-height:1.5;}
.practice-timer-box{min-width:116px;border:1px solid var(--portal-line);background:#f8fafc;border-radius:16px;padding:12px;text-align:center;}
.practice-timer-box span{display:block;color:#64748b;font-size:0.75rem;font-weight:900;}
.practice-timer-box b{display:block;margin-top:3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.375rem;}
.practice-audio-box,.practice-source-box{border:1px solid var(--portal-line);border-radius:17px;background:#f8fafc;padding:14px;margin-bottom:14px;}
.practice-source-box{max-height:170px;overflow:auto;color:#334155;line-height:1.75;white-space:pre-wrap;}
.practice-audio-box audio{width:100%;display:block;}
.practice-editor{width:100%;min-height:330px;box-sizing:border-box;border:1px solid var(--portal-line);border-radius:18px;background:#fbfdff;padding:18px;font-family:inherit;font-size:1.0625rem;line-height:1.85;resize:vertical;outline:none;}
.practice-editor:focus{border-color:#a5b4fc;box-shadow:0 0 0 4px rgba(79,70,229,.12);background:#fff;}
.practice-bottom-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;color:#64748b;font-weight:800;}
.practice-actions{display:flex;gap:8px;}
.practice-result{margin-top:14px;border-radius:18px;border:1px solid #bbf7d0;background:#ecfdf5;padding:16px;color:#065f46;}
.practice-result h3{margin:0 0 10px;font-size:1.0625rem;font-weight:950;}
.practice-result-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.practice-result-grid div{background:#fff;border-radius:13px;padding:10px;text-align:center;}
.practice-result-grid span{display:block;color:#64748b;font-size:0.75rem;font-weight:900;}
.practice-result-grid b{display:block;margin-top:4px;font-size:1.25rem;color:#111827;}
.practice-tools-panel .tools-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
.my-tab-panel{display:none;}
.my-tab-panel.active{display:flex;flex-direction:column;gap:18px;}
.portal-table-wrap{overflow:auto;border:1px solid var(--portal-line);border-radius:18px;}
.portal-table{width:100%;border-collapse:collapse;min-width:920px;background:#fff;}
.portal-table th{background:#f8fafc;color:#64748b;font-size:0.75rem;text-align:left;padding:13px 14px;font-weight:950;white-space:nowrap;}
.portal-table td{border-top:1px solid var(--portal-line);padding:13px 14px;font-size:0.875rem;color:#334155;white-space:nowrap;}
.portal-table td:first-child,.portal-table .title-cell{color:#111827;font-weight:850;}
.portal-filter-pills{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end;}
.portal-filter-pills button{border:1px solid var(--portal-line);background:#fff;color:#475569;border-radius:999px;padding:8px 11px;font-size:0.75rem;font-weight:900;cursor:pointer;}
.portal-filter-pills button.active{background:#111827;color:#fff;border-color:#111827;}
.wrong-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--portal-line);border-radius:16px;padding:14px;background:#fff;}
.wrong-card b{display:block;color:#111827;}
.wrong-card span{display:block;color:#64748b;margin-top:4px;font-size:0.8125rem;}
@media (max-width:1100px){.portal-main{width:100%;padding:22px!important}.portal-dashboard-grid,.portal-two-col,.practice-layout{grid-template-columns:1fr}.practice-selector{position:static;max-height:none}.portal-metric-grid{grid-template-columns:repeat(2,1fr)}.portal-action-grid,.practice-tools-panel .tools-grid{grid-template-columns:1fr 1fr}.portal-topbar{align-items:flex-start;flex-direction:column}}
@media (max-width:720px){.portal-main{padding:16px!important}.portal-topbar,.portal-card{border-radius:20px;padding:16px}.portal-action-grid,.practice-tools-panel .tools-grid,.portal-metric-grid{grid-template-columns:1fr}.portal-record-item,.wrong-card{grid-template-columns:1fr}.portal-record-score{justify-content:flex-start}.practice-filter-row{grid-template-columns:1fr}.practice-work-head,.practice-bottom-bar{flex-direction:column;align-items:stretch}.practice-result-grid{grid-template-columns:repeat(2,1fr)}}


/* Dashboard / MyPage Focus Redesign - 2026-05-05 clean split */
:root{
  --portal-bg:#f6f8fb;
  --portal-ink:#0b1220;
  --portal-soft:#f8fafc;
  --portal-shadow:0 18px 55px rgba(15,23,42,.07);
}
.portal-main{padding:30px!important;background:linear-gradient(180deg,#f7f9fd 0%,#f3f6fb 100%)!important;}
.portal-page{gap:20px;}
.portal-card{box-shadow:var(--portal-shadow);border-color:#e6ebf3;}
.clean-head{margin-bottom:14px;}
.clean-head h2{font-size:1.25rem;}
.portal-btn.big{padding:15px 20px;border-radius:18px;font-size:0.9375rem;}

/* Dashboard: execution-first, not account-management */
.dashboard-redesign{max-width:1540px;margin:0 auto;width:100%;}
.dash-hero{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:stretch;}
.dash-hero-copy{position:relative;overflow:hidden;border-radius:34px;background:radial-gradient(circle at 8% 8%,rgba(129,140,248,.38),transparent 32%),linear-gradient(135deg,#0f172a 0%,#111827 48%,#1e1b4b 100%);color:#fff;padding:34px;min-height:265px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 28px 70px rgba(15,23,42,.22);}
.dash-hero-copy::after{content:"";position:absolute;right:-80px;bottom:-110px;width:300px;height:300px;border-radius:999px;background:rgba(255,255,255,.07);pointer-events:none;}
.dash-hero-copy .portal-kicker{color:#a5b4fc;}
.dash-hero-copy h1{position:relative;z-index:1;margin:0;max-width:780px;font-size:clamp(32px,4.2vw,58px);line-height:1.04;font-weight:950;letter-spacing:-.06em;}
.dash-hero-copy p{position:relative;z-index:1;margin:16px 0 0;max-width:760px;color:rgba(255,255,255,.72);font-size:1rem;line-height:1.65;}
.dash-hero-actions{position:relative;z-index:1;display:flex;gap:10px;margin-top:24px;flex-wrap:wrap;}
.dash-status-panel{border:1px solid #e6ebf3;border-radius:34px;background:#fff;padding:22px;box-shadow:var(--portal-shadow);display:flex;flex-direction:column;gap:16px;min-width:0;}
.dash-status-top{display:flex;gap:14px;align-items:center;}
.dash-status-top b{display:block;font-size:1.25rem;font-weight:950;color:#0f172a;}
.dash-status-top span{display:block;margin-top:4px;color:#64748b;font-size:0.8125rem;line-height:1.45;word-break:break-all;}
.dash-mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.dash-mini-grid div{border-radius:20px;background:#f8fafc;border:1px solid #edf1f7;padding:16px;}
.dash-mini-grid span{display:block;color:#64748b;font-size:0.75rem;font-weight:900;}
.dash-mini-grid b{display:block;margin-top:7px;color:#0f172a;font-size:1.5rem;font-weight:950;letter-spacing:-.04em;}
.dash-profile-mini{display:grid;gap:8px;margin-top:auto;}
.dash-profile-mini div{display:flex;justify-content:space-between;gap:10px;border:0;background:#f8fafc;border-radius:14px;padding:10px 12px;font-size:0.8125rem;}
.dash-profile-mini span{color:#64748b;font-weight:800;}
.dash-profile-mini b{color:#111827;font-weight:900;text-align:right;word-break:break-all;}
.slim-notice{max-width:none;}
.dash-focus-grid{display:grid;grid-template-columns:1.2fr repeat(3,1fr);gap:14px;}
.dash-focus-card{position:relative;min-height:124px;border:1px solid #e6ebf3;background:#fff;border-radius:28px;padding:22px;text-decoration:none;color:#0f172a;box-shadow:0 14px 36px rgba(15,23,42,.055);display:flex;flex-direction:column;justify-content:space-between;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;}
.dash-focus-card:hover{transform:translateY(-3px);border-color:#c7d2fe;box-shadow:0 24px 60px rgba(15,23,42,.1);}
.dash-focus-card.primary-focus{background:linear-gradient(135deg,#eef2ff,#ffffff);border-color:#c7d2fe;}
.focus-icon{width:42px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:16px;background:#f1f5f9;font-size:1.3125rem;}
.dash-focus-card b{font-size:1.3125rem;font-weight:950;letter-spacing:-.03em;}
.dash-focus-card small{margin-top:6px;color:#64748b;font-weight:750;line-height:1.45;}
.dash-metrics.portal-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
.dash-metrics .portal-metric{border-radius:24px;background:#fff;padding:19px 20px;box-shadow:0 12px 35px rgba(15,23,42,.055);}
.dash-metrics .portal-metric b{font-size:2rem;}
.dash-content-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:18px;align-items:start;}
.dash-chart-card,.dash-side-card,.dash-record-card{border-radius:28px;}
.dash-chart-card .portal-chart{height:245px;}
.compact-stack .portal-feedback-card{box-shadow:none;background:#f8fafc;}
.minimal-records .portal-record-item{border-radius:18px;border-color:#edf1f7;box-shadow:none;background:#fff;}
.minimal-records .portal-record-item:hover{background:#fafcff;}

/* MyPage: management console, visually separated from dashboard */
.mypage-redesign{max-width:1540px;margin:0 auto;width:100%;}
.my-clean-header{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;border:1px solid #e6ebf3;border-radius:30px;background:#fff;padding:24px 26px;box-shadow:0 14px 42px rgba(15,23,42,.055);}
.my-clean-header h1{margin:0;font-size:clamp(25px,3vw,42px);line-height:1.12;font-weight:950;letter-spacing:-.05em;color:#0f172a;}
.my-clean-header p{margin:8px 0 0;color:#64748b;line-height:1.55;}
.mypage-shell{display:grid;grid-template-columns:292px minmax(0,1fr);gap:20px;align-items:start;}
.mypage-sidebar-panel{position:sticky;top:0;border:1px solid #e6ebf3;border-radius:30px;background:#101827;color:#fff;padding:18px;box-shadow:0 22px 70px rgba(15,23,42,.17);max-height:calc(100vh - 62px);overflow:auto;}
.my-profile-block{display:flex;gap:13px;align-items:center;border-radius:24px;background:rgba(255,255,255,.08);padding:14px;margin-bottom:14px;}
.my-profile-block .portal-avatar-lg{width:54px;height:54px;border-radius:20px;background:linear-gradient(135deg,#818cf8,#a78bfa);}
.my-profile-block b{display:block;font-size:1.125rem;font-weight:950;}
.my-profile-block span{display:block;margin-top:4px;color:rgba(255,255,255,.58);font-size:0.75rem;line-height:1.4;word-break:break-all;}
.mypage-nav{display:grid;gap:8px;margin:12px 0;}
.mypage-nav button{border:0;background:transparent;color:rgba(255,255,255,.6);border-radius:18px;padding:13px 14px;text-align:left;cursor:pointer;transition:.18s ease;}
.mypage-nav button:hover{background:rgba(255,255,255,.08);color:#fff;}
.mypage-nav button.active{background:#fff;color:#0f172a;box-shadow:0 14px 30px rgba(0,0,0,.18);}
.mypage-nav b{display:block;font-size:0.9375rem;font-weight:950;}
.mypage-nav span{display:block;margin-top:3px;font-size:0.75rem;line-height:1.35;color:inherit;opacity:.72;}
.my-profile-list{display:grid;gap:8px;margin-top:14px;}
.my-profile-list div{display:flex;justify-content:space-between;gap:10px;border-radius:15px;background:rgba(255,255,255,.08);padding:10px 11px;font-size:0.75rem;}
.my-profile-list span{color:rgba(255,255,255,.56);font-weight:800;}
.my-profile-list b{color:#fff;font-weight:900;text-align:right;word-break:break-all;}
.mypage-workspace{min-width:0;display:flex;flex-direction:column;gap:18px;}
.mypage-workspace .my-tab-panel{display:none;}
.mypage-workspace .my-tab-panel.active{display:flex;flex-direction:column;gap:18px;}
.my-summary-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:18px;align-items:start;}
.my-diagnosis-card{border-radius:30px;background:linear-gradient(135deg,#fff,#f8fafc);}
.my-recent-card,.full-panel-card{border-radius:30px;}
.my-compact-metrics.portal-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
.my-compact-metrics .portal-metric{background:#fff;border-radius:24px;box-shadow:0 12px 35px rgba(15,23,42,.05);}
.my-account-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(360px,.65fr);gap:18px;}
.feedback-board{grid-template-columns:repeat(2,minmax(0,1fr));}
.feedback-board .portal-empty{grid-column:1/-1;}
.wrongnote-board{grid-template-columns:repeat(2,minmax(0,1fr));}
.wrongnote-board .portal-empty{grid-column:1/-1;}
.portal-filter-pills{justify-content:flex-start;}
.portal-filter-pills button{background:#f8fafc;}
.portal-table-wrap{border-radius:22px;background:#fff;}
.portal-table{min-width:880px;}
.portal-table th{background:#f8fafc;}
.portal-table tr:hover td{background:#fbfdff;}
.portal-feedback-card{border-radius:20px;background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.035);}
.wrong-card{border-radius:20px;box-shadow:0 8px 24px rgba(15,23,42,.035);}

@media (max-width:1280px){
  .dash-hero{grid-template-columns:1fr;}
  .dash-focus-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .dash-content-grid{grid-template-columns:1fr;}
  .mypage-shell{grid-template-columns:1fr;}
  .mypage-sidebar-panel{position:relative;max-height:none;}
  .mypage-nav{grid-template-columns:repeat(5,minmax(140px,1fr));overflow-x:auto;}
  .my-profile-list{grid-template-columns:repeat(3,minmax(0,1fr));}
  .my-summary-grid,.my-account-grid{grid-template-columns:1fr;}
}
@media (max-width:900px){
  .portal-main{padding:20px!important;}
  .dash-metrics.portal-metric-grid,.my-compact-metrics.portal-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .feedback-board,.wrongnote-board{grid-template-columns:1fr;}
  .my-clean-header{align-items:flex-start;flex-direction:column;}
}
@media (max-width:680px){
  .portal-main{padding:15px!important;}
  .dash-hero-copy,.dash-status-panel,.my-clean-header,.mypage-sidebar-panel,.portal-card{border-radius:22px;padding:17px;}
  .dash-hero-copy h1{font-size:1.9375rem;}
  .dash-focus-grid,.dash-metrics.portal-metric-grid,.my-compact-metrics.portal-metric-grid{grid-template-columns:1fr;}
  .dash-mini-grid{grid-template-columns:1fr 1fr;}
  .mypage-nav{grid-template-columns:1fr;}
  .my-profile-list{grid-template-columns:1fr;}
}
/* layout width correction */
.sidebar{box-sizing:border-box;}
.portal-main{width:auto!important;flex:1 1 auto!important;min-width:0!important;}

/* Practice Room Fusion - 2026-05-06 */
.practice-page .portal-topbar.compact-topbar{
  padding:18px 22px;
}
.practice-page .portal-topbar h1{
  font-size:clamp(22px,2.5vw,32px);
}
.practice-advanced-box{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin-bottom:14px;
}
.practice-status-card{
  border:1px solid #e6ebf3;
  border-radius:16px;
  background:#f8fafc;
  padding:13px 14px;
  min-width:0;
}
.practice-status-card span{
  display:block;
  color:#64748b;
  font-size:0.6875rem;
  font-weight:950;
  letter-spacing:-.02em;
}
.practice-status-card b{
  display:block;
  margin-top:5px;
  color:#0f172a;
  font-size:1.125rem;
  font-weight:950;
  letter-spacing:-.04em;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.practice-status-card small{
  display:block;
  margin-top:4px;
  color:#7c8798;
  font-size:0.75rem;
  font-weight:750;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.practice-material.intermediate-material{
  border-color:#d8defc;
  background:linear-gradient(135deg,#ffffff,#f7f8ff);
}
.practice-material.intermediate-material b::after{
  content:"중급";
  display:inline-flex;
  margin-left:7px;
  padding:3px 6px;
  border-radius:999px;
  background:#eef2ff;
  color:#4f46e5;
  font-size:0.625rem;
  font-weight:950;
  vertical-align:middle;
}
.practice-material.locked{
  opacity:.62;
  cursor:not-allowed;
  background:#f8fafc;
}
.practice-audio-box,.practice-source-box{
  background:#fff;
  border-color:#e2e8f0;
}
.practice-audio-top,
.practice-source-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}
.practice-audio-top b,
.practice-source-toolbar b{
  display:block;
  color:#0f172a;
  font-weight:950;
  letter-spacing:-.03em;
}
.practice-audio-top span:not(.portal-chip),
.practice-source-toolbar span{
  display:block;
  margin-top:3px;
  color:#64748b;
  font-size:0.75rem;
  font-weight:800;
}
.practice-audio-seek{
  display:grid;
  grid-template-columns:44px minmax(0,1fr) 44px;
  align-items:center;
  gap:10px;
  margin:9px 0 12px;
  color:#64748b;
  font-size:0.75rem;
  font-weight:900;
}
.practice-audio-seek input[type="range"]{
  width:100%;
  accent-color:#4f46e5;
}
.practice-audio-controls{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.practice-speed-control{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:6px 8px;
  border:1px solid #e2e8f0;
  border-radius:14px;
  background:#f8fafc;
}
.practice-speed-control button{
  width:28px;
  height:28px;
  border:0;
  border-radius:10px;
  background:#fff;
  color:#334155;
  font-weight:950;
  cursor:pointer;
}
.practice-speed-control b{
  min-width:30px;
  text-align:center;
  color:#0f172a;
  font-size:0.8125rem;
}
.practice-smart-pause{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  margin-top:12px;
  padding:10px 12px;
  border-radius:14px;
  background:#f8fafc;
  color:#475569;
  font-size:0.8125rem;
  font-weight:850;
}
.practice-smart-pause input[type="number"]{
  width:68px;
  padding:7px 8px;
  border:1px solid #dbe3ee;
  border-radius:10px;
  font-weight:900;
}
.practice-inline-warning{
  margin-top:10px;
  padding:10px 12px;
  border-radius:13px;
  background:#fff7ed;
  color:#9a3412;
  font-size:0.8125rem;
  font-weight:850;
}
.practice-source-box{
  max-height:none;
  overflow:visible;
}
.practice-paragraph-buttons{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.practice-paragraph-buttons .paragraph-btn{
  border:1px solid #e2e8f0;
  background:#fff;
  color:#475569;
  border-radius:999px;
  padding:7px 10px;
  font-size:0.75rem;
  font-weight:950;
  cursor:pointer;
}
.practice-paragraph-buttons .paragraph-btn.active{
  background:#111827;
  color:#fff;
  border-color:#111827;
}
.paragraph-empty{
  color:#94a3b8;
  font-size:0.75rem;
  font-weight:850;
}
.practice-source-readonly{
  max-height:245px;
  overflow:auto;
  border:1px solid #edf1f7;
  border-radius:16px;
  background:#fbfdff;
  padding:16px;
  color:#273449;
  font-size:1.0625rem;
  line-height:1.85;
  white-space:pre-wrap;
}
.practice-source-readonly span.pace-current{
  background:#111827;
  color:#fff;
  border-radius:5px;
  padding:0 2px;
}
.practice-source-readonly span.pace-passed{
  color:#a8b1c3;
}
.practice-pace-status{
  margin-top:9px;
  color:#64748b;
  font-size:0.75rem;
  font-weight:850;
}
.practice-editor.paused-warning{
  border-color:#f59e0b;
  box-shadow:0 0 0 4px rgba(245,158,11,.13);
  background:#fffbeb;
}
.practice-grade-message{
  margin-top:12px;
  padding:11px 13px;
  border-radius:13px;
  background:#fff;
  color:#334155;
  font-weight:850;
}
.practice-diff-box{
  margin-top:12px;
  border:1px solid #dbe3ee;
  border-radius:15px;
  background:#fff;
  overflow:hidden;
}
.practice-diff-box summary{
  padding:11px 13px;
  cursor:pointer;
  font-weight:950;
  color:#0f172a;
  background:#f8fafc;
}
.practice-diff-box .diff-view{
  max-height:260px;
  overflow:auto;
  padding:15px;
  color:#273449;
  line-height:1.9;
  white-space:pre-wrap;
}
.diff-view .d-wrong,
.practice-diff-box .d-wrong{
  position:relative;
  color:#dc2626;
  background:#fee2e2;
  border-radius:4px;
  padding:0 2px;
}
.diff-view .d-missing,
.practice-diff-box .d-missing{
  color:#9333ea;
  background:#f3e8ff;
  border-radius:4px;
  padding:0 2px;
}
.diff-view .d-added,
.practice-diff-box .d-added{
  color:#2563eb;
  background:#dbeafe;
  border-radius:4px;
  padding:0 2px;
}
.diff-view .correction,
.practice-diff-box .correction{
  display:block;
  font-size:0.625rem;
  line-height:1;
  color:#7f1d1d;
  font-weight:950;
  text-align:center;
}
.diff-muted{color:#cbd5e1;}
.practice-pass-note{
  margin:12px 0 0;
  padding:11px 13px;
  border-radius:13px;
  background:#ecfdf5;
  color:#047857;
  font-weight:950;
}
.practice-pass-note.muted{
  background:#f8fafc;
  color:#64748b;
}
@media (min-width:1200px){
  .practice-layout{
    grid-template-columns:320px minmax(0,1fr);
  }
  .practice-editor{
    min-height:390px;
  }
}
@media (max-width:1180px){
  .practice-advanced-box{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:720px){
  .practice-advanced-box{grid-template-columns:1fr;}
  .practice-audio-top,.practice-source-toolbar{align-items:flex-start;flex-direction:column;}
  .practice-paragraph-buttons{justify-content:flex-start;}
  .practice-audio-seek{grid-template-columns:38px minmax(0,1fr) 38px;}
}

/* AI 선생님 피드백 MVP */
.record-feedback-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: flex-end;
}

.ai-feedback-card {
  border-color: rgba(37, 99, 235, 0.22);
  background: linear-gradient(180deg, rgba(239, 246, 255, 0.88), #fff);
}

.ai-feedback-text {
  margin-top: 10px;
  padding: 14px 15px;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.78);
  border: 1px solid rgba(148, 163, 184, 0.22);
  color: #1f2937;
  font-size: 0.875rem;
  line-height: 1.72;
  white-space: normal;
}

.ai-feedback-note {
  margin: 10px 0 0;
  color: #64748b;
  font-size: 0.75rem;
  line-height: 1.5;
}

/* practice-category-open-20260528: 중급/고급/급수 자료 구분 탭 */
.practice-category-tabs{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin:12px 0 10px;
}
.practice-category-tabs button{
  border:1px solid #e3e8f2;
  background:#ffffff;
  border-radius:14px;
  padding:10px 8px;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  color:#475569;
  font-weight:950;
  letter-spacing:-.04em;
}
.practice-category-tabs button b{
  min-width:20px;
  padding:2px 5px;
  border-radius:999px;
  background:#eef2f7;
  color:#64748b;
  font-size:0.6875rem;
  line-height:1;
}
.practice-category-tabs button.active{
  border-color:#3f51ff;
  background:#f5f7ff;
  color:#2431c9;
  box-shadow:0 8px 18px rgba(63,81,255,.10);
}
.practice-category-tabs button.active b{
  background:#3f51ff;
  color:#ffffff;
}
.practice-material.category-intermediate b::after,
.practice-material.category-advanced b::after,
.practice-material.category-grade b::after{
  display:inline-flex;
  align-items:center;
  margin-left:6px;
  border-radius:7px;
  padding:2px 6px;
  color:#fff;
  font-size:0.625rem;
  font-weight:950;
  vertical-align:middle;
}
.practice-material.category-intermediate b::after{content:"중급";background:#5b63f5;}
.practice-material.category-advanced b::after{content:"고급";background:#0f766e;}
.practice-material.category-grade b::after{content:"급수";background:#b45309;}
.practice-material.category-advanced{
  border-color:#cfe8e3;
  background:linear-gradient(135deg,#ffffff,#f3fbf9);
}
.practice-material.category-grade{
  border-color:#f4dfbd;
  background:linear-gradient(135deg,#ffffff,#fff8ed);
}
@media (max-width:680px){
  .practice-category-tabs{grid-template-columns:repeat(2,minmax(0,1fr));}
}

/* dashboard-intuitive-trim-20260529: 대시보드 중복 정보 제거 + 바로 시작 중심 */
.portal-page.dashboard-page {
  gap: 14px;
}
.dashboard-redesign {
  max-width: 1320px;
}
.dash-hero {
  grid-template-columns: minmax(0,1fr) 300px;
  gap: 14px;
}
.dash-hero-copy {
  min-height: 0;
  padding: 24px 26px;
  border-radius: 22px;
  background: #FFFFFF;
  color: #0F172A;
  border: 1px solid #E6EBF3;
  box-shadow: none;
}
.dash-hero-copy::after { display: none; }
.dash-hero-copy .portal-kicker {
  color: #4F46E5;
  margin-bottom: 8px;
}
.dash-hero-copy h1 {
  max-width: none;
  font-size: clamp(26px, 3vw, 38px);
  line-height: 1.15;
  color: #0F172A;
}
.dash-hero-copy p {
  margin-top: 9px;
  color: #64748B;
  max-width: none;
  font-size: 0.875rem;
}
.dash-hero-actions {
  margin-top: 18px;
  gap: 8px;
}
.dash-hero-actions .portal-btn.big {
  min-height: 44px;
  padding: 11px 15px;
  border-radius: 12px;
  font-size: 0.875rem;
}
.dash-status-panel {
  border-radius: 22px;
  padding: 16px;
  gap: 12px;
  box-shadow: none;
}
.dash-status-top b {
  font-size: 1.0625rem;
}
.dash-status-top span {
  font-size: 0.75rem;
}
.dashboard-page .portal-avatar-lg {
  width: 48px;
  height: 48px;
  border-radius: 16px;
  font-size: 1.125rem;
}
.dash-mini-grid div {
  border-radius: 14px;
  padding: 11px;
}
.dash-mini-grid b {
  font-size: 1.25rem;
}
.dash-profile-mini {
  display: none;
}
.slim-notice {
  padding: 11px 13px;
  border-radius: 14px;
}
.dash-focus-grid,
.dash-metrics,
.dash-content-grid {
  display: none !important;
}
.dash-record-card {
  border-radius: 22px;
  padding: 16px;
  box-shadow: none;
}
.dash-record-card .portal-card-head {
  margin-bottom: 10px;
}
.dash-record-card .portal-card-head h2 {
  font-size: 1.125rem;
}
.minimal-records .portal-record-item {
  padding: 11px 12px;
  border-radius: 13px;
}
.portal-btn.primary,
.portal-btn.secondary {
  box-shadow: none;
}
@media (max-width: 1280px) {
  .dash-hero { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  .dash-hero-copy,
  .dash-status-panel,
  .dash-record-card { border-radius: 18px; padding: 16px; }
  .dash-hero-copy h1 { font-size: 1.6875rem; }
  .dash-hero-actions { flex-direction: column; align-items: stretch; }
  .dash-hero-actions .portal-btn.big { width: 100%; }
}

/* premium-ui-20260529-v2: 선명하지만 촌스럽지 않은 대시보드 톤 정리 */
:root{
  --portal-bg:#F1F4F8;
  --portal-card:#FFFFFF;
  --portal-line:#D7DEE8;
  --portal-line-strong:#C8D1DE;
  --portal-text:#111827;
  --portal-muted:#667085;
  --portal-primary:#4F46E5;
  --portal-primary-strong:#4338CA;
  --portal-primary-soft:#F1F3FF;
  --portal-surface:#F7F9FC;
  --portal-shadow:0 14px 36px rgba(15,23,42,.07);
  --portal-shadow-soft:0 6px 16px rgba(15,23,42,.045);
  --portal-radius:18px;
}
body{background:var(--portal-bg)!important;}
.portal-main{
  background:linear-gradient(180deg,#F7F9FC 0%,#F1F4F8 100%)!important;
  padding:26px 30px!important;
}
.dashboard-redesign{max-width:1360px;}
.portal-page.dashboard-page{gap:18px;}

/* 공통: 구역은 또렷하게, 장식은 최소화 */
.dash-hero-copy,
.dash-status-panel,
.dash-record-card,
.portal-card,
.dash-chart-card,
.dash-side-card{
  background:var(--portal-card)!important;
  border:1px solid var(--portal-line)!important;
  border-radius:20px!important;
  box-shadow:var(--portal-shadow)!important;
}
.dash-hero{gap:18px;grid-template-columns:minmax(0,1fr) 320px;}
.dash-hero-copy{
  position:relative;
  padding:30px 32px!important;
  overflow:hidden;
  background:
    linear-gradient(90deg,rgba(79,70,229,.05) 0%,rgba(79,70,229,0) 46%),
    #FFFFFF!important;
}
.dash-hero-copy::after{display:none!important;}
.dash-hero-copy::before{
  content:"";
  position:absolute;
  left:0;
  top:24px;
  bottom:24px;
  width:5px;
  border-radius:0 999px 999px 0;
  background:var(--portal-primary);
}
.dash-hero-copy .portal-kicker{
  display:block;
  width:auto;
  margin:0 0 8px!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  color:var(--portal-primary)!important;
  font-size:0.75rem!important;
  font-weight:950!important;
  letter-spacing:-.01em!important;
  text-transform:none!important;
}
.dash-hero-copy h1{
  color:var(--portal-text)!important;
  font-size:clamp(30px,3vw,42px)!important;
  letter-spacing:-.055em!important;
}
.dash-hero-copy p{
  max-width:760px!important;
  color:var(--portal-muted)!important;
  font-size:0.9375rem!important;
}
.dash-hero-actions{margin-top:20px!important;gap:10px!important;}
.dash-hero-actions .portal-btn.big{
  min-height:44px!important;
  padding:11px 18px!important;
  border-radius:12px!important;
  font-size:0.875rem!important;
}
.portal-btn.primary,
.dash-hero-actions .portal-btn.primary{
  background:var(--portal-primary)!important;
  color:#FFFFFF!important;
  border:1px solid var(--portal-primary)!important;
  box-shadow:0 10px 20px rgba(79,70,229,.18)!important;
}
.portal-btn.primary:hover,
.dash-hero-actions .portal-btn.primary:hover{background:var(--portal-primary-strong)!important;}
.portal-btn.secondary,
.dash-hero-actions .portal-btn.secondary{
  background:#FFFFFF!important;
  color:#1F2937!important;
  border:1px solid #CBD5E1!important;
  box-shadow:var(--portal-shadow-soft)!important;
}
.portal-btn.secondary:hover,
.dash-hero-actions .portal-btn.secondary:hover{
  background:#F8FAFC!important;
  border-color:#AEB9C8!important;
}

/* 프로필 카드: 작은 정보도 박스 경계가 보이도록 */
.dash-status-panel{
  padding:20px!important;
  background:#FFFFFF!important;
}
.dash-status-top{
  padding-bottom:16px!important;
  margin-bottom:14px!important;
  border-bottom:1px solid #E0E6EF!important;
}
.dashboard-page .portal-avatar-lg{
  width:54px!important;
  height:54px!important;
  border-radius:16px!important;
  background:linear-gradient(135deg,#4F46E5 0%,#6D5DF2 100%)!important;
  box-shadow:0 10px 18px rgba(79,70,229,.18)!important;
}
.dash-status-top b{font-size:1.125rem!important;color:#111827!important;}
.dash-status-top span{color:#667085!important;}
.dash-mini-grid{gap:10px!important;}
.dash-mini-grid div{
  background:#F8FAFC!important;
  border:1px solid #DDE4ED!important;
  border-radius:14px!important;
  padding:13px!important;
  box-shadow:none!important;
}
.dash-mini-grid span{color:#667085!important;font-size:0.75rem!important;}
.dash-mini-grid b{color:#111827!important;font-size:1.375rem!important;}

/* 최근 기록: 표처럼 읽히게, 리스트 경계 강화 */
.dash-record-card{
  padding:20px!important;
  background:#FFFFFF!important;
}
.portal-card-head.clean-head{
  align-items:center!important;
  padding-bottom:14px!important;
  margin-bottom:12px!important;
  border-bottom:1px solid #E0E6EF!important;
}
.portal-card-head h2{font-size:1.25rem!important;color:#111827!important;}
.portal-label{
  margin-bottom:4px!important;
  color:var(--portal-primary)!important;
  font-size:0.75rem!important;
  letter-spacing:.04em!important;
}
.portal-card-head a,
.portal-card-head button{
  background:#F8FAFC!important;
  border:1px solid #D8E0EA!important;
  color:#334155!important;
  border-radius:10px!important;
  box-shadow:none!important;
}
.portal-record-list,
.minimal-records{display:flex!important;flex-direction:column!important;gap:10px!important;}
.portal-record-item,
.minimal-records .portal-record-item{
  background:#FFFFFF!important;
  border:1px solid #D5DDE8!important;
  border-radius:14px!important;
  padding:13px 14px!important;
  box-shadow:0 4px 12px rgba(15,23,42,.035)!important;
  transition:border-color .16s ease, background .16s ease, box-shadow .16s ease!important;
}
.portal-record-item:hover,
.minimal-records .portal-record-item:hover{
  background:#FAFBFE!important;
  border-color:#AEB8C7!important;
  box-shadow:0 8px 18px rgba(15,23,42,.055)!important;
  transform:none!important;
}
.portal-record-title,
.portal-record-item b{color:#111827!important;font-weight:900!important;}
.portal-record-meta{color:#667085!important;font-size:0.8125rem!important;}
.portal-badge,
.portal-record-score,
.portal-score-badge{box-shadow:none!important;}
.portal-badge{border:1px solid rgba(148,163,184,.20)!important;}

/* 숨겨진 부가 영역은 기존 덜어내기 방향 유지 */
.dash-focus-grid,
.dash-metrics,
.dash-content-grid{display:none!important;}
.slim-notice,
.portal-notice{
  background:#FFFCF5!important;
  border:1px solid #E8D4A4!important;
  border-left:4px solid #C89535!important;
  border-radius:14px!important;
  box-shadow:none!important;
}

@media (max-width:1280px){.dash-hero{grid-template-columns:1fr;}}
@media (max-width:680px){
  .portal-main{padding:70px 16px 20px!important;}
  .dash-hero-copy,.dash-status-panel,.dash-record-card{border-radius:16px!important;padding:18px!important;}
  .dash-hero-copy::before{top:18px;bottom:18px;width:4px;}
  .dash-hero-actions{flex-direction:column;align-items:stretch;}
  .dash-hero-actions .portal-btn.big{width:100%;}
}

/* hover-purple-20260529-v1
   대시보드/기록/버튼 hover 피드백을 회색이 아닌 보라색 계열로 복구합니다. */
:root{
  --portal-primary:#5B4BE8;
  --portal-primary-strong:#4338CA;
  --portal-primary-soft:#F0EDFF;
  --portal-primary-border:#C9C2FF;
}
.portal-btn.secondary:hover,
.dash-hero-actions .portal-btn.secondary:hover,
.portal-card-head a:hover,
.portal-card-head button:hover{
  background:var(--portal-primary-soft)!important;
  border-color:var(--portal-primary-border)!important;
  color:var(--portal-primary-strong)!important;
  box-shadow:0 8px 18px rgba(91,75,232,.09)!important;
}
.portal-btn.primary:hover,
.dash-hero-actions .portal-btn.primary:hover{
  background:var(--portal-primary-strong)!important;
  border-color:var(--portal-primary-strong)!important;
  box-shadow:0 12px 24px rgba(91,75,232,.22)!important;
}
.portal-record-item,
.minimal-records .portal-record-item{
  position:relative!important;
  overflow:hidden!important;
}
.portal-record-item::before,
.minimal-records .portal-record-item::before{
  content:"";
  position:absolute;
  left:0;
  top:10px;
  bottom:10px;
  width:3px;
  border-radius:0 999px 999px 0;
  background:transparent;
  opacity:0;
  transition:opacity .16s ease,background .16s ease;
}
.portal-record-item:hover,
.minimal-records .portal-record-item:hover{
  background:#FBFAFF!important;
  border-color:var(--portal-primary-border)!important;
  box-shadow:0 10px 22px rgba(91,75,232,.09)!important;
}
.portal-record-item:hover::before,
.minimal-records .portal-record-item:hover::before{
  background:var(--portal-primary)!important;
  opacity:1!important;
}
.practice-material:hover,
.portal-action-card:hover,
.dash-focus-card:hover,
.portal-filter-pills button:hover,
.practice-category-tabs button:hover{
  background:var(--portal-primary-soft)!important;
  border-color:var(--portal-primary-border)!important;
  color:var(--portal-primary-strong)!important;
  box-shadow:0 10px 22px rgba(91,75,232,.09)!important;
}
.portal-tabs button:hover{
  background:var(--portal-primary-soft)!important;
  color:var(--portal-primary-strong)!important;
}
.portal-tabs button.active,
.portal-filter-pills button.active{
  background:var(--portal-primary)!important;
  border-color:var(--portal-primary)!important;
  color:#FFFFFF!important;
  box-shadow:0 10px 20px rgba(91,75,232,.18)!important;
}

/* Dashboard v2 - actual dashboard role + premium micro interactions */
:root{
  --dash-surface:#ffffff;
  --dash-surface-soft:#f8f9fd;
  --dash-line:#e5e8f0;
  --dash-ink:#101828;
  --dash-muted:#667085;
  --dash-purple:#7c3aed;
  --dash-purple-soft:#f3edff;
  --dash-navy:#111827;
}
.dashboard-executive{gap:18px;}
.dash-executive-hero{
  grid-template-columns:minmax(0,1fr) 320px;
  gap:18px;
}
.dash-executive-copy{
  min-height:210px;
  border-radius:28px;
  padding:30px 32px;
  background:
    radial-gradient(circle at 92% 15%, rgba(124,58,237,.22), transparent 32%),
    linear-gradient(135deg,#121826 0%,#1f2937 58%,#2e1065 100%);
}
.dash-executive-copy h1{
  max-width:760px;
  font-size:clamp(30px,3.5vw,48px);
}
.dash-executive-copy p{max-width:720px;}
.dashboard-profile-panel{
  border-radius:28px;
  padding:20px;
  background:linear-gradient(180deg,#fff 0%,#fafbff 100%);
}
.dashboard-mini-progress{display:grid;gap:8px;margin-top:auto;}
.dashboard-mini-progress div{
  display:flex;
  justify-content:space-between;
  gap:10px;
  border:1px solid #eef1f6;
  background:#fff;
  border-radius:14px;
  padding:10px 12px;
  font-size:0.75rem;
}
.dashboard-mini-progress span{color:var(--dash-muted);font-weight:850;}
.dashboard-mini-progress b{color:var(--dash-ink);font-weight:950;text-align:right;word-break:break-all;}
.dashboard-stat-grid{
  display:grid;
  grid-template-columns:minmax(360px,1.5fr) repeat(3,minmax(0,1fr));
  gap:14px;
}
.dashboard-progress-card,
.dashboard-stat-card{
  position:relative;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  border:1px solid var(--dash-line);
  background:var(--dash-surface);
  border-radius:24px;
  padding:20px;
  box-shadow:0 14px 38px rgba(15,23,42,.055);
}
.dashboard-progress-card .dashboard-course-link{margin-top:auto;}
.dashboard-progress-card .dashboard-course-main{margin-bottom:14px;}
.dashboard-progress-card::before,
.dashboard-stat-card::before,
.dashboard-consistency-card::before,
.dashboard-record-gateway::before,
.dashboard-feedback-brief::before{
  content:"";
  position:absolute;
  left:18px;
  right:18px;
  top:0;
  height:3px;
  border-radius:999px;
  background:linear-gradient(90deg,rgba(124,58,237,.75),rgba(167,139,250,.18));
}
.dashboard-stat-card span,
.dash-card-eyebrow{
  display:block;
  color:#667085;
  font-size:0.75rem;
  font-weight:950;
  letter-spacing:-.01em;
}
.dashboard-stat-card b{
  display:block;
  margin-top:10px;
  color:#111827;
  font-size:1.875rem;
  line-height:1.1;
  font-weight:980;
  letter-spacing:-.05em;
}
.dashboard-stat-card small{
  display:block;
  margin-top:auto;
  padding-top:9px;
  color:#7b8496;
  font-size:0.75rem;
  font-weight:760;
  line-height:1.45;
}
.dashboard-course-main{
  display:flex;
  align-items:center;
  gap:14px;
  margin-top:13px;
}
.dashboard-course-icon{
  width:54px;
  height:54px;
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:20px;
  background:linear-gradient(135deg,#f5f0ff,#ffffff);
  border:1px solid #e9ddff;
  font-size:1.625rem;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
}
.dashboard-course-main b{
  display:block;
  color:#111827;
  font-size:1.75rem;
  font-weight:980;
  letter-spacing:-.05em;
}
.dashboard-course-main small{
  display:block;
  margin-top:5px;
  color:#667085;
  font-size:0.8125rem;
  font-weight:780;
}
.dashboard-course-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-top:18px;
  min-height:42px;
  padding:0 16px;
  border-radius:14px;
  background:var(--portal-primary);
  color:#fff;
  text-decoration:none;
  font-size:0.875rem;
  font-weight:950;
  box-shadow:0 12px 26px rgba(79,70,229,.22);
  transition:transform .18s ease,box-shadow .18s ease,background .18s ease;
}
.dashboard-course-link:hover{
  transform:translateY(-2px);
  background:#4338ca;
  box-shadow:0 16px 30px rgba(79,70,229,.28);
}
.dashboard-main-grid{
  grid-template-columns:minmax(0,1.45fr) minmax(320px,.75fr);
  gap:16px;
}
.dashboard-consistency-card,
.dashboard-record-gateway,
.dashboard-feedback-brief{position:relative;overflow:hidden;}
.dashboard-chart-note{
  margin:-4px 0 14px;
  color:#7b8496;
  font-size:0.8125rem;
  font-weight:760;
}
.dashboard-consistency-chart{height:245px;gap:12px;}
.dashboard-day-bar .portal-bar-track{
  background:#eef1f7;
  border:1px solid #e6eaf2;
}
.dashboard-day-bar .portal-bar-fill{
  background:linear-gradient(180deg,#8b5cf6 0%,#c4b5fd 100%);
  border-radius:999px 999px 6px 6px;
  box-shadow:0 8px 18px rgba(124,58,237,.18);
}
.dashboard-day-bar:not(.active) .portal-bar-fill{background:#d7dce8;box-shadow:none;}
.dashboard-day-bar .portal-bar-value{font-weight:950;color:#111827;}
.dashboard-gateway-copy{
  margin:0 0 16px;
  color:#667085;
  font-size:0.875rem;
  line-height:1.7;
  font-weight:740;
}
.dashboard-recent-summary{
  border:1px solid #eef1f6;
  background:linear-gradient(180deg,#fbfcff,#fff);
  border-radius:18px;
  padding:15px;
  margin-bottom:14px;
}
.dashboard-recent-summary b{
  display:block;
  color:#111827;
  font-size:0.9375rem;
  font-weight:950;
  line-height:1.45;
}
.dashboard-recent-summary span{
  display:block;
  margin-top:5px;
  color:#667085;
  font-size:0.8125rem;
  line-height:1.5;
  font-weight:740;
}
.dashboard-wide-link{width:100%;justify-content:center;}
.dashboard-bottom-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;}
.dashboard-feedback-brief .portal-stack{grid-template-columns:repeat(2,minmax(0,1fr));}
.dashboard-feedback-brief .portal-empty{grid-column:1/-1;}
.btn-emoji{display:inline-flex;margin-right:8px;transform-origin:center;}
.portal-btn:hover .btn-emoji{animation:soriIconPop .58s cubic-bezier(.2,1.25,.32,1) both;}
.nav-item .nav-icon,
.focus-icon,
.dashboard-course-icon{
  transform-origin:center;
  will-change:transform;
}
.nav-item:hover .nav-icon,
.nav-item:focus-visible .nav-icon,
.dash-focus-card:hover .focus-icon,
.dashboard-progress-card:hover .dashboard-course-icon{
  animation:soriIconPop .58s cubic-bezier(.2,1.25,.32,1) both;
}
.nav-section-title:hover .nav-section-arrow{transform:translateY(1px);}
@keyframes soriIconPop{
  0%{transform:translateY(0) scale(1) rotate(0deg);}
  38%{transform:translateY(-5px) scale(1.16) rotate(-6deg);}
  64%{transform:translateY(1px) scale(.98) rotate(3deg);}
  100%{transform:translateY(0) scale(1) rotate(0deg);}
}
@media (prefers-reduced-motion: reduce){
  .nav-item:hover .nav-icon,
  .nav-item:focus-visible .nav-icon,
  .dash-focus-card:hover .focus-icon,
  .dashboard-progress-card:hover .dashboard-course-icon,
  .portal-btn:hover .btn-emoji{animation:none!important;}
}
@media (max-width:1280px){
  .dash-executive-hero{grid-template-columns:1fr;}
  .dashboard-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .dashboard-progress-card{grid-column:1/-1;}
  .dashboard-main-grid{grid-template-columns:1fr;}
}
@media (max-width:760px){
  .dash-executive-copy{padding:24px;min-height:220px;}
  .dashboard-stat-grid{grid-template-columns:1fr;}
  .dashboard-feedback-brief .portal-stack{grid-template-columns:1fr;}
  .dashboard-course-main b{font-size:1.5rem;}
  .dashboard-stat-card b{font-size:1.6875rem;}
}

/* dashboard-goals-20260529: 간결한 대시보드 - 목표/요일 균형/피드백 요약 중심 */
.dashboard-executive{gap:16px!important;}
.dash-executive-copy{
  min-height:172px!important;
  padding:24px 28px!important;
  border-radius:24px!important;
}
.dash-executive-copy h1{font-size:clamp(26px,3vw,40px)!important;line-height:1.12!important;}
.dash-executive-copy p{font-size:0.9375rem!important;line-height:1.55!important;}
.dashboard-profile-panel{border-radius:24px!important;padding:18px!important;}
.dashboard-stat-grid{gap:12px!important;}
.dashboard-progress-card,
.dashboard-stat-card{border-radius:20px!important;padding:18px!important;box-shadow:0 10px 28px rgba(15,23,42,.05)!important;}
.dashboard-stat-card b{font-size:1.6875rem!important;}
.dashboard-course-icon{width:48px!important;height:48px!important;border-radius:17px!important;font-size:1.4375rem!important;}
.dashboard-course-main b{font-size:1.5625rem!important;}
.dashboard-course-link{min-height:39px!important;border-radius:13px!important;margin-top:15px!important;}
.dashboard-focus-grid{grid-template-columns:minmax(0,1.12fr) minmax(360px,.88fr)!important;gap:14px!important;}
.dashboard-weekday-card,
.dashboard-goal-card,
.dashboard-feedback-summary-card,
.dashboard-link-card{position:relative;overflow:hidden;border-color:#e3e8f1!important;box-shadow:0 10px 30px rgba(15,23,42,.045)!important;}
.dashboard-weekday-card::before,
.dashboard-goal-card::before,
.dashboard-feedback-summary-card::before,
.dashboard-link-card::before{
  content:"";position:absolute;left:18px;right:18px;top:0;height:3px;border-radius:999px;background:linear-gradient(90deg,rgba(91,75,232,.72),rgba(196,181,253,.12));
}
.dashboard-weekday-chart{height:232px;gap:13px;}
.dashboard-weekday-empty{grid-column:1/-1;align-self:center;justify-self:center;width:100%;max-width:420px;margin:auto;}
.dashboard-weekday-bar .portal-bar-track{height:155px;background:#f1f4f9;border:1px solid #e4e9f2;border-radius:16px;}
.dashboard-weekday-bar.is-empty .portal-bar-track{background:#fbfcfe;border-style:dashed;border-color:#e9edf4;}
.dashboard-weekday-bar.is-empty .portal-bar-label{color:#b6bfcd;}
.dashboard-weekday-bar.is-empty .portal-bar-label small{color:#c6cdd9;}
.dashboard-weekday-bar .portal-bar-fill{background:linear-gradient(180deg,#6d5df2 0%,#b7aefc 100%);border-radius:999px 999px 7px 7px;box-shadow:0 9px 18px rgba(91,75,232,.16);}
.dashboard-weekday-bar:not(.active) .portal-bar-fill{background:#d9dfeb;box-shadow:none;}
.dashboard-weekday-bar.today .portal-bar-label{color:#4f46e5;}
.dashboard-weekday-bar.today .portal-bar-track{border-color:#c9c2ff;background:#f3f0ff;}
.dashboard-weekday-bar .portal-bar-label{display:flex;flex-direction:column;gap:2px;align-items:center;font-size:0.8125rem;}
.dashboard-weekday-bar .portal-bar-label small{font-size:0.625rem;font-weight:800;color:#98a2b3;}
.dashboard-chart-note{font-size:0.8125rem!important;margin:-3px 0 12px!important;color:#667085!important;}
.dashboard-goal-summary{
  display:flex;align-items:center;justify-content:space-between;gap:14px;margin:-2px 0 12px;padding:12px 14px;border:1px solid #edf0f6;border-radius:16px;background:linear-gradient(180deg,#fbfcff,#fff);
}
.dashboard-goal-summary b{color:#111827;font-size:0.9375rem;font-weight:950;}
.dashboard-goal-summary span{color:#667085;font-size:0.75rem;font-weight:780;text-align:right;}
.dashboard-text-btn{border:0;background:#f2f0ff;color:#4f46e5;border-radius:999px;min-height:30px;padding:0 12px;font-size:0.75rem;font-weight:950;cursor:pointer;transition:transform .16s ease,background .16s ease,box-shadow .16s ease;}
.dashboard-text-btn:hover{background:#e8e4ff;box-shadow:0 8px 16px rgba(91,75,232,.12);transform:translateY(-1px);}
.dashboard-goal-list{display:grid;gap:10px;}
.dashboard-goal-item{border:1px solid #e8edf5;background:#fff;border-radius:17px;padding:12px;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;}
.dashboard-goal-item:hover{transform:translateY(-2px);border-color:#cbc4ff;box-shadow:0 12px 24px rgba(91,75,232,.09);}
.dashboard-goal-item.done{background:linear-gradient(180deg,#fcfbff,#fff);border-color:#d9d3ff;}
.dashboard-goal-top{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;}
.dashboard-goal-icon{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:14px;background:#f3f0ff;border:1px solid #e4ddff;font-size:1.1875rem;transform-origin:center;}
.dashboard-goal-item:hover .dashboard-goal-icon{animation:soriIconPop .58s cubic-bezier(.2,1.25,.32,1) both;}
.dashboard-goal-top b{display:block;color:#101828;font-size:0.875rem;font-weight:950;}
.dashboard-goal-top small{display:block;margin-top:2px;color:#667085;font-size:0.75rem;font-weight:820;}
.dashboard-goal-state{padding:5px 9px;border-radius:999px;background:#f4f6fb;color:#667085;font-size:0.6875rem;font-weight:950;}
.dashboard-goal-item.done .dashboard-goal-state{background:#ecfdf3;color:#067647;}
.dashboard-goal-bar{height:7px;margin:10px 0 9px;border-radius:999px;background:#eef2f7;overflow:hidden;}
.dashboard-goal-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#5b4be8,#a78bfa);transition:width .35s ease;}
.dashboard-goal-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;color:#667085;font-size:0.75rem;font-weight:850;}
.dashboard-goal-controls button{width:26px;height:26px;border-radius:9px;border:1px solid #e1e7f0;background:#fff;color:#4f46e5;font-weight:950;cursor:pointer;transition:background .16s ease,transform .16s ease,border-color .16s ease;}
.dashboard-goal-controls button:hover{background:#f3f0ff;border-color:#c9c2ff;transform:translateY(-1px);}
.dashboard-summary-grid{grid-template-columns:minmax(0,1fr) minmax(320px,.65fr)!important;gap:14px!important;}
.dashboard-feedback-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.dashboard-feedback-summary.is-hero{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:stretch;}
.dashboard-feedback-summary .feedback-hero{border:1px solid #ddd6fe;background:linear-gradient(135deg,#f5f3ff,#eef2ff);border-radius:16px;padding:15px 16px;}
.dashboard-feedback-summary .feedback-hero span{color:#5b4be8;}
.dashboard-feedback-summary .feedback-hero b{font-size:1.875rem;color:#3730a3;}
.dashboard-feedback-summary .feedback-hero small{display:block;margin-top:6px;color:#7c74d8;font-size:0.75rem;font-weight:780;}
.dashboard-feedback-summary .feedback-sub{display:grid;gap:10px;}
.dashboard-feedback-summary .feedback-sub b{font-size:1.0625rem;margin-top:3px;}
.dashboard-feedback-summary div{border:1px solid #e8edf5;background:#fff;border-radius:16px;padding:13px 14px;}
.dashboard-feedback-summary .feedback-sub{border:0;background:none;padding:0;}
.dashboard-feedback-summary span{display:block;color:#667085;font-size:0.75rem;font-weight:900;}
.dashboard-feedback-summary b{display:block;margin-top:6px;color:#111827;font-size:1.4375rem;font-weight:980;letter-spacing:-.04em;}
.dashboard-feedback-latest{margin:12px 0 0;padding:11px 13px;border-radius:14px;background:#f8f9fd;color:#667085;font-size:0.8125rem;font-weight:780;line-height:1.5;}
.dashboard-link-list{display:grid;gap:10px;}
.dashboard-link-list a{display:grid;grid-template-columns:34px minmax(0,1fr);grid-template-rows:auto auto;column-gap:10px;align-items:center;min-height:58px;border:1px solid #e8edf5;border-radius:16px;background:#fff;padding:12px;text-decoration:none;color:#111827;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease;}
.dashboard-link-list a:hover{transform:translateY(-2px);border-color:#cbc4ff;background:#fcfbff;box-shadow:0 12px 24px rgba(91,75,232,.09);}
.dashboard-link-list .btn-emoji{grid-row:1 / 3;width:34px;height:34px;align-items:center;justify-content:center;margin:0;border-radius:13px;background:#f3f0ff;border:1px solid #e4ddff;}
.dashboard-link-list a:hover .btn-emoji{animation:soriIconPop .58s cubic-bezier(.2,1.25,.32,1) both;}
.dashboard-link-list b{font-size:0.875rem;font-weight:950;}
.dashboard-link-list small{font-size:0.75rem;font-weight:760;color:#667085;}
@media (max-width:1280px){
  .dashboard-focus-grid,.dashboard-summary-grid{grid-template-columns:1fr!important;}
}
@media (max-width:760px){
  .dashboard-feedback-summary{grid-template-columns:1fr;}
  .dashboard-goal-summary{align-items:flex-start;flex-direction:column;}
  .dashboard-goal-summary span{text-align:left;}
  .dashboard-weekday-chart{height:210px;gap:8px;}
}

/* dashboard-goal-visible-20260529-v1
   이전 덜어내기 스타일에서 dash-content-grid를 숨긴 규칙이 남아 있어
   요일별 꾸준함/오늘 공부 목표 영역이 화면에 나오지 않던 문제를 복구합니다. */
.dashboard-executive .dash-content-grid.dashboard-focus-grid{
  display:grid!important;
  grid-template-columns:minmax(0,1.12fr) minmax(360px,.88fr)!important;
  gap:14px!important;
  align-items:stretch!important;
}
.dashboard-executive .dashboard-weekday-card,
.dashboard-executive .dashboard-goal-card{
  display:block!important;
}
.dashboard-executive .dashboard-goal-card{
  min-height:100%;
}
@media (max-width:1280px){
  .dashboard-executive .dash-content-grid.dashboard-focus-grid{
    grid-template-columns:1fr!important;
  }
}


/* dashboard-goal-compact-20260529-v1
   오늘 공부 목표 영역 세로 여백 축소: 카드형을 얇은 진행 리스트로 정리 */
.dashboard-executive .dashboard-goal-card{
  padding:20px 22px!important;
}
.dashboard-executive .dashboard-goal-card .portal-card-head{
  margin-bottom:12px!important;
  padding-bottom:12px!important;
}
.dashboard-executive .dashboard-goal-summary{
  margin:0 0 10px!important;
  padding:9px 12px!important;
  min-height:0!important;
  border-radius:14px!important;
}
.dashboard-executive .dashboard-goal-summary b{
  font-size:0.875rem!important;
}
.dashboard-executive .dashboard-goal-summary span{
  font-size:0.6875rem!important;
}
.dashboard-executive .dashboard-goal-list{
  gap:8px!important;
}
.dashboard-executive .dashboard-goal-item{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  grid-template-rows:auto auto!important;
  align-items:center!important;
  column-gap:12px!important;
  row-gap:6px!important;
  padding:9px 10px!important;
  border-radius:14px!important;
}
.dashboard-executive .dashboard-goal-item:hover{
  transform:translateY(-1px)!important;
  box-shadow:0 8px 18px rgba(91,75,232,.075)!important;
}
.dashboard-executive .dashboard-goal-top{
  grid-column:1 / 2!important;
  grid-row:1 / 2!important;
  display:grid!important;
  grid-template-columns:32px minmax(0,1fr) auto!important;
  gap:9px!important;
  align-items:center!important;
}
.dashboard-executive .dashboard-goal-icon{
  width:32px!important;
  height:32px!important;
  border-radius:12px!important;
  font-size:1.0625rem!important;
}
.dashboard-executive .dashboard-goal-top b{
  font-size:0.8125rem!important;
  line-height:1.15!important;
}
.dashboard-executive .dashboard-goal-top small{
  margin-top:1px!important;
  font-size:0.6875rem!important;
  line-height:1.1!important;
}
.dashboard-executive .dashboard-goal-state{
  padding:4px 8px!important;
  font-size:0.625rem!important;
}
.dashboard-executive .dashboard-goal-bar{
  grid-column:1 / 2!important;
  grid-row:2 / 3!important;
  height:6px!important;
  margin:0 0 0 41px!important;
}
.dashboard-executive .dashboard-goal-controls{
  grid-column:2 / 3!important;
  grid-row:1 / 3!important;
  justify-content:flex-end!important;
  gap:6px!important;
  white-space:nowrap!important;
  font-size:0.6875rem!important;
}
.dashboard-executive .dashboard-goal-controls button{
  width:24px!important;
  height:24px!important;
  border-radius:8px!important;
  font-size:0.875rem!important;
  line-height:1!important;
}
@media (max-width:760px){
  .dashboard-executive .dashboard-goal-card{
    padding:18px 16px!important;
  }
  .dashboard-executive .dashboard-goal-item{
    grid-template-columns:1fr!important;
  }
  .dashboard-executive .dashboard-goal-controls{
    grid-column:1 / 2!important;
    grid-row:3 / 4!important;
  }
}


/* dashboard-hero-remove-20260529-v1
   대시보드 상단의 큰 인사/프로필 히어로 제거 후, 핵심 지표가 첫 화면에 바로 보이도록 정리합니다. */
.dashboard-executive{
  gap:14px!important;
}
.dashboard-executive > .dashboard-stat-grid:first-of-type{
  margin-top:0!important;
}
.dashboard-executive .dashboard-stat-grid{
  grid-template-columns:minmax(340px,1.35fr) repeat(3,minmax(0,1fr))!important;
  gap:13px!important;
}
.dashboard-executive .dashboard-progress-card,
.dashboard-executive .dashboard-stat-card{
  min-height:128px!important;
  padding:18px 20px!important;
  border-radius:20px!important;
}
.dashboard-executive .dashboard-course-main{
  margin-top:10px!important;
}
.dashboard-executive .dashboard-course-icon{
  width:46px!important;
  height:46px!important;
  border-radius:16px!important;
  font-size:1.375rem!important;
}
.dashboard-executive .dashboard-course-main b{
  font-size:1.5rem!important;
}
.dashboard-executive .dashboard-course-main small{
  font-size:0.75rem!important;
}
.dashboard-executive .dashboard-course-link{
  margin-top:12px!important;
  min-height:36px!important;
  padding:0 14px!important;
  border-radius:12px!important;
  font-size:0.8125rem!important;
}
.dashboard-executive .dashboard-stat-card b{
  margin-top:8px!important;
  font-size:1.6875rem!important;
}
.dashboard-executive .dashboard-stat-card small{
  margin-top:auto!important;
  padding-top:7px!important;
}
.dashboard-executive .slim-notice{
  margin-top:0!important;
}
@media (max-width:1280px){
  .dashboard-executive .dashboard-stat-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media (max-width:760px){
  .dashboard-executive .dashboard-stat-grid{
    grid-template-columns:1fr!important;
  }
}

/* dashboard-compact-home-20260529-v1
   큰 히어로를 되살리지 않고, 첫 화면 느낌만 주는 얇은 홈 스트립으로 정리합니다. */
.dashboard-executive{
  gap:14px!important;
}
.dashboard-home-strip{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:18px;
  min-height:118px;
  padding:22px 24px 22px 28px;
  border:1px solid #e3e8f1;
  border-radius:24px;
  background:
    radial-gradient(circle at 94% 16%, rgba(124,58,237,.13), transparent 30%),
    linear-gradient(135deg,#ffffff 0%,#f8f9ff 52%,#ffffff 100%);
  box-shadow:0 12px 34px rgba(15,23,42,.052);
  overflow:hidden;
}
.dashboard-home-strip::before{
  content:"";
  position:absolute;
  left:0;
  top:18px;
  bottom:18px;
  width:5px;
  border-radius:0 999px 999px 0;
  background:linear-gradient(180deg,#5b4be8,#9b87ff);
  box-shadow:0 10px 24px rgba(91,75,232,.22);
}
.dashboard-home-main{
  min-width:0;
}
.dashboard-home-main .portal-kicker{
  margin-bottom:8px;
  color:#5b4be8;
}
.dashboard-home-main h1{
  margin:0;
  color:#111827;
  font-size:clamp(25px,2.8vw,38px);
  line-height:1.12;
  font-weight:980;
  letter-spacing:-.055em;
}
.dashboard-home-main p{
  margin:10px 0 0;
  max-width:760px;
  color:#667085;
  font-size:0.875rem;
  line-height:1.55;
  font-weight:720;
}
.dashboard-home-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  flex-wrap:wrap;
}
.dashboard-home-actions .portal-btn.big{
  min-height:42px;
  padding:0 15px;
  border-radius:14px;
  font-size:0.8125rem;
  box-shadow:none;
}
.dashboard-home-actions .portal-btn.primary{
  box-shadow:0 12px 24px rgba(91,75,232,.18);
}
.dashboard-executive > .dashboard-stat-grid:first-of-type{
  margin-top:0!important;
}
@media (max-width:1280px){
  .dashboard-home-strip{
    grid-template-columns:1fr;
    align-items:flex-start;
  }
  .dashboard-home-actions{
    justify-content:flex-start;
  }
}
@media (max-width:760px){
  .dashboard-home-strip{
    min-height:0;
    padding:18px 17px 18px 20px;
    border-radius:20px;
  }
  .dashboard-home-main h1{
    font-size:1.625rem;
  }
  .dashboard-home-actions{
    width:100%;
  }
  .dashboard-home-actions .portal-btn.big{
    width:100%;
  }
}

/* dashboard-dedup-smart-20260529-v1
   중복 바로가기 제거 + 홈 요약칩/승급 현황 카드 정리 */
.dashboard-home-strip{
  grid-template-columns:minmax(0,1fr) minmax(300px,auto)!important;
  min-height:106px!important;
  padding:20px 24px 20px 28px!important;
}
.dashboard-home-main h1{
  font-size:clamp(24px,2.45vw,34px)!important;
}
.dashboard-home-main p{
  margin-top:8px!important;
  font-size:0.8125rem!important;
}
.dashboard-home-pills{
  display:grid;
  grid-template-columns:repeat(3,minmax(86px,1fr));
  gap:8px;
  align-items:stretch;
}
.dashboard-home-pills div{
  min-width:86px;
  padding:11px 12px;
  border:1px solid #e5e8f0;
  border-radius:15px;
  background:rgba(255,255,255,.82);
  box-shadow:0 6px 16px rgba(15,23,42,.035);
}
.dashboard-home-pills span{
  display:block;
  color:#667085;
  font-size:0.6875rem;
  font-weight:900;
  line-height:1.15;
}
.dashboard-home-pills b{
  display:block;
  margin-top:5px;
  color:#101828;
  font-size:1.1875rem;
  font-weight:980;
  letter-spacing:-.045em;
}
.dashboard-routine-card{
  position:relative;
  overflow:hidden;
  border-color:#e3e8f1!important;
  box-shadow:0 10px 30px rgba(15,23,42,.045)!important;
}
.dashboard-routine-card::before{
  content:"";
  position:absolute;
  left:18px;
  right:18px;
  top:0;
  height:3px;
  border-radius:999px;
  background:linear-gradient(90deg,rgba(91,75,232,.72),rgba(196,181,253,.12));
}
.dashboard-routine-list{
  display:grid;
  gap:9px;
  margin:0;
  padding:0;
  list-style:none;
}
.dashboard-routine-list li{
  display:grid;
  grid-template-columns:30px minmax(0,1fr);
  grid-template-rows:auto auto;
  column-gap:10px;
  align-items:center;
  padding:11px 12px;
  border:1px solid #e8edf5;
  border-radius:15px;
  background:#fff;
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease;
}
.dashboard-routine-list li:hover{
  transform:translateY(-1px);
  border-color:#cbc4ff;
  background:#fcfbff;
  box-shadow:0 10px 20px rgba(91,75,232,.08);
}
.dashboard-routine-list li span{
  grid-row:1 / 3;
  width:30px;
  height:30px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:11px;
  background:#f3f0ff;
  color:#4f46e5;
  border:1px solid #e4ddff;
  font-size:0.8125rem;
  font-weight:950;
}
.dashboard-routine-list li b{
  color:#101828;
  font-size:0.875rem;
  line-height:1.25;
  font-weight:950;
}
.dashboard-routine-list li small{
  margin-top:2px;
  color:#667085;
  font-size:0.75rem;
  line-height:1.35;
  font-weight:760;
}
.dashboard-routine-list li.done span{
  background:#ecfdf3;
  color:#067647;
  border-color:#c8f5dc;
}
.dashboard-routine-note{
  margin:12px 0 0;
  padding:11px 12px;
  border-radius:14px;
  background:#f8f9fd;
  color:#667085;
  font-size:0.75rem;
  line-height:1.45;
  font-weight:780;
}
.dashboard-summary-grid{
  grid-template-columns:minmax(0,1fr) minmax(300px,.58fr)!important;
}
@media (max-width:1280px){
  .dashboard-home-strip{grid-template-columns:1fr!important;}
  .dashboard-home-pills{grid-template-columns:repeat(3,minmax(0,1fr));}
  .dashboard-summary-grid{grid-template-columns:1fr!important;}
}
@media (max-width:760px){
  .dashboard-home-pills{grid-template-columns:1fr;}
  .dashboard-home-pills div{padding:10px 11px;}
}

/* dashboard-unlock-only-20260529-v1
   대시보드 하단 카드는 진도 승급실 응시 현황만 표시합니다. */
.dashboard-home-pills{
  grid-template-columns:repeat(4,minmax(76px,1fr))!important;
}
.dashboard-unlock-summary{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:11px;
  align-items:center;
  margin:0 0 11px;
  padding:12px;
  border:1px solid #e4ddff;
  border-radius:16px;
  background:linear-gradient(135deg,#fbfaff 0%,#ffffff 72%);
  box-shadow:0 8px 18px rgba(91,75,232,.055);
}
.dashboard-unlock-count{
  min-width:86px;
  padding:9px 12px;
  border-radius:14px;
  background:#f3f0ff;
  border:1px solid #e4ddff;
  text-align:center;
}
.dashboard-unlock-count span,
.dashboard-unlock-copy small{
  display:block;
  color:#667085;
  font-size:0.6875rem;
  font-weight:900;
  line-height:1.25;
}
.dashboard-unlock-count b{
  display:block;
  margin-top:3px;
  color:#4f46e5;
  font-size:1.5rem;
  font-weight:980;
  letter-spacing:-.05em;
}
.dashboard-unlock-copy strong{
  display:block;
  color:#101828;
  font-size:0.875rem;
  font-weight:950;
  line-height:1.25;
}
.dashboard-unlock-copy small{
  margin-top:4px;
  font-weight:780;
}
.dashboard-routine-list li[data-routine-href]{
  cursor:pointer;
}
.dashboard-routine-list li.unlock-first{
  grid-template-columns:30px minmax(0,1fr) auto;
  background:linear-gradient(135deg,#ffffff 0%,#fbfaff 100%);
  border-color:#ddd6fe;
}
.dashboard-routine-list li.unlock-first span{
  background:#ede9fe;
  color:#4f46e5;
  border-color:#d8ccff;
}
.dashboard-routine-list li.unlock-first em{
  grid-row:1 / 3;
  grid-column:3 / 4;
  align-self:center;
  padding:7px 10px;
  border-radius:999px;
  background:#5b4be8;
  color:#fff;
  font-style:normal;
  font-size:0.6875rem;
  font-weight:950;
  box-shadow:0 8px 16px rgba(91,75,232,.16);
}
.dashboard-routine-list li.unlock-first:hover em{
  transform:translateY(-1px);
}
.nav-item#unlockRoomNavItem .nav-icon{
  background:#f3f0ff;
  border-radius:10px;
}
@media (max-width:1280px){
  .dashboard-home-pills{grid-template-columns:repeat(4,minmax(0,1fr))!important;}
}
@media (max-width:760px){
  .dashboard-home-pills{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  .dashboard-unlock-summary{grid-template-columns:1fr;}
  .dashboard-unlock-count{text-align:left;}
  .dashboard-routine-list li.unlock-first{grid-template-columns:30px minmax(0,1fr);}
  .dashboard-routine-list li.unlock-first em{grid-column:2 / 3;grid-row:3 / 4;justify-self:start;margin-top:6px;}
}


/* dashboard-unlock-only-20260529-v1 */
.dashboard-unlock-route-card .portal-card-head{
  margin-bottom:12px;
}
.dashboard-unlock-route-card .dashboard-routine-list{
  margin-top:0;
}
.dashboard-unlock-route-card .dashboard-routine-list li.unlock-first span{
  font-size:0.9375rem;
}
.dashboard-unlock-route-card .dashboard-routine-note{
  margin-top:10px;
}


/* dashboard-unlock-weekly3-20260529-v1
   진도 승급실 응시 기준을 하루 2회에서 주 3회로 변경합니다. */
.dashboard-unlock-route-card .portal-label::after{content:' · 주 3회 무료';font-weight:900;color:#7c3aed;}
