/* ============= RESET ============= */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html,body{width:100%;height:100%;overflow:hidden}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Inter',system-ui,sans-serif;-webkit-font-smoothing:antialiased}

/* ============= VARIABLES ============= */
:root{
  --sb:56px; --tb:52px;
  --glass:rgba(255,255,255,.09);
  --glass2:rgba(255,255,255,.16);
  --glass3:rgba(255,255,255,.04);
  --border:rgba(255,255,255,.14);
  --tx:rgba(255,255,255,.95);
  --tx2:rgba(255,255,255,.62);
  --tx3:rgba(255,255,255,.35);
  --accent:#a78bfa;
  --accent-d:rgba(167,139,250,.3);
  --danger:rgba(239,68,68,.75);
  --blur:blur(22px) saturate(160%);
  --r:14px;
  --panel:#0a0824ee;
}

/* ============= BACKGROUNDS ============= */
#bg{position:fixed;inset:0;z-index:-1;transition:background .6s,background-image .6s;background-size:cover!important;background-position:center!important}
#bg.night {background:linear-gradient(135deg,#0f0c29,#302b63,#24243e)}
#bg.aurora{background:linear-gradient(135deg,#00c6ff,#7b2ff7,#f107a3)}
#bg.sunset{background:linear-gradient(135deg,#f093fb,#f5576c,#fda085)}
#bg.ocean {background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460,#533483)}
#bg.forest{background:linear-gradient(135deg,#0f2027,#203a43,#2c5364)}
#bg.rose  {background:linear-gradient(135deg,#c471f5,#fa71cd)}
#bg.latte {background:linear-gradient(135deg,#d4a574,#9c6240,#5c3d11)}
#bg.mint  {background:linear-gradient(135deg,#0cebeb,#20e3b2,#29ffc6)}

/* ============= SPACES SIDEBAR ============= */
.spaces-bar{
  position:fixed;left:0;top:0;bottom:0;width:var(--sb);z-index:200;
  display:flex;flex-direction:column;align-items:center;padding:10px 0 10px;gap:6px;
  background:rgba(0,0,0,.32);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border-right:1px solid rgba(255,255,255,.07);
}
.brand{color:var(--accent);font-size:21px;font-weight:800;user-select:none;margin-bottom:4px;cursor:default}
.space-icons{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;overflow-y:auto;width:100%;padding:0 8px}
.space-icons::-webkit-scrollbar{width:0}
.space-icon{
  width:38px;height:38px;border-radius:11px;border:2px solid transparent;
  display:flex;align-items:center;justify-content:center;font-size:19px;
  cursor:pointer;transition:all .2s;background:rgba(255,255,255,.07);position:relative;flex-shrink:0;
}
.space-icon:hover{background:var(--glass2);transform:scale(1.07)}
.space-icon.active{border-color:var(--accent);background:var(--accent-d)}
.space-icon-tip{
  position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);
  background:rgba(0,0,0,.88);color:#fff;font-size:11px;font-weight:500;
  padding:4px 10px;border-radius:7px;white-space:nowrap;pointer-events:none;
  opacity:0;transition:opacity .15s;z-index:400;border:1px solid rgba(255,255,255,.1);
}
.space-icon:hover .space-icon-tip{opacity:1}
.add-space{
  width:34px;height:34px;border-radius:10px;border:2px dashed rgba(255,255,255,.22);
  background:none;color:var(--tx2);cursor:pointer;font-size:20px;line-height:1;
  display:flex;align-items:center;justify-content:center;transition:all .2s;
}
.add-space:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-d)}
.sidebar-btn{
  width:34px;height:34px;border-radius:10px;border:1px solid rgba(255,255,255,.1);
  background:rgba(255,255,255,.06);color:var(--tx2);cursor:pointer;font-size:15px;
  display:flex;align-items:center;justify-content:center;transition:all .2s;
}
.sidebar-btn:hover{background:var(--glass2);color:var(--tx)}

/* ============= TOPBAR ============= */
.topbar{
  position:fixed;left:var(--sb);top:0;right:0;height:var(--tb);z-index:150;
  display:flex;align-items:center;justify-content:space-between;padding:0 16px;
  background:rgba(0,0,0,.18);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid rgba(255,255,255,.07);
}
.space-title-wrap{display:flex;align-items:center;gap:7px}
.space-emoji{font-size:19px}
.space-title{
  font-size:15px;font-weight:600;color:var(--tx);cursor:pointer;
  border-radius:6px;padding:2px 6px;transition:background .15s;
}
.space-title:hover{background:var(--glass)}
.topbar-right{display:flex;align-items:center;gap:7px}
.tb-btn{
  background:var(--glass);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border:1px solid var(--border);border-radius:9px;padding:5px 12px;
  color:var(--tx);cursor:pointer;font-size:14px;transition:all .2s;font-family:inherit;
}
.tb-btn:hover{background:var(--glass2);transform:translateY(-1px)}
.tb-accent{background:var(--accent)!important;border-color:transparent!important;font-weight:600;letter-spacing:.2px}
.tb-accent:hover{opacity:.88!important;transform:translateY(-1px)!important}

/* ============= DASHBOARD ============= */
.dashboard{
  position:fixed;left:var(--sb);top:var(--tb);right:0;bottom:0;
  overflow:auto;
  scrollbar-width:thin;
  scrollbar-color:rgba(255,255,255,.15) transparent;
}
#dashCanvas{
  position:relative;
  min-width:100%;
  min-height:100%;
}
.dash-hint{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);
  text-align:center;pointer-events:none;transition:opacity .3s;
}
.dash-hint.hidden{opacity:0}
.dash-hint-icon{font-size:40px;color:var(--accent);margin-bottom:12px;opacity:.7}
.dash-hint-title{font-size:22px;font-weight:300;color:var(--tx2);margin-bottom:8px}
.dash-hint-sub{font-size:14px;color:var(--tx3);line-height:1.8}
.dash-hint-sub strong{color:var(--tx2)}

/* ============= WIDGET CONTAINER ============= */
.wc{
  position:absolute;min-width:160px;min-height:90px;
  background:var(--glass);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border:1px solid var(--border);border-radius:var(--r);
  display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 4px 28px rgba(0,0,0,.22);
  transition:box-shadow .25s;
}
.wc:hover{box-shadow:0 10px 44px rgba(0,0,0,.38)}
.wc.dragging{box-shadow:0 24px 64px rgba(0,0,0,.55)!important;opacity:.95;z-index:9999!important;cursor:grabbing!important}
.wc-hdr{
  display:flex;align-items:center;gap:6px;padding:7px 10px 5px;
  cursor:grab;flex-shrink:0;opacity:0;transition:opacity .18s;
  background:linear-gradient(rgba(0,0,0,.22),transparent);
}
.wc:hover .wc-hdr{opacity:1}
.wc-drag{color:var(--tx3);font-size:11px;letter-spacing:-1px;cursor:grab;flex-shrink:0;user-select:none}
.wc-title{flex:1;font-size:9.5px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.9px;user-select:none}
.wc-acts{display:flex;gap:2px}
.wc-act{
  background:none;border:none;color:var(--tx3);cursor:pointer;
  font-size:11px;padding:2px 5px;border-radius:5px;transition:all .15s;
}
.wc-act:hover{background:rgba(255,255,255,.14);color:var(--tx)}
.wc-act.del:hover{background:rgba(239,68,68,.28);color:#fca5a5}
.wc-body{flex:1;overflow:hidden;position:relative;padding:12px}
.wc-resize{
  position:absolute;right:0;bottom:0;width:20px;height:20px;
  cursor:se-resize;opacity:0;transition:opacity .18s;z-index:5;
}
.wc:hover .wc-resize{opacity:1}
.wc-resize::after{
  content:'';position:absolute;right:4px;bottom:4px;
  width:8px;height:8px;
  border-right:2px solid var(--tx3);border-bottom:2px solid var(--tx3);border-radius:1px;
}

/* ============= WIDGET PANEL ============= */
.widget-panel{
  position:fixed;top:0;right:-320px;width:300px;height:100vh;z-index:250;
  background:var(--panel);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border-left:1px solid var(--border);display:flex;flex-direction:column;
  transition:right .3s cubic-bezier(.4,0,.2,1);
}
.widget-panel.open{right:0}
.panel-hdr{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px;border-bottom:1px solid var(--border);
  font-weight:600;font-size:14px;color:var(--tx);flex-shrink:0;
}
.panel-close{
  background:none;border:none;color:var(--tx3);cursor:pointer;
  font-size:15px;padding:3px 7px;border-radius:6px;transition:all .15s;
}
.panel-close:hover{background:var(--glass2);color:var(--tx)}
.widget-search-wrap{padding:10px 12px;flex-shrink:0}
.widget-search{
  width:100%;background:rgba(255,255,255,.07);border:1px solid var(--border);
  border-radius:9px;padding:8px 12px;color:var(--tx);font-size:13px;
  font-family:inherit;outline:none;
}
.widget-search::placeholder{color:var(--tx3)}
.widget-search:focus{border-color:var(--accent)}
.widget-list{flex:1;overflow-y:auto;padding:4px 10px 12px}
.widget-list::-webkit-scrollbar{width:3px}
.widget-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}
.wl-cat{font-size:10px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.8px;padding:10px 4px 6px}
.wl-item{
  display:flex;align-items:center;gap:9px;padding:8px 9px;
  border-radius:10px;cursor:pointer;border:1px solid transparent;
  transition:all .16s;margin-bottom:3px;
}
.wl-item:hover{background:rgba(255,255,255,.07);border-color:var(--border)}
.wl-icon{font-size:22px;flex-shrink:0;width:30px;text-align:center}
.wl-info{flex:1}
.wl-name{font-size:13px;font-weight:500;color:var(--tx)}
.wl-desc{font-size:11px;color:var(--tx3);margin-top:1px}
.wl-add{
  background:var(--glass);border:1px solid var(--border);border-radius:7px;
  padding:4px 10px;color:var(--tx2);cursor:pointer;font-size:11px;
  font-family:inherit;transition:all .15s;white-space:nowrap;flex-shrink:0;
}
.wl-add:hover{background:var(--accent);border-color:transparent;color:#fff}

/* ============= SETTINGS PANEL ============= */
.settings-panel{
  position:fixed;top:0;left:-360px;width:340px;height:100vh;z-index:250;
  background:var(--panel);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border-right:1px solid var(--border);display:flex;flex-direction:column;
  transition:left .3s cubic-bezier(.4,0,.2,1);
}
.settings-panel.open{left:var(--sb)}
.settings-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:18px}
.settings-body::-webkit-scrollbar{width:3px}
.settings-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}
.s-section{display:flex;flex-direction:column;gap:8px;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.07)}
.s-section:last-child{border-bottom:none}
.s-sec-title{font-size:11px;font-weight:700;color:var(--accent);letter-spacing:.5px}
.s-label{font-size:10px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.6px}
.s-row{display:flex;gap:7px}
.s-row input,.settings-body input[type="text"],.settings-body input[type="password"],.settings-body input[type="number"]{
  flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);
  border-radius:8px;padding:8px 11px;color:var(--tx);font-size:13px;font-family:inherit;outline:none;
}
.s-row input:focus{border-color:var(--accent)}
.s-row button{
  background:var(--accent);border:none;border-radius:8px;padding:8px 13px;
  color:#fff;cursor:pointer;font-size:13px;font-family:inherit;font-weight:500;
  white-space:nowrap;transition:opacity .2s;
}
.s-row button:hover{opacity:.84}
.s-hint{font-size:11px;color:var(--tx3)}
.s-hint a{color:var(--accent);text-decoration:none}
.unit-row{display:flex;gap:6px}
.unit-btn{
  background:rgba(255,255,255,.07);border:1px solid var(--border);
  border-radius:7px;padding:5px 13px;color:var(--tx2);cursor:pointer;
  font-size:12px;font-family:inherit;transition:all .15s;
}
.unit-btn.active{background:var(--accent-d);border-color:var(--accent);color:var(--tx)}
.bg-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.bg-opt{
  aspect-ratio:1;border-radius:8px;border:2px solid transparent;cursor:pointer;
  transition:all .15s;font-size:8px;font-weight:700;color:#fff;
  display:flex;align-items:flex-end;padding:3px 4px;text-shadow:0 1px 3px rgba(0,0,0,.7);
}
.bg-opt:hover{border-color:rgba(255,255,255,.4);transform:scale(1.06)}
.bg-opt.active{border-color:var(--accent)!important}
.space-mgr-item{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.space-mgr-item:last-child{border-bottom:none}
.space-mgr-emoji{font-size:18px}
.space-mgr-name{flex:1;font-size:13px;color:var(--tx)}
.space-mgr-del{background:none;border:none;color:rgba(239,68,68,.55);cursor:pointer;font-size:14px;padding:2px 6px;border-radius:5px;transition:all .15s}
.space-mgr-del:hover{background:rgba(239,68,68,.14);color:#f87171}

/* ============= OVERLAYS ============= */
.r-overlay,.l-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.42);
  z-index:249;opacity:0;pointer-events:none;transition:opacity .3s;
}
.r-overlay.on,.l-overlay.on{opacity:1;pointer-events:all}

/* ============= MODALS ============= */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:400;display:none;align-items:center;justify-content:center}
.modal-bg.open{display:flex}
.modal-box{
  background:rgba(14,11,42,.97);backdrop-filter:blur(24px);
  border:1px solid var(--border);border-radius:18px;
  padding:24px;min-width:300px;max-width:380px;width:90%;
  display:flex;flex-direction:column;gap:12px;
}
.modal-box h3{font-size:16px;color:var(--tx)}
.modal-box input{
  background:rgba(255,255,255,.07);border:1px solid var(--border);
  border-radius:9px;padding:9px 12px;color:var(--tx);font-size:13px;
  font-family:inherit;outline:none;width:100%;
}
.modal-box input:focus{border-color:var(--accent)}
.modal-actions{display:flex;gap:8px;justify-content:flex-end}
.btn-cancel{background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:8px;padding:8px 14px;color:var(--tx2);cursor:pointer;font-size:13px;font-family:inherit}
.btn-confirm{background:var(--accent);border:none;border-radius:8px;padding:8px 16px;color:#fff;cursor:pointer;font-size:13px;font-family:inherit;font-weight:500}
.emoji-picker{display:flex;flex-wrap:wrap;gap:6px;padding:4px 0}
.ep-opt{font-size:22px;cursor:pointer;padding:4px;border-radius:7px;border:2px solid transparent;transition:all .15s}
.ep-opt:hover{background:var(--glass2)}
.ep-opt.active{border-color:var(--accent);background:var(--accent-d)}

/* ============= TOAST ============= */
.toast{
  position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(50px);
  background:rgba(167,139,250,.95);color:#fff;font-size:13px;font-weight:500;
  padding:9px 22px;border-radius:50px;z-index:500;opacity:0;
  pointer-events:none;transition:all .3s;white-space:nowrap;
}
.toast.show{transform:translateX(-50%) translateY(0);opacity:1}

/* ============= SCROLLBAR ============= */
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:2px}
::-webkit-scrollbar-track{background:transparent}

/* ============================================================
   WIDGET CONTENT STYLES
============================================================ */

/* ── Clock ── */
.w-clock{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;user-select:none}
.w-clock-time{font-size:clamp(28px,4.5vw,60px);font-weight:200;letter-spacing:-2px;font-variant-numeric:tabular-nums;line-height:1}
.w-clock-date{font-size:13px;color:var(--tx2);margin-top:7px}

/* ── Calendar ── */
.w-cal{height:100%;display:flex;flex-direction:column}
.w-cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.w-cal-month{font-size:13px;font-weight:600;color:var(--tx)}
.w-cal-navbtn{background:none;border:none;color:var(--tx2);cursor:pointer;font-size:17px;padding:0 4px;line-height:1;transition:color .15s}
.w-cal-navbtn:hover{color:var(--tx)}
.w-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;flex:1}
.w-cal-dow{font-size:9px;font-weight:700;color:var(--tx3);text-align:center;padding:2px;text-transform:uppercase}
.w-cal-day{font-size:11px;text-align:center;padding:4px 2px;border-radius:6px;cursor:default;color:var(--tx)}
.w-cal-day.other{color:var(--tx3)}
.w-cal-day.today{background:var(--accent);color:#fff;font-weight:700;border-radius:50%}

/* ── Weather ── */
.w-weather{height:100%;display:flex;flex-direction:column;justify-content:center;gap:6px}
.w-weather-row{display:flex;align-items:center;gap:12px}
.w-weather-temp{font-size:50px;font-weight:200;line-height:1;color:var(--tx)}
.w-weather-icon{font-size:44px;line-height:1}
.w-weather-desc{font-size:13px;color:var(--tx2)}
.w-weather-city{font-size:11px;color:var(--tx3)}
.w-weather-extra{display:flex;gap:14px;margin-top:4px}
.w-weather-stat{font-size:11px;color:var(--tx3)}

/* ── Todos ── */
.w-todos{height:100%;display:flex;flex-direction:column;gap:8px}
.w-todos-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:3px}
.w-todo-item{display:flex;align-items:center;gap:7px;padding:5px 2px;border-bottom:1px solid rgba(255,255,255,.05);font-size:13px}
.w-todo-item:last-child{border-bottom:none}
.w-todo-cb{accent-color:var(--accent);width:14px;height:14px;cursor:pointer;flex-shrink:0}
.w-todo-lbl{flex:1;cursor:pointer;line-height:1.4;color:var(--tx)}
.w-todo-lbl.done{text-decoration:line-through;color:var(--tx3)}
.w-todo-del{background:none;border:none;color:transparent;cursor:pointer;font-size:11px;padding:1px 4px;border-radius:4px;transition:all .15s;flex-shrink:0}
.w-todo-item:hover .w-todo-del{color:var(--tx3)}
.w-todo-del:hover{color:var(--tx)!important;background:rgba(255,255,255,.1)}
.w-todos-add{display:flex;gap:6px}
.w-todos-add input{flex:1;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:7px;padding:6px 9px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-todos-add input:focus{border-color:var(--accent)}
.w-todos-add button{background:var(--accent);border:none;border-radius:7px;padding:6px 12px;color:#fff;cursor:pointer;font-size:17px;font-weight:300;transition:opacity .2s}
.w-todos-add button:hover{opacity:.84}

/* ── Notes ── */
.w-notes{height:100%;display:flex}
.w-notes textarea{width:100%;background:none;border:none;outline:none;color:var(--tx);font-size:13px;font-family:inherit;resize:none;line-height:1.75}
.w-notes textarea::placeholder{color:var(--tx3)}

/* ── Pomodoro ── */
.w-pomo{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}
.w-pomo-wrap{position:relative;width:110px;height:110px}
.w-pomo-svg{width:100%;height:100%;transform:rotate(-90deg)}
.pomo-bg{fill:none;stroke:rgba(255,255,255,.1);stroke-width:8}
.pomo-prog{fill:none;stroke:var(--accent);stroke-width:8;stroke-linecap:round;transition:stroke-dashoffset .5s linear}
.w-pomo-time{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:300;font-variant-numeric:tabular-nums;letter-spacing:-.5px;color:var(--tx)}
.w-pomo-lbl{font-size:10px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.7px}
.w-pomo-btns{display:flex;gap:7px}
.w-pomo-btns button{background:rgba(255,255,255,.1);border:1px solid var(--border);border-radius:8px;padding:6px 14px;color:var(--tx);cursor:pointer;font-size:12px;font-family:inherit;transition:all .15s}
.w-pomo-btns button:hover{background:rgba(255,255,255,.18)}
.w-pomo-btns .start.running{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.4)}
.w-pomo-dots{display:flex;gap:6px}
.pomo-dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.18);transition:background .3s}
.pomo-dot.on{background:var(--accent)}

/* ── Kanban ── */
.w-kanban{height:100%;display:flex;gap:10px;overflow-x:auto}
.w-kanban::-webkit-scrollbar{height:3px}
.w-kanban-col{flex:0 0 155px;display:flex;flex-direction:column;gap:6px}
.w-kanban-col-hdr{display:flex;align-items:center;justify-content:space-between;font-size:10px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.7px}
.w-kb-add-btn{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:17px;padding:0 2px;line-height:1;transition:color .15s}
.w-kb-add-btn:hover{color:var(--tx)}
.w-kanban-cards{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:5px;padding:2px 0}
.w-kanban-cards::-webkit-scrollbar{width:2px}
.w-kb-card{
  background:rgba(255,255,255,.1);border-radius:8px;padding:7px 9px;
  font-size:12px;line-height:1.5;cursor:grab;position:relative;color:var(--tx);
  transition:background .15s;border:1px solid transparent;
}
.w-kb-card:hover{background:rgba(255,255,255,.17);border-color:rgba(255,255,255,.12)}
.w-kb-card.drag-over-col{border-color:var(--accent)}
.w-kb-del{position:absolute;top:3px;right:4px;background:none;border:none;color:transparent;cursor:pointer;font-size:10px;transition:color .15s}
.w-kb-card:hover .w-kb-del{color:var(--tx3)}
.w-kb-drop{min-height:30px;border:2px dashed rgba(255,255,255,.15);border-radius:8px;display:none}
.w-kb-drop.active{display:block}

/* ── Links Folder ── */
.w-links{height:100%;display:flex;flex-direction:column;gap:7px}
.w-links-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:4px}
.w-link-item{display:flex;align-items:center;gap:8px;padding:6px 8px;background:rgba(255,255,255,.07);border-radius:8px;cursor:pointer;transition:background .15s;text-decoration:none;color:var(--tx);font-size:13px}
.w-link-item:hover{background:rgba(255,255,255,.14)}
.w-link-fav{width:14px;height:14px;border-radius:3px;object-fit:contain}
.w-link-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.w-link-del{background:none;border:none;color:transparent;cursor:pointer;font-size:10px;padding:1px 4px;flex-shrink:0}
.w-link-item:hover .w-link-del{color:var(--tx3)}
.w-links-addbtn{
  background:rgba(255,255,255,.08);border:1px dashed rgba(255,255,255,.18);
  border-radius:8px;padding:6px;color:var(--tx2);cursor:pointer;font-size:12px;
  font-family:inherit;transition:all .15s;text-align:center;
}
.w-links-addbtn:hover{background:rgba(255,255,255,.14);border-color:var(--accent);color:var(--accent)}

/* ── Hacker News ── */
.w-hn{height:100%;overflow-y:auto;display:flex;flex-direction:column}
.w-hn-item{padding:7px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.w-hn-item:last-child{border-bottom:none}
.w-hn-title{color:var(--tx);cursor:pointer;font-size:12px;line-height:1.45;transition:color .15s}
.w-hn-title:hover{color:var(--accent)}
.w-hn-meta{font-size:10px;color:var(--tx3);margin-top:2px}
.w-hn-load{color:var(--tx3);font-size:12px;text-align:center;padding:20px}

/* ── Word of Day ── */
.w-wod{height:100%;display:flex;flex-direction:column;justify-content:center;gap:7px}
.w-wod-word{font-size:28px;font-weight:300;color:var(--tx)}
.w-wod-pos{font-size:11px;color:var(--accent);font-style:italic;font-weight:500}
.w-wod-def{font-size:12px;color:var(--tx2);line-height:1.65}
.w-wod-ex{font-size:11px;color:var(--tx3);font-style:italic;line-height:1.55;margin-top:3px;padding-top:6px;border-top:1px solid rgba(255,255,255,.07)}

/* ── Schedule ── */
.w-sched{height:100%;display:flex;flex-direction:column;gap:6px}
.w-sched-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:0}
.w-sched-item{display:flex;align-items:flex-start;gap:8px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.w-sched-item:last-child{border-bottom:none}
.w-sched-time{font-size:10px;color:var(--accent);font-weight:700;min-width:38px;flex-shrink:0;margin-top:1px}
.w-sched-text{flex:1;font-size:12px;line-height:1.45;color:var(--tx)}
.w-sched-del{background:none;border:none;color:transparent;cursor:pointer;font-size:10px;padding:1px 4px;flex-shrink:0}
.w-sched-item:hover .w-sched-del{color:var(--tx3)}
.w-sched-add{display:flex;gap:5px;flex-shrink:0}
.w-sched-add input{flex:1;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:7px;padding:5px 8px;color:var(--tx);font-size:11px;font-family:inherit;outline:none}
.w-sched-add input:focus{border-color:var(--accent)}
.w-sched-time-inp{width:75px!important;flex:none!important}
.w-sched-add button{background:var(--accent);border:none;border-radius:7px;padding:5px 10px;color:#fff;cursor:pointer;font-size:13px}

/* ── Embedded Website ── */
.w-embed{height:100%;display:flex;flex-direction:column;gap:7px}
.w-embed-bar{display:flex;gap:5px;flex-shrink:0}
.w-embed-bar input{flex:1;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:7px;padding:5px 9px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-embed-bar input:focus{border-color:var(--accent)}
.w-embed-bar button{background:var(--accent);border:none;border-radius:7px;padding:5px 11px;color:#fff;cursor:pointer;font-size:12px;font-family:inherit}
.w-embed iframe{flex:1;border:none;border-radius:8px;background:#fff;width:100%}
.w-embed-ph{flex:1;display:flex;align-items:center;justify-content:center;color:var(--tx3);font-size:12px}

/* ── Claude AI Widget ── */
.w-claude{height:100%;display:flex;flex-direction:column;gap:0}
.w-claude-msgs{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-bottom:4px}
.w-claude-msgs::-webkit-scrollbar{width:3px}
.w-claude-msgs::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}
.w-claude-welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:var(--tx3);gap:6px;font-size:12px}
.w-claude-welcome-icon{font-size:24px;color:var(--accent);opacity:.7}
.w-bubble{max-width:90%;padding:9px 12px;border-radius:12px;font-size:12px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.w-bubble.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:3px}
.w-bubble.ai{align-self:flex-start;background:rgba(255,255,255,.1);color:var(--tx);border-bottom-left-radius:3px}
.w-bubble.loading{align-self:flex-start;background:rgba(255,255,255,.05);color:var(--tx3);font-style:italic}
.w-claude-inp{display:flex;gap:6px;flex-shrink:0;margin-top:8px}
.w-claude-inp input{flex:1;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:7px 10px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-claude-inp input:focus{border-color:var(--accent)}
.w-claude-inp button{background:var(--accent);border:none;border-radius:8px;padding:7px 13px;color:#fff;cursor:pointer;font-size:14px;transition:opacity .2s}
.w-claude-inp button:hover{opacity:.84}
.w-claude-inp button:disabled{opacity:.4;cursor:not-allowed}

/* ── Misc ── */
.w-empty{color:var(--tx3);font-size:12px;padding:8px 0;text-align:center;line-height:1.6}

/* ============================================================
   NEW WIDGET STYLES (v2.1)
============================================================ */

/* ── Google Search ── */
.w-gsearch{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}
.w-gsearch-logo{font-size:26px;font-weight:700;letter-spacing:-1px;user-select:none}
.w-gsearch-row{display:flex;gap:7px;width:100%}
.w-gsearch-row input{flex:1;background:rgba(255,255,255,.12);border:1px solid var(--border);border-radius:50px;padding:9px 18px;color:var(--tx);font-size:14px;font-family:inherit;outline:none;transition:all .2s}
.w-gsearch-row input:focus{border-color:var(--accent);background:rgba(255,255,255,.18)}
.w-gsearch-row input::placeholder{color:var(--tx3)}
.w-gsearch-row button{background:var(--accent);border:none;border-radius:50px;padding:9px 18px;color:#fff;cursor:pointer;font-size:14px;font-family:inherit;font-weight:500;transition:opacity .2s;white-space:nowrap}
.w-gsearch-row button:hover{opacity:.84}

/* ── Quick Link ── */
.w-quicklink{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}
.w-ql-btn{display:flex;align-items:center;gap:11px;padding:12px 18px;background:rgba(255,255,255,.1);border-radius:12px;border:1px solid var(--border);text-decoration:none;color:var(--tx);transition:all .2s;width:100%}
.w-ql-btn:hover{background:rgba(255,255,255,.18);transform:translateY(-2px)}
.w-ql-name{font-size:15px;font-weight:500}
.w-ql-url{font-size:11px;color:var(--tx3);margin-top:2px}
.w-ql-edit{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:12px;padding:3px 8px;border-radius:6px;transition:all .15s;font-family:inherit}
.w-ql-edit:hover{background:var(--glass2);color:var(--tx)}
.w-ql-setup{display:flex;flex-direction:column;gap:7px;width:100%}
.w-ql-setup input{background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:8px;padding:8px 11px;color:var(--tx);font-size:13px;font-family:inherit;outline:none;width:100%}
.w-ql-setup input:focus{border-color:var(--accent)}
.w-ql-setup button{background:var(--accent);border:none;border-radius:8px;padding:8px;color:#fff;cursor:pointer;font-size:13px;font-family:inherit;font-weight:500;transition:opacity .2s}
.w-ql-setup button:hover{opacity:.84}

/* ── Google Apps ── */
.w-gapps{height:100%;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;align-content:start;overflow-y:auto}
.w-gapp{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 4px;border-radius:10px;cursor:pointer;text-decoration:none;transition:background .15s}
.w-gapp:hover{background:rgba(255,255,255,.12)}
.w-gapp img{width:26px;height:26px;border-radius:4px}
.w-gapp-name{font-size:9.5px;color:var(--tx2);text-align:center}

/* ── Custom Image ── */
.w-custimg{height:100%;display:flex;flex-direction:column;gap:7px}
.w-custimg img{flex:1;width:100%;border-radius:8px;object-fit:cover;min-height:60px}
.w-custimg-bar{display:flex;gap:5px;flex-shrink:0}
.w-custimg-bar input{flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:7px;padding:6px 9px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-custimg-bar input:focus{border-color:var(--accent)}
.w-custimg-bar button{background:var(--accent);border:none;border-radius:7px;padding:6px 11px;color:#fff;cursor:pointer;font-size:12px}
.w-custimg-ph{flex:1;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;color:var(--tx3);font-size:12px;background:rgba(255,255,255,.04);border-radius:8px;min-height:60px}
.w-custimg-ph-icon{font-size:28px;opacity:.5}

/* ── Calculator ── */
.w-calc{height:100%;display:flex;flex-direction:column;gap:8px}
.w-calc-disp{background:rgba(0,0,0,.3);border-radius:10px;padding:8px 12px;text-align:right;flex-shrink:0}
.w-calc-expr{font-size:10px;color:var(--tx3);min-height:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.w-calc-val{font-size:28px;font-weight:300;color:var(--tx);font-variant-numeric:tabular-nums;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.w-calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;flex:1}
.w-calc-btn{border:1px solid var(--border);border-radius:9px;background:rgba(255,255,255,.08);color:var(--tx);cursor:pointer;font-size:15px;font-family:inherit;transition:all .12s;padding:0}
.w-calc-btn:hover{background:rgba(255,255,255,.18);transform:scale(1.04)}
.w-calc-btn:active{transform:scale(.96)}
.w-calc-btn.op{background:rgba(167,139,250,.18);color:var(--accent);border-color:rgba(167,139,250,.25)}
.w-calc-btn.eq{background:var(--accent);color:#fff;border-color:transparent}
.w-calc-btn.eq:hover{opacity:.88}
.w-calc-btn.span2{grid-column:span 2}

/* ── Sticky Note ── */
.w-sticky{height:100%;display:flex;flex-direction:column;gap:7px;transition:background .3s}
.w-sticky-colors{display:flex;gap:5px;flex-shrink:0}
.w-sticky-col{width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:transform .15s}
.w-sticky-col:hover{transform:scale(1.2)}
.w-sticky-col.active{border-color:rgba(255,255,255,.8);transform:scale(1.15)}
.w-sticky textarea{flex:1;background:none;border:none;outline:none;font-size:13px;font-family:inherit;resize:none;line-height:1.75;color:rgba(0,0,0,.85)}
.w-sticky textarea::placeholder{color:rgba(0,0,0,.35)}

/* ── Most Visited ── */
.w-topsites{height:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:8px;align-content:start;overflow-y:auto}
.w-topsite{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 4px;border-radius:10px;cursor:pointer;text-decoration:none;transition:background .15s}
.w-topsite:hover{background:rgba(255,255,255,.1)}
.w-topsite-ico{width:34px;height:34px;border-radius:9px;background:rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;overflow:hidden}
.w-topsite-ico img{width:20px;height:20px}
.w-topsite-name{font-size:10px;color:var(--tx2);text-align:center;max-width:66px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── Bookmarks ── */
.w-bkmarks{height:100%;display:flex;flex-direction:column;gap:4px;overflow-y:auto}
.w-bkm-folder{font-size:10px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.7px;padding:6px 0 3px;display:flex;align-items:center;gap:5px}
.w-bkm-item{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:7px;cursor:pointer;text-decoration:none;color:var(--tx);font-size:12px;transition:background .15s}
.w-bkm-item:hover{background:rgba(255,255,255,.1)}
.w-bkm-item img{width:12px;height:12px;border-radius:2px}

/* ── Reddit ── */
.w-reddit{height:100%;display:flex;flex-direction:column;gap:7px}
.w-reddit-bar{display:flex;gap:5px;align-items:center;flex-shrink:0}
.w-reddit-bar-pre{font-size:12px;color:var(--tx2);font-weight:600;white-space:nowrap}
.w-reddit-bar input{flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:7px;padding:5px 8px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-reddit-bar input:focus{border-color:var(--accent)}
.w-reddit-bar button{background:var(--accent);border:none;border-radius:7px;padding:5px 10px;color:#fff;cursor:pointer;font-size:12px}
.w-reddit-list{flex:1;overflow-y:auto;display:flex;flex-direction:column}
.w-reddit-item{padding:7px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.w-reddit-item:last-child{border-bottom:none}
.w-reddit-title{font-size:12px;color:var(--tx);cursor:pointer;line-height:1.45}
.w-reddit-title:hover{color:var(--accent)}
.w-reddit-img{width:100%;max-height:130px;object-fit:cover;border-radius:7px;margin-top:5px;cursor:pointer}
.w-reddit-meta{font-size:10px;color:var(--tx3);margin-top:2px}

/* ── GitHub PRs ── */
.w-ghpr{height:100%;display:flex;flex-direction:column;gap:7px}
.w-ghpr-setup{display:flex;gap:5px;flex-shrink:0}
.w-ghpr-setup input{flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:7px;padding:5px 8px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-ghpr-setup input:focus{border-color:var(--accent)}
.w-ghpr-setup button{background:var(--accent);border:none;border-radius:7px;padding:5px 10px;color:#fff;cursor:pointer;font-size:12px}
.w-ghpr-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.w-ghpr-item{padding:8px;background:rgba(255,255,255,.06);border-radius:8px;border-left:3px solid #4ade80}
.w-ghpr-item.merged{border-left-color:var(--accent)}
.w-ghpr-title{font-size:12px;color:var(--tx);cursor:pointer;line-height:1.4}
.w-ghpr-title:hover{color:var(--accent)}
.w-ghpr-meta{font-size:10px;color:var(--tx3);margin-top:3px;display:flex;gap:8px}

/* ── dev.to Feed ── */
.w-devto{height:100%;overflow-y:auto;display:flex;flex-direction:column}
.w-devto-hdr{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.07);margin-bottom:2px;flex-shrink:0}
.w-devto-brand{font-size:11px;font-weight:700;color:var(--accent)}
.w-devto-refresh{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:12px;padding:2px 6px;border-radius:5px;transition:all .15s}
.w-devto-refresh:hover{background:var(--glass2);color:var(--tx)}
.w-devto-item{padding:7px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.w-devto-item:last-child{border-bottom:none}
.w-devto-title{font-size:12px;color:var(--tx);cursor:pointer;line-height:1.45}
.w-devto-title:hover{color:var(--accent)}
.w-devto-meta{display:flex;gap:5px;flex-wrap:wrap;align-items:center;font-size:10px;color:var(--tx3);margin-top:3px}
.w-devto-tag{background:rgba(255,255,255,.08);border-radius:4px;padding:1px 5px;font-size:9px}

/* ── Movie of Day ── */
.w-movie{height:100%;display:flex;flex-direction:column;gap:8px}
.w-movie-card{flex:1;border-radius:10px;background:rgba(255,255,255,.06);display:flex;align-items:flex-end;position:relative;overflow:hidden;min-height:60px}
.w-movie-inner{padding:10px;background:linear-gradient(transparent,rgba(0,0,0,.85));width:100%}
.w-movie-title{font-size:15px;font-weight:600;color:#fff;line-height:1.3}
.w-movie-year{font-size:11px;color:rgba(255,255,255,.6);margin-top:2px}
.w-movie-genre{display:inline-block;padding:2px 7px;background:rgba(167,139,250,.35);border-radius:5px;font-size:9px;font-weight:700;color:var(--accent);margin-top:4px;text-transform:uppercase;letter-spacing:.4px}
.w-movie-rating{font-size:11px;color:rgba(255,255,255,.65);margin-top:4px}
.w-movie-desc{font-size:11px;color:var(--tx2);line-height:1.55}

/* ── Product Hunt ── */
.w-ph{height:100%;overflow-y:auto;display:flex;flex-direction:column;gap:0}
.w-ph-hdr{font-size:10px;font-weight:700;color:var(--accent);padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.07);margin-bottom:2px;flex-shrink:0;display:flex;align-items:center;gap:5px}
.w-ph-item{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.05);align-items:flex-start}
.w-ph-item:last-child{border-bottom:none}
.w-ph-ico{width:36px;height:36px;border-radius:8px;flex-shrink:0;background:rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;font-size:18px}
.w-ph-info{flex:1}
.w-ph-name{font-size:12px;font-weight:500;color:var(--tx);cursor:pointer}
.w-ph-name:hover{color:var(--accent)}
.w-ph-tagline{font-size:11px;color:var(--tx3);margin-top:1px;line-height:1.35}
.w-ph-votes{font-size:10px;color:var(--accent);font-weight:600}

/* ── Indie Hackers ── */
.w-ih{height:100%;overflow-y:auto;display:flex;flex-direction:column}
.w-ih-hdr{font-size:10px;font-weight:700;color:var(--accent);padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.07);margin-bottom:2px;flex-shrink:0}
.w-ih-item{padding:8px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.w-ih-item:last-child{border-bottom:none}
.w-ih-title{font-size:12px;color:var(--tx);cursor:pointer;line-height:1.45}
.w-ih-title:hover{color:var(--accent)}
.w-ih-meta{font-size:10px;color:var(--tx3);margin-top:2px}

/* ── Neko Cat ── */
.w-neko{height:100%;position:relative;overflow:hidden;cursor:none}
.w-neko-cat{position:absolute;font-size:28px;user-select:none;transition:none;pointer-events:none}
.w-neko-trail{position:absolute;width:6px;height:6px;border-radius:50%;background:rgba(167,139,250,.3);pointer-events:none;animation:trailFade .5s forwards}
@keyframes trailFade{to{opacity:0;transform:scale(0)}}
.w-neko-msg{position:absolute;bottom:8px;left:0;right:0;text-align:center;font-size:10px;color:var(--tx3)}

/* ── Claude AI Search ── */
.w-csearch{height:100%;display:flex;flex-direction:column;gap:10px}
.w-csearch-bar{display:flex;gap:6px;flex-shrink:0}
.w-csearch-input{flex:1;background:rgba(255,255,255,.12);border:1px solid var(--border);border-radius:12px;padding:11px 18px;color:var(--tx);font-size:14px;font-family:inherit;outline:none;transition:all .2s}
.w-csearch-input:focus{border-color:var(--accent);background:rgba(255,255,255,.18)}
.w-csearch-input::placeholder{color:var(--tx3)}
.w-csearch-btn{background:var(--accent);border:none;border-radius:12px;padding:11px 16px;color:#fff;cursor:pointer;font-size:16px;font-weight:500;transition:opacity .2s;flex-shrink:0}
.w-csearch-btn:hover{opacity:.84}
.w-csearch-btn:disabled{opacity:.4;cursor:not-allowed}
.w-csearch-result{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:4px}
.w-csearch-result::-webkit-scrollbar{width:3px}
.w-csearch-result::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}
.w-csearch-welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:var(--tx3);gap:8px}
.w-csearch-welcome-icon{font-size:32px;color:var(--accent);opacity:.6}
.w-csearch-welcome-title{font-size:14px;color:var(--tx2)}
.w-csearch-welcome-sub{font-size:12px;line-height:1.6}
.w-csearch-query{font-size:11px;font-weight:700;color:var(--accent);margin-bottom:6px;display:flex;align-items:center;gap:5px}
.w-csearch-answer{font-size:13px;line-height:1.75;color:var(--tx);white-space:pre-wrap;word-break:break-word}
.w-csearch-thinking{font-size:12px;color:var(--tx3);font-style:italic;padding:8px 0}
.w-csearch-divider{border:none;border-top:1px solid rgba(255,255,255,.07);margin:10px 0}

/* ============================================================
   v5 — AUTH & COLLABORATION STYLES
============================================================ */

/* ── Auth Modal ── */
.auth-modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:600;display:none;align-items:center;justify-content:center;backdrop-filter:blur(8px)}
.auth-modal-bg.open{display:flex}
.auth-box{background:rgba(14,11,42,.98);border:1px solid var(--border);border-radius:22px;padding:32px;width:360px;display:flex;flex-direction:column;gap:16px;box-shadow:0 24px 80px rgba(0,0,0,.6)}
.auth-logo{text-align:center;font-size:32px;color:var(--accent);margin-bottom:4px}
.auth-title{text-align:center;font-size:20px;font-weight:600;color:var(--tx)}
.auth-sub{text-align:center;font-size:13px;color:var(--tx3)}
.auth-tabs{display:flex;background:rgba(255,255,255,.06);border-radius:10px;padding:3px;gap:3px}
.auth-tab{flex:1;padding:7px;border:none;border-radius:8px;background:none;color:var(--tx2);cursor:pointer;font-size:13px;font-family:inherit;transition:all .2s;font-weight:500}
.auth-tab.active{background:var(--accent);color:#fff}
.auth-input{background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:10px;padding:11px 14px;color:var(--tx);font-size:14px;font-family:inherit;outline:none;width:100%;transition:border .2s}
.auth-input:focus{border-color:var(--accent)}
.auth-input::placeholder{color:var(--tx3)}
.auth-btn{background:var(--accent);border:none;border-radius:10px;padding:12px;color:#fff;cursor:pointer;font-size:14px;font-family:inherit;font-weight:600;width:100%;transition:opacity .2s;letter-spacing:.3px}
.auth-btn:hover{opacity:.88}
.auth-btn:disabled{opacity:.5;cursor:not-allowed}
.auth-err{font-size:12px;color:#f87171;text-align:center;padding:4px 0}
.auth-skip{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:12px;font-family:inherit;text-align:center;padding:4px;transition:color .15s;width:100%}
.auth-skip:hover{color:var(--tx2)}

/* ── User avatar in topbar ── */
.tb-user{display:flex;align-items:center;gap:7px;background:var(--glass);border:1px solid var(--border);border-radius:9px;padding:4px 10px;cursor:pointer;transition:all .2s}
.tb-user:hover{background:var(--glass2)}
.tb-user-avatar{font-size:16px}
.tb-user-name{font-size:12px;font-weight:500;color:var(--tx2);max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── Cloud sync indicator ── */
.sync-badge{position:fixed;bottom:20px;right:20px;background:rgba(74,222,128,.15);border:1px solid rgba(74,222,128,.3);border-radius:20px;padding:6px 14px;font-size:11px;color:#4ade80;font-weight:600;z-index:100;display:flex;align-items:center;gap:6px;opacity:0;transition:opacity .4s}
.sync-badge.show{opacity:1}
.sync-badge.syncing{background:rgba(167,139,250,.15);border-color:rgba(167,139,250,.3);color:var(--accent)}
.sync-badge.error{background:rgba(239,68,68,.15);border-color:rgba(239,68,68,.3);color:#f87171}
.sync-dot{width:6px;height:6px;border-radius:50%;background:currentColor}
.sync-dot.pulse{animation:syncPulse 1s infinite}
@keyframes syncPulse{0%,100%{opacity:1}50%{opacity:.3}}

/* ── Share Space Button ── */
.share-space-btn{background:rgba(74,222,128,.15);border:1px solid rgba(74,222,128,.25);border-radius:8px;padding:5px 12px;color:#4ade80;cursor:pointer;font-size:12px;font-family:inherit;font-weight:600;transition:all .15s}
.share-space-btn:hover{background:rgba(74,222,128,.25)}

/* ── Invite Modal ── */
.invite-box{background:rgba(14,11,42,.98);border:1px solid var(--border);border-radius:18px;padding:24px;width:340px;display:flex;flex-direction:column;gap:14px}
.invite-code{background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:10px;padding:14px;text-align:center;font-size:28px;font-weight:700;letter-spacing:6px;color:var(--accent);cursor:pointer;transition:background .15s;font-family:monospace}
.invite-code:hover{background:rgba(255,255,255,.14)}
.invite-hint{font-size:11px;color:var(--tx3);text-align:center}

/* ── Team Chat Widget ── */
.w-teamchat{height:100%;display:flex;flex-direction:column;gap:0}
.w-tc-msgs{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:2px;padding-bottom:4px}
.w-tc-msgs::-webkit-scrollbar{width:3px}
.w-tc-msgs::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}
.w-tc-msg{display:flex;gap:7px;padding:4px 0;align-items:flex-start}
.w-tc-msg.mine{flex-direction:row-reverse}
.w-tc-avatar{font-size:16px;flex-shrink:0;margin-top:2px}
.w-tc-bubble-wrap{display:flex;flex-direction:column;max-width:80%}
.w-tc-msg.mine .w-tc-bubble-wrap{align-items:flex-end}
.w-tc-sender{font-size:9px;color:var(--tx3);margin-bottom:2px;font-weight:600}
.w-tc-bubble{background:rgba(255,255,255,.1);border-radius:12px;padding:7px 10px;font-size:12px;line-height:1.5;color:var(--tx);word-break:break-word}
.w-tc-msg.mine .w-tc-bubble{background:var(--accent);color:#fff}
.w-tc-time{font-size:9px;color:var(--tx3);margin-top:2px}
.w-tc-inp{display:flex;gap:6px;flex-shrink:0;margin-top:8px;border-top:1px solid rgba(255,255,255,.07);padding-top:8px}
.w-tc-inp input{flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:20px;padding:7px 13px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-tc-inp input:focus{border-color:var(--accent)}
.w-tc-inp button{background:var(--accent);border:none;border-radius:50%;width:32px;height:32px;color:#fff;cursor:pointer;font-size:14px;flex-shrink:0;transition:opacity .2s}
.w-tc-inp button:hover{opacity:.84}
.w-tc-login{display:flex;align-items:center;justify-content:center;height:100%;flex-direction:column;gap:8px;color:var(--tx3);font-size:12px;text-align:center}
.w-tc-login button{background:var(--accent);border:none;border-radius:8px;padding:8px 16px;color:#fff;cursor:pointer;font-size:12px;font-family:inherit;font-weight:600;margin-top:4px}

/* ── Online presence ── */
.presence-bar{display:flex;gap:4px;padding:0 4px;align-items:center}
.presence-avatar{font-size:16px;border-radius:50%;border:2px solid rgba(74,222,128,.6);padding:1px;cursor:default;position:relative}
.presence-avatar::after{content:'';position:absolute;bottom:0;right:0;width:6px;height:6px;border-radius:50%;background:#4ade80;border:1px solid rgba(0,0,0,.4)}
.presence-count{font-size:10px;color:var(--tx3)}

/* ============================================================
   KNOWLEDGE TREE WIDGET (v5.4)
============================================================ */
.w-ktree{height:100%;display:flex;flex-direction:column;gap:8px}
.w-ktree-hdr{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.w-ktree-hdr-title{font-size:13px;font-weight:600;color:var(--tx);display:flex;align-items:center;gap:6px}
.w-ktree-hdr-btn{background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:7px;padding:4px 10px;color:var(--tx2);cursor:pointer;font-size:11px;font-family:inherit;transition:all .15s}
.w-ktree-hdr-btn:hover{background:var(--accent);border-color:transparent;color:#fff}
.w-ktree-hdr-btn.back{background:none;border:none;color:var(--accent);font-size:12px;padding:4px 6px}
.w-ktree-hdr-btn.back:hover{background:rgba(167,139,250,.15)}

.w-ktree-new-form{display:flex;gap:6px;flex-shrink:0}
.w-ktree-new-form input{flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:7px;padding:6px 9px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-ktree-new-form input:focus{border-color:var(--accent)}
.w-ktree-new-form button{background:var(--accent);border:none;border-radius:7px;padding:6px 11px;color:#fff;cursor:pointer;font-size:12px;font-family:inherit}

.w-ktree-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:5px}
.w-ktree-list::-webkit-scrollbar{width:3px}
.w-ktree-card{padding:10px 12px;background:rgba(255,255,255,.07);border-radius:10px;cursor:pointer;border:1px solid transparent;transition:all .18s;border-left:3px solid var(--accent)}
.w-ktree-card:hover{background:rgba(255,255,255,.13);border-color:rgba(167,139,250,.3)}
.w-ktree-card-title{font-size:13px;font-weight:500;color:var(--tx)}
.w-ktree-card-meta{font-size:10px;color:var(--tx3);margin-top:3px;display:flex;gap:8px}
.w-ktree-card-del{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:11px;padding:2px 5px;border-radius:5px;float:right;transition:all .15s}
.w-ktree-card-del:hover{color:#f87171;background:rgba(239,68,68,.15)}

/* Tree view */
.w-ktree-view{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:0}
.w-ktree-view::-webkit-scrollbar{width:3px}
.w-tnode{display:flex;flex-direction:column}
.w-tnode-wrap{display:flex;gap:0;align-items:flex-start}
.w-tnode-connector{display:flex;flex-direction:column;align-items:center;width:16px;flex-shrink:0;padding-top:14px}
.w-tnode-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0}
.w-tnode-line{width:1px;flex:1;background:rgba(167,139,250,.25);min-height:10px}
.w-tnode-card{flex:1;background:rgba(255,255,255,.07);border-radius:9px;padding:8px 10px;margin-bottom:5px;border:1px solid transparent;cursor:pointer;transition:all .18s}
.w-tnode-card:hover{background:rgba(255,255,255,.12)}
.w-tnode-card.open{border-color:rgba(167,139,250,.4);background:rgba(167,139,250,.08)}
.w-tnode-query{font-size:12px;font-weight:500;color:var(--tx);display:flex;align-items:center;gap:6px}
.w-tnode-query::before{content:'▶';font-size:8px;color:var(--tx3);transition:transform .2s;flex-shrink:0}
.w-tnode-card.open .w-tnode-query::before{transform:rotate(90deg);color:var(--accent)}
.w-tnode-answer{font-size:11px;color:var(--tx2);line-height:1.65;margin-top:7px;display:none;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto;padding-right:4px}
.w-tnode-card.open .w-tnode-answer{display:block}
.w-tnode-actions{display:none;gap:5px;margin-top:8px;flex-wrap:wrap}
.w-tnode-card.open .w-tnode-actions{display:flex}
.w-tnode-act{background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:6px;padding:3px 9px;color:var(--tx2);cursor:pointer;font-size:10px;font-family:inherit;transition:all .15s}
.w-tnode-act:hover{background:var(--accent);border-color:transparent;color:#fff}
.w-tnode-act.del:hover{background:rgba(239,68,68,.25);color:#f87171}
.w-tnode-children{padding-left:16px;border-left:1px solid rgba(167,139,250,.2);margin-left:8px}

/* Branch form */
.w-tnode-branch-form{display:flex;gap:5px;margin-top:7px;flex-wrap:wrap}
.w-tnode-branch-form input{flex:1;min-width:120px;background:rgba(255,255,255,.07);border:1px solid var(--accent);border-radius:7px;padding:5px 8px;color:var(--tx);font-size:11px;font-family:inherit;outline:none}
.w-tnode-branch-form button{background:var(--accent);border:none;border-radius:7px;padding:5px 9px;color:#fff;cursor:pointer;font-size:11px;font-family:inherit;white-space:nowrap}
.w-tnode-branch-form .cancel{background:rgba(255,255,255,.08);border:1px solid var(--border)}
.w-tnode-branch-form .cancel:hover{background:rgba(255,255,255,.16)}

/* Save to tree panel (in Claude Search) */
.w-csearch-save{display:flex;flex-direction:column;gap:6px;padding:8px;background:rgba(167,139,250,.1);border:1px solid rgba(167,139,250,.25);border-radius:10px;margin-top:6px}
.w-csearch-save-title{font-size:11px;font-weight:700;color:var(--accent)}
.w-csearch-save-row{display:flex;gap:5px}
.w-csearch-save-row input,.w-csearch-save-row select{flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:7px;padding:5px 8px;color:var(--tx);font-size:11px;font-family:inherit;outline:none}
.w-csearch-save-row select option{background:#1a1040;color:#fff}
.w-csearch-save-row button{background:var(--accent);border:none;border-radius:7px;padding:5px 10px;color:#fff;cursor:pointer;font-size:11px;font-family:inherit;white-space:nowrap}
.w-csearch-saved-ok{font-size:11px;color:#4ade80;text-align:center;padding:4px}

/* ============================================================
   DB WIDGET — Notion-style Database (v6)
============================================================ */
.w-db{height:100%;display:flex;flex-direction:column;gap:0}
.w-db-toolbar{display:flex;align-items:center;gap:6px;padding:0 0 8px;flex-shrink:0;border-bottom:1px solid rgba(255,255,255,.07)}
.w-db-name{font-size:13px;font-weight:600;color:var(--tx);flex:1;background:none;border:none;outline:none;font-family:inherit;cursor:text}
.w-db-name:focus{background:rgba(255,255,255,.06);border-radius:5px;padding:2px 6px}
.w-db-toolbar-btn{background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:7px;padding:4px 10px;color:var(--tx2);cursor:pointer;font-size:11px;font-family:inherit;transition:all .15s;white-space:nowrap}
.w-db-toolbar-btn:hover{background:var(--accent);border-color:transparent;color:#fff}

/* Table */
.w-db-table-wrap{flex:1;overflow:auto}
.w-db-table-wrap::-webkit-scrollbar{width:3px;height:3px}
.w-db-table-wrap::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}
.w-db-table{width:100%;border-collapse:collapse;font-size:12px}
.w-db-table th{background:rgba(255,255,255,.06);padding:7px 10px;text-align:left;font-size:10px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.6px;border-bottom:1px solid rgba(255,255,255,.1);white-space:nowrap;position:sticky;top:0;z-index:2}
.w-db-table th .col-type{font-size:9px;color:var(--tx3);font-weight:400;margin-left:4px}
.w-db-table td{padding:6px 10px;border-bottom:1px solid rgba(255,255,255,.05);color:var(--tx);vertical-align:middle}
.w-db-table tr:hover td{background:rgba(255,255,255,.04)}
.w-db-table tr.editing td{background:rgba(167,139,250,.06)}

/* Cell types */
.w-db-cell{width:100%;background:none;border:none;outline:none;color:var(--tx);font-size:12px;font-family:inherit;padding:0}
.w-db-cell:focus{background:rgba(255,255,255,.08);border-radius:4px;padding:2px 5px}
.w-db-cell-num{text-align:right;font-variant-numeric:tabular-nums}
.w-db-cell-check{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}
.w-db-cell-select{background:none;border:none;outline:none;color:var(--tx);font-size:12px;font-family:inherit;cursor:pointer;padding:0;width:100%}
.w-db-cell-select option{background:#1a1040}
.w-db-tag{display:inline-block;padding:2px 8px;border-radius:20px;font-size:10px;font-weight:600}
.w-db-tag.todo{background:rgba(251,191,36,.2);color:#fbbf24}
.w-db-tag.done{background:rgba(74,222,128,.2);color:#4ade80}
.w-db-tag.progress{background:rgba(167,139,250,.2);color:var(--accent)}
.w-db-tag.blocked{background:rgba(239,68,68,.2);color:#f87171}

/* Row actions */
.w-db-row-del{background:none;border:none;color:transparent;cursor:pointer;font-size:11px;padding:2px 5px;border-radius:4px;transition:all .15s}
.w-db-table tr:hover .w-db-row-del{color:var(--tx3)}
.w-db-row-del:hover{color:#f87171!important;background:rgba(239,68,68,.15)}
.w-db-row-open{background:none;border:none;color:transparent;cursor:pointer;font-size:11px;padding:2px 5px;border-radius:4px;transition:all .15s}
.w-db-table tr:hover .w-db-row-open{color:var(--tx3)}
.w-db-row-open:hover{color:var(--accent)!important;background:rgba(167,139,250,.15)}

/* Add col modal */
.w-db-add-col{display:flex;flex-direction:column;gap:8px}
.w-db-add-col input,.w-db-add-col select{background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:8px;padding:8px 11px;color:var(--tx);font-size:13px;font-family:inherit;outline:none;width:100%}
.w-db-add-col input:focus,.w-db-add-col select:focus{border-color:var(--accent)}
.w-db-add-col select option{background:#1a1040}

/* Page modal */
.w-db-page{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:450;display:flex;align-items:center;justify-content:center}
.w-db-page-box{background:rgba(14,11,42,.98);border:1px solid var(--border);border-radius:18px;padding:28px;width:560px;max-width:95vw;max-height:85vh;display:flex;flex-direction:column;gap:14px;overflow-y:auto}
.w-db-page-title{font-size:20px;font-weight:600;color:var(--tx);background:none;border:none;outline:none;font-family:inherit;width:100%}
.w-db-page-field{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.w-db-page-field:last-child{border-bottom:none}
.w-db-page-field-name{font-size:11px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px;min-width:80px}
.w-db-page-field-val{flex:1;background:none;border:none;outline:none;color:var(--tx);font-size:13px;font-family:inherit}
.w-db-page-field-val:focus{background:rgba(255,255,255,.06);border-radius:5px;padding:2px 6px}
.w-db-page-close{background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:8px;padding:8px 16px;color:var(--tx2);cursor:pointer;font-size:13px;font-family:inherit;align-self:flex-end;transition:all .15s}
.w-db-page-close:hover{background:var(--glass2)}

/* Sync indicator */
.w-db-sync{font-size:9px;color:var(--tx3);padding:2px 6px;border-radius:4px;transition:all .3s}
.w-db-sync.saving{color:var(--accent)}
.w-db-sync.saved{color:#4ade80}

/* ============================================================
   AD2ED CLOUDFLARE WIDGETS (v6.1)
============================================================ */
.w-cf{height:100%;display:flex;flex-direction:column;gap:0}
.w-cf-hdr{display:flex;align-items:center;justify-content:space-between;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.07);flex-shrink:0;margin-bottom:6px}
.w-cf-title{font-size:12px;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:6px}
.w-cf-refresh{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:13px;padding:2px 6px;border-radius:5px;transition:all .15s}
.w-cf-refresh:hover{background:var(--glass2);color:var(--tx)}
.w-cf-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.w-cf-list::-webkit-scrollbar{width:3px}
.w-cf-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}

/* Shop card */
.w-shop-card{padding:9px 11px;background:rgba(255,255,255,.07);border-radius:9px;border:1px solid transparent;cursor:pointer;transition:all .16s}
.w-shop-card:hover{background:rgba(255,255,255,.13);border-color:rgba(167,139,250,.3)}
.w-shop-name{font-size:13px;font-weight:500;color:var(--tx)}
.w-shop-meta{font-size:10px;color:var(--tx3);margin-top:3px;display:flex;gap:10px}
.w-shop-badge{display:inline-block;padding:1px 7px;border-radius:10px;font-size:9px;font-weight:700;background:rgba(74,222,128,.18);color:#4ade80}

/* Post card */
.w-post-card{padding:8px 10px;border-bottom:1px solid rgba(255,255,255,.05);cursor:pointer;transition:background .15s}
.w-post-card:last-child{border-bottom:none}
.w-post-card:hover{background:rgba(255,255,255,.05)}
.w-post-title{font-size:12px;color:var(--tx);line-height:1.45}
.w-post-title:hover{color:var(--accent)}
.w-post-meta{font-size:10px;color:var(--tx3);margin-top:3px;display:flex;gap:8px}

/* Delivery card */
.w-del-card{padding:9px 11px;background:rgba(255,255,255,.07);border-radius:9px;border-left:3px solid var(--accent);margin-bottom:5px}
.w-del-title{font-size:12px;font-weight:500;color:var(--tx)}
.w-del-status{display:inline-block;padding:2px 8px;border-radius:10px;font-size:9px;font-weight:700;margin-top:4px}
.w-del-status.pending{background:rgba(251,191,36,.18);color:#fbbf24}
.w-del-status.delivering{background:rgba(167,139,250,.18);color:var(--accent)}
.w-del-status.done{background:rgba(74,222,128,.18);color:#4ade80}
.w-del-meta{font-size:10px;color:var(--tx3);margin-top:3px}

/* Ads card */
.w-ad-card{padding:9px 11px;background:rgba(255,255,255,.07);border-radius:9px;border:1px solid rgba(251,191,36,.2);cursor:pointer;transition:all .16s;margin-bottom:5px}
.w-ad-card:hover{background:rgba(251,191,36,.08)}
.w-ad-title{font-size:13px;font-weight:500;color:var(--tx)}
.w-ad-body{font-size:11px;color:var(--tx2);margin-top:4px;line-height:1.5}
.w-ad-meta{font-size:10px;color:var(--tx3);margin-top:5px;display:flex;gap:10px}
.w-ad-badge{background:rgba(251,191,36,.2);color:#fbbf24;font-size:9px;font-weight:700;padding:1px 7px;border-radius:10px}

/* Video card */
.w-vid-card{display:flex;gap:9px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.05);cursor:pointer;transition:background .15s;align-items:center}
.w-vid-card:last-child{border-bottom:none}
.w-vid-card:hover{background:rgba(255,255,255,.04)}
.w-vid-thumb{width:60px;height:40px;border-radius:6px;background:rgba(255,255,255,.1);flex-shrink:0;object-fit:cover;display:flex;align-items:center;justify-content:center;font-size:20px}
.w-vid-info{flex:1}
.w-vid-title{font-size:12px;color:var(--tx);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.w-vid-meta{font-size:10px;color:var(--tx3);margin-top:3px;display:flex;gap:8px}

/* ── My Story Widget ── */
.w-story{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;text-align:center;padding:8px}
.w-story-receipt{background:rgba(255,255,255,.06);border:1px dashed rgba(255,255,255,.2);border-radius:12px;padding:16px 20px;width:100%;font-family:monospace}
.w-story-header{font-size:13px;font-weight:700;color:var(--accent);margin-bottom:8px}
.w-story-date{font-size:10px;color:var(--tx3);margin-bottom:10px}
.w-story-item{display:flex;justify-content:space-between;font-size:12px;color:var(--tx2);padding:2px 0}
.w-story-divider{border:none;border-top:1px dashed rgba(255,255,255,.15);margin:8px 0}
.w-story-total{display:flex;justify-content:space-between;font-size:13px;font-weight:700;color:var(--tx)}
.w-story-note{font-size:10px;color:var(--accent);margin-top:10px;line-height:1.6;font-family:inherit}
.w-story-badge{font-size:10px;color:var(--tx3);margin-top:6px;line-height:1.7}

/* ── Comments Modal ── */
.w-comment-modal{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:450;display:flex;align-items:center;justify-content:center}
.w-comment-box{background:rgba(14,11,42,.98);border:1px solid var(--border);border-radius:18px;padding:20px;width:440px;max-width:95vw;max-height:80vh;display:flex;flex-direction:column;gap:12px}
.w-comment-post{font-size:13px;color:var(--tx);padding:10px 12px;background:rgba(255,255,255,.07);border-radius:10px;line-height:1.5}
.w-comment-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px;max-height:280px}
.w-comment-list::-webkit-scrollbar{width:3px}
.w-comment-item{padding:8px 10px;background:rgba(255,255,255,.06);border-radius:8px}
.w-comment-nick{font-size:10px;font-weight:700;color:var(--accent);margin-bottom:3px}
.w-comment-text{font-size:12px;color:var(--tx);line-height:1.5}
.w-comment-text .mention{color:var(--accent);font-weight:600}
.w-comment-time{font-size:10px;color:var(--tx3);margin-top:3px}
.w-comment-inp-wrap{display:flex;flex-direction:column;gap:6px;flex-shrink:0}
.w-comment-nick-inp{background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:8px;padding:6px 10px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-comment-nick-inp:focus{border-color:var(--accent)}
.w-comment-row{display:flex;gap:6px;position:relative}
.w-comment-row input{flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:8px;padding:8px 11px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-comment-row input:focus{border-color:var(--accent)}
.w-comment-row button{background:var(--accent);border:none;border-radius:8px;padding:8px 14px;color:#fff;cursor:pointer;font-size:13px}
.w-mention-dropdown{position:absolute;bottom:calc(100% + 4px);left:0;background:rgba(14,11,42,.98);border:1px solid var(--border);border-radius:8px;padding:4px;min-width:160px;z-index:10;display:none}
.w-mention-dropdown.show{display:block}
.w-mention-item{padding:5px 10px;font-size:12px;color:var(--tx);cursor:pointer;border-radius:5px}
.w-mention-item:hover{background:var(--accent-d);color:var(--accent)}
.w-comment-close{background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:8px;padding:7px;color:var(--tx2);cursor:pointer;font-size:12px;font-family:inherit;align-self:flex-end}

/* ── Chat → Knowledge Tree Save ── */
.w-tc-msg{position:relative}
.w-tc-save-btn{position:absolute;top:2px;right:0;background:rgba(167,139,250,.2);border:1px solid rgba(167,139,250,.3);border-radius:6px;padding:2px 6px;font-size:10px;color:var(--accent);cursor:pointer;opacity:0;transition:opacity .15s;font-family:inherit;white-space:nowrap}
.w-tc-msg:hover .w-tc-save-btn{opacity:1}
.w-tc-save-btn:hover{background:rgba(167,139,250,.4)}

/* ── Save to Tree Mini Panel ── */
.w-kt-save-panel{position:fixed;z-index:500;background:rgba(14,11,42,.98);border:1px solid var(--border);border-radius:12px;padding:14px;width:260px;box-shadow:0 8px 40px rgba(0,0,0,.5)}
.w-kt-save-panel h4{font-size:12px;font-weight:700;color:var(--accent);margin-bottom:10px}
.w-kt-save-msg{font-size:11px;color:var(--tx2);background:rgba(255,255,255,.06);border-radius:7px;padding:7px 9px;margin-bottom:10px;line-height:1.5;max-height:60px;overflow:hidden}
.w-kt-save-label{font-size:10px;color:var(--tx3);font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:5px}
.w-kt-save-select{width:100%;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:7px;padding:6px 9px;color:var(--tx);font-size:12px;font-family:inherit;outline:none;margin-bottom:8px}
.w-kt-save-select option{background:#1a1040}
.w-kt-save-or{text-align:center;font-size:10px;color:var(--tx3);margin:6px 0}
.w-kt-save-new{display:flex;gap:5px;margin-bottom:10px}
.w-kt-save-new input{flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:7px;padding:6px 9px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-kt-save-new input:focus{border-color:var(--accent)}
.w-kt-save-actions{display:flex;gap:6px;justify-content:flex-end}
.w-kt-save-actions button{border:none;border-radius:7px;padding:6px 12px;cursor:pointer;font-size:12px;font-family:inherit}
.w-kt-save-cancel{background:rgba(255,255,255,.08);color:var(--tx2)}
.w-kt-save-confirm{background:var(--accent);color:#fff;font-weight:600}
.w-kt-saved-toast{font-size:11px;color:#4ade80;text-align:center;padding:4px 0}

/* ── Event Ladder Widget ── */
.w-ladder{height:100%;display:flex;flex-direction:column;gap:8px}
.w-ladder-hdr{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.w-ladder-title{font-size:13px;font-weight:600;color:var(--tx)}
.w-ladder-tabs{display:flex;background:rgba(255,255,255,.06);border-radius:8px;padding:2px;gap:2px;flex-shrink:0}
.w-ladder-tab{flex:1;padding:5px;border:none;border-radius:6px;background:none;color:var(--tx2);cursor:pointer;font-size:11px;font-family:inherit;transition:all .2s;text-align:center}
.w-ladder-tab.active{background:var(--accent);color:#fff;font-weight:600}

/* Setup */
.w-ladder-setup{flex:1;display:flex;flex-direction:column;gap:8px;overflow-y:auto}
.w-ladder-section{font-size:10px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.6px}
.w-ladder-tags{display:flex;flex-wrap:wrap;gap:5px;min-height:28px}
.w-ladder-tag{display:flex;align-items:center;gap:4px;background:rgba(167,139,250,.15);border:1px solid rgba(167,139,250,.3);border-radius:20px;padding:3px 10px;font-size:12px;color:var(--tx)}
.w-ladder-tag button{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:11px;padding:0 2px;line-height:1}
.w-ladder-tag button:hover{color:#f87171}
.w-ladder-add-row{display:flex;gap:5px}
.w-ladder-add-row input{flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:7px;padding:5px 9px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-ladder-add-row input:focus{border-color:var(--accent)}
.w-ladder-add-row button{background:var(--accent);border:none;border-radius:7px;padding:5px 10px;color:#fff;cursor:pointer;font-size:13px}
.w-ladder-run{background:var(--accent);border:none;border-radius:10px;padding:10px;color:#fff;cursor:pointer;font-size:13px;font-family:inherit;font-weight:600;width:100%;transition:opacity .2s;flex-shrink:0}
.w-ladder-run:hover{opacity:.88}
.w-ladder-run:disabled{opacity:.4;cursor:not-allowed}

/* Result */
.w-ladder-result{flex:1;display:flex;flex-direction:column;gap:6px;overflow-y:auto}
.w-ladder-result-title{font-size:12px;font-weight:600;color:var(--tx);text-align:center;padding:4px 0}
.w-ladder-svg-wrap{flex:1;min-height:120px}
.w-ladder-svg-wrap svg{width:100%;height:100%}
.w-ladder-pairs{display:flex;flex-direction:column;gap:4px}
.w-ladder-pair{display:flex;align-items:center;gap:8px;padding:6px 10px;background:rgba(255,255,255,.07);border-radius:8px;font-size:12px}
.w-ladder-pair-person{font-weight:600;color:var(--accent);flex:1}
.w-ladder-pair-arrow{color:var(--tx3)}
.w-ladder-pair-item{color:var(--tx);flex:1;text-align:right}
.w-ladder-actions{display:flex;gap:6px;flex-shrink:0}
.w-ladder-actions button{flex:1;border:none;border-radius:8px;padding:7px;cursor:pointer;font-size:11px;font-family:inherit;font-weight:600;transition:all .2s}
.w-ladder-reshuffle{background:rgba(255,255,255,.1);color:var(--tx2)}
.w-ladder-reshuffle:hover{background:rgba(255,255,255,.18)}
.w-ladder-save-kt{background:rgba(74,222,128,.15);color:#4ade80;border:1px solid rgba(74,222,128,.25)!important}
.w-ladder-save-kt:hover{background:rgba(74,222,128,.28)}

/* History */
.w-ladder-history{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:5px}
.w-ladder-hist-item{padding:8px 10px;background:rgba(255,255,255,.07);border-radius:8px;cursor:pointer;transition:background .15s}
.w-ladder-hist-item:hover{background:rgba(255,255,255,.13)}
.w-ladder-hist-title{font-size:12px;font-weight:500;color:var(--tx)}
.w-ladder-hist-meta{font-size:10px;color:var(--tx3);margin-top:3px}

/* ── Timeline / Swimlane Widget ── */
.w-tl{height:100%;display:flex;flex-direction:column;gap:8px}
.w-tl-toolbar{display:flex;align-items:center;gap:6px;flex-shrink:0}
.w-tl-toolbar input{flex:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:7px;padding:5px 9px;color:var(--tx);font-size:12px;font-family:inherit;outline:none}
.w-tl-toolbar input:focus{border-color:var(--accent)}
.w-tl-toolbar button{background:var(--accent);border:none;border-radius:7px;padding:5px 10px;color:#fff;cursor:pointer;font-size:12px;font-family:inherit;white-space:nowrap}
.w-tl-toolbar button.sec{background:rgba(255,255,255,.1);color:var(--tx2)}
.w-tl-toolbar button.sec:hover{background:rgba(255,255,255,.18)}

.w-tl-grid-wrap{flex:1;overflow:auto;position:relative}
.w-tl-grid-wrap::-webkit-scrollbar{width:3px;height:3px}
.w-tl-grid-wrap::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}
.w-tl-grid{display:grid;min-width:100%}
.w-tl-corner{background:rgba(0,0,0,.2);padding:6px 8px;font-size:10px;color:var(--tx3);font-weight:700;position:sticky;left:0;z-index:3;border-right:1px solid rgba(255,255,255,.07);border-bottom:1px solid rgba(255,255,255,.07)}
.w-tl-event-hdr{padding:6px 8px;background:rgba(167,139,250,.1);border-bottom:1px solid rgba(255,255,255,.07);border-right:1px solid rgba(255,255,255,.06);text-align:center;min-width:80px;cursor:pointer;transition:background .15s}
.w-tl-event-hdr:hover{background:rgba(167,139,250,.2)}
.w-tl-event-title{font-size:10px;font-weight:700;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.w-tl-event-time{font-size:9px;color:var(--tx3);margin-top:2px}
.w-tl-person-cell{padding:5px 8px;background:rgba(0,0,0,.15);border-right:1px solid rgba(255,255,255,.07);border-bottom:1px solid rgba(255,255,255,.05);font-size:11px;font-weight:600;color:var(--tx);white-space:nowrap;position:sticky;left:0;z-index:2;display:flex;align-items:center;gap:5px}
.w-tl-person-del{background:none;border:none;color:transparent;cursor:pointer;font-size:10px;padding:0 3px}
.w-tl-person-cell:hover .w-tl-person-del{color:var(--tx3)}
.w-tl-dot-cell{border-right:1px solid rgba(255,255,255,.05);border-bottom:1px solid rgba(255,255,255,.05);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s;min-width:80px;height:36px}
.w-tl-dot-cell:hover{background:rgba(255,255,255,.06)}
.w-tl-dot{width:18px;height:18px;border-radius:50%;border:2px solid rgba(167,139,250,.4);transition:all .2s;display:flex;align-items:center;justify-content:center;font-size:10px}
.w-tl-dot.on{background:var(--accent);border-color:var(--accent);color:#fff}
.w-tl-dot.on::after{content:'●'}
.w-tl-dot:not(.on)::after{content:'○';color:var(--tx3);font-size:12px}
.w-tl-add-event{padding:6px 8px;background:rgba(255,255,255,.04);border-right:1px solid rgba(255,255,255,.06);border-bottom:1px solid rgba(255,255,255,.05);display:flex;align-items:center;justify-content:center;min-width:80px;cursor:pointer;color:var(--tx3);font-size:18px;transition:all .15s}
.w-tl-add-event:hover{background:rgba(255,255,255,.1);color:var(--accent)}

/* Add event modal */
.w-tl-event-form{display:flex;flex-direction:column;gap:8px}
.w-tl-event-form input{background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:8px;padding:8px 11px;color:var(--tx);font-size:13px;font-family:inherit;outline:none;width:100%}
.w-tl-event-form input:focus{border-color:var(--accent)}
.w-tl-check-label{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--tx);cursor:pointer;padding:4px 0}
.w-tl-check-label input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px}

/* ── Team Chat v2 — 읽음/반응 ── */
.w-tc-reactions{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.w-tc-reaction{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);border-radius:20px;padding:2px 8px;font-size:11px;cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:3px}
.w-tc-reaction:hover{background:rgba(255,255,255,.2)}
.w-tc-reaction.mine{background:rgba(167,139,250,.25);border-color:var(--accent)}
.w-tc-reaction-count{font-size:10px;color:var(--tx2)}
.w-tc-react-btn{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:13px;padding:2px 4px;opacity:0;transition:opacity .15s;border-radius:5px}
.w-tc-msg:hover .w-tc-react-btn{opacity:1}
.w-tc-react-btn:hover{background:rgba(255,255,255,.1);color:var(--tx)}
.w-tc-read-indicator{font-size:9px;color:var(--tx3);margin-top:2px;text-align:right}
.w-tc-emoji-picker{position:absolute;background:rgba(14,11,42,.98);border:1px solid var(--border);border-radius:10px;padding:8px;display:flex;gap:6px;z-index:100;box-shadow:0 8px 32px rgba(0,0,0,.5)}
.w-tc-emoji-opt{font-size:18px;cursor:pointer;padding:3px;border-radius:5px;transition:background .15s}
.w-tc-emoji-opt:hover{background:rgba(255,255,255,.15)}

/* ── Timeline Auto-sync indicator ── */
.w-tl-sync{font-size:9px;color:#4ade80;padding:2px 6px;background:rgba(74,222,128,.1);border-radius:10px}
.w-tl-msg-cell{position:relative}
.w-tl-msg-tooltip{display:none;position:absolute;bottom:calc(100% + 4px);left:50%;transform:translateX(-50%);background:rgba(0,0,0,.9);color:#fff;font-size:10px;padding:4px 8px;border-radius:6px;white-space:nowrap;z-index:10;pointer-events:none}
.w-tl-dot-cell:hover .w-tl-msg-tooltip{display:block}

/* ── Stay / Booking Widget ── */
.w-stay{height:100%;display:flex;flex-direction:column;gap:8px}
.w-stay-tabs{display:flex;background:rgba(255,255,255,.06);border-radius:8px;padding:2px;gap:2px;flex-shrink:0}
.w-stay-tab{flex:1;padding:5px;border:none;border-radius:6px;background:none;color:var(--tx2);cursor:pointer;font-size:11px;font-family:inherit;transition:all .2s;text-align:center}
.w-stay-tab.active{background:var(--accent);color:#fff;font-weight:600}
.w-stay-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.w-stay-list::-webkit-scrollbar{width:3px}
.w-stay-card{background:rgba(255,255,255,.06);border:1px solid var(--border);border-radius:10px;padding:10px;cursor:pointer;transition:all .15s}
.w-stay-card:hover{background:rgba(255,255,255,.1);border-color:var(--accent)}
.w-stay-card-title{font-size:12px;font-weight:600;color:var(--tx);margin-bottom:4px}
.w-stay-card-meta{font-size:10px;color:var(--tx3);display:flex;gap:8px;flex-wrap:wrap}
.w-stay-card-price{font-size:13px;font-weight:700;color:var(--accent)}
.w-stay-badge{font-size:9px;padding:2px 7px;border-radius:10px;font-weight:600}
.w-stay-badge.pending{background:rgba(251,191,36,.2);color:#fbbf24}
.w-stay-badge.confirmed{background:rgba(74,222,128,.2);color:#4ade80}
.w-stay-badge.cancelled{background:rgba(248,113,113,.2);color:#f87171}
.w-stay-alarm{background:rgba(167,139,250,.1);border:1px solid rgba(167,139,250,.2);border-radius:8px;padding:8px 10px;font-size:11px;color:var(--accent);display:flex;align-items:center;gap:6px;flex-shrink:0}
.w-stay-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--tx3);font-size:12px;text-align:center;line-height:1.8}

/* ── wiith.us Web App 추가 스타일 ── */
html, body {
  margin: 0; padding: 0;
  width: 100%; height: 100%;
  overflow: hidden;
  background: var(--bg);
}

/* PWA 설치 배너 */
.w-pwa-banner {
  position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%);
  background: rgba(124,58,237,.95); border-radius: 14px;
  padding: 12px 20px; display: flex; align-items: center; gap: 12px;
  z-index: 9999; box-shadow: 0 8px 32px rgba(0,0,0,.4);
  animation: slideUp .3s ease;
}
.w-pwa-banner button {
  background: #fff; color: #7c3aed; border: none; border-radius: 8px;
  padding: 6px 14px; cursor: pointer; font-size: 12px; font-weight: 700;
  font-family: inherit;
}
.w-pwa-banner-close {
  background: none !important; color: rgba(255,255,255,.6) !important;
  font-size: 16px !important; padding: 2px 6px !important;
}
@keyframes slideUp { from { transform: translateX(-50%) translateY(20px); opacity:0; } to { transform: translateX(-50%) translateY(0); opacity:1; } }

/* 모바일 대응 */
@media (max-width: 600px) {
  .sidebar { width: 52px !important; }
  .sidebar .space-label { display: none; }
  #addWidgetBtn span { display: none; }
}
