[hidden]{display:none!important}
:root{--ink:#0b0f17;--ink2:#121826;--ink3:#1b2233;--gold:#c99a4b;--gold2:#e7c47d;--cr:#9e1c22;--cream:#f5ead4;--mut:#9aa3b5}
*{box-sizing:border-box}html,body{margin:0;background:var(--ink);color:#eee;font:16px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}
button,input,select,textarea{font:inherit}button{cursor:pointer;border-radius:3px;border:1px solid transparent;padding:10px 14px}
.pri{background:var(--cr);color:#fff;border-color:#c23a3f}.sec{background:var(--gold);color:#111}.ghost{background:transparent;color:var(--gold2);border-color:#3a4256}.danger{background:#3a1215;color:#ff9b9b;border-color:#6b2328}.sm{padding:6px 10px;font-size:14px}
button:disabled{opacity:.5}
.login{display:grid;place-items:center;min-height:100vh;padding:20px}.login form{width:100%;max-width:360px;background:var(--ink2);padding:28px;border:1px solid #2a3245;border-radius:3px}
.login h1{margin:0;color:var(--gold2);font-family:Georgia,serif}.login p{color:var(--mut);margin:4px 0 18px}
label{display:block;margin:10px 0;font-size:14px;color:var(--mut)}input,textarea,select{display:block;width:100%;margin-top:4px;padding:10px;background:#0e131e;color:#eee;border:1px solid #2f3850;border-radius:3px}
.login button{width:100%;margin-top:12px}.err{color:#ff8a8a;margin-top:10px;min-height:1.2em}
.top{position:sticky;top:0;z-index:5;display:flex;gap:10px;align-items:center;padding:10px 12px;background:var(--ink2);border-bottom:1px solid #263047}
.top select{width:auto;margin:0;font-weight:600;color:var(--gold2)}.status{flex:1;font-size:13px;color:var(--mut);text-align:right}.status.dirty{color:#ffcf6e}
.tabs{display:flex;gap:6px;padding:10px 12px;overflow-x:auto}.tabs button{background:var(--ink3);color:#ddd}.tabs button[aria-pressed=true]{background:var(--gold);color:#111}
main{padding:0 12px 110px;max-width:860px;margin:0 auto}
.secc{background:var(--ink2);border:1px solid #263047;border-radius:3px;margin:12px 0}.secc.dragging,.dish.dragging{opacity:.6;outline:2px dashed var(--gold)}
.sh{display:flex;align-items:center;gap:8px;padding:10px;border-bottom:1px solid #263047}.sh h3{margin:0;flex:1;font-size:17px;color:var(--gold2)}.sh small{display:block;color:var(--mut);font-weight:400}
.handle{touch-action:none;cursor:grab;color:var(--mut);font-size:20px;padding:6px 8px;user-select:none;line-height:1}
.dish{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid #1d2435;background:var(--ink2)}.dish:last-child{border-bottom:0}
.dish .th{width:44px;height:44px;border-radius:3px;object-fit:cover;background:#0e131e;flex:none}.dish .tx{flex:1;min-width:0}.dish .nm{font-weight:600}.dish .ds{font-size:13px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dish .pr{color:var(--gold2);font-weight:600}.dish.del{opacity:.45}.dish.del .nm{text-decoration:line-through}
.tg{font-size:11px;padding:1px 5px;border:1px solid #3a4256;border-radius:2px;margin-right:3px;color:#cfd6e4}
.add{display:block;width:calc(100% - 20px);margin:10px;background:transparent;border:1px dashed #3a4256;color:var(--gold2)}
.bar{position:fixed;left:0;right:0;bottom:0;display:flex;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--ink2);border-top:1px solid #263047;z-index:5}.bar button{flex:1}
dialog{background:var(--ink2);color:#eee;border:1px solid #2f3850;border-radius:3px;width:min(560px,96vw);padding:18px}dialog::backdrop{background:#000a}
dialog h2{margin:0 0 6px;color:var(--gold2)}.row{display:flex;gap:8px;align-items:center;margin-top:14px;flex-wrap:wrap}.sp{flex:1}
fieldset{border:1px solid #2f3850;border-radius:3px;margin:10px 0}legend{color:var(--mut);font-size:14px}
.chips{display:flex;flex-wrap:wrap;gap:6px}.chips label{margin:0;display:flex;gap:6px;align-items:center;background:var(--ink3);padding:6px 10px;border-radius:3px;color:#ddd}.chips input{width:auto;margin:0}
.photo img{max-width:100%;max-height:180px;border-radius:3px;display:block}.file{display:inline-block;background:var(--ink3);padding:8px 12px;color:var(--gold2);border-radius:3px}.file input{display:none}.hint{font-size:13px;color:var(--mut);margin-top:6px}
dialog.full{width:100vw;max-width:100vw;height:100vh;max-height:100vh;margin:0;padding:0;display:none;flex-direction:column}dialog.full[open]{display:flex}
.ph{display:flex;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid #263047}.ph b{flex:1}.pw{padding:6px 12px;display:flex;gap:6px}
#prevFrame{flex:1;border:0;background:#fff;width:100%;margin:0 auto;max-width:100%}
#histList,#pubList{padding:0 12px;overflow:auto}#dlgHist h3{padding:0 12px;color:var(--gold2)}.hv{display:flex;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #1d2435;font-size:14px}.hv div{flex:1}.hv small{color:var(--mut)}
.toast{position:fixed;left:50%;bottom:84px;transform:translateX(-50%);background:#222a3c;border:1px solid var(--gold);padding:10px 14px;border-radius:3px;z-index:99;display:flex;gap:12px;align-items:center;max-width:92vw}
.toast button{padding:4px 10px}
.pubst{font-size:12px;padding:2px 6px;border-radius:2px;background:#263047}.pubst.queued,.pubst.applied{background:#1f4d2e}.pubst.failed{background:#5a1d22}
