:root{--bg:#fff;--fg:#111;--fg-muted:#111;--fg-subtle:#ddd;--accent:#ec1c24;--font-mono:ui-monospace, "SF Mono", Menlo, Monaco, "Cascadia Mono", Consolas, "Courier New", monospace;--font-size:14px;--line-height:1.55;--border:1px solid var(--fg);--pad-xs:8px;--pad-sm:16px;--pad-md:24px;--pad-lg:32px}:root[data-theme=dark]{--bg:#111;--fg:#f0f0f0;--fg-muted:#f0f0f0;--fg-subtle:#333;--accent:#ec1c24}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-mono);font-size:var(--font-size);line-height:var(--line-height);color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;height:100vh;overflow:hidden}a{color:var(--fg);text-underline-offset:2px;text-decoration:underline}a:hover{color:var(--accent)}button{font-family:var(--font-mono)}.frame{background:var(--bg);flex-direction:column;display:flex;position:fixed;inset:0}.frame-header{border-bottom:var(--border);padding:var(--pad-sm) var(--pad-md);align-items:center;gap:var(--pad-sm);flex-shrink:0;height:56px;display:flex}.frame-header .logo{flex-shrink:0;width:auto;height:32px;display:block}.frame-header .subtitle{color:var(--fg-muted);margin-left:auto;font-size:12px}.frame-body{padding:var(--pad-md);scrollbar-width:thin;scrollbar-color:var(--fg-subtle) transparent;flex:1;position:relative;overflow-y:auto}.frame-footer{border-top:var(--border);padding:var(--pad-xs) var(--pad-md);color:var(--fg-muted);justify-content:space-between;align-items:center;gap:var(--pad-md);flex-wrap:wrap;flex-shrink:0;height:44px;font-size:11px;display:flex}.frame-footer a{color:var(--fg-muted);text-decoration:none}.frame-footer a:hover{color:var(--accent)}.muted{color:var(--fg-muted)}.accent{color:var(--accent)}.frame-categories{border-bottom:var(--border);padding:var(--pad-xs) var(--pad-md);gap:var(--pad-sm);scrollbar-width:none;flex-shrink:0;align-items:center;font-size:12px;display:flex;overflow-x:auto}.frame-categories::-webkit-scrollbar{display:none}.cat-btn{font-family:var(--font-mono);color:var(--fg-muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:0;font-size:12px}.cat-btn:hover{color:var(--accent)}.cat-btn.active{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.cat-count{color:#e03030;white-space:nowrap;flex-shrink:0;margin-left:auto;font-size:11px}.grid{gap:var(--pad-xs);grid-template-columns:repeat(auto-fill,minmax(80px,1fr));margin:0;padding:0;list-style:none;display:grid}.card{flex-direction:column;margin:0;display:flex}.card-image-wrapper{cursor:zoom-in;text-align:left;background:var(--fg-subtle);aspect-ratio:1;border:0;width:100%;padding:0;display:block;overflow:hidden}.card-image-wrapper img{object-fit:cover;width:100%;height:100%;transition:opacity .15s;display:block}.card-image-wrapper:hover img{opacity:.85}.card-caption{margin:var(--pad-xs) 0 0;color:var(--fg);font-size:12px;line-height:1.2;display:none}.card-meta{justify-content:space-between;align-items:baseline;gap:var(--pad-xs);color:var(--fg-muted);margin:0;font-size:11px;line-height:1.2;display:flex}.card-author{color:var(--fg-muted);font-size:11px;display:none}.card-date{color:var(--fg-muted);white-space:nowrap;font-size:11px}.card-author a{color:var(--fg-muted)}.card-author a:hover{color:var(--accent)}.month-divider{padding:var(--pad-sm) 0 var(--pad-xs);border-top:var(--border);color:var(--fg-muted);text-transform:lowercase;grid-column:1/-1;font-size:11px;list-style:none}.month-divider:first-child{border-top:none;padding-top:0}.grid.mode-large{gap:var(--pad-md);grid-template-columns:repeat(2,1fr)}.grid.mode-large .card-image-wrapper{aspect-ratio:4/3}.grid.mode-large .card-caption{font-size:13px;line-height:1.1}.grid.mode-large .card-author{font-size:12px;line-height:1.1}@media (min-width:481px){.grid.mode-large .card-caption,.grid.mode-large .card-author{display:block}}.empty{color:var(--fg-muted);text-align:center;margin:var(--pad-lg) 0;font-size:12px}.frame-body.mode-collage{padding:0;overflow:hidden}.collage-canvas{position:absolute;inset:0;overflow:hidden}.collage-block{pointer-events:none;position:absolute}.collage-item{cursor:zoom-in;transition:transform .12s;position:absolute}.collage-item:hover{z-index:999!important;transform:rotate(var(--r)) scale(1.04)!important}.collage-item img{width:100%;height:auto;display:block;box-shadow:1px 2px 8px #00000021}.shuffle-btn{z-index:1000;background:var(--bg);border:var(--border);color:var(--fg-muted);cursor:pointer;padding:4px 10px;font-size:11px;transition:color .1s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.shuffle-btn:hover{color:var(--accent)}.view-toggle{gap:4px;display:flex}.view-btn{color:var(--fg-muted);cursor:pointer;background:0 0;border:0;padding:0;font-size:11px;transition:color .1s}.view-btn:hover{color:var(--fg)}.view-btn.active{color:var(--fg);font-weight:500}.theme-btn{margin-left:12px}.modal{z-index:1000;padding:var(--pad-lg);background:#fffffff7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}:root[data-theme=dark] .modal{background:#111111f7}.modal-figure{flex-direction:column;align-items:center;max-width:90vw;max-height:90vh;margin:0;display:flex}.modal-figure img{object-fit:contain;max-width:100%;max-height:80vh}.modal-caption{margin:var(--pad-sm) 0 4px;color:var(--fg);text-align:center;font-size:13px}.modal-author{color:var(--fg-muted);text-align:center;margin:0;font-size:12px}.modal-close{top:var(--pad-sm);right:var(--pad-md);cursor:pointer;color:var(--fg-muted);background:0 0;border:0;padding:4px 8px;font-size:14px;line-height:1;position:absolute}.modal-close:hover{color:var(--accent)}.admin-section{margin-bottom:var(--pad-lg);max-width:720px}.section-heading{margin:0 0 var(--pad-sm);text-transform:lowercase;font-size:13px;font-weight:500}.field{margin-bottom:var(--pad-sm);flex-direction:column;gap:4px;display:flex}.field label{color:var(--fg-muted);font-size:11px}.field input,.field select,.token-input{font-family:var(--font-mono);border:var(--border);background:var(--bg);color:var(--fg);border-radius:0;padding:6px 8px;font-size:13px}.link-btn{color:var(--fg-muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:0;font-size:12px}.link-btn:hover{color:var(--accent)}.submit-btn{border:var(--border);background:var(--bg);color:var(--fg);cursor:pointer;padding:8px 16px;font-size:13px}.submit-btn:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}.submit-btn:disabled{opacity:.4;cursor:default}.status{margin-top:var(--pad-xs);font-size:12px}.status.error{color:var(--accent)}.status.success{color:var(--fg)}.drop{border:1px dashed var(--fg);padding:var(--pad-md);text-align:center;cursor:pointer;margin-bottom:var(--pad-sm);display:block}.drop.dragover{color:var(--accent);border-style:solid;border-color:var(--accent)}.drop p{margin:4px 0;font-size:12px}.drop .drop-hint{color:var(--fg-muted);font-size:11px}.drop img{max-width:100%;max-height:160px}.admin-list{margin:0;padding:0;list-style:none}.admin-item{align-items:center;gap:var(--pad-sm);padding:var(--pad-xs) 0;border-bottom:1px solid var(--fg-subtle);display:flex}.admin-item.dragging{opacity:.4}.admin-item.drag-over-top{box-shadow:0 -2px 0 var(--accent)}.admin-item.drag-over-bottom{box-shadow:0 2px 0 var(--accent)}.item-grip{cursor:grab;color:var(--fg-muted);-webkit-user-select:none;user-select:none;font-size:12px}.item-thumb{object-fit:cover;background:var(--fg-subtle);flex-shrink:0;width:48px;height:48px}.item-meta{flex:1;min-width:0}.item-meta p{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:12px;overflow:hidden}.item-actions{gap:var(--pad-xs);flex-shrink:0;display:flex}.edit-grid{flex-direction:column;flex:1;gap:4px;display:flex}.edit-grid input,.edit-grid select{font-family:var(--font-mono);border:1px solid var(--fg-subtle);background:var(--bg);color:var(--fg);padding:3px 6px;font-size:12px}@media (max-width:600px){.frame-header,.frame-body,.frame-footer,.frame-categories{padding-left:var(--pad-sm);padding-right:var(--pad-sm)}}@media (max-width:480px){.grid.mode-large{gap:var(--pad-sm);grid-template-columns:1fr}.grid.mode-small{grid-template-columns:repeat(auto-fill,minmax(60px,1fr))}.frame-header .subtitle,.view-toggle{display:none}}
