:root{--bg:#0a0f1a;--bg2:#111827;--fg:#f0f4f8;--muted:#64748b;--accent:#00d4aa;--accent-dim:#00a88a;--card:#1a2332;--border:#2d3a4f;--warning:#f59e0b;--danger:#ef4444;--success:#10b981}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Noto Sans SC','Space Grotesk',sans-serif;background:var(--bg);color:var(--fg);overflow-x:hidden}
.fd{font-family:'Space Grotesk',sans-serif}
::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--accent)}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)!important;box-shadow:0 0 0 3px rgba(0,212,170,.1)}
.bg-grid{background-image:linear-gradient(rgba(0,212,170,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(0,212,170,.03) 1px,transparent 1px);background-size:60px 60px;animation:gm 20s linear infinite}
@keyframes gm{to{background-position:60px 60px}}
.orb{position:absolute;border-radius:50%;filter:blur(90px);opacity:.35;animation:of 10s ease-in-out infinite}
@keyframes of{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(25px,-18px) scale(1.08)}}
.ch{transition:all .35s cubic-bezier(.4,0,.2,1);border:1px solid var(--border)}.ch:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 16px 40px rgba(0,212,170,.12)}
.tag{background:rgba(0,212,170,.08);border:1px solid rgba(0,212,170,.25);color:var(--accent);transition:all .2s;cursor:pointer;user-select:none}.tag:hover,.tag.on{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.bp{background:linear-gradient(135deg,var(--accent),var(--accent-dim));color:var(--bg);font-weight:600;transition:all .3s;position:relative;overflow:hidden}.bp::after{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.18),transparent);transition:left .5s}.bp:hover::after{left:100%}.bp:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,212,170,.3)}.bp:disabled{opacity:.5;pointer-events:none}
.bs{background:transparent;border:1px solid var(--border);color:var(--fg);transition:all .3s}.bs:hover{border-color:var(--accent);color:var(--accent)}
.pbar{background:linear-gradient(90deg,var(--accent),var(--accent-dim));box-shadow:0 0 14px rgba(0,212,170,.35)}
.rv{opacity:0;transform:translateY(30px);transition:all .7s cubic-bezier(.4,0,.2,1)}.rv.on{opacity:1;transform:translateY(0)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}.pls{animation:pulse 2s ease-in-out infinite}
.mo{background:rgba(10,15,26,.92);backdrop-filter:blur(12px);opacity:0;visibility:hidden;pointer-events:none;transition:all .3s}.mo.on{opacity:1;visibility:visible;pointer-events:auto}
.mc{transform:scale(.92) translateY(16px);transition:all .35s cubic-bezier(.4,0,.2,1)}.mo.on .mc{transform:scale(1) translateY(0)}
.tb{position:relative;color:var(--muted);transition:color .3s;cursor:pointer}.tb::after{content:'';position:absolute;bottom:-2px;left:0;width:100%;height:2px;background:var(--accent);transform:scaleX(0);transition:transform .3s}.tb.on{color:var(--accent)}.tb.on::after{transform:scaleX(1)}
.toast-c{transform:translateX(120%);transition:transform .4s cubic-bezier(.4,0,.2,1)}.toast-c.show{transform:translateX(0)}
.drawer{transform:translateX(100%);transition:transform .35s cubic-bezier(.4,0,.2,1)}.drawer.on{transform:translateX(0)}
.acc-body{max-height:0;overflow:hidden;transition:max-height .4s ease}.acc-body.open{max-height:600px}
.heart{transition:all .2s}.heart.liked{color:#ef4444;transform:scale(1.2)}
.df{position:absolute;width:3px;height:3px;background:var(--accent);border-radius:50%;box-shadow:0 0 8px var(--accent);animation:dfly 4s linear infinite}
@keyframes dfly{0%{transform:translateX(-100vw);opacity:0}8%{opacity:.8}92%{opacity:.8}100%{transform:translateX(100vw);opacity:0}}
.step-line{height:3px;background:var(--border);position:relative;overflow:hidden}.step-line-fill{height:100%;background:var(--accent);transition:width .6s}
.loading-bar{height:3px;background:var(--accent);position:fixed;top:0;left:0;z-index:999;animation:loadA 1s ease-in-out forwards}
@keyframes loadA{0%{width:0}50%{width:70%}100%{width:100%;opacity:0}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* ========== Profile Hero ========== */
.profile-hero{background:var(--card);border:1px solid var(--border)}
.hero-banner{height:140px;background:linear-gradient(135deg,rgba(0,212,170,.12) 0%,rgba(6,182,212,.08) 50%,rgba(139,92,246,.08) 100%);position:relative;overflow:hidden}
.hero-banner::before{content:'';position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 0L60 30L30 60L0 30z' fill='none' stroke='rgba(0,212,170,0.06)' stroke-width='1'/%3E%3C/svg%3E");background-size:60px 60px}
.hero-body{padding-bottom:0}

/* ========== Masonry Grid ========== */
.masonry-grid{columns:2;column-gap:12px}
@media(min-width:768px){.masonry-grid{columns:3}}
.masonry-item{break-inside:avoid;margin-bottom:12px;position:relative;overflow:hidden}
.masonry-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.7),transparent 60%);display:flex;align-items:flex-end;padding:12px;opacity:0;transition:opacity .3s}
.masonry-item:hover .masonry-overlay{opacity:1}

/* ========== Review Wall ========== */
.review-wall{display:flex;flex-direction:column;gap:12px}
.review-card{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:12px;transition:border-color .3s}
.review-card:hover{border-color:rgba(0,212,170,.3)}

/* ========== Mobile Responsive ========== */
@media(max-width:768px){
  .hero-t{font-size:2.2rem!important}

  /* Sidebar → slide drawer on mobile */
  .sidebar-wrap{transform:translateX(-100%);z-index:50;transition:transform .3s ease}
  .sidebar-wrap.open{transform:translateX(0)}
  .sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:45}
  .sidebar-overlay.open{display:block}

  /* Main content full width */
  .main-wrap{margin-left:0!important;padding:16px!important}
  .main-wrap h1{font-size:1.25rem!important;margin-bottom:16px}

  /* Mobile top bar */
  .mobile-topbar{display:flex!important;align-items:center;gap:12px;padding:12px 16px;background:var(--bg2);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30;color:var(--fg)}
  .mobile-topbar svg{color:var(--fg)}

  /* Stats grid → 2 columns on mobile */
  .stats-grid,.grid-cols-1.md\:grid-cols-2.xl\:grid-cols-4,.grid.md\:grid-cols-2.xl\:grid-cols-4{grid-template-columns:repeat(2,1fr)!important;gap:10px!important}
  .stat-card{padding:14px!important}
  .stat-card .val{font-size:1.2rem!important}
  .stat-card .label{font-size:11px!important}

  /* Wallet card */
  .wallet-card{padding:20px!important}
  .wallet-card .balance{font-size:1.8rem!important}

  /* Card items */
  .card-item{padding:14px!important;border-radius:12px!important}

  /* Forms */
  .form-input{font-size:16px!important} /* prevent iOS zoom */
  .grid.md\:grid-cols-2,.grid.md\:grid-cols-3{grid-template-columns:1fr!important}

  /* Chat */
  .chat-box{height:250px!important}
  .chat-msg .text{max-width:90%!important;font-size:13px!important}

  /* Tables scroll */
  .data-table{font-size:12px!important}
  .data-table th,.data-table td{padding:8px 10px!important}

  /* Stage timeline */
  .stage-timeline{padding-left:28px!important}
  .stage-dot{width:18px!important;height:18px!important;font-size:10px!important;left:-28px!important}

  /* Landing page */
  .fd.text-5xl{font-size:2.5rem!important}

  /* Hide desktop-only elements */
  .hidden.sm\:inline{display:none!important}

  /* Modal adjustments */
  .mc{max-width:100%!important;margin:8px!important;max-height:95vh!important}
}

/* Mobile topbar - hidden on desktop, shown on mobile */
.mobile-topbar{display:none}

/* Additional mobile fixes */
@media(max-width:768px){
  /* Enterprise task detail: grid → stack */
  .grid.md\:grid-cols-3{grid-template-columns:1fr!important}

  /* Landing nav buttons */
  nav .flex.items-center.gap-8{gap:12px!important}

  /* Landing hero */
  .text-5xl.md\:text-7xl{font-size:2rem!important}
  .text-lg.md\:text-2xl{font-size:1rem!important}
  .grid.grid-cols-2.md\:grid-cols-4{grid-template-columns:repeat(2,1fr)!important;gap:8px!important}
  .p-5.rounded-2xl{padding:12px!important}
  .fd.text-2xl.md\:text-4xl{font-size:1.3rem!important}

  /* Buttons full width on mobile */
  .flex.flex-col.sm\:flex-row.gap-4,.flex.flex-col.sm\:flex-row.gap-3{flex-direction:column!important}

  /* Portfolio grid */
  .grid.grid-cols-2.md\:grid-cols-3{grid-template-columns:repeat(2,1fr)!important}

  /* Sidebar items - slightly larger tap targets */
  .sidebar-item{padding:14px 20px!important;color:var(--fg)!important;font-size:15px!important}

  /* Task management filter */
  .flex.gap-4.border-b{overflow-x:auto!important;flex-wrap:nowrap!important;-webkit-overflow-scrolling:touch}
}

/* Sidebar */
.sidebar-wrap{position:fixed;left:0;top:0;bottom:0;width:240px;background:var(--bg2);border-right:1px solid var(--border);z-index:50;display:flex;flex-direction:column;overflow-y:auto}
.sidebar-logo{padding:20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px}
.sidebar-nav{flex:1;padding:12px 0}
.sidebar-item{display:flex;align-items:center;gap:12px;padding:12px 20px;color:var(--muted);cursor:pointer;transition:all .2s;font-size:14px;border-left:3px solid transparent}
.sidebar-item:hover{color:var(--fg);background:rgba(0,212,170,.05)}
.sidebar-item.on{color:var(--accent);background:rgba(0,212,170,.08);border-left-color:var(--accent)}
.sidebar-item svg{width:20px;height:20px;flex-shrink:0}
.sidebar-user{padding:16px 20px;border-top:1px solid var(--border);font-size:13px;color:var(--muted)}
.sidebar-user .role-badge{display:inline-block;padding:2px 8px;border-radius:9999px;font-size:11px;margin-top:4px}

/* Main content */
.main-wrap{margin-left:240px;min-height:100vh;padding:24px 32px}
.main-wrap h1{font-size:1.75rem;font-weight:700;margin-bottom:24px}

/* Stats cards */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}
.stat-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px}
.stat-card .val{font-size:1.75rem;font-weight:700;color:var(--accent)}
.stat-card .label{font-size:13px;color:var(--muted);margin-top:4px}

/* Stage timeline */
.stage-timeline{position:relative;padding-left:32px}
.stage-timeline::before{content:'';position:absolute;left:11px;top:8px;bottom:8px;width:2px;background:var(--border)}
.stage-item{position:relative;padding-bottom:24px}
.stage-item:last-child{padding-bottom:0}
.stage-dot{position:absolute;left:-32px;top:4px;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;z-index:1}
.stage-dot.done{background:var(--accent);color:var(--bg)}
.stage-dot.doing{background:rgba(0,212,170,.2);border:2px solid var(--accent);color:var(--accent)}
.stage-dot.wait{background:var(--border);color:var(--muted)}
.stage-dot.rejected{background:rgba(239,68,68,.2);border:2px solid var(--danger);color:var(--danger)}

/* Chat */
.chat-box{max-height:400px;overflow-y:auto;padding:16px;background:var(--bg);border-radius:12px;border:1px solid var(--border)}
.chat-msg{margin-bottom:12px}
.chat-msg .sender{font-size:12px;color:var(--accent);margin-bottom:2px}
.chat-msg .text{font-size:14px;color:var(--fg);line-height:1.5;background:var(--card);padding:10px 14px;border-radius:12px;display:inline-block;max-width:80%}
.chat-msg.mine{text-align:right}
.chat-msg.mine .text{background:rgba(0,212,170,.15)}

/* Table */
.data-table{width:100%;border-collapse:collapse;font-size:14px}
.data-table th{text-align:left;padding:12px 16px;color:var(--muted);font-weight:500;border-bottom:1px solid var(--border);font-size:13px}
.data-table td{padding:12px 16px;border-bottom:1px solid rgba(45,58,79,.4)}
.data-table tr:hover td{background:rgba(0,212,170,.03)}

/* Badge */
.badge{display:inline-block;padding:3px 10px;border-radius:9999px;font-size:12px;font-weight:500}
.badge-green{background:rgba(16,185,129,.15);color:var(--success)}
.badge-yellow{background:rgba(245,158,11,.15);color:var(--warning)}
.badge-red{background:rgba(239,68,68,.15);color:var(--danger)}
.badge-blue{background:rgba(59,130,246,.15);color:#60a5fa}
.badge-gray{background:rgba(100,116,139,.15);color:var(--muted)}

/* Card list */
.card-list{display:flex;flex-direction:column;gap:12px}
.card-item{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px;transition:all .2s}
.card-item:hover{border-color:rgba(0,212,170,.3)}

/* Form */
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.form-input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:10px 14px;color:var(--fg);font-size:14px}
.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,212,170,.1)}
select.form-input{appearance:auto}

/* Wallet card */
.wallet-card{background:linear-gradient(135deg,#0d2818,#0a1a2e);border:1px solid rgba(0,212,170,.2);border-radius:20px;padding:28px;margin-bottom:24px}
.wallet-card .balance{font-size:2.5rem;font-weight:700;color:var(--accent)}
.wallet-card .frozen{font-size:1rem;color:var(--warning);margin-top:8px}

/* Animations */
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.fade-up{animation:fadeUp .5s ease forwards}
.fade-up-d1{animation-delay:.1s;opacity:0}
.fade-up-d2{animation-delay:.2s;opacity:0}
.fade-up-d3{animation-delay:.3s;opacity:0}
.badge-purple{background:rgba(168,85,247,.15);color:#a855f7;border:1px solid rgba(168,85,247,.3)}

/* ===== AI悬浮聊天组件 ===== */
#aiChatWidget{position:fixed;bottom:24px;right:24px;z-index:100}
.ai-chat-btn{width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;background:linear-gradient(135deg,#00d4aa,#0891b2);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(0,212,170,.35);transition:all .3s cubic-bezier(.4,0,.2,1)}
.ai-chat-btn:hover{transform:scale(1.1);box-shadow:0 6px 28px rgba(0,212,170,.5)}
.ai-chat-panel{position:absolute;bottom:70px;right:0;width:380px;height:520px;background:var(--card);border:1px solid var(--border);border-radius:20px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.5);transform-origin:bottom right;animation:chatSlideIn .3s cubic-bezier(.4,0,.2,1) forwards}
@keyframes chatSlideIn{from{opacity:0;transform:scale(.85) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}
.ai-chat-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);background:var(--bg2);flex-shrink:0}
.ai-chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}
#aiChatMessages .chat-msg{display:flex;flex-direction:column}
#aiChatMessages .chat-msg.user{align-items:flex-end}
#aiChatMessages .chat-msg.ai{align-items:flex-start}
#aiChatMessages .chat-bubble{max-width:85%;padding:10px 14px;border-radius:16px;font-size:14px;line-height:1.6;word-break:break-word}
#aiChatMessages .chat-msg.user .chat-bubble{background:linear-gradient(135deg,var(--accent),var(--accent-dim));color:var(--bg);border-bottom-right-radius:4px}
#aiChatMessages .chat-msg.ai .chat-bubble{background:var(--bg2);border:1px solid var(--border);border-bottom-left-radius:4px}
.ai-chat-suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.ai-suggest-btn{background:rgba(0,212,170,.08);border:1px solid rgba(0,212,170,.25);color:var(--accent);padding:6px 14px;border-radius:20px;font-size:13px;cursor:pointer;transition:all .2s}
.ai-suggest-btn:hover{background:var(--accent);color:var(--bg)}
.ai-typing{display:flex;align-items:center;gap:4px;padding:8px 16px;flex-shrink:0}
.ai-typing span{width:8px;height:8px;border-radius:50%;background:var(--muted);animation:typingBounce .6s ease-in-out infinite}
.ai-typing span:nth-child(2){animation-delay:.15s}
.ai-typing span:nth-child(3){animation-delay:.3s}
@keyframes typingBounce{0%,100%{transform:translateY(0);opacity:.4}50%{transform:translateY(-8px);opacity:1}}
.ai-chat-input{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;background:var(--bg2)}
.ai-chat-input input{flex:1;background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:10px 14px;color:var(--fg);font-size:14px}
.ai-chat-input input::placeholder{color:var(--muted)}
.ai-send-btn{width:38px;height:38px;border-radius:12px;border:none;background:linear-gradient(135deg,var(--accent),var(--accent-dim));color:var(--bg);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}
.ai-send-btn:hover{transform:scale(1.05);box-shadow:0 4px 12px rgba(0,212,170,.3)}
.ai-send-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
@media(max-width:480px){
  #aiChatWidget{bottom:0;right:0;left:0}
  .ai-chat-btn{position:absolute;bottom:16px;right:16px}
  .ai-chat-panel{position:fixed;bottom:0;left:0;right:0;width:100%;height:75vh;border-radius:20px 20px 0 0;transform-origin:bottom center}
  .ai-chat-btn{display:none}
}
