@keyframes housingFadeIn{0%{opacity:0}to{opacity:1}}.housing-drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:9991;animation:housingFadeIn .2s ease}.housing-drawer{position:fixed;top:0;right:0;height:100%;width:100%;max-width:640px;z-index:9992;background:var(--bg-card);box-shadow:-8px 0 32px rgba(0,0,0,.18);display:flex;flex-direction:column;animation:housingSlideInRight .28s cubic-bezier(.16,1,.3,1)}@keyframes housingSlideInRight{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes housingSlideInUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (max-width:768px){.housing-drawer{top:auto;bottom:0;left:0;right:0;height:auto;max-height:92vh;max-width:100%;border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:housingSlideInUp .3s cubic-bezier(.16,1,.3,1)}}.housing-drawer-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);flex-shrink:0}.housing-drawer-body{padding:1.25rem 1.5rem;overflow-y:auto;flex:1 1}.housing-drawer-footer{display:flex;gap:.75rem;justify-content:flex-end;padding:1rem 1.5rem;border-top:1px solid var(--border);flex-shrink:0}.housing-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:9995;display:flex;align-items:center;justify-content:center;animation:housingFadeIn .2s ease}.housing-lightbox img{max-width:92vw;max-height:86vh;object-fit:contain;border-radius:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.housing-lightbox-btn{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:none;background:hsla(0,0%,100%,.14);color:#fff;font-size:1.6rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.housing-lightbox-btn:hover{background:hsla(0,0%,100%,.28)}.housing-lightbox-prev{left:1rem}.housing-lightbox-next{right:1rem}.housing-lightbox-counter{position:absolute;bottom:1.25rem;left:50%;transform:translateX(-50%);color:hsla(0,0%,100%,.85);font-size:.85rem;background:rgba(0,0,0,.45);padding:.25rem .85rem;border-radius:2rem}.housing-lightbox-close{position:absolute;top:1rem;right:1rem;width:36px;height:36px;border-radius:50%;border:none;background:hsla(0,0%,100%,.14);color:#fff;font-size:1.05rem;cursor:pointer;transition:background .2s}.housing-lightbox-close:hover{background:hsla(0,0%,100%,.28)}.housing-skeleton-card{padding:1rem;gap:.65rem;animation:housingFadeIn .3s ease both}.housing-skeleton-card,.housing-skeleton-row{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column}.housing-skeleton-row{padding:.85rem 1rem;gap:.55rem}.housing-skeleton-line{height:12px;border-radius:6px;background:linear-gradient(90deg,var(--border-light) 25%,var(--bg-secondary) 50%,var(--border-light) 75%);background-size:200% 100%;animation:housingShimmer 1.4s ease infinite}.housing-skeleton-line-lg{height:18px;width:55%}.housing-skeleton-line-md{width:75%}.housing-skeleton-line-sm{width:40%}@keyframes housingShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.housing-status-pill{position:relative;display:inline-block}.housing-status-menu{position:absolute;top:calc(100% + 4px);right:0;z-index:60;min-width:128px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px rgba(0,0,0,.12);padding:.35rem;animation:housingFadeIn .15s ease}.housing-status-menu button{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4rem .55rem;border:none;background:none;cursor:pointer;font-size:.8125rem;border-radius:var(--radius-sm);color:var(--text-secondary);text-align:left}.housing-status-menu button:hover{background:var(--bg-secondary);color:var(--text-primary,inherit)}.housing-toast{position:fixed;top:1rem;right:1rem;z-index:9999;display:flex;align-items:center;gap:.85rem;padding:.75rem 1.25rem;border-radius:var(--radius);color:#fff;font-size:.875rem;box-shadow:0 4px 12px rgba(0,0,0,.15);animation:fadeInUp .3s ease}.housing-toast-action{border:1px solid hsla(0,0%,100%,.55);background:hsla(0,0%,100%,.12);color:#fff;padding:.25rem .75rem;border-radius:2rem;font-size:.8125rem;cursor:pointer;white-space:nowrap;transition:background .2s}.housing-toast-action:hover{background:hsla(0,0%,100%,.24)}.housing-confirm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:9996;display:flex;align-items:center;justify-content:center;padding:1rem;animation:housingFadeIn .18s ease}.housing-confirm-card{background:var(--bg-card);border-radius:var(--radius);max-width:400px;width:100%;padding:1.5rem;box-shadow:0 12px 40px rgba(0,0,0,.2);animation:fadeInUp .22s ease}.housing-page{max-width:1180px;margin:0 auto;padding:1.5rem 1.25rem 4rem}.housing-hero{position:relative;overflow:hidden;border-radius:18px;background:radial-gradient(ellipse 70% 60% at 100% 0,rgba(168,85,247,.35),transparent 60%),radial-gradient(ellipse 60% 60% at 0 100%,rgba(14,165,233,.25),transparent 60%),linear-gradient(135deg,#4f46e5,#6366f1 45%,#8b5cf6);color:#fff;padding:1.5rem 1.75rem;display:flex;align-items:center;gap:1.25rem;box-shadow:0 10px 32px rgba(99,102,241,.22);margin-bottom:1.25rem}.housing-hero:after{content:"";position:absolute;inset:0;background-image:linear-gradient(hsla(0,0%,100%,.05) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.05) 1px,transparent 0);background-size:32px 32px;mask-image:radial-gradient(ellipse 70% 70% at 30% 30%,#000 30%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 70% 70% at 30% 30%,#000 30%,transparent 100%);pointer-events:none}.housing-hero-content{position:relative;z-index:1;flex:1 1;min-width:0}.housing-hero-title{display:flex;align-items:center;gap:.7rem;font-size:1.5rem;font-weight:800;letter-spacing:-.01em;margin:0 0 .5rem}.housing-hero-icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:.75rem;background:hsla(0,0%,100%,.18);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:1.35rem;flex-shrink:0;border:1px solid hsla(0,0%,100%,.18)}.housing-hero-desc{color:hsla(0,0%,100%,.85);font-size:.9rem;display:flex;align-items:baseline;gap:.4rem;flex-wrap:wrap}.housing-hero-desc strong{color:#fff;font-size:1.6rem;font-weight:800;margin:0 .15rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.housing-hero-actions{position:relative;z-index:1;display:flex;gap:.5rem;flex-wrap:wrap;flex-shrink:0}.housing-hero-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem .95rem;border-radius:9999px;font-size:.8125rem;font-weight:600;border:1px solid hsla(0,0%,100%,.22);background:hsla(0,0%,100%,.08);color:#fff;cursor:pointer;transition:all .2s;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap}.housing-hero-btn:hover{background:hsla(0,0%,100%,.18);transform:translateY(-1px)}.housing-hero-btn.active{background:#fff;color:var(--primary,#6366f1);border-color:#fff}.housing-hero-btn-primary{background:#fff;color:#4f46e5;border-color:transparent;box-shadow:0 4px 14px rgba(0,0,0,.18);font-weight:700}.housing-hero-btn-primary:hover{background:#f8fafc;color:#4338ca}.housing-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:.75rem;gap:.75rem;margin-bottom:1.25rem}.housing-stat-card{position:relative;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:.95rem 1.1rem;cursor:pointer;transition:all .2s;overflow:hidden;text-align:left;font:inherit;color:inherit}.housing-stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--primary-border,var(--border))}.housing-stat-card.active{border-color:currentColor;background:linear-gradient(135deg,rgba(245,158,11,.06),rgba(239,68,68,.06));box-shadow:0 4px 14px rgba(245,158,11,.12)}.housing-stat-card-label{display:flex;align-items:center;gap:.4rem;font-size:.78rem;color:var(--text-secondary);margin-bottom:.4rem;font-weight:500}.housing-stat-card-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.housing-stat-card-value{font-size:1.6rem;font-weight:800;color:var(--text);line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.housing-stat-card-sub{font-size:.7rem;color:var(--text-muted);margin-top:.3rem}.housing-stat-card-bar{position:absolute;bottom:0;left:1.1rem;right:1.1rem;height:4px;background:currentColor;opacity:.12;border-radius:4px;overflow:hidden;transition:opacity .2s}.housing-stat-card.active .housing-stat-card-bar{opacity:.35}.housing-stat-card:hover .housing-stat-card-bar{opacity:.22}.housing-stat-card-bar:after{content:"";position:absolute;inset:0;width:var(--bar-ratio,0);background:currentColor;border-radius:4px;transition:width .5s ease}.housing-tools-panel{position:relative;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.25rem 1.25rem;margin-bottom:1.25rem;animation:housingFadeIn .2s ease;box-shadow:var(--shadow-sm)}.housing-tools-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.85rem;flex-wrap:wrap}.housing-tools-title{font-size:1rem;font-weight:700;color:var(--text);display:flex;align-items:center;gap:.4rem}.housing-tools-subtitle{font-size:.75rem;color:var(--text-muted);margin-top:.2rem}.housing-tools-actions{display:flex;gap:.5rem;align-items:center}.housing-tools-close{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:.85rem;transition:all .2s;flex-shrink:0}.housing-tools-close:hover{background:var(--bg-secondary);color:var(--text);border-color:var(--text-muted)}.housing-tools-upload{background:var(--bg-secondary);border-radius:var(--radius-sm);padding:.85rem 1rem;display:flex;flex-direction:column;gap:.6rem;margin-bottom:.85rem}.housing-tools-upload-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.housing-tools-input{flex:1 1;min-width:180px;padding:.5rem .85rem;background:var(--bg-card);border:1px solid var(--border);border-radius:9999px;font-size:.8125rem;color:var(--text);transition:all .2s}.housing-tools-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.housing-tools-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:.65rem;gap:.65rem}.housing-tools-card-wrap{position:relative}.housing-tools-card{display:flex;align-items:center;gap:.7rem;padding:.7rem .9rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);text-decoration:none;color:inherit;cursor:pointer;transition:all .2s}.housing-tools-card:hover{border-color:var(--primary);background:var(--bg-card);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.housing-tools-card-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:.5rem;font-size:1.15rem;background:linear-gradient(135deg,var(--primary-light),var(--accent-light));flex-shrink:0}.housing-tools-card-text{min-width:0;flex:1 1}.housing-tools-card-title{font-size:.85rem;font-weight:600;color:var(--text)}.housing-tools-card-desc,.housing-tools-card-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.housing-tools-card-desc{font-size:.72rem;color:var(--text-secondary);margin-top:.15rem}.housing-tools-card-delete{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:#ef4444;color:#fff;border:2px solid var(--bg-card);cursor:pointer;font-size:.65rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,.15);transition:transform .15s}.housing-tools-card-delete:hover{transform:scale(1.1)}.housing-tools-empty{padding:1.75rem 1rem;text-align:center;color:var(--text-muted);font-size:.875rem;background:var(--bg-secondary);border-radius:var(--radius-sm);border:1px dashed var(--border)}[data-theme=dark] .housing-tools-card-icon{background:linear-gradient(135deg,rgba(99,102,241,.2),rgba(139,92,246,.2))}[data-theme=dark] .housing-tools-card{background:hsla(0,0%,100%,.02)}.housing-toolbar{display:flex;flex-direction:column;gap:.85rem;padding:1rem 1.1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.25rem}.housing-toolbar-row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.housing-search{flex:1 1;min-width:220px;position:relative}.housing-search-icon{position:absolute;left:.95rem;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none;font-size:.95rem;line-height:1}.housing-search input{width:100%;padding:.6rem .95rem .6rem 2.35rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:9999px;color:var(--text);font-size:.875rem;transition:all .2s}.housing-search input::placeholder{color:var(--text-muted)}.housing-search input:focus{outline:none;background:var(--bg-card);border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.housing-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .95rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:9999px;font-size:.8125rem;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .2s;white-space:nowrap}.housing-pill:hover{background:var(--bg-card);color:var(--text);border-color:var(--primary-border,var(--border))}.housing-pill.active{background:var(--primary);color:#fff;border-color:var(--primary)}.housing-pill .pill-badge{background:hsla(0,0%,100%,.25);padding:.05rem .5rem;border-radius:9999px;font-size:.7rem;font-weight:700;min-width:1.25rem;text-align:center}.housing-pill:not(.active) .pill-badge{background:var(--bg-card);color:var(--text-muted);border:1px solid var(--border)}.housing-pill .pill-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.housing-select{padding:.5rem 2rem .5rem .95rem;background:var(--bg-secondary) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>") no-repeat right .85rem center;border:1px solid var(--border);border-radius:9999px;font-size:.8125rem;color:var(--text-secondary);cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;transition:all .2s;min-width:140px}.housing-select:hover{background-color:var(--bg-card);color:var(--text)}.housing-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.housing-view-toggle{display:inline-flex;padding:.22rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:9999px}.housing-view-toggle button{padding:.42rem .95rem;font-size:.8125rem;font-weight:500;color:var(--text-secondary);background:transparent;border:none;border-radius:9999px;cursor:pointer;transition:all .18s;display:inline-flex;align-items:center;gap:.3rem}.housing-view-toggle button:hover{color:var(--text)}.housing-view-toggle button.active{background:var(--bg-card);color:var(--primary);box-shadow:var(--shadow-sm)}.housing-card{position:relative;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:all .22s}.housing-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--primary-border,var(--border))}.housing-card.excluded{opacity:.65}.housing-card-cover{position:relative;width:100%;aspect-ratio:16/10;background:radial-gradient(ellipse 60% 60% at 100% 0,rgba(168,85,247,.35),transparent 60%),linear-gradient(135deg,#4f46e5,#6366f1 50%,#8b5cf6);overflow:hidden}.housing-card-cover img{width:100%;height:100%;object-fit:cover;transition:transform .35s;cursor:zoom-in}.housing-card:hover .housing-card-cover img{transform:scale(1.06)}.housing-card-cover-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;color:hsla(0,0%,100%,.95);font-size:1.4rem;font-weight:800;letter-spacing:-.01em;text-shadow:0 2px 10px rgba(0,0,0,.25);padding:1rem;line-height:1.25}.housing-card-cover-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.3),transparent 30%,transparent 65%,rgba(0,0,0,.5));pointer-events:none}.housing-card-badge{position:absolute;top:.7rem;left:.7rem;z-index:2;pointer-events:auto}.housing-card-compare{position:absolute;top:.7rem;right:.7rem;z-index:2;display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .65rem;background:hsla(0,0%,100%,.95);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:9999px;font-size:.72rem;color:var(--text);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:1px solid hsla(0,0%,100%,.4);transition:all .2s}.housing-card-compare:hover{background:#fff}.housing-card-compare.active{background:var(--primary);color:#fff;border-color:var(--primary)}.housing-card-compare input{margin:0;cursor:pointer;accent-color:currentColor}.housing-card-meta-pill{position:absolute;z-index:2;display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .6rem;border-radius:9999px;font-size:.7rem;font-weight:500;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:zoom-in}.housing-card-meta-pill.bottom-right{bottom:.7rem;right:.7rem;background:rgba(0,0,0,.55);color:#fff;cursor:default}.housing-card-meta-pill.bottom-left{bottom:.7rem;left:.7rem;background:hsla(0,0%,100%,.95);color:var(--text)}.housing-card-body{padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.55rem;flex:1 1}.housing-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.6rem}.housing-card-name{font-size:1.0625rem;font-weight:700;color:var(--text);line-height:1.3;margin:0;flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.housing-card-rating{color:#f59e0b;font-size:.85rem;letter-spacing:1px;white-space:nowrap;flex-shrink:0}.housing-card-price{display:flex;align-items:baseline;gap:.45rem;flex-wrap:wrap}.housing-card-price-main{font-size:1.5rem;font-weight:800;color:#ef4444;letter-spacing:-.01em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.housing-card-price-unit{font-size:.78rem;color:var(--text-secondary);font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.housing-card-features{display:flex;flex-wrap:wrap;gap:.35rem .75rem;font-size:.8rem;color:var(--text-secondary)}.housing-card-feature{display:inline-flex;align-items:center;gap:.2rem}.housing-card-tags{display:flex;flex-wrap:wrap;gap:.3rem;min-height:1.5rem}.housing-card-tag{display:inline-block;padding:.12rem .55rem;border-radius:9999px;font-size:.7rem;font-weight:500;white-space:nowrap}.housing-card-tag.pros{background:rgba(16,185,129,.12);color:#10b981}.housing-card-tag.cons{background:rgba(239,68,68,.12);color:#ef4444}.housing-card-tag.more{background:var(--bg-secondary);color:var(--text-muted);border:1px dashed var(--border)}.housing-card-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding-top:.7rem;margin-top:auto;border-top:1px solid var(--border-light);font-size:.72rem;color:var(--text-muted)}.housing-card-footer-item{display:inline-flex;align-items:center;gap:.25rem;min-width:0}.housing-card-footer-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.housing-card-actions{display:flex;gap:.45rem;padding:0 1.1rem 1rem}.housing-card-action{flex:1 1;padding:.5rem 0;font-size:.78rem;font-weight:600;background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all .18s;display:inline-flex;align-items:center;justify-content:center;gap:.25rem}.housing-card-action:hover{background:var(--bg-card);color:var(--text);border-color:var(--primary)}.housing-card-action.danger{color:#ef4444}.housing-card-action.danger:hover{background:#ef4444;color:#fff;border-color:#ef4444}.housing-empty{text-align:center;padding:3.5rem 1.5rem;background:var(--bg-card);border:2px dashed var(--border);border-radius:var(--radius);color:var(--text-secondary)}.housing-empty-illust{display:inline-flex;align-items:center;justify-content:center;width:88px;height:88px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;font-size:2.5rem;margin-bottom:1.1rem;box-shadow:0 10px 24px rgba(99,102,241,.25);animation:housingFloat 4s ease-in-out infinite}@keyframes housingFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.housing-empty-title{font-size:1.125rem;font-weight:700;color:var(--text);margin:0 0 .5rem}.housing-empty-desc{font-size:.875rem;color:var(--text-secondary);margin:0 auto 1.5rem;max-width:380px;line-height:1.65}.housing-empty-action{display:inline-flex;align-items:center;gap:.45rem;padding:.65rem 1.4rem;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border:none;border-radius:9999px;font-size:.9rem;font-weight:600;cursor:pointer;box-shadow:0 6px 18px rgba(99,102,241,.3);transition:transform .18s,box-shadow .18s}.housing-empty-action:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(99,102,241,.4)}@media (max-width:768px){.housing-page{padding:1rem .85rem 3rem}.housing-hero{flex-direction:column;align-items:stretch;padding:1.25rem 1.1rem;gap:1rem}.housing-hero-title{font-size:1.25rem}.housing-hero-desc strong{font-size:1.4rem}.housing-hero-actions{width:100%}.housing-hero-btn{flex:1 1;justify-content:center;padding:.5rem .6rem;font-size:.75rem}.housing-stats-grid{grid-template-columns:repeat(2,1fr);gap:.5rem}.housing-stat-card{padding:.8rem .9rem}.housing-stat-card-value{font-size:1.35rem}.housing-toolbar{padding:.85rem}.housing-card-name{font-size:1rem}.housing-card-price-main{font-size:1.3rem}.housing-card-actions{padding:0 .85rem .85rem}.housing-card-action{padding:.45rem 0;font-size:.75rem}}[data-theme=dark] .housing-hero{box-shadow:0 10px 32px rgba(239,68,68,.18)}[data-theme=dark] .housing-card{background:var(--bg-card)}[data-theme=dark] .housing-card-meta-pill.bottom-left{background:rgba(30,41,59,.95);color:var(--text)}[data-theme=dark] .housing-pill,[data-theme=dark] .housing-search input,[data-theme=dark] .housing-select{background:var(--bg-secondary);color:var(--text)}[data-theme=dark] .housing-pill:hover{background:var(--bg-card)}[data-theme=dark] .housing-pill:not(.active) .pill-badge{background:var(--bg-secondary);color:var(--text-secondary)}.donate-bar{margin-top:2rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);overflow:hidden}.donate-toggle{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.875rem 1rem;background:none;border:none;cursor:pointer;font-size:.9375rem;color:var(--text-secondary);transition:color var(--transition)}.donate-toggle:hover{color:var(--primary)}.donate-arrow{font-size:.75rem;transition:transform .2s}.donate-arrow.open{transform:rotate(180deg)}.donate-qrcodes{display:flex;justify-content:center;gap:2rem;padding:1rem 1rem 1.5rem;border-top:1px solid var(--border-light)}.donate-qr-item{display:flex;flex-direction:column;align-items:center;gap:.5rem}.donate-qr-img{width:160px;height:160px;object-fit:contain;border-radius:var(--radius);border:1px solid var(--border);background:#fff}.donate-qr-label{font-size:.8125rem;color:var(--text-secondary)}@media (max-width:480px){.donate-qrcodes{gap:1rem}.donate-qr-img{width:130px;height:130px}}.like-favorite-bar{display:flex;justify-content:center;gap:1.5rem;padding:1.5rem 0;margin:2rem 0;border-top:1px solid var(--border-light);border-bottom:1px solid var(--border-light)}.interaction-btn{display:flex;align-items:center;gap:.5rem;padding:.625rem 1.5rem;border:1px solid var(--border);border-radius:2rem;background:var(--bg-card);cursor:pointer;transition:all var(--transition);font-size:.9375rem;color:var(--text-secondary)}.interaction-btn:hover{transform:translateY(-1px)}.interaction-btn.active,.interaction-btn:hover{border-color:var(--primary);background:var(--primary-light);color:var(--primary)}.like-btn.active{border-color:#ef4444;background:#fef2f2;color:#ef4444}[data-theme=dark] .like-btn.active{background:rgba(239,68,68,.1)}.favorite-btn.active{border-color:#f59e0b;background:#fffbeb;color:#f59e0b}[data-theme=dark] .favorite-btn.active{background:rgba(245,158,11,.1)}.interaction-icon{font-size:1.125rem}.interaction-count{font-weight:600}.interaction-label{font-size:.8125rem}.interaction-btn:disabled{opacity:.6;cursor:not-allowed}@media (max-width:480px){.like-favorite-bar{gap:.75rem}.interaction-btn{padding:.5rem 1rem;font-size:.8125rem}.interaction-label{display:none}}.share-buttons{display:flex;align-items:center;gap:.5rem;margin-top:.75rem}.share-label{font-size:.8125rem;color:var(--text-muted)}.share-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.share-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.share-btn-weibo:hover{border-color:#e6162d;color:#e6162d;background:#fef2f2}.share-btn-wechat:hover{border-color:#07c160;color:#07c160;background:#f0fff4}.share-btn-copy:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}.share-btn-copy svg{color:inherit}[data-theme=dark] .share-btn-weibo:hover{background:rgba(230,22,45,.1)}[data-theme=dark] .share-btn-wechat:hover{background:rgba(7,193,96,.1)}.share-wechat-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:1000;animation:shareFadeIn .2s ease}.share-wechat-modal{background:var(--bg-card);border-radius:var(--radius-lg);padding:1.5rem;text-align:center;max-width:320px;width:calc(100vw - 2rem);box-shadow:var(--shadow-xl);animation:shareScaleIn .25s ease}.share-wechat-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;font-size:.9375rem;font-weight:600;color:var(--text)}.share-wechat-close{border:none;background:none;font-size:1.25rem;color:var(--text-muted);cursor:pointer;padding:.25rem;line-height:1;border-radius:4px;transition:color .2s}.share-wechat-close:hover{color:var(--text)}.share-wechat-qrcode{width:200px;height:200px;border-radius:var(--radius);border:1px solid var(--border);background:#fff}.share-wechat-tip{margin-top:.75rem;font-size:.8125rem;color:var(--text-muted);line-height:1.5}@keyframes shareFadeIn{0%{opacity:0}to{opacity:1}}@keyframes shareScaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.loading{padding:3rem}.loading,.loading-spinner{text-align:center;color:var(--text-muted)}.loading-spinner{padding:4rem 2rem}.spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 1rem}@keyframes spin{to{transform:rotate(1turn)}}.empty{text-align:center;padding:3rem;color:var(--text-muted)}.empty-state{text-align:center;padding:4rem 2rem;background:var(--bg-card);border-radius:var(--radius);border:1px dashed var(--border);background-image:radial-gradient(circle at 50% 0,rgba(99,102,241,.04) 0,transparent 60%)}.empty-icon{font-size:3.5rem;margin-bottom:1rem;animation:float 3s ease-in-out infinite;filter:grayscale(.3)}.auth-page{display:flex;min-height:calc(100vh - 64px);margin-top:0}.auth-decoration{flex:1 1;background:var(--gradient-hero);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;min-width:0}.auth-decoration:before{content:"";position:absolute;inset:0;background:var(--gradient-hero-mesh)}.auth-deco-content{position:relative;z-index:1;text-align:center;padding:2.5rem;max-width:380px}.auth-deco-emoji{font-size:4rem;margin-bottom:1.25rem;animation:float 3s ease-in-out infinite;filter:drop-shadow(0 4px 8px rgba(0,0,0,.2))}.auth-deco-title{font-size:2.25rem;font-weight:800;color:#fff;margin-bottom:.75rem;text-shadow:0 2px 10px rgba(0,0,0,.15)}.auth-deco-desc{color:hsla(0,0%,100%,.8);font-size:1.0625rem;line-height:1.8;margin-bottom:2.5rem}.auth-deco-features{display:flex;flex-direction:column;gap:.625rem;align-items:center}.auth-deco-feature{background:hsla(0,0%,100%,.12);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:.5rem 1.5rem;border-radius:9999px;color:hsla(0,0%,100%,.95);font-size:.875rem;font-weight:500;border:1px solid hsla(0,0%,100%,.15);transition:all .3s}.auth-deco-feature:hover{background:hsla(0,0%,100%,.2);transform:translateY(-1px)}.auth-deco-circles{position:absolute;inset:0;pointer-events:none}.auth-deco-circle{position:absolute;border-radius:50%;background:hsla(0,0%,100%,.06)}.auth-deco-circle-1{width:300px;height:300px;top:-80px;right:-60px;animation:pulse-slow 6s ease-in-out infinite}.auth-deco-circle-2{width:200px;height:200px;bottom:-40px;left:-40px;animation:pulse-slow 8s ease-in-out 1s infinite}.auth-deco-circle-3{width:120px;height:120px;top:40%;left:20%;animation:pulse-slow 5s ease-in-out 2s infinite}.auth-form-section{flex:1 1;display:flex;align-items:center;justify-content:center;padding:2.5rem;background:var(--bg);min-width:0}.auth-card{background:var(--bg-card);border-radius:16px;border:1px solid var(--border);padding:2.5rem;width:100%;max-width:400px;box-shadow:var(--shadow-md)}.auth-card h2{font-size:1.625rem;font-weight:700;text-align:center;margin-bottom:.25rem;color:var(--text)}.auth-subtitle{color:var(--text-muted);margin-bottom:1.75rem}.auth-footer,.auth-subtitle{text-align:center;font-size:.875rem}.auth-footer{margin-top:1rem;color:var(--text-secondary)}.auth-footer a{color:var(--primary);font-weight:500}.auth-footer a:hover{text-decoration:underline}.password-input-wrapper{position:relative;display:flex;align-items:center}.password-input-wrapper .form-input{padding-right:2.75rem}.password-toggle-btn{position:absolute;right:.75rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--text-muted);padding:.25rem;display:flex;align-items:center;justify-content:center;transition:color .2s;border-radius:4px}.password-toggle-btn:hover{color:var(--text)}.code-input-wrapper{display:flex;gap:.75rem;align-items:center}.code-input-wrapper .form-input{flex:1 1}.btn-send-code{flex-shrink:0;padding:.75rem 1rem;border:1.5px solid var(--primary);border-radius:10px;background:transparent;color:var(--primary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .25s;white-space:nowrap;min-width:100px;text-align:center}.btn-send-code:hover:not(:disabled){background:var(--primary);color:#fff}.btn-send-code:disabled{opacity:.5;cursor:not-allowed;border-color:var(--border);color:var(--text-muted)}.auth-forgot-link{float:right;font-size:.813rem;font-weight:400;color:var(--primary);cursor:pointer;transition:opacity .2s}.auth-forgot-link:hover{opacity:.8;text-decoration:underline}.success-msg{background:rgba(34,197,94,.08);border:1px solid rgba(34,197,94,.2);color:#16a34a;padding:.625rem 1rem;border-radius:8px;font-size:.875rem;margin-bottom:1rem;text-align:center}.password-strength{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.password-strength-bars{display:flex;gap:4px;flex:1 1}.password-strength-bar{height:4px;flex:1 1;border-radius:2px;background:var(--border);transition:background .3s}.password-strength-label{font-size:.75rem;font-weight:500;min-width:1.5rem;text-align:right}.form-hint{font-size:.75rem;margin-top:.375rem;line-height:1.4}.form-hint-error{color:var(--danger,#e53e3e)}.oauth-divider{display:flex;align-items:center;margin:1.5rem 0;gap:1rem}.oauth-divider:after,.oauth-divider:before{content:"";flex:1 1;height:1px;background:var(--border)}.oauth-divider span{font-size:.813rem;color:var(--text-muted);white-space:nowrap}.btn-oauth{display:flex;align-items:center;justify-content:center;gap:.625rem;width:100%;padding:.625rem 1rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.938rem;font-weight:500;cursor:pointer;transition:all .2s;background:var(--bg);color:var(--text)}.btn-oauth+.btn-oauth{margin-top:.625rem}.btn-oauth:hover{border-color:var(--text-muted);background:var(--bg-hover)}.btn-oauth:disabled{opacity:.6;cursor:not-allowed}.btn-github{background:#24292e;color:#fff;border-color:#24292e}.btn-github:hover{background:#2f363d;border-color:#2f363d}.btn-google{background:#fff;color:#3c4043;border-color:#dadce0}.btn-google:hover{background:#f8f9fa;border-color:#d2d3d7;box-shadow:0 1px 3px rgba(60,64,67,.15)}[data-theme=dark] .btn-google{background:#303134;color:#e8eaed;border-color:#5f6368}[data-theme=dark] .btn-google:hover{background:#3c4043;border-color:#8ab4f8}.oauth-icon{flex-shrink:0}.markdown-body{font-size:1rem;line-height:1.8;color:var(--text);word-wrap:break-word}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:1.5em;margin-bottom:.75em;font-weight:600;line-height:1.3}.markdown-body h1{font-size:1.75rem}.markdown-body h1,.markdown-body h2{border-bottom:1px solid var(--border-light);padding-bottom:.3em}.markdown-body h2{font-size:1.5rem}.markdown-body h3{font-size:1.25rem}.markdown-body h4{font-size:1.125rem}.markdown-body p{margin-bottom:1em}.markdown-body a{color:var(--primary);text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body blockquote{border-left:4px solid var(--primary);padding:.5rem 1rem;margin:1em 0;color:var(--text-secondary);background:var(--bg-secondary);border-radius:0 var(--radius) var(--radius) 0}.markdown-body blockquote p:last-child{margin-bottom:0}.markdown-body ol,.markdown-body ul{padding-left:1.5rem;margin-bottom:1em}.markdown-body li{margin-bottom:.25em}.markdown-body li>ol,.markdown-body li>ul{margin-bottom:0}.markdown-body code:not(.hljs){background:var(--bg-secondary);padding:.15rem .4rem;border-radius:4px;font-size:.875em;font-family:Menlo,Monaco,Courier New,monospace;color:#e11d48}.markdown-body .code-block-wrapper{position:relative;margin-bottom:1em;border-radius:var(--radius);border:1px solid var(--border)}.code-block-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#151b28;border-bottom:1px solid hsla(0,0%,100%,.06);font-size:.75rem;border-radius:calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0}.code-block-lang{color:hsla(0,0%,100%,.5);text-transform:uppercase;font-weight:600;letter-spacing:.05em}.code-copy-btn{background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.6);padding:.2rem .6rem;border-radius:6px;font-size:.7rem;cursor:pointer;transition:all .2s}.code-copy-btn:hover{background:hsla(0,0%,100%,.15);color:hsla(0,0%,100%,.9)}.code-copy-btn.copied{background:rgba(34,197,94,.15);border-color:rgba(34,197,94,.3);color:#22c55e}.code-block-actions{display:flex;align-items:center;gap:.5rem}.markdown-body pre{background:transparent;color:inherit;padding:0;border-radius:0 0 calc(var(--radius) - 1px) calc(var(--radius) - 1px);overflow-x:auto;margin-bottom:0;font-size:.875rem;line-height:1.6}.markdown-body .code-block-wrapper+*{margin-top:1em}.markdown-body pre code{font-family:Menlo,Monaco,Courier New,monospace;font-size:inherit}.markdown-body hr{border:none;border-top:1px solid var(--border);margin:2em 0}.markdown-body table{width:100%;border-collapse:collapse;margin-bottom:1em}.markdown-body table td,.markdown-body table th{border:1px solid var(--border);padding:.5rem .75rem;text-align:left}.markdown-body table th{font-weight:600}.markdown-body table th,.markdown-body table tr:nth-child(2n){background:var(--bg-secondary)}.markdown-body img{max-width:100%;max-height:600px;border-radius:var(--radius);margin:1em auto;display:block;box-shadow:0 2px 12px rgba(0,0,0,.08);object-fit:contain}.markdown-body input[type=checkbox]{margin-right:.5em}.mermaid-container{display:block;margin:1.5em 0;padding:2rem 1.5rem;background:linear-gradient(135deg,var(--bg-card) 0,var(--bg-secondary) 100%);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;position:relative;text-align:center;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition),border-color var(--transition)}.mermaid-container:hover{box-shadow:var(--shadow);border-color:var(--primary-border)}.mermaid-container svg{display:inline-block;height:auto;max-width:100%}.mermaid-container svg text{font-family:system-ui,-apple-system,sans-serif!important}.mermaid-container svg .titleText{font-size:16px!important;font-weight:600!important}[data-theme=dark] .mermaid-container{background:linear-gradient(135deg,#1e293b,#0f172a);border-color:#334155}[data-theme=dark] .mermaid-container:hover{border-color:#6366f1;box-shadow:0 0 20px rgba(99,102,241,.1)}.mermaid-error{margin:1.5em 0;padding:1rem;background:rgba(239,68,68,.05);border:1px solid rgba(239,68,68,.2);border-radius:var(--radius);color:var(--text-secondary)}.mermaid-error p{margin:0 0 .5em;font-weight:600;color:#ef4444}.mermaid-error pre{margin:0;padding:.75rem;background:var(--bg-secondary);border-radius:var(--radius-sm);font-size:.85rem;overflow-x:auto}.image-lightbox{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.85);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:zoom-out;animation:lightbox-fade-in .2s ease}@keyframes lightbox-fade-in{0%{opacity:0}to{opacity:1}}.image-lightbox-close{position:absolute;top:1rem;right:1.5rem;font-size:1.5rem;color:#fff;cursor:pointer;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;background:hsla(0,0%,100%,.1);transition:background .2s;z-index:10000}.image-lightbox-close:hover{background:hsla(0,0%,100%,.25)}.image-lightbox-img{max-width:90vw;max-height:90vh;object-fit:contain;border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.3);cursor:default;animation:lightbox-img-in .25s ease}@keyframes lightbox-img-in{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.svg-viewer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.9);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:lightbox-fade-in .2s ease;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.svg-viewer-toolbar{position:absolute;top:1rem;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:rgba(30,30,30,.85);border-radius:2rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid hsla(0,0%,100%,.1);z-index:10001}.svg-viewer-btn{background:hsla(0,0%,100%,.1);border:none;color:#fff;padding:.4rem .75rem;border-radius:.5rem;cursor:pointer;font-size:.85rem;transition:background .2s;white-space:nowrap}.svg-viewer-btn:hover{background:hsla(0,0%,100%,.25)}.svg-viewer-close{margin-left:.5rem;font-size:1.1rem;padding:.3rem .6rem}.svg-viewer-scale{color:hsla(0,0%,100%,.8);font-size:.85rem;min-width:3rem;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.svg-viewer-content{transform-origin:center center;transition:none;will-change:transform;background:#fff;border-radius:16px;padding:2.5rem;box-shadow:0 12px 60px rgba(0,0,0,.5)}[data-theme=dark] .svg-viewer-content{background:#fff;box-shadow:0 12px 60px rgba(0,0,0,.7)}.svg-viewer-content svg{display:block;max-width:none!important;max-height:none!important;shape-rendering:geometricPrecision;text-rendering:optimizeLegibility;image-rendering:optimizeQuality}.svg-viewer-hint{position:absolute;bottom:1.5rem;left:50%;transform:translateX(-50%);color:hsla(0,0%,100%,.4);font-size:.8rem;pointer-events:none;z-index:10001}.confirm-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:2000;animation:confirmFadeIn .2s ease}.confirm-modal-dialog{background:var(--bg-card);border-radius:1rem;max-width:400px;width:90%;border:1px solid var(--border);box-shadow:0 25px 60px rgba(0,0,0,.25);overflow:hidden;animation:confirmSlideUp .25s ease}.confirm-modal-accent{height:4px}.confirm-modal-body{padding:1.75rem 1.75rem 1.25rem;display:flex;flex-direction:column;align-items:center;gap:.875rem}.confirm-modal-icon{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center}.confirm-modal-title{margin:0;font-size:1.125rem;font-weight:600;text-align:center;color:var(--text)}.confirm-modal-desc{margin:0;font-size:.875rem;color:var(--text-muted);text-align:center;line-height:1.5}.confirm-modal-footer{display:flex;gap:.75rem;padding:0 1.75rem 1.5rem;justify-content:flex-end}@keyframes confirmFadeIn{0%{opacity:0}to{opacity:1}}@keyframes confirmSlideUp{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.navbar{background:hsla(0,0%,100%,.72);border-bottom:1px solid rgba(226,232,240,.4);position:-webkit-sticky;position:sticky;top:0;z-index:100;transition:all var(--transition)}.navbar,[data-theme=dark] .navbar{backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%)}[data-theme=dark] .navbar{background:rgba(15,23,42,.75);border-bottom-color:rgba(99,102,241,.1)}.navbar-scrolled{background:hsla(0,0%,100%,.95);box-shadow:0 1px 8px rgba(0,0,0,.06)}[data-theme=dark] .navbar-scrolled{background:rgba(15,23,42,.95);box-shadow:0 1px 8px rgba(0,0,0,.3)}.navbar-inner{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem;height:64px;justify-content:space-between}.navbar-brand,.navbar-inner{display:flex;align-items:center}.navbar-brand{font-size:1.25rem;font-weight:700;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;gap:.75rem;transition:transform var(--transition),filter var(--transition)}.navbar-brand:hover{transform:scale(1.05);filter:brightness(1.2)}.navbar-brand-avatar{width:22px;height:22px;border-radius:6px;object-fit:cover;box-shadow:0 0 0 1.5px rgba(99,102,241,.2);transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s ease,border-radius .3s ease;flex-shrink:0;opacity:.9}.navbar-brand:hover .navbar-brand-avatar{box-shadow:0 0 0 2px rgba(99,102,241,.3),0 2px 8px rgba(99,102,241,.2);opacity:1;border-radius:50%}.navbar-logo{font-size:1.5rem}.navbar-links{display:flex;align-items:center;gap:1.5rem}.navbar-link,.navbar-links a{color:var(--text-secondary);font-size:.938rem;font-weight:500;transition:color var(--transition);position:relative}.navbar-link:hover,.navbar-links a:hover{color:var(--primary)}.navbar-link:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:2px;background:var(--gradient-primary);border-radius:1px;transition:width .3s cubic-bezier(.4,0,.2,1)}.navbar-link:hover:after{width:100%}.navbar-user{display:flex;align-items:center;gap:.5rem}.navbar-user-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--primary),#8b5cf6);display:flex;align-items:center;justify-content:center;color:#fff;font-size:.75rem;font-weight:600}.navbar-user-avatar-img{width:28px;height:28px;border-radius:50%;object-fit:cover;border:2px solid var(--border)}.navbar-user-name{color:var(--text-secondary);font-size:.875rem}.navbar-user-wrapper{position:relative}.avatar-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:160px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:.375rem;z-index:1000;animation:fadeInDown .15s ease}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes friendDropFadeIn{0%{opacity:0;transform:translateX(-50%) translateY(-4px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.avatar-dropdown-header{padding:.5rem .75rem}.avatar-dropdown-header-name{font-size:.875rem;font-weight:600;color:var(--text)}.avatar-dropdown-header-email,.avatar-dropdown-header-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.avatar-dropdown-header-email{font-size:.75rem;color:var(--text-secondary);margin-top:.125rem}.avatar-dropdown-divider{height:1px;background:var(--border);margin:.375rem .25rem}.avatar-dropdown-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;border:none;background:none;color:var(--text);font-size:.813rem;cursor:pointer;border-radius:6px;transition:background .15s;text-align:left}.avatar-dropdown-item:hover{background:var(--bg-secondary)}.avatar-dropdown-item:disabled{opacity:.6;cursor:not-allowed}.avatar-dropdown-danger{color:var(--danger)}.avatar-dropdown-danger:hover{background:#fef2f2}[data-theme=dark] .avatar-dropdown-danger:hover{background:rgba(239,68,68,.1)}.profile-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn .15s ease;padding:1rem}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.profile-modal{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);width:100%;max-width:400px;animation:modalSlideUp .2s ease}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.profile-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border)}.profile-modal-header h3{font-size:1.063rem;font-weight:600;margin:0;color:var(--text)}.profile-modal-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--text-muted);font-size:1rem;cursor:pointer;border-radius:6px;transition:all .15s}.profile-modal-close:hover{background:var(--bg-secondary);color:var(--text)}.profile-modal-body{padding:1.25rem 1.5rem}.profile-modal-body .form-group{margin-bottom:1rem}.profile-modal-body .form-group:last-of-type{margin-bottom:.5rem}.profile-modal-error{color:var(--danger,#e53e3e);font-size:.813rem;margin-top:.5rem;padding:.5rem .75rem;background:#fef2f2;border-radius:8px}[data-theme=dark] .profile-modal-error{background:rgba(239,68,68,.1)}.profile-modal-success{color:#16a34a;font-size:.813rem;margin-top:.5rem;padding:.5rem .75rem;background:#f0fdf4;border-radius:8px}[data-theme=dark] .profile-modal-success{background:rgba(22,163,74,.1)}.profile-modal-footer{display:flex;justify-content:flex-end;gap:.625rem;padding:1rem 1.5rem;border-top:1px solid var(--border)}.mobile-menu-avatar-wrapper{position:relative;cursor:pointer;flex-shrink:0}.mobile-avatar-edit-badge{position:absolute;bottom:-2px;right:-2px;font-size:.625rem;background:var(--bg-card);border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);box-shadow:var(--shadow-sm)}.footer{padding:0;color:var(--text-muted);font-size:.875rem;border-top:none;margin-top:auto;background:var(--bg);position:relative}.footer:before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:200px;height:1px;background:var(--gradient-primary);opacity:.5}.footer-inner{max-width:var(--max-width);margin:0 auto;padding:2rem 1.5rem;border-top:1px solid var(--border-light);text-align:center}.footer-copyright{color:var(--text-muted);font-size:.8125rem}.footer-tech{font-weight:600;color:var(--text-secondary)}.rss-link{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;background:#f97316;color:#fff;border-radius:var(--radius-sm);font-size:.75rem;font-weight:500;transition:all var(--transition)}.rss-link:hover{background:#ea580c;color:#fff;transform:translateY(-1px)}.navbar-friend-links{position:relative}.navbar-friend-trigger{display:inline-flex;align-items:center;gap:.3rem;background:none;border:none;cursor:pointer;font-family:inherit;padding:0}.navbar-friend-arrow{transition:transform .25s ease}.navbar-friend-arrow.open{transform:rotate(180deg)}.friend-dropdown{position:absolute;top:calc(100% + 10px);left:50%;transform:translateX(-50%);min-width:160px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:.375rem;z-index:1000;animation:friendDropFadeIn .15s ease}.friend-dropdown-item{display:flex;align-items:center;gap:.625rem;width:100%;padding:.5rem .75rem;border:none;background:none;color:var(--text);font-size:.875rem;cursor:pointer;border-radius:6px;transition:background .15s,color .15s;text-align:left;text-decoration:none}.friend-dropdown-item:hover{background:var(--bg-secondary);color:var(--primary)}.friend-dropdown-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.mobile-menu-section-label{font-size:.7rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding:.5rem 0 .25rem}.navbar-hamburger{display:none;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:none;cursor:pointer;padding:0;z-index:201;position:relative}.hamburger-line{position:relative}.hamburger-line,.hamburger-line:after,.hamburger-line:before{display:block;width:22px;height:2px;background:var(--text);border-radius:2px;transition:all .3s ease}.hamburger-line:after,.hamburger-line:before{content:"";position:absolute;left:0}.hamburger-line:before{top:-7px}.hamburger-line:after{top:7px}.navbar-hamburger.active .hamburger-line{background:transparent}.navbar-hamburger.active .hamburger-line:before{top:0;transform:rotate(45deg)}.navbar-hamburger.active .hamburger-line:after{top:0;transform:rotate(-45deg)}.mobile-menu-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:199;opacity:0;transition:opacity .3s ease}.mobile-menu-overlay.active{opacity:1}.mobile-menu{display:none;position:fixed;top:0;right:-300px;width:300px;height:100vh;background:var(--bg);z-index:200;padding:80px 1.5rem 2rem;transition:right .3s ease;box-shadow:-4px 0 20px rgba(0,0,0,.1);overflow-y:auto}.mobile-menu.active{right:0}.mobile-menu-links{display:flex;flex-direction:column;gap:.25rem}.mobile-menu-link{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:1rem;font-weight:500;transition:all var(--transition)}.mobile-menu-link.active,.mobile-menu-link:hover{background:var(--primary-light);color:var(--primary)}.mobile-menu-divider{height:1px;background:var(--border-light);margin:.75rem 0}.mobile-menu-user{display:flex;align-items:center;gap:.75rem;padding:1rem;background:var(--bg-secondary);border-radius:var(--radius);margin-bottom:1rem}.mobile-menu-user-name{font-weight:600;color:var(--text);font-size:.9375rem}.mobile-menu-user-role{font-size:.75rem;color:var(--text-muted)}.navbar-link.active{color:var(--primary)}.navbar-link.active:after{width:100%}.navbar-mobile-actions{display:none;align-items:center;gap:.5rem}@media (max-width:768px){.navbar-hamburger{display:flex}.navbar-links{display:none}.navbar-mobile-actions{display:flex}.mobile-menu-overlay{display:block;pointer-events:none}.mobile-menu-overlay.active{pointer-events:auto}.mobile-menu{display:block}.navbar-inner{padding:0 1rem}}@media (max-width:1024px) and (min-width:769px){.home-layout{grid-template-columns:1fr 280px}}@media (max-width:480px){.container{padding:1.5rem 1rem}.hero-title{font-size:1.25rem}.hero-desc{font-size:.9375rem}.hero-inner{padding:1.5rem 1rem}.post-card-body{padding:1rem}.post-card-title{font-size:1.0625rem}.page-title,.post-detail-title{font-size:1.5rem}.post-detail-content{padding:1.25rem}.auth-card{padding:1.5rem;margin:0 .5rem}}[data-theme=dark] .mobile-menu{background:var(--bg);box-shadow:-4px 0 20px rgba(0,0,0,.4)}[data-theme=dark] .mobile-menu-overlay{background:rgba(0,0,0,.7)}.mobile-tab-bar{display:none}@media (max-width:768px){.mobile-tab-bar{display:flex;align-items:stretch;position:fixed;left:0;right:0;bottom:0;height:56px;background:hsla(0,0%,100%,.92);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-top:1px solid var(--border-light);z-index:150;padding-bottom:env(safe-area-inset-bottom)}.mobile-tab-item{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.125rem;color:var(--text-muted);font-size:.6875rem;font-weight:500;text-decoration:none;transition:color .2s ease}.mobile-tab-icon{font-size:1.25rem;line-height:1}.mobile-tab-label{line-height:1}.mobile-tab-item.active{color:var(--primary)}}[data-theme=dark] .mobile-tab-bar{background:rgba(15,23,42,.9);border-top-color:rgba(99,102,241,.1)}.notification-bell-wrap{position:relative}.notification-bell{background:none;border:none;cursor:pointer;font-size:1.25rem;padding:.25rem;position:relative;transition:transform var(--transition)}.notification-bell:hover{transform:scale(1.1)}.notification-badge{position:absolute;top:-4px;right:-6px;background:#ef4444;color:#fff;font-size:.625rem;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1}.notification-panel{position:absolute;top:calc(100% + 8px);right:0;width:360px;max-height:480px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 12px 40px rgba(0,0,0,.12);z-index:1000;overflow:hidden;display:flex;flex-direction:column}.notification-panel-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--border-light)}.notification-panel-header h3{font-size:.9375rem;font-weight:600;color:var(--text);margin:0}.notification-mark-all{background:none;border:none;color:var(--primary);font-size:.75rem;cursor:pointer}.notification-mark-all:hover{text-decoration:underline}.notification-tabs{display:flex;border-bottom:1px solid var(--border-light);padding:0 .5rem}.notification-tab{position:relative;display:flex;align-items:center;gap:.375rem;background:none;border:none;padding:.625rem .875rem;font-size:.8125rem;color:var(--text-muted);cursor:pointer;transition:color var(--transition)}.notification-tab:hover{color:var(--text)}.notification-tab.active{color:var(--primary);font-weight:600}.notification-tab.active:after{content:"";position:absolute;left:.875rem;right:.875rem;bottom:-1px;height:2px;border-radius:1px;background:var(--primary)}.notification-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#ef4444;color:#fff;font-size:.625rem;font-weight:700;line-height:1}.notification-panel-body{overflow-y:auto;max-height:400px}.notification-empty,.notification-loading{padding:2rem;text-align:center;color:var(--text-muted);font-size:.875rem}.notification-item{display:flex;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--border-light);cursor:pointer;transition:background var(--transition)}.notification-item:hover{background:var(--bg-secondary)}.notification-item.unread{background:var(--primary-light)}.notification-item-icon{font-size:1.25rem;flex-shrink:0;padding-top:.125rem}.notification-item-content{flex:1 1;min-width:0}.notification-item-title{font-size:.8125rem;font-weight:500;color:var(--text);margin-bottom:.125rem}.notification-item-text{font-size:.75rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification-item-time{font-size:.6875rem;color:var(--text-muted);margin-top:.25rem}.notification-item-link{font-size:.75rem;color:var(--primary);flex-shrink:0;align-self:center}.notification-load-more{display:block;width:calc(100% - 2rem);margin:.75rem 1rem;padding:.5rem;background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-size:.8125rem;cursor:pointer;transition:all var(--transition)}.notification-load-more:hover{border-color:var(--primary-border);color:var(--primary)}@media (max-width:480px){.notification-panel{width:calc(100vw - 2rem);right:-1rem}}.github-callback-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);padding:2rem}.github-callback-card{text-align:center;background:var(--bg-card);border-radius:16px;border:1px solid var(--border);padding:3rem 2.5rem;max-width:380px;width:100%;box-shadow:var(--shadow-md)}.github-callback-icon{width:64px;height:64px;border-radius:50%;background:#24292e;display:flex;align-items:center;justify-content:center;margin:0 auto 1.5rem}.github-callback-icon-error{background:var(--bg-secondary)}.github-callback-text{color:var(--text-secondary);font-size:.938rem;margin:0}.github-callback-title{font-size:1.25rem;font-weight:600;margin-bottom:.75rem;color:var(--text)}.github-callback-error{color:var(--danger,#e53e3e);font-size:.875rem;margin-bottom:1.5rem;line-height:1.5}.github-dots{display:flex;justify-content:center;gap:6px;margin-bottom:1.25rem}.github-dot{width:8px;height:8px;border-radius:50%;background:var(--primary);animation:github-bounce 1.4s ease-in-out infinite}.github-dot:first-child{animation-delay:0s}.github-dot:nth-child(2){animation-delay:.16s}.github-dot:nth-child(3){animation-delay:.32s}@keyframes github-bounce{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.google-callback-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);padding:2rem}.google-callback-card{text-align:center;background:var(--bg-card);border-radius:16px;border:1px solid var(--border);padding:3rem 2.5rem;max-width:380px;width:100%;box-shadow:var(--shadow-md)}.google-callback-icon{width:64px;height:64px;border-radius:50%;background:#fff;border:1px solid #dadce0;display:flex;align-items:center;justify-content:center;margin:0 auto 1.5rem}[data-theme=dark] .google-callback-icon{background:#303134;border-color:#5f6368}.google-callback-icon-error{background:var(--bg-secondary);border-color:transparent}.google-callback-text{color:var(--text-secondary);font-size:.938rem;margin:0}.google-callback-title{font-size:1.25rem;font-weight:600;margin-bottom:.75rem;color:var(--text)}.google-callback-error{color:var(--danger,#e53e3e);font-size:.875rem;margin-bottom:1.5rem;line-height:1.5}.google-dots{display:flex;justify-content:center;gap:6px;margin-bottom:1.25rem}.google-dot{width:8px;height:8px;border-radius:50%;background:var(--primary);animation:github-bounce 1.4s ease-in-out infinite}.google-dot:first-child{animation-delay:0s}.google-dot:nth-child(2){animation-delay:.16s}.google-dot:nth-child(3){animation-delay:.32s}.pagination{display:flex;justify-content:center;align-items:center;gap:.5rem;margin-top:2rem}.pagination button{padding:.5rem 1rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-size:.875rem;cursor:pointer;transition:all var(--transition)}.pagination button:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--primary-light);transform:translateY(-1px)}.pagination button:disabled{opacity:.5;cursor:not-allowed}.pagination span{color:var(--text-secondary);font-size:.875rem}.pagination .pagination-page{min-width:2.25rem;padding:.5rem .625rem;text-align:center}.pagination .pagination-page.active,.pagination .pagination-page.active:hover{background:var(--primary);border-color:var(--primary);color:#fff}.pagination .pagination-ellipsis{padding:0 .25rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pagination .pagination-info{margin-left:.5rem}.pagination .pagination-jump{margin-left:.5rem;display:inline-flex;align-items:center;gap:.375rem}.pagination .pagination-jump input{width:3.5rem;padding:.375rem .5rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-size:.875rem;text-align:center;transition:border-color var(--transition)}.pagination .pagination-jump input:focus{outline:none;border-color:var(--primary)}.pagination .pagination-jump input::-webkit-inner-spin-button,.pagination .pagination-jump input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pagination .pagination-jump input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.post-list{display:flex;flex-direction:column;gap:1.25rem}.post-card{background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;transition:all .35s cubic-bezier(.4,0,.2,1);cursor:pointer;position:relative}.post-card:before{left:0;top:0;bottom:0;width:3px;background:var(--gradient-primary);border-radius:3px 0 0 3px;transition:opacity var(--transition)}.post-card:after,.post-card:before{content:"";position:absolute;opacity:0}.post-card:after{inset:0;border-radius:var(--radius);background:linear-gradient(135deg,rgba(99,102,241,.03),rgba(168,85,247,.03));transition:opacity .35s ease;pointer-events:none;z-index:0}.post-card:hover{box-shadow:0 12px 40px rgba(99,102,241,.12),0 4px 12px rgba(0,0,0,.06);transform:translateY(-4px);border-color:rgba(99,102,241,.3)}.post-card:hover:after,.post-card:hover:before{opacity:1}.post-card-horizontal{display:grid;grid-template-columns:260px 1fr}.post-card-horizontal .post-card-cover{height:100%;min-height:200px}.post-card-horizontal .post-card-body{display:flex;flex-direction:column;justify-content:center}@media (max-width:768px){.post-card-horizontal{grid-template-columns:1fr}.post-card-horizontal .post-card-cover{height:180px;min-height:auto}}.post-card-cover{width:100%;height:200px;overflow:hidden}.post-card-cover img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.4,0,.2,1),filter .6s ease}.post-card:hover .post-card-cover img{transform:scale(1.08);filter:brightness(1.05)}.post-card-body{padding:1.5rem}.post-card-title{font-size:1.25rem;font-weight:600;color:var(--text);margin-bottom:.5rem;line-height:1.4}.post-card-title:hover{color:var(--primary)}.post-card-summary{color:var(--text-secondary);font-size:.938rem;line-height:1.6;margin-bottom:.75rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-card-footer{display:flex;align-items:center;justify-content:space-between}.post-card-author{display:flex;align-items:center;gap:.5rem}.post-card-author-avatar{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,var(--primary),#8b5cf6);display:flex;align-items:center;justify-content:center;color:#fff;font-size:.688rem;font-weight:600}.post-card-author-name{font-size:.813rem;color:var(--text-secondary);font-weight:500}.post-card-meta{display:flex;align-items:center;gap:.5rem;color:var(--text-muted);font-size:.75rem}.post-card-meta-item{display:inline-flex;align-items:center;gap:.25rem}.post-card-meta-divider{color:var(--border)}.post-card-tags{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem}.post-detail-cover{position:relative;margin-bottom:1.5rem;border-radius:var(--radius);overflow:hidden;max-height:320px;box-shadow:0 4px 20px rgba(0,0,0,.12)}.post-detail-cover:after{content:"";position:absolute;bottom:0;left:0;right:0;height:40%;background:linear-gradient(0deg,rgba(0,0,0,.15),transparent);pointer-events:none}.post-detail-cover img{width:100%;height:100%;max-height:320px;object-fit:cover;display:block}@media (max-width:768px){.post-detail-cover{max-height:200px;border-radius:var(--radius-sm)}.post-detail-cover img{max-height:200px}}.post-card-pinned{border-color:var(--primary-border);box-shadow:0 0 0 1px rgba(99,102,241,.1)}.post-card-v2-pin{position:absolute;top:.75rem;left:.75rem;padding:.2rem .625rem;background:rgba(99,102,241,.9);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;font-size:.6875rem;font-weight:600;border-radius:9999px;z-index:3}.post-detail{max-width:800px;margin:0 auto}.post-detail-header{margin-bottom:2rem}.post-detail-title{font-size:2rem;font-weight:700;line-height:1.3;margin-bottom:1rem}.post-detail-meta{display:flex;align-items:center;gap:1rem;color:var(--text-secondary);font-size:.875rem;flex-wrap:wrap}.reading-timer{display:inline-flex;align-items:center;gap:.25rem;color:var(--primary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:7em}.post-detail-tags{display:flex;gap:.5rem;margin-top:.75rem}.post-detail-content{background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);padding:2rem;font-size:1rem;line-height:1.8}.post-detail-content h1,.post-detail-content h2,.post-detail-content h3{margin-top:1.5em;margin-bottom:.75em;font-weight:600}.post-detail-content h1{font-size:1.5rem}.post-detail-content h2{font-size:1.25rem}.post-detail-content h3{font-size:1.125rem}.post-detail-content p{margin-bottom:1em}.post-detail-content code:not(.hljs){background:var(--bg-secondary);padding:.125rem .375rem;border-radius:4px;font-size:.875em;font-family:Menlo,Monaco,Courier New,monospace}.post-detail-content pre{background:transparent;color:inherit;padding:0;border-radius:0 0 calc(var(--radius) - 1px) calc(var(--radius) - 1px);overflow-x:auto;margin-bottom:1em}.post-detail-content pre code{font-family:Menlo,Monaco,Courier New,monospace}.post-detail-content blockquote{border-left:3px solid var(--primary);padding-left:1rem;color:var(--text-secondary);margin-bottom:1em}.post-detail-content img{max-width:100%;border-radius:var(--radius)}.post-detail-content ol,.post-detail-content ul{padding-left:1.5rem;margin-bottom:1em}@media (max-width:768px){.post-detail-title{font-size:1.5rem;line-height:1.35}.post-detail-meta{gap:.5rem;font-size:.8125rem}.post-detail-meta span:nth-child(2),.post-detail-meta span:nth-child(4){display:none}.post-detail-content{padding:1.25rem;font-size:.9375rem;line-height:1.75;border-radius:var(--radius-sm)}.post-detail-content .code-block-wrapper{margin-left:-1.25rem;margin-right:-1.25rem}.post-detail-content pre{font-size:.8125rem}.post-detail-content h1{font-size:1.3rem}.post-detail-content h2{font-size:1.15rem}.post-detail-content h3{font-size:1.05rem}.post-detail-content blockquote{margin-left:0;margin-right:0;padding-left:.75rem;font-size:.875rem}.post-detail-content table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;font-size:.8125rem}.post-detail-content img{border-radius:var(--radius-sm)}}@media (max-width:480px){.post-detail-title{font-size:1.3rem}.post-detail-content{padding:1rem;font-size:.9rem}.post-detail-content .code-block-wrapper{margin-left:-1rem;margin-right:-1rem}.post-detail-content pre{font-size:.75rem}}.post-nav{display:grid;grid-template-columns:1fr 1fr;grid-gap:1rem;gap:1rem;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border-light)}.post-nav-item{min-width:0}.post-nav-next{text-align:right}.post-nav-link{display:flex;flex-direction:column;gap:.375rem;padding:1rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-card);text-decoration:none;transition:all .25s ease}.post-nav-link:hover{border-color:var(--primary-border);background:var(--primary-light);transform:translateY(-2px);box-shadow:var(--shadow)}.post-nav-label{font-size:.75rem;color:var(--text-muted);font-weight:500}.post-nav-title{font-size:.875rem;font-weight:600;color:var(--text);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-nav-link:hover .post-nav-title{color:var(--primary)}@media (max-width:640px){.post-nav{grid-template-columns:1fr;gap:.75rem}.post-nav-next{text-align:left}}.post-comment-jump{display:inline-flex;align-items:center;gap:.25rem;padding:0;border:none;background:none;color:var(--text-secondary);font-size:inherit;cursor:pointer;transition:color .2s}.post-comment-jump:hover{color:var(--primary)}.post-series-nav{margin-top:2rem;padding:1.25rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card)}.post-series-nav-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.post-series-nav-title{font-size:.938rem;font-weight:600;color:var(--text)}.post-series-nav-link{font-size:.8125rem;color:var(--primary);text-decoration:none;white-space:nowrap}.post-series-nav-link:hover{text-decoration:underline}.post-series-nav .post-series-nav-pager{margin-top:0;padding-top:0;border-top:none}.post-series-nav-end{font-size:.8125rem;color:var(--text-muted)}.post-series-toc{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--border-light)}.post-series-toc-header{display:flex;align-items:center;gap:.625rem;width:100%;padding:.25rem 0;border:none;background:none;cursor:pointer;font-size:.8125rem;font-weight:600;color:var(--text-secondary);margin-bottom:.625rem;text-align:left}.post-series-toc-header-title{flex-shrink:0}.post-series-toc-progress{font-size:.75rem;font-weight:500;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.post-series-toc-toggle{margin-left:auto;font-size:.75rem;font-weight:500;color:var(--primary);white-space:nowrap}.post-series-toc-header:hover .post-series-toc-toggle{text-decoration:underline}.post-series-toc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.post-series-toc-item{border-radius:6px;transition:background .15s}.post-series-toc-item:hover{background:var(--bg-secondary)}.post-series-toc-current,.post-series-toc-link{display:flex;align-items:center;gap:.625rem;padding:.5rem .625rem;text-decoration:none;font-size:.875rem;line-height:1.4}.post-series-toc-index{flex-shrink:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:.75rem;color:var(--text-muted);min-width:1.5rem;text-align:right}.post-series-toc-text{color:var(--text)}.post-series-toc-link:hover .post-series-toc-text{color:var(--primary)}.post-series-toc-item.active{background:var(--primary-light)}.post-series-toc-item.active .post-series-toc-index{color:var(--primary)}.post-series-toc-item.active .post-series-toc-text{color:var(--primary);font-weight:600}.related-posts{margin:2rem 0 0;padding:1.25rem 1.5rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius)}.related-posts-title{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:.875rem;display:flex;align-items:center;gap:.5rem}.related-posts-icon{font-size:1.125rem}.related-posts-list{display:flex;flex-direction:column;gap:.75rem}.related-post-card{display:flex;gap:1rem;padding:.75rem;border-radius:var(--radius-sm);transition:background var(--transition);color:var(--text)}.related-post-card:hover{background:var(--bg-secondary);color:var(--text)}.related-post-cover{width:80px;height:60px;border-radius:6px;overflow:hidden;flex-shrink:0}.related-post-cover img{width:100%;height:100%;object-fit:cover}.related-post-info{flex:1 1;min-width:0}.related-post-title{font-size:.9375rem;font-weight:500;color:var(--text);margin-bottom:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.related-post-card:hover .related-post-title{color:var(--primary)}.related-post-meta{display:flex;gap:.375rem;font-size:.75rem;color:var(--text-muted)}.related-post-tags{display:flex;gap:.25rem;margin-top:.375rem}@media (max-width:640px){.related-post-cover{display:none}}@media (max-width:768px){.hero-inner{padding:2.5rem 1.5rem 3rem}.hero-title{font-size:1.75rem}.hero-emoji{font-size:2rem}.hero-greeting{font-size:.875rem}.hero-stats{gap:1rem}.hero-stat-num{font-size:1.25rem}.auth-page{flex-direction:column}.auth-decoration{display:none}.auth-form-section{min-height:calc(100vh - 64px)}}@media (max-width:480px){.hero-inner{padding:2rem 1rem 2.5rem}.hero-title{font-size:1.5rem}.hero-desc{font-size:.9375rem}}.scroll-to-top{position:fixed;bottom:2rem;right:2rem;z-index:999;display:flex;flex-direction:column;align-items:center;gap:.25rem;background:var(--bg-primary);border:2px solid var(--border-light);border-radius:1rem;padding:.5rem .6rem .4rem;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(20px);transition:opacity .4s ease,visibility .4s ease,transform .4s ease,box-shadow .3s ease,border-color .3s ease;box-shadow:0 4px 16px rgba(0,0,0,.1);animation:astronaut-float 3s ease-in-out infinite}.scroll-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)}.scroll-to-top:hover{border-color:var(--accent);box-shadow:0 6px 24px rgba(79,195,247,.3);transform:translateY(-4px)}.scroll-to-top:hover .flame{animation:flame-burst .3s ease-in-out forwards}.scroll-to-top:hover .eyes circle:first-child,.scroll-to-top:hover .eyes circle:nth-child(2){r:3.5}.scroll-to-top.launching{animation:rocket-launch .8s ease-in forwards!important}.scroll-to-top.launching .flame{animation:flame-intense .15s ease-in-out infinite!important}.astronaut-svg{width:48px;height:67px}.flame{animation:flame-flicker .8s ease-in-out infinite alternate;transform-origin:50% 100%}.scroll-to-top-text{font-size:.625rem;font-weight:700;color:var(--text-secondary);letter-spacing:.08em;transition:color .3s ease}.scroll-to-top:hover .scroll-to-top-text{color:var(--accent)}@keyframes astronaut-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.scroll-to-top:hover{animation:astronaut-float-hover 2s ease-in-out infinite}@keyframes astronaut-float-hover{0%,to{transform:translateY(-4px)}50%{transform:translateY(-10px)}}@keyframes flame-flicker{0%{opacity:.6;transform:scaleY(.8) scaleX(.9)}to{opacity:1;transform:scaleY(1.1) scaleX(1.05)}}@keyframes flame-burst{0%{transform:scaleY(1) scaleX(1)}50%{transform:scaleY(1.5) scaleX(1.2)}to{transform:scaleY(1.3) scaleX(1.1)}}@keyframes flame-intense{0%{transform:scaleY(1.2) scaleX(1);opacity:1}50%{transform:scaleY(2) scaleX(1.4);opacity:.9}to{transform:scaleY(1.5) scaleX(1.1);opacity:1}}@keyframes rocket-launch{0%{transform:translateY(0);opacity:1}30%{transform:translateY(5px);opacity:1}to{transform:translateY(-120vh);opacity:0}}[data-theme=dark] .scroll-to-top{box-shadow:0 4px 16px rgba(0,0,0,.3)}[data-theme=dark] .scroll-to-top:hover{box-shadow:0 6px 24px rgba(79,195,247,.25)}@media (max-width:768px){.scroll-to-top{bottom:1.25rem;right:1rem;padding:.4rem .5rem .3rem}.astronaut-svg{width:40px;height:56px}.scroll-to-top-text{font-size:.5625rem}}.search-box{position:relative;margin-bottom:1.5rem}.search-box input{width:100%;padding:.875rem 1rem .875rem 2.75rem;border:1.5px solid var(--border);border-radius:9999px;font-size:.938rem;background:var(--bg-card);outline:none;transition:all var(--transition);box-shadow:var(--shadow-sm)}.search-box input:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(99,102,241,.1),0 4px 20px rgba(99,102,241,.08);transform:translateY(-2px)}.search-icon{position:absolute;left:.875rem;top:50%;transform:translateY(-50%);color:var(--text-muted);z-index:1;pointer-events:none}.series-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));grid-gap:1.5rem;gap:1.5rem}.series-card{display:flex;flex-direction:column;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:all var(--transition);color:var(--text)}.series-card:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.08);color:var(--text)}.series-card-cover{height:160px;overflow:hidden}.series-card-cover img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.series-card:hover .series-card-cover img{transform:scale(1.05)}.series-card-body{padding:1.25rem;flex:1 1;display:flex;flex-direction:column}.series-card-title{font-size:1.125rem;font-weight:600;color:var(--text);margin-bottom:.5rem}.series-card-desc{font-size:.875rem;color:var(--text-secondary);line-height:1.6;margin-bottom:.75rem;flex:1 1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.series-card-meta{display:flex;gap:.5rem;font-size:.75rem;color:var(--text-muted)}.series-detail-header{display:flex;gap:2rem;margin-bottom:2rem;padding:2rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius)}.series-detail-cover{width:200px;height:150px;border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0}.series-detail-cover img{width:100%;height:100%;object-fit:cover}.series-detail-info{flex:1 1}.series-detail-title{font-size:1.75rem;font-weight:700;color:var(--text);margin-bottom:.75rem}.series-detail-desc{font-size:.9375rem;color:var(--text-secondary);line-height:1.7;margin-bottom:1rem}.series-detail-meta{display:flex;gap:.5rem;font-size:.875rem;color:var(--text-muted)}.series-posts-list{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.series-posts-title{font-size:1.25rem;font-weight:600;color:var(--text);margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-light)}.series-posts-items{display:flex;flex-direction:column}.series-post-item{display:flex;gap:1rem;padding:1rem .75rem;border-bottom:1px solid var(--border-light);transition:background var(--transition);color:var(--text);align-items:flex-start}.series-post-item:last-child{border-bottom:none}.series-post-item:hover{background:var(--bg-secondary);color:var(--text)}.series-post-index{font-size:1.25rem;font-weight:700;color:var(--primary);min-width:2rem;text-align:center;padding-top:.125rem}.series-post-info{flex:1 1;min-width:0}.series-post-title{font-size:1rem;font-weight:500;color:var(--text);margin-bottom:.25rem}.series-post-item:hover .series-post-title{color:var(--primary)}.series-post-summary{font-size:.8125rem;color:var(--text-muted);margin-bottom:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.series-post-meta{display:flex;gap:.375rem;font-size:.75rem;color:var(--text-muted)}@media (max-width:768px){.series-grid{grid-template-columns:1fr}.series-detail-header{flex-direction:column;gap:1rem;padding:1.25rem}.series-detail-cover{width:100%;height:180px}}