.head-row{display:flex;align-items:baseline;justify-content:space-between}.tabs{display:flex;gap:8px;margin:14px 0 18px}.tab{padding:8px 14px;border-radius:999px;border:1px solid var(--panel-border);background:var(--panel);color:var(--text-dim);font-size:13.5px;cursor:pointer}.tab.active{color:var(--text);border-color:#7fb4ff8c}.badge{display:inline-block;min-width:18px;padding:1px 5px;border-radius:999px;background:#ffb37f2e;color:var(--accent-warm);font-size:11.5px;text-align:center}.badge:empty{display:none}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}.cell{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--panel);border:1px solid var(--panel-border);cursor:pointer;padding:0}.cell img{width:100%;height:100%;object-fit:cover;display:block}.cell .tag{position:absolute;left:6px;bottom:6px;right:6px;font-size:10.5px;color:#ffffffe6;text-shadow:0 1px 3px rgba(0,0,0,.9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.cell .flag{position:absolute;top:6px;right:6px;font-size:12px;padding:2px 6px;border-radius:7px;background:#0000008c}.cell .flag.np{color:var(--accent-warm)}.cell .flag.fav{color:#ffd76b}.cell .flag.err{color:var(--danger)}.cell.processing:after{content:"processing…";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:11px;color:var(--text-dim);background:#0000088c}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000599;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:20}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:21;max-height:86vh;overflow-y:auto;background:#070b18;border-top:1px solid var(--panel-border);border-radius:18px 18px 0 0;padding-bottom:max(env(safe-area-inset-bottom),14px)}@media(min-width:720px){.sheet{left:50%;right:auto;transform:translate(-50%);width:560px}}.sheet-photo{width:100%;max-height:42vh;object-fit:contain;background:#000;display:block}.sheet-body{padding:16px 18px 6px}.sheet-title{display:flex;justify-content:space-between;align-items:start;gap:12px}.sheet-place{font-size:18px;font-weight:650}.sheet-place.unplaced{color:var(--accent-warm)}.sheet-date{font-size:13px;color:var(--text-dim);margin-top:2px}.fav{font-size:22px;background:none;border:1px solid var(--panel-border);border-radius:10px;color:var(--text-dim);padding:6px 12px;cursor:pointer}.fav.on{color:#ffd76b;border-color:#ffd76b80}.place-edit{margin-top:16px}.place-edit input{width:100%;padding:12px 13px;border-radius:10px;border:1px solid var(--panel-border);background:var(--panel);color:var(--text);font-size:15px;outline:none}.place-results{display:flex;flex-direction:column;gap:4px;margin-top:6px}.place-results button{text-align:left;padding:10px 12px;border-radius:9px;border:1px solid var(--panel-border);background:var(--panel);color:var(--text);font-size:14px;cursor:pointer}.place-results button:hover{border-color:#7fb4ff8c}.place-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.place-chips button{padding:6px 11px;border-radius:999px;border:1px solid var(--panel-border);background:none;color:var(--text-dim);font-size:12.5px;cursor:pointer}.place-chips button:hover{color:var(--text);border-color:#7fb4ff8c}.sheet-actions{display:flex;justify-content:space-between;margin-top:18px;padding-top:14px;border-top:1px solid var(--panel-border)}.sheet-actions button{padding:10px 16px;border-radius:10px;font-size:14.5px;cursor:pointer;border:1px solid var(--panel-border);background:none}.sheet-actions .danger{color:var(--danger);border-color:#ff8f8f59}.sheet-actions .danger.confirm{background:#ff8f8f26;font-weight:600}.sheet-actions .ghost{color:var(--text)}.cell .flag.full{color:#9fdcff;font-size:10px;left:6px;right:auto}.cell .frame-btn{position:absolute;right:6px;bottom:28px;z-index:3;border:1px solid rgba(255,215,106,.7);background:#140e04e0;color:#ffe7a0;border-radius:999px;font-size:11px;font-weight:600;padding:4px 10px;cursor:pointer}.frame-edit{margin-top:16px}.frame-status{font-size:13px;color:var(--text-dim);margin:0 0 8px}.frame-edit-btns{display:flex;gap:8px;flex-wrap:wrap}.frame-edit-btns button{padding:10px 16px;border-radius:10px;font-size:14.5px;cursor:pointer;border:1px solid var(--panel-border);background:none;color:var(--text)}.frame-edit-btns button.active{border-color:#ffd76b8c;color:#ffd76b}.frame-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#05070c;flex-direction:column}.frame-overlay.show{display:flex}.frame-toolbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:10px 12px 8px;padding-top:max(10px,env(safe-area-inset-top))}.frame-toolbar button{border:1px solid rgba(127,180,255,.3);background:#141c2cb3;color:#cfe6ff;border-radius:999px;padding:8px 14px;font-size:13px;cursor:pointer}.frame-toolbar button.active{border-color:#ffd76a;color:#ffd76a;background:#50320a73}.frame-toolbar .frame-spacer{flex:1}.frame-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:8px 12px}.frame-photo-wrap{position:relative;display:inline-block;max-width:100%;max-height:100%}.frame-photo-wrap img{display:block;max-width:min(96vw,1100px);max-height:calc(100dvh - 150px);width:auto;height:auto;background:#000}.frame-rect{position:absolute;border:2px solid #ffd76a;box-shadow:0 0 0 9999px #0000007a;cursor:grab;touch-action:none}.frame-rect.suggest{border-style:dashed;border-color:#ffd678d9;background:#ffd67814}.frame-rect.hidden{display:none}.frame-handle{position:absolute;width:22px;height:22px;background:#ffd76a;border-radius:3px;touch-action:none}.frame-handle.nw{left:-11px;top:-11px;cursor:nwse-resize}.frame-handle.ne{right:-11px;top:-11px;cursor:nesw-resize}.frame-handle.sw{left:-11px;bottom:-11px;cursor:nesw-resize}.frame-handle.se{right:-11px;bottom:-11px;cursor:nwse-resize}.frame-hint-bar{text-align:center;font-size:12px;color:#9fb0c8;padding:6px 14px calc(10px + env(safe-area-inset-bottom))}.toast{position:fixed;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translate(-50%);z-index:50;background:#0c1220f0;border:1px solid rgba(127,180,255,.35);color:var(--text);border-radius:999px;padding:10px 16px;font-size:13.5px;max-width:90vw;text-align:center}.toast.err{border-color:#ff8f8f73;color:var(--danger)}
