:root{--bg:#f2f3f5;--card:#fff;--ink:#1c1e21;--muted:#65696f;--accent:#c8102e;--accent-dark:#9c0c24;--header:#15181d;--border:#e3e5e8}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0}#root{flex-direction:column;min-height:100dvh;display:flex}main{flex-direction:column;flex:1;width:100%;max-width:60rem;margin:0 auto;padding:1.25rem;font-family:system-ui,sans-serif;display:flex}header{background:var(--header);color:#fff;border-radius:12px;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.25rem;display:flex;box-shadow:0 2px 10px #0000002e}header h1{letter-spacing:.01em;align-items:center;gap:.8rem;margin:0;font-size:1.15rem;font-weight:600;display:flex}header .logo{height:2.1rem}header button{color:#fff;cursor:pointer;font:inherit;background:0 0;border:1px solid #ffffff59;border-radius:6px;padding:.3rem .8rem;font-size:.85rem}header button:hover{background:#ffffff1f}.who{align-items:center;gap:.7rem;font-size:.9rem;display:flex}.demo-bar{color:#4a3a00;letter-spacing:.01em;background:#ffd23f;font-family:system-ui,sans-serif;font-size:.8rem}.demo-bar-inner{flex-wrap:wrap;align-items:center;gap:.75rem;max-width:60rem;margin:0 auto;padding:.4rem 1.25rem;display:flex}.demo-chip{color:#ffd23f;letter-spacing:.08em;background:#4a3a00;border-radius:4px;padding:.15rem .5rem;font-size:.7rem;font-weight:700}.demo-who{margin-left:auto}.demo-bar button{color:#ffd23f;cursor:pointer;font:inherit;background:#4a3a00;border:none;border-radius:999px;padding:.2rem .8rem;font-size:.75rem}.demo-bar button:hover{background:#2e2400}.browser,.login{background:var(--card);border:1px solid var(--border);border-radius:12px;margin-top:1rem;padding:1.25rem;box-shadow:0 1px 4px #0000000d}.login{text-align:center;padding:3rem 1.5rem}.login button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.6rem 1.4rem;font-size:1rem}.login button:hover{background:var(--accent-dark)}.signed-out h2{margin:0 0 1.1rem;font-size:1.3rem}.browser button{cursor:pointer;font:inherit;background:#fff;border:1px solid #c9ccd1;border-radius:6px;padding:.25rem .7rem;font-size:.85rem}.browser button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.browser button:disabled{opacity:.55;cursor:default}.browser button.danger{color:#b00020;border-color:#e0b6bd}.browser button.danger:hover:not(:disabled){background:#fbeef0;border-color:#b00020}nav button,.browser button.linklike{color:var(--accent);cursor:pointer;font-size:inherit;background:0 0;border:none;padding:0}nav button:hover,.browser button.linklike:hover{color:var(--accent);text-decoration:underline}nav[aria-label=breadcrumbs]{flex-wrap:wrap;align-items:center;gap:.25rem;display:flex}.cli-hint{flex-direction:column;align-items:flex-end;gap:.15rem;margin-left:auto;display:flex}.cli-hint .hint{font-size:.75rem}.entries{margin:.75rem 0 0;padding:0;list-style:none}.entries li{border-radius:8px;flex-wrap:wrap;align-items:center;gap:.6rem;padding:.45rem .6rem;display:flex}.entries li:hover{background:#f6f7f9}.entries li.highlight{background:#c8102e12}.entries .name{flex:1;min-width:12rem}.error{color:#b00020}.ok{color:#2e7d32}.hint,small{color:var(--muted)}.cli-command code{background:#f4f4f6;border-radius:4px;padding:.1rem .4rem}.cli-command button{margin-left:.4rem}.uploader{display:contents}.transfer-list{z-index:15;flex-direction:column;gap:.4rem;width:20rem;max-width:calc(100vw - 2rem);margin:0;padding:0;list-style:none;display:flex;position:fixed;bottom:1rem;right:1rem}.transfer-list li{border:1px solid var(--border);background:#fff;border-radius:10px;flex-wrap:wrap;align-items:center;gap:.6rem;padding:.5rem .8rem;font-size:.85rem;display:flex;box-shadow:0 4px 16px #00000024}.toast-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.transfer-list progress{width:7rem}.transfer-list .error{overflow-wrap:anywhere}.transfer-list button{cursor:pointer;color:var(--muted);background:0 0;border:none;padding:0 .2rem;font-size:1rem;line-height:1}.transfer-list button:hover{color:#b00020}.drop-overlay{z-index:20;pointer-events:none;border:4px dashed var(--accent);color:var(--accent);background:#c8102e14;justify-content:center;align-items:center;font-size:1.3rem;font-weight:600;display:flex;position:fixed;inset:0}.drop-overlay code{background:#fff;border-radius:6px;margin-left:.4rem;padding:.1rem .5rem}progress{accent-color:var(--accent)}.browser button.icon-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.25rem;line-height:0}.browser button.icon-btn:hover:not(:disabled){color:var(--accent);background:#f0f1f3}.browser button.icon-btn.danger{color:var(--muted);border:none}.browser button.icon-btn.danger:hover:not(:disabled){color:#b00020;background:#fbeef0}.toolbar{flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:.9rem;display:flex}.modal-overlay{z-index:10;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;width:calc(100% - 2rem);max-width:26rem;padding:1.25rem 1.5rem;box-shadow:0 12px 40px #00000040}.modal-title{margin:0 0 .25rem;font-weight:600}.modal-details{color:#8a2530;margin:.5rem 0 0;padding-left:1.1rem;font-size:.9rem}.modal-actions{gap:.6rem;margin-top:1rem;display:flex}.modal-stats{max-width:44rem;max-height:calc(100vh - 4rem);overflow-y:auto}.stats-tiles{grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));gap:.6rem;margin:.9rem 0 .8rem;display:grid}.stat-tile{background:var(--bg);border:1px solid var(--border);text-align:center;border-radius:10px;padding:.55rem .5rem}.stat-tile .stat-value{font-size:1.15rem;font-weight:600;display:block}.stat-tile .stat-label{color:var(--muted);margin-top:.1rem;font-size:.75rem;display:block}.stats-range{margin:0 0 .25rem;font-size:.9rem}.stats-meta{color:var(--muted);flex-wrap:wrap;gap:.1rem .5rem;margin:0 0 .9rem;font-size:.85rem;display:flex}.stats-meta span+span:before{content:"·";margin-right:.5rem}.stats-topics{border-collapse:collapse;width:100%;font-size:.85rem}.stats-topics th{text-align:left;border-bottom:1px solid #c9ccd1;padding:.25rem .5rem .25rem 0;font-weight:600}.stats-topics th.num,.stats-topics td.num{text-align:right}.stats-topics td{border-bottom:1px solid #eef0f2;padding:.2rem .5rem .2rem 0}.stats-topics td:first-child{word-break:break-all;font-family:ui-monospace,monospace}.stats-topics th .linklike{font-weight:600}.new-folder-form{flex-wrap:wrap;align-items:center;gap:.4rem;display:inline-flex}.new-folder-form input{font:inherit;border:1px solid #c9ccd1;border-radius:6px;width:12rem;padding:.2rem .5rem;font-size:.85rem}.foxglove-view{z-index:5;background:#fff;flex-direction:column;display:flex;position:fixed;inset:0}.foxglove-title{font-weight:600}.foxglove-frame{flex:1;min-height:0}.foxglove-frame iframe{border:0;width:100%;height:100%}.foxglove-panel{text-align:center;max-width:32rem;margin:auto;padding:1rem}.notfound{background:var(--card);border:1px solid var(--border);text-align:center;border-radius:12px;max-width:40rem;margin:2rem auto 0;padding:3rem 1.5rem;box-shadow:0 1px 4px #0000000d}.notfound-flag{font-size:2.5rem;line-height:1}.notfound-code{letter-spacing:.05em;color:var(--accent);margin-top:.4rem;font-size:4rem;font-weight:800;line-height:1}.notfound-checker{border:1px solid var(--border);background-color:#fff;background-image:linear-gradient(45deg, var(--ink) 25%, transparent 25%), linear-gradient(-45deg, var(--ink) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--ink) 75%), linear-gradient(-45deg, transparent 75%, var(--ink) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border-radius:3px;width:8rem;height:12px;margin:.9rem auto 0}.notfound h2{margin:1rem 0 .4rem;font-size:1.4rem}.notfound p{color:var(--muted);max-width:32rem;margin:0 auto 1.3rem}.notfound button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.6rem 1.4rem;font-size:1rem}.notfound button:hover{background:var(--accent-dark)}.credits{width:fit-content;color:var(--muted);margin:auto auto 0;padding:1.5rem 0 .5rem;font-size:.8rem}.credits .heart{display:inline-block}.credits .version{opacity:.75;margin-left:.6em}.credits:hover .heart{animation:1.2s ease-in-out infinite heartbeat}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.35)}30%{transform:scale(1)}45%{transform:scale(1.2)}}@media (prefers-reduced-motion:reduce){.credits .heart{animation:none}}
