:root{--accent: #7c5cff;--accent2: #4cc9f0;--accent-soft: #7c5cff40;--bg-layer: linear-gradient(135deg, #0a0a18 0%, #101433 50%, #0a1622 100%);--radius: 12px;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--blur: 12px}[data-theme=dark]{--text: #edeafb;--text2: #a9a5c9;--border: rgba(255, 255, 255, .14);--glass-bg: rgba(255, 255, 255, .15);--glass-bg-strong: rgba(255, 255, 255, .24);--glass-bg-soft: rgba(255, 255, 255, .07);--glass-border: rgba(255, 255, 255, .18);--shadow: 0 8px 32px rgba(0, 0, 0, .28);--solid-input: rgba(20, 20, 38, .45);--bg2: rgba(24, 24, 46, .72);--bg3: rgba(12, 12, 26, .55)}[data-theme=light]{--text: #1e1e2e;--text2: #5f5f78;--border: rgba(30, 30, 46, .12);--glass-bg: rgba(255, 255, 255, .55);--glass-bg-strong: rgba(255, 255, 255, .72);--glass-bg-soft: rgba(255, 255, 255, .32);--glass-border: rgba(255, 255, 255, .7);--shadow: 0 8px 32px rgba(30, 30, 46, .12);--solid-input: rgba(255, 255, 255, .6);--bg2: rgba(255, 255, 255, .82);--bg3: rgba(235, 235, 244, .6)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:#0f0f17;color:var(--text);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit;color:inherit}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--accent-soft)}::-webkit-scrollbar-track{background:transparent}.bg-layer{position:fixed;inset:0;z-index:-2;background:var(--bg-layer);overflow:hidden}.bg-layer:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 20% 0%,var(--accent-soft) 0%,transparent 55%),radial-gradient(ellipse at 85% 100%,color-mix(in srgb,var(--accent2) 25%,transparent) 0%,transparent 55%);animation:breathe 18s ease-in-out infinite alternate}.bg-blob{position:absolute;border-radius:50%;filter:blur(70px);will-change:transform;animation-name:drift;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}@keyframes drift{0%{transform:translate(0) scale(1)}50%{transform:translate(45px,-35px) scale(1.12)}to{transform:translate(-30px,25px) scale(.95)}}@keyframes breathe{0%{opacity:.7}to{opacity:1}}.glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--blur)) saturate(140%);backdrop-filter:blur(var(--blur)) saturate(140%);border:1px solid var(--glass-border);box-shadow:var(--shadow)}.app{display:flex;height:100%}.sidebar{width:208px;flex-shrink:0;border-radius:0;border-right:1px solid var(--glass-border);display:flex;flex-direction:column;padding:18px 12px;gap:4px}.sidebar .brand{font-weight:800;font-size:16px;letter-spacing:.3px;padding:6px 10px 18px;background:linear-gradient(120deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;cursor:pointer;color:var(--text2);border:1px solid transparent;background:transparent;text-align:left;width:100%;transition:background .2s,color .2s,border-color .2s,transform .1s}.nav-item:hover{background:var(--glass-bg-soft);color:var(--text);border-color:var(--glass-border)}.nav-item.active{background:linear-gradient(120deg,var(--accent-soft),transparent 80%);color:var(--accent);border-color:var(--glass-border);font-weight:600}.nav-item .icon{width:20px;text-align:center;flex-shrink:0}.main{flex:1;overflow-y:auto;padding:20px 26px 40px;display:flex;flex-direction:column;min-width:0;position:relative}.topbar{position:sticky;top:-20px;z-index:30;display:flex;align-items:center;gap:12px;margin:-20px -26px 18px;padding:16px 26px;border-left:none;border-right:none;border-top:none}.topbar-icon{font-size:18px}.topbar-title{font-size:17px;font-weight:700;background:linear-gradient(120deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}.page-head{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-head h1{font-size:20px;margin:0;flex:1;min-width:160px}.card{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--blur)) saturate(140%);backdrop-filter:blur(var(--blur)) saturate(140%);border:1px solid var(--glass-border);border-radius:var(--radius);padding:16px;margin-bottom:14px;box-shadow:var(--shadow)}.card h3{margin:0 0 10px;font-size:15px;color:var(--text)}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:10px;border:1px solid var(--glass-border);background:var(--glass-bg-strong);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text);cursor:pointer;font-size:13px;transition:filter .15s,transform .1s,box-shadow .2s;white-space:nowrap}.btn:hover{filter:brightness(1.12);box-shadow:0 4px 16px var(--accent-soft)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.btn.primary{background:linear-gradient(120deg,var(--accent),var(--accent2));border-color:transparent;color:#fff;box-shadow:0 4px 18px var(--accent-soft)}.btn.small{padding:4px 9px;font-size:12px}.btn.danger{color:#f87171;border-color:#f8717166;background:transparent}.btn.ghost{background:transparent}.file-btn{position:relative;padding:9px 18px;font-size:13px;font-weight:600;letter-spacing:.3px;background:linear-gradient(120deg,var(--accent-soft),transparent 65%),var(--glass-bg-strong);border:1px solid var(--glass-border);border-radius:12px;overflow:hidden}.file-btn:after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,var(--accent),var(--accent2));opacity:.14;pointer-events:none}.file-btn:hover{filter:brightness(1.12);border-color:var(--accent);box-shadow:0 4px 20px var(--accent-soft)}.file-btn-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;font-size:13px;background:linear-gradient(120deg,var(--accent),var(--accent2));border-radius:7px;color:#fff;flex-shrink:0;box-shadow:0 2px 8px var(--accent-soft)}.input,.textarea,.select{background:var(--solid-input);border:1px solid var(--glass-border);border-radius:10px;padding:8px 12px;color:var(--text);outline:none;min-width:0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:border-color .15s,box-shadow .15s}.input:focus,.textarea:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.textarea{resize:vertical;line-height:1.6}.input[type=range]{padding:0}.input[type=color]{padding:2px}.input::placeholder,.textarea::placeholder{color:var(--text2);opacity:.7}.mono{font-family:var(--mono)}.result-box{background:var(--solid-input);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--glass-border);border-radius:10px;padding:10px 14px;margin:8px 0;font-family:var(--mono);font-size:13px;word-break:break-all;white-space:pre-wrap;max-height:300px;overflow:auto}.tag{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;background:var(--glass-bg-soft);color:var(--text2);border:1px solid var(--glass-border);cursor:pointer;margin:2px;transition:all .15s}.tag:hover{color:var(--text)}.tag.active{background:linear-gradient(120deg,var(--accent),var(--accent2));color:#fff;border-color:transparent;box-shadow:0 2px 10px var(--accent-soft)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600}.badge.unsolved{background:#fbbf2429;color:#fbbf24;border:1px solid rgba(251,191,36,.3)}.badge.solved{background:#4ade8029;color:#4ade80;border:1px solid rgba(74,222,128,.3)}.badge.doubt{background:#f472b629;color:#f472b6;border:1px solid rgba(244,114,182,.3)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}@media(max-width:900px){.grid-2,.grid-3{grid-template-columns:1fr}}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spacer{flex:1}.muted{color:var(--text2);font-size:12px}canvas{max-width:100%}.graph-canvas{height:480px}.hint{color:var(--text2);font-size:12px;margin-top:6px}.kbd{display:inline-block;padding:1px 6px;border:1px solid var(--glass-border);border-bottom-width:2px;border-radius:5px;font-size:11px;background:var(--glass-bg-soft)}.pip-btn{position:fixed;right:18px;bottom:18px;z-index:50;box-shadow:var(--shadow);animation:pop .3s ease}@keyframes pop{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.progress-track{height:6px;background:var(--glass-bg-soft);border-radius:3px;overflow:hidden;margin:8px 0}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));transition:width .2s}.empty{text-align:center;color:var(--text2);padding:60px 20px;border:1px dashed var(--glass-border);border-radius:var(--radius);background:var(--glass-bg-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.link{color:var(--accent2);cursor:pointer;text-decoration:underline}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--glass-border);font-size:13px}th{color:var(--text2);font-weight:600}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--glass-border);margin-bottom:14px;flex-wrap:wrap}.tab{padding:7px 14px;border:none;background:transparent;color:var(--text2);cursor:pointer;border-bottom:2px solid transparent;font-size:13px;transition:color .15s}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.announce-overlay{position:fixed;inset:0;z-index:200;background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}.announce-card{position:relative;overflow:hidden;width:calc(100% - 40px);max-width:400px;padding:28px 24px 22px;border-radius:18px;animation:pop .3s ease}.announce-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--accent),var(--accent2))}.announce-badge{display:inline-block;padding:3px 14px;border-radius:999px;background:linear-gradient(120deg,var(--accent),var(--accent2));color:#fff;font-size:12px;font-weight:700;letter-spacing:2px;margin-bottom:16px;box-shadow:0 2px 10px var(--accent-soft)}.announce-content{font-size:14px;line-height:1.9}.announce-line{margin:0 0 8px}.announce-author{color:var(--text2)}.announce-author a{color:var(--accent2);text-decoration:none;font-weight:600;border-bottom:1px dashed var(--accent2)}.announce-actions{display:flex;justify-content:flex-end;margin-top:18px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.drag-handle{display:inline-flex;align-items:center;justify-content:center;width:20px;color:var(--text2);font-weight:700;letter-spacing:-1px;cursor:grab;user-select:none}.drag-handle:active{cursor:grabbing}.ctx-overlay{position:fixed;inset:0;z-index:150}.ctx-menu{position:fixed;z-index:160;min-width:160px;border-radius:12px;padding:6px;animation:pop .12s ease}.ctx-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border:none;background:transparent;color:var(--text);border-radius:8px;cursor:pointer;font-size:13px;text-align:left;transition:background .12s}.ctx-item:hover{background:var(--glass-bg-soft)}.ctx-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:40;overflow-x:auto;gap:2px;padding:8px 8px calc(8px + env(safe-area-inset-bottom));border-left:none;border-right:none;border-bottom:none;scrollbar-width:none}.mobile-nav::-webkit-scrollbar{display:none}.mnav-item{flex:1 0 auto;min-width:60px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 10px;border:none;background:transparent;color:var(--text2);border-radius:12px;cursor:pointer;font-size:11px;transition:color .15s,background .15s}.mnav-icon{font-size:18px;line-height:1}.mnav-item.active{color:var(--accent);background:var(--accent-soft);font-weight:600}@media(max-width:768px){.app{flex-direction:column}.sidebar{display:none}.main{padding:12px 14px calc(72px + env(safe-area-inset-bottom))}.topbar{top:-12px;margin:-12px -14px 14px;padding:calc(12px + env(safe-area-inset-top)) 14px 10px;border-radius:0}.topbar-title{font-size:15px}.mobile-nav{display:flex}.page-head h1{font-size:17px}.page-head{margin-bottom:12px}.grid-2,.grid-3{grid-template-columns:1fr;gap:12px}.card{padding:13px;margin-bottom:12px}.toolbar .input{max-width:100%}.graph-canvas{height:58vh}.empty{padding:40px 16px}.paste-hint,.drag-hint{display:none}.result-box{max-height:220px}table{display:block;overflow-x:auto;white-space:nowrap}.markdown-body{font-size:14px}}.markdown-body{line-height:1.75;word-break:break-word}.markdown-body h1,.markdown-body h2,.markdown-body h3{margin:.8em 0 .4em}.markdown-body h1{font-size:1.3em}.markdown-body h2{font-size:1.15em}.markdown-body h3{font-size:1em}.markdown-body code{background:var(--glass-bg-strong);border:1px solid var(--glass-border);padding:1px 6px;border-radius:5px;font-family:var(--mono);font-size:12.5px}.markdown-body pre{background:var(--glass-bg-strong);border:1px solid var(--glass-border);border-radius:8px;padding:12px;overflow-x:auto}.markdown-body pre code{background:none;border:none;padding:0}.markdown-body img{max-width:100%;border-radius:8px}.markdown-body blockquote{margin:.5em 0;padding:4px 14px;border-left:3px solid var(--accent);color:var(--text2);background:var(--glass-bg-soft);border-radius:0 8px 8px 0}.markdown-body a{color:var(--accent2)}.markdown-body table{margin:.5em 0}
