*{box-sizing:border-box}
:root{
  --bg:#f7f2e8; --bg-2:#fbf7ef; --surface:#fffdf8; --ink:#2c1e15; --muted:#8b7a6a;
  --line:#e9dfcf; --accent:#c0653a; --accent-d:#a9542f; --accent-soft:#f3e3d6; --danger:#b3402f;
}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--ink);font:14px/1.55 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif}
a{color:var(--accent-d);text-decoration:none}
/* login */
body.auth{display:grid;place-items:center;min-height:100vh;background:
  radial-gradient(700px 420px at 15% 0%,rgba(192,101,58,.10),transparent 60%),
  radial-gradient(700px 420px at 90% 100%,rgba(192,101,58,.06),transparent 60%),var(--bg)}
.login{width:min(390px,92vw);background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:30px;box-shadow:0 30px 70px -45px rgba(70,40,20,.45)}
.login .logo{width:52px;height:52px;border-radius:14px;margin:0 auto 12px;display:grid;place-items:center;color:#fff;font-weight:800;font-size:22px;background:linear-gradient(135deg,#d98a5f,#b85c38)}
.login h1{font-size:20px;text-align:center;margin:0 0 4px}
.login .sub{text-align:center;color:var(--muted);font-size:12.5px;margin:0 0 18px}
label{display:block;font-size:12.5px;color:#6b5747;font-weight:600;margin:10px 0}
input,textarea{width:100%;margin-top:5px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;color:var(--ink);background:#fff}
input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px rgba(192,101,58,.14)}
.login button{width:100%;margin-top:16px;padding:11px;border:0;border-radius:10px;font-weight:800;color:#fff;background:var(--accent);cursor:pointer}
.login button:hover{background:var(--accent-d)}
.err{margin:0 0 10px;padding:9px 12px;border-radius:10px;background:#fbeee9;border:1px solid #ecc9bc;color:#8f3524;font-size:13px;text-align:center}
/* app */
body.app{display:flex;flex-direction:column;min-height:100vh}
.top{display:flex;align-items:center;gap:14px;padding:16px 22px 6px;background:transparent}
.brand{color:var(--ink);font-weight:800;font-size:24px;letter-spacing:-.01em}
.top .sp{flex:1}
.add{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--accent);color:#fff;font-size:24px;font-weight:600;line-height:1;box-shadow:0 8px 18px -10px rgba(192,101,58,.9)}
.add:hover{background:var(--accent-d);color:#fff}
.btn{display:inline-flex;align-items:center;justify-content:center;height:34px;padding:0 13px;border-radius:9px;border:0;font:inherit;font-weight:700;font-size:12.5px;cursor:pointer}
.btn.ghost{background:transparent;color:var(--muted);border:1px solid var(--line)}
.btn.ghost:hover{color:var(--ink);border-color:#d9cbb6}
.btn.primary{background:var(--accent);color:#fff}
.btn.primary:hover{background:var(--accent-d)}
.btn.danger{background:#fbeee9;color:#8f3524;border:1px solid #ecc9bc}
.searchbar{padding:6px 22px 14px}
.search{max-width:none}
.search input{height:44px;border-radius:999px;background:#fffdf9;border:1px solid var(--line);padding:0 18px;font-size:14px}
.search input::placeholder{color:#a9968a}
.layout{flex:1;display:grid;grid-template-columns:320px 1fr;min-height:0;padding:0 22px 22px;gap:18px}
.list{background:var(--bg-2);border:1px solid var(--line);border-radius:16px;overflow:auto;padding:12px}
.empty{color:var(--muted);padding:26px 14px;text-align:center;line-height:1.8}
.item{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:12px;color:var(--ink);border:1px solid transparent}
.item:hover{background:#f5ecdd}
.item.active{background:#fff;border-color:var(--line);box-shadow:0 8px 20px -18px rgba(70,40,20,.5)}
.item .t{font-weight:700;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item .d{color:var(--muted);font-size:11.5px}
.editor{padding:2px 0;overflow:auto}
.editor form{max-width:900px;margin:0 auto;display:flex;flex-direction:column;gap:12px}
.title{font-size:22px;font-weight:800;border:0;background:transparent;padding:6px 2px}
.title:focus{box-shadow:none;border:0}
.body{min-height:52vh;resize:vertical;font-size:14.5px;line-height:1.65;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:16px}
.bar{display:flex;align-items:center;gap:10px}
.bar .sp{flex:1}
.meta{color:var(--muted);font-size:12px}
.saved{color:#7a4a1e;font-size:12.5px;background:#f7ead7;border:1px solid #e8d3b3;border-radius:8px;padding:7px 10px}
@media(max-width:820px){
  .layout{grid-template-columns:1fr;padding:0 14px 18px}
  .top{padding:14px 16px 4px}
  .searchbar{padding:6px 16px 12px}
  .brand{font-size:21px}
  .list{border:0;background:transparent;padding:0;max-height:36vh}
  .editor{padding:0}
  .body{min-height:36vh}
}

/* editor: tiêu đề + nút lưu cố định khi cuộn */
.editor form{gap:10px}
.ed-head{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:8px;background:var(--bg);padding:8px 0;border-bottom:1px solid var(--line)}
.ed-head .title{flex:1;min-width:0;margin:0;padding:8px 4px;font-size:22px}
.ed-head .btn{flex:none}
@media(max-width:820px){
  .editor{overflow:visible}
  .ed-head{top:0;padding:8px 0 10px}
  .ed-head .title{font-size:19px}
  .ed-head .btn{height:38px;padding:0 12px}
  .body{min-height:46vh}
}

/* mobile: tách màn hình danh sách và màn hình soạn thảo */
.back{display:none;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:#fffdf8;border:1px solid var(--line);color:var(--ink);font-size:18px;line-height:1;flex:none}
@media(max-width:820px){
  .top{padding:14px 14px 4px;gap:10px}
  .searchbar{padding:6px 14px 12px}
  body:not(.editing) .editor{display:none}
  body.editing .list{display:none}
  body.editing .back{display:inline-flex}
  .layout{display:block;padding:0 14px 18px}
  .list{max-height:none;overflow:visible;background:transparent;border:0;padding:0 0 12px}
  .editor{padding:0}
  .ed-head{top:0}
  .body{min-height:52vh}
}

/* loading khi luu */
.spin{display:inline-block;width:12px;height:12px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}
.btn[disabled]{opacity:.75;cursor:not-allowed}
