.app-shell{display:flex;min-height:100vh}.app-sidebar{width:260px;flex-shrink:0;background:var(--color-neutral-900);color:var(--color-neutral-300);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:50;overflow-y:auto}.app-sidebar__brand{padding:var(--space-5) var(--space-5);display:flex;align-items:center;gap:var(--space-3);border-bottom:1px solid var(--color-neutral-800)}.app-sidebar__brand img{width:32px;height:32px}.app-sidebar__brand span{font-weight:var(--weight-bold);color:var(--color-neutral-0);font-size:var(--text-sm)}.app-sidebar__section{padding:var(--space-4) var(--space-3)}.app-sidebar__label{font-size:11px;font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.08em;color:var(--color-neutral-500);padding:0 var(--space-2) var(--space-2)}.app-sidebar__nav{display:flex;flex-direction:column;gap:2px}.app-sidebar__link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-neutral-400);transition:all var(--transition-fast);text-decoration:none}.app-sidebar__link:hover{background:var(--color-neutral-800);color:var(--color-neutral-0)}.app-sidebar__link--active{background:var(--color-primary-600);color:var(--color-neutral-0)}.app-sidebar__link svg{width:18px;height:18px;flex-shrink:0;opacity:.7}.app-sidebar__link--active svg{opacity:1}.app-sidebar__link .app-badge{margin-left:auto}.app-sidebar__footer{margin-top:auto;padding:var(--space-4) var(--space-3);border-top:1px solid var(--color-neutral-800)}.app-content{flex:1;margin-left:260px;min-height:100vh;background:var(--color-bg-subtle)}.app-topbar{height:60px;background:var(--color-bg);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-6);position:sticky;top:0;z-index:40}.app-topbar__left,.app-topbar__right{display:flex;align-items:center;gap:var(--space-4)}.app-topbar__title{font-size:var(--text-lg);font-weight:var(--weight-semibold);font-family:var(--font-body)}.app-topbar__search{height:36px;width:280px;padding:0 var(--space-3) 0 36px;border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--text-sm);background:var(--color-bg-subtle);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23A0A5AD' stroke-width='2'%3E%3Ccircle cx='7' cy='7' r='5'/%3E%3Cpath d='M16 16l-3.5-3.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:12px center}.app-topbar__icon-btn{width:36px;height:36px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:var(--color-text-muted);position:relative;transition:all var(--transition-fast)}.app-topbar__icon-btn:hover{background:var(--color-bg-subtle);color:var(--color-text)}.app-topbar__notification-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;background:var(--color-danger-500);border-radius:var(--radius-full);border:2px solid var(--color-bg)}.app-topbar__user{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast)}.app-topbar__user:hover{background:var(--color-bg-subtle)}.app-topbar__avatar{width:32px;height:32px;border-radius:var(--radius-full);background:var(--color-primary-500);color:var(--color-neutral-0);display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:var(--weight-bold)}.app-main{padding:var(--space-6)}.portal-shell{min-height:100vh;background:var(--color-bg-subtle)}.portal-topbar{height:60px;background:var(--color-bg);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-6);position:sticky;top:0;z-index:40}.portal-topbar__brand{display:flex;align-items:center;gap:var(--space-3);font-weight:var(--weight-bold);font-size:var(--text-sm);color:var(--color-text)}.portal-topbar__brand img{width:28px;height:28px}.portal-nav{display:flex;gap:var(--space-1)}.portal-nav__link{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted);border-radius:var(--radius-md);transition:all var(--transition-fast);text-decoration:none}.portal-nav__link:hover{color:var(--color-primary-500);background:var(--color-primary-50)}.portal-nav__link--active{color:var(--color-primary-600);background:var(--color-primary-50)}.portal-topbar__actions{display:flex;align-items:center;gap:var(--space-3)}.portal-topbar__back{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm);color:var(--color-text-muted);text-decoration:none;padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);transition:all var(--transition-fast)}.portal-topbar__back:hover{color:var(--color-primary-500);background:var(--color-primary-50)}.portal-topbar__logout{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm);color:var(--color-danger-500);text-decoration:none;padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-danger-100, #fecaca);transition:all var(--transition-fast)}.portal-topbar__logout:hover{background:var(--color-danger-50, #fef2f2)}.portal-main{max-width:960px;margin:0 auto;padding:var(--space-8) var(--space-4)}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4)}.kpi-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-2)}.kpi-card__label{font-size:var(--text-xs);font-weight:var(--weight-medium);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.kpi-card__value{font-size:var(--text-3xl);font-weight:var(--weight-bold);color:var(--color-text)}.kpi-card__change{font-size:var(--text-xs);font-weight:var(--weight-medium)}.kpi-card__change--up{color:var(--color-success-500)}.kpi-card__change--down{color:var(--color-danger-500)}.data-table-wrap{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.data-table-toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--color-border);gap:var(--space-3);flex-wrap:wrap}.data-table-filters{display:flex;gap:var(--space-2);align-items:center}.data-table-filter{height:34px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);background:var(--color-bg);color:var(--color-text);cursor:pointer}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table th{text-align:left;padding:var(--space-3) var(--space-4);font-weight:var(--weight-semibold);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border)}.data-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);color:var(--color-text-secondary)}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--color-bg-subtle)}.data-table__name{font-weight:var(--weight-medium);color:var(--color-text)}.data-table-pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);font-size:var(--text-sm);color:var(--color-text-muted)}.app-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:11px;font-weight:var(--weight-semibold)}.app-badge--green{background:var(--color-success-50);color:var(--color-success-600)}.app-badge--yellow{background:var(--color-warning-50);color:var(--color-warning-600)}.app-badge--red{background:var(--color-danger-50);color:var(--color-danger-600)}.app-badge--blue{background:var(--color-info-50);color:var(--color-info-600)}.app-badge--gray{background:var(--color-neutral-100);color:var(--color-neutral-600)}.activity-feed{display:flex;flex-direction:column;gap:0}.activity-item{display:flex;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-border);font-size:var(--text-sm)}.activity-item:last-child{border-bottom:none}.activity-dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--color-primary-400);flex-shrink:0;margin-top:6px}.activity-text{color:var(--color-text-secondary)}.activity-text strong{color:var(--color-text)}.activity-time{font-size:var(--text-xs);color:var(--color-text-subtle);margin-top:2px}.status-timeline{display:flex;align-items:center;gap:0;padding:var(--space-6) 0}.status-step{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);flex:1;position:relative;text-align:center}.status-step:after{content:"";position:absolute;top:16px;left:calc(50% + 18px);right:calc(-50% + 18px);height:3px;background:var(--color-border)}.status-step:last-child:after{display:none}.status-step--done:after{background:var(--color-success-500)}.status-step__circle{width:32px;height:32px;border-radius:var(--radius-full);border:2px solid var(--color-border);display:flex;align-items:center;justify-content:center;background:var(--color-bg);position:relative;z-index:1;font-size:var(--text-xs);font-weight:var(--weight-bold);color:var(--color-text-subtle)}.status-step--done .status-step__circle{background:var(--color-success-500);border-color:var(--color-success-500);color:#fff}.status-step--current .status-step__circle{border-color:var(--color-primary-500);color:var(--color-primary-500);box-shadow:0 0 0 4px var(--color-primary-50)}.status-step__label{font-size:var(--text-xs);color:var(--color-text-muted);max-width:100px}.status-step--done .status-step__label{color:var(--color-success-600)}.status-step--current .status-step__label{color:var(--color-primary-600);font-weight:var(--weight-semibold)}.chat-thread{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);max-height:500px;overflow-y:auto}.chat-msg{display:flex;gap:var(--space-2);max-width:75%}.chat-msg--sent{align-self:flex-end;flex-direction:row-reverse}.chat-msg--received{align-self:flex-start}.chat-bubble{padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-sm);line-height:var(--leading-normal)}.chat-msg--sent .chat-bubble{background:var(--color-primary-500);color:#fff;border-bottom-right-radius:var(--radius-sm)}.chat-msg--received .chat-bubble{background:var(--color-neutral-100);color:var(--color-text);border-bottom-left-radius:var(--radius-sm)}.chat-time{font-size:10px;color:var(--color-text-subtle);align-self:flex-end}.chat-compose{display:flex;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);background:var(--color-bg)}.chat-compose input{flex:1;height:40px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--text-sm);background:var(--color-bg-subtle)}.chat-compose button{height:40px;padding:0 var(--space-4);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer}.kanban-board{display:flex;gap:var(--space-4);overflow-x:auto;padding-bottom:var(--space-4)}.kanban-col{min-width:260px;max-width:280px;flex-shrink:0;background:var(--color-bg-subtle);border-radius:var(--radius-lg);display:flex;flex-direction:column}.kanban-col__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);font-size:var(--text-sm);font-weight:var(--weight-semibold)}.kanban-col__count{background:var(--color-neutral-200);color:var(--color-neutral-600);font-size:11px;padding:1px 8px;border-radius:var(--radius-full)}.kanban-col__body{padding:var(--space-2) var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);flex:1;min-height:100px}.kanban-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);cursor:grab;transition:box-shadow var(--transition-fast);font-size:var(--text-sm)}.kanban-card:hover{box-shadow:var(--shadow-md)}.kanban-card__name{font-weight:var(--weight-medium);color:var(--color-text);margin-bottom:var(--space-1)}.kanban-card__meta{font-size:var(--text-xs);color:var(--color-text-muted);display:flex;justify-content:space-between}.inbox-layout{display:grid;grid-template-columns:350px 1fr;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;height:calc(100vh - 140px)}.inbox-list{border-right:1px solid var(--color-border);overflow-y:auto}.inbox-list__item{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);cursor:pointer;transition:background var(--transition-fast)}.inbox-list__item:hover{background:var(--color-bg-subtle)}.inbox-list__item--active{background:var(--color-primary-50)}.inbox-list__item--unread{font-weight:var(--weight-semibold)}.inbox-list__avatar{width:36px;height:36px;border-radius:var(--radius-full);background:var(--color-primary-100);color:var(--color-primary-600);display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:var(--weight-bold);flex-shrink:0}.inbox-list__content{flex:1;min-width:0}.inbox-list__name{font-size:var(--text-sm);color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inbox-list__preview{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inbox-list__time{font-size:10px;color:var(--color-text-subtle);flex-shrink:0}.inbox-list__unread-dot{width:8px;height:8px;background:var(--color-primary-500);border-radius:var(--radius-full);flex-shrink:0;align-self:center}.inbox-view{display:flex;flex-direction:column}.inbox-view__header{padding:var(--space-4);border-bottom:1px solid var(--color-border)}.inbox-view__header h3{font-size:var(--text-base);font-family:var(--font-body)}.inbox-view__body{flex:1;overflow-y:auto}.upload-zone{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:var(--space-10);text-align:center;cursor:pointer;transition:all var(--transition-fast);background:var(--color-bg)}.upload-zone:hover,.upload-zone--active{border-color:var(--color-primary-400);background:var(--color-primary-50)}.upload-zone__icon{font-size:2rem;margin-bottom:var(--space-3)}.upload-zone__text{font-size:var(--text-sm);color:var(--color-text-muted)}.upload-zone__hint{font-size:var(--text-xs);color:var(--color-text-subtle);margin-top:var(--space-2)}.tab-nav{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin-bottom:var(--space-6)}.tab-nav__item{padding:var(--space-3) var(--space-5);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all var(--transition-fast);background:none;border-top:none;border-left:none;border-right:none}.tab-nav__item:hover{color:var(--color-primary-500)}.tab-nav__item--active{color:var(--color-primary-600);border-bottom-color:var(--color-primary-500)}.app-section-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.app-section-card__header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between}.app-section-card__header h3{font-size:var(--text-base);font-family:var(--font-body);font-weight:var(--weight-semibold)}.app-section-card__body{padding:var(--space-5)}@media(max-width:1024px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.kanban-board{padding-bottom:var(--space-6)}.inbox-layout{grid-template-columns:1fr;height:auto}.inbox-list{max-height:300px;border-right:none;border-bottom:1px solid var(--color-border)}}@media(max-width:768px){.app-sidebar{display:none}.app-content{margin-left:0}.kpi-grid{grid-template-columns:1fr}.status-timeline{flex-direction:column;gap:var(--space-3)}.status-step:after{display:none}.portal-nav{display:none}}
