:root{--board:#CDCDCB;--paper:#E4E4E1;--ink:#161616;--ink-2:#4A4A47;--red:#C8262E;--white:#FBFBF8;
--display:"Anton","Impact","Arial Narrow Bold",sans-serif;--body:"Libre Franklin","Helvetica Neue",Arial,sans-serif;
--mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;--ease:cubic-bezier(0.22,1,0.36,1)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;overflow-x:hidden;background:var(--paper);color:var(--ink);font:16px/1.5 var(--body);min-height:100vh;display:flex;flex-direction:column}
main{flex:1;width:100%;min-width:0;max-width:1320px;margin:0 auto;padding:24px 16px 48px}
a{color:inherit}
h1,h2{font-family:var(--display);font-weight:400;text-transform:uppercase;letter-spacing:.01em;line-height:1.05;margin:0 0 .4em}
h1{font-size:clamp(28px,5vw,56px);overflow-wrap:anywhere}h2{font-size:26px}
.mono{font-family:var(--mono);font-size:13px;color:var(--ink-2)}
.red-text{color:var(--red)}
.lede{font-size:18px;color:var(--ink-2);max-width:62ch}
.kicker{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;font-size:12px;color:var(--red);margin:0 0 8px}
/* header */
.top{position:sticky;top:0;z-index:5;background:var(--board);border-bottom:3px solid var(--ink);display:flex;align-items:center;gap:16px;padding:8px 16px;flex-wrap:wrap}
.brand img{height:54px;display:block}
.search{flex:1 1 260px;min-width:0;display:flex}
.search input{flex:1;min-width:0;font:inherit;padding:10px 12px;border:2px solid var(--ink);border-right:0;background:var(--white);border-radius:0}
.search button{font:14px var(--display);text-transform:uppercase;letter-spacing:.06em;padding:0 16px;border:2px solid var(--ink);background:var(--ink);color:var(--white);cursor:pointer}
.top nav{display:flex;gap:14px;flex-wrap:wrap;font-weight:700;font-size:14px}
.top nav a{text-decoration:none;border-bottom:2px solid transparent}
.top nav a:hover{border-color:var(--red)}
.muted{color:var(--ink-2)}
.foot{border-top:2px solid var(--ink);padding:16px;font-family:var(--mono);font-size:12px;color:var(--ink-2);text-align:center}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:15px var(--display);text-transform:uppercase;letter-spacing:.06em;
padding:11px 18px;border:2px solid var(--ink);background:var(--white);color:var(--ink);cursor:pointer;text-decoration:none;transition:transform .2s var(--ease),background .2s}
.btn:hover{transform:translateY(-1px)}
.btn.red{background:var(--red);border-color:var(--red);color:var(--white)}
.btn.ghost{background:transparent}
.btn.block{display:flex;width:100%;margin:10px 0}
.btn:disabled{opacity:.6;cursor:wait;transform:none}
.lunanet{background:var(--ink);color:var(--white)}
.spark{color:#ffd166}.spin{display:inline-block;animation:spin 1.2s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
/* login */
.login{max-width:420px;margin:6vh auto 0;text-align:center}
.login-logo{width:260px;max-width:80%;background:var(--board);padding:12px}
.login form{text-align:left;margin-top:20px;display:grid;gap:14px}
label{display:grid;gap:4px;font-weight:700;font-size:14px}
input{font:inherit;padding:10px 12px;border:2px solid var(--ink);background:var(--white);border-radius:0}
.error{color:var(--red);font-weight:700;min-height:1.2em;margin:6px 0}
.note{font-size:13px;color:var(--ink-2)}
/* home */
.hero{padding:24px 0 8px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-top:20px}
.card{display:block;text-decoration:none;background:var(--white);border:3px solid var(--ink);padding:24px;box-shadow:6px 6px 0 var(--ink);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.card:hover{transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--red)}
.badge.off{background:var(--red);color:var(--white);padding:2px 8px}
/* browse */
.crumbs{font-family:var(--mono);font-size:13px;display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.crumbs a{text-decoration:none;border-bottom:1px solid var(--ink-2)}.crumbs span{color:var(--ink-2)}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.newfolder{display:flex;gap:6px}
.folders{list-style:none;padding:0;margin:0 0 24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.folders a{display:flex;gap:10px;align-items:center;padding:12px 14px;background:var(--white);border:2px solid var(--ink);text-decoration:none;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.folders a:hover{border-color:var(--red);color:var(--red)}
.ico{font-size:18px;color:var(--red)}
.grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}
.grid a{display:block;text-decoration:none}
.tile{aspect-ratio:1;background:var(--board);border:2px solid var(--ink);display:flex;align-items:center;justify-content:center;overflow:hidden}
.tile img{width:100%;height:100%;object-fit:cover;transition:transform .4s var(--ease)}
.grid a:hover .tile img{transform:scale(1.04)}
.cap{display:flex;flex-direction:column;padding:6px 2px}
.name{font-weight:700;font-size:14px;overflow-wrap:anywhere}
.type{font-family:var(--display);font-size:20px;letter-spacing:.05em;padding:6px 10px;background:var(--ink);color:var(--white)}
.type.t-video{background:var(--red)}.type.t-pdf{background:#7a1a1f}.type.t-design{background:var(--ink-2)}
.type.big{font-size:40px;padding:12px 20px}
.empty{color:var(--ink-2);font-size:18px}
/* viewer */
.viewer{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}
.stage{background:var(--board);border:3px solid var(--ink);min-height:50vh;display:flex;align-items:center;justify-content:center;position:relative}
.stage img,.stage video{max-width:100%;max-height:78vh;display:block}
.stage iframe{width:100%;height:78vh;border:0;background:var(--white)}
.stage.working::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);background-size:200% 100%;animation:sweep 1.4s linear infinite}
@keyframes sweep{from{background-position:200% 0}to{background-position:-200% 0}}
.nopreview{text-align:center;padding:40px}
.panel{background:var(--white);border:3px solid var(--ink);padding:20px;position:sticky;top:90px}
.fname{font-size:26px;overflow-wrap:anywhere;word-break:break-word}
.toggle{display:flex;margin:16px 0 8px;border:2px solid var(--ink)}
.toggle button{flex:1;font:14px var(--display);text-transform:uppercase;letter-spacing:.06em;padding:8px;border:0;background:var(--white);cursor:pointer}
.toggle button.on{background:var(--ink);color:var(--white)}
#changes{padding-left:18px;font-size:14px}
.pager{display:flex;justify-content:space-between;gap:8px;margin-top:12px}
/* search */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.chips a{font-size:13px;font-weight:700;text-decoration:none;padding:6px 12px;border:2px solid var(--ink);background:var(--white)}
.chips a.on{background:var(--ink);color:var(--white)}
.results{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.results a{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:14px;align-items:center;padding:8px;background:var(--white);border:2px solid var(--ink);text-decoration:none}
.results a:hover{border-color:var(--red)}
.rthumb{width:64px;height:64px;background:var(--board);display:flex;align-items:center;justify-content:center;overflow:hidden}
.rthumb img{width:100%;height:100%;object-fit:cover}.rthumb .type{font-size:12px;padding:3px 5px}
.where{display:block;overflow-wrap:anywhere}
/* settings */
.settings{max-width:760px}
.box{background:var(--white);border:3px solid var(--ink);padding:20px;margin:18px 0}
.box form{display:flex;gap:8px;flex-wrap:wrap}.box input{flex:1;min-width:200px}
.people{list-style:none;padding:0;display:grid;gap:12px}
.people li{display:grid;gap:4px}
@media (max-width:860px){
  .viewer{grid-template-columns:minmax(0,1fr)}.panel{position:static}
  .brand img{height:42px}.search{order:3;flex-basis:100%}.top nav{order:2;flex:1;justify-content:flex-end;gap:10px;font-size:13px}
  .top{gap:10px}main{padding-top:16px}
  .grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}
  .results a{grid-template-columns:48px minmax(0,1fr)}.results a>.mono{display:none}.rthumb{width:48px;height:48px}
}
.stage audio{width:min(560px,90%)}
.stage{flex-direction:column}
.preparing{font-family:var(--mono);font-size:13px;margin:12px;text-align:center}
.textview{width:100%;max-height:78vh;overflow:auto;margin:0;padding:20px;background:var(--white);font:13px/1.5 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}
.ziplist{width:100%;max-height:78vh;overflow:auto;background:var(--white);padding:16px 20px}
.ziplist ul{list-style:none;margin:0;padding:0}.ziplist li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--board);overflow-wrap:anywhere}
.tile img+.type,.rthumb img+.type{display:none}
.stage .audioart{max-height:52vh;margin:16px auto 8px}
