:root{--brand:#0b2b66;--brand-dark:#061a44;--brand-soft:#eef4ff;--brand-gold:#c9aa6a;--brand-gold-soft:#f7f1e3;--success:#16a34a;--success-soft:#f0fdf4;--warning:#d97706;--warning-soft:#fffbeb;--danger:#dc2626;--danger-soft:#fef2f2;--ink:#101828;--ink-2:#334155;--ink-3:#667085;--ink-4:#98a2b3;--border:#e2e8f0;--border-2:#cbd5e1;--bg:#f5f7fb;--bg-2:#fbfcff;--surface:#fff;--sidebar-w:224px;--radius:10px;--radius-lg:16px;--shadow:0 1px 3px #0f172a14, 0 1px 2px #0f172a0f;--shadow-md:0 4px 16px #0f172a1a;--shadow-lg:0 12px 40px #0f172a24;--sidebar-bg:linear-gradient(180deg, #fff 0%, #f8fafc 100%);--sidebar-border:#e5e7eb;--sidebar-text:#101828;--sidebar-muted:#667085;--sidebar-section:#98a2b3;--sidebar-hover:#f1f5f9;--sidebar-active-bg:#eef4ff;--sidebar-active-text:#0b2b66;--sidebar-footer-border:#e5e7eb;--brand-mark-bg:linear-gradient(135deg, #0b2b66, #265e9e);--brand-mark-text:#fff;--topbar-bg:#fffffff0;--login-bg:linear-gradient(135deg, #f5f8ff 0%, #fff 44%, #f7f1e3 100%);--login-shell-bg:linear-gradient(90deg, #fff0 0%, #ffffff14 48%, #ffffff2e 70%), url(/brand/login-bg-day.webp) center/cover no-repeat, #f7fbff;--login-panel-bg:transparent;--login-panel-text:#0b2b66;--login-panel-muted:#334155;--login-panel-accent:#f47a61;--login-value-border:#0b2b662e;--login-value-bg:#ffffff9e;--login-card-bg:#ffffffeb;--login-card-border:#0b2b6614;--login-card-text:#101828;--login-shell-shadow:0 28px 90px #0b2b6629;--workspace-bg:linear-gradient(135deg, #eef4ffeb 0%, #ffffffe0 46%, #f7f1e3cc 100%), url(/brand/ui-brand-pattern-day.webp) right -180px top -220px/560px auto no-repeat;--workspace-pattern:#0b2b660b;--card-glow:0 18px 45px #0b2b6614}html[data-theme=night]{--brand:#c9aa6a;--brand-dark:#061a44;--brand-soft:#1e2a45;--brand-gold:#d9bd7a;--brand-gold-soft:#f7f1e3;--ink:#f8fafc;--ink-2:#d9e2f2;--ink-3:#9fb0ca;--ink-4:#71829e;--border:#ffffff17;--border-2:#ffffff26;--bg:#0d1117;--bg-2:#161b27;--surface:#1d2235;--shadow:0 1px 3px #00000038, 0 1px 2px #0000002e;--shadow-md:0 8px 24px #00000047;--shadow-lg:0 18px 60px #00000070;--sidebar-bg:linear-gradient(180deg, #090d18 0%, #111827 100%);--sidebar-border:#ffffff1a;--sidebar-text:#fff;--sidebar-muted:#ffffff94;--sidebar-section:#ffffff6b;--sidebar-hover:#ffffff14;--sidebar-active-bg:#c9aa6a2e;--sidebar-active-text:#f4d99a;--sidebar-footer-border:#ffffff1a;--brand-mark-bg:linear-gradient(135deg, #c9aa6af2, #f4d99af2);--brand-mark-text:#061a44;--topbar-bg:#0a0d16f2;--login-bg:radial-gradient(circle at 82% 18%, #c9aa6a38, transparent 24%), linear-gradient(135deg, #030b1c 0%, #061a44 48%, #081d47 100%);--login-shell-bg:linear-gradient(90deg, #061a4400 0%, #061a4414 45%, #061a443d 72%), url(/brand/login-bg-night.webp) center/cover no-repeat, #061a44;--login-panel-bg:transparent;--login-panel-text:#fff;--login-panel-muted:#ffffffbd;--login-panel-accent:#d9bd7a;--login-value-border:#c9aa6a61;--login-value-bg:transparent;--login-card-bg:#061a44b8;--login-card-border:#c9aa6a3d;--login-card-text:#fff;--login-shell-shadow:0 28px 100px #0000006b;--workspace-bg:linear-gradient(135deg, #0a0e18fa 0%, #12182af5 55%, #0a0e18fa 100%), url(/brand/ui-brand-pattern-night.webp) right -180px top -220px/620px auto no-repeat;--workspace-pattern:#c9aa6a17;--card-glow:0 20px 48px #00000052;--success:#34d399;--success-soft:#34d3991f;--warning:#fbbf24;--warning-soft:#fbbf241a;--danger:#f87171;--danger-soft:#f871711f}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,sans-serif;font-size:14px;line-height:1.6}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}.app-shell{background:var(--workspace-bg);isolation:isolate;min-height:100%;display:flex;position:relative}.app-shell:before{content:"";z-index:-1;pointer-events:none;background-image:linear-gradient(var(--workspace-pattern) 1px, transparent 1px), linear-gradient(90deg, var(--workspace-pattern) 1px, transparent 1px);background-size:44px 44px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(135deg,#000000b3,#0000 70%);mask-image:linear-gradient(135deg,#000000b3,#0000 70%)}.sidebar{width:var(--sidebar-w);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);z-index:40;flex-direction:column;flex-shrink:0;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;box-shadow:16px 0 44px #0b2b660f}.sidebar-logo{border-bottom:1px solid var(--sidebar-border);padding:18px 14px;position:relative;overflow:visible}.sidebar-logo:after{content:"CONTENT SERVICE";color:var(--sidebar-section);letter-spacing:.22em;opacity:.32;transform-origin:100% 100%;font-size:9px;font-weight:900;position:absolute;bottom:8px;right:-18px;overflow:hidden;transform:rotate(-90deg)}.sidebar-logo h1{color:var(--sidebar-text);letter-spacing:.08em;font-size:15px;font-weight:900}.sidebar-logo p{color:var(--sidebar-muted);margin-top:1px;font-size:11px}.sidebar-brand{align-items:center;gap:10px;display:flex}.sidebar-brand-mark{background:0 0;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex;overflow:visible}.sidebar-brand-mark img{object-fit:contain;border-radius:10px;width:44px;height:44px}html[data-theme=night] .sidebar-brand-mark{background:0 0;border:none}html[data-theme=night] .sidebar-brand-mark img{filter:none}.sidebar-section{padding:16px 8px 4px}.sidebar-section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--sidebar-section);margin-bottom:4px;padding:0 8px;font-size:10px;font-weight:600}.nav-item{color:var(--sidebar-muted);border-radius:7px;align-items:center;gap:9px;margin-bottom:1px;padding:8px 10px;font-size:13px;font-weight:500;transition:background .12s,color .12s;display:flex}.nav-item:hover{background:var(--sidebar-hover);color:var(--sidebar-text)}.nav-item.active{background:var(--sidebar-active-bg);color:var(--sidebar-active-text);font-weight:700;box-shadow:inset 3px 0}.nav-item .icon{opacity:.65;flex-shrink:0;width:15px;height:15px}.nav-item:hover .icon{opacity:.85}.nav-item.active .icon{opacity:1}.sidebar-footer{border-top:1px solid var(--sidebar-footer-border);margin-top:auto;padding:12px 8px}.user-chip{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;width:100%;padding:8px 10px;display:flex}.user-chip:hover{background:var(--sidebar-hover)}.user-chip .icon{opacity:.35;flex-shrink:0;width:14px;height:14px;margin-left:auto}.user-chip:hover .icon{opacity:.7}.user-avatar{background:var(--brand-gold-soft);width:28px;height:28px;color:var(--brand-dark);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex;overflow:hidden}.user-avatar img{object-fit:cover;width:100%;height:100%}.user-info{min-width:0}.user-name{color:var(--sidebar-text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:700;overflow:hidden}.user-role{color:var(--sidebar-muted);font-size:11px}.sidebar-logout{border:1px solid var(--sidebar-footer-border);width:100%;color:var(--sidebar-muted);background:0 0;border-radius:8px;justify-content:center;align-items:center;gap:6px;margin-top:6px;padding:7px 10px;font-size:12px;font-weight:700;display:flex}.sidebar-logout:hover{background:var(--sidebar-hover);color:var(--sidebar-text)}.sidebar-logout .icon{width:14px;height:14px}.main-content{margin-left:var(--sidebar-w);flex-direction:column;flex:1;min-width:0;min-height:100%;display:flex;position:relative}.topbar{background:var(--topbar-bg);border-bottom:1px solid var(--border);z-index:30;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:10px 28px;display:flex;position:sticky;top:0}.topbar-title{color:var(--ink);letter-spacing:.02em;flex-shrink:0;font-size:16px;font-weight:900}.topbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.notification-wrap{position:relative}.notification-button{justify-content:center;width:34px;height:34px;position:relative}.notification-mark{font-size:15px;line-height:1}.notification-count{background:var(--danger);color:#fff;border:2px solid var(--surface);border-radius:999px;justify-content:center;align-items:center;min-width:17px;height:17px;padding:0 4px;font-size:10px;font-weight:800;line-height:1;display:inline-flex;position:absolute;top:-5px;right:-5px}.notification-dropdown{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:min(360px,100vw - 32px);box-shadow:var(--shadow-lg);z-index:80;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}.notification-dropdown-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;display:flex}.notification-dropdown-list{max-height:360px;overflow-y:auto}.notification-menu-item{border:none;border-bottom:1px solid var(--border);background:var(--surface);width:100%;color:var(--ink-2);text-align:left;gap:3px;padding:11px 14px 11px 20px;display:grid;position:relative}.notification-menu-item:hover{background:var(--bg-2)}.notification-menu-item.unread:before,.notification-page-item.unread:before{content:"";background:var(--brand);border-radius:50%;width:7px;height:7px;position:absolute}.notification-menu-item.unread:before{top:17px;left:8px}.notification-menu-title{color:var(--ink);font-size:13px;font-weight:800}.notification-menu-body{color:var(--ink-3);overflow-wrap:anywhere;font-size:12px;line-height:1.45}.notification-menu-time{color:var(--ink-4);font-size:11px}.notification-empty{color:var(--ink-3);text-align:center;padding:28px 16px;font-size:13px}.notification-more{background:var(--bg-2);width:100%;color:var(--brand);border:none;padding:11px;font-size:13px;font-weight:700}.page{flex:1;padding:28px;position:relative}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow), var(--card-glow);border-radius:14px;overflow:hidden}.card-header{border-bottom:1px solid var(--border);background:linear-gradient(90deg, color-mix(in srgb, var(--brand) 5%, var(--surface)), var(--surface));justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.card-title{color:var(--ink);font-size:14px;font-weight:700}.card-body{padding:20px}.stat-grid{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow), var(--card-glow);border-radius:14px;padding:20px;position:relative;overflow:hidden}.stat-card:after{content:"";opacity:.18;background:currentColor;width:48px;height:2px;position:absolute;inset:auto 16px 12px auto}.stat-label{color:var(--ink-3);margin-bottom:8px;font-size:12px;font-weight:500}.stat-value{color:var(--ink);font-size:28px;font-weight:800;line-height:1}.stat-sub{color:var(--ink-3);margin-top:6px;font-size:12px}.stat-card.green .stat-value{color:var(--success)}.stat-card.yellow .stat-value{color:var(--warning)}.stat-card.red .stat-value{color:var(--danger)}.stat-card.blue .stat-value{color:var(--brand)}.stat-card.blue{border-top:3px solid var(--brand)}.stat-card.green{border-top:3px solid var(--success)}.stat-card.red{border-top:3px solid var(--danger)}.stat-card.yellow{border-top:3px solid var(--warning)}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:13px}.table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);background:var(--bg-2);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 16px;font-size:11px;font-weight:600}.table td{border-bottom:1px solid var(--border);color:var(--ink-2);vertical-align:middle;padding:12px 16px}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--bg-2)}.table .cell-main{color:var(--ink);font-weight:600}.table .cell-sub{color:var(--ink-3);margin-top:2px;font-size:12px}.btn{white-space:nowrap;border:none;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;line-height:1;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg, var(--brand-dark), var(--brand));color:#fff;box-shadow:0 10px 24px color-mix(in srgb, var(--brand) 24%, transparent)}.btn-primary:hover:not(:disabled){filter:brightness(1.04);transform:translateY(-1px)}.btn-ghost{color:var(--ink-2);border:1px solid var(--border);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--bg)}.btn-danger{background:var(--danger-soft);color:var(--danger);border:1px solid #fca5a5}.btn-danger:hover:not(:disabled){background:#fee2e2}.btn-sm{border-radius:6px;padding:5px 10px;font-size:12px}.btn-icon{padding:7px}.badge{white-space:nowrap;border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-blue{background:var(--brand-soft);color:var(--brand)}.badge-green{background:var(--success-soft);color:var(--success)}.badge-yellow{background:var(--warning-soft);color:var(--warning)}.badge-red{background:var(--danger-soft);color:var(--danger)}.badge-gray{background:var(--bg);color:var(--ink-3);border:1px solid var(--border)}.status-dot{align-items:center;gap:5px;font-size:12px;font-weight:500;display:inline-flex}.status-dot:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.status-dot.pending{color:var(--ink-3)}.status-dot.progress{color:var(--brand)}.status-dot.done{color:var(--success)}.status-dot.blocked{color:var(--danger)}.status-dot.waiting{color:var(--warning)}.status-dot.cancelled{color:var(--ink-4)}.health-bar{align-items:center;gap:8px;display:flex}.health-bar-track{background:var(--border);border-radius:999px;flex:1;height:4px;overflow:hidden}.health-bar-fill{border-radius:999px;height:100%;transition:width .3s}.health-bar-fill.green{background:var(--success)}.health-bar-fill.yellow{background:var(--warning)}.health-bar-fill.red{background:var(--danger)}.field{gap:5px;display:grid}.label{color:var(--ink-2);font-size:12px;font-weight:600}.input,.select,.textarea{border:1px solid var(--border-2);width:100%;color:var(--ink);background:var(--surface);border-radius:8px;outline:none;padding:9px 12px;font-size:13px;transition:border-color .15s,box-shadow .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px #2563eb1f}.input::placeholder,.textarea::placeholder{color:var(--ink-4)}.textarea{resize:vertical;min-height:80px}.input-group{grid-template-columns:1fr 1fr;gap:12px;display:grid}.input-group.cols-3{grid-template-columns:1fr 1fr 1fr}.search-wrap{position:relative}.search-input{border:1px solid var(--border);background:var(--bg-2);border-radius:8px;outline:none;width:100%;padding:8px 12px 8px 36px;font-size:13px}.search-input:focus{border-color:var(--brand);background:var(--surface)}.search-icon{color:var(--ink-4);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.modal-mask{z-index:100;background:#0f172a80;justify-content:center;align-items:center;padding:24px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:min(560px,100%);max-height:90vh;animation:.2s slideUp;overflow-y:auto}.modal-lg{width:min(800px,100%)}.modal-header{border-bottom:1px solid var(--border);background:var(--surface);z-index:1;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 24px 16px;display:flex;position:sticky;top:0}.modal-title{color:var(--ink);font-size:16px;font-weight:700}.modal-body{gap:16px;padding:20px 24px;display:grid}.modal-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:16px 24px;display:flex}.system-dialog-mask{z-index:180}.system-dialog{width:min(440px,100%)}.system-dialog-message{color:var(--ink-2);white-space:pre-line;font-size:14px;line-height:1.65}.system-dialog-input{resize:vertical;min-height:42px}.empty{text-align:center;color:var(--ink-3);padding:48px 24px}.empty-icon{margin-bottom:12px;font-size:32px}.empty-text{font-size:14px;font-weight:500}.empty-sub{color:var(--ink-4);margin-top:4px;font-size:13px}.tabs{border-bottom:1px solid var(--border);gap:0;margin-bottom:20px;display:flex}.tab{color:var(--ink-3);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 16px;font-size:13px;font-weight:600;transition:color .15s,border-color .15s}.tab:hover{color:var(--ink)}.tab.active{color:var(--brand);border-bottom-color:var(--brand)}.filters{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.page-title{color:var(--ink);font-size:18px;font-weight:800}.page-sub{color:var(--ink-3);margin-top:3px;font-size:13px}.team-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;display:grid}.team-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);gap:16px;min-width:0;padding:18px;display:grid}.team-card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.team-name{color:var(--ink);overflow-wrap:anywhere;font-size:16px;font-weight:800;line-height:1.35}.team-desc{color:var(--ink-3);overflow-wrap:anywhere;margin-top:4px;font-size:12px;line-height:1.5}.team-leader{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-2);gap:8px;padding:10px 12px;display:grid}.team-label{color:var(--ink-4);font-size:11px;line-height:1.2}.team-leader-name{color:var(--ink-2);margin-top:1px;font-size:13px;font-weight:700}.team-leader-list{flex-wrap:wrap;gap:8px;min-width:0;display:flex}.team-leader-pill{border:1px solid var(--border);background:var(--surface);max-width:100%;color:var(--ink-2);border-radius:999px;align-items:center;gap:7px;padding:5px 9px 5px 5px;font-size:12px;font-weight:800;display:inline-flex}.team-leader-pill span:last-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:120px;overflow:hidden}.team-scope{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-2);gap:8px;padding:10px 12px;display:grid}.team-scope-list,.team-leader-editor,.team-scope-editor{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.team-leader-editor,.team-scope-editor{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-2);align-items:flex-start;max-height:180px;padding:10px;overflow:auto}.team-leader-option{border:1px solid var(--border);background:var(--surface);border-radius:8px;min-width:150px;padding:6px 8px}.team-avatar{background:var(--brand-soft);width:34px;height:34px;color:var(--brand);object-fit:cover;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:800;display:inline-flex}.team-avatar.sm{width:26px;height:26px;font-size:11px}.team-members{flex-wrap:wrap;gap:8px;min-height:34px;display:flex}.team-member-pill{border:1px solid var(--border);background:var(--bg-2);border-radius:999px;align-items:center;gap:7px;max-width:100%;padding:5px 8px 5px 5px;display:inline-flex}.team-member-name{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;max-width:92px;font-size:12px;font-weight:700;overflow:hidden}.team-member-empty{color:var(--ink-4);padding:8px 0;font-size:13px}.team-card-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;padding-top:2px;display:flex}.member-add-panel{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:end;gap:12px;display:grid}.member-manage-list{gap:10px;display:grid}.member-manage-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-2);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.member-manage-main{align-items:center;gap:10px;min-width:0;display:flex}.member-manage-name{color:var(--ink);margin-bottom:3px;font-size:13px;font-weight:700}@media (width<=720px){.team-grid,.member-add-panel{grid-template-columns:1fr}.member-add-panel .btn{justify-content:center}}.task-board{gap:16px;display:grid}.board-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.board-group-header{background:var(--bg-2);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.board-group-title{color:var(--ink);font-size:13px;font-weight:700}.executor-toolbar{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.executor-view-tabs{border:1px solid var(--border);border-radius:8px;flex-shrink:0;display:flex;overflow:hidden}.executor-focus-grid{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:10px;margin-bottom:16px;display:grid}.executor-focus-card{border:1px solid var(--border);border-left:4px solid var(--focus-color);background:var(--surface);text-align:left;cursor:pointer;border-radius:8px;gap:3px;min-width:0;min-height:66px;padding:10px 12px;display:grid}.executor-focus-card:hover,.executor-focus-card.active{border-color:color-mix(in srgb, var(--focus-color) 45%, var(--border));background:color-mix(in srgb, var(--focus-color) 8%, var(--surface))}.executor-focus-value{color:var(--focus-color);font-size:22px;font-weight:800;line-height:1}.executor-focus-label{color:var(--ink-2);white-space:nowrap;font-size:12px;font-weight:700}.task-kanban{align-items:stretch;gap:12px;padding-bottom:8px;display:flex;overflow-x:auto}.task-kanban-column{border:1px solid var(--border);border-top:4px solid var(--column-color);background:var(--bg-2);border-radius:10px;flex-direction:column;flex:0 0 320px;min-width:320px;max-width:370px;max-height:calc(100vh - 250px);display:flex;overflow:hidden}.task-kanban-column.is-drop-enabled{transition:box-shadow .15s,background .15s}.task-kanban-column.is-drop-enabled:hover{box-shadow:0 8px 22px #0f172a14}.manager-kanban .task-kanban-column{flex-basis:300px}.task-kanban-column-head{background:color-mix(in srgb, var(--column-bg) 65%, var(--surface));border-bottom:1px solid var(--border);min-height:46px;color:var(--ink);justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;font-size:13px;font-weight:800;display:flex}.task-kanban-column-head>span,.task-kanban-title-wrap span{white-space:nowrap}.task-kanban-title-wrap{align-items:center;gap:8px;min-width:0;display:inline-flex}.task-kanban-alert{color:#dc2626;background:#fef2f2;border-bottom:1px solid #fecaca;padding:6px 12px;font-size:12px;font-weight:700}.task-kanban-column-body{align-content:start;gap:10px;padding:10px;display:grid;overflow:auto}.task-kanban-empty{border:1px dashed var(--border-2);min-height:74px;color:var(--ink-4);border-radius:8px;justify-content:center;align-items:center;font-size:12px;display:flex}.executor-task-card,.kanban-task-card{border:1px solid var(--border);border-left:4px solid var(--card-status-color,var(--border-2));background:var(--surface);border-radius:8px;padding:10px;box-shadow:0 1px 2px #0f172a0a}.executor-task-card[draggable=true],.kanban-task-card[draggable=true],.calendar-task-chip[draggable=true],.calendar-day-modal-task[draggable=true]{cursor:grab}.executor-task-card[draggable=true]:active,.kanban-task-card[draggable=true]:active,.calendar-task-chip[draggable=true]:active,.calendar-day-modal-task[draggable=true]:active{cursor:grabbing}.executor-task-card.is-locked,.kanban-task-card.is-locked,.calendar-task-chip.is-locked,.calendar-day-modal-task.is-locked{cursor:not-allowed;opacity:.78}.executor-task-card{margin-bottom:0}.executor-task-card-inner{flex-direction:column;align-items:stretch;gap:10px;display:flex}.executor-task-actions{flex-direction:row;justify-content:space-between;align-items:center;gap:6px;min-width:0;display:flex}.executor-task-buttons{flex-wrap:wrap;justify-content:flex-end;gap:4px;min-width:0;display:flex}.executor-task-actions .fi-status{flex:0 0 96px;width:96px}.executor-task-card .input{min-width:0}.kanban-task-card.selected{border-color:#bfdbfe;border-left-color:var(--brand);background:#eff6ff}.kanban-task-card.batch-mode{cursor:pointer;-webkit-user-select:none;user-select:none}.kanban-task-top{align-items:flex-start;gap:8px;display:flex}.kanban-task-title{min-width:0;color:var(--ink);overflow-wrap:break-word;flex:1;font-size:13px;font-weight:800;line-height:1.45}.kanban-task-meta{color:var(--ink-3);flex-wrap:wrap;gap:5px 8px;margin-top:6px;font-size:12px;display:flex}.kanban-task-client{color:var(--brand);cursor:pointer;font-weight:700}.kanban-task-progress{background:var(--bg-2);color:var(--ink-2);border-radius:6px;margin-top:7px;padding:6px 8px;font-size:12px;line-height:1.5}.kanban-task-fields{grid-template-columns:1fr 1fr;gap:6px;margin-top:9px;display:grid}.kanban-task-fields .fi,.kanban-task-fields .fi-date,.kanban-task-fields .fi-assignee,.kanban-task-fields .fi-status{width:100%}.kanban-task-chip{border:1px solid var(--border);min-height:28px;color:var(--ink-2);background:var(--bg-2);border-radius:6px;align-items:center;padding:4px 6px;font-size:12px;display:inline-flex}.kanban-task-chip.is-danger,.fi-date.is-danger{color:#dc2626;background:#fef2f2;border-color:#fecaca}.kanban-task-footer{justify-content:space-between;align-items:center;gap:8px;margin-top:9px;display:flex}.manager-view-tabs{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.calendar-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.calendar-toolbar{border-bottom:1px solid var(--border);background:var(--bg-2);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.calendar-title{color:var(--ink);font-size:18px;font-weight:800}.calendar-sub{color:var(--ink-3);margin-top:2px;font-size:12px}.calendar-tools,.calendar-mode-tabs{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.calendar-mode-tabs{border:1px solid var(--border);border-radius:8px;gap:0;overflow:hidden}.calendar-mode-tabs .btn{border-radius:0}.client-legend{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 16px;display:flex}.client-legend-item{min-width:0;color:var(--ink-2);align-items:center;gap:6px;font-size:12px;display:inline-flex}.client-legend-dot{border-radius:50%;flex-shrink:0;width:9px;height:9px}.client-legend-more{color:var(--ink-4);font-size:12px}.calendar-grid{background:var(--border);grid-template-columns:repeat(7,minmax(128px,1fr));gap:1px;display:grid}.calendar-week-head{background:var(--bg-2);min-height:36px;color:var(--ink-3);text-align:center;padding:8px 10px;font-size:12px;font-weight:800}.calendar-cell{background:var(--surface);flex-direction:column;gap:6px;min-width:0;min-height:142px;padding:8px;display:flex}.calendar-cell.is-drop-enabled{transition:background .15s,box-shadow .15s}.calendar-cell.is-drop-enabled:hover{background:color-mix(in srgb, var(--brand) 4%, var(--surface))}.calendar-grid.week .calendar-cell{min-height:520px}.calendar-cell.muted{background:#f8fafc}.calendar-cell.today{box-shadow:inset 0 0 0 2px var(--brand)}.calendar-day-head{min-height:20px;color:var(--ink);justify-content:space-between;align-items:center;gap:6px;font-size:12px;font-weight:800;display:flex}.calendar-cell.muted .calendar-day-head{color:var(--ink-4)}.calendar-count{background:var(--bg);min-width:18px;height:18px;color:var(--ink-3);border-radius:999px;justify-content:center;align-items:center;padding:0 5px;font-size:10px;display:inline-flex}.calendar-task-list{align-content:start;gap:5px;display:grid}.calendar-task-chip{border:1px solid color-mix(in srgb, var(--client-color) 35%, var(--border));border-left:4px solid var(--client-color);background:color-mix(in srgb, var(--client-color) 7%, var(--surface));text-align:left;border-radius:7px;gap:2px;width:100%;padding:6px 7px;display:grid}.calendar-task-chip:hover{background:color-mix(in srgb, var(--client-color) 12%, var(--surface))}.calendar-task-client,.calendar-task-title,.calendar-task-meta{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.calendar-task-client{color:var(--client-color);font-size:11px;font-weight:800}.calendar-task-title{color:var(--ink);font-size:12px;font-weight:700}.calendar-task-meta{color:var(--ink-3);font-size:11px}.calendar-more,.calendar-more-btn{color:var(--ink-4);padding:2px 4px;font-size:12px}.calendar-more-btn{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;width:fit-content}.calendar-more-btn:hover{background:var(--bg);color:var(--brand)}.calendar-day-modal-list{gap:10px;display:grid}.calendar-day-modal-task{border:1px solid color-mix(in srgb, var(--client-color) 28%, var(--border));border-left:4px solid var(--client-color);background:color-mix(in srgb, var(--client-color) 6%, var(--surface));text-align:left;cursor:pointer;border-radius:8px;gap:8px;width:100%;padding:10px 12px;display:grid}.calendar-day-modal-task:hover{background:color-mix(in srgb, var(--client-color) 10%, var(--surface))}.calendar-day-modal-main{gap:3px;min-width:0;display:grid}.calendar-day-modal-client{color:var(--client-color);font-size:12px;font-weight:800}.calendar-day-modal-title{color:var(--ink);font-size:14px;font-weight:800;line-height:1.45}.calendar-day-modal-meta{color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:12px;display:flex}.calendar-modal-drag-hidden{opacity:0;pointer-events:none}.calendar-drag-cancel-zone{z-index:140;width:min(420px,100vw - 32px);min-height:58px;box-shadow:var(--shadow-lg);color:var(--ink-2);pointer-events:auto;background:#fffffff5;border:2px dashed #94a3b8;border-radius:12px;justify-content:center;align-items:center;font-size:15px;font-weight:800;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.calendar-task-detail{gap:14px;display:grid}.calendar-task-detail-head{border:1px solid color-mix(in srgb, var(--client-color) 28%, var(--border));border-left:4px solid var(--client-color);background:color-mix(in srgb, var(--client-color) 6%, var(--surface));border-radius:8px;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.calendar-task-detail-client{color:var(--client-color);margin-bottom:4px;font-size:12px;font-weight:800}.calendar-task-detail-title{color:var(--ink);font-size:18px;font-weight:800;line-height:1.45}.calendar-task-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.calendar-task-detail-field{border:1px solid var(--border);background:var(--bg-2);border-radius:8px;gap:5px;min-width:0;padding:10px 12px;display:grid}.calendar-task-detail-field span{color:var(--ink-4);font-size:11px;font-weight:700}.calendar-task-detail-field strong{color:var(--ink-2);overflow-wrap:anywhere;font-size:13px}.calendar-task-detail-field .fi-status{width:140px}.calendar-task-detail-progress{border:1px solid var(--border);background:var(--surface);color:var(--ink-2);border-radius:8px;padding:10px 12px;font-size:13px;line-height:1.6}.manager-overview{gap:16px;display:grid}.manager-health-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;display:grid}.manager-health-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;gap:4px;min-width:0;padding:14px 16px;display:grid}.manager-health-value{font-size:26px;font-weight:900;line-height:1}.manager-health-card span{color:var(--ink);font-size:13px;font-weight:800}.manager-health-card em{color:var(--ink-3);overflow-wrap:anywhere;font-size:11px;font-style:normal}.manager-overview-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.manager-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px}.manager-stat-card div{font-size:26px;font-weight:900;line-height:1}.manager-stat-card span{color:var(--ink-3);margin-top:5px;font-size:12px;font-weight:700;display:block}.manager-overview-grid{grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);align-items:start;gap:16px;display:grid}.manager-overview-grid-wide{grid-template-columns:minmax(0,1.35fr) minmax(380px,.65fr)}.manager-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.manager-panel-head{background:var(--bg-2);border-bottom:1px solid var(--border);padding:14px 16px}.manager-panel-title{color:var(--ink);font-size:15px;font-weight:800}.manager-panel-sub{color:var(--ink-3);margin-top:2px;font-size:12px}.workload-list{gap:10px;padding:12px;display:grid}.workload-card{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:9px;padding:12px;display:grid}.workload-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.workload-name{color:var(--ink);font-size:14px;font-weight:900}.workload-sub{color:var(--ink-3);margin-top:2px;font-size:12px}.workload-track{background:var(--bg);border-radius:999px;height:8px;overflow:hidden}.workload-track span{border-radius:inherit;background:linear-gradient(90deg,#2563eb,#ea580c);height:100%;display:block}.workload-metrics{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;display:grid}.workload-metrics span{border:1px solid var(--border);background:var(--bg-2);color:var(--ink-3);white-space:nowrap;border-radius:7px;padding:6px 8px;font-size:11px}.workload-metrics strong{color:var(--ink);font-size:12px}.workload-task-list{gap:6px;display:grid}.workload-task{border:1px solid color-mix(in srgb, var(--client-color) 28%, var(--border));border-left:4px solid var(--client-color);background:var(--bg-2);text-align:left;border-radius:7px;grid-template-columns:minmax(92px,.34fr) minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px 8px;display:grid}.workload-task span,.workload-task strong,.workload-task em{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.workload-task span{color:var(--client-color);font-size:12px;font-weight:800}.workload-task strong{color:var(--ink);font-size:12px}.workload-task em{color:var(--ink-3);font-size:11px;font-style:normal}.risk-task-list{gap:8px;padding:12px;display:grid}.risk-task-row{border:1px solid color-mix(in srgb, var(--client-color) 25%, var(--border));border-left:4px solid var(--client-color);background:var(--surface);text-align:left;border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;width:100%;padding:9px 10px;display:grid}.risk-task-row strong,.risk-task-row em{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.risk-task-row strong{color:var(--ink);font-size:13px;font-weight:800;display:block}.risk-task-row em{color:var(--ink-3);margin-top:2px;font-size:11px;font-style:normal;display:block}.executor-progress-list{gap:10px;padding:12px;display:grid}.executor-progress-card{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:10px}.executor-progress-head{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px;display:flex}.executor-progress-name{color:var(--ink);font-size:14px;font-weight:800}.executor-progress-sub{color:var(--ink-3);font-size:12px}.executor-progress-tasks{gap:6px;display:grid}.executor-progress-task{border:1px solid color-mix(in srgb, var(--client-color) 28%, var(--border));border-left:4px solid var(--client-color);background:var(--bg-2);text-align:left;border-radius:7px;grid-template-columns:minmax(92px,.4fr) minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px 8px;display:grid}.executor-progress-task span,.executor-progress-task strong,.executor-progress-task em{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.executor-progress-task span{color:var(--client-color);font-size:12px;font-weight:800}.executor-progress-task strong{color:var(--ink);font-size:12px}.executor-progress-task em{color:var(--ink-3);font-size:11px;font-style:normal}.completion-bars{border-bottom:1px solid var(--border);gap:9px;padding:14px 16px;display:grid}.completion-bar-row{grid-template-columns:44px minmax(0,1fr) 28px;align-items:center;gap:8px;font-size:12px;display:grid}.completion-bar-track{background:var(--bg);border-radius:999px;height:10px;overflow:hidden}.completion-bar-fill{border-radius:inherit;background:linear-gradient(90deg,#16a34a,#0891b2);height:100%}.completion-bar-fill.is-due{background:linear-gradient(90deg,#2563eb,#ea580c)}.completion-bar-row strong{text-align:right}.completion-table-wrap{overflow-x:auto}.completion-table{border-collapse:collapse;width:100%;font-size:12px}.completion-table th,.completion-table td{border-bottom:1px solid var(--border);text-align:center;white-space:nowrap;padding:9px 10px}.completion-table th:first-child,.completion-table td:first-child{text-align:left;font-weight:700}.status-structure-list,.client-risk-list{gap:10px;padding:14px 16px;display:grid}.status-structure-row{grid-template-columns:80px minmax(0,1fr) 36px;align-items:center;gap:10px;font-size:12px;display:grid}.status-structure-row span{color:var(--ink-2);font-weight:800}.status-structure-row div{background:var(--status-bg);border-radius:999px;height:10px;overflow:hidden}.status-structure-row i{border-radius:inherit;background:var(--status-color);height:100%;display:block}.status-structure-row strong{text-align:right}.client-risk-row{border:1px solid var(--border);background:var(--surface);text-align:left;border-radius:8px;gap:8px;width:100%;padding:10px 12px;display:grid}.client-risk-row strong{color:var(--ink);font-size:13px;font-weight:900;display:block}.client-risk-row span{color:var(--ink-3);margin-top:2px;font-size:12px;display:block}.client-risk-track{background:var(--bg);border-radius:999px;height:8px;overflow:hidden}.client-risk-track i{border-radius:inherit;background:linear-gradient(90deg,#0f766e,#ea580c);height:100%;display:block}.task-row{border-bottom:1px solid var(--border);border-left:3px solid #0000;align-items:center;gap:6px;min-height:52px;padding:9px 16px;transition:background .12s;display:flex}.task-row:last-of-type{border-bottom:none}.task-row:hover{background:var(--bg-2)}.task-row.selected{border-left-color:var(--brand);background:#eff6ff}.task-row.batch-mode{cursor:pointer;-webkit-user-select:none;user-select:none}.task-row-title{flex:1;min-width:0}.task-row-title .t-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.task-row-title .t-sub{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;overflow:hidden}.task-row-title .t-progress{color:var(--brand);margin-top:2px;font-size:11px}.task-row-expand{border-bottom:1px solid var(--border);background:var(--bg-2);padding:12px 16px 14px 19px}.fi{color:var(--ink-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;max-width:100%;padding:4px 6px;font-family:inherit;font-size:12px;transition:border-color .1s,background .1s}.fi:hover{border-color:var(--border-2);background:var(--surface)}.fi:focus{border-color:var(--brand);background:var(--surface);outline:none}.fi-date{width:108px;font-size:11px}.fi-assignee{width:90px}.fi-status{text-align:center;border-radius:99px;width:82px;font-size:12px;font-weight:600}@media (width<=900px){.task-kanban{grid-template-columns:1fr;display:grid;overflow:visible}.task-kanban-column{min-width:0;max-width:none;max-height:none}.executor-task-card-inner{flex-direction:column}.executor-task-actions{flex-direction:column;align-items:stretch;width:100%}.executor-task-buttons{justify-content:flex-start}.executor-task-actions .fi-status{flex-basis:auto;width:100%}.calendar-toolbar{flex-direction:column;align-items:flex-start}.calendar-grid{grid-template-columns:repeat(7,minmax(104px,1fr));overflow-x:auto}.calendar-cell{min-height:128px}.manager-health-grid,.manager-overview-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.manager-overview-grid{grid-template-columns:1fr}.workload-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.workload-task,.risk-task-row,.executor-progress-task{grid-template-columns:1fr}}.task-item{border-bottom:1px solid var(--border);grid-template-columns:1fr auto;align-items:start;gap:8px;padding:12px 16px;transition:background .1s;display:grid}.task-item:last-child{border-bottom:none}.task-item:hover{background:var(--bg-2)}.task-title{color:var(--ink);font-size:13px;font-weight:600}.task-meta{color:var(--ink-3);margin-top:3px;font-size:12px}.task-actions{align-items:center;gap:6px;display:flex}.plan-wrap{border:1px solid var(--border);border-radius:12px;overflow-x:auto}.plan-table{border-collapse:collapse;table-layout:fixed;width:100%}.plan-th-client{text-align:left;background:var(--bg-2);width:148px;min-width:148px;color:var(--ink-3);border-bottom:2px solid var(--border);border-right:2px solid var(--border-2);z-index:2;padding:8px 12px;font-size:11px;font-weight:600;position:sticky;left:0}.plan-th-day{text-align:center;background:var(--bg-2);color:var(--ink-3);border-bottom:2px solid var(--border);border-right:1px solid var(--border);min-width:120px;padding:7px 4px;font-size:11px;font-weight:600}.plan-th-day.today{color:var(--brand);background:#eff6ff}.plan-td-client{border-bottom:1px solid var(--border);border-right:2px solid var(--border-2);background:var(--bg-2);vertical-align:middle;z-index:1;padding:8px 12px;position:sticky;left:0}.plan-td-day{border-bottom:1px solid var(--border);border-right:1px solid var(--border);vertical-align:top;min-height:56px;padding:5px}.plan-td-day:last-child{border-right:none}.plan-td-day.today{background:#fafcff}.plan-td-day.past{background:var(--bg-2)}.plan-chip{cursor:pointer;border-radius:6px;margin-bottom:3px;padding:4px 7px;font-size:11px}.plan-chip:hover{filter:brightness(.95)}.plan-draft-chip{border:1.5px dashed;border-radius:6px;align-items:center;gap:4px;margin-bottom:3px;padding:4px 7px;font-size:11px;display:flex}.plan-add-btn{width:100%;color:var(--ink-4);cursor:pointer;background:0 0;border:1px dashed #0000;border-radius:6px;padding:5px 2px;font-size:13px;transition:all .15s;display:block}.plan-add-btn:hover{color:var(--brand);border-color:var(--brand);background:var(--brand-soft)}.plan-cell-form{background:var(--surface);border:1px solid var(--border-2);border-radius:8px;padding:6px;box-shadow:0 2px 8px #0000001a}.week-grid{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--border);grid-template-columns:repeat(7,minmax(130px,1fr));gap:1px;display:grid;overflow:hidden}.week-col{background:var(--surface);flex-direction:column;min-height:420px;display:flex}.week-col-header{background:var(--bg-2);border-bottom:1px solid var(--border);text-align:center;z-index:1;padding:10px 10px 8px;position:sticky;top:0}.week-col-header.today{background:#eff6ff}.week-col-header.past{opacity:.6}.week-day-name{color:var(--ink-3);margin-bottom:2px;font-size:11px;font-weight:600}.week-day-date{color:var(--ink);font-size:17px;font-weight:800;line-height:1}.week-day-date.today{color:var(--brand)}.week-col-body{flex-direction:column;flex:1;gap:6px;padding:6px;display:flex}.week-add-btn{border:1px dashed var(--border-2);width:100%;color:var(--ink-4);cursor:pointer;background:0 0;border-radius:8px;margin-top:auto;padding:6px 0;font-size:11px;transition:all .15s}.week-add-btn:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}.sched-card{cursor:pointer;background:var(--surface);border-left:3px solid;border-radius:8px;padding:8px 10px;font-size:12px;transition:box-shadow .15s,transform .1s;box-shadow:0 1px 3px #0000000f}.sched-card:hover{transform:translateY(-1px);box-shadow:0 3px 10px #0000001a}.sched-card.cancelled{opacity:.45}.risk-tag{border-radius:4px;align-items:center;padding:2px 7px;font-size:11px;font-weight:700;display:inline-flex}.risk-overdue{color:#dc2626;background:#fef2f2}.risk-urgent{color:#c2410c;background:#fff7ed}.risk-soon{color:#b45309;background:#fffbeb}.progress-bar{background:var(--border);border-radius:999px;height:6px;overflow:hidden}.progress-fill{background:var(--brand);border-radius:999px;height:100%;transition:width .3s}.progress-fill.green{background:var(--success)}.project-hero{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px;padding:20px;display:flex}.project-hero-main{min-width:0}.project-title-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project-title-row h2{overflow-wrap:anywhere;font-size:22px;font-weight:800;line-height:1.25}.project-subline{color:var(--ink-3);flex-wrap:wrap;gap:10px;margin-top:8px;font-size:13px;display:flex}.project-subline span{border:1px solid var(--border);background:var(--bg-2);border-radius:999px;padding:3px 8px}.project-progress-panel{flex-shrink:0;align-items:center;gap:14px;display:flex}.progress-ring{border-radius:50%;place-items:center;width:72px;height:72px;display:grid}.progress-ring-inner{background:var(--surface);width:52px;height:52px;color:var(--success);border-radius:50%;place-items:center;font-size:15px;font-weight:800;display:grid}.project-progress-text{font-size:20px;font-weight:800;line-height:1.2}.project-card-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);gap:14px;padding:16px;display:grid}.project-card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.project-card-title{overflow-wrap:anywhere;font-size:15px;font-weight:800;line-height:1.35}.project-card-meta{color:var(--ink-3);margin-top:6px;font-size:12px}.project-card-actions{justify-content:flex-end;gap:8px;display:flex}.info-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.schedule-row-main{align-items:flex-start;gap:10px;min-width:0;display:flex}.schedule-type-icon{background:var(--brand-soft);width:28px;height:28px;color:var(--brand);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:800;display:inline-flex}.attachment-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-2);gap:10px;margin-top:10px;padding:10px 12px;display:grid}.notification-page-list{display:grid}.notification-page-item{border:none;border-bottom:1px solid var(--border);background:var(--surface);text-align:left;justify-content:space-between;align-items:flex-start;gap:16px;width:100%;padding:16px 20px 16px 28px;display:flex;position:relative}.notification-page-item:last-child{border-bottom:none}.notification-page-item:hover{background:var(--bg-2)}.notification-page-item.unread:before{top:24px;left:14px}.notification-page-main{gap:4px;min-width:0;display:grid}.notification-page-title{color:var(--ink);font-size:14px;font-weight:800}.notification-page-body{color:var(--ink-2);overflow-wrap:anywhere;font-size:13px}.notification-page-time{color:var(--ink-4);font-size:12px}.attachment-panel-title{color:var(--ink-2);font-size:12px;font-weight:800}.attachment-list{gap:8px;display:grid}.attachment-row{border:1px solid var(--border);background:var(--surface);border-radius:8px;justify-content:space-between;align-items:flex-start;gap:10px;padding:8px 10px;display:flex}.attachment-name{color:var(--brand);overflow-wrap:anywhere;font-size:12px;font-weight:700}.attachment-upload{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;display:grid}.attachment-upload-full{grid-column:1/-1}.attachment-upload textarea{resize:vertical;min-height:64px}.attachment-upload-actions{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:12px;display:flex}.checkbox-line,.deliverable-switch{color:var(--ink-2);align-items:center;gap:6px;font-size:12px;display:inline-flex}.deliverable-note{min-width:180px;min-height:48px}.template-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.template-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);gap:16px;padding:18px;display:grid}.template-card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.template-name{color:var(--ink);overflow-wrap:anywhere;font-size:18px;font-weight:800;line-height:1.3}.template-desc{color:var(--ink-3);overflow-wrap:anywhere;margin-top:6px;font-size:12px;line-height:1.5}.template-stats,.template-actions,.template-detail-actions,.template-toolbar,.template-toolbar-left,.template-toolbar-right,.template-row-actions,.template-package-cell,.template-checks{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.template-actions,.template-detail-actions{justify-content:flex-end}.template-detail-title{color:var(--ink);overflow-wrap:anywhere;margin-top:10px;font-size:22px;font-weight:800;line-height:1.25}.template-toolbar{justify-content:space-between;margin-bottom:16px}.template-toolbar-left,.template-toolbar-right{min-height:34px}.template-batch-float{z-index:60;background:var(--surface);border:1px solid var(--border);max-width:min(920px,100vw - 32px);box-shadow:var(--shadow-lg);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.template-item-table th:first-child,.template-item-table td:first-child{text-align:center}.inline-select{align-items:center;gap:6px;min-width:120px;display:inline-flex}.inline-select .select{min-width:132px;padding:5px 8px;font-size:12px}.inline-select-display{text-align:left;background:0 0;border:none;padding:2px 0}.inline-spinner{width:14px;height:14px}.divider{background:var(--border);height:1px;margin:16px 0}.text-muted{color:var(--ink-3)}.text-sm{font-size:12px}.font-bold{font-weight:700}.flex{display:flex}.flex-center{align-items:center;display:flex}.gap-8{gap:8px}.gap-12{gap:12px}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.grid-3{grid-template-columns:1fr 1fr 1fr;gap:16px;display:grid}.user-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.user-stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px}.user-stat span{color:var(--ink-3);margin-bottom:4px;font-size:12px;display:block}.user-stat strong{color:var(--ink);font-size:24px;line-height:1}.user-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.user-search{width:min(360px,100%)}.user-filter-select{width:150px}.user-role-filters{margin-bottom:16px}.login-page{background:var(--login-bg);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex;position:relative;overflow:hidden}.login-page:before{content:"";pointer-events:none;border:1px solid #0b2b6614;position:absolute;inset:24px}html[data-theme=night] .login-page:before{border-color:#c9aa6a2e}.login-theme-toggle{z-index:3;border:1px solid var(--login-card-border);background:var(--login-card-bg);color:var(--login-card-text);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:999px;padding:8px 14px;font-size:12px;font-weight:800;position:fixed;top:20px;right:22px}.login-shell{background:var(--login-shell-bg);border:1px solid var(--login-card-border);width:min(1180px,100%);min-height:680px;box-shadow:var(--login-shell-shadow);z-index:1;border-radius:14px;grid-template-columns:minmax(0,1fr) 390px;display:grid;position:relative;overflow:hidden}.login-shell:before{content:"";border:1px solid color-mix(in srgb, var(--login-panel-accent) 26%, transparent);pointer-events:none;border-radius:10px;position:absolute;inset:14px}.login-shell:after{content:"";background:linear-gradient(90deg, transparent, var(--login-panel-accent), transparent);opacity:.7;height:1px;position:absolute;bottom:104px;left:28px;right:430px}.login-brand-panel{color:var(--login-panel-text);background:var(--login-panel-bg);flex-direction:column;justify-content:space-between;padding:48px 44px;display:flex;position:relative;overflow:hidden}.login-brand-panel:before,.login-brand-panel:after{display:none}.login-brand-wordmark{z-index:1;align-self:flex-start;align-items:center;width:188px;min-height:42px;display:flex;position:relative}.login-brand-wordmark img{object-fit:contain;width:188px;height:auto}.lp-rings{pointer-events:none;z-index:0;width:440px;height:440px;position:absolute;top:0;right:0}.lp-rings-bl{pointer-events:none;z-index:0;width:260px;height:260px;position:absolute;bottom:0;left:0}.lp-ip-zone{z-index:1;flex:1;justify-content:center;align-items:center;display:flex;position:relative}.lp-ip-zone>img{object-fit:contain;filter:drop-shadow(0 20px 44px #061a442e);width:auto;max-height:300px}.lp-ip-placeholder{color:var(--login-panel-muted);opacity:.45;flex-direction:column;align-items:center;gap:12px}.lp-ip-placeholder svg{width:56px;height:56px;color:var(--login-panel-accent)}.lp-ip-placeholder span{text-align:center;font-size:13px;line-height:1.6}.lp-brand-bottom{z-index:1;position:relative}.lp-brand-tagline{color:var(--login-panel-text);letter-spacing:.02em;text-shadow:0 2px 18px #061a441f;margin-bottom:10px;font-size:30px;font-weight:900;line-height:1.3}.lp-brand-tagline em{color:var(--login-panel-accent);font-style:normal}.lp-brand-desc{color:var(--login-panel-muted);margin-bottom:18px;font-size:13px;line-height:1.75}.lp-brand-tags{flex-wrap:wrap;gap:8px;display:flex}.lp-brand-tags span{border:1px solid var(--login-value-border);color:var(--login-panel-accent);background:var(--login-value-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;padding:5px 13px;font-size:12px;font-weight:700}.login-card{background:var(--login-card-bg);border:1px solid var(--login-card-border);z-index:2;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:14px;flex-direction:column;justify-content:center;place-self:center end;width:342px;min-height:auto;max-height:calc(100% - 76px);margin-right:54px;padding:36px 34px;display:flex;position:relative;box-shadow:0 20px 54px #061a4429}.lp-card-header{text-align:center;margin-bottom:24px}.lp-card-badge{background:var(--brand-mark-bg);border-radius:16px;justify-content:center;align-items:center;width:54px;height:54px;margin:0 auto 14px;display:flex;box-shadow:0 4px 18px #0b2b6638}.lp-card-badge img{object-fit:contain;width:34px;height:34px}.lp-card-title{color:var(--login-card-text);margin-bottom:4px;font-size:22px;font-weight:900}.lp-card-sub{color:color-mix(in srgb, var(--login-card-text) 50%, transparent);font-size:13px}.login-card-footer{text-align:center;color:color-mix(in srgb, var(--login-card-text) 36%, transparent);letter-spacing:.02em;margin-top:22px;font-size:11px}.login-card .label{color:color-mix(in srgb, var(--login-card-text) 74%, transparent)}.login-card .input,.login-card .select,.login-card .textarea{background:color-mix(in srgb, var(--login-card-bg) 45%, #fff);border-color:var(--login-card-border);color:var(--login-card-text)}html[data-theme=night] .login-card .input,html[data-theme=night] .login-card .select,html[data-theme=night] .login-card .textarea{background:#020c2047}.login-card .input::placeholder,.login-card .textarea::placeholder{color:#98a2b3}.login-tabs{background:color-mix(in srgb, var(--login-card-bg) 68%, #eef4ff);border-radius:10px;grid-template-columns:repeat(3,1fr);gap:4px;margin-bottom:18px;padding:4px;display:grid}.login-tabs button{color:color-mix(in srgb, var(--login-card-text) 62%, transparent);background:0 0;border:none;border-radius:8px;padding:8px 4px;font-size:13px;font-weight:700}.login-tabs button.active{background:color-mix(in srgb, #fff 90%, var(--brand));color:#061a44;box-shadow:var(--shadow)}.login-form{gap:16px;display:grid}.login-btn{border-radius:10px;justify-content:center;width:100%;margin-top:4px;padding:11px;font-size:14px}.login-err{background:var(--danger-soft);color:var(--danger);border-radius:8px;padding:10px 14px;font-size:13px}.login-tip{background:var(--brand-soft);color:var(--brand);border-radius:8px;padding:10px 14px;font-size:13px}.login-code-row{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.profile-grid{grid-template-columns:minmax(0,1fr) minmax(320px,.8fr);align-items:start;gap:16px;display:grid}.profile-form{gap:16px;display:grid}.profile-head{border:1px solid var(--border);background:var(--bg-2);border-radius:8px;align-items:center;gap:12px;padding:12px;display:flex}.profile-avatar{width:48px;height:48px;font-size:18px}.profile-name{color:var(--ink);font-size:15px;font-weight:800}.profile-meta{color:var(--ink-3);margin-top:2px;font-size:12px}.profile-readonly{border:1px solid var(--border);background:var(--bg-2);color:var(--ink-3);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:12px;font-size:13px;display:flex}.profile-readonly strong{color:var(--ink)}.profile-submit{justify-content:center}.notice{border-radius:8px;padding:10px 14px;font-size:13px}.notice-ok{background:var(--success-soft);color:var(--success)}.notice-err{background:var(--danger-soft);color:var(--danger)}.notice-warn{background:var(--warning-soft);color:var(--warning)}.notice-info{background:var(--brand-soft);color:var(--brand)}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:2px solid var(--border);border-top-color:var(--brand);border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin}.loading{justify-content:center;align-items:center;padding:48px;display:flex}@media (width<=780px){.login-page{background:var(--login-bg);align-items:flex-start;padding:18px}.login-theme-toggle{top:12px;right:14px}.login-shell{grid-template-columns:1fr;min-height:0}.login-brand-panel{min-height:280px;padding:28px}.lp-ip-zone{flex:none;height:180px}.lp-ip-zone>img{max-height:160px}.lp-brand-tagline{font-size:22px}.lp-rings{width:260px;height:260px}.lp-rings-bl{width:160px;height:160px}.login-card{padding:30px 24px}.profile-grid{grid-template-columns:1fr}.user-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.user-toolbar{flex-direction:column;align-items:stretch}.user-search,.user-filter-select{width:100%}.project-hero{flex-direction:column;align-items:flex-start}.project-progress-panel{justify-content:space-between;width:100%}.info-grid,.attachment-upload{grid-template-columns:1fr}.attachment-row{flex-direction:column}.template-toolbar{flex-direction:column;align-items:stretch}.template-toolbar-left,.template-toolbar-right{align-items:stretch}.template-batch-float{align-items:stretch;bottom:12px;left:12px;right:12px;transform:none}.template-batch-float .btn{flex:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.portal-page{max-width:860px;margin:0 auto;padding:32px 24px 80px}.portal-hero{background:linear-gradient(135deg, var(--brand) 0%, #1e40af 100%);color:#fff;border-radius:20px;margin-bottom:24px;padding:32px}.portal-hero h1{font-size:24px;font-weight:800}.portal-hero p{opacity:.85;margin-top:8px;font-size:14px}.portal-metrics{grid-template-columns:repeat(4,1fr);gap:10px;margin-top:20px;display:grid}.portal-metric{text-align:center;background:#ffffff26;border-radius:12px;padding:12px}.portal-metric strong{font-size:22px;font-weight:800;display:block}.portal-metric span{opacity:.8;font-size:11px}html[data-theme=night] .btn-primary{color:#fff;background:linear-gradient(135deg,#7a5a18 0%,#b8943a 100%);box-shadow:0 3px 10px #b8943a61}html[data-theme=night] .btn-primary:hover:not(:disabled){box-shadow:0 5px 14px #b8943a80}html[data-theme=night] .task-kanban-alert{color:#f87171;background:#f871711f;border-bottom-color:#f8717133}html[data-theme=night] .risk-overdue{color:#f87171;background:#f871711f}html[data-theme=night] .task-kanban-column{background:var(--bg-2);border-color:#ffffff12}html[data-theme=night] .task-kanban-column-head{color:var(--ink-2)}html[data-theme=night] .executor-task-card,html[data-theme=night] .kanban-task-card{background:var(--surface);border-color:#ffffff14}html[data-theme=night] .week-col-header.today{background:#60a5fa1f}.portal-root{--portal-bg:#f7f5ef;--portal-surface:#fff;--portal-surface-2:#f8fafc;--portal-border:#e2e8f0;--portal-border-soft:#f1f5f9;--portal-text:#0f172a;--portal-muted:#64748b;--portal-faint:#94a3b8;--portal-accent:#0b2b66;--portal-ink:#061a44;--portal-soft:#eef4ff;--portal-gold:#c9aa6a;--portal-hero-bg:linear-gradient(135deg, #fff 0%, #eef4ff 52%, #f7f1e3 100%);--portal-hero-art:url(/brand/ui-portal-report-art.webp);--portal-hero-text:#0b2b66;--portal-hero-muted:#334155;--portal-hero-line:#0b2b6629;--portal-hero-panel:#ffffffb8;--portal-hero-panel-border:#0b2b661f;--portal-hero-stat:#0b2b66;--portal-hero-track:#0b2b6624;--portal-shadow:0 1px 3px #0f172a0a;--portal-report-line:#0b2b6614;background:var(--portal-bg);-webkit-font-smoothing:antialiased;min-height:100vh;color:var(--portal-text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,sans-serif}html[data-theme=night] .portal-root{--portal-bg:#081b40;--portal-surface:#102957;--portal-surface-2:#0d244f;--portal-border:#ffffff1f;--portal-border-soft:#ffffff14;--portal-text:#f8fafc;--portal-muted:#b8c7df;--portal-faint:#8fa3c1;--portal-accent:#c9aa6a;--portal-ink:#061a44;--portal-soft:#c9aa6a2e;--portal-gold:#e8d39b;--portal-hero-bg:linear-gradient(135deg, #061a44 0%, #0b2b66 58%, #173f7a 100%);--portal-hero-art:url(/brand/ui-login-night-art.webp);--portal-hero-text:#fff;--portal-hero-muted:#ffffffad;--portal-hero-line:#ffffff26;--portal-hero-panel:#ffffff1f;--portal-hero-panel-border:#ffffff2e;--portal-hero-stat:#fffffff2;--portal-hero-track:#fff3;--portal-shadow:0 10px 28px #0000002e;--portal-report-line:#c9aa6a1f}.portal-loading{color:#64748b;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100vh;font-size:14px;display:flex}.portal-spinner{border:3px solid #e2e8f0;border-top-color:var(--brand,#2563eb);border-radius:50%;width:36px;height:36px;animation:.7s linear infinite portalSpin}@keyframes portalSpin{to{transform:rotate(360deg)}}.portal-error{text-align:center;color:#64748b;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:100vh;padding:32px;display:flex}.portal-error-icon{margin-bottom:8px;font-size:48px}.portal-error h2{color:var(--portal-text);margin:0;font-size:22px;font-weight:700}.portal-error p{margin:0;font-size:14px}.portal-hero{color:var(--portal-hero-text);background:var(--portal-hero-bg);position:relative;overflow:hidden}.portal-hero:before{content:"";background-image:linear-gradient(90deg, #ffffffc7, #fff3), var(--portal-hero-art), linear-gradient(var(--portal-report-line) 1px, transparent 1px), linear-gradient(90deg, var(--portal-report-line) 1px, transparent 1px);background-position:50%,right 12% center,50%,50%;background-repeat:no-repeat,no-repeat,repeat,repeat;background-size:auto,min(42vw,420px),42px 42px,42px 42px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(135deg,#000000b3,#0000 72%);mask-image:linear-gradient(135deg,#000000b3,#0000 72%)}html[data-theme=night] .portal-hero:before{background-image:linear-gradient(90deg, #061a44db, #061a4433), var(--portal-hero-art), linear-gradient(var(--portal-report-line) 1px, transparent 1px), linear-gradient(90deg, var(--portal-report-line) 1px, transparent 1px)}.portal-hero:after{content:"CREATIVITY OF GROWTH RING";color:var(--portal-gold);letter-spacing:.28em;opacity:.55;font-size:11px;font-weight:900;position:absolute;bottom:24px;right:28px}.portal-brand-line{border-bottom:1px solid var(--portal-hero-line);justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;padding-bottom:18px;display:flex}.portal-brand-line strong{color:var(--portal-gold);letter-spacing:.18em;white-space:nowrap;font-size:20px;font-weight:900}.portal-brand-line span{color:var(--portal-hero-muted);text-align:right;flex-shrink:0;font-size:12px;font-weight:500}.portal-hero-inner{z-index:1;max-width:880px;margin:0 auto;padding:48px 32px 40px;position:relative}.portal-hero-top{align-items:center;gap:20px;margin-bottom:32px;display:flex}.portal-hero-logo{background:var(--portal-hero-panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1.5px solid var(--portal-hero-panel-border);width:68px;height:68px;color:var(--portal-hero-text);border-radius:18px;flex-shrink:0;justify-content:center;align-items:center;font-size:26px;font-weight:800;display:flex;overflow:hidden}.portal-hero-logo img{object-fit:cover;width:100%;height:100%}.portal-hero-info{flex:1;min-width:0}.portal-hero-eyebrow{letter-spacing:.12em;text-transform:uppercase;opacity:.7;margin-bottom:6px;font-size:11px;font-weight:600}.portal-hero-name{letter-spacing:-.02em;margin:0 0 7px;font-size:30px;font-weight:800;line-height:1.1}.portal-hero-package{opacity:.8;font-size:14px;font-weight:500}.portal-hero-period{opacity:.65;margin-top:14px;font-size:12px}.portal-hero-stats{background:var(--portal-hero-panel);border:1px solid var(--portal-hero-panel-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:18px;flex-wrap:wrap;align-items:center;gap:8px;padding:20px 24px;display:flex;box-shadow:0 18px 48px #0b2b661a}.portal-hero-stat{flex:1;align-items:center;gap:12px;min-width:90px;display:flex}.portal-hero-stat.center{text-align:center;flex-direction:column;align-items:center;gap:4px}.portal-hero-stat-sep{background:var(--portal-hero-line);flex-shrink:0;width:1px;height:36px}.portal-hero-stat-num{color:var(--portal-hero-stat);font-size:32px;font-weight:800;line-height:1}.portal-hero-stat-num.attention{color:#d97706}html[data-theme=night] .portal-hero-stat-num.attention{color:#fde68a}.portal-hero-stat-label{opacity:.75;font-size:12px;font-weight:500}.portal-hero-stat-val{opacity:.9;margin-top:3px;font-size:14px;font-weight:700}.portal-nav-sticky{z-index:50;background:color-mix(in srgb, var(--portal-surface) 94%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--portal-border);position:sticky;top:0;box-shadow:0 1px 8px #0f172a0f}.portal-nav-inner{scrollbar-width:none;max-width:880px;margin:0 auto;padding:0 32px;display:flex;overflow-x:auto}.portal-nav-inner::-webkit-scrollbar{display:none}.portal-nav-btn{color:var(--portal-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2.5px solid #0000;align-items:center;gap:6px;padding:15px 14px;font-size:13px;font-weight:600;transition:color .15s,border-color .15s;display:flex;position:relative}.portal-nav-btn:hover{color:var(--portal-text)}.portal-nav-btn.active{color:var(--brand);border-bottom-color:var(--brand)}.portal-nav-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:1.8s ease-in-out infinite pulseDot}@keyframes pulseDot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.75)}}.portal-nav-badge{color:#fff;border-radius:99px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.portal-main{max-width:880px;margin:0 auto;padding:0 32px 64px}.portal-section{padding-top:52px}.portal-section-header{align-items:flex-start;gap:14px;margin-bottom:20px;display:flex}.portal-section-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;margin-top:2px;font-size:16px;font-weight:800;display:flex}.portal-section-icon.action{color:#d97706;background:#fffbeb}.portal-section-icon.done{color:#16a34a;background:#f0fdf4}.portal-section-icon.future{color:#64748b;background:#f1f5f9}.portal-section-title{color:var(--portal-text);letter-spacing:-.02em;margin:0 0 5px;font-size:20px;font-weight:800}.portal-section-sub{color:var(--portal-muted);margin:0;font-size:13px;line-height:1.5}.portal-no-action{text-align:center;background:var(--portal-surface);border:1px solid #dcfce7;border-radius:20px;flex-direction:column;align-items:center;padding:52px 24px;display:flex}.portal-no-action-check{color:#16a34a;background:#f0fdf4;border:2px solid #bbf7d0;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;margin-bottom:16px;font-size:22px;display:flex}.portal-no-action h3{color:#15803d;margin:0 0 8px;font-size:16px;font-weight:700}.portal-no-action p{color:#4ade80;margin:0;font-size:13px}.portal-action-list{gap:12px;display:grid}.portal-action-card{background:var(--portal-surface);border:1px solid #fde68a;border-left:4px solid #f59e0b;border-radius:14px;padding:20px 22px;transition:box-shadow .2s;box-shadow:0 2px 12px #f59e0b14}.portal-action-card:hover{box-shadow:0 6px 24px #f59e0b24}.portal-action-card.overdue{border-color:#fca5a5 #fca5a5 #fca5a5 #ef4444;box-shadow:0 2px 12px #ef444414}.portal-action-top{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.portal-action-tag{border-radius:99px;padding:3px 10px;font-size:12px;font-weight:700}.portal-action-due{font-size:12px;font-weight:600}.portal-action-title{color:var(--portal-text);margin-bottom:8px;font-size:16px;font-weight:700;line-height:1.45}.portal-action-desc{color:var(--portal-muted);margin-bottom:10px;font-size:13px;line-height:1.7}.portal-action-meta{color:#94a3b8;border-top:1px solid #fef9c3;flex-wrap:wrap;gap:16px;margin-top:12px;padding-top:12px;font-size:12px;display:flex}.portal-phases{gap:10px;display:grid}.portal-phase{background:var(--portal-surface);border:1px solid var(--portal-border);box-shadow:var(--portal-shadow);border-radius:16px;overflow:hidden}.portal-phase-header{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:16px;padding:18px 22px;transition:background .15s;display:flex}.portal-phase-header:hover{background:var(--portal-surface-2)}.portal-phase-left{flex:1;align-items:center;gap:14px;min-width:0;display:flex}.portal-phase-name{color:var(--portal-text);margin-bottom:4px;font-size:15px;font-weight:700}.portal-phase-meta{color:var(--portal-muted);font-size:12px}.portal-phase-waiting{color:#d97706;font-weight:600}.portal-chevron{color:#94a3b8;flex-shrink:0;font-size:18px;transition:transform .2s;display:inline-block}.portal-phase-tasks{border-top:1px solid var(--portal-border-soft)}.portal-task-row{border-bottom:1px solid var(--portal-border-soft);align-items:flex-start;gap:12px;padding:13px 22px;transition:background .12s;display:flex}.portal-task-row:last-child{border-bottom:none}.portal-task-row:hover{background:var(--portal-surface-2)}.portal-task-row.highlight{background:#fffbeb}.portal-task-row.highlight:hover{background:#fef9c3}.portal-task-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:5px}.portal-task-body{flex:1;min-width:0}.portal-task-title{color:var(--portal-text);font-size:13.5px;font-weight:500;line-height:1.5}.portal-task-note{border-radius:6px;margin-top:5px;padding:5px 9px;font-size:12px;line-height:1.6}.portal-task-note.done{color:#15803d;background:#f0fdf4}.portal-task-note.action{color:#92400e;background:#fffbeb}.portal-task-files{gap:6px;margin-top:8px;display:grid}.portal-task-file{border:1px solid var(--portal-border);background:var(--portal-surface-2);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;display:flex}.portal-task-file-name{min-width:0;color:var(--portal-muted);overflow-wrap:anywhere;font-size:12px;font-weight:600}.portal-task-file-actions{flex-shrink:0;gap:6px;display:flex}.portal-task-right{text-align:right;flex-shrink:0}.portal-task-badge{white-space:nowrap;border-radius:99px;padding:3px 10px;font-size:11.5px;font-weight:600}.portal-task-date{color:var(--portal-faint);margin-top:5px;font-size:11px}.portal-badge{background:var(--brand-soft,#eff6ff);color:var(--brand,#2563eb);white-space:nowrap;border-radius:99px;flex-shrink:0;padding:4px 11px;font-size:12px;font-weight:700;text-decoration:none;transition:opacity .15s}.portal-badge:hover{opacity:.8}.portal-badge.green{color:#16a34a;background:#f0fdf4}.portal-badge.blue{color:#2563eb;background:#eff6ff}.portal-deliverables{gap:10px;display:grid}.portal-deliverable{background:var(--portal-surface);border:1px solid var(--portal-border);box-shadow:var(--portal-shadow);border-radius:16px;align-items:flex-start;gap:16px;padding:18px 20px;transition:box-shadow .2s;display:flex}.portal-deliverable:hover{box-shadow:0 4px 20px #0f172a14}.portal-deliverable-icon{letter-spacing:.04em;text-transform:uppercase;color:var(--brand);background:var(--brand-soft);border-radius:8px;flex-shrink:0;margin-top:2px;padding:6px 8px;font-size:11px;font-weight:800}.portal-deliverable-body{flex:1;min-width:0}.portal-deliverable-title{color:var(--portal-text);margin-bottom:5px;font-size:14px;font-weight:700}.portal-deliverable-content{color:var(--portal-muted);margin-bottom:8px;font-size:13px;line-height:1.7}.portal-deliverable-meta{color:var(--portal-faint);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}.portal-deliverable-actions{flex-shrink:0;align-self:flex-start;gap:8px;display:flex}.portal-upcoming{gap:8px;display:grid}.portal-upcoming-item{background:var(--portal-surface);border:1px solid var(--portal-border);box-shadow:var(--portal-shadow);border-radius:14px;align-items:flex-start;gap:14px;padding:16px 20px;display:flex}.portal-upcoming-num{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:13px;font-weight:800;display:flex}.portal-upcoming-body{flex:1}.portal-upcoming-title{color:var(--portal-text);font-size:14px;font-weight:600;line-height:1.45}.portal-upcoming-meta{color:var(--portal-faint);flex-wrap:wrap;gap:12px;margin-top:5px;font-size:12px;display:flex}.portal-future-list{gap:10px;display:grid}.portal-future-month{background:var(--portal-surface);border:1px solid var(--portal-border);box-shadow:var(--portal-shadow);border-radius:16px;overflow:hidden}.portal-future-header{background:var(--portal-surface);cursor:pointer;text-align:left;border:none;justify-content:space-between;align-items:center;gap:16px;width:100%;padding:18px 22px;transition:background .15s;display:flex}.portal-future-header:hover{background:var(--portal-surface-2)}.portal-future-title{color:var(--portal-text);font-size:15px;font-weight:700}.portal-future-meta{color:var(--portal-muted);margin-top:3px;font-size:12px}.portal-future-right{flex-shrink:0;align-items:center;gap:12px;font-size:15px;font-weight:700;display:flex}.portal-future-body{border-top:1px solid var(--portal-border-soft);background:var(--portal-surface-2);gap:10px;padding:14px;display:grid}.portal-contact{padding-bottom:0}.portal-contact-inner{background:var(--portal-surface);border:1px solid;border-radius:20px;flex-wrap:wrap;align-items:center;gap:20px;padding:28px;display:flex;box-shadow:0 1px 3px #0f172a0a}.portal-contact-icon{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:22px;display:flex}.portal-contact-text{flex:1;min-width:160px}.portal-contact-text h3{color:var(--portal-text);margin:0 0 5px;font-size:15px;font-weight:700}.portal-contact-text p{color:var(--portal-muted);margin:0;font-size:13px;line-height:1.5}.portal-contact-btn{color:#fff;white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:10px 22px;font-size:14px;font-weight:700;text-decoration:none;transition:opacity .15s,transform .1s;display:inline-flex}.portal-contact-btn:hover{opacity:.9;transform:translateY(-1px)}.portal-contact-btn:active{transform:translateY(0)}.portal-footer{text-align:center;color:var(--portal-faint);border-top:1px solid var(--portal-border);background:var(--portal-surface);margin-top:64px;padding:28px;font-size:12px}@media (width<=640px){.portal-hero-inner{padding:32px 20px 28px}.portal-hero-name{font-size:24px}.portal-hero-logo{border-radius:14px;width:56px;height:56px;font-size:22px}.portal-hero-stats{padding:16px 18px}.portal-hero-stat-sep{display:none}.portal-hero-stat{min-width:70px}.portal-hero-stat-num{font-size:26px}.portal-nav-inner{padding:0 20px}.portal-main{padding:0 20px 48px}.portal-section{padding-top:40px}.portal-section-title{font-size:18px}.portal-phase-header{padding:16px 18px}.portal-task-row{padding:12px 16px}.portal-contact-inner{flex-direction:column;align-items:flex-start;gap:16px}.portal-contact-btn{width:100%}}
