@@ -299,8 +343,8 @@
${tagHtml || ""}
- 열기
-
+ ${openHtml}
+
@@ -1033,6 +1077,12 @@
if (!id) return;
const act = btn.getAttribute("data-act");
+ // access gate for open/copy
+ if ((act === "open" || act === "copy") && card.getAttribute("data-access") === "0") {
+ toast("이 링크는 현재 권한으로 접근할 수 없습니다.");
+ e.preventDefault();
+ return;
+ }
if (auth.mode === "enabled" && !state.canManage && (act === "fav" || act === "edit" || act === "del")) {
toast("관리 기능은 로그인(허용 이메일) 후 사용 가능합니다.");
return;
diff --git a/styles.css b/styles.css
index 9d8edab..1ecb37d 100644
--- a/styles.css
+++ b/styles.css
@@ -655,10 +655,20 @@ html[data-theme="light"] .favicon .letter {
color: rgba(180, 255, 210, 0.9);
}
+ .tag.lock {
+ border-color: rgba(239, 68, 68, 0.32);
+ background: rgba(239, 68, 68, 0.08);
+ color: rgba(255, 200, 200, 0.92);
+}
+
html[data-theme="light"] .tag.fav {
color: rgba(0, 120, 70, 0.92);
}
+html[data-theme="light"] .tag.lock {
+ color: rgba(140, 20, 20, 0.9);
+}
+
.card-actions {
margin-top: 12px;
display: flex;
@@ -666,6 +676,14 @@ html[data-theme="light"] .tag.fav {
flex-wrap: wrap;
}
+.card.disabled {
+ opacity: 0.78;
+}
+
+.card.disabled:hover {
+ transform: none;
+}
+
.mini {
padding: 9px 10px;
border-radius: 12px;