:root{--background:0 0% 100%;--foreground:240 10% 3.9%;--card:0 0% 100%;--card-foreground:240 10% 3.9%;--muted:240 4.8% 95.9%;--muted-foreground:240 3.8% 46.1%;--primary:239 84% 67%;--primary-foreground:0 0% 98%;--secondary:240 4.8% 95.9%;--secondary-foreground:240 5.9% 10%;--destructive:0 72% 51%;--destructive-foreground:0 0% 98%;--border:240 5.9% 90%;--input:240 5.9% 90%;--ring:239 84% 67%;--radius:.75rem}@media (prefers-color-scheme:dark){:root{--background:240 10% 3.9%;--foreground:0 0% 98%;--card:240 8% 7%;--card-foreground:0 0% 98%;--muted:240 3.7% 15.9%;--muted-foreground:240 5% 64.9%;--primary:239 84% 70%;--primary-foreground:240 6% 10%;--secondary:240 3.7% 15.9%;--secondary-foreground:0 0% 98%;--border:240 3.7% 18%;--input:240 3.7% 20%;--ring:239 84% 70%}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Arial,sans-serif}.app{min-height:100vh;display:flex}.sidebar{border-right:1px solid hsl(var(--border));background:hsl(var(--card));flex-direction:column;flex-shrink:0;gap:16px;width:260px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{align-items:center;gap:8px;padding:4px 8px;font-size:17px;font-weight:700;display:flex}.brand svg{color:hsl(var(--primary))}.nav-label{color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.06em;padding:0 10px;font-size:11px;font-weight:600}.nav-item{cursor:pointer;color:hsl(var(--foreground));text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;width:100%;padding:7px 10px;font-size:14px;display:flex}.nav-item:hover{background:hsl(var(--muted))}.nav-item.active{background:hsl(var(--muted));font-weight:600}.nav-item .dot{border-radius:50%;flex-shrink:0;width:9px;height:9px}.nav-item .count{color:hsl(var(--muted-foreground));margin-left:auto;font-size:12px}.tag-chip{border:1px solid hsl(var(--border));background:hsl(var(--card));cursor:pointer;color:hsl(var(--foreground));border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:12px;display:inline-flex}.tag-chip.active{background:hsl(var(--primary));color:hsl(var(--primary-foreground));border-color:hsl(var(--primary))}.tag-cloud{flex-wrap:wrap;gap:6px;padding:0 4px;display:flex}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{z-index:20;background:hsl(var(--background) / .85);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid hsl(var(--border));align-items:center;gap:10px;padding:12px 20px;display:flex;position:sticky;top:0}.topbar h1{white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;font-size:16px;font-weight:650;overflow:hidden}.search{border:1px solid hsl(var(--input));background:hsl(var(--card));border-radius:8px;flex:0 260px;align-items:center;gap:6px;padding:0 10px;display:flex}.search input{width:100%;color:inherit;background:0 0;border:none;outline:none;padding:8px 0;font-size:13px}.search svg{color:hsl(var(--muted-foreground));flex-shrink:0}.content{flex:1;padding:20px}.btn{cursor:pointer;background:hsl(var(--primary));color:hsl(var(--primary-foreground));border:none;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:500;transition:opacity .15s;display:inline-flex}.btn:hover{opacity:.9}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-outline{border:1px solid hsl(var(--input));color:hsl(var(--foreground));background:0 0}.btn-outline:hover{background:hsl(var(--muted))}.btn-ghost{color:hsl(var(--foreground));background:0 0}.btn-ghost:hover{background:hsl(var(--muted))}.btn-danger{background:hsl(var(--destructive));color:hsl(var(--destructive-foreground))}.btn-sm{padding:5px 10px;font-size:12px}.btn-icon{background:hsl(var(--secondary));width:32px;height:32px;color:hsl(var(--secondary-foreground));border:1px solid hsl(var(--border));border-radius:50%;flex-shrink:0;padding:0}.btn-icon:hover{background:hsl(var(--border))}.grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;display:grid}.card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);cursor:pointer;flex-direction:column;transition:box-shadow .15s,transform .15s;display:flex;overflow:hidden}.card:hover{transform:translateY(-2px);box-shadow:0 6px 20px #09090b1a}.card-cover{aspect-ratio:16/9;background:hsl(var(--muted));position:relative;overflow:hidden}.card-cover img,.card-cover video{object-fit:cover;width:100%;height:100%;display:block}.card-cover .placeholder{color:hsl(var(--muted-foreground));justify-content:center;align-items:center;font-size:32px;font-weight:300;display:flex;position:absolute;inset:0}.card-body{flex-direction:column;gap:8px;padding:12px 14px 14px;display:flex}.card-title{font-size:14px;font-weight:600;line-height:1.35}.card-meta{color:hsl(var(--muted-foreground));align-items:center;gap:6px;font-size:12px;display:flex}.card-tags{flex-wrap:wrap;gap:4px;display:flex}.mini-tag{background:hsl(var(--secondary));color:hsl(var(--secondary-foreground));border-radius:999px;padding:1px 8px;font-size:11px}.badge{background:hsl(var(--secondary));color:hsl(var(--secondary-foreground));border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;display:inline-flex}.badge svg{width:10px;height:10px}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{font-size:13px;font-weight:500}.input,.textarea,.select{border:1px solid hsl(var(--input));background:hsl(var(--card));color:inherit;border-radius:8px;outline:none;width:100%;padding:9px 11px;font-family:inherit;font-size:14px}.input:focus,.textarea:focus,.select:focus{border-color:hsl(var(--ring));box-shadow:0 0 0 3px hsl(var(--ring) / .2)}.textarea{resize:vertical;min-height:90px}.overlay{z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#09090b80;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:16px 16px 0 0;width:100%;max-width:560px;max-height:88vh;padding:20px;animation:.2s ease-out slideUp;overflow-y:auto}@keyframes slideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.modal-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-head h2{margin:0;font-size:16px}.detail{max-width:760px;margin:0 auto}.detail-head{align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.detail-head h2{flex:1;margin:0;font-size:20px}.note{white-space:pre-wrap;color:hsl(var(--foreground) / .85);margin:10px 0 18px;font-size:14px;line-height:1.65}.media-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-top:12px;display:grid}.media-item{border:1px solid hsl(var(--border));background:hsl(var(--muted));aspect-ratio:1;border-radius:10px;position:relative;overflow:hidden}.media-item img,.media-item video{object-fit:cover;width:100%;height:100%;display:block}.media-item .del{z-index:2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;cursor:pointer;opacity:0;background:#00000080;border:1px solid #fff3;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;transition:opacity .15s,background .15s,transform .15s;display:flex;position:absolute;top:8px;right:8px}.media-item:hover .del{opacity:1}.media-item .del:hover{background:hsl(var(--destructive));transform:scale(1.08)}@media (hover:none){.media-item .del{opacity:1}}.dropzone{border:2px dashed hsl(var(--border));text-align:center;color:hsl(var(--muted-foreground));cursor:pointer;border-radius:12px;padding:26px 16px;font-size:13px;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.over{border-color:hsl(var(--primary));background:hsl(var(--primary) / .06)}.upload-bar{background:hsl(var(--muted));border-radius:2px;height:4px;margin-top:10px;overflow:hidden}.upload-bar>div{background:hsl(var(--primary));height:100%;transition:width .2s}.empty{text-align:center;color:hsl(var(--muted-foreground));padding:70px 20px}.empty svg{opacity:.5;margin-bottom:12px}.empty h3{color:hsl(var(--foreground));margin:0 0 6px;font-size:15px}.empty p{margin:0 0 16px;font-size:13px}.row{align-items:center;gap:8px;display:flex}.grow{flex:1}.muted{color:hsl(var(--muted-foreground));font-size:12px}.color-dots{gap:8px;display:flex}.color-dot{cursor:pointer;border:2px solid #0000;border-radius:50%;width:26px;height:26px}.color-dot.sel{border-color:hsl(var(--foreground))}.fab{right:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:30;background:hsl(var(--primary));width:54px;height:54px;color:hsl(var(--primary-foreground));cursor:pointer;box-shadow:0 8px 24px hsl(var(--primary) / .4);border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:fixed}.sidebar-toggle{display:none}.lightbox{z-index:60;cursor:zoom-out;background:#000000e6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox img,.lightbox video{border-radius:8px;max-width:94vw;max-height:92vh}.lightbox-close{top:calc(14px + env(safe-area-inset-top));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #ffffff38;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;transition:background .15s,transform .15s;display:flex;position:absolute;right:14px}.lightbox-close:hover{background:#ffffff40;transform:scale(1.06)}.token-gate{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.token-card{width:100%;max-width:380px}.token-card h1{margin:0 0 8px;font-size:18px}@media (width>=769px){.overlay{align-items:center;padding:20px}.modal{border-radius:16px}}@media (width<=768px){.sidebar{z-index:40;height:100dvh;transition:transform .2s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:0 0 40px #09090b4d}.sidebar.open{transform:none}.sidebar-toggle{display:inline-flex}.grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.content{padding:14px}.search{flex:1}.topbar{padding:10px 14px}.scrim{z-index:35;background:#0006;position:fixed;inset:0}}
