/* base.css — 基础层：变量 / 重置 / 头部 / 主界面 / 消息 / 成员栏 / 信息面板 / 通用弹窗（源文件行 21-598，保持原顺序） */
  *{margin:0;padding:0;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif}
  :root{
    --bg:#1a1a2e;--surface:#252540;--border:#333;--text:#eee;--text-dim:#888;
    --primary:#4a9eff;--primary-dark:#3a8eef;--green:#27ae60;
    --red:#e74c3c;--yellow:#f39c12;
  }
  html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text)}
  body{display:flex;flex-direction:column}

  .header{
    padding:10px 14px;background:var(--surface);border-bottom:1px solid var(--border);
    display:flex;align-items:center;gap:10px;flex-shrink:0;
    padding-top:calc(10px + env(safe-area-inset-top,0px));
  }
  .header h1{font-size:15px;font-weight:600;flex:1;display:flex;align-items:center;gap:8px}
  /* ★ 房间面板打开时，工具栏浮到遮罩之上，保证“再次点按钮可切换关闭” */
  .header.above-panel{position:relative;z-index:2551}
  .header h1 i{color:var(--primary)}
  .call-bar{
    display:flex;align-items:center;gap:10px;
    padding:8px 14px;background:#0d7f44;color:#fff;
    flex-shrink:0;font-size:13px;
    position:relative;z-index:100;
  }
  .call-bar.hidden{display:none}
  .call-bar-info{flex:1;display:flex;align-items:center;gap:8px}
  .call-bar-btn{
    width:34px;height:34px;border-radius:50%;border:none;
    background:rgba(255,255,255,.15);color:#fff;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    transition:all .2s;
  }
  .call-bar-btn:hover{background:rgba(255,255,255,.28)}
  .call-bar-btn.muted{background:#d32f2f}
  .call-bar-btn.danger{background:#d32f2f}
  .call-bar-btn.danger:hover{background:#b71c1c}
  .status{
    font-size:11px;padding:4px 12px;border-radius:20px;
    background:#444;color:#aaa;white-space:nowrap;
    display:flex;align-items:center;gap:5px;transition:all .3s;
  }
  .status .dot{width:7px;height:7px;border-radius:50%;background:#666;transition:all .3s}
  .status.connected{background:#1b5e20;color:#81c784}
  .status.connected .dot{background:#4caf50;box-shadow:0 0 8px #4caf50}
  .status.waiting{background:#5d4037;color:#ffb74d}
  .status.waiting .dot{background:#ffb74d;animation:pulse 1.5s infinite}
  .status.reconnecting{background:#5d4037;color:#ffb74d}
  .status.reconnecting .dot{background:#ffb74d;animation:pulse .8s infinite}
  .status.error{background:#5d2020;color:#ef5350}
  .status.error .dot{background:#ef5350}
  @keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}

  .session-timer{
    font-size:11px;padding:3px 6px 3px 12px;border-radius:20px;
    background:#5d4037;color:#ffb74d;white-space:nowrap;
    font-weight:600;font-variant-numeric:tabular-nums;
    display:flex;align-items:center;gap:5px;
    transition:all .3s;
  }
  .session-timer.urgent{background:#5d2020;color:#ef5350;animation:pulse 1s infinite}
  .session-timer .time-btn{
    width:20px;height:20px;border-radius:50%;border:none;
    background:rgba(255,255,255,.2);color:inherit;
    font-size:14px;font-weight:700;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    line-height:1;transition:background .15s;
    flex-shrink:0;
  }
  .session-timer .time-btn:hover:not(:disabled){background:rgba(255,255,255,.4)}
  .session-timer .time-btn:active{transform:scale(0.9)}
  .session-timer .time-btn:disabled{opacity:.3;cursor:not-allowed}

  .sound-btn{
    width:32px;height:32px;border-radius:50%;border:none;
    background:transparent;color:var(--text-dim);
    font-size:14px;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    transition:all .15s;flex-shrink:0;
  }
  .sound-btn:hover{background:rgba(255,255,255,.08);color:var(--primary)}
  .sound-btn.muted{color:var(--text-dim);opacity:.5}
  .sound-btn.active{color:var(--primary)}

  .setup{
    padding:24px 20px;display:flex;flex-direction:column;gap:14px;
    max-width:440px;margin:0 auto;width:100%;overflow-y:auto;flex:1;
  }
  .setup .logo{text-align:center;font-size:52px;margin-bottom:8px}
  .setup h2{text-align:center;font-size:20px;font-weight:700;margin-bottom:4px}
  .setup .subtitle{text-align:center;font-size:13px;color:var(--text-dim);margin-bottom:16px;line-height:1.6}

  .mode-select{
    display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px;
    flex-shrink:0;position:relative;z-index:10;
  }
  .mode-card{
    padding:16px 12px;border-radius:12px;border:2px solid var(--border);
    background:var(--surface);cursor:pointer;text-align:center;
    transition:all .2s;position:relative;
    touch-action:manipulation;
    -webkit-tap-highlight-color:transparent;
    user-select:none;
  }
  .mode-card:hover{border-color:#555}
  .mode-card:active{transform:scale(0.97)}
  .mode-card.active{border-color:var(--primary);background:rgba(74,158,255,.15)}
  .mode-card.active::after{
    content:'✓';position:absolute;top:8px;right:10px;
    color:var(--primary);font-weight:700;font-size:14px;
  }
  .mode-card .mode-icon{font-size:28px;margin-bottom:8px;pointer-events:none}
  .mode-card .mode-title{font-size:14px;font-weight:700;margin-bottom:4px;pointer-events:none}
  .mode-card .mode-desc{font-size:11px;color:var(--text-dim);line-height:1.4;pointer-events:none}

  .setup input[type="text"], .setup select{
    padding:13px 16px;border-radius:10px;border:1px solid var(--border);
    background:var(--surface);color:var(--text);font-size:14px;outline:none;width:100%;
    transition:border-color .15s;
  }
  .setup input[type="text"]:focus, .setup select:focus{border-color:var(--primary)}
  .setup button{
    padding:13px;border-radius:10px;border:none;background:var(--primary);
    color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s;
  }
  .setup button:hover{background:var(--primary-dark)}
  .setup button:active{transform:scale(0.98)}
  .setup button.secondary{background:#333;color:#aaa}
  .setup button.secondary:hover{background:#444;color:#eee}
  .setup .divider{text-align:center;font-size:12px;color:var(--text-dim);margin:4px 0}
  .setup label{font-size:12px;color:var(--text-dim);font-weight:600;display:block;margin-bottom:4px;margin-top:4px}

  .sound-toggle-row{
    display:flex;align-items:center;justify-content:space-between;
    background:var(--surface);border:1px solid var(--border);
    border-radius:10px;padding:10px 14px;
  }
  .sound-toggle-row .label{
    display:flex;align-items:center;gap:10px;
    font-size:13px;color:var(--text);
  }
  .sound-toggle-row .label i{color:var(--primary);font-size:14px}
  .sound-switch{
    position:relative;width:44px;height:24px;
    background:#444;border-radius:12px;cursor:pointer;
    transition:background .2s;flex-shrink:0;
  }
  .sound-switch.on{background:var(--primary)}
  .sound-switch::after{
    content:'';position:absolute;
    top:2px;left:2px;width:20px;height:20px;
    background:#fff;border-radius:50%;
    transition:transform .2s;
  }
  .sound-switch.on::after{transform:translateX(20px)}

  .room-code{
    font-size:30px;font-weight:800;text-align:center;letter-spacing:8px;
    color:var(--primary);padding:20px;background:var(--surface);
    border-radius:12px;user-select:all;border:2px dashed var(--primary);
  }
  .hint{font-size:12px;color:var(--text-dim);text-align:center;line-height:1.6}

  .recover-card{
    background:linear-gradient(135deg,rgba(74,158,255,.15),rgba(74,158,255,.05));
    border:1px solid var(--primary);
    border-radius:12px;padding:14px;
    display:flex;flex-direction:column;gap:10px;
  }
  .recover-card .card-title{
    font-size:12px;font-weight:700;color:var(--primary);
    text-transform:uppercase;letter-spacing:.5px;
    display:flex;align-items:center;gap:6px;
  }
  .recover-card .recover-info{display:flex;align-items:center;gap:12px}
  .recover-card .recover-icon{
    width:44px;height:44px;border-radius:12px;
    background:var(--primary);
    display:flex;align-items:center;justify-content:center;
    font-size:20px;color:#fff;flex-shrink:0;
  }
  .recover-card .recover-meta{flex:1;min-width:0}
  .recover-card .recover-room{
    font-size:14px;font-weight:700;color:var(--text);
    font-variant-numeric:tabular-nums;letter-spacing:1px;
  }
  .recover-card .recover-detail{font-size:11px;color:var(--text-dim);margin-top:2px}
  .recover-card .recover-actions{display:flex;gap:8px}
  .recover-card .recover-actions button{
    flex:1;padding:8px;border-radius:8px;border:none;
    font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;
  }
  .recover-card .recover-actions .btn-resume{background:var(--primary);color:#fff}
  .recover-card .recover-actions .btn-resume:hover{background:var(--primary-dark)}
  .recover-card .recover-actions .btn-dismiss{
    background:transparent;color:var(--text-dim);border:1px solid var(--border);
  }
  .recover-card .recover-actions .btn-dismiss:hover{background:rgba(255,255,255,.05);color:var(--text)}

  .main{flex:1;display:flex;overflow:hidden;position:relative}
  .chat-area{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}

  .messages{
    flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:8px;
    -webkit-overflow-scrolling:touch;
  }
  .msg{
    max-width:78%;padding:10px 14px;border-radius:16px;font-size:14px;
    line-height:1.5;word-break:break-word;animation:msgIn .2s;position:relative;
  }
  @keyframes msgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  .msg.me{align-self:flex-end;background:var(--primary);color:#fff;border-bottom-right-radius:4px}
  .msg.them{align-self:flex-start;background:var(--surface);color:var(--text);border-bottom-left-radius:4px}
  .msg.sys{align-self:center;background:transparent;color:var(--text-dim);font-size:12px;padding:4px 12px;text-align:center}
  .msg .time{font-size:10px;opacity:.6;margin-top:2px;text-align:right}

  .msg .status-line{
    display:flex;align-items:center;justify-content:flex-end;
    gap:4px;margin-top:2px;font-size:10px;
    opacity:.8;
  }
  .msg .status-line .time{font-size:10px;opacity:.7;margin:0}
  .msg .status-icon{
    font-size:11px;margin-left:2px;
    display:inline-flex;align-items:center;
  }
  .msg .status-icon.sending{color:rgba(255,255,255,.6);animation:spin 1s linear infinite}
  .msg .status-icon.sent{color:rgba(255,255,255,.85)}
  .msg .status-icon.delivered{color:#a8e6a8}
  .msg .status-icon.read{color:#a8e6a8}
  .msg .status-icon.failed{color:#ffb3b3;cursor:pointer}
  @keyframes spin{to{transform:rotate(360deg)}}

  .msg .sender{
    font-size:11px;font-weight:700;color:var(--primary);
    margin-bottom:3px;display:block;
  }
  .msg.them .sender{color:#7eb8ff}

  .msg.image{padding:6px;max-width:280px;background:transparent}
  .msg.image img{max-width:100%;border-radius:12px;display:block;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.3)}

  .msg.file{display:flex;align-items:center;gap:12px;padding:12px 16px;min-width:200px}
  .msg.file .file-icon{font-size:28px;flex-shrink:0}
  .msg.file .file-info{flex:1;min-width:0}
  .msg.file .file-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .msg.file .file-size{font-size:11px;opacity:.8;margin-top:2px}
  .msg.file .file-action{
    padding:6px 12px;border-radius:16px;border:none;
    background:rgba(255,255,255,.2);color:inherit;
    font-size:12px;font-weight:600;cursor:pointer;flex-shrink:0;
  }

  .input-bar{
    padding:10px 12px;background:var(--surface);border-top:1px solid var(--border);
    display:flex;gap:8px;align-items:flex-end;
    padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));flex-shrink:0;
  }
  .input-bar input[type="text"]{
    flex:1;padding:10px 16px 10px 16px;border-radius:22px;border:1px solid var(--border);
    background:var(--bg);color:var(--text);font-size:14px;outline:none;min-width:0;
  }
  .input-bar input[type="text"]:focus{border-color:var(--primary)}
  .input-bar .send-btn{
    width:42px;height:42px;border-radius:50%;border:none;
    background:var(--primary);color:#fff;font-size:16px;
    cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  }
  .input-bar .send-btn:disabled{background:#333;color:#666;cursor:not-allowed}

  .info-panel{
    width:260px;
    background:var(--surface);
    border-left:1px solid var(--border);
    display:flex;flex-direction:column;
    flex-shrink:0;overflow:hidden;
    transition:width .25s ease;
  }
  .info-panel.collapsed{width:0;border-left:none}
  .info-header{
    padding:10px 14px;
    border-bottom:1px solid var(--border);
    font-size:12px;font-weight:600;
    color:var(--text-dim);
    text-transform:uppercase;
    letter-spacing:.5px;
    display:flex;align-items:center;gap:8px;
    flex-shrink:0;
  }
  .info-header i{color:var(--primary)}
  .info-header .toggle-btn{
    margin-left:auto;width:24px;height:24px;
    border-radius:50%;border:none;
    background:rgba(255,255,255,.08);
    color:var(--text-dim);cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    font-size:10px;transition:all .15s;
  }
  .info-header .toggle-btn:hover{background:rgba(255,255,255,.15);color:var(--text)}
  .info-body{flex:1;overflow-y:auto;padding:12px}

  .info-section{margin-bottom:18px}
  .info-section h4{
    font-size:10px;font-weight:700;
    color:var(--text-dim);
    text-transform:uppercase;
    letter-spacing:.5px;
    margin-bottom:8px;padding-left:2px;
  }
  .info-card{
    background:var(--bg);
    border:1px solid var(--border);
    border-radius:10px;
    padding:12px;
  }
  .room-code-display{
    font-size:20px;font-weight:800;
    color:var(--primary);
    text-align:center;
    letter-spacing:4px;
    font-variant-numeric:tabular-nums;
    user-select:all;
    cursor:pointer;
    padding:4px 0;
    transition:opacity .15s;
  }
  .room-code-display:hover{opacity:.8}

  .info-row{
    display:flex;align-items:center;
    justify-content:space-between;
    padding:6px 0;
    font-size:12px;
    border-bottom:1px solid rgba(255,255,255,.04);
  }
  .info-row:last-child{border-bottom:none}
  .info-row .label{color:var(--text-dim)}
  .info-row .value{
    color:var(--text);font-weight:500;
    overflow:hidden;text-overflow:ellipsis;
    white-space:nowrap;max-width:140px;
    text-align:right;
  }

  .member-item{
    display:flex;align-items:center;gap:10px;
    padding:8px 10px;
    border-radius:8px;
    margin-bottom:6px;
    background:var(--bg);
    border:1px solid var(--border);
    transition:border-color .15s;
  }
  .member-item.self{border-color:var(--primary)}
  .member-item.in-call{border-color:var(--green)}
  .member-item .avatar{
    width:32px;height:32px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-size:14px;font-weight:700;color:#fff;
    flex-shrink:0;
  }
  .member-item .info{flex:1;min-width:0}
  .member-item .name{
    font-size:13px;font-weight:600;
    color:var(--text);
    overflow:hidden;text-overflow:ellipsis;
    white-space:nowrap;
  }
  .member-item .sub{font-size:10px;color:var(--text-dim);margin-top:2px}
  .member-item .badge{
    font-size:9px;font-weight:700;
    padding:2px 6px;border-radius:8px;
    background:var(--primary);color:#fff;
    flex-shrink:0;
  }
  .member-item .badge.host{background:var(--yellow);color:#000}
  .member-item .badge.call{background:var(--green)}
  .member-item .member-call-btn{
    width:26px;height:26px;border-radius:50%;border:none;
    background:transparent;color:var(--green);font-size:12px;
    cursor:pointer;display:flex;align-items:center;justify-content:center;
    transition:all .15s;flex-shrink:0;
  }
  .member-item .member-call-btn:hover{background:rgba(39,174,96,.15);color:#fff}
  .member-item .member-call-btn.video{color:var(--primary)}
  .member-item .member-call-btn.video:hover{background:rgba(74,158,255,.15)}

  .copy-hint{
    font-size:10px;color:var(--text-dim);
    text-align:center;margin-top:4px;
    opacity:0;transition:opacity .3s;
  }
  .copy-hint.show{opacity:1}

  .info-toggle-desktop{
    display:none;
    position:absolute;
    top:10px;right:12px;
    width:40px;height:40px;border-radius:50%;
    border:none;background:var(--surface);
    color:var(--primary);font-size:16px;
    cursor:pointer;z-index:60;
    box-shadow:0 4px 12px rgba(0,0,0,.3);
    align-items:center;justify-content:center;
    transition:all .2s;
  }
  .info-toggle-desktop.show{display:flex}
  .info-toggle-desktop:hover{background:var(--primary);color:#fff}
  .info-toggle-desktop:active{transform:scale(0.92)}

  .info-toggle-mobile{
    display:none;
    position:fixed;
    top:calc(60px + env(safe-area-inset-top,0px));
    right:12px;
    width:44px;height:44px;border-radius:50%;
    border:none;background:var(--surface);
    color:var(--primary);font-size:18px;
    cursor:pointer;z-index:500;
    box-shadow:0 4px 16px rgba(0,0,0,.4);
    align-items:center;justify-content:center;
    transition:all .2s;
  }
  .info-toggle-mobile:active{transform:scale(0.92)}
  .info-toggle-mobile.active{background:var(--primary);color:#fff}

  .video-panel{
    position:absolute;top:10px;right:10px;
    display:grid;grid-template-columns:repeat(2, 1fr);gap:8px;
    z-index:50;pointer-events:none;max-height:calc(100% - 120px);
    overflow-y:auto;max-width:280px;
  }
  .video-panel.show{pointer-events:auto}
  .video-panel.count-1{grid-template-columns:1fr;max-width:150px}
  .video-panel.count-2{grid-template-columns:1fr 1fr;max-width:280px}
  .video-tile{
    width:100%;aspect-ratio:3/4;border-radius:12px;overflow:hidden;
    background:#000;position:relative;
    box-shadow:0 6px 20px rgba(0,0,0,.5);
    border:2px solid rgba(255,255,255,.1);
  }
  .video-tile video{width:100%;height:100%;object-fit:cover;display:block;transform:translateZ(0)}
  .video-tile .label{
    position:absolute;bottom:4px;left:6px;font-size:10px;color:#fff;
    background:rgba(0,0,0,.5);padding:2px 6px;border-radius:8px;
    max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }

  .media-bar{
    display:flex;gap:8px;padding:0 12px 8px 12px;background:var(--surface);flex-wrap:wrap;
  }
  .media-btn{
    flex:1;min-width:60px;padding:8px;border-radius:8px;border:1px solid var(--border);
    background:transparent;color:var(--text-dim);font-size:12px;
    cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;
    transition:all .15s;
  }
  .media-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}
  .media-btn:disabled{opacity:.4;cursor:not-allowed}
  .media-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}
  .media-btn.danger{color:var(--red);border-color:var(--red)}
  .media-btn.danger:hover{background:var(--red);color:#fff}
  .media-btn.clear-btn{color:var(--yellow);border-color:var(--yellow)}
  .media-btn.clear-btn:hover{background:var(--yellow);color:#000}
  .media-btn.flip-btn{color:var(--primary);border-color:var(--primary)}
  .media-btn.flip-btn:hover{background:var(--primary);color:#fff}

  .members-bar{
    padding:6px 12px;background:var(--surface);border-bottom:1px solid var(--border);
    display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;flex-shrink:0;
  }
  .members-bar::-webkit-scrollbar{display:none}
  .member-chip{
    display:flex;align-items:center;gap:5px;
    padding:4px 10px;border-radius:16px;background:var(--bg);
    font-size:11px;color:var(--text-dim);white-space:nowrap;flex-shrink:0;
  }
  .member-chip .avatar{
    width:18px;height:18px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-size:10px;font-weight:700;color:#fff;
  }
  .member-chip.self{color:var(--primary);background:rgba(74,158,255,.1)}
  .member-chip.in-call{border:1px solid var(--green)}

  .call-overlay{
    position:fixed;inset:0;background:rgba(0,0,0,.85);
    backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
    display:none;flex-direction:column;align-items:center;justify-content:center;
    z-index:3000;gap:20px;padding:30px;text-align:center;
  }
  .call-overlay.show{display:flex}
  .call-overlay .call-avatar{
    width:100px;height:100px;border-radius:50%;
    background:var(--primary);display:flex;align-items:center;justify-content:center;
    font-size:44px;color:#fff;font-weight:700;
    box-shadow:0 0 0 10px rgba(74,158,255,.2);
    animation:callPulse 1.5s infinite;
  }
  @keyframes callPulse{
    0%,100%{box-shadow:0 0 0 10px rgba(74,158,255,.2)}
    50%{box-shadow:0 0 0 20px rgba(74,158,255,.1)}
  }
  .call-overlay .call-name{font-size:20px;font-weight:700;color:#fff}
  .call-overlay .call-status{font-size:14px;color:rgba(255,255,255,.7)}
  .call-overlay .call-actions{display:flex;gap:24px;margin-top:20px}
  .call-btn{
    width:64px;height:64px;border-radius:50%;border:none;
    display:flex;align-items:center;justify-content:center;
    font-size:24px;cursor:pointer;transition:transform .15s;
  }
  .call-btn:active{transform:scale(0.9)}
  .call-btn.accept{background:var(--green);color:#fff}
  .call-btn.reject{background:var(--red);color:#fff}

  .drop-overlay{
    position:fixed;inset:0;background:rgba(74,158,255,.15);
    border:3px dashed var(--primary);border-radius:16px;
    display:none;align-items:center;justify-content:center;
    z-index:200;margin:10px;pointer-events:none;
  }
  .drop-overlay.show{display:flex}
  .drop-overlay .drop-msg{
    background:var(--primary);color:#fff;padding:16px 32px;
    border-radius:40px;font-size:16px;font-weight:600;
    box-shadow:0 10px 30px rgba(0,0,0,.4);
    display:flex;align-items:center;gap:10px;
  }

  .toast{
    position:fixed;bottom:90px;left:50%;transform:translateX(-50%) translateY(20px);
    background:var(--surface);border:1px solid var(--border);
    color:var(--text);padding:10px 22px;border-radius:30px;font-size:13px;
    opacity:0;transition:all .3s;pointer-events:none;z-index:1000;
    box-shadow:0 10px 30px rgba(0,0,0,.4);max-width:90vw;text-align:center;
  }
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

  .lightbox{
    position:fixed;inset:0;background:rgba(0,0,0,.92);
    display:none;align-items:center;justify-content:center;
    z-index:2000;padding:20px;
  }
  .lightbox.show{display:flex}
  .lightbox img{max-width:100%;max-height:100%;border-radius:8px}
  .lightbox .close{
    position:absolute;top:20px;right:20px;width:44px;height:44px;
    border-radius:50%;border:none;background:rgba(255,255,255,.15);
    color:#fff;font-size:20px;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
  }

  .modal-overlay{
    position:fixed;inset:0;background:rgba(0,0,0,.6);
    display:none;align-items:center;justify-content:center;
    z-index:3500;padding:20px;
  }
  .modal-overlay.show{display:flex}
  .modal-box{
    background:var(--surface);border-radius:16px;padding:24px;
    max-width:400px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.5);
  }
  .modal-box h3{font-size:16px;margin-bottom:16px;display:flex;align-items:center;gap:8px}
  .modal-box h3 i{color:var(--primary)}
  .modal-box select, .modal-box input{
    width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--border);
    background:var(--bg);color:var(--text);font-size:14px;outline:none;margin-bottom:8px;
  }
  .modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}
  .modal-actions button{
    padding:8px 20px;border-radius:20px;border:none;font-size:13px;
    cursor:pointer;font-weight:500;
  }
  .modal-actions .cancel{background:transparent;color:var(--text-dim);border:1px solid var(--border)}
  .modal-actions .confirm{background:var(--primary);color:#fff;font-weight:600}
  .modal-actions .danger{background:var(--red);color:#fff;font-weight:600}

  .hidden{display:none!important}

