/* Lingxi Layout: Sidebar + Main + Section Header */

/* ── Sidebar ── */
.sidebar{width:var(--sidebar-w);height:100vh;background:var(--card);border-right:1px solid var(--ink-100);display:flex;flex-direction:column;padding:0;position:fixed;top:0;left:0;z-index:100;overflow:hidden;}
.sidebar-top{padding:var(--sp-5) 14px 0;flex-shrink:0;}
.sidebar-scroll{flex:1;overflow-y:auto;min-height:0;padding:var(--sp-1) 14px var(--sp-2);}
.logo{padding:var(--sp-1) var(--sp-1) var(--sp-5);display:flex;align-items:center;gap:10px;}
.logo-mark{width:32px;height:32px;border-radius:8px;background:var(--accent-grad);display:flex;align-items:center;justify-content:center;color:white;font-size:var(--fs-lg);flex-shrink:0;box-shadow:0 2px 8px rgba(61,107,78,.35);}
.logo-text{}
.logo-name{font-size:var(--fs-lg);font-weight:700;color:var(--text);letter-spacing:-.2px;}
.logo-sub{font-size:var(--fs-xs);color:var(--text3);margin-top:1px;letter-spacing:.2px;}
.nav-sec{font-size:var(--fs-xs);font-weight:600;color:var(--text3);letter-spacing:.8px;padding:var(--sp-3) 6px 5px;text-transform:uppercase;}
.nav-item{display:flex;align-items:center;gap:8px;padding:7px 10px 7px 12px;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-base);color:var(--text2);transition:all .15s;user-select:none;position:relative;}
.nav-item:hover{background:#F5F6F8;color:var(--text);}
.nav-item.active{background:var(--accent-bg);color:var(--accent);font-weight:600;box-shadow:inset 2px 0 0 var(--accent);}
.nav-dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0;}
.nav-badge{margin-left:auto;font-size:var(--fs-xs);color:var(--text3);padding:1px 6px;background:#F0F1F4;border-radius:var(--radius-pill);font-weight:500;}
.nav-item.active .nav-badge{background:rgba(61,107,78,.15);color:var(--accent);}
.stag{display:flex;align-items:center;gap:3px;font-size:11px;color:var(--text2);padding:4px 7px;border-radius:var(--radius-sm);cursor:pointer;transition:all .15s;position:relative;}
.stag:hover{background:var(--accent-bg);color:var(--accent);}
.stag.active{background:var(--accent-bg);color:var(--accent);font-weight:600;}
.stag-label{display:flex;align-items:center;gap:3px;flex:1;min-width:0;overflow:hidden;}
.stag-hash{color:var(--accent);font-weight:700;font-size:10px;flex-shrink:0;}
.stag-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;}
.stag-count{margin-left:auto;font-size:10px;color:var(--text3);flex-shrink:0;padding-left:4px;}
.stag-actions{opacity:0;display:flex;gap:1px;transition:opacity .1s;flex-shrink:0;}
.stag:hover .stag-actions{opacity:1;}
.stag:hover .stag-count{visibility:hidden;}
.stag-actions button{background:none;border:none;padding:1px 3px;cursor:pointer;color:var(--text3);font-size:10px;border-radius:3px;line-height:1;font-family:inherit;}
.stag-actions button:hover{background:rgba(0,0,0,.06);color:var(--text);}
.stag-wide{grid-column:1/-1;}
.stag-show-more{padding:3px 7px;font-size:10px;color:var(--text3);cursor:pointer;background:none;border:none;font-family:inherit;transition:color .12s;text-align:left;grid-column:1/-1;}
.stag-show-more:hover{color:var(--accent);}
#sidebarTags{display:grid;grid-template-columns:1fr 1fr;gap:1px;}

/* ── Folder nav ── */
.nav-folder{display:flex;align-items:center;gap:6px;padding:5px 10px 5px 14px;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-base);color:var(--text2);transition:background .12s,color .12s;position:relative;}
.nav-folder:hover{background:var(--accent-bg);color:var(--accent);}
.nav-folder.active{background:var(--accent-bg);color:var(--accent);font-weight:600;}
.nav-folder-toggle{font-size:9px;color:var(--text3);flex-shrink:0;transition:transform .15s;display:inline-flex;align-items:center;padding:0 3px 0 0;cursor:pointer;line-height:1;user-select:none;}
.nav-folder-toggle:hover{color:var(--text);}
.nav-folder-toggle.open{transform:rotate(90deg);}
.nav-folder-ico{font-size:13px;flex-shrink:0;}
.nav-folder-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nav-folder-count{font-size:10px;color:var(--text3);font-weight:500;margin-left:auto;flex-shrink:0;}
.nav-folder-menu{opacity:0;pointer-events:none;display:flex;gap:2px;transition:opacity .1s;}
.nav-folder:hover .nav-folder-menu{opacity:1;pointer-events:auto;}
.nav-folder-menu button{background:none;border:none;padding:2px 4px;cursor:pointer;color:var(--text3);font-size:11px;border-radius:3px;line-height:1;font-family:inherit;}
.nav-folder-menu button:hover{background:rgba(0,0,0,.06);color:var(--text);}
.nav-add-folder{display:flex;align-items:center;gap:5px;padding:4px 14px;font-size:11px;color:var(--text3);cursor:pointer;border-radius:var(--radius-xs);transition:color .12s,background .12s;border:none;background:none;font-family:inherit;width:100%;text-align:left;}
.nav-add-folder:hover{color:var(--accent);background:rgba(0,0,0,.025);}
.folder-inline-input{border:none;outline:none;font-size:12px;color:var(--text);background:var(--accent-bg);border-radius:var(--radius-xs);padding:4px 10px;margin:2px 10px;width:calc(100% - 20px);font-family:inherit;border:1px solid rgba(61,107,78,.3);}

/* ── Sidebar foot user ── */
.sfoot-user{display:flex;align-items:center;padding:6px 4px;border-radius:var(--radius-sm);transition:background .12s;}
.sfoot-user:hover{background:#F5F6F8;}
.sfoot-user-name{font-size:13px;font-weight:600;color:var(--text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;padding:2px 6px;border-radius:var(--radius-xs);transition:background .12s;user-select:none;}
.sfoot-user-name:hover{background:#ECEEF2;}
.sidebar-foot{flex-shrink:0;padding:var(--sp-3) 14px var(--sp-4);border-top:1px solid var(--ink-100);display:flex;flex-direction:column;gap:8px;}
.sfoot-stat{font-size:var(--fs-xs);color:var(--text3);font-weight:500;}
.sfoot-row{display:flex;gap:6px;}
.btn-sfoot{flex:1;font-size:var(--fs-xs);color:var(--text2);background:none;border:1px solid var(--ink-100);border-radius:var(--radius-sm);padding:6px 8px;cursor:pointer;transition:all .15s;text-align:center;font-weight:500;}
.btn-sfoot:hover{background:#F5F6F8;color:var(--text);border-color:var(--ink-300);}

/* ── Main ── */
.main{margin-left:var(--sidebar-w);flex:1;padding:0 var(--sp-7) 80px;min-width:0;}
.topbar{display:flex;align-items:center;gap:10px;padding:var(--sp-4) 0 var(--sp-4);position:sticky;top:0;background:var(--bg);z-index:50;transition:box-shadow .2s;}
.topbar.scrolled{box-shadow:0 1px 0 var(--border);}
.section-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-4);}
.section-title{font-size:var(--fs-lg);font-weight:700;letter-spacing:-.2px;color:var(--text);}
.count-pill{font-size:var(--fs-xs);color:var(--text3);font-weight:500;}

/* ── Topbar search ── */
.search-wrap{flex:1;position:relative;}
.search-ico{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--text3);pointer-events:none;}
#search{width:100%;padding:8px var(--sp-3) 8px 34px;border:1.5px solid var(--ink-100);border-radius:var(--radius-sm);background:var(--card);font-size:var(--fs-base);color:var(--text);outline:none;transition:all .18s;font-family:inherit;box-shadow:var(--shadow-xs);}
#search:focus{border-color:var(--accent);background:white;box-shadow:0 0 0 3px rgba(61,107,78,.1);}
#search::placeholder{color:var(--text3);}
.topbar-right{display:flex;align-items:center;gap:8px;}
.sort-select{padding:7px var(--sp-3);border:1.5px solid var(--ink-100);border-radius:var(--radius-sm);background:var(--card);font-size:var(--fs-sm);color:var(--text2);outline:none;cursor:pointer;font-family:inherit;transition:border-color .18s;box-shadow:var(--shadow-xs);}
.sort-select:focus{border-color:var(--accent);}
.btn-add{padding:8px 18px;background:var(--accent-grad);color:white;border:none;border-radius:var(--radius-sm);font-size:var(--fs-base);font-weight:600;cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .15s;white-space:nowrap;box-shadow:0 2px 8px rgba(61,107,78,.3);}
.btn-add:hover{opacity:.9;box-shadow:0 4px 12px rgba(61,107,78,.4);transform:translateY(-1px);}

/* ── Review Banner ── */
.review-banner{
  border-radius:var(--radius);padding:var(--sp-4) var(--sp-5);margin-bottom:var(--sp-5);
  color:var(--text);display:flex;align-items:flex-start;gap:var(--sp-4);
  position:relative;overflow:hidden;
  background:linear-gradient(135deg,var(--accent-light) 0%,var(--accent-bg) 100%);
  border:1px solid rgba(61,107,78,.18);
  transition:background .5s ease,border-color .5s ease;
}
.review-banner::before{display:none;}
.review-banner::after{display:none;}
.review-thumb{width:64px;height:64px;object-fit:cover;border-radius:var(--radius-sm);flex-shrink:0;opacity:.95;align-self:center;box-shadow:var(--shadow-xs);transition:opacity .3s;}
.review-left{flex:1;min-width:0;position:relative;overflow:hidden;}
.review-eye{font-size:var(--fs-xs);font-weight:700;color:var(--accent);letter-spacing:.8px;margin-bottom:6px;text-transform:uppercase;}
.review-title{font-size:var(--fs-md);font-weight:600;line-height:1.4;margin-bottom:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text);}
.review-chips{display:flex;gap:5px;flex-wrap:wrap;}
.review-chip{font-size:var(--fs-xs);padding:2px 9px;border-radius:var(--radius-pill);font-weight:500;background:rgba(61,107,78,.12);color:var(--accent);}
.review-actions{display:flex;flex-direction:column;gap:6px;flex-shrink:0;padding-top:2px;}
.btn-rv{background:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.6);backdrop-filter:blur(8px);color:var(--text2);padding:6px var(--sp-3);border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:500;cursor:pointer;white-space:nowrap;transition:all .15s;box-shadow:var(--shadow-xs);}
.btn-rv:hover{background:white;border-color:var(--accent);color:var(--accent);}
/* slide animations */
@keyframes rvSlideIn{from{opacity:0;transform:translateX(28px);}to{opacity:1;transform:none;}}
@keyframes rvSlideOut{from{opacity:1;transform:none;}to{opacity:0;transform:translateX(-28px);}}
.review-slide-in{animation:rvSlideIn .28s cubic-bezier(.16,1,.3,1) both;}
.review-slide-out{animation:rvSlideOut .18s ease forwards;}

/* ── Sidebar overlay (mobile) ── */
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:199;backdrop-filter:blur(2px);}

/* ── Hamburger toggle button — always visible ── */
.sidebar-hamburger{display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text2);cursor:pointer;padding:6px 8px;border-radius:var(--radius-xs);transition:background .12s;flex-shrink:0;margin-right:4px;}
.sidebar-hamburger:hover{background:var(--ink-100);color:var(--text);}
.sidebar-hamburger svg{display:block;}

/* ── Desktop sidebar collapse ── */
.sidebar{transition:transform .26s cubic-bezier(.16,1,.3,1);}
.main{transition:margin-left .26s cubic-bezier(.16,1,.3,1);}
body.sidebar-collapsed .sidebar{transform:translateX(-100%);}
body.sidebar-collapsed .main{margin-left:0;}

/* ── Mobile layout ── */
@media(max-width:768px){
  .sidebar{transform:translateX(-100%);z-index:200;}
  .sidebar.open{transform:translateX(0);}
  .main{margin-left:0;padding:0 var(--sp-4) 80px;}
  .topbar{padding:var(--sp-3) 0;}
  #topbar .search-wrap{flex:1;}
}
