:root{--primary-500: #0001beff;--primary-600: #0001a8ff;--orange-accent: #ff6b35;--orange-light: #ffb39d;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-600: #4b5563;--white: #ffffff}body{font-family:Open Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;padding:16px;background-color:var(--gray-50);color:var(--gray-600)}.container{max-width:95vw;margin:auto}h1{font-size:32px;line-height:48px;font-weight:700;color:var(--primary-500);font-family:Open Sans,sans-serif;margin:0 0 24px}h2{font-size:24px;line-height:36px;font-weight:700;color:var(--primary-500);font-family:Open Sans,sans-serif;margin:24px 0 16px;display:flex;align-items:center;gap:8px}h3{font-size:18px;line-height:28px;font-weight:600;color:var(--gray-600);margin:12px 0 8px}.projects{margin-bottom:12px}.alert{border:2px solid #ecc528;border-radius:12px;background:#fffbeb;padding:16px 20px;margin-bottom:8px}.alert.info{background:#e0f2fe;border-color:#0284c7}.alert.warning{background:#ffe9cd;border-color:#dd9332}.alert.critical{background:#f8d7da;border-color:#b32d3a}button{background-color:var(--primary-500);color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:600;font-size:14px;transition:background-color .2s}button:hover{background-color:var(--primary-600)}select{padding:8px 12px;border:1px solid var(--gray-300);border-radius:4px;font-family:Open Sans,sans-serif;font-size:14px;background-color:var(--white);cursor:pointer}section{background-color:var(--white);padding:20px;margin-bottom:20px;border-radius:8px;box-shadow:0 1px 3px #0000001a}.app-header{position:relative;margin-bottom:24px;border-bottom:2px solid var(--gray-200);padding-bottom:12px}.header-top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.header-title{margin:0;white-space:nowrap}.header-actions{display:flex;align-items:center;gap:8px}.language-switcher{display:flex;align-items:center;gap:4px;background:none;border:1px solid var(--gray-300, #d1d5db);border-radius:4px;padding:4px 8px;cursor:pointer;font-size:13px;font-weight:600;color:var(--primary-500, #0001be)}.language-switcher:hover{background:var(--gray-100, #f3f4f6)}.header-logout{display:block;width:fit-content;text-align:left;margin-top:4px}.header-logout-mobile{display:none}.nav-hamburger{display:flex;flex-direction:column;gap:4px;background:none;border:none;padding:8px;cursor:pointer}.hamburger-line{display:block;width:24px;height:24px;color:var(--primary-500);border-radius:2px}.header-nav{display:flex;flex-direction:column;gap:8px;align-items:flex-end;flex-wrap:wrap}.nav-btn{background-color:var(--white);color:var(--primary-500);border:2px solid var(--primary-500);padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:600;font-size:14px;transition:all .2s;font-family:Open Sans,sans-serif}.nav-btn:hover{background-color:#f0f4ff}.nav-btn-active{background-color:var(--primary-500);color:var(--white)}.nav-btn-active:hover{background-color:var(--primary-600)}.nav-overlay{display:none}@media (max-width: 900px){.header-top{flex-wrap:wrap}.header-title{font-size:24px;line-height:32px}}@media (max-width: 600px){.header-title{font-size:20px;line-height:28px;flex:1}.header-nav{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;background:var(--white);border:1px solid var(--gray-200);border-radius:8px;box-shadow:0 8px 24px #00000026;padding:8px;z-index:100;gap:4px}.header-nav-open{display:flex}.nav-btn{width:100%;text-align:left}.nav-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:99;background:transparent}}.dashboard-new{width:100%}.dashboard-new-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px;flex-wrap:wrap}.dashboard-tabs{display:inline-flex;border:2px solid var(--primary-500);border-radius:6px;overflow:hidden}.dashboard-tab{padding:8px 20px;border:none;border-radius:0;font-weight:600;font-size:14px;font-family:Open Sans,sans-serif;cursor:pointer;transition:all .2s;background-color:var(--white);color:var(--primary-500)}.dashboard-tab.active{background-color:var(--primary-500);color:var(--white)}.dashboard-tab:hover:not(.active){background-color:#f0f4ff}.alert-banner{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px}.alert-icon{color:#4b5563!important}.alert-compact{display:inline-flex;align-items:center;gap:8px;padding:10px 12px;margin:0;min-height:44px}.alert-compact.is-expanded{box-shadow:0 0 0 2px #0f172a14}.alert-compact-label{font-size:12px;font-weight:700;color:#4b5563}.alert-card{padding:16px 20px;max-width:380px}.alert-banner-content>span{display:flex;align-items:center;gap:8px;margin-bottom:6px}.alert-banner-icon{font-size:24px;flex-shrink:0}.alert-banner-content strong{display:block;font-size:14px;color:#4b5563;margin-bottom:4px}.alert-banner-content p{font-size:13px;color:var(--gray-500);margin:0}.project-cards-grid{display:flex;flex-wrap:wrap;gap:24px}.project-card{flex:1;min-width:280px;border:2px solid #e5e7eb;border-radius:16px;overflow:hidden;background:var(--white);box-shadow:0 1px 4px #0000000f;transition:box-shadow .2s}.project-card:hover{box-shadow:0 4px 16px #0000001a}.project-card-header{padding:16px 20px;text-align:center}.project-card-title{margin:0;font-size:18px;font-weight:700;color:var(--gray-600)}.project-card-body{padding:16px}.project-card-mobile{display:none}.card-section{border-left:4px solid var(--gray-300);padding:12px 16px;margin-bottom:12px;background:var(--white);border-radius:0 8px 8px 0;box-shadow:0 1px 2px #0000000a}.card-section-plain{padding:12px 16px;margin-bottom:8px;border:1px solid var(--gray-200);border-radius:8px}.card-section-label{font-size:11px;font-weight:700;letter-spacing:.5px;color:var(--gray-500);text-transform:uppercase;margin-bottom:8px}.card-section-label-right{font-size:11px;font-weight:700;letter-spacing:.5px;color:var(--gray-500);text-transform:uppercase;margin-bottom:4px;text-align:right}.cost-row{display:flex;align-items:center;gap:16px}.cost-item{display:flex;flex-direction:column}.cost-label{font-size:10px;font-weight:600;color:var(--gray-400);text-transform:uppercase;letter-spacing:.3px}.cost-value{font-size:22px;font-weight:700;color:var(--gray-600)}.cost-diff-container{display:flex;align-items:center;gap:4px;margin-left:auto}.cost-trend-icon{font-size:18px}.cost-diff{font-size:18px;font-weight:700}.cost-diff.over{color:#dc2626}.cost-diff.under{color:#16a34a}.schedule-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.schedule-info{flex:1}.schedule-phase{font-size:14px;font-weight:600;color:var(--gray-600);margin-bottom:2px}.schedule-dates{font-size:12px;color:var(--gray-400)}.schedule-completion{display:flex;flex-direction:column;align-items:flex-end}.completion-display{display:flex;align-items:center;gap:8px}.completion-percent{font-size:24px;font-weight:700;color:var(--gray-600)}.news-mini-list,.risks-mini-list{display:flex;flex-direction:column;gap:4px}.news-mini-item,.risk-mini-item{font-size:13px;color:var(--gray-500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-empty-text{font-size:13px;color:var(--gray-400);margin:0}.card-alert-section{border:2px solid #f59e0b;border-radius:8px;padding:12px;background:#fffbeb;margin-top:8px}.card-alert-content{display:flex;gap:8px;align-items:flex-start}.card-alert-icon{font-size:20px;flex-shrink:0}.card-alert-content strong{display:block;font-size:13px;color:var(--gray-600)}.card-alert-content p{font-size:12px;color:var(--gray-500);margin:4px 0 0}.mobile-metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.mobile-metric{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px}.mobile-metric-content{display:flex;align-items:start;gap:4px;padding:8px 4px}.mobile-progress-bar{width:80%;height:4px;border-radius:2px}.mobile-metric-icons{display:flex;gap:4px;font-size:14px}.mobile-metric-value{font-size:16px;font-weight:700}.mobile-metric-value.over{color:#dc2626}.mobile-metric-value.under{color:#16a34a}@media (max-width: 768px){.project-cards-grid{flex-direction:column;gap:16px}.project-card-body{display:none}.project-card-mobile{display:block;padding:12px 16px 16px}.dashboard-new-header{flex-direction:column}.alert-banner{max-width:100%;order:-1}}.hanke-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px}.hanke-section{background:var(--white);border-radius:12px;padding:24px;box-shadow:0 1px 4px #0000000f;max-width:100%}.hanke-section-title{font-size:18px;font-weight:700;color:var(--gray-600);margin:0 0 16px;font-family:Open Sans,sans-serif}.hanke-section-inner{padding-left:16px}.hanke-granularity{display:flex;align-items:center;gap:8px;margin-bottom:16px}.hanke-select{padding:6px 12px;border:1px solid var(--gray-300);border-radius:6px;font-size:13px;font-family:Open Sans,sans-serif;background:var(--white);cursor:pointer}.hanke-granularity-label{font-size:13px;color:var(--gray-400)}.hanke-cost-cards{display:flex;gap:16px;margin-bottom:16px}.hanke-cost-card{flex:1;padding:12px 16px;border:1px solid var(--gray-200);border-radius:8px}.hanke-cost-label{display:block;font-size:12px;color:var(--gray-400);margin-bottom:4px}.hanke-cost-big{display:block;font-size:32px;font-weight:700;color:var(--gray-600);line-height:1.1}.hanke-cost-change{font-size:13px;font-weight:600}.hanke-cost-change.up{color:#dc2626}.hanke-cost-change.down{color:#16a34a}.hanke-chart-container{width:100%;position:relative}.timeline-container{width:100%;height:100%;overflow-x:auto}.timeline-years{display:flex;border-bottom:1px solid var(--gray-200);margin-bottom:12px}.timeline-label-spacer{width:220px;flex-shrink:0}.timeline-years-track{display:flex;flex:1}.timeline-year{flex:1;text-align:center;font-size:13px;font-weight:600;color:var(--gray-500);padding:4px 0 8px}.timeline-row{display:flex;align-items:center;gap:16px;min-height:44px;margin-bottom:8px}.timeline-row-divider{border-top:1px solid var(--gray-200);padding-top:14px;margin-top:14px}.timeline-project-label{width:220px;flex-shrink:0;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--gray-700);overflow:hidden}.timeline-project-label-collapsed{color:transparent;pointer-events:none}.timeline-project-label-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-track{position:relative;flex:1;height:44px}.timeline-bar{position:absolute;top:4px;height:36px;border-radius:18px;display:flex;align-items:center;gap:6px;padding:0 14px;color:#fff;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;cursor:default}.timeline-bar-icon{font-size:14px;flex-shrink:0}.timeline-bar-text{overflow:hidden;text-overflow:ellipsis}.timeline-bar-arrow{margin-left:auto;font-size:18px;opacity:.7;flex-shrink:0}.risk-stats-row{display:flex;gap:16px;margin-bottom:16px}.risk-stat{flex:1}.risk-stat-label{display:block;font-size:13px;color:var(--gray-500);margin-bottom:4px}.risk-stat-value-row{display:flex;align-items:baseline;gap:6px}.risk-stat-big{font-size:36px;font-weight:700;color:var(--gray-600);line-height:1}.risk-stat-unit{font-size:16px;color:var(--gray-400)}.risk-trend-icon{font-size:20px}.risk-stat-highlight{background:var(--gray-50);padding:12px;border-radius:8px}.risk-cost{color:#dc2626;font-size:24px}.risk-stat-project{font-size:14px;color:var(--gray-500);margin-left:4px}.hanke-news-list{display:flex;flex-direction:column;gap:12px}.hanke-news-item{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:12px 16px;border:1px solid var(--gray-200);border-radius:8px;background:var(--gray-50)}.hanke-news-content{flex:1;min-width:0}.hanke-news-content strong{display:block;font-size:14px;color:var(--gray-600);margin-bottom:4px}.hanke-news-content p{font-size:13px;color:var(--gray-500);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hanke-news-project{font-size:12px;color:var(--gray-400);white-space:nowrap;flex-shrink:0}@media (max-width: 768px){.hanke-layout{grid-template-columns:1fr;gap:16px}.hanke-cost-cards,.risk-stats-row{flex-direction:column;gap:8px}.hanke-cost-big{font-size:24px}.risk-stat-big{font-size:28px}.timeline-bar{font-size:10px;padding:0 8px;height:30px}.timeline-label-spacer,.timeline-project-label{width:140px}}
