/* Luntan Forum - Neumorphism design system (blue-tinted, matched to my_web reference) */
/* Tokens */
:root{--bg:#E4EBF5;--bg-deep:#DDE6F2;--surface:#E4EBF5;--primary:#5B8DEF;--primary-deep:#3D6ED8;--text:#33425C;--text-soft:#6B7A94;--text-faint:#8A97B0;--border:#FFFFFF;--radius:14px;--radius-sm:10px;--shadow:6px 6px 14px #C3D0E4,-6px -6px 14px #FFFFFF;--shadow-lg:8px 8px 20px #BFCDE4,-8px -8px 20px #FFFFFF;--inset:inset 4px 4px 10px #C3D0E4,inset -4px -4px 10px #FFFFFF;--font-body:"Quicksand","Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;--font-hand:"Caveat","Quicksand","PingFang SC","Microsoft YaHei",cursive}
*{box-sizing:border-box;margin:0;padding:0}
body{margin:0;background:linear-gradient(180deg,#E9F0F8 0%,#E4EBF5 40%,#E1E9F4 100%);background-attachment:fixed;min-height:100vh;color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.7;letter-spacing:.01em}

.app-shell{max-width:1100px;margin:0 auto;padding:28px 20px}
.neu-surface{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg)}
.neu-inset{box-shadow:var(--inset)}
.topbar{position:sticky;top:16px;z-index:50;padding:14px 24px;background:rgba(228,235,245,.86);backdrop-filter:blur(8px);border-radius:18px;margin-bottom:28px}
.topbar-inner{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;margin-right:auto}
.brand-mark{width:38px;height:38px;display:grid;place-items:center;font-family:var(--font-hand);font-size:1.4rem;font-weight:700;color:var(--primary-deep);background:var(--surface);border:1px solid var(--border);border-radius:50%;box-shadow:var(--shadow),inset 2px 2px 5px #FFFFFF}
.brand-name{font-family:var(--font-hand);font-size:1.6rem;font-weight:700;color:var(--text);text-decoration:none}

.search-form{flex:1;min-width:200px}
.search-field{display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:999px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--inset)}
.search-field input{flex:1;border:none;background:transparent;font-size:.9rem;color:var(--text);outline:none;font-family:inherit}
.search-field input::placeholder{color:var(--text-faint)}
.search-field .icon{width:18px;height:18px;flex-shrink:0;color:var(--text-faint)}
.topbar-actions{display:flex;gap:10px}
.btn{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:.9rem;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow);padding:9px 18px;cursor:pointer;transition:box-shadow .18s ease,transform .18s ease,color .18s ease}
.btn:hover{transform:translateY(-1px);box-shadow:8px 8px 18px #BFCDE4,-8px -8px 18px #FFFFFF;color:var(--primary-deep)}
.btn:active{transform:translateY(0);box-shadow:var(--inset)}
.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.btn-primary{color:#fff;background:linear-gradient(180deg,#6E9BF2,#4E82EC);border-color:#8FB0F4}
.btn-primary:hover{color:#fff}
.btn-small{padding:5px 12px;font-size:.78rem}
.btn .icon{width:16px;height:16px;flex-shrink:0}

.main-layout{display:grid;grid-template-columns:260px 1fr;gap:24px}
@media(max-width:768px){.main-layout{grid-template-columns:1fr}}
.sidebar{display:flex;flex-direction:column;gap:20px;align-self:start;padding:20px;position:sticky;top:80px}
.nav-stack{display:flex;flex-direction:column;gap:8px}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--text-soft);font-size:.9rem;font-weight:600;cursor:pointer;transition:color .18s ease,background .18s ease,box-shadow .18s ease;text-align:left;font-family:inherit}
.nav-item:hover{color:var(--text);background:var(--surface);border-color:#FFFFFF;box-shadow:3px 3px 8px #C9D5E7,-3px -3px 8px #FFFFFF}
.nav-item.active{color:var(--primary-deep);background:var(--surface);border-color:#FFFFFF;box-shadow:var(--inset)}
.nav-item:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.nav-item .nav-icon{width:24px;height:24px;display:grid;place-items:center}
.nav-item .icon{width:18px;height:18px;color:currentColor}
.category-panel,.stats-panel{padding:14px;border-radius:var(--radius-sm)}
.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.panel-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint)}
.panel-meta{font-size:.75rem;color:var(--text-faint);font-weight:600}

.category-list{display:flex;flex-direction:column;gap:6px}
.category-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:10px;cursor:pointer;font-size:.85rem;transition:all .18s ease;border:1px solid transparent;background:transparent;color:var(--text-soft);text-align:left;width:100%;font-family:inherit;font-weight:500}
.category-item:hover{color:var(--text);background:var(--surface);border-color:#FFFFFF;box-shadow:3px 3px 8px #C9D5E7,-3px -3px 8px #FFFFFF}
.category-item.active{color:var(--primary-deep);background:var(--surface);border-color:#FFFFFF;box-shadow:var(--inset);font-weight:600}
.category-item:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.category-count{font-size:.72rem;font-weight:600;color:var(--text-faint);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:2px 8px;box-shadow:3px 3px 6px #C9D5E7,-3px -3px 6px #FFFFFF}
.category-item.active .category-count{box-shadow:var(--inset);color:var(--primary-deep)}
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stat-card{padding:14px 10px;border-radius:10px;text-align:center;background:var(--surface);border:1px solid var(--border);box-shadow:var(--inset)}
.stat-value{font-size:1.3rem;font-weight:700;color:var(--primary-deep);font-family:var(--font-body);line-height:1}
.stat-label{font-size:.72rem;color:var(--text-faint);font-weight:600;margin-top:4px;text-transform:uppercase;letter-spacing:.06em}

.content-area{display:flex;flex-direction:column;gap:20px}
.content-tabs{display:flex;gap:6px;padding:6px;width:fit-content;border-radius:999px}
.tab{padding:7px 16px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--text-soft);font-size:.85rem;font-weight:600;cursor:pointer;transition:color .18s ease,background .18s ease,box-shadow .18s ease;font-family:inherit}
.tab:hover{color:var(--text);background:var(--surface);border-color:#FFFFFF;box-shadow:3px 3px 8px #C9D5E7,-3px -3px 8px #FFFFFF}
.tab.active{color:var(--primary-deep);background:var(--surface);border-color:#FFFFFF;box-shadow:var(--inset)}
.tab:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.post-list{display:flex;flex-direction:column;gap:16px}
.post-card{padding:22px;transition:transform .18s ease,box-shadow .18s ease}
.post-card:hover{transform:translateY(-2px);box-shadow:8px 8px 20px #BFCDE4,-8px -8px 20px #FFFFFF}
.post-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex-wrap:wrap;gap:8px}
.post-meta{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--text-faint)}
.dot{width:3px;height:3px;border-radius:50%;background:var(--text-faint)}
.post-author{font-weight:700;color:var(--text-soft)}
.post-tags{display:flex;gap:6px;flex-wrap:wrap}
.post-tag{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:.72rem;font-weight:600;color:var(--text-soft);background:var(--surface);border:1px solid var(--border);box-shadow:3px 3px 6px #C9D5E7,-3px -3px 6px #FFFFFF}

.post-title{font-size:1.1rem;font-weight:700;margin-bottom:8px;line-height:1.4}
.post-title-link{color:var(--text);text-decoration:none;transition:color .18s ease}
.post-title-link:hover{color:var(--primary-deep)}
.post-excerpt{font-size:.9rem;color:var(--text-soft);margin-bottom:16px;line-height:1.65;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-stats{display:flex;gap:16px}
.stat{display:flex;align-items:center;gap:5px;font-size:.8rem;color:var(--text-faint);font-weight:600}
.stat .icon{width:16px;height:16px}
.stat-replies,.stat-views{font-size:.8rem}
.post-detail{padding:28px}
.back-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:999px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--inset);color:var(--text-soft);font-size:.85rem;font-weight:600;cursor:pointer;transition:all .18s ease;margin-bottom:20px;font-family:inherit}
.back-btn:hover{color:var(--primary-deep)}
.post-detail-header{margin-bottom:20px;padding-bottom:18px;border-bottom:1px solid #FFFFFF}
.post-detail-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:8px}
.post-detail-title-wrap{flex:1}
.eyebrow{display:block;font-family:var(--font-hand);font-size:1.3rem;font-weight:600;color:var(--primary-deep);margin-bottom:2px}
.post-detail-title{font-size:1.5rem;font-weight:700;margin:0;line-height:1.3}
.post-detail-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:.85rem;color:var(--text-faint);font-weight:600;margin-top:10px}
.post-detail-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.post-detail-body{font-size:1rem;line-height:1.8;margin-bottom:24px;white-space:pre-wrap;color:var(--text-soft)}
.post-detail-actions{display:flex;gap:12px;margin-bottom:24px}

.comments-section{margin-top:8px}
.comments-title{font-size:1rem;font-weight:700;margin-bottom:16px;color:var(--text)}
.comments-list{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}
.comment{padding:16px}
.comment-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.comment-author{font-size:.85rem;font-weight:700;color:var(--text-soft)}
.comment-time{font-size:.72rem;color:var(--text-faint);font-weight:600}
.comment-body{font-size:.9rem;line-height:1.65;color:var(--text-soft)}
.comment-actions{display:flex;align-items:center;gap:12px;margin-top:12px}
.reply-label{font-size:.72rem;color:var(--text-faint);font-weight:600}
.mini-btn{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--inset);font-size:.8rem;cursor:pointer;color:var(--text-soft);transition:all .18s ease;font-family:inherit;font-weight:600}
.mini-btn:hover{color:var(--primary-deep)}
.mini-btn .icon{width:14px;height:14px}
.upvote-count{font-size:.8rem;font-weight:700}
.reply-form{display:flex;flex-direction:column;gap:10px}
.reply-form label{font-size:.78rem;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em}
.neu-field{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--inset);color:var(--text);font-family:inherit;font-size:.9rem;padding:11px 14px;outline:none;transition:box-shadow .18s ease;resize:vertical;min-height:76px}
.neu-field:focus{box-shadow:inset 4px 4px 10px #BFCDE4,0 0 0 2px var(--primary);outline:none}
.reply-form .neu-field{min-height:auto}
.reply-form textarea.neu-field{min-height:76px;resize:vertical}
.composer{padding:24px}
.composer .panel-heading{margin-bottom:20px}
.composer .panel-title{font-size:1.1rem;font-weight:700;color:var(--text);text-transform:none;letter-spacing:0}
.composer .panel-title .eyebrow{display:block;margin-bottom:0}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
@media(max-width:768px){.form-grid{grid-template-columns:1fr}}

.field{display:flex;flex-direction:column;gap:6px}
.field-full{grid-column:1/-1}
.field label{font-size:.75rem;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em}
.field input,.field select,.field textarea{padding:11px 14px;border-radius:10px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--inset);font-family:inherit;font-size:.9rem;color:var(--text);outline:none;transition:box-shadow .18s ease}
.field input:focus,.field select:focus,.field textarea:focus{box-shadow:inset 4px 4px 10px #BFCDE4,0 0 0 2px var(--primary);outline:none}
.field select{cursor:pointer;appearance:none}
.field textarea{resize:vertical;min-height:100px}
.field-error{font-size:.75rem;color:#C0563B;min-height:1em;font-weight:600}
.composer-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.composer-hint{font-size:.8rem;color:var(--text-faint);font-weight:500}
.composer-buttons{display:flex;gap:10px}
.icon-btn{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--border);background:var(--surface);box-shadow:var(--inset);cursor:pointer;transition:all .18s ease}
.icon-btn:hover{color:var(--primary-deep)}
.icon-btn .icon{width:16px;height:16px}
.empty-state{text-align:center;padding:48px 20px;color:var(--text-faint);font-size:.9rem;font-weight:500;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--inset)}
.hidden{display:none !important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.icon{stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.stat .icon,.search-field .icon{fill:none}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*{transition:none !important;animation:none !important}}
::-webkit-scrollbar{width:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#C3D0E4;border-radius:8px}
.post-detail-meta span{font-weight:600}
.post-detail-title-wrap .eyebrow{margin-bottom:0}


/* Reveal animation */
.sidebar,.content-tabs{opacity:0;transform:translateY(14px);transition:opacity .4s ease,transform .4s ease;will-change:opacity,transform}
.sidebar.in,.content-tabs.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.sidebar,.content-tabs{opacity:1;transform:none;transition:none}}
