:root { --fg:#111; --muted:#777; --bg:#f5f5f3; --card:#fff; --line:#e2e2e0; --accent:#111; --danger:#c0392b; }
* { box-sizing:border-box; }
body { margin:0; font:16px/1.5 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif; color:var(--fg); background:var(--bg); padding:0 16px 48px; }
a { color:inherit; }
.brand { display:flex; flex-direction:column; align-items:center; padding:40px 0 28px; }
.brand .logo { height:40px; width:auto; display:block; }
.brand .sub { margin-top:6px; letter-spacing:.35em; text-transform:uppercase; font-size:13px; color:var(--muted); padding-left:.35em; }
main { max-width:1100px; margin:0 auto; }
.card { background:var(--card); border:1px solid var(--line); border-radius:10px; padding:24px; margin-bottom:32px; }
.narrow { max-width:420px; }
h1 { font-size:22px; margin:0 0 8px; } h2 { font-size:18px; margin:0 0 16px; }
.muted { color:var(--muted); } .small { font-size:13px; }
.error { color:var(--danger); }
label { display:block; margin:14px 0; font-size:14px; }
label input[type=text], label input[type=password], label input[type=number], label input[type=file] { display:block; width:100%; margin-top:6px; padding:10px 12px; border:1px solid var(--line); border-radius:6px; font:inherit; background:#fff; }
label.check { display:flex; gap:8px; align-items:center; }
button { background:var(--accent); color:#fff; border:0; border-radius:6px; padding:11px 20px; font:inherit; cursor:pointer; }
button:disabled { opacity:.5; cursor:default; }
button.link { background:none; color:var(--muted); padding:0; text-decoration:underline; font-size:14px; }
button.danger { color:var(--danger); }
.logout { position:absolute; top:16px; right:16px; }
.progress { position:relative; height:24px; background:#eee; border-radius:6px; overflow:hidden; margin-top:16px; }
.progress .bar { height:100%; width:0; background:var(--accent); transition:width .15s; }
.progress .pct { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:13px; color:#fff; mix-blend-mode:difference; }
.status { min-height:1.5em; margin:10px 0 0; font-size:14px; }
.grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:20px; }
.project { background:var(--card); border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.project a { display:flex; flex-direction:column; text-decoration:none; }
.project img { width:100%; aspect-ratio:4/3; object-fit:cover; background:#eee; display:block; }
.project strong { padding:10px 12px 0; } .project .muted { padding:0 12px; font-size:13px; }
.project .del { padding:4px 12px 10px; }
#show { position:fixed; inset:0; background:#000; cursor:none; z-index:10; }
#show .slide { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; opacity:0; transition:opacity .8s ease; }
#show .slide.on { opacity:1; }
#show .paused { position:absolute; bottom:24px; left:50%; transform:translateX(-50%); color:#fff; background:rgba(0,0,0,.6); padding:6px 14px; border-radius:6px; font-size:14px; }
@media (max-width:600px) { .logout { position:static; text-align:right; padding-top:12px; } .brand { padding-top:16px; } }
