:root{
  --ink:#1f2328; --muted:#636c76; --line:#e3e6ea; --bg:#f6f7f9; --card:#fff;
  --accent:#7a2e4a; --accent-soft:#f6e9ee; --chip:#eef0f3;
}
body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang TC","Noto Sans TC","Microsoft JhengHei",sans-serif;font-size:16px}
a{color:var(--accent)}
.topbar{background:#fff;border-bottom:1px solid var(--line);padding:.6rem 0;position:sticky;top:0;z-index:20}
.brand{font-weight:700;color:var(--ink);text-decoration:none;font-size:1.1rem;margin-right:.5rem}
.brand i{color:var(--accent)}
.nav-a{color:var(--muted);text-decoration:none;padding:.25rem .5rem;border-radius:6px}
.nav-a.on,.nav-a:hover{color:var(--ink);background:var(--chip)}
.login-box{max-width:420px;margin:10vh auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:2rem}

.sidebar{font-size:.95rem}
@media(min-width:992px){.sidebar{position:sticky;top:64px;max-height:calc(100vh - 76px);overflow:auto}}
.side-sec{margin-bottom:1rem}
.side-h{font-size:.8rem;font-weight:700;color:var(--muted);letter-spacing:.05em;margin-bottom:.35rem}
.facet{display:inline-block;padding:.15rem .55rem;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--ink);text-decoration:none;font-size:.88rem}
.facet small{color:var(--muted)}
.facet:hover{border-color:var(--accent)}
.facet.on{background:var(--accent);border-color:var(--accent);color:#fff}
.facet.on small{color:#f3d6e0}
.pill-radio input{display:none}
.pill-radio span{display:inline-block;padding:.15rem .6rem;border-radius:999px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:.88rem}
.pill-radio span small{color:var(--muted)}
.pill-radio input:checked+span{background:var(--ink);color:#fff;border-color:var(--ink)}
.pill-radio input:checked+span small{color:#ccc}
.chip-x{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.1rem .6rem;text-decoration:none;font-size:.88rem}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.card-item{position:relative;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:box-shadow .15s}
.card-item:hover{box-shadow:0 4px 16px rgba(0,0,0,.08)}
.card-item.picked{outline:2px solid var(--accent)}
.card-item.dim{opacity:.6}
.card-item .stretched{color:inherit;text-decoration:none;display:block}
.pick{position:absolute;top:8px;left:8px;z-index:3;background:rgba(255,255,255,.9);border-radius:6px;padding:2px 5px;line-height:1}
.pick input{width:18px;height:18px;vertical-align:middle}
.thumb{position:relative;aspect-ratio:16/9;background:#eceef1;display:flex;align-items:center;justify-content:center;overflow:hidden}
.thumb img{width:100%;height:100%;object-fit:cover}
.thumb>i{font-size:2.6rem;color:#9aa3ad}
.thumb.kind-slides{background:#fbf3ea}.thumb.kind-slides>i{color:#c56a1b}
.thumb.kind-pdf{background:#fbecec}.thumb.kind-pdf>i{color:#b3261e}
.dur{position:absolute;right:6px;bottom:6px;background:rgba(0,0,0,.75);color:#fff;font-size:.78rem;padding:1px 6px;border-radius:4px}
.kind-badge{position:absolute;right:6px;top:6px;background:rgba(255,255,255,.9);font-size:.72rem;padding:1px 6px;border-radius:4px;color:var(--muted)}
.card-item .body{padding:.6rem .75rem .65rem}
.card-item .t{font-size:1rem;font-weight:700;line-height:1.35;margin:0 0 .3rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-item .s{font-size:.86rem;color:#444;margin:0 0 .4rem;line-height:1.45}
.tags{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:.35rem}
.tg{font-size:.74rem;background:var(--chip);border-radius:4px;padding:0 5px;color:#444}
.tg.more{background:none;color:var(--muted)}
.meta{display:flex;gap:.5rem;font-size:.75rem;color:var(--muted)}
.bulkbar{position:sticky;top:58px;z-index:10;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;background:#fff;border:1px solid var(--accent);border-radius:10px;padding:.5rem .7rem;margin-bottom:.8rem;box-shadow:0 4px 14px rgba(0,0,0,.06)}

.player{width:100%;max-height:70vh;background:#000;border-radius:10px}
.pdfview{width:100%;height:75vh;border:1px solid var(--line);border-radius:10px;background:#fff}
.slide-box{background:#fbf3ea;border-radius:12px;padding:2rem;text-align:center;color:#6b4a2b}
.meta-line{display:flex;flex-wrap:wrap;gap:.9rem;color:var(--muted);font-size:.92rem}
.summary{font-size:1.05rem;line-height:1.75;margin-top:.8rem}
.points li{margin-bottom:.25rem;line-height:1.6}
.notes{background:#fffbe6;border:1px solid #f1e3a6;border-radius:8px;padding:.6rem .8rem;margin-top:.8rem}
.rel li{padding:.2rem 0}
.transcript summary{cursor:pointer;font-weight:600}
.tr-body{max-height:420px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:8px;padding:.6rem .9rem;margin-top:.5rem;font-size:.92rem;line-height:1.7}
.tr-body p{margin:0 0 .25rem}
.ts{font-family:ui-monospace,Menlo,monospace;font-size:.82rem;margin-right:.3rem;text-decoration:none}
.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.9rem 1rem;margin-bottom:1rem}
.tg-group{margin-bottom:.55rem}
.tg-gname{font-size:.75rem;color:var(--muted);font-weight:700;margin-bottom:.2rem}
.tog input{display:none}
.tog span{display:inline-block;padding:.1rem .5rem;border-radius:999px;border:1px dashed #c9ced4;color:var(--muted);cursor:pointer;font-size:.85rem;user-select:none}
.tog input:checked+span{border:1px solid var(--accent);background:var(--accent);color:#fff}
.info{display:grid;grid-template-columns:4em 1fr;gap:.2rem .5rem;margin:0}
.info dt{color:var(--muted);font-weight:400}.info dd{margin:0;word-break:break-all}
.dup-panel{border-color:#f0c2c2;background:#fff8f8}
.dup-row{display:flex;flex-wrap:wrap;gap:12px}
.dup-cell{width:230px;border:1px solid var(--line);border-radius:10px;padding:.5rem}
.dup-cell img{width:100%;border-radius:6px}
.dup-cell.dim{opacity:.55}
.coll-row{display:flex;gap:.8rem;align-items:flex-start}
.coll-row .num{font-weight:700;color:var(--muted);width:1.5em;text-align:right;padding-top:.2rem}
.cthumb{width:150px;flex:none;aspect-ratio:16/9;border-radius:6px;overflow:hidden;background:#eceef1;display:flex;align-items:center;justify-content:center}
.cthumb img{width:100%;height:100%;object-fit:cover}.cthumb i{font-size:2rem;color:#9aa3ad}
.tag-table td,.tag-table th{font-size:.9rem}
@media(max-width:767px){.nav-a{padding:.2rem .35rem;font-size:.92rem}.brand{width:100%}.grid{grid-template-columns:1fr 1fr;gap:10px}.card-item .s{display:none}}

/* 點一下就編輯 */
.ie{position:relative;border-radius:8px;padding:.15rem .4rem;margin:0 -.4rem;cursor:text;transition:background .15s}
.ie:hover{background:#f1f2f5}
.ie .ie-pen{position:absolute;right:.35rem;top:.35rem;font-size:.8rem;color:var(--muted);opacity:0;transition:opacity .15s}
.ie:hover .ie-pen{opacity:1}
.ie.editing{background:none;cursor:default}
.ie.editing .ie-pen{display:none}
.ie-empty{color:#9aa1a9;font-style:italic}
.ie-editor .form-control{font-size:inherit}
.ie-bar{display:flex;align-items:center;gap:.3rem;margin-top:.35rem}
.ie-hint{font-size:.75rem;color:var(--muted);margin-left:auto}
.ie-err{color:#b3261e;font-size:.8rem;margin-top:.2rem}
.ie-saved{animation:iesaved 1.2s ease}
@keyframes iesaved{0%{background:#e6f4ea}100%{background:transparent}}
h1 .ie,.h3 .ie{margin:0}
.sec{margin-top:1.1rem}
.sec-h{font-size:.78rem;font-weight:700;color:var(--muted);letter-spacing:.06em;margin-bottom:.2rem}
.attn{background:#fff8e1;border-left:3px solid #e0a800;padding:.45rem .7rem;border-radius:4px;font-size:.9rem;margin-top:.7rem;color:#6b5200}
.notes-ie .ie-view{background:#fffbe6;border-radius:6px;padding:.3rem .5rem}
.chip{display:inline-block;padding:.1rem .55rem;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.85rem;text-decoration:none}
.chip:hover{background:var(--accent);color:#fff}
#tagPanel .edit-only{display:none}
#tagPanel.is-editing .edit-only{display:block}
#tagPanel.is-editing .view-only{display:none}
.tab-sm .nav-link{padding:.25rem .55rem;font-size:.85rem;color:var(--muted)}
.tab-sm .nav-link.active{color:var(--ink);font-weight:600}
.nav-tabs .badge{font-size:.65rem;vertical-align:1px}
.danger-zone summary{cursor:pointer;color:var(--muted)}
.info dd .ie{margin:-.15rem -.4rem}
/* 小提醒 */
.care-card{position:fixed;right:18px;bottom:18px;z-index:50;max-width:340px;display:flex;gap:.6rem;align-items:flex-start;
  background:#fff;border:1px solid #f1d3dc;border-left:4px solid #d6577e;border-radius:12px;padding:.75rem .8rem .75rem .9rem;
  box-shadow:0 8px 28px rgba(122,46,74,.15);font-size:.95rem;line-height:1.55;animation:carein .5s ease}
.care-card>i{color:#d6577e;margin-top:.15rem}
.care-card span{flex:1}
.care-card.fade-out{opacity:0;transform:translateY(8px);transition:all .8s ease}
@keyframes carein{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.care-heart{border:0;background:none;color:#e6a3b7;padding:0 .2rem;font-size:.85rem}
.care-heart:hover{color:#d6577e}
/* 頁籤式清單 */
.tab-box{background:#fff;border:1px solid var(--line);border-top:0;border-radius:0 0 12px 12px;padding:.4rem .9rem .8rem}
.nav-tabs{border-color:var(--line)}
.nav-tabs .nav-link{color:var(--muted)}
.nav-tabs .nav-link.active{color:var(--ink);font-weight:600}
.row-item{display:flex;align-items:center;gap:.75rem;padding:.55rem 0;border-bottom:1px solid #f0f1f3}
.row-item:last-child{border-bottom:0}
.row-item.dim{opacity:.5}
.tag-count{min-width:4.5rem;text-align:right;font-size:.85rem}
.add-row{display:flex;gap:.4rem;margin-top:.6rem}
.entry-note{display:flex;gap:.35rem;align-items:flex-start}.entry-note .ie{flex:1}
