From b108cf4999075a527f2451cfd8b02bad00904b4f Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Sun, 9 Aug 2026 12:29:34 -0400 Subject: [PATCH] Remove unused CSS dist files and simplify note view top bar --- shaarli-pro/dist/awesomplete.min.css | 1 - shaarli-pro/dist/custom_views.min.css | 1 - shaarli-pro/dist/custom_views.min.js | 2 +- shaarli-pro/dist/manifest.json | 26 +++----------------------- shaarli-pro/dist/style.min.css | 1 - shaarli-pro/dist/themes.min.css | 1 - shaarli-pro/js/custom_views.js | 6 +----- 7 files changed, 5 insertions(+), 33 deletions(-) delete mode 100644 shaarli-pro/dist/awesomplete.min.css delete mode 100644 shaarli-pro/dist/custom_views.min.css delete mode 100644 shaarli-pro/dist/style.min.css delete mode 100644 shaarli-pro/dist/themes.min.css diff --git a/shaarli-pro/dist/awesomplete.min.css b/shaarli-pro/dist/awesomplete.min.css deleted file mode 100644 index 2fede79..0000000 --- a/shaarli-pro/dist/awesomplete.min.css +++ /dev/null @@ -1 +0,0 @@ -.awesomplete [hidden]{display:none}.awesomplete .visually-hidden{position:absolute;clip:rect(0,0,0,0)}.awesomplete{position:relative}.awesomplete,.awesomplete>input{display:block;width:100%}.awesomplete>ul{animation:slideDown .2s ease;background:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;box-shadow:var(--shadow-lg);box-sizing:border-box;color:var(--text-main);left:0;list-style:none;margin:.25rem 0 0;min-width:100%;overflow:hidden;padding:0;position:absolute;text-shadow:none;z-index:1000}.awesomplete>ul:empty{display:none}.awesomplete>ul>li{border-bottom:1px solid var(--border-light);color:var(--text-main);cursor:pointer;font-size:.95rem;padding:.75rem 1rem;position:relative;transition:background .1s ease}.awesomplete>ul>li:last-child{border-bottom:none}.awesomplete>ul>li:hover{background:var(--bg-card-hover);color:var(--primary)}.awesomplete>ul>li[aria-selected=true]{background:var(--primary);color:#fff}.awesomplete mark{background:rgba(255,255,0,.3);color:inherit;font-weight:700;padding:0}.awesomplete li[aria-selected=true] mark{background:hsla(0,0%,100%,.3);color:inherit}[data-theme=dark] .awesomplete>ul{background:var(--bg-card);border-color:var(--border)}[data-theme=dark] .awesomplete>ul>li:hover{background:var(--bg-card-hover)}.card,.form-add .card,.page-edit .card{overflow:visible!important}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}} \ No newline at end of file diff --git a/shaarli-pro/dist/custom_views.min.css b/shaarli-pro/dist/custom_views.min.css deleted file mode 100644 index 4bbf5f4..0000000 --- a/shaarli-pro/dist/custom_views.min.css +++ /dev/null @@ -1 +0,0 @@ -:root{--special-view-panel-bg:var(--tile-bg,var(--bg-card));--special-view-panel-alt:color-mix(in srgb,var(--tile-bg,var(--bg-card)) 85%,var(--bg-body));--special-view-border:var(--tile-border,var(--border));--special-view-divider:var(--border-light);--special-view-shadow:var(--tile-shadow,var(--shadow-md));--special-view-muted:var(--text-secondary);--special-view-strong:var(--text-main);--special-view-chip-bg:color-mix(in srgb,var(--primary) 12%,transparent);--special-view-chip-hover:color-mix(in srgb,var(--primary) 22%,transparent);--special-view-chip-text:var(--text-main)}.special-view-wrapper{display:flex;flex-direction:row;min-height:calc(100vh - 60px);width:100%}body.view-todo .content-container{background-color:transparent;min-height:100vh;padding:2rem}body.view-todo #linklist{display:block}.create-task-btn:hover{background-color:var(--primary-hover);transform:translateY(-1px)}.todo-list-item{align-items:center;border-radius:.5rem;color:var(--special-view-strong);cursor:pointer;display:flex;gap:.75rem;margin-bottom:.25rem;padding:.75rem 1rem;transition:background-color .2s}.todo-list-item:hover{background-color:color-mix(in srgb,var(--special-view-strong) 8%,transparent)}.todo-list-item.active{background-color:color-mix(in srgb,var(--primary) 10%,transparent);color:var(--primary);font-weight:600;margin:0}.todo-item{align-items:center;border-bottom:1px solid var(--special-view-divider);display:flex;gap:1rem;padding:1rem;transition:background-color .2s}.todo-item:hover{background-color:color-mix(in srgb,var(--special-view-strong) 5%,transparent)}.todo-checkbox{align-items:center;border:2px solid var(--special-view-muted);border-radius:50%;cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;width:20px}.todo-checkbox.checked{background-color:var(--primary);border-color:var(--primary);color:#fff}.todo-content{display:flex;flex:1;flex-direction:column;gap:.25rem}.todo-title{color:var(--special-view-strong);font-size:1rem;font-weight:400}.todo-item.completed .todo-title{color:var(--text-muted);text-decoration:line-through}.todo-meta{align-items:center;color:var(--special-view-muted);display:flex;font-size:.75rem;gap:.5rem}.todo-badge{background-color:var(--special-view-chip-bg);border-radius:1rem;font-size:.7rem;padding:.125rem .5rem}.due-date{align-items:center;display:flex;gap:.25rem}body.view-archive .content-container,body.view-notes .content-container{background-color:transparent;min-height:100vh;padding:2rem}.notes-top-bar{align-items:flex-start;display:flex;justify-content:center;margin-bottom:2rem;padding-right:0}.note-input-container{background-color:var(--special-view-panel-bg);border:1px solid var(--special-view-border);border-radius:12px;box-shadow:var(--special-view-shadow);max-width:100%;overflow:hidden;transition:box-shadow .2s;width:800px}.note-input-container.is-editing{max-height:72vh}.note-input-collapsed{align-items:center;color:var(--special-view-muted);cursor:text;display:flex;font-size:1rem;font-weight:500;padding:12px 16px}.note-input-container.is-editing{cursor:default}.icon-btn:hover{background-color:color-mix(in srgb,var(--text-muted) 10%,transparent)}.icon-btn.active{background-color:var(--special-view-chip-bg);color:var(--primary)}.notes-masonry{column-count:4;column-gap:16px;margin:0 auto;max-width:1600px;width:100%}@media (max-width:1400px){.notes-masonry{column-count:3}}@media (max-width:1024px){.notes-masonry{column-count:2}}@media (max-width:640px){.notes-masonry{column-count:1}}.notes-masonry:has(.note-card:first-child:last-child){column-count:1}.notes-masonry:has(.note-card:nth-child(2):last-child){column-count:2}.notes-masonry:has(.note-card:nth-child(3):last-child){column-count:3}.notes-masonry .note-card{break-inside:avoid;display:inline-block;margin:0 0 16px;width:100%;-webkit-column-break-inside:avoid;page-break-inside:avoid;box-shadow:var(--special-view-shadow);column-span:none}.note-card,.notes-masonry .note-card{background:var(--special-view-panel-bg);border:1px solid var(--special-view-border);border-radius:14px;overflow:hidden}.note-card .note-inner{padding:14px 58px 12px 16px;position:relative}.note-modal-overlay{align-items:center;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);background:rgba(0,0,0,.55);display:none;inset:0;justify-content:center;overflow-y:auto;padding:1rem;position:fixed;z-index:1100}.note-modal,.note-modal-overlay.open{display:flex}.note-modal{background:var(--special-view-panel-bg);border:1px solid var(--special-view-border);border-radius:14px;box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22);color:inherit;flex-direction:column;max-height:86vh;overflow:hidden;width:min(720px,92vw)}.note-modal-header{align-items:flex-start;display:flex;flex-shrink:0;gap:12px;justify-content:space-between;padding:18px 20px 10px}.note-modal-tags.is-empty{display:none}.note-modal-tags .note-tag{align-items:center;background:var(--special-view-chip-bg);border-radius:999px;color:var(--special-view-chip-text);display:inline-flex;font-size:.75rem;font-weight:500;gap:.25rem;padding:.25rem .5rem}.note-modal-tags .note-tag-text{line-height:1.2}.note-modal-tags .note-tag-remove-btn{align-items:center;background:var(--special-view-chip-hover);border:none;border-radius:999px;color:currentColor;cursor:pointer;display:inline-flex;font-size:.8rem;height:1.1rem;justify-content:center;line-height:1;padding:0;width:1.1rem}.note-modal-actions{align-items:center;background:transparent;display:flex;flex-shrink:0;flex-wrap:wrap;gap:6px;justify-content:space-between;padding:8px 16px 16px}.note-modal-pin-toggle.active,.note-modal-pin-toggle:hover{background-color:color-mix(in srgb,var(--text-main) 14%,transparent)}.note-body{color:var(--special-view-strong);font-size:.875rem;line-height:1.4;word-wrap:break-word;display:block;max-height:360px;overflow:hidden}.note-body p,.note-modal-content p{margin:0 0 .5rem}.bookmark-palette>button:hover{background:var(--primary-light);color:var(--primary)}.palette-popup{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:var(--special-view-panel-bg);border:1px solid var(--special-view-border);border-radius:12px;bottom:calc(100% + 8px);box-shadow:0 14px 34px rgba(0,0,0,.22);display:none;left:0;max-height:min(320px,calc(100vh - 140px));max-width:min(340px,calc(100vw - 32px));overflow:auto;overscroll-behavior:contain;padding:12px;position:absolute;width:max-content;z-index:50}.palette-popup.open{display:block}.note-card .note-hover-actions a,.note-card .note-hover-actions button{color:inherit}.note-card[class*=note-color-]{border:1px solid var(--special-view-border);color:var(--note-card-fg,var(--special-view-strong))}body.view-archive .content-container{background-color:transparent!important}.archive-title-container{margin-bottom:1rem;text-align:center}.archive-title{align-items:center;color:var(--special-view-strong);display:flex;font-size:1.75rem;font-weight:600;gap:.5rem;justify-content:center;margin:0}.archive-title i{color:var(--primary);font-size:1.5rem}.archive-subtitle{color:var(--special-view-muted);font-size:.875rem;margin:.25rem 0 0}.archive-top-bar{align-items:center;flex-direction:column;gap:1rem;padding-right:0;position:relative}.archive-top-bar .notes-tools{position:absolute;right:1rem;top:50%;transform:translateY(-50%)}body.view-todo .note-card.todo-card .note-body{padding-top:.25rem}body.view-todo .note-card.todo-card .todo-checklist-preview-wrap{display:block;-webkit-line-clamp:initial;line-clamp:none;-webkit-box-orient:initial;max-height:360px;overflow:hidden;padding-top:.25rem}.todo-checklist-preview{display:flex;flex-direction:column;gap:.35rem;list-style:none;margin:0;padding:0}.todo-checklist-preview-item{align-items:flex-start;display:flex;font-size:.95rem;gap:.6rem;line-height:1.35}.todo-checklist-preview-box{align-items:center;border:2px solid;border-radius:4px;display:inline-flex;flex:0 0 auto;height:16px;justify-content:center;margin-top:2px;opacity:.7;width:16px}.todo-checklist-preview-box i{font-size:14px;opacity:0}.todo-checklist-preview-text{flex:1;min-width:0;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word}.todo-checklist-preview-item.is-checked{opacity:.7}.todo-checklist-preview-item.is-checked .todo-checklist-preview-box i{opacity:1}.todo-checklist-preview-item.is-checked .todo-checklist-preview-text{text-decoration:line-through}.todo-checklist-preview-more{opacity:.7}.todo-modal .note-modal-content{padding-top:6px}.todo-checklist{display:flex;flex-direction:column;gap:6px;padding-bottom:6px}.todo-checklist-row{align-items:center;border-radius:8px;display:grid;gap:8px;grid-template-columns:26px 26px minmax(0,1fr) 34px;padding:6px 2px}.todo-checklist-row.is-checked{opacity:.75}.todo-checklist-row.is-dragging{opacity:.6}.todo-drag-handle{align-items:center;background:none;border:none;color:inherit;cursor:grab;display:inline-flex;height:26px;justify-content:center;opacity:.7;padding:0;width:26px}.todo-drag-handle:active{cursor:grabbing}.todo-drag-handle i{font-size:18px}.todo-checklist-box{align-items:center;cursor:pointer;display:inline-flex;height:26px;justify-content:center;width:26px}.todo-checklist-box input{opacity:0;pointer-events:none;position:absolute}.todo-checklist-box-ui{border:2px solid;border-radius:4px;display:inline-block;height:16px;opacity:.75;width:16px}.todo-item-checkbox:checked+.todo-checklist-box-ui{background:currentColor;box-shadow:inset 0 0 0 3px rgba(0,0,0,.22)}[data-theme=dark] .todo-item-checkbox:checked+.todo-checklist-box-ui{box-shadow:inset 0 0 0 3px rgba(0,0,0,.35)}.todo-item-text{background:transparent;border:none;border-radius:6px;color:inherit;font-size:1rem;line-height:1.4;min-width:0;outline:none;padding:6px;width:100%}.todo-checklist-row.is-checked .todo-item-text{text-decoration:line-through}.todo-item-text:focus{background:color-mix(in srgb,var(--text-main) 6%,transparent)}[data-theme=dark] .todo-item-text:focus{background:color-mix(in srgb,var(--text-main) 8%,transparent)}.todo-item-delete{align-items:center;background:none;border:none;border-radius:50%;color:inherit;cursor:pointer;display:inline-flex;height:34px;justify-content:center;opacity:.7;padding:0;width:34px}.todo-item-delete:hover{background:color-mix(in srgb,var(--text-main) 8%,transparent);opacity:1}[data-theme=dark] .todo-item-delete:hover{background:color-mix(in srgb,var(--text-main) 12%,transparent)}.todo-item-delete i{font-size:20px}.todo-add-item-btn{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:1rem;gap:10px;justify-content:flex-start;opacity:.8;padding:8px 0;width:100%}.todo-add-item-btn i{font-size:18px}.todo-add-item-btn:hover{opacity:1}body.view-archive .content-container,body.view-notes .content-container,body.view-todo .content-container{padding:1.75rem clamp(1rem,3vw,2.5rem)}body.view-archive .linklist-filters,body.view-notes .linklist-filters,body.view-todo .linklist-filters{align-items:center;background:var(--special-view-chip-bg);border:1px solid var(--special-view-border);border-radius:9999px;color:var(--special-view-strong);display:inline-flex;font-size:.85rem;font-weight:500;gap:.5rem;margin:0 0 1.25rem;max-width:max-content;padding:.45rem .85rem}.notes-top-bar{align-items:center;gap:1rem;margin-left:auto;margin-right:auto;max-width:1600px;position:relative}.notes-top-bar .notes-tools{position:absolute;right:0;top:50%;transform:translateY(-50%)}.note-input-container{transition:box-shadow .2s ease,border-color .2s ease;width:min(760px,100%)}.note-input-container.is-editing,.note-input-container:hover{box-shadow:var(--tile-shadow-hover,var(--shadow-md))}.note-input-container.is-editing{border-color:color-mix(in srgb,var(--primary) 40%,var(--special-view-border))}.note-input-container input[type=text],.note-input-container textarea{background:transparent;border:0;color:var(--special-view-strong);font-family:inherit;font-size:1rem;outline:none;padding:10px 14px;width:100%}.note-input-container textarea{line-height:1.45;min-height:120px;resize:vertical}.note-input-container input[type=text]::placeholder,.note-input-container textarea::placeholder{color:var(--special-view-muted)}.note-input-container .note-editor-toolbar,.note-input-container .note-input-actions,.note-input-container .todo-editor-toolbar{align-items:center;background:color-mix(in srgb,var(--special-view-panel-bg) 88%,var(--bg-body));border-top:1px solid var(--special-view-divider);display:flex;flex-wrap:wrap;gap:4px;padding:6px 10px}.note-input-container .icon-btn,.note-input-container button:not(.btn):not([class*=note-close]):not([class*=submit]){background:transparent;border:0;border-radius:6px;color:var(--special-view-strong);cursor:pointer;font-size:.85rem;line-height:1;padding:6px 8px;transition:background .15s ease}.note-input-container .icon-btn:hover,.note-input-container button:not(.btn):not([class*=note-close]):not([class*=submit]):hover{background:color-mix(in srgb,var(--text-main) 10%,transparent)}.note-input-container .note-close-btn,.note-input-container [data-action=close]{background:var(--special-view-panel-alt);border:1px solid var(--special-view-border);border-radius:8px;color:var(--special-view-strong);cursor:pointer;font-size:.85rem;padding:6px 12px}.note-input-container .note-close-btn:hover,.note-input-container [data-action=close]:hover{background:var(--tile-bg-hover,var(--bg-card-hover))}.note-input-container .todo-checklist-row{border-bottom:1px solid var(--special-view-divider);border-radius:0;padding:4px 10px}.note-input-container .todo-checklist-row:last-of-type{border-bottom:0}.note-input-container .todo-item-text{padding:8px 6px}.note-card .note-title{color:inherit;font-size:1rem;font-weight:600;line-height:1.3;margin:0 0 6px}.note-card .note-body{font-size:.9rem;line-height:1.5}.note-card .link-tag,.note-card .note-tag{background:color-mix(in srgb,var(--primary) 14%,transparent);border:1px solid color-mix(in srgb,var(--primary) 22%,transparent);border-radius:9999px;color:var(--special-view-chip-text);font-size:.72rem;font-weight:500;padding:2px 8px}.notes-masonry .note-card{transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}.notes-masonry .note-card:hover{border-color:color-mix(in srgb,var(--primary) 35%,var(--special-view-border));box-shadow:var(--tile-shadow-hover,var(--shadow-lg));transform:translateY(-1px)}.note-card:not([class*=note-color-]){color:var(--special-view-strong)}body.view-todo .notes-masonry:empty:after{content:"Aucune tâche pour le moment."}body.view-notes .notes-masonry:empty:after,body.view-todo .notes-masonry:empty:after{color:var(--special-view-muted);display:block;font-size:.95rem;padding:3rem 1rem;text-align:center}body.view-notes .notes-masonry:empty:after{content:"Aucune note pour le moment."}.icon-btn{align-items:center;background:transparent;border:none;border-radius:8px;color:var(--special-view-strong);cursor:pointer;display:inline-flex;font-size:1rem;height:32px;justify-content:center;line-height:1;padding:0;text-decoration:none;transition:background .15s ease,color .15s ease;width:32px}.notes-tools{align-items:center;display:flex;gap:4px}.note-pin-corner{align-items:center;background:transparent;border-radius:50%;color:var(--special-view-muted);display:inline-flex;font-size:1rem;height:28px;justify-content:center;opacity:0;position:absolute;right:12px;text-decoration:none;top:10px;transition:opacity .15s ease,background .15s ease,color .15s ease;width:28px}.note-card:hover .note-pin-corner,.note-pin-corner.active{opacity:1}.note-pin-corner:hover{background:color-mix(in srgb,var(--text-main) 12%,transparent);color:var(--special-view-strong)}.note-pin-corner.active{color:var(--primary)}.note-tags{display:flex;flex-wrap:wrap;gap:4px;padding:4px 0 6px}.note-hover-actions{align-items:center;border-top:1px solid var(--special-view-divider);display:flex;gap:2px;margin-top:8px;opacity:0;padding:4px 8px 6px;transition:opacity .15s ease}.note-card:hover .note-hover-actions{opacity:1}.note-hover-actions button,.note-hover-actions>a{align-items:center;background:transparent;border:none;border-radius:8px;color:inherit;cursor:pointer;display:inline-flex;font-size:.95rem;height:30px;justify-content:center;line-height:1;padding:0;text-decoration:none;transition:background .15s ease;width:30px}.note-hover-actions button:hover,.note-hover-actions>a:hover{background:color-mix(in srgb,var(--text-main) 12%,transparent)}.note-hover-actions .spacer{flex:1}.note-input-placeholder{color:var(--special-view-muted);flex:1;font-size:1rem;font-weight:500}.note-input-collapsed .note-input-actions{background:transparent;border-top:none;flex-shrink:0;padding:0}.note-input-expanded,.todo-draft-expanded{display:flex;flex-direction:column;overflow:hidden}.todo-draft-list{flex-shrink:0;max-height:220px;overflow-y:auto;padding:4px 0}.note-input-expanded-actions{align-items:center;background:color-mix(in srgb,var(--special-view-panel-bg) 88%,var(--bg-body));border-top:1px solid var(--special-view-divider);display:flex;flex-shrink:0;gap:8px;justify-content:space-between;padding:8px 10px}.note-input-actions-left{align-items:center;display:flex;gap:4px}.todo-draft-add-btn{align-items:center;background:transparent;border:none;color:var(--special-view-muted);cursor:pointer;display:flex;flex-shrink:0;font-family:inherit;font-size:.9rem;gap:8px;padding:8px 14px;text-align:left;transition:color .15s ease;width:100%}.todo-draft-add-btn:hover{color:var(--special-view-strong)}.todo-draft-add-btn i{font-size:18px}.note-input-close-btn{align-items:center!important;background:var(--special-view-panel-alt)!important;border:1px solid var(--special-view-border)!important;border-radius:8px!important;color:var(--special-view-strong)!important;cursor:pointer;display:inline-flex!important;flex-shrink:0;font-family:inherit;font-size:.9rem!important;height:auto!important;padding:6px 16px!important;transition:background .15s ease;width:auto!important}.note-input-close-btn:hover{background:var(--tile-bg-hover,var(--bg-card-hover))!important}.note-input-format-btn,.note-input-palette-btn{align-items:center;background:transparent;border:none;border-radius:8px;color:var(--special-view-strong);cursor:pointer;display:inline-flex;font-size:1.1rem;height:32px;justify-content:center;padding:0;transition:background .15s ease;width:32px}.note-input-format-btn:hover,.note-input-palette-btn:hover{background:color-mix(in srgb,var(--text-main) 10%,transparent)}.note-input-container .note-input-title,.note-input-container .todo-draft-title{font-size:1.05rem;font-weight:600;padding:12px 14px 4px}.todo-draft-row{align-items:center;display:grid;gap:6px;grid-template-columns:26px minmax(0,1fr) 34px;padding:2px 4px}.note-card .note-tag{align-items:center;display:inline-flex;gap:3px}.note-card .note-tag-remove-btn{align-items:center;background:color-mix(in srgb,var(--primary) 30%,transparent);border:none;border-radius:999px;color:var(--special-view-chip-text);cursor:pointer;display:inline-flex;flex-shrink:0;font-size:.7rem;height:14px;justify-content:center;line-height:1;padding:0;transition:background .15s ease;width:14px}.note-card .note-tag-remove-btn:hover{background:color-mix(in srgb,var(--primary) 55%,transparent)}.note-modal-content{flex:1 1 auto;overflow-y:auto;padding:0 20px 12px}.note-modal-tags{display:flex;flex-shrink:0;flex-wrap:wrap;gap:6px;padding:6px 20px 10px}.note-modal-pin-toggle{align-items:center;background:transparent;border:none;border-radius:50%;color:var(--special-view-muted);cursor:pointer;display:inline-flex;flex-shrink:0;font-size:1rem;height:32px;justify-content:center;padding:0;transition:background .15s ease,color .15s ease;width:32px}.note-modal-pin-toggle.active{color:var(--primary)}.note-modal-actions-left{align-items:center;display:flex;gap:4px}.note-modal-color-picker{position:relative}.note-modal-actions a,.note-modal-actions button,.note-modal-actions>div>button{align-items:center;background:transparent;border:none;border-radius:8px;color:var(--special-view-strong);cursor:pointer;display:inline-flex;font-size:1rem;height:32px;justify-content:center;padding:0;text-decoration:none;transition:background .15s ease;width:32px}.note-modal-actions a:hover,.note-modal-actions button:hover,.note-modal-actions>div>button:hover{background:color-mix(in srgb,var(--text-main) 10%,transparent)}.note-modal-close-btn{align-items:center!important;background:var(--special-view-panel-alt)!important;border:1px solid var(--special-view-border)!important;border-radius:8px!important;color:var(--special-view-strong)!important;cursor:pointer;display:inline-flex!important;font-family:inherit;font-size:.9rem!important;height:auto!important;padding:6px 20px!important;transition:background .15s ease;width:auto!important}.note-modal-close-btn:hover{background:var(--tile-bg-hover,var(--bg-card-hover))!important}.note-modal-header .note-title{color:inherit;flex:1;font-size:1.15rem;font-weight:600;line-height:1.3;margin:0;word-break:break-word}.bg-studio-panel{background:var(--special-view-panel-bg);border:1px solid var(--special-view-border);border-radius:14px;box-shadow:0 8px 32px rgba(0,0,0,.25),0 2px 8px rgba(0,0,0,.12);color:var(--special-view-strong);display:flex;flex-direction:column;font-family:inherit;font-size:.9rem;max-height:min(560px,calc(100vh - 24px));overflow:hidden;position:fixed;width:min(360px,calc(100vw - 24px));z-index:1200}.bg-studio-header{align-items:center;border-bottom:1px solid var(--special-view-divider);display:flex;flex-shrink:0;gap:8px;justify-content:space-between;padding:12px 16px 8px}.bg-studio-title{flex:1;font-size:.95rem;font-weight:600}.bg-studio-close{align-items:center;background:transparent;border:none;border-radius:50%;color:inherit;cursor:pointer;display:inline-flex;flex-shrink:0;font-size:1rem;height:28px;justify-content:center;padding:0;transition:background .15s ease;width:28px}.bg-studio-close:hover{background:color-mix(in srgb,var(--text-main) 10%,transparent)}.bg-studio-gallery{display:flex;flex:0 1 auto;flex-wrap:wrap;gap:6px;max-height:200px;overflow-y:auto;padding:10px 14px}.bg-studio-tile{align-items:center;display:flex;flex-direction:column;gap:3px}.bg-studio-thumb{background-color:var(--special-view-panel-alt);background-position:50%;background-size:cover;border:2px solid transparent;border-radius:8px;cursor:pointer;height:44px;overflow:hidden;padding:0;transition:border-color .15s ease,box-shadow .15s ease;width:58px}.bg-studio-thumb.is-active,.bg-studio-thumb:hover{border-color:var(--primary)}.bg-studio-thumb.is-active{box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 40%,transparent)}.bg-studio-thumb-solid{background:var(--special-view-panel-alt);display:block;height:100%;width:100%}.bg-studio-thumb-label{color:var(--special-view-muted);font-size:.65rem;max-width:58px;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.bg-studio-rows{border-bottom:1px solid var(--special-view-divider);flex-shrink:0;gap:8px;overflow-y:auto;padding:8px 14px 6px}.bg-studio-row,.bg-studio-rows{display:flex;flex-direction:column}.bg-studio-row{gap:5px}.bg-studio-row-heading{align-items:center;display:flex;justify-content:space-between}.bg-studio-row-label{color:var(--special-view-muted);font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.bg-studio-reset{align-items:center;background:transparent;border:none;border-radius:50%;color:var(--special-view-muted);cursor:pointer;display:inline-flex;font-size:.9rem;height:22px;justify-content:center;padding:0;transition:background .15s ease,color .15s ease;width:22px}.bg-studio-reset:hover{background:color-mix(in srgb,var(--text-main) 10%,transparent);color:var(--special-view-strong)}.bg-studio-swatches{display:flex;flex-wrap:wrap;gap:5px}.bg-studio-swatch{border:2px solid transparent;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.18);cursor:pointer;flex-shrink:0;height:22px;padding:0;transition:border-color .15s ease,transform .1s ease;width:22px}.bg-studio-swatch:hover{transform:scale(1.15)}.bg-studio-swatch.is-active{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 40%,transparent)}.bg-studio-swatch-custom{align-items:center;background:var(--special-view-panel-alt);border-color:var(--special-view-border);color:var(--special-view-muted);display:inline-flex;font-size:.75rem;justify-content:center}.bg-studio-filters{display:flex;flex-wrap:wrap;gap:4px}.bg-studio-filter-btn{align-items:center;background:transparent;border:1px solid var(--special-view-border);border-radius:8px;color:var(--special-view-muted);cursor:pointer;display:inline-flex;font-size:.95rem;height:30px;justify-content:center;padding:0;transition:background .15s ease,color .15s ease,border-color .15s ease;width:30px}.bg-studio-filter-btn:hover{background:color-mix(in srgb,var(--text-main) 8%,transparent);color:var(--special-view-strong)}.bg-studio-filter-btn.is-active{background:color-mix(in srgb,var(--primary) 12%,transparent);border-color:var(--primary);color:var(--primary)}.bg-studio-search{align-items:center;border-top:1px solid var(--special-view-divider);display:flex;flex-shrink:0;gap:6px;padding:8px 14px}.bg-studio-search>i{color:var(--special-view-muted);flex-shrink:0;font-size:1rem}.bg-studio-search-input{background:transparent;border:none;color:var(--special-view-strong);flex:1;font-family:inherit;font-size:.85rem;min-width:0;outline:none}.bg-studio-search-input::placeholder{color:var(--special-view-muted)}.bg-studio-clear{align-items:center;background:transparent;border:none;border-radius:50%;color:var(--special-view-muted);cursor:pointer;display:inline-flex;font-size:.85rem;height:20px;justify-content:center;padding:0;transition:background .15s ease,color .15s ease;width:20px}.bg-studio-clear:hover{background:color-mix(in srgb,var(--text-main) 10%,transparent);color:var(--special-view-strong)}.link-outer.note-has-bg,.note-card.note-has-bg,.note-modal.note-has-bg{background-image:var(--note-bg-image,none)!important;background-position:50%;background-repeat:no-repeat;background-size:cover}.note-card{position:relative}.link-outer.note-filter-dots:after,.link-outer.note-filter-glass:after,.link-outer.note-filter-grid:after,.link-outer.note-filter-lined:after,.link-outer.note-filter-noise:after,.link-outer.note-filter-stripes:after,.link-outer.note-filter-vignette:after,.note-card.note-filter-dots:after,.note-card.note-filter-glass:after,.note-card.note-filter-grid:after,.note-card.note-filter-lined:after,.note-card.note-filter-noise:after,.note-card.note-filter-stripes:after,.note-card.note-filter-vignette:after{border-radius:inherit;content:"";inset:0;pointer-events:none;position:absolute;z-index:0}.link-outer.note-filter-glass:after,.note-card.note-filter-glass:after{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background:hsla(0,0%,100%,.06)}.link-outer.note-filter-vignette:after,.note-card.note-filter-vignette:after{background:radial-gradient(ellipse at center,transparent 45%,rgba(0,0,0,.42) 100%)}.link-outer.note-filter-lined:after,.note-card.note-filter-lined:after{background-image:repeating-linear-gradient(180deg,transparent 0,transparent 27px,hsla(0,0%,50%,.18) 0,hsla(0,0%,50%,.18) 28px)}.link-outer.note-filter-grid:after,.note-card.note-filter-grid:after{background-image:repeating-linear-gradient(90deg,hsla(0,0%,50%,.15) 0,hsla(0,0%,50%,.15) 1px,transparent 0,transparent 28px),repeating-linear-gradient(180deg,hsla(0,0%,50%,.15) 0,hsla(0,0%,50%,.15) 1px,transparent 0,transparent 28px)}.link-outer.note-filter-noise:after,.note-card.note-filter-noise:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='a'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='4' stitchTiles='stitch' type='fractalNoise'/%3E%3C/filter%3E%3Cpath d='M0 0h200v200H0z' filter='url(%23a)' opacity='.06'/%3E%3C/svg%3E");background-repeat:repeat}.link-outer.note-filter-dots:after,.note-card.note-filter-dots:after{background-image:radial-gradient(circle,hsla(0,0%,50%,.3) 1px,transparent 0);background-size:14px 14px}.link-outer.note-filter-stripes:after,.note-card.note-filter-stripes:after{background-image:repeating-linear-gradient(-45deg,transparent,transparent 8px,hsla(0,0%,50%,.12) 0,hsla(0,0%,50%,.12) 9px)}.link-outer .link-actions,.link-outer .link-content,.link-outer .link-meta,.note-card .note-hover-actions,.note-card .note-inner{position:relative;z-index:1}.link-outer .link-hover-actions,.link-outer .link-select-checkbox,.link-outer .link-visibility-badge{z-index:20}.link-outer[class*=note-color-],.link-outer[class*=note-color-] .link-actions,.link-outer[class*=note-color-] .link-actions a,.link-outer[class*=note-color-] .link-actions button,.link-outer[class*=note-color-] .link-description,.link-outer[class*=note-color-] .link-meta,.link-outer[class*=note-color-] .link-meta a,.link-outer[class*=note-color-] .link-title,.link-outer[class*=note-color-] .link-title a,.link-outer[class*=note-color-] .link-url,.link-outer[class*=note-color-] .link-url a,.view-list .link-outer[class*=note-color-],.view-list .link-outer[class*=note-color-] a,.view-list .link-outer[class*=note-color-] button{color:var(--note-card-fg,var(--tile-text))}.note-card[class*=note-color-] .note-body,.note-card[class*=note-color-] .note-title,.note-card[class*=note-color-] .todo-checklist-preview-item,.note-card[class*=note-color-] .todo-checklist-preview-text{color:var(--note-card-fg,var(--special-view-strong))}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}} \ No newline at end of file diff --git a/shaarli-pro/dist/custom_views.min.js b/shaarli-pro/dist/custom_views.min.js index 5ceb60b..2e45c70 100644 --- a/shaarli-pro/dist/custom_views.min.js +++ b/shaarli-pro/dist/custom_views.min.js @@ -1 +1 @@ -!function(){"use strict";function t(t){return"undefined"!=typeof window&&"function"==typeof window.renderMarkdown?window.renderMarkdown(t):String(t||"").replace(/\n/g,"
")}function e(t,e){if("undefined"!=typeof window&&"function"==typeof window.applyKeepNoteFormatting)return window.applyKeepNoteFormatting(t,e)}document.addEventListener("DOMContentLoaded",function(){const t=new URLSearchParams(window.location.search),e=t.get("searchtags")||t.get("searchTags")||"",o=window.location.pathname.match(/\/tag\/(.+)$/),n=(e+" "+(o?decodeURIComponent(o[1]):"")).toLowerCase().split(/[\s,]+/).filter(t=>t),d=!!document.querySelector('.sidebar-link[aria-label="Notes"].active, .header-nav-link[aria-label="Notes"].active, .sidebar-link[href*="searchtags=note"].active, .sidebar-link[href*="searchtags=shaarli-note"].active')||!!document.querySelector('.sidebar-link[aria-label="'+window.ShaarliProI18n.t("Notes")+'"].active, .header-nav-link[aria-label="'+window.ShaarliProI18n.t("Notes")+'"].active'),c=!!document.querySelector('.sidebar-link[aria-label="Mes tâches"].active, .header-nav-link[aria-label="Mes tâches"].active, .sidebar-link[href*="searchtags=shaarli-todo"].active, .sidebar-link[href*="searchtags=todo"].active')||!!document.querySelector('.sidebar-link[aria-label="'+window.ShaarliProI18n.t("My tasks")+'"].active, .header-nav-link[aria-label="'+window.ShaarliProI18n.t("My tasks")+'"].active'),p=!!document.querySelector('.sidebar-link[aria-label="Archive"].active, .header-nav-link[aria-label="Archive"].active, .sidebar-link[href*="searchtags=shaarli-archive"].active, .sidebar-link[href*="searchtags=shaarli-archiver"].active')||!!document.querySelector('.sidebar-link[aria-label="'+window.ShaarliProI18n.t("Archive")+'"].active, .header-nav-link[aria-label="'+window.ShaarliProI18n.t("Archive")+'"].active'),b=Array.from(document.querySelectorAll(".search-tag-chip")).map(t=>(t.textContent||"").trim().toLowerCase()),y=t=>"shaarli-archive"===t||"shaarli-archiver"===t,v=t=>"note"===t||"shaarli-note"===t||"#note"===t,w=t=>"todo"===t||"shaarli-todo"===t||"#todo"===t,S=n.some(v)||d||b.some(v),E=n.some(w)||c||b.some(w),C=n.some(y)||p||b.some(y),q=document.getElementById("links-list"),I=document.querySelector(".content-container"),x=()=>{try{document.body.classList.remove("view-todo","view-notes","view-archive")}catch(t){}const t=document.querySelector(".content-toolbar");t&&(t.style.display="");const e=document.getElementById("links-list");e&&(e.style.display=""),document.querySelectorAll(".notes-wrapper.todo-wrapper").forEach(t=>t.remove())};window.renderMarkdown=function(t){if(!t)return"";const e=String(t).replace(/\r\n?/g,"\n"),o=t=>String(t).replace(/&/g,"&").replace(//g,">"),n=t=>String(t).replace(/&/g,"&").replace(/"/g,""").replace(//g,">"),r=t=>{const e=String(t||"").trim();return e&&/^(https?:|mailto:|\/)/i.test(e)?e:""},a=t=>{let e=o(t||"");const a=[];return e=e.replace(/`([^`\n]+)`/g,(t,e)=>{const o=`__MD_CODE_${a.length}__`;return a.push(`${e}`),o}),e=e.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,(t,e,o)=>{const a=r(o);return a?`${n(e)}`:t}),e=e.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(t,e,o)=>{const a=r(o);return a?`${e}`:t}),e=e.replace(/\*\*(.+?)\*\*/g,"$1"),e=e.replace(/__(.+?)__/g,"$1"),e=e.replace(/~~(.+?)~~/g,"$1"),e=e.replace(/\*(.+?)\*/g,"$1"),e=e.replace(/_(.+?)_/g,"$1"),e=e.replace(/<u>([\s\S]*?)<\/u>/g,"$1"),e=e.replace(/__MD_CODE_(\d+)__/g,(t,e)=>a[Number(e)]||""),e},i=e.split("\n"),l=[];let s=!1,d=!1,c=!1,u=!1,m="",p=[];const f=()=>{s&&(l.push(""),s=!1),d&&(l.push(""),d=!1),c&&(l.push(""),c=!1)};if(i.forEach(t=>{const e=t.trim(),r=e.match(/^```\s*([\w-]+)?\s*$/);if(r){if(f(),u){const t=m?` data-lang="${n(m)}"`:"";l.push(`
${o(p.join("\n"))}
`),u=!1,m="",p=[]}else u=!0,m=r[1]||"",p=[];return}if(u)return void p.push(t);if(!e)return f(),void l.push('
');const i=t.match(/^\s*(#{1,6})\s+(.+)$/);if(i){f();const t=i[1].length;return void l.push(`${a(i[2])}`)}const h=t.match(/^\s*>\s?(.*)$/);if(h)return f(),void l.push(`
${a(h[1])}
`);const g=t.match(/^\s*[-*]\s+\[( |x|X)\]\s+(.+)$/);if(g){s&&(l.push(""),s=!1),d&&(l.push(""),d=!1),c||(l.push('"),s=!1),c&&(l.push(""),c=!1),d||(l.push("
    "),d=!0),void l.push(`
  1. ${a(b[1])}
  2. `);const y=t.match(/^\s*[-*+]\s+(.+)$/);if(y)return d&&(l.push("
"),d=!1),c&&(l.push(""),c=!1),s||(l.push(""),s=!1),d&&(l.push(""),d=!1),c&&(l.push(""),c=!1)};if(i.forEach(t=>{const e=t.trim(),r=e.match(/^```\s*([\w-]+)?\s*$/);if(r){if(f(),u){const t=m?` data-lang="${n(m)}"`:"";l.push(`
${o(p.join("\n"))}
`),u=!1,m="",p=[]}else u=!0,m=r[1]||"",p=[];return}if(u)return void p.push(t);if(!e)return f(),void l.push('
');const i=t.match(/^\s*(#{1,6})\s+(.+)$/);if(i){f();const t=i[1].length;return void l.push(`${a(i[2])}`)}const h=t.match(/^\s*>\s?(.*)$/);if(h)return f(),void l.push(`
${a(h[1])}
`);const g=t.match(/^\s*[-*]\s+\[( |x|X)\]\s+(.+)$/);if(g){s&&(l.push(""),s=!1),d&&(l.push(""),d=!1),c||(l.push('
    '),c=!0);const t="x"===String(g[1]).toLowerCase();return void l.push(`
  • ${a(g[2])}
  • `)}const b=t.match(/^\s*\d+\.\s+(.+)$/);if(b)return s&&(l.push("
"),s=!1),c&&(l.push(""),c=!1),d||(l.push("
    "),d=!0),void l.push(`
  1. ${a(b[1])}
  2. `);const y=t.match(/^\s*[-*+]\s+(.+)$/);if(y)return d&&(l.push("
"),d=!1),c&&(l.push(""),c=!1),s||(l.push("
    "),s=!0),void l.push(`
  • ${a(y[1])}
  • `);f(),l.push(`

    ${a(t)}

    `)}),u){const t=m?` data-lang="${n(m)}"`:"";l.push(`
    ${o(p.join("\n"))}
    `)}return f(),l.join("")},window.applyKeepNoteFormatting=function(t,e){if(!t||!e)return;const o=t.selectionStart||0,n=t.selectionEnd||0,r=String(t.value||""),a=r.slice(o,n),i=(e,o,n,a="end")=>{const i=r.slice(0,e)+n+r.slice(o);if(t.value=i,t.focus({preventScroll:!0}),"select"===a)t.setSelectionRange(e,e+n.length);else{const o=e+n.length;t.setSelectionRange(o,o)}},l=(e,i)=>{const l=a||"",s=`${e}${l}${i}`,d=r.slice(0,o)+s+r.slice(n);t.value=d;const c=o+e.length,u=c+l.length;t.focus({preventScroll:!0}),t.setSelectionRange(c,u)},s=e=>{const{lineStart:a,lineEnd:i}=(()=>{const t=r.slice(0,o),e=r.slice(n),a=t.lastIndexOf("\n")+1,i=e.indexOf("\n");return{lineStart:a,lineEnd:-1===i?r.length:n+i}})(),l=r.slice(a,i).split(/\r?\n/).map(e).join("\n"),s=r.slice(0,a)+l+r.slice(i);t.value=s,t.focus({preventScroll:!0}),t.setSelectionRange(a,a+l.length)};if("bold"===e)return l("**","**");if("italic"===e)return l("*","*");if("underline"===e)return l("","");if("strike"===e)return l("~~","~~");if("code"===e)return l("`","`");if("link"===e){const e=`[${a||"Texte du lien"}](https://)`;i(o,n,e);const r=o+e.length-1;return void t.setSelectionRange(r,r)}if("image"===e){const e=`![${a||"Description image"}](https://)`;i(o,n,e);const r=o+e.length-1;return void t.setSelectionRange(r,r)}if("quote"===e)return s(t=>t.startsWith("> ")?t:`> ${t}`);if("ul"===e)return s(t=>{const e=t.trim();return e?/^[-*+]\s+/.test(e)?t:`- ${e}`:"- "});if("ol"===e)return s((t,e)=>{const o=t.trim();return o?/^\d+\.\s+/.test(o)?t:`${e+1}. ${o}`:`${e+1}. `});if("todo"===e)return s(t=>{const e=t.trim();return e?/^[-*]\s+\[( |x|X)\]\s+/.test(e)?t:`- [ ] ${e}`:"- [ ] "});if("codeblock"===e){return void i(o,n,`\n\`\`\`\n${a||"code"}\n\`\`\`\n`,"select")}if("h1"===e||"h2"===e||"h3"===e||"p"===e){const t="h1"===e?"# ":"h2"===e?"## ":"h3"===e?"### ":"";return s(e=>{const o=e.replace(/^\s*(#{1,6}\s+)/,"");return t?t+o:o})}if("clear"===e){if(!a)return s(t=>t.replace(/^\s*(#{1,6}\s+)/,"").replace(/^\s*>\s?/,"").replace(/^\s*[-*+]\s+\[( |x|X)\]\s+/,"").replace(/^\s*[-*+]\s+/,"").replace(/^\s*\d+\.\s+/,"").replace(/\*\*(.*?)\*\*/g,"$1").replace(/__(.*?)__/g,"$1").replace(/~~(.*?)~~/g,"$1").replace(/\*(.*?)\*/g,"$1").replace(/_(.*?)_/g,"$1").replace(/`(.*?)`/g,"$1").replace(/(.*?)<\/u>/g,"$1"));const t=a.replace(/\*\*(.*?)\*\*/g,"$1").replace(/__(.*?)__/g,"$1").replace(/~~(.*?)~~/g,"$1").replace(/\*(.*?)\*/g,"$1").replace(/_(.*?)_/g,"$1").replace(/`(.*?)`/g,"$1").replace(/(.*?)<\/u>/g,"$1");i(o,n,t)}};const D=function(){if(V(),window.requestAnimationFrame(k),bt(),q&&I)if(E)try{!function(t,e){document.body.classList.add("view-todo","view-notes");const o=document.querySelector(".content-toolbar");o&&(o.style.display="none");const n=document.createElement("div");n.className="notes-wrapper todo-wrapper";const d=document.createElement("div");d.className="notes-top-bar";const c=document.createElement("div");c.className="note-input-container todo-input-container";const u=()=>{c.classList.remove("is-editing","todo-draft-mode","is-enhanced"),O(c,{color:"default",filter:"none",background:"none",fontColor:"auto"}),c.innerHTML=`\n
    \n ${window.ShaarliProI18n.t("Create a task...")}\n
    \n \n
    \n
    \n `;const t=c.querySelector(".note-input-collapsed"),e=c.querySelector(".todo-open-draft-btn"),o=()=>{c.classList.add("is-editing","todo-draft-mode"),c.innerHTML=`\n
    \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n `;const t=c.querySelector(".todo-draft-title"),e=c.querySelector(".todo-draft-list"),o=c.querySelector(".todo-draft-add-btn"),n=c.querySelector(".note-input-close-btn"),d=c.querySelector(".note-input-palette-btn");let m=!1,p=!1,f={color:"default",filter:"none",background:"none",fontColor:"auto"};O(c,f);const h=(t={text:"",checked:!1},o=!1)=>{if(!e)return null;const n=document.createElement("div");n.className="todo-draft-row",n.innerHTML=`\n \n \n \n `,e.appendChild(n);const r=n.querySelector(".todo-item-checkbox"),a=n.querySelector(".todo-item-text"),i=n.querySelector(".todo-item-delete"),l=()=>{n.classList.toggle("is-checked",!(!r||!r.checked))};return l(),r?.addEventListener("change",()=>{m=!0,l()}),a?.addEventListener("input",()=>{m=!0}),i?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),m=!0,n.remove(),e.querySelector(".todo-draft-row")||h({text:"",checked:!1},!0)}),o&&a&&a.focus({preventScroll:!0}),n},g=()=>e?Array.from(e.querySelectorAll(".todo-draft-row")).map(t=>{const e=t.querySelector(".todo-item-checkbox"),o=t.querySelector(".todo-item-text"),n=o&&"string"==typeof o.value?o.value.trim():"";return{checked:!(!e||!e.checked),text:n}}).filter(t=>t.text):[];h({text:"",checked:!1},!1),o?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),m=!0,h({text:"",checked:!1},!0)}),t?.addEventListener("input",()=>{m=!0});const b=async()=>{if(p)return;const e=t&&"string"==typeof t.value?t.value.trim():"",o=g();if(!e&&0===o.length)return document.removeEventListener("pointerdown",y,!0),void u();if(!m)return document.removeEventListener("pointerdown",y,!0),void u();p=!0;try{await async function({title:t,items:e=[],visual:o=null}){const n="undefined"!=typeof shaarli&&shaarli.basePath?shaarli.basePath:"",d=window.ShaarItRules?window.ShaarItRules.generateTodoUrl():"",c=`${n}/admin/shaare?post=${encodeURIComponent(d)}&tags=todo`,{action:u,baseData:m}=await z(c),p=new URLSearchParams(m.toString());p.set("lf_url",d),p.set("lf_title",t||"");const f=(Array.isArray(e)?e:[]).map(t=>({checked:!(!t||!t.checked),text:String(t&&t.text||"").trim()})).filter(t=>t.text),h=f.map(t=>`- [${t.checked?"x":" "}] ${t.text}`).join("\n");p.set("lf_description",h);let g=(p.get("lf_tags")||"").trim().split(/[\s,]+/).filter(t=>""!==t.trim());g=g.filter(t=>"note"!==t&&"shaarli-note"!==t),g.includes("todo")||g.push("todo");if(o){const t=o.color||"default",e=M(o.filter||"")||"none",n=L(o.background||"")||"none",d=o.fontColor||"auto";if(g=g.filter(t=>!t.startsWith(i)),g=g.filter(t=>!t.startsWith(l)),g=g.filter(t=>!t.startsWith(s)),g=g.filter(t=>!t.startsWith(a)),t&&"default"!==t)if("string"==typeof t&&t.startsWith("custom:")){const e=t.substring(7).replace("#","");e&&g.push(`${i}${e}`)}else g.push(`${i}${t}`);if(e&&"none"!==e&&g.push(`${l}${e}`),n&&"none"!==n&&g.push(`${s}${n}`),d&&"auto"!==d)if("string"==typeof d&&d.startsWith("custom:")){const t=d.substring(7).replace("#","");t&&g.push(`${a}${t}`)}else{const t=r.find(t=>t.key===d);t&&t.value&&"auto"!==t.value&&g.push(`${a}${t.value.substring(1)}`)}}p.set("lf_tags",g.join(" ")),p.get("returnurl")||p.set("returnurl",window.location.href);p.append("save_edit","1");const b=await fetch(u,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:p.toString()});if(!b.ok)throw new Error(`Failed to create todo (status ${b.status})`)}({title:e,items:o,visual:f}),window.location.reload()}catch(t){console.error("Error creating todo:",t),alert(window.ShaarliProI18n.t("Error creating todo.")),p=!1}};n?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),b()});const y=t=>{t.target&&t.target.closest&&t.target.closest("#shaarli-bg-studio")||t.target&&t.target.closest&&t.target.closest(".bg-studio-panel")||c.contains(t.target)||b()};document.addEventListener("pointerdown",y,!0),d?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),j({anchorEl:d,mode:"draft",entityId:"draft-new-todo",editUrl:"",currentColor:f.color||"default",currentFilter:f.filter||"none",currentBackground:f.background||"none",currentFontColor:f.fontColor||"auto",title:window.ShaarliProI18n.t("My images & colors")});const e=document.getElementById("shaarli-bg-studio");e&&(e.__draftApply=t=>{f={...f,...t||{}},O(c,f)})}),t?.focus({preventScroll:!0})};t?.addEventListener("click",t=>{t.target.closest("button")||o()}),e?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),o()})};u(),d.appendChild(c);const p=document.createElement("div");p.className="notes-tools",p.innerHTML=`\n \n \n `,d.appendChild(p),n.appendChild(d);const h=document.createElement("div");h.className="notes-content-area";const g=Array.from(t.querySelectorAll(".link-outer")),b=g.map(t=>function(t){if(!t)return null;const e=t.dataset.id,o=t.querySelector(".link-title"),n=o?o.textContent.trim():"",r=t.querySelector(".link-description"),d=r?r.innerHTML:"",c=r?r.textContent:"",u=[];t.querySelectorAll(".link-tag-list a").forEach(t=>{const e=(t.textContent||"").trim();e&&u.push(e)});const{color:m,filter:p,background:f,fontColor:h}=K(u),g=u.filter(t=>!t.startsWith(i)&&(!t.startsWith("note-custom-")&&(!t.startsWith(l)&&(!t.startsWith(s)&&!t.startsWith(a))))),b=t.querySelector(".link-actions"),y=b&&b.querySelector('a[href*="admin/shaare"]')?b.querySelector('a[href*="admin/shaare"]').href:"#",v=b&&b.querySelector('a[href*="delete"]')?b.querySelector('a[href*="delete"]').href:"#",w=b&&b.querySelector('a[href*="pin"]')?b.querySelector('a[href*="pin"]').href:"#",k=g.includes("shaarli-pin"),S=function(t,e){const o=[];if(t){const e=Array.from(t.querySelectorAll('input[type="checkbox"]'));if(e.length>0)return e.forEach(t=>{const e=t.closest("li")||t.parentElement;let n="";if(e){const t=e.cloneNode(!0);t.querySelectorAll('input[type="checkbox"]').forEach(t=>t.remove()),n=(t.textContent||"").trim()}o.push({checked:!!t.checked,text:n})}),o}const n=String(e||"").split(/\r?\n/),r=t?t.innerHTML:n.join("\n"),a=rt(r);return a.items}(r,c),$=rt(c);return{id:e,title:n,descHtml:d,descText:c,items:S,_todoHeaderLines:$.headerLines,_todoFooterLines:$.footerLines,tags:g,color:m,filter:p,background:f,fontColor:h,editUrl:y,deleteUrl:v,pinUrl:w,isPinned:k}}(t)).filter(t=>t);n.appendChild(h),t.style.display="none",t.parentNode?t.parentNode.insertBefore(n,t):e.appendChild(n);et(h,b,"grid");const y=document.createElement("div");y.className="note-modal-overlay todo-modal-overlay",y.innerHTML=`\n
    \n
    \n

    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n \n
    \n
    \n `,document.body.appendChild(y);const v=n.querySelector("#btn-view-grid"),w=n.querySelector("#btn-view-list");v.addEventListener("click",()=>{v.classList.add("active"),w.classList.remove("active"),et(h,b,"grid")}),w.addEventListener("click",()=>{w.classList.add("active"),v.classList.remove("active"),et(h,b,"list")}),y.querySelector("#todo-modal-close").addEventListener("click",()=>{y.classList.remove("open")}),y.addEventListener("click",t=>{t.target===y&&y.classList.remove("open")});const k=y.querySelector("#todo-modal-pin"),S=y.querySelector("#todo-modal-color-btn"),$=y.querySelector("#todo-modal-color-popup");S.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const e=y.querySelector(".note-modal");j({anchorEl:S,mode:"modal",entityId:e&&e.dataset.todoId||"",editUrl:e&&e.dataset.editUrl||"",currentColor:e?_(e):"default",currentFilter:e?U(e):"none",currentBackground:e?A(e):"none",currentFontColor:e?T(e):"auto",title:window.ShaarliProI18n.t("My images & colors")})}),k.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const e=y.querySelector(".note-modal"),o=e.dataset.todoId,n=e.dataset.editUrl;if(!o||!n)return;yt(o,n,k);const r=k.classList.contains("active");let a=(e.dataset.tags||"").split("||").filter(t=>t);r?a.includes("shaarli-pin")||a.push("shaarli-pin"):a=a.filter(t=>"shaarli-pin"!==t),e.dataset.tags=a.join("||"),pt(y.querySelector("#todo-modal-tags"),a),y.currentTodo&&(y.currentTodo.isPinned=r,y.currentTodo.tags=a)}),y.querySelector("#todo-modal-delete").addEventListener("click",()=>{if(!confirm(window.ShaarliProI18n.t("Delete this task?")))return;const t=y.querySelector(".note-modal"),e=t.dataset.deleteUrl;t.dataset.todoId;e&&"#"!==e&&m(e).then(()=>{window.location.href="/?searchtags=todo"}).catch(t=>{console.error("Delete failed:",t),alert(window.ShaarliProI18n.t("Error deleting."))})}),y.addEventListener("click",t=>{t.target.closest(".note-modal-color-picker")||$.classList.remove("open")}),y.querySelector("#todo-modal-add-item").addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),y.currentTodo&&function(t,e){e.items||(e.items=[]);e.items.push({checked:!1,text:""}),at(t,e);const o=t.querySelectorAll(".todo-item-text"),n=o&&o.length?o[o.length-1]:null;n&&n.focus();it(t,e)}(y,y.currentTodo)}),f()}(q,I)}catch(t){console.error("[custom_views] Erreur lors de l'initialisation de la vue Todo:",t),x()}else if(S)try{dt(q,I),f()}catch(t){console.error("[custom_views] Erreur lors de l'initialisation de la vue Note:",t),x()}else if(C)try{!function(t,e){document.body.classList.add("view-notes","view-archive");const o=document.querySelector(".content-toolbar");o&&(o.style.display="none");const n=document.createElement("div");n.className="notes-wrapper archive-wrapper";const r=document.createElement("div");r.className="notes-top-bar archive-top-bar";const a=document.createElement("div");a.className="archive-title-container",a.innerHTML=`\n

    Archive

    \n

    ${window.ShaarliProI18n.t("Archived notes")}

    \n `,r.appendChild(a);const i=document.createElement("div");i.className="notes-tools",i.innerHTML=`\n \n \n `,r.appendChild(i),n.appendChild(r);const l=document.createElement("div");l.className="notes-content-area";const s=Array.from(t.querySelectorAll(".link-outer")),d=s.map(t=>ct(t)).filter(t=>(t.tags||[]).some(t=>"shaarli-archive"===t||"shaarli-archiver"===t));ut(l,d,"grid",!0),n.appendChild(l),t.style.display="none",t.parentNode?t.parentNode.insertBefore(n,t):e.appendChild(n);const c=document.createElement("div");c.className="note-modal-overlay",c.innerHTML=`\n
    \n
    \n

    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n \n \n \n \n
    \n \n
    \n
    \n `,document.body.appendChild(c);const p=n.querySelector("#btn-view-grid"),f=n.querySelector("#btn-view-list");p.addEventListener("click",()=>{p.classList.add("active"),f.classList.remove("active"),ut(l,d,"grid",!0)}),f.addEventListener("click",()=>{f.classList.add("active"),p.classList.remove("active"),ut(l,d,"list",!0)}),c.querySelector("#note-modal-close").addEventListener("click",()=>{c.classList.remove("open")}),c.addEventListener("click",t=>{t.target===c&&c.classList.remove("open")});const h=c.querySelector("#note-modal-pin"),g=c.querySelector("#note-modal-color-btn"),b=c.querySelector("#note-modal-color-popup");g.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const e=c.querySelector(".note-modal");j({anchorEl:g,mode:"modal",entityId:e&&e.dataset.noteId||"",editUrl:e&&e.dataset.editUrl||"",currentColor:e?_(e):"default",currentFilter:e?U(e):"none",currentBackground:e?A(e):"none",currentFontColor:e?T(e):"auto",title:window.ShaarliProI18n.t("My images & colors")})}),h.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const e=c.querySelector(".note-modal"),o=e.dataset.noteId,n=e.dataset.editUrl;if(!o||!n)return;yt(o,n,h);const r=h.classList.contains("active");let a=(e.dataset.tags||"").split("||").filter(t=>t);r?a.includes("shaarli-pin")||a.push("shaarli-pin"):a=a.filter(t=>"shaarli-pin"!==t),e.dataset.tags=a.join("||"),pt(c.querySelector("#note-modal-tags"),a),c.currentNote&&(c.currentNote.isPinned=r,c.currentNote.tags=a)}),c.querySelector("#note-modal-delete").addEventListener("click",()=>{if(!confirm(window.ShaarliProI18n.t("Delete this note?")))return;const t=c.querySelector(".note-modal"),e=t.dataset.deleteUrl;t.dataset.noteId;e&&"#"!==e&&m(e).then(()=>{window.location.href="/?searchtags=shaarli-archive"}).catch(t=>{console.error("Delete failed:",t),alert(window.ShaarliProI18n.t("Error deleting."))})}),c.querySelector("#note-modal-unarchive").addEventListener("click",t=>{t.preventDefault();const e=c.querySelector(".note-modal"),o=e.dataset.noteId,n=e.dataset.editUrl;o&&n&&u(n,"shaarli-archive").then(()=>{c.currentNote&&(c.currentNote.tags=(c.currentNote.tags||[]).filter(t=>"shaarli-archive"!==t));const t=document.querySelector(`.note-card[data-id="${o}"]`);t&&t.remove();const e=d.findIndex(t=>String(t.id)===String(o));e>-1&&d.splice(e,1),c.classList.remove("open")}).catch(t=>{console.error("Error unarchiving note:",t),alert(window.ShaarliProI18n.t("Error unarchiving note."))})}),c.addEventListener("click",t=>{t.target.closest(".note-modal-color-picker")||b.classList.remove("open")}),document.addEventListener("click",t=>{t.target.closest(".note-hover-actions .palette-popup")&&!t.target.closest('.note-hover-actions [id^="palette-"]')&&document.querySelectorAll(".note-hover-actions .palette-popup.open").forEach(t=>{t.classList.remove("open")})})}(q,I),f()}catch(t){console.error("[custom_views] Erreur lors de l'initialisation de la vue Archive:",t),x()}else f()};!function(){if(N)return;const t=document.documentElement;if(!t)return;let e=P();new MutationObserver(t=>{if(!t.some(t=>"data-theme"===t.attributeName))return;const o=P();o!==e&&(e=o,document.querySelectorAll(".note-card, .note-modal, .link-outer, .note-input-container").forEach(t=>{O(t,{color:_(t),filter:U(t),background:A(t),fontColor:T(t)})}),function(){document.querySelectorAll(".note-card").forEach(t=>{const e=t.querySelector(".note-hover-actions .palette-popup");if(!e)return;const o=t.dataset.id||"";if(!o)return;const n=t.querySelector('.note-hover-actions a[href*="/admin/shaare/"], .note-hover-actions a[href*="do=editlink"], .note-hover-actions a[title="Edit"]');var r;e.innerHTML=G({entityId:(r={id:o,editUrl:n&&n.href?n.href:"#",color:_(t),background:A(t)})&&r.id?r.id:"",editUrl:r&&r.editUrl?r.editUrl:"",currentColor:r&&r.color?r.color:"default",currentFilter:r&&r.filter?r.filter:"none",mode:"entity"})}),document.querySelectorAll(".link-outer").forEach(t=>{const e=t.querySelector(".bookmark-palette .palette-popup");if(!e)return;const o=t.dataset.id||t.getAttribute("data-id")||t.id;if(!o)return;const n=t.querySelector(".link-actions"),r=n?n.querySelector(`a[title="${window.ShaarliProI18n.t("Edit")}"], a[href*="/admin/shaare/"]`):null;e.innerHTML=X(o,r&&r.href?r.href:"#",_(t),A(t))});const t=h(),e=g(t);if(!t||!e)return;const o=t.querySelector(".note-modal");o&&(e.color=_(o),e.background=A(o));const n=t.querySelector(".note-modal-palette");n&&(n.innerHTML=ht(e))}())}).observe(t,{attributes:!0,attributeFilter:["data-theme"]}),N=!0}(),$().then(()=>{D()}).catch(t=>{console.error("Erreur lors du chargement des backgrounds:",t),D()})});const o=[{key:"default",label:window.ShaarliProI18n.t("Default"),light:"#f8fafc",dark:"#20293A"},{key:"red",label:window.ShaarliProI18n.t("Red"),light:"#f28b82",dark:"#9c2116"},{key:"orange",label:window.ShaarliProI18n.t("Orange"),light:"#fbbc04",dark:"#9c7a16"},{key:"yellow",label:window.ShaarliProI18n.t("Yellow"),light:"#fff475",dark:"#9c9116"},{key:"green",label:window.ShaarliProI18n.t("Green"),light:"#ccff90",dark:"#5e9c16"},{key:"teal",label:window.ShaarliProI18n.t("Mint"),light:"#a7ffeb",dark:"#169c7d"},{key:"blue",label:window.ShaarliProI18n.t("Light blue"),light:"#cbf0f8",dark:"#16849c"},{key:"darkblue",label:window.ShaarliProI18n.t("Blue"),light:"#aecbfa",dark:"#16499c"},{key:"purple",label:window.ShaarliProI18n.t("Purple"),light:"#d7aefb",dark:"#5d169c"},{key:"pink",label:window.ShaarliProI18n.t("Pink"),light:"#fdcfe8",dark:"#9c165f"},{key:"brown",label:window.ShaarliProI18n.t("Beige"),light:"#e6c9a8",dark:"#9c5d16"},{key:"grey",label:window.ShaarliProI18n.t("Gray"),light:"#e8eaed",dark:"#4e5764"},{key:"custom",label:window.ShaarliProI18n.t("Custom"),light:"#custom",dark:"#custom"}],n=[{key:"none",label:window.ShaarliProI18n.t("None"),icon:"mdi-close-circle-outline"},{key:"glass",label:window.ShaarliProI18n.t("Glass"),icon:"mdi-blur"},{key:"vignette",label:window.ShaarliProI18n.t("Vignette"),icon:"mdi-vignette"},{key:"lined",label:window.ShaarliProI18n.t("Lined"),icon:"mdi-format-align-justify"},{key:"grid",label:window.ShaarliProI18n.t("Grid"),icon:"mdi-grid"},{key:"noise",label:window.ShaarliProI18n.t("Noise"),icon:"mdi-grain"},{key:"dots",label:window.ShaarliProI18n.t("Dots"),icon:"mdi-dots-grid"},{key:"stripes",label:window.ShaarliProI18n.t("Stripes"),icon:"mdi-slash-forward"}],r=[{key:"auto",label:window.ShaarliProI18n.t("Auto"),value:"auto"},{key:"light",label:window.ShaarliProI18n.t("Light"),value:"#f5f7fb"},{key:"dark",label:window.ShaarliProI18n.t("Dark"),value:"#202124"},{key:"white",label:window.ShaarliProI18n.t("White"),value:"#ffffff"},{key:"black",label:window.ShaarliProI18n.t("Black"),value:"#000000"},{key:"custom",label:window.ShaarliProI18n.t("Custom"),value:"custom"}],a="font-",i="note-color-",l="notefilter-",s="notebg-";function d(t){if("string"!=typeof t)return!1;const e=t.trim().toLowerCase();if(!e)return!1;if("note"===e||"#note"===e)return!0;if("shaarli-note"===e)return!0;if("todo"===e||"#todo"===e)return!0;if("shaarli-todo"===e)return!0;if("shaarli-pin"===e)return!0;if("brain-dump"===e)return!0;if(e.startsWith(a))return!0;if(e.startsWith(i))return!0;if(e.startsWith(l))return!0;if(e.startsWith(s))return!0;if(e.startsWith("notefilter-"))return!0;if(e.startsWith("notebg-"))return!0;if(e.startsWith("note-color-"))return!0;if(e.startsWith("note-")){const t=e.substring(5);if(o.some(e=>e.key===t))return!0}return!1}function c({tag:t,onRemoveClass:e="tag-remove-btn",tagClass:o="tag-pill"}){const n=document.createElement("span");n.className=o,n.dataset.tag=t;const r=document.createElement("span");r.className=`${o}-text`,r.textContent=t,n.appendChild(r);if(!(!arguments[0]||!Object.prototype.hasOwnProperty.call(arguments[0],"canRemove")||!!arguments[0].canRemove))return n;const a=document.createElement("button");return a.type="button",a.className=e,a.dataset.tag=t,a.setAttribute("aria-label",`Supprimer le tag ${t}`),a.title=window.ShaarliProI18n.t("Delete"),a.innerHTML="×",n.appendChild(a),n}function u(t,e){return fetch(t).then(t=>t.text()).then(t=>{const o=(new DOMParser).parseFromString(t,"text/html").querySelector('form[name="linkform"]');if(!o)throw new Error("Could not find edit form");const n=new URLSearchParams;o.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&n.append(t.name,t.value||"on"):t.name&&n.append(t.name,Y(t))});let r=(n.get("lf_tags")||"").split(/[\s,]+/).filter(t=>""!==t.trim());return r=r.filter(t=>t!==e),n.set("lf_tags",r.join(" ")),n.append("save_edit","1"),fetch(o.action,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:n.toString()})}).then(t=>{if(!t.ok)throw new Error("Failed to update tags");return t})}function m(t){return t&&"#"!==t?fetch(t).then(t=>{if(!t.ok)throw new Error("Delete request failed");return t}):Promise.reject("Invalid delete URL")}let p=!1;function f(){p||(document.querySelectorAll(".link-tag-list .link-tag").forEach(t=>{const e=(t.dataset.tag||t.textContent||"").trim();e&&("shaarli-pin"!==e?d(e)&&t.classList.add("is-tech-tag"):t.classList.add("is-tech-tag"))}),document.addEventListener("click",function(t){const e=t.target.closest(".tag-remove-btn, .note-tag-remove-btn");if(!e)return;t.preventDefault(),t.stopPropagation();const o=(e.dataset.tag||"").trim();if(!o)return;const n=e.closest(".link-tag, .note-tag"),r=e.closest(".link-outer, .note-card, .note-modal");let a="";if(r&&r.classList.contains("note-card"))a=r.dataset.editUrl||"";else if(r&&r.classList.contains("note-modal"))a=r.dataset.editUrl||"";else{const t=r?r.querySelector(".link-actions"):null,e=t?t.querySelector('a[href*="admin/shaare"]'):null;a=e?e.href:""}a&&u(a,o).then(()=>{if(n&&n.remove(),r&&r.classList.contains("note-card")){let t=(r.dataset.tags||"").split("||").filter(t=>t);t=t.filter(t=>t!==o),r.dataset.tags=t.join("||");const e=h(),n=g(e);if(e&&n&&String(n.id)===String(r.dataset.id)){n.tags=(n.tags||[]).filter(t=>t!==o);pt(e.querySelector(".note-modal-tags"),n.tags)}}if(r&&r.classList.contains("note-modal")){let t=(r.dataset.tags||"").split("||").filter(t=>t);t=t.filter(t=>t!==o),r.dataset.tags=t.join("||");const e=h(),n=g(e);if(e&&n){n.tags=(n.tags||[]).filter(t=>t!==o);pt(e.querySelector(".note-modal-tags"),n.tags)}const a=r.dataset.noteId||r.dataset.todoId||(n&&n.id?String(n.id):""),i=a?document.querySelector(`.note-card[data-id="${a}"]`):null;if(i){const t=i.querySelector(`.note-tag[data-tag="${CSS.escape(o)}"]`);t&&t.remove();let e=(i.dataset.tags||"").split("||").filter(t=>t);e=e.filter(t=>t!==o),i.dataset.tags=e.join("||")}}}).catch(t=>{console.error("Error removing tag:",t),alert(window.ShaarliProI18n.t("Error removing tag."))})}),p=!0)}function h(){return document.querySelector(".note-modal-overlay.open")}function g(t){return t&&(t.currentTodo||t.currentNote)||null}const b=`${function(){const t=Array.from(document.querySelectorAll('link[rel="stylesheet"]')).find(t=>t.href&&(t.href.includes("/custom_views.css")||t.href.includes("/custom_views.min.css")));if(t&&t.href){const e=new URL(t.href,window.location.origin).pathname.replace(/\/(css|dist)\/custom_views(\.min)?\.css$/,"");if(e)return e}const e=Array.from(document.querySelectorAll("script[src]")).find(t=>t.src&&(t.src.includes("/custom_views.js")||t.src.includes("/custom_views.min.js")));if(e&&e.src){const t=new URL(e.src,window.location.origin).pathname.replace(/\/(js|dist)\/custom_views(\.min)?\.js$/,"");if(t)return t}return window.shaarli&&"string"==typeof window.shaarli.assetPath&&""!==window.shaarli.assetPath.trim()?window.shaarli.assetPath.replace(/\/$/,""):"/tpl/shaarli-pro"}().replace(/\/$/,"")}/img`;let y=[],v=!1,w=null;function k(){const t=document.getElementById("links-list");if(!t)return;const e=t.querySelector(".pinned-section-head"),o=t.querySelector(".normal-section-head"),n=t.querySelector(".compact-table-head");if(!e||!o||!n)return;const r=Array.from(t.getElementsByClassName("link-outer"));if(!r.length)return;const a=t=>{if(t.classList.contains("is-sticky")||t.classList.contains("is-pinned-tag"))return!0;const e=t.querySelectorAll(".link-tag-list a, .link-tag-list .link-tag-link, .note-tag");for(const t of e){if("shaarli-pin"===(t.textContent||"").trim().toLowerCase())return!0}return!1},i=r.filter(t=>a(t)),l=r.filter(t=>!a(t));t.classList.toggle("has-pinned",i.length>0),t.classList.toggle("has-normal",l.length>0);const s=document.createDocumentFragment();s.appendChild(e),i.forEach(t=>s.appendChild(t)),s.appendChild(o),s.appendChild(n),l.forEach(t=>s.appendChild(t)),t.replaceChildren(s)}window.__shaarliCustomViewsVersion="1.0.5-inline-bg-manifest","undefined"!=typeof console&&console&&console.info,document.addEventListener("DOMContentLoaded",function(){const t=document.getElementById("links-list");if(!t)return;k(),["view-grid-btn","view-list-btn","view-compact-btn"].forEach(t=>{const e=document.getElementById(t);e&&e.addEventListener("click",()=>{window.requestAnimationFrame(k)})}),t.addEventListener("click",t=>{t.target.closest('a[href*="/pin?token="]')&&window.setTimeout(()=>{window.location.reload()},500)})});const S=[{key:"cafe",label:window.ShaarliProI18n.t("Coffee"),files:{light:"bg-light-cafe.jpg",dark:"bg-dark-cafe.jpg"}},{key:"codes",label:"Codes",files:{light:"bg-light-codes.jpg",dark:"bg-dark-codes.jpg"}},{key:"dune",label:"Dune",files:{light:"bg-light-dune.jpg",dark:"bg-dark-dune.jpg"}},{key:"feuille-ligne",label:"Feuille Ligne",files:{light:"bg-light-feuilleLigne.jpg",dark:"bg-dark-feuilleLigne.jpg"}},{key:"feuille-quadrillage",label:"Feuille Quadrillage",files:{light:"bg-light-feuilleQuadrille.jpg",dark:"bg-dark-feuilleQuadrille.jpg"}},{key:"fleurs",label:"Fleurs",files:{light:"bg-light-fleurs.jpg",dark:"bg-dark-fleurs.jpg"}},{key:"foret",label:window.ShaarliProI18n.t("Forest"),files:{light:"bg-light-foret.jpg",dark:"bg-dark-foret.jpg"}},{key:"grid",label:"Grid",files:{light:"bg-light-grid.jpg",dark:"bg-dark-grid.jpg"}},{key:"journal",label:"Journal",files:{light:"bg-light-journal.jpg",dark:"bg-dark-journal.jpg"}},{key:"lecture",label:"Lecture",files:{light:"bg-light-lecture.jpg",dark:"bg-dark-lecture.jpg"}},{key:"legumes",label:window.ShaarliProI18n.t("Vegetables"),files:{light:"bg-light-legumes.jpg",dark:"bg-dark-legumes.jpg"}},{key:"montagnes",label:"Montagnes",files:{light:"bg-light-montagnes.jpg",dark:"bg-dark-montagnes.jpg"}},{key:"ocean",label:window.ShaarliProI18n.t("Ocean"),files:{light:"bg-light-ocean.jpg",dark:"bg-dark-ocean.jpg"}},{key:"radio",label:"Radio",files:{light:"bg-light-radio.jpg",dark:"bg-dark-radio.jpg"}},{key:"sports",label:"Sports",files:{light:"bg-light-sports.jpg",dark:"bg-dark-sports.jpg"}},{key:"vague1",label:"Vague 1",files:{light:"bg-light-vague1.jpg",dark:"bg-dark-vague1.jpg"}},{key:"vague2",label:"Vague 2",files:{light:"bg-light-vague2.jpg",dark:"bg-dark-vague2.jpg"}},{key:"ville",label:"Ville",files:{light:"bg-light-ville.jpg",dark:"bg-dark-ville.jpg"}},{key:"voyage",label:"Voyage",files:{light:"bg-light-voyage.jpg",dark:"bg-dark-voyage.jpg"}}];function $(){return v?Promise.resolve(y):w||(y=function(t){const e=Array.isArray(t)?t:t&&Array.isArray(t.backgrounds)?t.backgrounds:[],o={};return e.forEach(t=>{if(!t||"object"!=typeof t)return;const e=L("string"==typeof t.key?t.key:t.label||"");if(!e)return;const n=t.files&&"object"==typeof t.files?t.files:{},r="string"==typeof n.light?n.light.trim():"",a="string"==typeof n.dark?n.dark.trim():"";(r||a)&&(o[e]||(o[e]={key:e,label:E(t.label||"",e),paths:{light:"",dark:""}}),r&&(o[e].paths.light=`note-bg-light/${r}`),a&&(o[e].paths.dark=`note-bg-dark/${a}`))}),Object.values(o).sort((t,e)=>t.label.localeCompare(e.label,"fr",{sensitivity:"base"}))}(S),v=!0,w=Promise.resolve(y),w)}function L(t){return"string"!=typeof t?"":t.trim().toLowerCase().replace(/[\s_]+/g,"-").replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function E(t,e){return("string"==typeof t&&""!==t.trim()?t:e).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/\s+/g," ").trim().split(" ").filter(t=>""!==t).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function P(){return"dark"===document.documentElement.getAttribute("data-theme")?"dark":"light"}function C(t,e=P()){if(!t||"object"!=typeof t)return"";const o="dark"===e?"dark":"light",n="string"==typeof t[o]?t[o].trim():"",r="string"==typeof t.light?t.light.trim():"",a="string"==typeof t.dark?t.dark.trim():"";return n||r||a}function q(t,e=P()){const o=function(t){if("string"!=typeof t)return null;const e=t.trim(),o=/^#([0-9a-f]{3})$/i.exec(e);if(o)return{r:parseInt(o[1].charAt(0).repeat(2),16),g:parseInt(o[1].charAt(1).repeat(2),16),b:parseInt(o[1].charAt(2).repeat(2),16)};const n=/^#([0-9a-f]{6})$/i.exec(e);return n?{r:parseInt(n[1].slice(0,2),16),g:parseInt(n[1].slice(2,4),16),b:parseInt(n[1].slice(4,6),16)}:null}(t);if(!o)return"dark"===e?"#e8eaed":"#202124";return(.299*o.r+.587*o.g+.114*o.b)/255>.56?"#202124":"#f5f7fb"}function I(t=P()){const e="dark"===t?"dark":"light";return y.filter(t=>t.paths&&t.paths[e])}function x(t,e=P()){const o=L(t);if(!o)return"";const n=y.find(t=>t.key===o);if(!n||!n.paths)return"";const r="dark"===e?"dark":"light",a=n.paths[r]||"";return a?`${b}/${a}`:""}function _(t){if(!t)return"default";if("custom"===t.dataset.color&&t.dataset.customColor)return`custom:${t.dataset.customColor}`;const e=Array.from(t.classList).find(t=>t.startsWith("note-color-"));return e?e.replace("note-color-",""):t.dataset.color||"default"}function A(t){if(!t)return"none";return L(t.dataset.background||"")||"none"}function M(t){if("string"!=typeof t)return"none";const e=t.trim().toLowerCase();return n.some(t=>t.key===e)?e:"none"}function U(t){return t?M(t.dataset.filter||""):"none"}function T(t){return t&&t.dataset.fontColor||"auto"}let N=!1;function D(t){if(!t||!t.classList.contains("open"))return;t.classList.remove("open-down"),t.style.left="",t.style.right="";if(t.getBoundingClientRect().top<8){t.classList.add("open-down");t.getBoundingClientRect().bottom>window.innerHeight-8&&t.classList.remove("open-down")}let e=t.getBoundingClientRect();e.right>window.innerWidth-8&&(t.style.left="auto",t.style.right="0",e=t.getBoundingClientRect()),e.left<8&&(t.style.left="0",t.style.right="auto")}let F=!1;function H(){const t=document.getElementById("shaarli-bg-studio");t&&(t.classList.remove("open"),t.style.display="none",t.setAttribute("aria-hidden","true"),t.__anchorEl=null)}function j({anchorEl:t,mode:e,entityId:o,editUrl:n,currentColor:r,currentFilter:a,currentBackground:i,currentFontColor:l,title:s}){!function(){if(F)return;if(document.getElementById("shaarli-bg-studio"))return void(F=!0);const t=document.createElement("div");t.id="shaarli-bg-studio",t.className="bg-studio-panel",t.setAttribute("role","dialog"),t.setAttribute("aria-modal","false"),t.setAttribute("aria-hidden","true"),t.style.display="none",document.body.appendChild(t),t.addEventListener("click",t=>{const e=t.target.closest("button[data-bg-studio-action]");if(!e)return;const o=document.getElementById("shaarli-bg-studio");if(!o)return;const n=o.dataset.mode||"entity",r=o.dataset.entityId||"",a=o.dataset.editUrl||"",i=t=>{"function"==typeof o.__draftApply&&o.__draftApply(t)},l=e.dataset.bgStudioAction;if("close"!==l){if("set-color"===l){const t=e.dataset.colorKey||"default";return void("draft"===n?(o.dataset.color=t,i({color:t}),R(o)):"modal"===n?(setModalNoteColor(t),o.dataset.color=t,R(o)):(setNoteColor(r,t,a),o.dataset.color=t,R(o)))}if("set-background"===l){const t=e.dataset.bgKey||"none";return void("draft"===n?(o.dataset.background=t,i({background:t}),R(o)):"modal"===n?(setModalNoteBackground(t),o.dataset.background=t,R(o)):(setNoteBackground(r,t,a),o.dataset.background=t,R(o)))}if("set-filter"===l){const t=e.dataset.filter||"none",l=M(t||"")||"none";return void("draft"===n?(o.dataset.filter=l,i({filter:l}),R(o)):"modal"===n?(setModalNoteFilter(t),o.dataset.filter=l,R(o)):(setNoteFilter(r,t,a),o.dataset.filter=l,R(o)))}if("set-query"===l){o.dataset.query="",R(o);const t=o.querySelector(".bg-studio-search-input");return void(t&&t.focus())}if("set-defaults"!==l)if("reset-font-color"!==l)if("open-color-picker"!==l)if("open-font-color-picker"!==l){if("set-font-color"===l){const t=e.dataset.fontColorKey||"auto";return void("draft"===n?(o.dataset.fontColor=t,i({fontColor:t}),R(o)):"modal"===n?(Ct(t),o.dataset.fontColor=t,R(o)):(Pt(r,t,a),o.dataset.fontColor=t,R(o)))}}else kt({mode:n,entityId:r,editUrl:a,type:"font"});else kt({mode:n,entityId:r,editUrl:a,type:"background"});else"draft"===n?(o.dataset.fontColor="auto",i({fontColor:"auto"}),R(o)):"modal"===n?(Ct("auto"),o.dataset.fontColor="auto",R(o)):(Pt(r,"auto",a),o.dataset.fontColor="auto",R(o));else"draft"===n?(o.dataset.color="default",o.dataset.background="none",i({color:"default",background:"none"}),R(o)):"modal"===n?(setModalNoteColor("default"),o.dataset.color="default",o.dataset.background="none",R(o)):(setNoteColor(r,"default",a),o.dataset.color="default",o.dataset.background="none",R(o))}else H()}),t.addEventListener("keydown",e=>{const o=e.target&&e.target.closest?e.target.closest("button"):null;if(!o)return;if("Enter"===e.key||" "===e.key)return void((o.hasAttribute("data-bg-studio-action")||o.classList.contains("bg-studio-thumb")||o.classList.contains("bg-studio-swatch"))&&(e.preventDefault(),o.click()));const n=(t,e)=>{if(!t||0===t.length)return;const o=t[Math.max(0,Math.min(t.length-1,e))];o&&"function"==typeof o.focus&&o.focus()};if(o.classList.contains("bg-studio-thumb")){const r=Array.from(t.querySelectorAll(".bg-studio-gallery .bg-studio-thumb")),a=r.indexOf(o);if(-1===a)return;const i=2;return void("ArrowRight"===e.key?(e.preventDefault(),n(r,a+i)):"ArrowLeft"===e.key?(e.preventDefault(),n(r,a-i)):"ArrowDown"===e.key?(e.preventDefault(),n(r,a+1)):"ArrowUp"===e.key&&(e.preventDefault(),n(r,a-1)))}if(o.classList.contains("bg-studio-swatch")){const r=Array.from(t.querySelectorAll(".bg-studio-swatches .bg-studio-swatch")),a=r.indexOf(o);if(-1===a)return;return void("ArrowRight"===e.key?(e.preventDefault(),n(r,a+1)):"ArrowLeft"===e.key&&(e.preventDefault(),n(r,a-1)))}}),t.addEventListener("input",t=>{const e=t.target&&t.target.matches(".bg-studio-search-input")?t.target:null;if(!e)return;const o=document.getElementById("shaarli-bg-studio");o&&(o.dataset.query=e.value||"",window.clearTimeout(o.__searchTimer),o.__searchTimer=window.setTimeout(()=>{R(o)},150))}),F=!0}();const d=document.getElementById("shaarli-bg-studio");d&&(d.dataset.mode=e||"entity",d.dataset.entityId=o||"",d.dataset.editUrl=n||"",d.dataset.color=r||"default",d.dataset.filter=M(a||"")||"none",d.dataset.background=L(i||"")||"none",d.dataset.fontColor=l||d.dataset.fontColor||"auto",d.dataset.query=d.dataset.query||"",d.dataset.title=s||window.ShaarliProI18n.t("My images & colors"),d.__anchorEl=t||null,R(d),d.style.display="block",d.classList.add("open"),d.setAttribute("aria-hidden","false"),function(t,e){if(!t)return;const o=12,n=e&&e.getBoundingClientRect?e.getBoundingClientRect():null;t.style.left="",t.style.top="",t.style.right="",t.style.bottom="";const r=t.getBoundingClientRect(),a=n?n.top-r.height-10:o,i=n?n.left:o;let l=a;lwindow.innerWidth-o&&(s=window.innerWidth-o-r.width);swindow.innerHeight-o&&(l=window.innerHeight-o-r.height);l{const t=d.querySelector(".bg-studio-search-input");t&&"function"==typeof t.focus&&(t.focus(),t.select())}))}function B(t){return String(t||"").toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").trim()}function W(t,e){const o=B(`${t||""} ${e||""}`);return t&&"none"!==t?o.includes("degrade")||o.includes("gradient")?"gradient":o.includes("grid")||o.includes("quadrill")||o.includes("lign")||o.includes("feuille")?"grid":o.includes("damier")||o.includes("checker")||o.includes("texture")?"texture":"image":"solid"}function R(t){if(!t)return;const e=document.activeElement,a=!!(e&&t.contains(e)&&e.classList&&e.classList.contains("bg-studio-search-input")),i=a&&"number"==typeof e.selectionStart?e.selectionStart:null,l=a&&"number"==typeof e.selectionEnd?e.selectionEnd:null,s=t.dataset.title||window.ShaarliProI18n.t("My images & colors"),d=t.dataset.color||"default",c="string"==typeof d&&d.startsWith("custom:"),u=t.dataset.filter||"none",m=t.dataset.fontColor||"auto",p=B(t.dataset.query||""),{colors:f,backgrounds:h}={colors:o.map(t=>({type:"color",key:t.key,label:t.label,color:C(t),keywords:[t.key,t.label]})),backgrounds:[{type:"background",category:"solid",key:"none",label:window.ShaarliProI18n.t("Solid color"),keywords:["none","sans image","solid","uni"]},...I().map(t=>({type:"background",category:W(t.key,t.label),key:t.key,label:t.label,url:x(t.key),keywords:[t.key,t.label,"image","background"]}))]},g=h.filter(t=>{if(!p)return!0;return B([t.label,t.key,"image","background"].join(" ")).includes(p)}).map(e=>{const o=t.dataset.background===e.key,n=`class="bg-studio-thumb ${o?"is-active":""}" type="button"`;return`
    ${"none"===e.key?``:``}
    ${e.label}
    `}).join(""),b=f.filter(t=>"default"!==t.key&&"custom"!==t.key).map(t=>{const e=d===t.key,o=t.color||"";return``}).join("")+``,y="string"==typeof m&&m.startsWith("custom:"),v=r.filter(t=>"custom"!==t.key).map(t=>{const e=m===t.key,o=t.value||"auto",n="auto"===o?"background: linear-gradient(135deg, #f5f7fb 50%, #202124 50%);":`background-color: ${o};`;return``}).join("")+``,w=n.map(t=>((t,e,o)=>{const n=u===t;return``})(t.key,t.icon,t.label)).join(""),k=!!(t.dataset.query||"").trim();if(t.innerHTML=`\n
    \n
    ${s}
    \n \n
    \n \n
    \n
    \n
    \n
    Colors:
    \n \n
    \n
    ${b}
    \n
    \n
    \n
    \n
    Font:
    \n \n
    \n
    ${v}
    \n
    \n
    \n
    Filtres:
    \n
    ${w}
    \n
    \n
    \n \n `,a){const e=t.querySelector(".bg-studio-search-input");if(e&&"function"==typeof e.focus&&(e.focus({preventScroll:!0}),"function"==typeof e.setSelectionRange)){const t=(e.value||"").length,o="number"==typeof i?Math.max(0,Math.min(t,i)):t,n="number"==typeof l?Math.max(0,Math.min(t,l)):t;try{e.setSelectionRange(o,n)}catch(t){}}}}function O(t,e){if(!t||!e)return;const n=e.color||"default",a="string"==typeof n&&n.startsWith("custom:"),i=a?n.substring(7):"",l=a?null:function(t){const e="string"==typeof t?t.trim().toLowerCase():"";return o.find(t=>t.key===e)||o.find(t=>"default"===t.key)||null}(n),s=a?"custom":l?l.key:"default",d=a?i:C(l),c=q(d),u=M(e.filter||"none"),m=L(e.background||"")||"none",p=e.fontColor||"auto";if(Array.from(t.classList).forEach(e=>{e.startsWith("note-color-")&&t.classList.remove(e),e.startsWith("note-filter-")&&t.classList.remove(e)}),t.classList.add(`note-color-${s}`),"none"!==u&&t.classList.add(`note-filter-${u}`),d&&"default"!==s?(t.style.backgroundColor=d,t.style.removeProperty("border-color")):t.style.removeProperty("background-color"),c&&"default"!==s?t.style.setProperty("--note-card-fg",c):t.style.removeProperty("--note-card-fg"),p&&"auto"!==p){let e=null;if("string"==typeof p&&p.startsWith("custom:"))e=p.substring(7);else{const t=r.find(t=>t.key===p);t&&t.value&&"auto"!==t.value&&(e=t.value)}e&&t.style.setProperty("--note-card-fg",e)}if(m&&"none"!==m){const e=x(m);e?(t.classList.add("note-has-bg"),t.style.setProperty("--note-bg-image",`url('${e}')`),t.dataset.background=m):(t.classList.remove("note-has-bg"),t.style.removeProperty("--note-bg-image"),t.dataset.background="none")}else t.classList.remove("note-has-bg"),t.style.removeProperty("--note-bg-image"),t.dataset.background="none";t.dataset.color=s,t.dataset.customColor=a&&i?i:"",t.dataset.filter=u,t.dataset.fontColor=p}function K(t){const e=Array.isArray(t)?t:[];let n="default";const r=e.find(t=>"string"==typeof t&&t.startsWith(i));if(r){const t=r.substring(i.length);/^[0-9A-Fa-f]{6}$/.test(t)?n=`custom:#${t.toUpperCase()}`:o.some(e=>e.key===t)&&(n=t)}else{const t=e.find(t=>"string"==typeof t&&t.startsWith("note-custom-"));if(t){const e=t.substring(12);/^[0-9A-Fa-f]{6}$/.test(e)&&(n=`custom:#${e.toUpperCase()}`)}const r=e.find(t=>"string"==typeof t&&t.startsWith("note-"));if(r){const t=r.substring(5);o.some(e=>e.key===t)&&(n=t)}}let d="none";const c=e.find(t=>"string"==typeof t&&t.startsWith(l));if(c){const t=M(c.substring(l.length));t&&"none"!==t&&(d=t)}let u="none";const m=e.find(t=>"string"==typeof t&&t.startsWith(s));if(m){const t=L(m.substring(s.length));t&&(u=t)}let p="auto";const f=e.find(t=>"string"==typeof t&&t.startsWith(a));if(f){const t=f.substring(a.length),e=t.startsWith("#")?t:`#${t}`;/^#[0-9A-Fa-f]{6}$/.test(e)&&(p=`custom:${e.toUpperCase()}`)}return{color:n,filter:d,background:u,fontColor:p}}function V(){const t=Array.from(document.querySelectorAll(".link-outer"));0!==t.length&&(t.forEach(t=>{const e=t.dataset.id||t.getAttribute("data-id")||t.id;if(!e)return;const o=Array.from(t.querySelectorAll(".link-tag a")).map(t=>(t.textContent||"").trim()),{color:n,filter:r,background:a,fontColor:i}=K(o);O(t,{color:n,filter:r,background:a,fontColor:i});const l=t.querySelector(".link-actions");if(!l)return;if(l.querySelector(".bookmark-palette"))return;const s=l.querySelector(`a[title="${window.ShaarliProI18n.t("Edit")}"], a[href*="/admin/shaare/"]`);if(!s||!s.href)return;const d=s.href,c=`bookmark-palette-${e}`,u=document.createElement("div");u.className="bookmark-palette",u.style.position="relative",u.innerHTML=`\n \n `;const m=Array.from(l.querySelectorAll(`a[href*="/pin"], a[aria-label*="${window.ShaarliProI18n.t("Pin")}"], a[title*="${window.ShaarliProI18n.t("Pin")}"]`))[0];m&&m.parentNode===l?l.insertBefore(u,m):s&&s.parentNode===l?l.insertBefore(u,s.nextSibling):l.appendChild(u);const p=u.querySelector(`#${c}`);p&&p.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation(),j({anchorEl:p,mode:"entity",entityId:e,editUrl:d,currentColor:_(t),currentFilter:U(t),currentBackground:A(t),currentFontColor:T(t),title:window.ShaarliProI18n.t("My images & colors")})})}),document.addEventListener("click",t=>{t.target.closest(".bookmark-palette")||t.target.closest("#shaarli-bg-studio")||H()}))}function X(t,e,o,n){return G({entityId:t,editUrl:e,currentColor:o,currentFilter:n,mode:"entity"})}function G({entityId:t,editUrl:e,currentColor:r,currentFilter:a,mode:i}){const l=r||"default",s=M(a||"")||"none",d="modal"===i?t=>`setModalNoteColor('${t}')`:o=>`setNoteColor('${t}', '${o}', '${e}')`,c="modal"===i?t=>`setModalNoteFilter('${t}')`:o=>`setNoteFilter('${t}', '${o}', '${e}')`;return`\n
    \n
    Couleurs
    \n
    ${[``,...o.filter(t=>"default"!==t.key).map(t=>{const e=C(t);return``})].join("")}
    \n
    \n
    \n
    \n
    Filtres
    \n
    ${[``,...n.filter(t=>"none"!==t.key).map(t=>``)].join("")}
    \n
    \n `}function Q(t,e){if(!t||!e)return;const o=Array.from(e.classList).find(t=>t.startsWith("note-color-"));o&&(t.color=o.replace("note-color-","")||"default");const n=e.dataset.filter;t.filter=n&&"none"!==n?n:"none";const r=e.dataset.background;t.background=r&&"none"!==r?r:"none"}function Y(t){if(!t)return"";if("TEXTAREA"===(t.tagName||"").toUpperCase()){const e="string"==typeof t.value?t.value:"";if(e&&""!==e.trim())return e;return"string"==typeof t.textContent?t.textContent:""}return t.value}async function z(t){const e=await fetch(t,{credentials:"same-origin"}),o=await e.text(),n=(new DOMParser).parseFromString(o,"text/html").querySelector('form[name="linkform"]');if(!n)throw new Error("Could not find edit form");const r=new URLSearchParams;return n.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&r.append(t.name,t.value||"on"):t.name&&r.append(t.name,Y(t))}),{action:n.action,baseData:r}}async function J({title:t,markdown:e,visual:o=null}){const n="undefined"!=typeof shaarli&&shaarli.basePath?shaarli.basePath:"",d=window.ShaarItRules?window.ShaarItRules.generateNoteUrl():"",c=`${n}/admin/shaare?post=${encodeURIComponent(d)}&tags=note`,{action:u,baseData:m}=await z(c),p=new URLSearchParams(m.toString());p.set("lf_url",d),p.set("lf_title",t||""),p.set("lf_description",e||"");let f=(p.get("lf_tags")||"").trim().split(/[\s,]+/).filter(t=>""!==t.trim());if(f=f.filter(t=>"shaarli-todo"!==t),f.includes("note")||f.push("note"),f.includes("shaarli-note")||f.push("shaarli-note"),o){const t=o.color||"default",e=M(o.filter||"")||"none",n=L(o.background||"")||"none",d=o.fontColor||"auto";if(f=f.filter(t=>!t.startsWith(i)),f=f.filter(t=>!t.startsWith(l)),f=f.filter(t=>!t.startsWith(s)),f=f.filter(t=>!t.startsWith(a)),t&&"default"!==t)if("string"==typeof t&&t.startsWith("custom:")){const e=t.substring(7).replace("#","");e&&f.push(`${i}${e}`)}else f.push(`${i}${t}`);if(e&&"none"!==e&&f.push(`${l}${e}`),n&&"none"!==n&&f.push(`${s}${n}`),d&&"auto"!==d)if("string"==typeof d&&d.startsWith("custom:")){const t=d.substring(7).replace("#","");t&&f.push(`${a}${t}`)}else{const t=r.find(t=>t.key===d);t&&t.value&&"auto"!==t.value&&f.push(`${a}${t.value.substring(1)}`)}}p.set("lf_tags",f.join(" ")),p.get("returnurl")||p.set("returnurl",window.location.href),p.append("save_edit","1");const h=await fetch(u,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:p.toString()});if(!h.ok)throw new Error(`Failed to create note (status ${h.status})`)}async function Z(t){if(t&&t.editUrl&&"#"!==t.editUrl&&!t._noteHydrated)return t._noteHydratePromise||(t._noteHydratePromise=(async()=>{try{const{action:e,baseData:o}=await z(t.editUrl);t._noteEditAction=e,t._noteEditBaseData=o,t._noteMarkdown=o.get("lf_description")||"",t._noteTitle=o.get("lf_title")||"",t._noteHydrated=!0}catch(t){console.error("Error hydrating note edit form:",t)}finally{t._noteHydratePromise=null}})()),t._noteHydratePromise}async function tt(t,{title:e,markdown:o},n=0){if(!t||!t.editUrl||"#"===t.editUrl)return;const r=async()=>{const{action:e,baseData:o}=await z(t.editUrl);t._noteEditAction=e,t._noteEditBaseData=o};t._noteEditAction&&t._noteEditBaseData&&t._noteEditBaseData.get&&t._noteEditBaseData.get("token")||await r();const a=new URLSearchParams(t._noteEditBaseData.toString());a.set("lf_title",e||""),a.set("lf_description",o||"");let i=(a.get("lf_tags")||"").trim().split(/[\s,]+/).filter(t=>""!==t.trim());i=i.filter(t=>"shaarli-todo"!==t),i.includes("note")||i.push("note"),i.includes("shaarli-note")||i.push("shaarli-note"),a.set("lf_tags",i.join(" ")),a.append("save_edit","1");const l=await fetch(t._noteEditAction,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:a.toString()});if(!l.ok){if(403===l.status&&n<1)return t._noteEditAction="",t._noteEditBaseData=null,await r(),tt(t,{title:e,markdown:o},n+1);throw new Error("Failed to save note")}}function et(t,e,o){if(!t)return;t.innerHTML="",t.className="grid"===o?"notes-masonry":"notes-list-view";const n=(e||[]).slice();n.sort((t,e)=>{const o=(t.tags||[]).includes("shaarli-pin");return(e.tags||[]).includes("shaarli-pin")-o}),n.forEach(e=>{const n=document.createElement("div");n.className="note-card todo-card",n.dataset.id=e.id,n.dataset.editUrl=e.editUrl||"",n.dataset.tags=(e.tags||[]).filter(t=>t).join("||"),e._todoCardEl=n,O(n,e),"list"===o&&n.classList.add("list-mode"),n.addEventListener("click",t=>{t.target.closest("button")||t.target.closest("a")||t.target.closest(".note-hover-actions")||(Q(e,n),async function(t){const e=document.querySelector(".todo-modal-overlay");if(!e)return;const o=e.querySelector(".note-modal"),n=e.querySelector("#todo-modal-title"),r=e.querySelector("#todo-modal-tags"),a=e.querySelector("#todo-modal-edit"),i=e.querySelector("#todo-modal-pin"),l=e.querySelector("#todo-modal-color-popup");e.currentTodo=t,o.className="note-modal todo-modal",O(o,t),o.dataset.todoId=t.id||"",o.dataset.editUrl=t.editUrl||"",o.dataset.deleteUrl=t.deleteUrl||"",o.dataset.background=t.background||"none";const s=(t.tags||[]).filter(t=>t&&!d(t));o.dataset.tags=s.join("||"),n.textContent=t.title||window.ShaarliProI18n.t("Untitled"),pt(r,s),a&&(a.href=t.editUrl||"#");l&&(l.innerHTML=G({entityId:t&&t.id?t.id:"",editUrl:t&&t.editUrl?t.editUrl:"",currentColor:t&&t.color?t.color:"default",currentFilter:t&&t.filter?t.filter:"none",mode:"modal"}),l.classList.remove("open"));mt(i,!!t.isPinned),e.classList.add("open"),at(e,t);const c=`${t.id}-${Date.now()}`;if(e._todoLoadKey=c,t.editUrl&&"#"!==t.editUrl)try{const o=await fetch(t.editUrl,{credentials:"same-origin"});if(!o.ok)return void console.error("Todo modal load failed (edit form fetch not ok).",{id:t&&t.id,url:t&&t.editUrl,status:o&&o.status});const n=await o.text();if(e._todoLoadKey!==c)return;const r=new DOMParser,a=r.parseFromString(n,"text/html").querySelector('form[name="linkform"]');if(!a)return void console.error("Todo modal load failed (edit form not found).",{id:t&&t.id,url:t&&t.editUrl,status:o&&o.status});const i=new URLSearchParams;a.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&i.append(t.name,t.value||"on"):t.name&&i.append(t.name,Y(t))}),t._todoEditAction=a.action,t._todoEditBaseData=i;const l=rt(i.get("lf_description")||"");t._todoHeaderLines=l.headerLines,t._todoFooterLines=l.footerLines,t.items=l.items,at(e,t)}catch(t){console.error("Error loading todo markdown:",t)}}(e))});const r=document.createElement("div");if(r.className="note-inner",e.title){const t=document.createElement("h3");t.className="note-title",t.textContent=e.title,r.appendChild(t)}const a=document.createElement("div");if(a.className="note-body todo-checklist-preview-wrap",a.innerHTML=ot(e.items||[]),r.appendChild(a),(e.tags||[]).length>0){const t=document.createElement("div");t.className="note-tags",e.tags.forEach(o=>{if(d(o))return;const n=c({tag:o,onRemoveClass:"note-tag-remove-btn",tagClass:"note-tag",canRemove:!!e.editUrl&&"#"!==e.editUrl});t.appendChild(n)}),r.appendChild(t)}const i=document.createElement("div");i.className="note-hover-actions";const l=document.createElement("a");l.href=e.pinUrl,l.title=e.isPinned?"Unpin":"Pin",l.className="note-pin-corner "+(e.isPinned?"active":""),l.innerHTML=``,r.appendChild(l);const s=`palette-${e.id}`;i.innerHTML=`\n
    \n \n
    \n
    \n \n \n `;const u=i.querySelector(".todo-delete-btn");u?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),confirm(window.ShaarliProI18n.t("Delete this task?"))&&m(e.deleteUrl).then(()=>{window.location.href="/?searchtags=todo"}).catch(t=>{console.error("Delete failed:",t),alert(window.ShaarliProI18n.t("Error deleting."))})});const p=i.querySelector(`#${s}`);p.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),j({anchorEl:p,mode:"entity",entityId:e.id,editUrl:e.editUrl,currentColor:_(n),currentFilter:U(n),currentBackground:A(n),title:window.ShaarliProI18n.t("My images & colors")})}),r.appendChild(i),n.appendChild(r),t.appendChild(n),async function(t){if(t&&t.editUrl&&"#"!==t.editUrl&&!t._todoHydrated)t._todoHydratePromise||(t._todoHydratePromise=(async()=>{try{const e=await fetch(t.editUrl,{credentials:"same-origin"});if(!e.ok)return void console.error("Todo hydration failed (edit form fetch not ok).",{id:t&&t.id,url:t&&t.editUrl,status:e&&e.status});const o=await e.text(),n=(new DOMParser).parseFromString(o,"text/html").querySelector('form[name="linkform"]');if(!n)return void console.error("Todo hydration failed (edit form not found).",{id:t&&t.id,url:t&&t.editUrl,status:e&&e.status});const r=new URLSearchParams;n.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&r.append(t.name,t.value||"on"):t.name&&r.append(t.name,Y(t))}),t._todoEditAction=n.action,t._todoEditBaseData=r;const a=rt(r.get("lf_description")||"");t._todoHeaderLines=a.headerLines,t._todoFooterLines=a.footerLines,t.items=a.items,lt(t),t._todoHydrated=!0}catch(t){console.error("Error hydrating todo markdown:",t)}finally{t._todoHydratePromise=null}})()),t._todoHydratePromise}(e)})}function ot(t){const e=Array.isArray(t)?t:[],o=e.slice(0,8),n=e.length>8;return`
      ${o.map(t=>`
    • ${nt(String(t.text||""))}
    • `).join("")}${n?'
    • ...
    • ':""}
    `}function nt(t){return String(t).replace(/&/g,"&").replace(//g,">").replace(/\"/g,""").replace(/'/g,"'")}function rt(t){const e=String(t||"").replace(//gi,"\n").replace(/<\/(p|div|li|h\d)\s*>/gi,"\n");let o=e;try{const t=document.createElement("div");t.innerHTML=e;const n=Array.from(t.querySelectorAll('input[type="checkbox"]'));if(n.length>0){const t=[];return n.forEach(e=>{const o=e.closest("li")||e.parentElement;let n="";if(o){const t=o.cloneNode(!0);t.querySelectorAll('input[type="checkbox"]').forEach(t=>t.remove()),n=(t.textContent||"").trim()}t.push({checked:!!e.checked,text:n})}),{headerLines:[],footerLines:[],items:t}}const r=Array.from(t.querySelectorAll("li"));if(r.length>0){const t=r.map(t=>({checked:!1,text:(t.textContent||"").trim()})).filter(t=>t.text);if(t.length>0)return{headerLines:[],footerLines:[],items:t}}o=t.textContent||e}catch(t){o=e}const n=o.split(/\r?\n/),r=[/^\s*[-*+]\s*\[([ xX])\]\s*(.*)$/,/^\s*\[([ xX])\]\s*(.*)$/,/^\s*☐\s*(.*)$/,/^\s*☑\s*(.*)$/];let a=-1,i=-1;const l=[];n.forEach((t,e)=>{let o=!1;for(let n=0;n{const a=document.createElement("div");a.className="todo-checklist-row",a.dataset.index=String(r),a.setAttribute("draggable","true"),a.classList.toggle("is-checked",!!n.checked),a.innerHTML=`\n \n \n \n \n `;const i=a.querySelector(".todo-item-checkbox"),l=a.querySelector(".todo-item-text"),s=a.querySelector(".todo-item-delete");i.addEventListener("change",()=>{e.items[r].checked=i.checked,it(t,e),a.classList.toggle("is-checked",i.checked)}),l.addEventListener("input",()=>{e.items[r].text=l.value,it(t,e)}),s.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation(),e.items.splice(r,1),at(t,e),it(t,e)}),a.addEventListener("dragstart",t=>{a.classList.add("is-dragging"),t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",String(r))}),a.addEventListener("dragend",()=>{a.classList.remove("is-dragging")}),o.appendChild(a)}),o.dataset.dndInit||(o.addEventListener("dragover",t=>{t.preventDefault();const e=o.querySelector(".todo-checklist-row.is-dragging");if(!e)return;const n=(r=o,a=t.clientY,[...r.querySelectorAll(".todo-checklist-row:not(.is-dragging)")].reduce((t,e)=>{const o=e.getBoundingClientRect(),n=a-o.top-o.height/2;return n<0&&n>t.offset?{offset:n,element:e}:t},{offset:Number.NEGATIVE_INFINITY,element:null}).element);var r,a;null==n?o.appendChild(e):o.insertBefore(e,n)},{passive:!1}),o.addEventListener("drop",e=>{e.preventDefault();const n=t&&t.currentTodo?t.currentTodo:null;if(!n)return;const r=Array.from(o.querySelectorAll(".todo-checklist-row")),a=[];r.forEach(t=>{const e=Number(t.dataset.index);!Number.isNaN(e)&&n.items&&n.items[e]&&a.push(n.items[e])}),n.items=a,at(t,n),it(t,n)}),o.dataset.dndInit="1")}function it(t,e){t&&e&&(t._todoSaveTimer&&clearTimeout(t._todoSaveTimer),lt(e),t._todoSaveTimer=setTimeout(()=>{st(e).catch(t=>{console.error("Error saving todo:",t),alert(window.ShaarliProI18n.t("Error saving todo.")+" "+window.ShaarliProI18n.t("Please refresh the page."))})},600))}function lt(t){if(!t||!t.id)return;let e=t._todoCardEl&&t._todoCardEl.isConnected?t._todoCardEl:null;if(e||(e=document.querySelector(`.note-card.todo-card[data-id="${String(t.id)}"]`)),!e){e=Array.from(document.querySelectorAll(".note-card.todo-card")).find(e=>String(e.dataset.id||"")===String(t.id))||null}if(!e)return;const o=e.querySelector(".todo-checklist-preview-wrap");o&&(o.innerHTML=ot(t.items||[]))}async function st(t,e=0){if(!t||!t.editUrl||"#"===t.editUrl)return;const o=async()=>{const e=await fetch(t.editUrl,{credentials:"same-origin"}),o=await e.text(),n=(new DOMParser).parseFromString(o,"text/html").querySelector('form[name="linkform"]');if(!n)throw new Error("Could not find edit form");const r=new URLSearchParams;n.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&r.append(t.name,t.value||"on"):t.name&&r.append(t.name,Y(t))}),t._todoEditAction=n.action,t._todoEditBaseData=r;const a=rt(r.get("lf_description")||"");t._todoHeaderLines=a.headerLines,t._todoFooterLines=a.footerLines};t._todoEditAction&&t._todoEditBaseData&&t._todoEditBaseData.get&&t._todoEditBaseData.get("token")||await o();const n=function(t){const e=Array.isArray(t._todoHeaderLines)?t._todoHeaderLines:[],o=Array.isArray(t._todoFooterLines)?t._todoFooterLines:[],n=(Array.isArray(t.items)?t.items:[]).map(t=>`- [${t.checked?"x":" "}] ${String(t.text||"").trim()}`),r=[];return e.forEach(t=>r.push(t)),n.forEach(t=>r.push(t)),o.forEach(t=>r.push(t)),r.join("\n").replace(/\s+$/g,"")}(t),r=new URLSearchParams(t._todoEditBaseData.toString());r.set("lf_description",n);let a=(r.get("lf_tags")||"").trim().split(/[\s,]+/).filter(t=>""!==t.trim());a=a.filter(t=>"note"!==t&&"shaarli-note"!==t),a.includes("shaarli-todo")||a.push("shaarli-todo"),r.set("lf_tags",a.join(" ")),r.append("save_edit","1");const i=await fetch(t._todoEditAction,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:r.toString()});if(!i.ok){if(403===i.status&&e<1)return t._todoEditAction="",t._todoEditBaseData=null,await o(),st(t,e+1);throw new Error("Failed to save todo")}}function dt(o,n){document.body.classList.add("view-notes");"undefined"!=typeof shaarli&&shaarli.basePath&&shaarli.basePath;const r=document.querySelector(".content-toolbar");r&&(r.style.display="none");const a=document.createElement("div");a.className="notes-wrapper";const i=document.createElement("div");i.className="notes-top-bar";const l=document.createElement("div");l.className="note-input-container";const s=()=>{l.classList.remove("is-editing","is-enhanced","todo-draft-mode"),O(l,{color:"default",filter:"none",background:"none",fontColor:"auto"}),l.innerHTML=`\n
    \n ${window.ShaarliProI18n.t("Create a note...")}\n
    \n \n
    \n
    \n `;const t=l.querySelector(".note-input-collapsed"),o=l.querySelector(".note-create-note-btn"),n=(t="note")=>{if("list"===t){l.classList.add("is-editing","todo-draft-mode"),l.innerHTML=`\n
    \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n `;const t=l.querySelector(".todo-draft-title"),e=l.querySelector(".todo-draft-list"),o=l.querySelector(".todo-draft-add-btn"),n=l.querySelector(".note-input-close-btn"),r=l.querySelector(".note-input-palette-btn");let a=!1,i=!1,d={color:"default",filter:"none",background:"none",fontColor:"auto"};O(l,d);const c=(t={text:"",checked:!1},o=!1)=>{if(!e)return null;const n=document.createElement("div");n.className="todo-draft-row",n.innerHTML=`\n \n \n \n `,e.appendChild(n);const r=n.querySelector(".todo-item-checkbox"),i=n.querySelector(".todo-item-text"),l=n.querySelector(".todo-item-delete"),s=()=>{n.classList.toggle("is-checked",!(!r||!r.checked))};return s(),r?.addEventListener("change",()=>{a=!0,s()}),i?.addEventListener("input",()=>{a=!0}),l?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),a=!0,n.remove(),e.querySelector(".todo-draft-row")||c({text:"",checked:!1},!0)}),o&&i&&i.focus({preventScroll:!0}),n},u=()=>e?Array.from(e.querySelectorAll(".todo-draft-row")).map(t=>{const e=t.querySelector(".todo-item-checkbox"),o=t.querySelector(".todo-item-text"),n=o&&"string"==typeof o.value?o.value.trim():"";return{checked:!(!e||!e.checked),text:n}}).filter(t=>t.text):[];c({text:"",checked:!1},!1),o?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),a=!0,c({text:"",checked:!1},!0)}),t?.addEventListener("input",()=>{a=!0});const m=async()=>{if(i)return;const e=t&&"string"==typeof t.value?t.value.trim():"",o=u();if(!e&&0===o.length)return document.removeEventListener("pointerdown",p,!0),void s();if(!a)return document.removeEventListener("pointerdown",p,!0),void s();i=!0;try{const t=o.map(t=>`- [${t.checked?"x":" "}] ${t.text}`).join("\n");await J({title:e,markdown:t,visual:d}),window.location.reload()}catch(t){console.error("Error creating checklist note:",t),alert(window.ShaarliProI18n.t("Error creating checklist note.")),i=!1}};n?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),m()});const p=t=>{t.target&&t.target.closest&&t.target.closest("#shaarli-bg-studio")||t.target&&t.target.closest&&t.target.closest(".bg-studio-panel")||l.contains(t.target)||m()};return document.addEventListener("pointerdown",p,!0),r?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),j({anchorEl:r,mode:"draft",entityId:"draft-new-todo-from-note",editUrl:"",currentColor:d.color||"default",currentFilter:d.filter||"none",currentBackground:d.background||"none",currentFontColor:d.fontColor||"auto",title:window.ShaarliProI18n.t("My images & colors")});const e=document.getElementById("shaarli-bg-studio");e&&(e.__draftApply=t=>{d={...d,...t||{}},O(l,d)})}),void t?.focus({preventScroll:!0})}l.classList.add("is-editing"),l.innerHTML=`\n
    \n \n \n \n
    \n
    \n \n \n
    \n \n
    \n
    \n `;const o=l.querySelector(".note-input-title"),n=l.querySelector(".note-input-description-source"),r=l.querySelector(".note-input-close-btn"),a=l.querySelector(".note-input-palette-btn"),i=l.querySelector(".note-input-format-btn"),d=l.querySelector(".note-formatting-bar");let c=!1,u=!1,m={color:"default",filter:"none",background:"none",fontColor:"auto"};O(l,m);i?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const e=d&&d.classList.contains("open");var o;o=!e,d&&(o?(d.classList.add("open"),d.setAttribute("aria-hidden","false"),l.classList.add("show-formatting")):(d.classList.remove("open"),d.setAttribute("aria-hidden","true"),l.classList.remove("show-formatting")))}),l.querySelectorAll(".note-format-btn").forEach(t=>{t.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation(),n&&(e(n,t.dataset.noteFormat||""),c=!0)})}),o?.addEventListener("input",()=>{c=!0}),n?.addEventListener("input",()=>{c=!0});const p=async()=>{if(u)return;const{title:t,markdown:e}={title:o&&"string"==typeof o.value?o.value.trim():"",markdown:n&&"string"==typeof n.value?n.value.trim():""};if(!t&&!e)return document.removeEventListener("pointerdown",f,!0),void s();if(!c)return document.removeEventListener("pointerdown",f,!0),void s();u=!0;try{await J({title:t,markdown:e,visual:m}),window.location.reload()}catch(t){console.error("Error creating note:",t),alert(window.ShaarliProI18n.t("Error creating note.")),u=!1}};r?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),p()});const f=t=>{t.target&&t.target.closest&&t.target.closest("#shaarli-bg-studio")||t.target&&t.target.closest&&t.target.closest(".bg-studio-panel")||t.target&&t.target.closest&&t.target.closest(".note-formatting-bar")||l.contains(t.target)||p()};document.addEventListener("pointerdown",f,!0),a?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),j({anchorEl:a,mode:"draft",entityId:"draft-new-note",editUrl:"",currentColor:m.color||"default",currentFilter:m.filter||"none",currentBackground:m.background||"none",currentFontColor:m.fontColor||"auto",title:window.ShaarliProI18n.t("My images & colors")});const e=document.getElementById("shaarli-bg-studio");e&&(e.__draftApply=t=>{m={...m,...t||{}},O(l,m)})}),o?.focus({preventScroll:!0})};t?.addEventListener("click",t=>{t.target.closest("button")||n("note")}),o?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),n("note")})};s(),i.appendChild(l);const d=document.createElement("div");d.className="notes-tools",d.innerHTML=`\n \n \n `,i.appendChild(d),a.appendChild(i);const c=document.createElement("div");c.className="notes-content-area";const u=Array.from(o.querySelectorAll(".link-outer")).map(t=>ct(t));ut(c,u,"grid"),a.appendChild(c),o.style.display="none",o.parentNode?o.parentNode.insertBefore(a,o):n.appendChild(a);const p=window.location.hash;if(p&&p.startsWith("#open-note-")){const t=p.replace("#open-note-",""),e=u.find(e=>String(e.id)===String(t));e&&(history.replaceState(null,null,window.location.pathname+window.location.search),setTimeout(()=>{ft(e)},100))}const f=document.createElement("div");f.className="note-modal-overlay",f.innerHTML=`\n \n `,document.body.appendChild(f);const h=a.querySelector("#btn-view-grid"),g=a.querySelector("#btn-view-list");h.addEventListener("click",()=>{h.classList.add("active"),g.classList.remove("active"),ut(c,u,"grid")}),g.addEventListener("click",()=>{g.classList.add("active"),h.classList.remove("active"),ut(c,u,"list")});const b=async()=>{try{await async function(e){if(!e||!e.currentNote)return;const o=e.currentNote,n=e.querySelector("#note-modal-title"),r=e.querySelector("#note-modal-description-source"),a=n&&"string"==typeof n.value?n.value.trim():"",i=r&&"string"==typeof r.value?r.value.trim():"",l=e._noteEditorState||{hasChanges:!1,isSaving:!1,lastSavedTitle:"",lastSavedMarkdown:""};if(!a&&!i)return;if(!l.hasChanges&&a===(l.lastSavedTitle||"")&&i===(l.lastSavedMarkdown||"")||l.isSaving)return;l.isSaving=!0,e._noteEditorState=l,await Z(o),await tt(o,{title:a,markdown:i}),o.title=a,o._noteTitle=a,o._noteMarkdown=i,o.descText=i;const s=document.querySelector(`.note-card[data-id="${CSS.escape(String(o.id))}"]`);if(s){const e=s.querySelector(".note-inner .note-title");e&&(e.textContent=a);const n=s.querySelector(".note-inner .note-body");n&&(n.innerHTML=t(i),o.descHtml=n.innerHTML)}l.lastSavedTitle=a,l.lastSavedMarkdown=i,l.hasChanges=!1,l.isSaving=!1}(f),f.classList.remove("open"),document.body.classList.remove("note-modal-open")}catch(t){console.error("Error saving note from modal:",t),alert(window.ShaarliProI18n.t("Error saving note."))}};f.querySelector("#note-modal-close").addEventListener("click",t=>{t.preventDefault(),b()}),f.addEventListener("click",t=>{t.target===f&&b()}),f.querySelector("#note-modal-edit").addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const e=f.querySelector("#note-modal-title");e?.focus({preventScroll:!0})});const y=f.querySelector("#note-modal-pin"),v=f.querySelector("#note-modal-color-btn"),w=f.querySelector("#note-modal-color-popup");v.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const e=f.querySelector(".note-modal");j({anchorEl:v,mode:"modal",entityId:e&&e.dataset.noteId||"",editUrl:e&&e.dataset.editUrl||"",currentColor:e?_(e):"default",currentFilter:e?U(e):"none",currentBackground:e?A(e):"none",currentFontColor:e?T(e):"auto",title:window.ShaarliProI18n.t("My images & colors")})}),y.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const e=f.querySelector(".note-modal"),o=e.dataset.noteId,n=e.dataset.editUrl;if(!o||!n)return;yt(o,n,y);const r=y.classList.contains("active");let a=(e.dataset.tags||"").split("||").filter(t=>t);r?a.includes("shaarli-pin")||a.push("shaarli-pin"):a=a.filter(t=>"shaarli-pin"!==t),e.dataset.tags=a.join("||"),pt(f.querySelector("#note-modal-tags"),a),f.currentNote&&(f.currentNote.isPinned=r,f.currentNote.tags=a)}),f.querySelector("#note-modal-delete").addEventListener("click",()=>{if(!confirm(window.ShaarliProI18n.t("Delete this note?")))return;const t=f.querySelector(".note-modal"),e=t.dataset.deleteUrl;t.dataset.noteId;e&&"#"!==e&&m(e).then(()=>{window.location.href="/?searchtags=note"}).catch(t=>{console.error("Delete failed:",t),alert(window.ShaarliProI18n.t("Error deleting."))})}),f.querySelector("#note-modal-archive").addEventListener("click",t=>{t.preventDefault();const e=f.querySelector(".note-modal"),o=e.dataset.noteId,n=e.dataset.editUrl;o&&n&>(n,"shaarli-archive").then(()=>{f.currentNote&&(f.currentNote.tags.includes("shaarli-archive")||f.currentNote.tags.push("shaarli-archive"));const t=document.querySelector(`.note-card[data-id="${o}"]`);t&&t.remove();const e=u.findIndex(t=>String(t.id)===String(o));e>-1&&u.splice(e,1),f.classList.remove("open"),document.body.classList.remove("note-modal-open")}).catch(t=>{console.error("Error archiving note:",t),alert(window.ShaarliProI18n.t("Error archiving note."))})}),f.addEventListener("click",t=>{t.target.closest(".note-modal-color-picker")||w.classList.remove("open")}),document.addEventListener("click",t=>{t.target.closest(".note-hover-actions .palette-popup")&&!t.target.closest('.note-hover-actions [id^="palette-"]')&&document.querySelectorAll(".note-hover-actions .palette-popup.open").forEach(t=>{t.classList.remove("open")})})}function ct(t){const e=t.dataset.id,n=t.querySelector(".link-title"),r=n?n.textContent.trim():"",d=t.querySelector(".link-description"),c=d?d.innerHTML:"",u=d?d.textContent:"";let m=null;if(d){const t=d.querySelector("img");t&&(m=t.src)}const p=t.querySelector(".link-url"),f=p?p.textContent.trim():"",h=[];t.querySelectorAll(".link-tag-list a").forEach(t=>{const e=(t.textContent||"").trim();e&&h.push(e)});const{color:g,filter:b,background:y,fontColor:v}=K(h),w=h.filter(t=>!t.startsWith(i)&&(!t.startsWith("note-custom-")&&(!(t=>{if("string"!=typeof t)return!1;if(!t.startsWith("note-"))return!1;const e=t.substring(5);return o.some(t=>t.key===e)})(t)&&(!t.startsWith(l)&&(!t.startsWith(s)&&!t.startsWith(a)))))),k=(w.includes("shaarli-pin"),t.querySelector(".link-actions")),S=k&&k.querySelector('a[href*="admin/shaare"]')?k.querySelector('a[href*="admin/shaare"]').href:"#",$=k&&k.querySelector('a[href*="delete"]')?k.querySelector('a[href*="delete"]').href:"#",L=k&&k.querySelector('a[href*="pin"]')?k.querySelector('a[href*="pin"]').href:"#",E=w.includes("shaarli-pin");return{id:e,title:r,descHtml:c,descText:u,coverImage:m,url:f,tags:w,color:g,filter:b,background:y,fontColor:v,editUrl:S,deleteUrl:$,pinUrl:L,isPinned:E}}function ut(e,o,n,r=!1){let a;e.innerHTML="",e.className="grid"===n?"notes-masonry":"notes-list-view",a=r?o.filter(t=>(t.tags||[]).some(t=>"shaarli-archive"===t||"shaarli-archiver"===t)):o.filter(t=>!(t.tags||[]).some(t=>"shaarli-archive"===t||"shaarli-archiver"===t)),a.sort((t,e)=>{const o=t.tags.includes("shaarli-pin");return e.tags.includes("shaarli-pin")-o}),a.forEach(o=>{const a=document.createElement("div");if(a.className="note-card",a.dataset.id=o.id,a.dataset.editUrl=o.editUrl||"",a.dataset.tags=(o.tags||[]).filter(t=>t).join("||"),O(a,o),"list"===n&&a.classList.add("list-mode"),a.addEventListener("click",t=>{t.target.closest("button")||t.target.closest("a")||t.target.closest(".note-hover-actions")||(Q(o,a),ft(o))}),o.coverImage&&"grid"===n){const t=document.createElement("div");t.className="note-cover",t.innerHTML=`Cover`,a.appendChild(t)}const i=document.createElement("div");if(i.className="note-inner",o.title){const t=document.createElement("h3");t.className="note-title",t.textContent=o.title,i.appendChild(t)}if(o.descHtml||o.descText||o._noteMarkdown){const e=document.createElement("div");if(e.className="note-body",void 0!==o._noteMarkdown)e.innerHTML=t(o._noteMarkdown);else{const n=o.descText||"";n.trim().startsWith('
    ')||n.trim().startsWith("<")?e.innerHTML=n:e.innerHTML=t(n)}i.appendChild(e)}if(o.tags.length>0){const t=document.createElement("div");t.className="note-tags",o.tags.forEach(e=>{if(d(e))return;const n=c({tag:e,onRemoveClass:"note-tag-remove-btn",tagClass:"note-tag",canRemove:!!o.editUrl&&"#"!==o.editUrl});t.appendChild(n)}),i.appendChild(t)}const l=document.createElement("div");l.className="note-hover-actions";const s=document.createElement("a");s.href=o.pinUrl,s.title=o.isPinned?"Unpin":"Pin",s.className="note-pin-corner "+(o.isPinned?"active":""),s.innerHTML=``,i.appendChild(s);const u=`palette-${o.id}`,p=`archive-${o.id}`;l.innerHTML=`\n \n \n
    \n \n
    \n \n \n
    \n \x3c!-- Real Actions --\x3e\n \n \n `;const f=l.querySelector(".note-delete-btn");f?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),confirm(window.ShaarliProI18n.t("Delete this note?"))&&m(o.deleteUrl).then(()=>{window.location.href=r?"/?searchtags=shaarli-archive":"/?searchtags=note"}).catch(t=>{console.error("Delete failed:",t),alert(window.ShaarliProI18n.t("Error deleting."))})});const h=l.querySelector(".note-open-editor-btn");h?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),Q(o,a),ft(o)});const g=l.querySelector(`#${u}`);g.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),j({anchorEl:g,mode:"entity",entityId:o.id,editUrl:o.editUrl,currentColor:_(a),currentFilter:U(a),currentBackground:A(a),title:window.ShaarliProI18n.t("My images & colors")})});l.querySelector(`#${p}`).addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),o.editUrl&&"#"!==o.editUrl&>(o.editUrl,"shaarli-archive").then(()=>{a.remove()}).catch(t=>{console.error("Error archiving note:",t),alert(window.ShaarliProI18n.t("Error archiving note."))})}),i.appendChild(l),a.appendChild(i),e.appendChild(a)})}function mt(t,e){if(!t)return;t.classList.toggle("active",e),t.title=e?window.ShaarliProI18n.t("Unpin"):window.ShaarliProI18n.t("Pin");const o=t.querySelector("i");o&&(o.className="mdi "+(e?"mdi-pin":"mdi-pin-outline"))}function pt(t,e){if(!t)return;t.innerHTML="";const o=(e||[]).filter(t=>t&&!d(t)),n=g(t.closest(".note-modal-overlay")||h()),r=!(!n||!n.editUrl||"#"===n.editUrl);0!==o.length?(t.classList.remove("is-empty"),o.forEach(e=>{const o=c({tag:e,onRemoveClass:"note-tag-remove-btn",tagClass:"note-tag",canRemove:r});t.appendChild(o)})):t.classList.add("is-empty")}function ft(o){const n=document.querySelector(".note-modal-overlay");if(!n)return;const r=n.querySelector(".note-modal"),a=n.querySelector("#note-modal-title"),i=n.querySelector("#note-modal-description-source"),l=n.querySelector("#note-modal-description-preview"),s=n.querySelector("#note-modal-tags"),c=n.querySelector("#note-modal-edit"),u=n.querySelector("#note-modal-pin"),m=n.querySelector("#note-modal-color-popup"),p=(n.querySelector("#note-modal-format-btn"),n.querySelector("#note-modal-formatting"),t=>{i&&l&&(t?(n.classList.add("note-modal-editing"),l.setAttribute("aria-hidden","true"),i.removeAttribute("aria-hidden")):(n.classList.remove("note-modal-editing"),l.setAttribute("aria-hidden","false"),i.setAttribute("aria-hidden","true")))});n.currentNote=o,r.className="note-modal",O(r,o),r.dataset.noteId=o.id||"",r.dataset.editUrl=o.editUrl||"",r.dataset.deleteUrl=o.deleteUrl||"",r.dataset.background=o.background||"none";const f=(o.tags||[]).filter(t=>t&&!d(t));r.dataset.tags=f.join("||"),a&&(a.value=o.title||""),i&&(i.value=(o._noteMarkdown||o.descText||"").trim()),l&&(l.innerHTML=t((o._noteMarkdown||o.descText||"").trim())),p(!1),pt(s,f),c&&(c.href=o.editUrl||"#"),m&&(m.innerHTML=ht(o),m.classList.remove("open")),mt(u,!!o.isPinned),n._noteEditorState||(n._noteEditorState={hasChanges:!1,isSaving:!1,lastSavedTitle:"",lastSavedMarkdown:""});const h=n._noteEditorState;if(h.hasChanges=!1,h.lastSavedTitle=a&&"string"==typeof a.value?a.value.trim():"",h.lastSavedMarkdown=i&&"string"==typeof i.value?i.value.trim():"",!n._noteEditorBound){n._noteEditorBound=!0,a?.addEventListener("input",()=>{n._noteEditorState&&(n._noteEditorState.hasChanges=!0)}),i?.addEventListener("input",()=>{n._noteEditorState&&(n._noteEditorState.hasChanges=!0),l&&(l.innerHTML=t(i.value||""))}),l?.addEventListener("click",()=>{p(!0),i?.focus({preventScroll:!0})}),l?.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),p(!0),i?.focus({preventScroll:!0}))}),i?.addEventListener("blur",()=>{p(!1)});const o=t=>{const e=n.querySelector("#note-modal-formatting");e&&(t?(e.classList.add("open"),e.setAttribute("aria-hidden","false"),n.classList.add("show-formatting")):(e.classList.remove("open"),e.setAttribute("aria-hidden","true"),n.classList.remove("show-formatting")))};n._setNoteModalFormattingVisible=o;const r=n.querySelector("#note-modal-format-btn");r?.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const e=n.querySelector("#note-modal-formatting"),r=e&&e.classList.contains("open");o(!r)}),n.querySelectorAll(".note-format-btn").forEach(t=>{t.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation();const r=n.querySelector("#note-modal-description-source");r&&(p(!0),e(r,t.dataset.noteFormat||""),n._noteEditorState&&(n._noteEditorState.hasChanges=!0))})})}"function"==typeof n._setNoteModalFormattingVisible&&n._setNoteModalFormattingVisible(!1),Z(o).then(()=>{n.currentNote===o&&(a&&o._noteTitle&&(a.value=o._noteTitle),i&&(i.value=(o._noteMarkdown||"").trim()),l&&(l.innerHTML=t(i?i.value:"")),p(!1),h.lastSavedTitle=a&&"string"==typeof a.value?a.value.trim():"",h.lastSavedMarkdown=i&&"string"==typeof i.value?i.value.trim():"")}),n.classList.add("open"),document.body.classList.add("note-modal-open"),a?.focus({preventScroll:!0})}function ht(t){return G({entityId:t&&t.id?t.id:"",editUrl:t&&t.editUrl?t.editUrl:"",currentColor:t&&t.color?t.color:"default",currentFilter:t&&t.filter?t.filter:"none",mode:"modal"})}function gt(t,e){return fetch(t).then(t=>t.text()).then(t=>{const o=(new DOMParser).parseFromString(t,"text/html").querySelector('form[name="linkform"]');if(!o)throw new Error("Could not find edit form");const n=new URLSearchParams;o.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&n.append(t.name,t.value||"on"):t.name&&n.append(t.name,Y(t))});let r=(n.get("lf_tags")||"").split(/[\s,]+/).filter(t=>""!==t.trim());return r.includes(e)||r.push(e),n.set("lf_tags",r.join(" ")),n.append("save_edit","1"),fetch(o.action,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:n.toString()})}).then(t=>{if(!t.ok)throw new Error("Failed to update tags");return t})}function bt(){const t=document.querySelector(".links-list, .notes-masonry, .notes-list-view");if(!t)return;const e=Array.from(t.children),o=[];if(e.forEach(t=>{if(t.classList.contains("link-outer")||t.classList.contains("note-card")){let e=!1;t.innerHTML;const n=t.querySelectorAll(".link-tag-list a, .note-tag");for(let t of n)if("shaarli-pin"===t.textContent.trim()){e=!0;break}const r=t.querySelector(".mdi-pin-outline, .mdi-pin"),a=t.querySelector(".link-title, .note-title"),i=a?a.querySelector("i.mdi-pin"):null;if(e){if(o.push(t),t.classList.add("is-pinned-tag"),r&&(r.classList.remove("mdi-pin-outline"),r.classList.add("mdi-pin"),r.parentElement&&r.parentElement.classList.add("active")),a&&!i){const t=document.createElement("i");t.className="mdi mdi-pin",t.style.color="var(--primary)",t.style.marginRight="8px",a.prepend(t)}}else t.classList.remove("is-pinned-tag"),r&&(r.classList.remove("mdi-pin"),r.classList.add("mdi-pin-outline"),r.parentElement&&r.parentElement.classList.remove("active")),i&&i.remove()}}),t.classList.contains("links-list"))for(let e=o.length-1;e>=0;e--)t.prepend(o[e]);window.requestAnimationFrame(k),document.addEventListener("click",function(t){const e=t.target.closest('a[href*="do=pin"], .note-hover-actions a[href*="pin"], .note-pin-corner[href*="pin"], .link-actions a[href*="pin"]');if(e){t.preventDefault(),t.stopPropagation();const o=e.closest(".link-outer, .note-card"),n=o?o.dataset.id:null;let r=e.href.replace("do=pin","do=editlink").replace("pin","editlink");if(o){const t=o.querySelector('a[href*="edit_link"], a[href*="admin/shaare"]');t&&(r=t.href)}n&&r&&yt(n,r,e)}},{once:!1})}function yt(t,e,o){const n=o.querySelector("i");let r=!1;n&&(n.classList.contains("mdi-pin-outline")?(n.classList.remove("mdi-pin-outline"),n.classList.add("mdi-pin"),o.classList.add("active"),r=!0):(n.classList.remove("mdi-pin"),n.classList.add("mdi-pin-outline"),o.classList.remove("active"),r=!1));const a=o.closest(".link-outer, .note-card");if(a){a.classList.toggle("is-pinned-tag",r);const t=a.querySelector(".link-title, .note-title");if(t){let e=t.querySelector("i.mdi-pin");if(r){if(!e){const e=document.createElement("i");e.className="mdi mdi-pin",e.style.color="var(--primary)",e.style.marginRight="8px",t.prepend(e)}}else e&&e.remove()}let e=a.querySelector(".note-tags");if(e||(e=a.querySelector(".link-tag-list")),e){let t=null;const o=e.querySelectorAll("*");for(let e of o)if("shaarli-pin"===e.textContent.trim()){if(e.classList.contains("note-tag")){t=e;break}if("A"===e.tagName){t=e.parentElement.classList.contains("label-tag")?e.parentElement:e;break}}if(r){if(!t)if(a.classList.contains("note-card")){const t=document.createElement("span");t.className="note-tag",t.textContent="shaarli-pin",e.appendChild(t)}else{const t=document.createElement("span");t.className="link-tag";const o=document.createElement("a");o.href="?searchtags=shaarli-pin",o.textContent="shaarli-pin",t.appendChild(o),e.children.length>0&&e.appendChild(document.createTextNode(" ")),e.appendChild(t)}}else if(t){const e=t.previousSibling;t.remove(),e&&e.nodeType===Node.TEXT_NODE&&!e.textContent.trim()&&e.remove()}}}fetch(e).then(t=>t.text()).then(t=>{const e=(new DOMParser).parseFromString(t,"text/html").querySelector('form[name="linkform"]');if(!e)throw new Error("Could not find edit form");const o=new URLSearchParams;e.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&o.append(t.name,t.value||"on"):t.name&&o.append(t.name,Y(t))});let n=(o.get("lf_tags")||"").split(/[\s,]+/).filter(t=>""!==t.trim());const a="shaarli-pin";return r?n.includes(a)||n.push(a):n=n.filter(t=>t!==a),o.set("lf_tags",n.join(" ")),o.append("save_edit","1"),fetch(e.action,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o.toString()})}).then(t=>{t.ok&&window.requestAnimationFrame(k)}).catch(t=>console.error(t))}window.setModalNoteColor=function(t){const e=h(),o=g(e);if(!e||!o)return;setNoteColor(o.id,t,o.editUrl),o.color=t;const n=e.querySelector(".note-modal");n&&O(n,o);const r=e.querySelector(".note-modal-palette");r&&(r.innerHTML=ht(o),r.classList.add("open"),D(r))},window.setModalNoteFontColor=function(t){const e=h(),o=g(e);if(!e||!o)return;Pt(o.id,t,o.editUrl),o.fontColor=t;const n=e.querySelector(".note-modal");n&&O(n,o);const r=e.querySelector(".note-modal-palette");r&&(r.innerHTML=ht(o),r.classList.add("open"),D(r))},window.setModalNoteFilter=function(t){const e=h(),o=g(e);if(!e||!o)return;const n=M(t)||"none";setNoteFilter(o.id,n,o.editUrl),o.filter=n;const r=e.querySelector(".note-modal");r&&O(r,o);const a=e.querySelector(".note-modal-palette");a&&(a.innerHTML=ht(o),a.classList.add("open"),D(a))},window.setNoteColor=function(t,e,n){Lt(t,e);const r=document.querySelector(`.link-outer[data-id="${t}"]`);if(r){const e=r.querySelector(".bookmark-palette .palette-popup");if(e){const o=_(r),a=U(r);e.innerHTML=X(t,n,o,a)}}const a=h(),l=g(a);if(a&&l&&String(l.id)===String(t)){l.color=e;const t=a.querySelector(".note-modal");t&&O(t,l);const o=a.querySelector(".note-modal-palette");o&&(o.innerHTML=ht(l))}fetch(n).then(t=>t.text()).then(t=>{const n=(new DOMParser).parseFromString(t,"text/html").querySelector('form[name="linkform"]');if(!n)throw new Error("Could not find edit form");const r=new URLSearchParams;n.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&r.append(t.name,t.value||"on"):t.name&&r.append(t.name,Y(t))});let a=(r.get("lf_tags")||"").split(/[\s,]+/).filter(t=>""!==t.trim());if(a=a.filter(t=>!t.startsWith(i)),a=a.filter(t=>!t.startsWith("note-custom-")),a=a.filter(t=>{if(!t.startsWith("note-"))return!0;const e=t.substring(5);return!o.some(t=>t.key===e)}),"default"!==e)if("string"==typeof e&&e.startsWith("custom:")){const t=e.substring(7).replace("#","");a.push(`${i}${t}`)}else a.push(`${i}${e}`);return r.set("lf_tags",a.join(" ")),r.append("save_edit","1"),fetch(n.action,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:r.toString()})}).then(t=>{if(!t.ok)throw new Error("Failed to save color")}).catch(t=>{console.error("Error saving note color:",t),alert(window.ShaarliProI18n.t("Failed to save color.")+" "+window.ShaarliProI18n.t("Please refresh the page."))})},window.setNoteFilter=function(t,e,o){const n=M(e)||"none",r=document.querySelector(`.note-card[data-id="${t}"]`);if(r){const t=Array.from(r.classList).find(t=>t.startsWith("note-color-")),e=t?t.replace("note-color-",""):r.dataset.color||"default",o=A(r),a=T(r);O(r,{color:e,filter:n,background:o,fontColor:a})}const a=document.querySelector(`.link-outer[data-id="${t}"]`);if(a){const e=Array.from(a.classList).find(t=>t.startsWith("note-color-")),r=e?e.replace("note-color-",""):a.dataset.color||"default",i=A(a),l=T(a);O(a,{color:r,filter:n,background:i,fontColor:l});const s=a.querySelector(".bookmark-palette .palette-popup");s&&(s.innerHTML=X(t,o,r,n))}const i=h(),s=g(i);if(i&&s&&String(s.id)===String(t)){s.filter=n;const t=i.querySelector(".note-modal");t&&O(t,s);const e=i.querySelector(".note-modal-palette");e&&(e.innerHTML=ht(s))}fetch(o).then(t=>t.text()).then(t=>{const e=(new DOMParser).parseFromString(t,"text/html").querySelector('form[name="linkform"]');if(!e)throw new Error("Could not find edit form");const o=new URLSearchParams;e.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&o.append(t.name,t.value||"on"):t.name&&o.append(t.name,Y(t))});let r=(o.get("lf_tags")||"").split(/[\s,]+/).filter(t=>""!==t.trim());return r=r.filter(t=>!t.startsWith(l)),n&&"none"!==n&&r.push(`${l}${n}`),o.set("lf_tags",r.join(" ")),o.append("save_edit","1"),fetch(e.action,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o.toString()})}).then(t=>{if(!t.ok)throw new Error("Failed to save filter")}).catch(t=>{console.error("Error saving note filter:",t),alert(window.ShaarliProI18n.t("Failed to save filter.")+" "+window.ShaarliProI18n.t("Please refresh the page."))})},window.setNoteBackground=function(t,e,o){const n="none"===e?"none":L(e)||"none",r=document.querySelector(`.note-card[data-id="${t}"]`);if(r){const t=Array.from(r.classList).find(t=>t.startsWith("note-color-")),e=t?t.replace("note-color-",""):r.dataset.color||"default",o=r.dataset.filter||"none",a=T(r);O(r,{color:e,filter:o,background:n,fontColor:a})}const a=document.querySelector(`.link-outer[data-id="${t}"]`);if(a){const t=Array.from(a.classList).find(t=>t.startsWith("note-color-")),e=t?t.replace("note-color-",""):a.dataset.color||"default",o=a.dataset.filter||"none",r=T(a);O(a,{color:e,filter:o,background:n,fontColor:r})}const i=h(),l=g(i);if(i&&l&&String(l.id)===String(t)){l.background=n;const t=i.querySelector(".note-modal");t&&O(t,l);const e=i.querySelector(".note-modal-palette");e&&(e.innerHTML=ht(l))}fetch(o).then(t=>t.text()).then(t=>{const e=(new DOMParser).parseFromString(t,"text/html").querySelector('form[name="linkform"]');if(!e)throw new Error("Could not find edit form");const o=new URLSearchParams;e.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&o.append(t.name,t.value||"on"):t.name&&o.append(t.name,Y(t))});let r=(o.get("lf_tags")||"").split(/[\s,]+/).filter(t=>""!==t.trim());return r=r.filter(t=>!t.startsWith(s)),n&&"none"!==n&&r.push(`${s}${n}`),o.set("lf_tags",r.join(" ")),o.append("save_edit","1"),fetch(e.action,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o.toString()})}).then(t=>{if(!t.ok)throw new Error("Failed to save background")}).catch(t=>{console.error("Error saving note background:",t),alert(window.ShaarliProI18n.t("Failed to save background.")+" "+window.ShaarliProI18n.t("Please refresh the page."))})},window.setModalNoteBackground=function(t){const e=h(),o=g(e);if(!e||!o)return;const n="none"===t?"none":L(t)||"none";setNoteBackground(o.id,n,o.editUrl),o.background=n;const r=e.querySelector(".note-modal");r&&O(r,o);const a=e.querySelector(".note-modal-palette");a&&(a.innerHTML=ht(o),a.classList.add("open"),D(a))};let vt=!1;function wt(){const t=document.getElementById("shaarli-color-picker");if(!t)return;const e=t.dataset.type||"background",o="1"===t.dataset.skipRestore,n=t.dataset.mode||"entity",r=t.dataset.entityId||"";if(!o&&"draft"===n)return t.dataset.skipRestore="0",t.classList.remove("open"),t.style.display="none",void t.setAttribute("aria-hidden","true");if(!o&&"font"===e){const e=t.dataset.prevFontColorKey||"auto";"modal"===n?$t(e):St(r,e)}if(!o&&"background"===e){const e=t.dataset.prevColorKey||"default";"modal"===n?Et(e):Lt(r,e)}t.dataset.skipRestore="0",t.classList.remove("open"),t.style.display="none",t.setAttribute("aria-hidden","true")}function kt({mode:t,entityId:e,editUrl:o,type:n}){!function(){if(vt)return;if(document.getElementById("shaarli-color-picker"))return void(vt=!0);const t=document.createElement("div");t.id="shaarli-color-picker",t.className="color-picker-panel",t.setAttribute("role","dialog"),t.setAttribute("aria-modal","false"),t.setAttribute("aria-hidden","true"),t.style.display="none",document.body.appendChild(t),document.addEventListener("click",t=>{const e=document.getElementById("shaarli-color-picker");e&&e.classList.contains("open")&&(t.target.closest("#shaarli-color-picker")||t.target.closest("#shaarli-bg-studio")||wt())}),document.addEventListener("keydown",t=>{if("Escape"!==t.key)return;const e=document.getElementById("shaarli-color-picker");e&&e.classList.contains("open")&&wt()}),vt=!0}();const a=document.getElementById("shaarli-color-picker");if(!a)return;a.dataset.mode=t||"entity",a.dataset.entityId=e||"",a.dataset.editUrl=o||"",a.dataset.type=n||"background";const i="dark"===P()?"#20293A":"#ffffff";if("font"===(n||"background")){let o="auto";if("draft"===(t||"entity")){const t=document.getElementById("shaarli-bg-studio");o=t&&t.dataset.fontColor||"auto"}else if("modal"===(t||"entity")){const t=h(),e=t?t.querySelector(".note-modal"):null;o=e&&e.dataset.fontColor?e.dataset.fontColor:"auto"}else{const t=document.querySelector(`.note-card[data-id="${e}"]`),n=document.querySelector(`.link-outer[data-id="${e}"]`);o=t&&t.dataset.fontColor?t.dataset.fontColor:n&&n.dataset.fontColor?n.dataset.fontColor:"auto"}a.dataset.prevFontColorKey=o}else a.dataset.prevFontColorKey="";if("background"===(n||"background")){let o="default";if("draft"===(t||"entity")){const t=document.getElementById("shaarli-bg-studio");t&&(o=t.dataset.color||"default")}else if("modal"===(t||"entity")){const t=h(),e=t?t.querySelector(".note-modal"):null;if(e){const t="custom"===e.dataset.color,n=e.dataset.customColor||"";o=t&&n?`custom:${n}`:_(e)}}else{const t=document.querySelector(`.note-card[data-id="${e}"]`),n=document.querySelector(`.link-outer[data-id="${e}"]`),r=t||n;if(r){const t="custom"===r.dataset.color,e=r.dataset.customColor||"";o=t&&e?`custom:${e}`:_(r)}}a.dataset.prevColorKey=o}else a.dataset.prevColorKey="";a.innerHTML=`\n
    \n
    ${"font"===n?"Couleur du texte":window.ShaarliProI18n.t("Custom color")}
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n `;let l=210,s=50,d=50,c=i;const u=a.querySelector("#color-gradient"),m=a.querySelector("#color-cursor"),p=a.querySelector("#hue-slider"),f=a.querySelector("#hex-input"),g=a.querySelector("#color-preview");function b(){if(c=function(t,e,o){const n=o*e,r=n*(1-Math.abs(t/60%2-1)),a=o-n;let i,l,s;t<60?(i=n,l=r,s=0):t<120?(i=r,l=n,s=0):t<180?(i=0,l=n,s=r):t<240?(i=0,l=r,s=n):t<300?(i=r,l=0,s=n):(i=n,l=0,s=r);const d=t=>Math.round(255*(t+a)).toString(16).padStart(2,"0");return`#${d(i)}${d(l)}${d(s)}`.toUpperCase()}(l,s/100,d/100),u.style.background=`linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${l}, 100%, 50%))`,m.style.left=`${s}%`,m.style.top=100-d+"%",g.style.backgroundColor=c,f.value=c,"font"===(a.dataset.type||"background")){const t=`custom:${c}`,e=a.dataset.mode||"entity",o=a.dataset.entityId||"";if("draft"===e){const e=document.getElementById("shaarli-bg-studio");e&&"function"==typeof e.__draftApply&&e.__draftApply({fontColor:t})}else"modal"===e?$t(t):St(o,t)}if("background"===(a.dataset.type||"background")){const t=`custom:${c}`,e=a.dataset.mode||"entity",o=a.dataset.entityId||"";if("draft"===e){const e=document.getElementById("shaarli-bg-studio");e&&"function"==typeof e.__draftApply&&e.__draftApply({color:t})}else"modal"===e?Et(t):Lt(o,t)}}function y(t){const e=function(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);if(!e)return{h:0,s:0,v:0};const o=parseInt(e[1],16)/255,n=parseInt(e[2],16)/255,r=parseInt(e[3],16)/255,a=Math.max(o,n,r),i=a-Math.min(o,n,r);let l=0;return 0!==i&&(l=a===o?((n-r)/i+6)%6*60:a===n?60*((r-o)/i+2):60*((o-n)/i+4)),{h:l,s:0===a?0:i/a,v:a}}(t);l=e.h,s=100*e.s,d=100*e.v,p.value=l,b()}let v=!1;if(u.addEventListener("mousedown",t=>{v=!0;const e=u.getBoundingClientRect();s=Math.max(0,Math.min(100,(t.clientX-e.left)/e.width*100)),d=Math.max(0,Math.min(100,100-(t.clientY-e.top)/e.height*100)),b()}),document.addEventListener("mousemove",t=>{if(!v)return;const e=u.getBoundingClientRect();s=Math.max(0,Math.min(100,(t.clientX-e.left)/e.width*100)),d=Math.max(0,Math.min(100,100-(t.clientY-e.top)/e.height*100)),b()}),document.addEventListener("mouseup",()=>{v=!1}),p.addEventListener("input",t=>{l=parseInt(t.target.value),b()}),f.addEventListener("input",t=>{const e=t.target.value;/^#[0-9A-F]{6}$/i.test(e)&&y(e)}),"font"===(a.dataset.type||"background")){const t=a.dataset.prevFontColorKey||"auto";let e=i;if("string"==typeof t&&t.startsWith("custom:"))e=t.substring(7);else if("auto"!==t){const o=r.find(e=>e.key===t);o&&o.value&&"auto"!==o.value&&(e=o.value)}y(e)}else if("background"===(a.dataset.type||"background")){const t=a.dataset.prevColorKey||"default";let e=i;"string"==typeof t&&t.startsWith("custom:")&&(e=t.substring(7)),y(e)}else y(i);a.style.display="block",a.style.visibility="hidden",function(t){if(!t)return;const e=document.getElementById("shaarli-bg-studio"),o=12;if(e&&e.classList.contains("open")){const n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),a=Math.max(1,r.width),i=Math.max(1,r.height);let l=n.right+10,s=n.top;l+a>window.innerWidth-o&&(l=n.left-a-10),lwindow.innerWidth-o&&(l=window.innerWidth-o-a),s+i>window.innerHeight-o&&(s=window.innerHeight-o-i),st.key===e);a=t?t.value:"auto"}const i=t=>{t&&("auto"===a?t.style.removeProperty("--note-card-fg"):t.style.setProperty("--note-card-fg",a),t.dataset.fontColor=e)};i(o),i(n);const l=h(),s=g(l);if(l&&s&&String(s.id)===String(t)){i(l.querySelector(".note-modal"))}}function $t(t){const e=h(),o=g(e);e&&o&&St(o.id,t)}function Lt(t,e){const o=document.querySelector(`.note-card[data-id="${t}"]`),n=document.querySelector(`.link-outer[data-id="${t}"]`),r=t=>{if(!t)return;const o={color:_(t),filter:U(t),background:A(t),fontColor:T(t)};if("string"==typeof e&&e.startsWith("custom:")){const o=e.substring(7);Array.from(t.classList).forEach(e=>{e.startsWith("note-color-")&&t.classList.remove(e)}),t.classList.add("note-color-custom"),t.style.backgroundColor=o,t.style.removeProperty("border-color"),t.dataset.color="custom",t.dataset.customColor=o;const n=q(o);return void(n&&t.style.setProperty("--note-card-fg",n))}t.dataset.customColor="",O(t,{...o,color:e})};r(o),r(n);const a=h(),i=g(a);if(a&&i&&String(i.id)===String(t)){r(a.querySelector(".note-modal"))}}function Et(t){const e=h(),o=g(e);e&&o&&Lt(o.id,t)}function Pt(t,e,o){St(t,e),fetch(o).then(t=>t.text()).then(t=>{const o=(new DOMParser).parseFromString(t,"text/html").querySelector('form[name="linkform"]');if(!o)throw new Error("Could not find edit form");const n=new URLSearchParams;o.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&n.append(t.name,t.value||"on"):t.name&&n.append(t.name,Y(t))});let i=(n.get("lf_tags")||"").split(/[\s,]+/).filter(t=>""!==t.trim());if(i=i.filter(t=>!t.startsWith(a)),"auto"!==e)if(e.startsWith("custom:"))i.push(`${a}${e.substring(7).replace("#","")}`);else{const t=r.find(t=>t.key===e);t&&"auto"!==t.value&&i.push(`${a}${t.value.substring(1)}`)}return n.set("lf_tags",i.join(" ")),n.append("save_edit","1"),fetch(o.action,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:n.toString()})}).then(t=>{if(!t.ok)throw new Error("Failed to save font color")}).catch(t=>{console.error("Error saving note font color:",t)})}function Ct(t){const e=h(),o=g(e);if(!e||!o)return;Pt(o.id,t,o.editUrl),o.fontColor=t;const n=e.querySelector(".note-modal");if(n){let e="auto";if(String(t||"").startsWith("custom:"))e=String(t).substring(7);else if("auto"!==t){const o=r.find(e=>e.key===t);e=o?o.value:"auto"}"auto"===e?n.style.removeProperty("--note-card-fg"):n.style.setProperty("--note-card-fg",e),n.dataset.fontColor=t}}document.addEventListener("click",t=>{const e=t.target.closest("[data-color-picker-action]");if(!e)return;const n=document.getElementById("shaarli-color-picker");if(!n)return;const r=e.dataset.colorPickerAction;if("close"!==r){if("apply"===r){const t=n.dataset.mode||"entity",e=n.dataset.entityId||"",r=n.dataset.editUrl||"",a=n.dataset.type||"background",l=n.querySelector("#hex-input"),s=l?l.value:"#ffffff";if("draft"===t){const t=document.getElementById("shaarli-bg-studio");return t&&"function"==typeof t.__draftApply&&("font"===a?(t.dataset.fontColor=`custom:${s}`,t.__draftApply({fontColor:`custom:${s}`})):(t.dataset.color=`custom:${s}`,t.__draftApply({color:`custom:${s}`})),R(t)),n.dataset.skipRestore="1",void wt()}"font"===a?"modal"===t?function(t){Ct(`custom:${t}`)}(s):Pt(e,`custom:${s}`,r):"modal"===t?function(t){const e=h(),n=g(e);if(!e||!n||!n.editUrl)return;const r=e.querySelector(".note-modal");r&&(r.style.backgroundColor=t,r.style.removeProperty("border-color"),r.dataset.color="custom",r.dataset.customColor=t);fetch(n.editUrl).then(t=>t.text()).then(e=>{const n=(new DOMParser).parseFromString(e,"text/html").querySelector('form[name="linkform"]');if(!n)throw new Error("Could not find edit form");const r=new URLSearchParams;n.querySelectorAll("input, textarea").forEach(t=>{"checkbox"===t.type?t.checked&&r.append(t.name,t.value||"on"):t.name&&r.append(t.name,Y(t))});let a=(r.get("lf_tags")||"").split(/[\s,]+/).filter(t=>""!==t.trim());a=a.filter(t=>!t.startsWith(i)),a=a.filter(t=>!t.startsWith("note-custom-")),a=a.filter(t=>{if(!t.startsWith("note-"))return!0;const e=t.substring(5);return!o.some(t=>t.key===e)});const l=t.replace("#","");return a.push(`${i}${l}`),r.set("lf_tags",a.join(" ")),r.append("save_edit","1"),fetch(n.action,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:r.toString()})}).then(t=>{if(!t.ok)throw new Error("Failed to save custom color")}).catch(t=>{console.error("Error saving custom color:",t)})}(s):setNoteColor(e,`custom:${s}`,r),n.dataset.skipRestore="1",wt()}}else wt()})}(); \ No newline at end of file diff --git a/shaarli-pro/dist/manifest.json b/shaarli-pro/dist/manifest.json index 79f01e9..019b9e4 100644 --- a/shaarli-pro/dist/manifest.json +++ b/shaarli-pro/dist/manifest.json @@ -1,26 +1,6 @@ { - "generatedAt": "2026-08-09T16:20:39.908Z", + "generatedAt": "2026-08-09T16:27:56.407Z", "files": { - "css/style.css": { - "dist": "dist/style.min.css", - "hash": "a171bd2c9207", - "size": 71039 - }, - "css/themes.css": { - "dist": "dist/themes.min.css", - "hash": "eef4d8eb1c77", - "size": 29289 - }, - "css/custom_views.css": { - "dist": "dist/custom_views.min.css", - "hash": "4632d8790b9a", - "size": 29701 - }, - "css/awesomplete.css": { - "dist": "dist/awesomplete.min.css", - "hash": "3d064bc68c5d", - "size": 1440 - }, "js/i18n.js": { "dist": "dist/i18n.min.js", "hash": "65a93efc158a", @@ -63,8 +43,8 @@ }, "js/custom_views.js": { "dist": "dist/custom_views.min.js", - "hash": "66b7699e17b0", - "size": 132935 + "hash": "daa518e70bbc", + "size": 132846 }, "js/awesomplete.min.js": { "dist": "dist/awesomplete.min.js", diff --git a/shaarli-pro/dist/style.min.css b/shaarli-pro/dist/style.min.css deleted file mode 100644 index 6e99c4f..0000000 --- a/shaarli-pro/dist/style.min.css +++ /dev/null @@ -1 +0,0 @@ -.skip-link{background:var(--primary);border-radius:.375rem;color:#fff;font-weight:500;left:1rem;padding:.5rem 1rem;position:absolute;text-decoration:none;top:-100%;transition:top .2s ease;z-index:10000}.skip-link:focus{outline:2px solid #fff;outline-offset:2px;top:1rem}:root{--primary:#3b82f6;--primary-hover:#2563eb;--primary-light:rgba(59,130,246,.1);--bg-body:#f8fafc;--bg-sidebar:#fff;--bg-card:#fff;--bg-card-hover:#f9fafb;--text-main:#111827;--text-secondary:#6b7280;--text-muted:#9ca3af;--border:#e5e7eb;--border-light:#f3f4f6;--shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);--header-bg:#3b82f6;--header-text:#fff;--sidebar-width:230px;--sidebar-collapsed:60px;--header-height:56px;--tag-bg:#e0e7ff;--tag-text:#4338ca;--tag-green-bg:#d1fae5;--tag-green-text:#064e3b;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--success:#10b981;--danger:#ef4444;--warning:#f59e0b;--info:#3b82f6;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(239,68,68,.15);--selection-border:#ef4444;--surface-frosted:color-mix(in srgb,var(--bg-card) 85%,transparent);--surface-soft:color-mix(in srgb,var(--bg-card) 92%,var(--bg-body));--chip-border-color:color-mix(in srgb,var(--primary) 30%,transparent);--chip-hover-bg:color-mix(in srgb,var(--primary) 18%,transparent);--focus-ring-color:color-mix(in srgb,var(--primary) 35%,transparent)}[data-theme=dark]{--primary:#60a5fa;--primary-hover:#3b82f6;--primary-light:rgba(96,165,250,.15);--bg-body:#0f172a;--bg-sidebar:#1e293b;--bg-card:#1e293b;--bg-card-hover:#334155;--text-main:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--border:#334155;--border-light:#1e293b;--shadow-sm:0 1px 2px 0 rgba(0,0,0,.3);--shadow-md:0 4px 6px -1px rgba(0,0,0,.4);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.4);--shadow-xl:0 20px 25px -5px rgba(0,0,0,.5);--header-bg:#1e293b;--header-text:#f1f5f9;--tag-bg:#312e81;--tag-text:#a5b4fc;--tag-green-bg:#064e3b;--tag-green-text:#6ee7b7;--tag-red-bg:#7f1d1d;--tag-red-text:#fca5a5;--tag-yellow-bg:#78350f;--tag-yellow-text:#fcd34d;--success:#10b981;--danger:#ef4444;--warning:#f59e0b;--info:#60a5fa;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(239,68,68,.25);--selection-border:#ef4444;--surface-frosted:color-mix(in srgb,var(--bg-card) 85%,transparent);--surface-soft:color-mix(in srgb,var(--bg-card) 92%,#0a0f1e);--chip-border-color:color-mix(in srgb,var(--primary) 45%,transparent);--chip-hover-bg:color-mix(in srgb,var(--primary) 28%,transparent);--focus-ring-color:color-mix(in srgb,var(--primary) 45%,transparent)}*,:after,:before{box-sizing:border-box}html{font-size:14.5px;scroll-behavior:smooth}body{background-color:var(--bg-body);color:var(--text-main);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.6;margin:0;min-height:100vh;padding:0;transition:background-color .3s ease,color .3s ease}a{color:var(--primary);text-decoration:none;transition:color .2s ease}a:hover{color:var(--primary-hover)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}a:focus:not(:focus-visible),button:focus:not(:focus-visible){outline:none}.app-layout{display:flex;min-height:100vh}.sidebar{background:var(--bg-sidebar);border-right:1px solid var(--border);bottom:0;display:flex;flex-direction:column;left:0;overflow-x:hidden;overflow-y:auto;position:fixed;top:0;transition:transform .3s ease,width .3s ease;width:var(--sidebar-width);z-index:200}.sidebar-header{border-bottom:1px solid var(--border);gap:.75rem;padding:1.25rem 1.5rem}.sidebar-header,.sidebar-logo{align-items:center;display:flex}.sidebar-logo{background:var(--primary);border-radius:8px;color:#fff;font-size:1rem;font-weight:700;height:32px;justify-content:center;width:32px}.sidebar-brand{font-size:1.25rem;font-weight:700;line-height:1.3;word-break:break-word}.sidebar-brand,.sidebar-brand:hover{color:var(--text-main)}.sidebar-nav{flex:1;padding:1rem 0}.sidebar-section{margin-bottom:1.5rem;padding:0 .75rem}.sidebar-section-title{color:var(--text-muted);font-size:.7rem;font-weight:600;letter-spacing:.05em;margin-bottom:.5rem;padding:0 .75rem;text-transform:uppercase}.sidebar-link{align-items:center;border-radius:.5rem;color:var(--text-secondary);display:flex;font-size:.9rem;font-weight:500;gap:.75rem;margin-bottom:.125rem;padding:.625rem .75rem;transition:all .2s ease;width:100%}.sidebar-search-trigger{background:transparent;border:none;cursor:pointer;text-align:left}.sidebar-link.active,.sidebar-link:hover{background:var(--primary-light);color:var(--primary)}.sidebar-link.active{font-weight:600}.sidebar-link i{font-size:1.25rem;text-align:center;width:1.5rem}.sidebar-footer{border-top:1px solid var(--border);padding:1rem 1.25rem}.sidebar-add-btn{align-items:center;background:var(--primary);border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;font-size:.9rem;font-weight:600;gap:.5rem;justify-content:center;padding:.75rem 1rem;text-decoration:none;transition:background .2s ease;width:100%}.sidebar-add-btn:hover{background:var(--primary-hover);color:#fff}.sidebar-add-section{margin-top:.25rem}.sidebar-add-section .sidebar-section-title{margin-bottom:.5rem}.sidebar-add-segmented{background:linear-gradient(135deg,var(--primary) 0,var(--primary-hover) 100%);border-radius:.75rem;box-shadow:0 4px 6px -1px rgba(0,0,0,.2),0 2px 4px -1px rgba(0,0,0,.15);display:flex;overflow:hidden}.sidebar-add-segment{align-items:center;background:transparent;border-right:1px solid hsla(0,0%,100%,.25);color:#fff;display:flex;flex:1;font-size:.9rem;font-weight:600;gap:.5rem;justify-content:center;padding:.875rem .5rem;text-decoration:none;transition:all .2s ease}.sidebar-add-segment:last-child{border-right:none}.sidebar-add-segment:hover{background:hsla(0,0%,100%,.15);color:#fff}.sidebar-add-segment i{font-size:1.4rem}.sidebar-add-segment span{display:inline}@media (max-width:240px){.sidebar-add-segment span{display:none}.sidebar-add-segment{padding:.75rem}}.theme-toggle-wrapper{align-items:center;background:var(--border-light);border-radius:.5rem;display:flex;justify-content:space-between;margin-top:.75rem;padding:.75rem}.theme-toggle-label{align-items:center;color:var(--text-secondary);display:flex;font-size:.85rem;gap:.5rem}.theme-switch{height:24px;position:relative;width:44px}.theme-switch input{height:0;opacity:0;width:0}.theme-slider{background:var(--border);border-radius:24px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.3s}.theme-slider:before{background:#fff;border-radius:50%;bottom:3px;content:"";height:18px;left:3px;position:absolute;transition:.3s;width:18px}input:checked+.theme-slider{background:var(--primary)}input:checked+.theme-slider:before{transform:translateX(20px)}.main-content{display:flex;flex:1;flex-direction:column;margin-left:var(--sidebar-width);min-height:100vh}.header-main{background:var(--header-bg);box-shadow:var(--shadow-sm);color:var(--header-text);height:var(--header-height);padding:0 1.5rem;position:sticky;top:0;z-index:100}.header-inner,.header-main{align-items:center;display:flex}.header-inner{gap:1rem;justify-content:space-between;width:100%}.header-left{align-items:center;display:flex;gap:1rem}.mobile-menu-btn{background:none;border:none;color:var(--header-text);cursor:pointer;display:none;font-size:1.5rem;padding:.25rem}.header-brand{color:var(--header-text);font-size:1.25rem;font-weight:700}.header-brand:hover{color:var(--header-text);opacity:.9}.header-nav{gap:.25rem}.header-nav,.header-nav-link{align-items:center;display:flex}.header-nav-link{background:transparent;border:none;border-radius:.375rem;color:hsla(0,0%,100%,.85);cursor:pointer;font-family:inherit;font-size:.9rem;font-weight:500;gap:0;height:38px;justify-content:center;padding:0;transition:all .2s ease;white-space:nowrap;width:38px}.header-nav-link.active,.header-nav-link:hover{background:hsla(0,0%,100%,.15);color:#fff}.header-nav-link span{display:none}.header-nav-link i{font-size:1.125rem}.header-actions{align-items:center;display:flex;gap:.5rem}.header-action-btn{align-items:center;background:hsla(0,0%,100%,.1);border:none;border-radius:.5rem;color:hsla(0,0%,100%,.9);cursor:pointer;display:flex;font-size:1.125rem;height:36px;justify-content:center;text-decoration:none;transition:all .2s ease;width:36px}.header-action-btn:hover{background:hsla(0,0%,100%,.2);color:#fff}.header-action-btn.active{background:hsla(0,0%,100%,.25)}.filter-dropdown{position:relative}.filter-panel{animation:slideDown .2s ease;background:var(--bg-card);border:1px solid var(--border);border-radius:.75rem;box-shadow:var(--shadow-xl);display:none;position:absolute;right:0;top:calc(100% + .5rem);width:280px;z-index:300}.filter-panel.show{display:block}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.filter-header{align-items:center;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:1rem 1.25rem}.filter-title{color:var(--text-main);font-size:1rem;font-weight:600}.filter-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1.25rem;line-height:1;padding:.25rem}.filter-close:hover{color:var(--text-main)}.filter-body{padding:1rem 1.25rem}.filter-section{margin-bottom:1.25rem}.filter-section:last-child{margin-bottom:0}.filter-section-title{color:var(--text-muted);font-size:.7rem;font-weight:600;letter-spacing:.05em;margin-bottom:.75rem;text-transform:uppercase}.filter-option{border-radius:.375rem;color:var(--text-main);cursor:pointer;display:block;font-size:.9rem;padding:.5rem .75rem;transition:background .15s ease}.filter-option.active,.filter-option:hover{background:var(--primary-light);color:var(--primary)}.filter-option.active{font-weight:500}.filter-toggle-row{align-items:center;display:flex;justify-content:space-between;padding:.625rem 0}.filter-toggle-label{color:var(--text-main);font-size:.9rem}.toggle-switch{height:24px;position:relative;width:44px}.toggle-switch input{height:0;opacity:0;width:0}.toggle-slider{background:var(--border);border-radius:24px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.3s}.toggle-slider:before{background:#fff;border-radius:50%;bottom:3px;content:"";height:18px;left:3px;position:absolute;transition:.3s;width:18px}.toggle-switch input:checked+.toggle-slider{background:var(--primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translateX(20px)}.filter-input{background:var(--bg-body);border:1px solid var(--border);border-radius:.375rem;color:var(--text-main);font-size:.9rem;padding:.5rem .75rem;width:100%}.filter-input:focus{border-color:var(--primary);outline:none}.search-overlay{align-items:flex-start;animation:fadeIn .2s ease;backdrop-filter:blur(4px);background:rgba(0,0,0,.55);bottom:0;display:none;justify-content:center;left:0;padding-top:12vh;position:fixed;right:0;top:0;z-index:500}.search-overlay.show{display:flex}.modal-overlay,.qrcode-modal-overlay{align-items:center;background:rgba(6,10,22,.65);display:none;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:520}.modal-overlay.show,.qrcode-modal-overlay.show{display:flex}.modal-content,.qrcode-modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:.75rem;box-shadow:0 24px 60px rgba(0,0,0,.35);max-height:85vh;overflow:auto;padding:1rem;position:relative;width:min(900px,92vw)}.modal-close,.qrcode-modal-close{align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:.375rem;color:var(--text-secondary);cursor:pointer;display:inline-flex;font-size:1.1rem;height:2rem;justify-content:center;line-height:1;position:absolute;right:.5rem;top:.5rem;width:2rem}.modal-close:hover,.qrcode-modal-close:hover{background:var(--primary-light);color:var(--primary)}#qrcode-modal-body,.modal-body{margin-top:1.75rem}.bulk-modal{max-width:520px}.bulk-modal-header h3{color:var(--text-main);font-size:1.25rem;margin:0}.bulk-modal-header p{color:var(--text-secondary);font-size:.95rem;margin:.3rem 0 0}.bulk-modal-list{background:var(--bg-body);border:1px solid var(--border-light);border-radius:.65rem;margin:1.5rem 0;max-height:320px;overflow-y:auto}.bulk-modal-item{align-items:center;border-bottom:1px solid var(--border-light);display:flex;font-size:.95rem;gap:.75rem;padding:.85rem 1rem}.bulk-modal-item:last-child{border-bottom:none}.bulk-modal-item-id{color:var(--primary);font-weight:600;min-width:70px}.bulk-modal-item-title{color:var(--text-main);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bulk-modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.bulk-modal-btn{border:none;border-radius:.5rem;cursor:pointer;font-size:.9rem;font-weight:600;min-width:140px;padding:.75rem 1.2rem;transition:transform .15s ease,opacity .15s ease}.bulk-modal-btn:active{transform:translateY(1px)}.bulk-modal-cancel{background:var(--bg-card-hover);color:var(--text-secondary)}.bulk-modal-confirm{color:#fff}.bulk-modal-confirm.bulk-confirm-delete{background:var(--danger)}.bulk-modal-confirm.bulk-confirm-public{background:var(--primary)}.bulk-modal-confirm.bulk-confirm-private{background:var(--info);color:#0f172a}.bulk-modal-btn:hover{opacity:.9}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.search-modal{animation:slideUp .25s cubic-bezier(.16,1,.3,1);background:#fff;border-radius:12px;box-shadow:0 25px 50px -12px rgba(0,0,0,.25),0 0 0 1px rgba(0,0,0,.05);max-width:580px;overflow:hidden;width:90%}[data-theme=dark] .search-modal{background:var(--bg-card);box-shadow:0 25px 50px -12px rgba(0,0,0,.5),0 0 0 1px hsla(0,0%,100%,.1)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.search-modal-header{align-items:center;display:flex;gap:.75rem;padding:1rem 1.25rem}.search-modal-input{background:transparent;border:none;caret-color:var(--primary);color:#111827;flex:1;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem;outline:none}[data-theme=dark] .search-modal-input{color:var(--text-main)}.search-modal-input::placeholder{color:#9ca3af}[data-theme=dark] .search-modal-input::placeholder{color:var(--text-muted)}.search-modal-actions{display:flex;gap:.5rem}.search-pill-btn{align-items:center;border:none;border-radius:9999px;cursor:pointer;display:flex;font-family:inherit;font-size:.8125rem;font-weight:500;gap:.375rem;padding:.5rem .875rem;transition:all .15s ease}.search-pill-btn i{font-size:.9rem}.search-pill-tags{background:#e5e7eb;color:#374151}.search-pill-tags:hover{background:#d1d5db}.search-pill-tags.active{background:#3b82f6;color:#fff}[data-theme=dark] .search-pill-tags{background:#374151;color:#d1d5db}[data-theme=dark] .search-pill-tags:hover{background:#4b5563}[data-theme=dark] .search-pill-tags.active{background:#3b82f6;color:#fff}.search-pill-search{background:#e5e7eb;color:#374151}.search-pill-search:hover{background:#d1d5db}.search-pill-search.active{background:#3b82f6;color:#fff}[data-theme=dark] .search-pill-search{background:#374151;color:#d1d5db}[data-theme=dark] .search-pill-search:hover{background:#4b5563}[data-theme=dark] .search-pill-search.active{background:#3b82f6;color:#fff}.search-separator{background:#e5e7eb;height:1px;margin:0}[data-theme=dark] .search-separator{background:var(--border)}.search-results{max-height:60vh;overflow-x:hidden;overflow-y:auto;padding:.5rem 0}.search-results-empty{padding:1.5rem 1.25rem;text-align:center}.search-results-hint{color:#9ca3af;font-size:.875rem}[data-theme=dark] .search-results-hint{color:var(--text-muted)}.search-result-item{color:#374151;cursor:pointer;display:block;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:.9375rem;line-height:1.5;padding:.625rem 1.25rem;text-decoration:none;transition:background .1s ease}.search-result-item.selected,.search-result-item:hover{background:#f3f4f6;color:#111827}[data-theme=dark] .search-result-item{color:var(--text-secondary)}[data-theme=dark] .search-result-item.selected,[data-theme=dark] .search-result-item:hover{background:var(--bg-card-hover);color:var(--text-main)}.search-highlight,.search-result-item mark{background-color:#ff0;border-radius:2px;color:#000;padding:0 2px}[data-theme=dark] .search-highlight,[data-theme=dark] .search-result-item mark{background-color:#fde047;color:#000}.search-no-results{color:#9ca3af;font-size:.875rem;padding:1.5rem 1.25rem;text-align:center}[data-theme=dark] .search-no-results{color:var(--text-muted)}.search-footer{background:#f9fafb;border-top:1px solid #e5e7eb;padding:.625rem 1.25rem}[data-theme=dark] .search-footer{background:var(--bg-body);border-top-color:var(--border)}.search-footer-hint{align-items:center;color:#9ca3af;display:flex;font-size:.75rem;gap:.5rem;justify-content:center}[data-theme=dark] .search-footer-hint{color:var(--text-muted)}.search-kbd{align-items:center;background:#fff;border:1px solid #d1d5db;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.05);color:#6b7280;display:inline-flex;font-family:Inter,system-ui,sans-serif;font-size:.6875rem;font-weight:500;justify-content:center;min-width:1.5rem;padding:.125rem .375rem}[data-theme=dark] .search-kbd{background:var(--bg-card);border-color:var(--border);color:var(--text-muted)}.search-loading{align-items:center;color:#9ca3af;display:flex;justify-content:center;padding:2rem}.search-loading:after{animation:spin .8s linear infinite;border:2px solid #e5e7eb;border-radius:50%;border-top-color:#3b82f6;content:"";height:20px;width:20px}@keyframes spin{to{transform:rotate(1turn)}}.search-result-item-content{align-items:center;display:flex;gap:.625rem}.search-result-icon{align-items:center;color:#9ca3af;display:flex;flex-shrink:0;font-size:.875rem;height:1.25rem;justify-content:center;width:1.25rem}[data-theme=dark] .search-result-icon{color:var(--text-muted)}.search-result-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-container{flex:1;margin:0;max-width:100%;padding:1rem 1.5rem;width:100%}.container{max-width:100%;padding:0}.content-toolbar{flex-wrap:wrap;justify-content:space-between;margin-bottom:1.5rem}.content-toolbar,.toolbar-left{align-items:center;display:flex;gap:1rem}.toolbar-right{align-items:center;display:flex;gap:.5rem}.view-toggle{background:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;display:flex;overflow:hidden}.view-toggle-btn{align-items:center;background:transparent;border:none;color:var(--text-muted);cursor:pointer;display:flex;height:36px;justify-content:center;transition:all .15s ease;width:36px}.view-toggle-btn:hover{background:var(--border-light);color:var(--text-main)}.view-toggle-btn.active{background:var(--primary);color:#fff}.paging{align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:.75rem;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;margin:1.25rem 0 0;padding:.75rem .9rem;width:100%}.content-toolbar .paging{background:transparent;border:0;border-radius:0;margin:0;padding:0}.paging-links{align-items:center;display:inline-flex;gap:.5rem}.paging-newer,.paging-older{align-items:center;background:var(--bg-body);border:1px solid var(--border);border-radius:.5rem;color:var(--text-secondary);display:inline-flex;height:32px;justify-content:center;text-decoration:none;transition:all .15s ease;width:32px}.paging-newer:hover,.paging-older:hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}.paging-current{color:var(--text-secondary);font-size:.86rem;letter-spacing:.03em;text-transform:uppercase}.paging-current strong,.paging-stats{color:var(--text-main)}.paging-stats{font-size:1.05rem;font-weight:600}.paging.single-page .paging-stats{font-size:.95rem}.paging-plugin,.paging-plugin a{align-items:center;display:inline-flex}.paging-plugin a{background:var(--bg-body);border:1px solid var(--border);border-radius:.45rem;color:var(--text-secondary);justify-content:center;min-height:30px;min-width:30px;padding:.2rem .45rem;text-decoration:none}body.view-notes .paging{margin-top:1rem}@media (max-width:768px){.paging{padding:.65rem .75rem}.paging-stats{order:-1;width:100%}}.links-list{display:grid;gap:1rem}.links-list.view-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.links-list.view-list{grid-template-columns:minmax(0,1fr)}.links-list.view-compact{background:var(--bg-card);border:1px solid var(--border);border-radius:.8rem;display:block;overflow:hidden}.compact-table-head{display:none}.link-outer{--link-strip-inset:0.75rem;--link-strip-size:32px;background:var(--bg-card);border:1px solid var(--border);border-radius:.75rem;contain-intrinsic-size:auto 300px;content-visibility:auto;overflow:hidden;padding:calc(var(--link-strip-inset)*2 + var(--link-strip-size)) 1.25rem 1.25rem;position:relative;transition:all .2s ease}.link-outer:hover{box-shadow:var(--shadow-md)}.link-outer.selected{background:var(--selection-bg);border-color:var(--selection-border)}.link-outer.selected:before{border:2px solid var(--selection-border);border-radius:.75rem;bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.link-select-checkbox{align-items:center;background:hsla(0,0%,100%,.9);border-radius:.5rem;box-shadow:0 1px 2px rgba(0,0,0,.1);display:flex;height:var(--link-strip-size);justify-content:center;left:var(--link-strip-inset);opacity:0;position:absolute;right:auto;top:var(--link-strip-inset);transform:none;transition:opacity .15s ease;width:var(--link-strip-size);z-index:20}[data-theme=dark] .link-select-checkbox{background:rgba(30,41,59,.9);border:1px solid var(--border)}.link-outer.selected .link-select-checkbox,.link-outer:hover .link-select-checkbox,.selection-mode .link-select-checkbox{opacity:1}.link-select-checkbox input{accent-color:var(--primary);cursor:pointer;height:18px;margin:0;width:18px}.link-thumbnail{background:transparent;border:none;border-radius:0;filter:brightness(.6);height:60%;left:0;margin:0;mask-image:linear-gradient(180deg,#000 50%,transparent);-webkit-mask-image:linear-gradient(180deg,#000 50%,transparent);pointer-events:none;position:absolute;top:0;width:100%;z-index:0}.link-content{position:relative;z-index:2}.link-thumbnail img{height:100%;object-fit:cover;width:100%}.link-thumbnail-placeholder{align-items:center;color:var(--text-muted);display:flex;font-size:2rem;height:100%;justify-content:center}.link-hover-actions{display:flex;gap:.25rem;opacity:0;position:absolute;right:calc(var(--link-strip-inset) + var(--link-strip-size) + .4rem);top:var(--link-strip-inset);transition:opacity .15s ease;z-index:20}.link-outer:hover .link-hover-actions{opacity:1}.link-hover-btn{background:var(--bg-card);border:1px solid var(--border);border-radius:.375rem;color:var(--text-secondary);height:30px;width:30px}.link-actions .readitlater-toggle-btn,.link-hover-btn{align-items:center;cursor:pointer;display:flex;justify-content:center;text-decoration:none;transition:all .15s ease}.link-actions .readitlater-toggle-btn{background:transparent;border:none;color:var(--text-muted);height:36px;width:36px}.link-actions .readitlater-toggle-btn i{color:inherit;font-size:1.15rem}.link-actions .readitlater-toggle-btn.active,.link-actions .readitlater-toggle-btn.active:hover{background:#ef4444;box-shadow:0 2px 6px rgba(239,68,68,.35);color:#fff}[data-theme=dark] .link-actions .readitlater-toggle-btn.active,[data-theme=dark] .link-actions .readitlater-toggle-btn.active:hover{background:#f87171;color:#1b0b0b}.link-actions .readitlater-toggle-btn.is-loading{opacity:.7;pointer-events:none}.link-hover-btn:hover{background:var(--primary);border-color:var(--primary);color:#fff}.link-header{margin-bottom:.75rem}.link-title{color:var(--text-main);display:block;font-size:1rem;font-weight:600;line-height:1.4;margin-bottom:.25rem;padding-right:4.8rem}.link-title:hover{color:var(--primary)}.link-url{color:var(--text-muted);display:block;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-meta{align-items:center;display:flex;gap:.75rem;margin-top:.25rem}.link-visibility-badge{background:rgba(0,0,0,.1);display:flex;right:var(--link-strip-inset);transition:all .2s ease;width:var(--link-strip-size)}.link-readlater-badge,.link-visibility-badge{align-items:center;border-radius:.5rem;height:var(--link-strip-size);justify-content:center;position:absolute;top:var(--link-strip-inset);z-index:10}.link-readlater-badge{background:rgba(239,68,68,.92);box-shadow:0 2px 8px rgba(239,68,68,.35);color:#fff;display:inline-flex;font-size:.72rem;font-weight:700;letter-spacing:.02em;padding:0 .6rem;right:calc(var(--link-strip-inset) + var(--link-strip-size) + .4rem);text-transform:uppercase}[data-theme=dark] .link-readlater-badge{background:rgba(248,113,113,.9);color:#1b0b0b}.link-visibility-badge i{font-size:1.25rem;line-height:1}.link-outer.private .link-visibility-badge{background:rgba(245,158,11,.2);border:1px solid rgba(245,158,11,.3)}.link-outer.private .link-visibility-badge i{color:#f59e0b;font-weight:600}.link-outer.public .link-visibility-badge{background:rgba(16,185,129,.2);border:1px solid rgba(16,185,129,.3)}.link-outer.public .link-visibility-badge i{color:#10b981;font-weight:600}.link-date{color:var(--text-muted);font-size:.8rem}.link-description{color:var(--text-secondary);display:-webkit-box;font-size:.9rem;-webkit-line-clamp:3;line-clamp:3;line-height:1.5;margin:.75rem 0;-webkit-box-orient:vertical;overflow:hidden}.link-footer{align-items:center;border-top:1px solid var(--border);display:flex;flex-wrap:nowrap;gap:.5rem;justify-content:space-between;margin-top:1rem;overflow:hidden;padding-top:.75rem}.view-grid .link-footer{align-items:flex-end;flex-direction:column;gap:.5rem}.link-tag-list{display:flex;flex:1 1 auto;flex-wrap:nowrap;gap:.375rem;min-width:0;overflow:hidden}.link-tag{align-items:center;background:var(--tag-bg);border-radius:999px;color:var(--tag-text);display:inline-flex;font-size:.75rem;font-weight:500;gap:.25rem;max-width:100%;padding:.25rem .5rem;transition:all .15s ease}.link-tag.is-tech-tag{display:none}.link-tag .link-tag-link{color:inherit;display:inline-block;line-height:1.2;max-width:100%;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.tag-remove-btn{align-items:center;background:rgba(0,0,0,.12);border:none;border-radius:999px;color:inherit;cursor:pointer;display:inline-flex;font-size:.8rem;height:1.1rem;justify-content:center;line-height:1;padding:0;transition:background-color .15s ease,color .15s ease;width:1.1rem}[data-theme=dark] .tag-remove-btn{background:hsla(0,0%,100%,.18)}.link-tag:hover{background:var(--primary);color:#fff}.link-tag:hover .tag-remove-btn{background:hsla(0,0%,100%,.22)}.view-grid .link-tag-list{flex-wrap:wrap;justify-content:flex-end;order:2;width:100%}.view-grid .link-actions{order:1}.link-actions{align-items:center;display:flex;flex-shrink:0;flex-wrap:nowrap;gap:0;justify-content:flex-end;margin-left:auto;max-width:100%}.link-actions a,.link-actions button{align-items:center;background:transparent;border:none;border-radius:.375rem;color:var(--text-muted);cursor:pointer;display:flex;flex-shrink:0;height:28px;justify-content:center;text-decoration:none;transition:all .15s ease;width:28px}.link-actions a i,.link-actions button i{font-size:1rem}.link-actions a:hover,.link-actions button:hover{background:var(--primary-light);color:var(--primary)}.view-list .link-outer{--link-strip-inset:1.25rem;align-items:flex-start;background:var(--bg-card);border:1px solid var(--border);border-radius:.75rem;box-shadow:0 1px 3px rgba(0,0,0,.1);display:flex;gap:1rem;margin-bottom:1rem;overflow:hidden;padding:1.25rem 1.5rem 1.25rem calc(var(--link-strip-inset) + var(--link-strip-size) + .75rem);position:relative;transition:all .2s ease}.view-list .link-outer:hover{border-color:var(--primary);box-shadow:0 4px 6px rgba(0,0,0,.1)}.view-list .link-readlater-badge{right:calc(var(--link-strip-inset) + var(--link-strip-size) + .4rem)}.view-list .link-select-checkbox{background:var(--bg-card);border:1px solid var(--border);z-index:10}.view-list .link-thumbnail{background:transparent;border:none;border-radius:0;bottom:0;height:100%;left:0;margin:0;mask-image:linear-gradient(90deg,#000 20%,transparent);-webkit-mask-image:linear-gradient(90deg,#000 20%,transparent);pointer-events:none;position:absolute;top:0;width:300px;z-index:0}.view-list .link-content{flex:1;min-width:0;position:relative;z-index:2}.view-list .link-header{margin-bottom:.5rem}.view-list .link-description{-webkit-line-clamp:2;line-clamp:2;margin:.5rem 0}.view-list .link-footer{border-top:1px solid var(--border-light);margin-top:.75rem;padding-top:.75rem}.view-list .link-hover-actions{flex-shrink:0;margin-left:auto;opacity:1;position:relative;right:auto;top:auto}.bulk-actions-bar{align-items:center;animation:slideUp .2s ease;background:var(--bg-card);border-top:1px solid var(--border);bottom:0;box-shadow:0 -4px 6px -1px rgba(0,0,0,.1);display:none;justify-content:space-between;left:var(--sidebar-width);padding:1rem 1.5rem;position:fixed;right:0;z-index:150}.bulk-actions-bar.show,.bulk-info{display:flex}.bulk-info{align-items:center;color:var(--text-main);font-size:.9rem;gap:1rem}.bulk-select-all{color:var(--primary);cursor:pointer;font-weight:500}.bulk-select-all:hover{text-decoration:underline}.bulk-buttons{gap:.5rem}.bulk-btn,.bulk-buttons{align-items:center;display:flex}.bulk-btn{border:none;border-radius:.5rem;cursor:pointer;font-size:.875rem;font-weight:500;gap:.375rem;padding:.625rem 1rem;transition:all .15s ease}.bulk-btn-cancel{background:transparent;color:var(--text-secondary)}.bulk-btn-cancel:hover{background:var(--border-light);color:var(--text-main)}.bulk-btn-delete{background:var(--danger);color:#fff}.bulk-btn-delete:hover{background:#dc2626}.bulk-btn-public{background:var(--success);color:#fff}.bulk-btn-public:hover{background:#059669}.bulk-btn-private{background:var(--primary);color:#fff}.bulk-btn-private:hover{background:var(--primary-hover)}.footer-main{border-top:1px solid var(--border);color:var(--text-secondary);margin-top:1.25rem;padding:1rem 0 1.25rem}.footer-main p{font-size:.95rem;margin:0}.footer-feeds{align-items:center;display:flex;flex-wrap:wrap;font-size:.95rem;gap:.45rem;margin-top:.55rem}.footer-separator{color:var(--text-muted)}.plugin-footer-text{color:var(--text-secondary);margin-top:.5rem}.media-player-bar{background:var(--bg-card);border-top:1px solid var(--border);bottom:0;box-shadow:0 -6px 24px rgba(0,0,0,.15);display:none;left:var(--sidebar-width);padding:.7rem 1.2rem;position:fixed;right:0;z-index:155}.media-player-bar.show{display:block}.media-player-inner{align-items:center;display:grid;gap:.75rem;grid-template-columns:auto minmax(180px,1fr) auto auto auto}.media-player-btn{align-items:center;background:var(--bg-body);border:1px solid var(--border);border-radius:.5rem;color:var(--text-main);cursor:pointer;display:inline-flex;height:34px;justify-content:center;width:34px}.media-player-btn:hover{background:var(--primary-light);color:var(--primary)}.media-player-title{color:var(--text-main);font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-player-time{color:var(--text-secondary);font-size:.8rem;font-variant-numeric:tabular-nums;min-width:82px;text-align:right}.media-player-progress,.media-player-volume{width:100%}.media-player-volume-wrap{align-items:center;display:flex;gap:.4rem;width:130px}@media (max-width:991px){.media-player-bar{left:0}}@media (max-width:768px){.media-player-inner{grid-template-columns:auto minmax(120px,1fr) auto}.media-player-volume-wrap{display:none}}.link-outer.is-sticky{background:var(--primary-light);border-left:3px solid var(--primary)}.empty-state{padding:4rem 2rem;text-align:center}.empty-state-icon{color:var(--text-muted);font-size:4rem;margin-bottom:1rem}.empty-state-title{color:var(--text-main);font-size:1.5rem;font-weight:600;margin-bottom:.5rem}.empty-state-text{color:var(--text-secondary)}.card{border:1px solid var(--border);border-radius:.75rem;box-shadow:var(--shadow-sm);margin-bottom:1.5rem;overflow:hidden}.card,.card-header{background:var(--bg-card)}.card-header{align-items:center;border-bottom:1px solid var(--border);color:var(--text-main);display:flex;font-size:1.1rem;font-weight:600;justify-content:space-between;padding:1.25rem 1.5rem}.card-body{padding:1.5rem}.card-footer{align-items:center;background:var(--bg-card-hover);border-top:1px solid var(--border);display:flex;gap:.75rem;justify-content:flex-end;padding:1rem 1.5rem}.card-title{color:var(--text-main);font-size:1.25rem;font-weight:600;margin-bottom:1rem}.form-entry,.form-group{margin-bottom:1.25rem}.form-label,label{color:var(--text-main);display:block;font-size:.9rem;font-weight:500;margin-bottom:.5rem}.sublabel{color:var(--text-secondary);font-size:.8rem;margin-top:.25rem}.form-control,input[type=email],input[type=number],input[type=password],input[type=search],input[type=text],select,textarea{background:var(--bg-body);border:1px solid var(--border);border-radius:.5rem;color:var(--text-main);font-family:inherit;font-size:.95rem;padding:.625rem .875rem;transition:all .2s ease;width:100%}.form-control:focus,input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=text]:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light);outline:none}.checkbox-wrapper{display:flex}.btn,.checkbox-wrapper{align-items:center;gap:.5rem}.btn{border:1px solid transparent;border-radius:.5rem;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:500;justify-content:center;line-height:1.2;padding:.625rem 1.25rem;text-decoration:none;transition:all .2s ease}.btn-primary,.button-primary{background:var(--primary);border-color:transparent;color:#fff}.btn-primary:hover,.button-primary:hover{background:var(--primary-hover);color:#fff}.btn-secondary,.button-secondary{background:var(--bg-card);border-color:var(--border);color:var(--text-main)}.btn-secondary:hover,.button-secondary:hover{background:var(--border-light)}.btn-danger,.button-alert{background:var(--danger);color:#fff}.btn-danger:hover,.button-alert:hover{background:#dc2626}.btn-sm{font-size:.8rem;gap:.25rem;line-height:1;padding:.25rem .5rem}.input-big{background:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;color:var(--text-main);font-size:1rem;padding:.75rem 1rem;transition:all .15s ease;width:100%}.input-big:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light);outline:none}.alert{border-radius:.5rem;font-size:.9rem;margin-bottom:1rem;padding:1rem 1.25rem}.alert-success{background:var(--tag-green-bg);border:1px solid var(--tag-green-text);color:var(--tag-green-text)}.alert-danger{background:var(--tag-red-bg);border:1px solid var(--tag-red-text);color:var(--tag-red-text)}.alert-warning{background:var(--tag-yellow-bg);border:1px solid var(--tag-yellow-text);color:var(--tag-yellow-text)}.text-center{text-align:center}.hidden{display:none!important}.clearfix:after{clear:both;content:"";display:table}.list-group{display:flex;flex-direction:column}.list-group-item{align-items:center;border-bottom:1px solid var(--border);color:var(--text-main);display:flex;padding:1rem 1.25rem;text-decoration:none;transition:background-color .2s}.list-group-item:last-child{border-bottom:none}.list-group-item:hover{background-color:var(--bg-card-hover)}.list-group-item-content{flex:1}.list-group-item-label{color:var(--text-main);font-size:1rem;font-weight:500;margin-bottom:.125rem}.list-group-item-sublabel{color:var(--text-secondary);font-size:.85rem}.list-group-item-action{align-items:center;display:flex;gap:.5rem;margin-left:1rem}.list-sortable-handle{color:var(--text-muted);cursor:move;padding:.5rem}.list-sortable-handle:hover{color:var(--text-main)}.list-group-item .checkbox-wrapper{margin-right:1rem}.key-value-list{display:flex;flex-direction:column}.key-value-item{border-bottom:1px solid var(--border-light);display:flex;font-size:.95rem;justify-content:space-between;padding:.75rem 0}.key-value-item:last-child{border-bottom:none}.key-value-label{color:var(--text-secondary);font-weight:500}.key-value-data{color:var(--text-main);font-weight:500;text-align:right}.progress-bar{background-color:var(--border-light);border-radius:.5rem;height:1rem;margin:1rem 0;overflow:hidden;width:100%}.progress-actual{background-color:var(--primary);height:100%;transition:width .3s ease;width:0}.progress-counter{color:var(--text-secondary);font-weight:600;text-align:center}.picwall-controls{display:flex;justify-content:center;margin:1.5rem 0 1.75rem}.picwall-controls-inner{align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow-sm);display:inline-flex;gap:1rem;padding:.85rem 1.25rem}.picwall-controls-label{align-items:center;color:var(--text-main);display:inline-flex;font-size:.9rem;font-weight:600;gap:.45rem}.picwall-size-controls{align-items:center;display:inline-flex;gap:.5rem}.picwall-size-btn{align-items:center;background:var(--bg-body);border:1px solid var(--border);border-radius:50%;color:var(--text-main);cursor:pointer;display:inline-flex;height:32px;justify-content:center;transition:transform .2s ease,background-color .2s ease;width:32px}.picwall-size-btn:hover{background:var(--bg-card-hover);transform:translateY(-1px)}.picwall-size-slider{accent-color:var(--primary);width:160px}.picwall-size-value{color:var(--text-secondary);font-size:.85rem;font-weight:600;min-width:60px;text-align:right}.picwall-container{--picwall-item-size:220px;column-gap:18px;column-width:var(--picwall-item-size);padding-bottom:2rem;width:100%}.picwall-pictureframe{background:var(--bg-card);border-radius:18px;box-shadow:var(--shadow-md);break-inside:avoid;display:inline-block;isolation:isolate;margin:0 0 18px;overflow:hidden;position:relative;width:100%}.picwall-image-link img{display:block;height:auto;object-fit:cover;transform:scale(1);transition:transform .35s ease;width:100%}.picwall-pictureframe:focus-within .picwall-image-link img,.picwall-pictureframe:hover .picwall-image-link img{transform:scale(1.04)}.picwall-overlay{align-items:flex-end;background:linear-gradient(180deg,rgba(8,15,30,.05),rgba(8,15,30,.65) 60%,rgba(8,15,30,.85));display:flex;inset:0;opacity:0;position:absolute;transition:opacity .3s ease}.picwall-pictureframe:focus-within .picwall-overlay,.picwall-pictureframe:hover .picwall-overlay{opacity:1}.picwall-link{color:#fff;display:flex;flex-direction:column;gap:.35rem;padding:1.1rem 1.2rem 1.25rem;width:100%}.picwall-title{font-size:1.05rem;font-weight:600;line-height:1.3;text-shadow:0 8px 20px rgba(0,0,0,.45)}.picwall-description{color:hsla(0,0%,100%,.85);display:-webkit-box;font-size:.85rem;line-clamp:3;-webkit-line-clamp:3;line-height:1.4;-webkit-box-orient:vertical;overflow:hidden}[data-theme=dark] .picwall-controls-inner{background:#111827;border-color:#1f2937}[data-theme=dark] .picwall-size-btn{background:#0f172a;border-color:#1f2937}[data-theme=dark] .picwall-pictureframe{background:#0f172a;box-shadow:0 18px 26px rgba(4,12,26,.45)}@media (max-width:900px){.picwall-controls-inner{flex-wrap:wrap;justify-content:center}.picwall-size-slider{width:140px}}@media (max-width:600px){.picwall-controls{margin:1rem 0 1.25rem}.picwall-controls-inner{border-radius:16px;width:100%}.picwall-container{column-gap:14px}.picwall-pictureframe{border-radius:14px;margin-bottom:14px}}.daily{padding:1.5rem 0 2.5rem}.daily-nav-unified{align-items:center;background:linear-gradient(135deg,rgba(15,23,42,.08),rgba(15,23,42,.03));border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-sm);display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:space-between;margin-bottom:1.6rem;padding:1.1rem 1.4rem}.daily-nav-left{align-items:center;color:var(--text-main);display:inline-flex;font-weight:600;gap:.65rem;white-space:nowrap}.daily-nav-center{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:.75rem;justify-content:center}.daily-nav-tabs{background:var(--bg-body);border:1px solid var(--border-light);border-radius:999px;display:inline-flex;gap:.4rem;padding:.3rem;white-space:nowrap}[data-theme=dark] .daily-nav-tabs{background:#0f172a;border-color:#1f2937}.daily-tab{border:1px solid transparent;border-radius:999px;color:var(--text-secondary);font-size:.78rem;font-weight:700;letter-spacing:.08em;padding:.45rem 1rem;text-transform:uppercase;transition:all .2s ease}.daily-tab.is-active{background:var(--primary);box-shadow:0 12px 24px rgba(59,130,246,.3);color:#fff}.daily-tab.is-inactive:hover{background:var(--bg-card-hover);border-color:var(--border-light);color:var(--text-main)}.daily-date-pill{background:var(--bg-card);border:1px dashed var(--border);border-radius:999px;color:var(--text-main);cursor:pointer;font-size:.9rem;font-weight:600;padding:.4rem 1.1rem;transition:all .2s ease}.daily-date-pill:hover{background:var(--bg-card-hover)}.daily-calendar-btn{align-items:center;background:var(--bg-card);border:1px solid var(--border-light);border-radius:999px;color:var(--text-main);cursor:pointer;display:inline-flex;font-size:.85rem;font-weight:600;gap:.5rem;padding:.45rem 1.05rem;transition:all .2s ease}[data-theme=dark] .daily-calendar-btn{background:#0f172a;border-color:#1f2937;color:#e2e8f0}[data-theme=dark] .daily-calendar-btn:hover{background:#111827;border-color:#334155}.daily-calendar-btn:hover{background:var(--bg-card-hover);border-color:var(--border);color:var(--text-main)}.daily-calendar-wrap{position:relative}.daily-calendar-panel{position:absolute;right:0;top:calc(100% + 12px);z-index:120}.daily-calendar-panel.is-open{display:block}.daily-calendar-shell{background:var(--bg-card);border:1px solid var(--border);border-radius:20px;box-shadow:0 25px 60px rgba(15,23,42,.35);display:flex;overflow:hidden;width:min(640px,92vw)}.daily-calendar-sidebar{background:var(--bg-body);border-right:1px solid var(--border-light);display:flex;flex-direction:column;gap:.6rem;padding:1.1rem;width:190px}.daily-calendar-title{color:var(--text-muted);font-size:.7rem;font-weight:700;letter-spacing:.08em;margin-bottom:.5rem;text-transform:uppercase}.daily-calendar-shortcut{background:transparent;border:1px solid transparent;border-radius:10px;color:var(--text-secondary);cursor:pointer;font-size:.85rem;padding:.5rem .7rem;text-align:left;transition:all .2s ease}.daily-calendar-shortcut:hover{background:var(--bg-card-hover);border-color:var(--border);color:var(--text-main)}.daily-calendar-summary{border-top:1px solid var(--border-light);color:var(--text-muted);display:grid;font-size:.75rem;gap:.4rem;margin-top:auto;padding-top:1rem}.daily-calendar-summary strong{color:var(--text-main);display:block;font-size:.85rem;margin-top:.2rem}.daily-calendar-main{display:flex;flex:1;flex-direction:column;padding:1.5rem}.daily-calendar-header{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-bottom:1rem}.daily-calendar-nav{align-items:center;background:var(--bg-body);border:1px solid var(--border);border-radius:12px;color:var(--text-secondary);cursor:pointer;display:inline-flex;height:36px;justify-content:center;transition:all .2s ease;width:36px}.daily-calendar-nav:hover{background:var(--bg-card-hover);color:var(--text-main)}.daily-calendar-month{color:var(--text-main);font-size:1rem;font-weight:700;text-transform:capitalize}.daily-calendar-grid,.daily-calendar-weekdays{display:grid;gap:.35rem;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center}.daily-calendar-weekdays{color:var(--text-muted);font-size:.7rem;letter-spacing:.05em;margin-bottom:.5rem;text-transform:uppercase}.daily-calendar-day{align-items:center;background:transparent;border:none;border-radius:999px;color:var(--text-secondary);cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;height:40px;justify-content:center;transition:all .15s ease;width:40px}.daily-calendar-day:hover{background:rgba(59,130,246,.18);border-radius:999px;box-shadow:0 0 0 1px rgba(59,130,246,.25);color:var(--text-main)}[data-theme=dark] .daily-calendar-day:hover{background:rgba(99,102,241,.25);box-shadow:0 0 0 1px rgba(99,102,241,.35);color:#fff}.daily-calendar-day.is-in-range{background:rgba(59,130,246,.16);border-radius:0;color:var(--primary)}[data-theme=dark] .daily-calendar-day.is-in-range{background:rgba(59,130,246,.25);color:#60a5fa}.daily-calendar-day.is-range-end,.daily-calendar-day.is-range-start{background:var(--primary);box-shadow:0 0 15px rgba(59,130,246,.5);color:#fff}[data-theme=dark] .daily-calendar-day.is-range-end,[data-theme=dark] .daily-calendar-day.is-range-start{background:#2563eb;box-shadow:0 0 15px rgba(37,99,235,.5)}.daily-calendar-day.is-range-single{border-radius:999px}.daily-calendar-day.is-range-start:not(.is-range-end){border-radius:999px 0 0 999px}.daily-calendar-day.is-range-end:not(.is-range-start){border-radius:0 999px 999px 0}.daily-calendar-day.is-in-range:hover,.daily-calendar-day.is-range-end:hover,.daily-calendar-day.is-range-start:hover{box-shadow:none}.daily-calendar-footer{border-top:1px solid var(--border-light);display:flex;gap:.6rem;justify-content:flex-end;margin-top:auto;padding-top:1rem}.daily-calendar-apply,.daily-calendar-cancel{background:var(--bg-body);border:1px solid var(--border);border-radius:10px;color:var(--text-secondary);cursor:pointer;font-weight:600;padding:.45rem 1rem;transition:all .2s ease}.daily-calendar-cancel:hover{background:var(--bg-card-hover);color:var(--text-main)}.daily-calendar-apply{background:var(--primary);border-color:transparent;box-shadow:0 12px 24px rgba(59,130,246,.25);color:#fff}.daily-calendar-apply:disabled{box-shadow:none;cursor:not-allowed;opacity:.6}.daily-calendar-wrap.is-open .daily-calendar-btn{background:rgba(59,130,246,.16);border-color:rgba(59,130,246,.35);color:var(--primary)}.daily-grid{column-count:4;column-gap:18px;width:100%}.daily-item{break-inside:avoid;display:inline-block;margin-bottom:18px;width:100%}.daily-card{background:var(--bg-card);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-md);overflow:hidden;transition:transform .25s ease,box-shadow .25s ease}.daily-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.daily-item-header{color:var(--text-main);display:block;font-size:1rem;font-weight:600;line-height:1.35;padding:1rem 1.1rem .75rem}.daily-item-image{background-position:50%;background-size:cover;height:160px;width:100%}.daily-item-body{color:var(--text-secondary);font-size:.9rem;line-height:1.55;padding:.85rem 1.1rem .5rem}.daily-item-footer{align-items:center;border-top:1px solid var(--border-light);color:var(--text-muted);display:flex;flex-wrap:wrap;font-size:.8rem;gap:.75rem;justify-content:space-between;padding:.75rem 1.1rem 1rem}.daily-item-footer-subtitle{color:var(--text-secondary);font-weight:600}.daily-item-tags{color:var(--text-muted);font-size:.78rem;font-weight:500}[data-theme=dark] .daily-nav-unified{background:linear-gradient(135deg,rgba(15,23,42,.8),rgba(15,23,42,.55));border-color:#1f2937}@media (max-width:1200px){.daily-grid{column-count:3}}@media (max-width:900px){.daily-grid{column-count:2}.daily-nav-unified{justify-content:center}}@media (max-width:600px){.daily-grid{column-count:1}.daily-nav-unified{padding:1rem}}.page-add .col-md-6.col-md-offset-3{float:none;margin:0 auto;max-width:920px;width:100%}.page-add .card,.page-edit-link-batch .batch-add-card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-md);overflow:hidden}.page-add .batch-add-card .card-header,.page-add .card .card-header{border-bottom:1px solid var(--border);color:var(--text-main)}.page-add .page-add-actions{color:var(--bookmark-text-main);letter-spacing:.01em;line-height:1.2;margin:1.25rem 0 1rem}.page-add .page-add-bulk-toggle{border-radius:10px;min-height:42px}.page-add .batch-private-wrap{align-items:center;display:inline-flex;gap:.45rem}.page-add .batch-private-checkbox{accent-color:var(--primary);height:18px;width:18px}.page-add .batch-private-label{color:var(--text-main);font-weight:500;margin:0}.bookmark-editor-meta{color:var(--bookmark-text-muted);font-size:.8rem;letter-spacing:.04em;margin:.35rem 0 0;text-transform:uppercase}.page-edit .bookmark-editor-card .card-body{background:transparent;padding:1.5rem}.page-edit .bookmark-field-group{margin-bottom:1.15rem}.page-edit .bookmark-field-group .form-label{color:var(--bookmark-text-main);font-size:.86rem;font-weight:600;letter-spacing:.02em;margin-bottom:.45rem}.page-edit .bookmark-editor-card .form-control,.page-edit .bookmark-editor-card input[type=text],.page-edit .bookmark-editor-card textarea{background:var(--bookmark-input-bg);border:1px solid var(--bookmark-input-border);border-radius:10px;color:var(--bookmark-text-main);min-height:44px}.page-edit .bookmark-editor-card .form-control::placeholder,.page-edit .bookmark-tags-text-input::placeholder{color:var(--bookmark-text-muted)}.page-edit .bookmark-editor-card .form-control:focus,.page-edit .bookmark-editor-card input[type=text]:focus,.page-edit .bookmark-editor-card textarea:focus,.page-edit .bookmark-tags-text-input:focus{border-color:var(--bookmark-input-focus);box-shadow:0 0 0 3px var(--bookmark-input-focus-ring)}.page-edit .bookmark-editor-form.is-enhanced .bookmark-editor-source{display:none}.page-edit .bookmark-markdown-editor{background:var(--bookmark-input-bg);border:1px solid var(--bookmark-input-border);border-radius:12px;overflow:hidden}.page-edit .bookmark-editor-sublabel{color:var(--bookmark-text-muted);margin-top:.5rem}.page-edit .bookmark-editor-sublabel a{color:color-mix(in srgb,var(--primary) 70%,#fff)}.page-edit .toastui-editor-defaultUI,.page-edit .toastui-editor-md-container,.page-edit .toastui-editor-mode-switch,.page-edit .toastui-editor-toolbar,.page-edit .toastui-editor-ww-container{background:var(--toastui-panel-surface);border-color:var(--toastui-border);color:var(--bookmark-text-main)}.page-edit .toastui-editor-toolbar{border-bottom:1px solid var(--toastui-border);box-shadow:inset 0 -1px 0 var(--toastui-border)}.page-edit .toastui-editor-toolbar button{color:var(--bookmark-text-main)}.page-edit .toastui-editor-toolbar button.active,.page-edit .toastui-editor-toolbar button:focus-visible,.page-edit .toastui-editor-toolbar button:hover{background-color:var(--toastui-tab-hover)}.page-edit .toastui-editor-toolbar-icons{opacity:.96}.page-edit .toastui-editor-toolbar-divider{background-color:var(--toastui-border)}.page-edit .toastui-editor-mode-switch .tab-item{color:var(--bookmark-text-main)}.page-edit .toastui-editor-md-tab-container,.page-edit .toastui-editor-mode-switch{border-top:1px solid var(--toastui-border)}.page-edit .toastui-editor-mode-switch .tab-item.active,.page-edit .toastui-editor-mode-switch .tab-item.selected{background:var(--toastui-tab-hover);box-shadow:0 4px 18px var(--toastui-border);color:var(--bookmark-text-main)}.page-edit .bookmark-tags-list{display:flex;flex-wrap:wrap;gap:.45rem}.page-edit .bookmark-tag-pill{align-items:center;background:var(--bookmark-tag-bg);border:1px solid color-mix(in srgb,var(--primary) 32%,transparent);border-radius:999px;color:var(--bookmark-tag-text);display:inline-flex;font-size:.95rem;font-weight:600;gap:.4rem;height:34px;letter-spacing:.01em;padding:0 .4rem 0 .8rem;transition:transform .2s ease,background-color .2s ease}.page-edit .bookmark-tag-pill:hover{background:var(--bookmark-tag-bg-hover);transform:translateY(-1px)}.page-edit .bookmark-tag-remove{align-items:center;background:var(--bookmark-tag-remove-bg);border:0;border-radius:999px;color:var(--bookmark-tag-text);cursor:pointer;display:inline-flex;height:24px;justify-content:center;line-height:1;padding:0;transition:background-color .2s ease,transform .2s ease;width:24px}.page-edit .bookmark-tag-remove:focus-visible,.page-edit .bookmark-tag-remove:hover{background:var(--bookmark-tag-remove-bg-hover);transform:scale(1.04)}.page-edit .bookmark-tag-remove:focus-visible{box-shadow:0 0 0 2px var(--focus-ring-color);outline:none}.page-edit .bookmark-tags-text-input{background:transparent;border:0;color:var(--bookmark-text-main);flex:1;font-size:.92rem;min-width:190px;padding:.45rem .4rem}.page-edit .bookmark-toggle-grid{display:grid;gap:.75rem;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:.45rem}.page-edit .bookmark-toggle-item{align-items:center;color:var(--bookmark-text-main);cursor:pointer;display:inline-flex;font-size:.92rem;font-weight:500;gap:.55rem}.page-edit .bookmark-toggle-item input[type=checkbox]{accent-color:var(--primary);height:18px;width:18px}.page-edit .bookmark-editor-footer{background:var(--bookmark-panel-soft);border-top:1px solid var(--bookmark-panel-border);padding:1rem 1.5rem}.page-edit .bookmark-editor-footer .btn{border-radius:10px;font-weight:600;min-height:42px;padding-inline:1rem}.page-edit .bookmark-editor-footer .btn-primary{background:var(--bookmark-save-bg);border-color:transparent;box-shadow:0 10px 22px var(--primary)}.page-edit .bookmark-editor-footer .btn-primary:hover{filter:brightness(1.06)}.page-edit .bookmark-editor-footer .btn-danger{background:var(--danger);border-color:transparent}.page-edit .bookmark-editor-footer .btn-danger:hover{background:color-mix(in srgb,var(--danger) 85%,#fff)}.page-edit{--bookmark-panel-bg:var(--bg-card);--bookmark-panel-border:color-mix(in srgb,var(--border) 85%,transparent);--bookmark-panel-soft:color-mix(in srgb,var(--bg-card) 88%,var(--bg-body));--bookmark-input-bg:color-mix(in srgb,var(--bg-body) 80%,var(--bg-card));--bookmark-input-border:var(--border);--bookmark-input-focus:var(--primary);--bookmark-input-focus-ring:color-mix(in srgb,var(--primary) 35%,transparent);--bookmark-text-main:var(--text-main);--bookmark-text-muted:var(--text-secondary);--bookmark-tag-bg:color-mix(in srgb,var(--primary) 12%,transparent);--bookmark-tag-bg-hover:color-mix(in srgb,var(--primary) 18%,transparent);--bookmark-tag-text:var(--text-main);--bookmark-tag-remove-bg:color-mix(in srgb,var(--text-main) 10%,transparent);--bookmark-tag-remove-bg-hover:color-mix(in srgb,var(--text-main) 18%,transparent);--bookmark-save-bg:linear-gradient(135deg,var(--primary) 0%,color-mix(in srgb,var(--primary) 75%,#fff) 100%);--toastui-panel-bg:var(--surface-soft);--toastui-panel-surface:var(--surface-frosted);--toastui-toolbar-bg:linear-gradient(180deg,color-mix(in srgb,var(--bg-card) 92%,transparent) 0%,color-mix(in srgb,var(--bg-card) 78%,transparent) 100%);--toastui-border:color-mix(in srgb,var(--border) 110%,transparent);--toastui-tab-hover:color-mix(in srgb,var(--primary) 25%,transparent)}.page-edit .bookmark-editor-card{background:var(--bookmark-panel-bg);border:1px solid var(--bookmark-panel-border);border-radius:16px;box-shadow:var(--shadow-lg)}.page-edit .bookmark-editor-header{background:linear-gradient(180deg,rgba(148,163,184,.12),rgba(148,163,184,0))}.bookmark-editor-title{color:var(--bookmark-text-main);font-size:1.35rem;line-height:1.2;margin:0}.page-edit .bookmark-editor-form[data-batch-mode="1"] .bookmark-markdown-editor{display:none}.page-edit-link-batch .batch-save-all-wrap{margin:1.5rem 0}.page-edit-link-batch .batch-save-all-btn{border-radius:10px;min-height:42px;min-width:150px}.page-edit-link-batch .fullscreen{background:var(--overlay-bg);inset:0;position:fixed;z-index:1600}.page-edit-link-batch .content-fullscreen{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:1.25rem}.page-edit-link-batch .batch-progress-card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-xl);color:var(--text-main);padding:1.25rem 1.5rem}.page-edit-link-batch .batch-progress-title{font-size:1.1rem;margin:0 0 .6rem;text-align:center}[data-theme=dark] .page-edit-link-batch .batch-progress-card{background:#122039;border-color:#314564;color:#eaf2ff}.sidebar-overlay{background:rgba(15,23,42,.55);inset:0;opacity:0;position:fixed;transition:opacity .2s ease,visibility .2s ease;visibility:hidden;z-index:180}.sidebar-overlay.show{opacity:1;visibility:visible}@media (max-width:1100px){.header-nav{display:none}.mobile-menu-btn{align-items:center;background:hsla(0,0%,100%,.14);border-radius:10px;display:inline-flex;height:38px;justify-content:center;width:38px}.mobile-menu-btn:hover{background:hsla(0,0%,100%,.22)}.sidebar{border-right:0;box-shadow:0 24px 50px rgba(2,6,23,.45);max-width:320px;transform:translateX(-100%);width:min(86vw,320px);z-index:220}.sidebar.show{transform:translateX(0)}.bulk-actions-bar,.main-content,.media-player-bar{left:0;margin-left:0}.header-main{padding:0 .9rem}.content-container{padding:.85rem .9rem}.content-toolbar{align-items:stretch;flex-direction:column;gap:.8rem}.toolbar-left,.toolbar-right{flex-wrap:wrap;justify-content:space-between;width:100%}.links-list.view-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.paging{gap:.6rem}.paging-current{order:2}.paging-links,.paging-plugin{order:3}.bulk-actions-bar{align-items:stretch;flex-direction:column;gap:.8rem;padding:.8rem .9rem}.bulk-buttons,.bulk-info{justify-content:space-between;width:100%}.bulk-buttons{flex-wrap:wrap}.bulk-btn{flex:1 1 calc(50% - 0.35rem)}.daily-nav-left{justify-content:center;width:100%}.daily-nav-tabs{justify-content:flex-start;overflow-x:auto;width:100%}}@media (max-width:768px){body{-webkit-text-size-adjust:100%}.header-main{height:52px}.header-inner{gap:.6rem}.header-actions{gap:.35rem}.header-action-btn,.header-nav-link{border-radius:.45rem;font-size:1rem;height:34px;width:34px}.filter-panel{animation:none;border-radius:14px;bottom:.6rem;left:.5rem;max-height:78vh;overflow:auto;position:fixed;right:.5rem;top:auto;width:auto}.search-overlay{align-items:flex-start;padding:1rem .6rem}.search-modal{border-radius:12px;max-width:none;width:100%}.search-modal-header{flex-wrap:wrap}.search-modal-actions{width:100%}.search-pill-btn{flex:1;justify-content:center}.links-list,.links-list.view-grid{gap:.8rem;grid-template-columns:minmax(0,1fr)}.link-outer{border-radius:.7rem;padding:3.1rem .9rem .95rem}.link-title{font-size:.97rem;padding-right:2.2rem}.link-description{font-size:.86rem;margin:.55rem 0}.link-footer,.view-grid .link-footer{align-items:stretch;margin-top:.7rem;padding-top:.65rem}.link-tag-list,.view-grid .link-tag-list{justify-content:flex-start}.link-actions,.view-grid .link-actions{justify-content:flex-start;margin-left:0;width:100%}.link-actions a,.link-actions button{height:34px;width:34px}.view-list .link-outer{--link-strip-inset:0.65rem;display:block;margin-bottom:.75rem;padding:calc(var(--link-strip-inset)*2 + var(--link-strip-size)) .9rem .95rem}.view-list .link-thumbnail{height:42%;left:0;mask-image:linear-gradient(180deg,#000 35%,transparent);-webkit-mask-image:linear-gradient(180deg,#000 35%,transparent);position:absolute;right:0;top:0;width:100%}.view-list .link-readlater-badge{right:calc(var(--link-strip-inset) + var(--link-strip-size) + .4rem)}.modal-overlay,.qrcode-modal-overlay{padding:.65rem}.modal-content,.qrcode-modal-content{border-radius:.65rem;max-height:90vh;width:100%}.card-body,.card-footer,.card-header{padding-left:1rem;padding-right:1rem}.card-footer{flex-wrap:wrap;justify-content:stretch}.card-footer .btn{width:100%}.list-group-item{align-items:flex-start;gap:.65rem;padding:.85rem .9rem}.list-sortable-handle{padding:.2rem}.key-value-item{align-items:flex-start;flex-direction:column;gap:.25rem}.key-value-data{text-align:left}.bookmarklet-actions,.third-party-links{display:flex;flex-direction:column;gap:.65rem}.bookmarklet-actions .btn,.third-party-links .btn{width:100%}.daily{padding-top:1rem}.daily-nav-unified{border-radius:14px;gap:.9rem;padding:.85rem}.daily-nav-center{width:100%}.daily-calendar-btn,.daily-date-pill,.daily-nav-btn{min-height:38px}.daily-calendar-panel{align-items:center;background:rgba(15,23,42,.58);display:none;inset:0;justify-content:center;padding:.9rem;position:fixed;z-index:600}.daily-calendar-panel.is-open{display:flex}.daily-calendar-shell{border-radius:14px;max-height:90vh;max-width:560px;overflow:auto;width:100%}.daily-calendar-main,.daily-calendar-sidebar{padding:1rem;width:100%}.daily-calendar-sidebar{border-bottom:1px solid var(--border-light);border-right:0}.daily-calendar-day{font-size:.85rem;height:36px;width:36px}.media-player-inner{grid-template-columns:auto minmax(0,1fr) auto}.media-player-title{font-size:.8rem}.media-player-time{font-size:.74rem;min-width:auto}table{display:block;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch}.row{margin-left:0;margin-right:0}.row>[class*=col-]{float:none;max-width:100%;padding-left:0;padding-right:0;width:100%}}@media (max-width:640px){.content-container{padding:.75rem}.header-actions a[aria-label="Flux RSS"],.header-actions a[aria-label=Outils]{display:none}.toolbar-left,.toolbar-right,.view-toggle{width:100%}.view-toggle{justify-content:space-between}.view-toggle-btn{flex:1;width:auto}.bulk-btn{flex:1 1 100%}.paging{padding:.6rem}.daily-tab{font-size:.72rem;padding-inline:.8rem}.picwall-size-controls{justify-content:center;width:100%}.picwall-size-slider{max-width:180px;width:100%}}@media (max-width:480px){.sidebar{width:92vw}.header-main{padding:0 .65rem}.header-action-btn,.mobile-menu-btn{border-radius:.4rem;height:32px;width:32px}.link-tag{font-size:.7rem}}.key-value-data{text-align:left}.bookmarklet-actions,.third-party-links{display:flex;flex-direction:column;gap:.65rem}.bookmarklet-actions .btn,.third-party-links .btn{width:100%}.daily{padding-top:1rem}.daily-nav-unified{border-radius:14px;gap:.9rem;padding:.85rem}.daily-nav-center{width:100%}.daily-calendar-btn,.daily-date-pill,.daily-nav-btn{min-height:38px}.daily-calendar-panel{align-items:center;background:rgba(15,23,42,.58);display:none;inset:0;justify-content:center;padding:.9rem;position:fixed;z-index:600}.daily-calendar-panel.is-open{display:flex}.daily-calendar-shell{border-radius:14px;max-height:90vh;max-width:560px;overflow:auto;width:100%}.daily-calendar-main,.daily-calendar-sidebar{padding:1rem;width:100%}.daily-calendar-sidebar{border-bottom:1px solid var(--border-light);border-right:0}.daily-calendar-day{font-size:.85rem;height:36px;width:36px}.media-player-inner{grid-template-columns:auto minmax(0,1fr) auto}.media-player-title{font-size:.8rem}.media-player-time{font-size:.74rem;min-width:auto}table{display:block;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch}.normal-section-head,.pinned-section-head{align-items:center;display:none;font-size:.74rem;font-weight:700;grid-column:1/-1;letter-spacing:.06em;margin:0;padding:.55rem .9rem;text-transform:uppercase}.links-list.has-normal .normal-section-head,.links-list.has-pinned .pinned-section-head{background:var(--primary);border-radius:.7rem;color:#fff;display:flex;margin-bottom:.45rem}.links-list.has-normal .normal-section-head{margin-top:.65rem}.links-list:not(.has-normal) .compact-table-head,.links-list:not(.has-normal) .normal-section-head,.links-list:not(.has-pinned) .pinned-section-head{display:none!important}.view-compact .compact-table-head{align-items:center;background:var(--bg-body);border-bottom:1px solid var(--border);color:var(--text-muted);display:grid;font-size:.79rem;font-weight:700;gap:.85rem;grid-column:1/-1;grid-template-columns:minmax(0,2fr) minmax(0,1.35fr) minmax(120px,.75fr) auto;letter-spacing:.05em;padding:.8rem 1rem;text-transform:uppercase}.view-compact .link-outer{background:transparent;border:0;border-bottom:1px solid var(--border-light);border-radius:0;box-shadow:none;margin:0;padding:0}.view-compact .link-outer:last-child{border-bottom:0}.view-compact .link-outer:hover{background:var(--bg-card-hover);border-color:var(--border-light);box-shadow:none}.view-compact .link-actions{opacity:0;transition:opacity .15s ease}.view-compact .link-outer:hover .link-actions{opacity:1}.view-compact .link-description,.view-compact .link-readlater-badge,.view-compact .link-thumbnail{display:none!important}.view-compact .link-content{align-items:center;display:grid;gap:.85rem;grid-template-columns:minmax(0,2fr) minmax(0,1.35fr) minmax(120px,.75fr) auto;padding:.85rem 4.6rem .85rem 2.8rem}.view-compact .link-header{display:contents;margin:0}.view-compact .link-title{grid-column:1;grid-row:1;margin:0;overflow:hidden;padding-right:0;text-overflow:ellipsis;white-space:nowrap}.view-compact .link-url{grid-column:1;grid-row:2}.view-compact .link-meta{align-self:center;gap:.5rem;grid-column:3;grid-row:1/span 2;margin:0}.view-compact .link-date{font-size:.95rem}.view-compact .link-permalink{display:none}.view-compact .link-footer{border:0;display:contents;margin:0;padding:0}.view-compact .link-tag-list{align-self:start;flex-wrap:wrap;gap:.35rem;grid-column:1;grid-row:3;overflow:visible}.view-compact .link-tag,.view-compact .link-tag.is-tech-tag{display:inline-flex}.view-compact .link-actions{align-self:center;flex-wrap:nowrap;grid-column:4;grid-row:1/span 2;justify-content:flex-start;margin-left:0}.view-compact .link-actions .readitlater-toggle-btn,.view-compact .link-actions a,.view-compact .link-actions button{height:32px;width:32px}.view-compact .link-select-checkbox{border-radius:.45rem;height:28px;left:.65rem;right:auto;top:50%;transform:translateY(-50%);width:28px}.view-compact .link-visibility-badge{height:26px;left:auto;right:.65rem;top:50%;transform:translateY(-50%);width:26px}.view-compact .link-visibility-badge i{font-size:1rem}@media (max-width:768px){.view-compact .compact-table-head{display:none}.links-list.view-compact{border-radius:.7rem}.normal-section-head,.pinned-section-head{font-size:.7rem;padding:.5rem .75rem}.view-compact .link-content{gap:.55rem;grid-template-columns:minmax(0,1fr);padding:.8rem 4.6rem .8rem 2.65rem}.view-compact .link-actions,.view-compact .link-meta,.view-compact .link-tag-list,.view-compact .link-title,.view-compact .link-url{grid-column:1;grid-row:auto}.view-compact .link-meta{justify-content:flex-start}.view-compact .link-actions{flex-wrap:wrap;opacity:1;row-gap:.3rem;width:100%}.view-compact .link-select-checkbox,.view-compact .link-visibility-badge{top:.7rem;transform:none}.view-compact .link-visibility-badge{left:auto;right:.7rem}.view-compact .link-select-checkbox{left:.7rem;right:auto}}.search-overlay .search-modal-header{align-items:stretch;display:flex;flex-direction:column;gap:.65rem}.search-overlay .search-input-row{align-items:center;display:flex;gap:.6rem;padding:.1rem 0}.search-overlay .search-input-icon{color:#9ca3af;font-size:1.1rem;line-height:1}.search-overlay .search-submit-btn{align-items:center;background:#f3f4f6;border:1px solid #d1d5db;border-radius:.5rem;color:#374151;cursor:pointer;display:inline-flex;height:34px;justify-content:center;transition:background .15s ease,color .15s ease;width:34px}.search-overlay .search-submit-btn:hover{background:#e5e7eb;color:#111827}[data-theme=dark] .search-overlay .search-submit-btn{background:#334155;border-color:#475569;color:#cbd5e1}[data-theme=dark] .search-overlay .search-submit-btn:hover{background:#475569;color:#f1f5f9}.search-overlay .search-mode-bar{display:flex;gap:.5rem}.search-overlay .search-mode-btn{align-items:center;background:#e5e7eb;border:none;border-radius:9999px;color:#374151;cursor:pointer;display:inline-flex;font-family:inherit;font-size:.8125rem;font-weight:500;gap:.35rem;padding:.5rem .85rem;transition:all .15s ease}.search-overlay .search-mode-btn:hover{background:#d1d5db}.search-overlay .search-mode-btn.active{background:#3b82f6;color:#fff}[data-theme=dark] .search-overlay .search-mode-btn{background:#374151;color:#d1d5db}[data-theme=dark] .search-overlay .search-mode-btn:hover{background:#4b5563}[data-theme=dark] .search-overlay .search-mode-btn.active{background:#3b82f6;color:#fff}.search-overlay .search-mode-kbd{align-items:center;background:hsla(0,0%,100%,.65);border:1px solid rgba(0,0,0,.15);border-radius:4px;display:inline-flex;font-size:.65rem;justify-content:center;line-height:1;min-width:1.1rem;padding:.05rem .28rem}[data-theme=dark] .search-overlay .search-mode-kbd{background:rgba(15,23,42,.4);border-color:hsla(0,0%,100%,.18);color:#e2e8f0}@media (max-width:768px){.search-overlay .search-mode-bar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.search-overlay .search-mode-btn{justify-content:center;padding:.55rem .45rem;width:100%}.search-overlay{padding-bottom:5vh;padding-top:5vh}.search-modal{max-height:90vh;width:95%}.search-results{max-height:calc(90vh - 200px)}}:root,[data-theme=dark],[data-theme=light]{--tile-bg:var(--header-bg,var(--primary));--tile-bg-hover:color-mix(in srgb,var(--header-bg,var(--primary)) 80%,#000 20%);--tile-border:color-mix(in srgb,var(--header-bg,var(--primary)) 60%,#000 40%);--tile-text:var(--header-text,var(--on-primary,#fff));--tile-shadow:0 1px 2px rgba(0,0,0,.35);--tile-shadow-hover:0 10px 24px -4px color-mix(in srgb,var(--header-bg,var(--primary)) 55%,rgba(0,0,0,.5));--tile-accent:var(--header-bg,var(--primary))}body.view-archive,body.view-notes,body.view-todo{background-color:color-mix(in srgb,var(--bg-body) 82%,var(--primary) 18%)}.link-outer{background:var(--tile-bg);border-color:var(--tile-border);border-left:3px solid var(--tile-accent);box-shadow:var(--tile-shadow)}.link-outer,.link-outer .link-actions,.link-outer .link-actions a,.link-outer .link-actions button,.link-outer .link-description,.link-outer .link-meta,.link-outer .link-meta a,.link-outer .link-title,.link-outer .link-title a,.link-outer .link-url,.link-outer .link-url a,.view-list .link-outer,.view-list .link-outer a,.view-list .link-outer button{color:var(--tile-text)}.link-outer .link-tag,.link-outer .tag,.view-list .link-outer .link-tag{background:rgba(0,0,0,.25);border-color:rgba(0,0,0,.35);color:var(--tile-text)}.link-outer:hover{border-color:var(--primary);box-shadow:var(--tile-shadow-hover)}.links-list.view-compact,.view-list .link-outer{background:var(--tile-bg);border-color:var(--tile-border);border-left:3px solid var(--tile-accent);box-shadow:var(--tile-shadow)}.view-compact .link-outer{border-bottom:1px solid var(--tile-border);border-left:0}.view-compact .link-outer:hover{background:var(--tile-bg-hover)}.view-compact .compact-table-head{background:color-mix(in srgb,var(--tile-bg) 70%,var(--primary) 30%);border-bottom:1px solid var(--tile-border);color:var(--on-primary,var(--text-main))}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@media (prefers-contrast:more){:root{--text-main:#000;--text-secondary:#000;--text-muted:#000;--border:#000;--primary:#00e;--primary-hover:#00c}[data-theme=dark]{--text-main:#fff;--text-secondary:#fff;--text-muted:#fff;--border:#fff;--primary:#ff0;--primary-hover:#ff0}a{text-decoration:underline}.btn,.card,.form-control,.link-outer{border-width:2px}} \ No newline at end of file diff --git a/shaarli-pro/dist/themes.min.css b/shaarli-pro/dist/themes.min.css deleted file mode 100644 index 3092d67..0000000 --- a/shaarli-pro/dist/themes.min.css +++ /dev/null @@ -1 +0,0 @@ -:root{--font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--text-xs:0.75rem;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--radius-xs:4px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:28px;--radius-full:9999px;--shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--shadow-md:0 4px 6px -1px rgba(0,0,0,.1);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.1);--success:#10b981;--danger:#ef4444;--warning:#f59e0b;--info:#3b82f6}:root,:root[data-theme-id=DEFAULT]{--primary:#00d4aa;--primary-hover:#00b894;--primary-light:rgba(0,212,170,.15);--on-primary:#0a1628;--primary-container:#243447;--on-primary-container:#4eecc4;--secondary:#0ea5e9;--on-secondary:#0a1628;--secondary-container:#2a3f54;--on-secondary-container:#38bdf8;--tertiary:#4eecc4;--on-tertiary:#0a1628;--background:#0a1628;--on-background:#e2e8f0;--bg-body:#0a1628;--bg-sidebar:#0d1b2a;--bg-card:#0d1b2a;--bg-card-hover:#1b2838;--surface:#0d1b2a;--on-surface:#e2e8f0;--text-main:#e2e8f0;--text-secondary:#b0b8c4;--text-muted:#94a3b8;--surface-variant:#1b2838;--on-surface-variant:#94a3b8;--outline:#64748b;--outline-variant:#2a3f54;--border:#1b2838;--border-light:#0d1b2a;--error:#ef4444;--on-error:#fff;--error-container:#450a0a;--on-error-container:#fca5a5;--header-bg:#0d1b2a;--header-text:#e2e8f0;--tag-bg:#243447;--tag-text:#4eecc4;--tag-green-bg:#1b3d2a;--tag-green-text:#6ee7b7;--tag-red-bg:#3d1515;--tag-red-text:#fca5a5;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#fcd34d;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(0,212,170,.25);--selection-border:#00d4aa}:root[data-theme=light][data-theme-id=DEFAULT]{--primary:#006b5a;--primary-hover:#005247;--primary-light:rgba(0,107,90,.15);--on-primary:#fff;--primary-container:#b2f5e6;--on-primary-container:#00201a;--secondary:#0077b6;--on-secondary:#fff;--secondary-container:#d0e8ff;--on-secondary-container:#001e36;--tertiary:#00897b;--on-tertiary:#fff;--background:#f8fafa;--on-background:#1a1c1e;--bg-body:#f8fafa;--bg-sidebar:#fff;--bg-card:#fff;--bg-card-hover:#f9fafb;--surface:#fff;--on-surface:#1a1c1e;--text-main:#111827;--text-secondary:#6b7280;--text-muted:#9ca3af;--surface-variant:#e7f0ee;--on-surface-variant:#404944;--outline:#707974;--outline-variant:#c0c9c4;--border:#e5e7eb;--border-light:#f3f4f6;--error:#ba1a1a;--on-error:#fff;--error-container:#ffdad6;--on-error-container:#410002;--header-bg:#006b5a;--header-text:#fff;--tag-bg:#e0e7ff;--tag-text:#4338ca;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(0,107,90,.15);--selection-border:#006b5a}:root[data-theme-id=GITHUB]{--primary:#58a6ff;--primary-hover:#3b82f6;--primary-light:rgba(88,166,255,.15);--on-primary:#0d1117;--primary-container:#1f2937;--on-primary-container:#79c0ff;--secondary:#3fb950;--on-secondary:#0d1117;--secondary-container:#1c2d22;--on-secondary-container:#56d364;--tertiary:#d2a8ff;--on-tertiary:#0d1117;--background:#0d1117;--on-background:#c9d1d9;--bg-body:#0d1117;--bg-sidebar:#161b22;--bg-card:#161b22;--bg-card-hover:#21262d;--surface:#161b22;--on-surface:#c9d1d9;--text-main:#c9d1d9;--text-secondary:#8b949e;--text-muted:#6e7681;--surface-variant:#21262d;--on-surface-variant:#8b949e;--outline:#30363d;--outline-variant:#21262d;--border:#21262d;--border-light:#161b22;--error:#f85149;--on-error:#fff;--error-container:#490202;--on-error-container:#ffa198;--header-bg:#161b22;--header-text:#c9d1d9;--tag-bg:#1c2d22;--tag-text:#56d364;--tag-green-bg:#1c2d22;--tag-green-text:#56d364;--tag-red-bg:#490202;--tag-red-text:#ffa198;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#fcd34d;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(88,166,255,.25);--selection-border:#58a6ff}:root[data-theme=light][data-theme-id=GITHUB]{--primary:#0969da;--primary-hover:#0860ca;--primary-light:rgba(9,105,218,.15);--on-primary:#fff;--primary-container:#ddf4ff;--on-primary-container:#0a3069;--secondary:#1a7f37;--on-secondary:#fff;--secondary-container:#dafbe1;--on-secondary-container:#0e4f1f;--tertiary:#8250df;--on-tertiary:#fff;--background:#fff;--on-background:#1f2328;--bg-body:#fff;--bg-sidebar:#f6f8fa;--bg-card:#f6f8fa;--bg-card-hover:#eaeef2;--surface:#f6f8fa;--on-surface:#1f2328;--text-main:#1f2328;--text-secondary:#656d76;--text-muted:#8c959f;--surface-variant:#eaeef2;--on-surface-variant:#656d76;--outline:#d0d7de;--outline-variant:#e1e4e8;--border:#d0d7de;--border-light:#eaeef2;--error:#cf222e;--on-error:#fff;--error-container:#ffebe9;--on-error-container:#82071e;--header-bg:#0969da;--header-text:#fff;--tag-bg:#ddf4ff;--tag-text:#0969da;--tag-green-bg:#dafbe1;--tag-green-text:#1a7f37;--tag-red-bg:#ffebe9;--tag-red-text:#cf222e;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(9,105,218,.15);--selection-border:#0969da}:root[data-theme-id=LINEAR]{--primary:#5e6ad2;--primary-hover:#4f5ac0;--primary-light:rgba(94,106,210,.15);--on-primary:#fff;--primary-container:#2a2b3d;--on-primary-container:#8b8fe8;--secondary:#4ea7fc;--on-secondary:#12131a;--secondary-container:#1e2a3a;--on-secondary-container:#7dc4ff;--tertiary:#e8a861;--on-tertiary:#12131a;--background:#12131a;--on-background:#eeeff2;--bg-body:#12131a;--bg-sidebar:#1b1c24;--bg-card:#1b1c24;--bg-card-hover:#22232e;--surface:#1b1c24;--on-surface:#eeeff2;--text-main:#eeeff2;--text-secondary:#a0a5b0;--text-muted:#8a8f98;--surface-variant:#22232e;--on-surface-variant:#8a8f98;--outline:#3b3d4a;--outline-variant:#2a2b3d;--border:#22232e;--border-light:#1b1c24;--error:#eb5757;--on-error:#fff;--error-container:#3d1515;--on-error-container:#ff9b9b;--header-bg:#1b1c24;--header-text:#eeeff2;--tag-bg:#2a2b3d;--tag-text:#8b8fe8;--tag-green-bg:#1e2a1e;--tag-green-text:#7dc4ff;--tag-red-bg:#3d1515;--tag-red-text:#ff9b9b;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#fcd34d;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(94,106,210,.25);--selection-border:#5e6ad2}:root[data-theme-id=SPOTIFY]{--primary:#1db954;--primary-hover:#1aa34a;--primary-light:rgba(29,185,84,.15);--on-primary:#000;--primary-container:#1a3d27;--on-primary-container:#1ed760;--secondary:#1db954;--on-secondary:#000;--tertiary:#b3b3b3;--on-tertiary:#000;--background:#000;--on-background:#fff;--bg-body:#000;--bg-sidebar:#121212;--bg-card:#121212;--bg-card-hover:#1a1a1a;--surface:#121212;--on-surface:#fff;--text-main:#fff;--text-secondary:#b3b3b3;--text-muted:#999;--surface-variant:#1a1a1a;--on-surface-variant:#b3b3b3;--outline:#333;--outline-variant:#282828;--border:#1a1a1a;--border-light:#121212;--error:#e22134;--header-bg:#121212;--header-text:#fff;--tag-bg:#1a3d27;--tag-text:#1ed760;--tag-green-bg:#1a3d27;--tag-green-text:#1ed760;--tag-red-bg:#3d1515;--tag-red-text:#fca5a5;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#fcd34d;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(29,185,84,.25);--selection-border:#1db954}:root[data-theme-id=NOTION]{--primary:#529cca;--primary-hover:#48b;--primary-light:rgba(82,156,202,.15);--on-primary:#191919;--secondary:#e07a5f;--on-secondary:#191919;--tertiary:#81b29a;--on-tertiary:#191919;--background:#191919;--on-background:#e0e0e0;--bg-body:#191919;--bg-sidebar:#202020;--bg-card:#202020;--bg-card-hover:#2b2b2b;--surface:#202020;--on-surface:#e0e0e0;--text-main:#e0e0e0;--text-secondary:#b0b0b0;--text-muted:#9b9b9b;--surface-variant:#2b2b2b;--on-surface-variant:#9b9b9b;--outline:#3e3e3e;--outline-variant:#2b2b2b;--border:#2b2b2b;--border-light:#202020;--error:#ef4444;--header-bg:#202020;--header-text:#e0e0e0;--tag-bg:#2b2b2b;--tag-text:#81b29a;--tag-green-bg:#1b3d2a;--tag-green-text:#6ee7b7;--tag-red-bg:#3d1515;--tag-red-text:#fca5a5;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#fcd34d;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(82,156,202,.25);--selection-border:#529cca}:root[data-theme-id=DISCORD]{--primary:#5865f2;--primary-hover:#4752c4;--primary-light:rgba(88,101,242,.15);--on-primary:#fff;--secondary:#57f287;--on-secondary:#1e2124;--tertiary:#fee75c;--on-tertiary:#1e2124;--background:#313338;--on-background:#dbdee1;--bg-body:#313338;--bg-sidebar:#2b2d31;--bg-card:#2b2d31;--bg-card-hover:#383a40;--surface:#2b2d31;--on-surface:#dbdee1;--text-main:#dbdee1;--text-secondary:#949ba4;--text-muted:#b5bac1;--surface-variant:#383a40;--on-surface-variant:#b5bac1;--outline:#4e5058;--outline-variant:#383a40;--border:#383a40;--border-light:#2b2d31;--error:#ed4245;--header-bg:#2b2d31;--header-text:#dbdee1;--tag-bg:#383a40;--tag-text:#57f287;--tag-green-bg:#1b3d2a;--tag-green-text:#6ee7b7;--tag-red-bg:#3d1515;--tag-red-text:#fca5a5;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#fcd34d;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(88,101,242,.25);--selection-border:#5865f2}:root[data-theme-id=DRACULA]{--primary:#bd93f9;--primary-hover:#a878e8;--primary-light:rgba(189,147,249,.15);--on-primary:#21222c;--secondary:#50fa7b;--on-secondary:#21222c;--tertiary:#ff79c6;--on-tertiary:#21222c;--background:#282a36;--on-background:#f8f8f2;--bg-body:#282a36;--bg-sidebar:#21222c;--bg-card:#21222c;--bg-card-hover:#343746;--surface:#21222c;--on-surface:#f8f8f2;--text-main:#f8f8f2;--text-secondary:#d0d0d0;--text-muted:#bfbfbf;--surface-variant:#343746;--on-surface-variant:#bfbfbf;--outline:#6272a4;--outline-variant:#343746;--border:#343746;--border-light:#21222c;--error:#f55;--header-bg:#21222c;--header-text:#f8f8f2;--tag-bg:#343746;--tag-text:#bd93f9;--tag-green-bg:#1b3d2a;--tag-green-text:#50fa7b;--tag-red-bg:#3d1515;--tag-red-text:#ff79c6;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#f1fa8c;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(189,147,249,.25);--selection-border:#bd93f9}:root[data-theme-id=ONE_DARK_PRO]{--primary:#61afef;--primary-hover:#4a9fdf;--primary-light:rgba(97,175,239,.15);--on-primary:#1e2127;--secondary:#98c379;--on-secondary:#1e2127;--tertiary:#e5c07b;--on-tertiary:#1e2127;--background:#282c34;--on-background:#abb2bf;--bg-body:#282c34;--bg-sidebar:#21252b;--bg-card:#21252b;--bg-card-hover:#2c313a;--surface:#21252b;--on-surface:#abb2bf;--text-main:#abb2bf;--text-secondary:#9ba0a8;--text-muted:#8b929e;--surface-variant:#2c313a;--on-surface-variant:#8b929e;--outline:#3e4452;--outline-variant:#2c313a;--border:#2c313a;--border-light:#21252b;--error:#e06c75;--header-bg:#21252b;--header-text:#abb2bf;--tag-bg:#2c313a;--tag-text:#61afef;--tag-green-bg:#1b3d2a;--tag-green-text:#98c379;--tag-red-bg:#3d1515;--tag-red-text:#e06c75;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#e5c07b;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(97,175,239,.25);--selection-border:#61afef}:root[data-theme-id=TOKYO_NIGHT]{--primary:#7aa2f7;--primary-hover:#6a92e7;--primary-light:rgba(122,162,247,.15);--on-primary:#1a1b26;--secondary:#9ece6a;--on-secondary:#1a1b26;--tertiary:#bb9af7;--on-tertiary:#1a1b26;--background:#1a1b26;--on-background:#c0caf5;--bg-body:#1a1b26;--bg-sidebar:#16171f;--bg-card:#16171f;--bg-card-hover:#24283b;--surface:#16171f;--on-surface:#c0caf5;--text-main:#c0caf5;--text-secondary:#a9b1d6;--text-muted:#9aa5ce;--surface-variant:#24283b;--on-surface-variant:#9aa5ce;--outline:#3b4261;--outline-variant:#24283b;--border:#24283b;--border-light:#16171f;--error:#f7768e;--header-bg:#16171f;--header-text:#c0caf5;--tag-bg:#24283b;--tag-text:#7aa2f7;--tag-green-bg:#1b3d2a;--tag-green-text:#9ece6a;--tag-red-bg:#3d1515;--tag-red-text:#f7768e;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#e0af68;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(122,162,247,.25);--selection-border:#7aa2f7}:root[data-theme-id=NORD]{--primary:#88c0d0;--primary-hover:#7ab0c0;--primary-light:rgba(136,192,208,.15);--on-primary:#2e3440;--secondary:#a3be8c;--on-secondary:#2e3440;--tertiary:#ebcb8b;--on-tertiary:#2e3440;--background:#2e3440;--on-background:#eceff4;--bg-body:#2e3440;--bg-sidebar:#3b4252;--bg-card:#3b4252;--bg-card-hover:#434c5e;--surface:#3b4252;--on-surface:#d8dee9;--text-main:#eceff4;--text-secondary:#d8dee9;--text-muted:#d8dee9;--surface-variant:#434c5e;--on-surface-variant:#d8dee9;--outline:#4c566a;--outline-variant:#434c5e;--border:#434c5e;--border-light:#3b4252;--error:#bf616a;--header-bg:#3b4252;--header-text:#eceff4;--tag-bg:#434c5e;--tag-text:#88c0d0;--tag-green-bg:#1b3d2a;--tag-green-text:#a3be8c;--tag-red-bg:#3d1515;--tag-red-text:#bf616a;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#ebcb8b;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(136,192,208,.25);--selection-border:#88c0d0}:root[data-theme-id=NIGHT_OWL]{--primary:#7fdbca;--primary-hover:#6fcbba;--primary-light:rgba(127,219,202,.15);--on-primary:#011627;--secondary:#addb67;--on-secondary:#011627;--tertiary:#c792ea;--on-tertiary:#011627;--background:#011627;--on-background:#d6deeb;--bg-body:#011627;--bg-sidebar:#0b2942;--bg-card:#0b2942;--bg-card-hover:#112b45;--surface:#0b2942;--on-surface:#d6deeb;--text-main:#d6deeb;--text-secondary:#b8c5d6;--text-muted:#9fafc2;--surface-variant:#112b45;--on-surface-variant:#9fafc2;--outline:#1d3b58;--outline-variant:#112b45;--border:#112b45;--border-light:#0b2942;--error:#ef5350;--header-bg:#0b2942;--header-text:#d6deeb;--tag-bg:#112b45;--tag-text:#7fdbca;--tag-green-bg:#1b3d2a;--tag-green-text:#addb67;--tag-red-bg:#3d1515;--tag-red-text:#ef5350;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#fcd34d;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(127,219,202,.25);--selection-border:#7fdbca}:root[data-theme-id=ANTHRACITE]{--primary:#bb86fc;--primary-hover:#aa75eb;--primary-light:rgba(187,134,252,.15);--on-primary:#121212;--secondary:#03dac6;--on-secondary:#121212;--tertiary:#cf6679;--on-tertiary:#121212;--background:#121212;--on-background:#e1e1e1;--bg-body:#121212;--bg-sidebar:#1e1e1e;--bg-card:#1e1e1e;--bg-card-hover:#2c2c2c;--surface:#1e1e1e;--on-surface:#e1e1e1;--text-main:#e1e1e1;--text-secondary:silver;--text-muted:#aaa;--surface-variant:#2c2c2c;--on-surface-variant:#aaa;--outline:#3d3d3d;--outline-variant:#2c2c2c;--border:#2c2c2c;--border-light:#1e1e1e;--error:#cf6679;--header-bg:#1e1e1e;--header-text:#e1e1e1;--tag-bg:#2c2c2c;--tag-text:#bb86fc;--tag-green-bg:#1b3d2a;--tag-green-text:#03dac6;--tag-red-bg:#3d1515;--tag-red-text:#cf6679;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#fcd34d;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(187,134,252,.25);--selection-border:#bb86fc}:root[data-theme-id=CYBERPUNK]{--primary:#0ff;--primary-hover:#0dd;--primary-light:rgba(0,255,255,.15);--on-primary:#0a0a14;--secondary:#f0f;--on-secondary:#0a0a14;--tertiary:#ff0;--on-tertiary:#0a0a14;--background:#0a0a14;--on-background:#e0e0f0;--bg-body:#0a0a14;--bg-sidebar:#12121e;--bg-card:#12121e;--bg-card-hover:#1a1a2e;--surface:#12121e;--on-surface:#e0e0f0;--text-main:#e0e0f0;--text-secondary:#c0c0d0;--text-muted:#a0a0c0;--surface-variant:#1a1a2e;--on-surface-variant:#a0a0c0;--outline:#2a2a44;--outline-variant:#1a1a2e;--border:#1a1a2e;--border-light:#12121e;--error:#f05;--header-bg:#12121e;--header-text:#e0e0f0;--tag-bg:#1a1a2e;--tag-text:#0ff;--tag-green-bg:#1b3d2a;--tag-green-text:#0f0;--tag-red-bg:#3d1515;--tag-red-text:#f05;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#ff0;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(0,255,255,.25);--selection-border:#0ff}:root[data-theme-id=NAVY_ELEGANCE]{--primary:#d4af37;--primary-hover:#c49f27;--primary-light:rgba(212,175,55,.15);--on-primary:#0b1929;--secondary:silver;--on-secondary:#0b1929;--tertiary:#87ceeb;--on-tertiary:#0b1929;--background:#0b1929;--on-background:#e0e4ea;--bg-body:#0b1929;--bg-sidebar:#0f2035;--bg-card:#0f2035;--bg-card-hover:#162a42;--surface:#0f2035;--on-surface:#e0e4ea;--text-main:#e0e4ea;--text-secondary:#b8bfcc;--text-muted:#a0aabb;--surface-variant:#162a42;--on-surface-variant:#a0aabb;--outline:#1e3550;--outline-variant:#162a42;--border:#162a42;--border-light:#0f2035;--error:#ef4444;--header-bg:#0f2035;--header-text:#e0e4ea;--tag-bg:#162a42;--tag-text:#d4af37;--tag-green-bg:#1b3d2a;--tag-green-text:#87ceeb;--tag-red-bg:#3d1515;--tag-red-text:#fca5a5;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#d4af37;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(212,175,55,.25);--selection-border:#d4af37}:root[data-theme-id=EARTHY]{--primary:#81c784;--primary-hover:#71b774;--primary-light:rgba(129,199,132,.15);--on-primary:#1a1510;--secondary:#d4a574;--on-secondary:#1a1510;--tertiary:#a5d6a7;--on-tertiary:#1a1510;--background:#1a1510;--on-background:#e0d8cf;--bg-body:#1a1510;--bg-sidebar:#231e18;--bg-card:#231e18;--bg-card-hover:#2e2720;--surface:#231e18;--on-surface:#e0d8cf;--text-main:#e0d8cf;--text-secondary:#c8bfb6;--text-muted:#ada49a;--surface-variant:#2e2720;--on-surface-variant:#ada49a;--outline:#3d342b;--outline-variant:#2e2720;--border:#2e2720;--border-light:#231e18;--error:#ef4444;--header-bg:#231e18;--header-text:#e0d8cf;--tag-bg:#2e2720;--tag-text:#81c784;--tag-green-bg:#1b3d2a;--tag-green-text:#a5d6a7;--tag-red-bg:#3d1515;--tag-red-text:#fca5a5;--tag-yellow-bg:#3d2a15;--tag-yellow-text:#d4a574;--overlay-bg:rgba(0,0,0,.7);--selection-bg:rgba(129,199,132,.25);--selection-border:#81c784}:root[data-theme=light][data-theme-id=LINEAR]{--primary:#3b3d4a;--primary-hover:#2a2b3d;--primary-light:rgba(59,61,74,.15);--on-primary:#fff;--primary-container:#e8eaff;--on-primary-container:#1a1c2a;--secondary:#1e5a96;--on-secondary:#fff;--secondary-container:#d0e4ff;--on-secondary-container:#001d3a;--tertiary:#b8860b;--on-tertiary:#fff;--background:#fff;--on-background:#12131a;--bg-body:#fff;--bg-sidebar:#f5f5f7;--bg-card:#f5f5f7;--bg-card-hover:#eeeff2;--surface:#f5f5f7;--on-surface:#12131a;--text-main:#12131a;--text-secondary:#5a5c68;--text-muted:#8a8f98;--surface-variant:#eeeff2;--on-surface-variant:#5a5c68;--outline:#8a8f98;--outline-variant:#d0d1d9;--border:#d0d1d9;--border-light:#eeeff2;--error:#eb5757;--header-bg:#3b3d4a;--header-text:#fff;--tag-bg:#e8eaff;--tag-text:#3b3d4a;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(59,61,74,.15);--selection-border:#3b3d4a}:root[data-theme=light][data-theme-id=SPOTIFY]{--primary:#1db954;--primary-hover:#1aa34a;--primary-light:rgba(29,185,84,.15);--on-primary:#fff;--primary-container:#d1fae5;--on-primary-container:#0a2a15;--secondary:#1db954;--on-secondary:#fff;--tertiary:#b3b3b3;--on-tertiary:#fff;--background:#fff;--on-background:#191919;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#191919;--text-main:#191919;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#e22134;--header-bg:#1db954;--header-text:#fff;--tag-bg:#d1fae5;--tag-text:#1db954;--tag-green-bg:#d1fae5;--tag-green-text:#1db954;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(29,185,84,.15);--selection-border:#1db954}:root[data-theme=light][data-theme-id=NOTION]{--primary:#529cca;--primary-hover:#48b;--primary-light:rgba(82,156,202,.15);--on-primary:#fff;--primary-container:#d0e8ff;--on-primary-container:#001e36;--secondary:#e07a5f;--on-secondary:#fff;--tertiary:#81b29a;--on-tertiary:#fff;--background:#fff;--on-background:#191919;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#191919;--text-main:#191919;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#ef4444;--header-bg:#529cca;--header-text:#fff;--tag-bg:#d0e8ff;--tag-text:#529cca;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(82,156,202,.15);--selection-border:#529cca}:root[data-theme=light][data-theme-id=DISCORD]{--primary:#5865f2;--primary-hover:#4752c4;--primary-light:rgba(88,101,242,.15);--on-primary:#fff;--primary-container:#ddf4ff;--on-primary-container:#001d3a;--secondary:#57f287;--on-secondary:#fff;--tertiary:#fee75c;--on-tertiary:#1e2124;--background:#fff;--on-background:#1e2124;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#1e2124;--text-main:#1e2124;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#ed4245;--header-bg:#5865f2;--header-text:#fff;--tag-bg:#ddf4ff;--tag-text:#5865f2;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(88,101,242,.15);--selection-border:#5865f2}:root[data-theme=light][data-theme-id=DRACULA]{--primary:#bd93f9;--primary-hover:#a878e8;--primary-light:rgba(189,147,249,.15);--on-primary:#fff;--primary-container:#e8d5ff;--on-primary-container:#2a0a4a;--secondary:#50fa7b;--on-secondary:#fff;--tertiary:#ff79c6;--on-tertiary:#fff;--background:#fff;--on-background:#21222c;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#21222c;--text-main:#21222c;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#f55;--header-bg:#bd93f9;--header-text:#fff;--tag-bg:#e8d5ff;--tag-text:#bd93f9;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(189,147,249,.15);--selection-border:#bd93f9}:root[data-theme=light][data-theme-id=ONE_DARK_PRO]{--primary:#61afef;--primary-hover:#4a9fdf;--primary-light:rgba(97,175,239,.15);--on-primary:#fff;--primary-container:#d0e8ff;--on-primary-container:#001e36;--secondary:#98c379;--on-secondary:#fff;--tertiary:#e5c07b;--on-tertiary:#fff;--background:#fff;--on-background:#1e2127;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#1e2127;--text-main:#1e2127;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#e06c75;--header-bg:#61afef;--header-text:#fff;--tag-bg:#d0e8ff;--tag-text:#61afef;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(97,175,239,.15);--selection-border:#61afef}:root[data-theme=light][data-theme-id=TOKYO_NIGHT]{--primary:#7aa2f7;--primary-hover:#6a92e7;--primary-light:rgba(122,162,247,.15);--on-primary:#fff;--primary-container:#d0e8ff;--on-primary-container:#001e36;--secondary:#9ece6a;--on-secondary:#fff;--tertiary:#bb9af7;--on-tertiary:#fff;--background:#fff;--on-background:#1a1b26;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#1a1b26;--text-main:#1a1b26;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#f7768e;--header-bg:#7aa2f7;--header-text:#fff;--tag-bg:#d0e8ff;--tag-text:#7aa2f7;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(122,162,247,.15);--selection-border:#7aa2f7}:root[data-theme=light][data-theme-id=NORD]{--primary:#88c0d0;--primary-hover:#7ab0c0;--primary-light:rgba(136,192,208,.15);--on-primary:#fff;--primary-container:#d0e8ff;--on-primary-container:#001e36;--secondary:#a3be8c;--on-secondary:#fff;--tertiary:#ebcb8b;--on-tertiary:#fff;--background:#fff;--on-background:#2e3440;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#2e3440;--text-main:#2e3440;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#bf616a;--header-bg:#88c0d0;--header-text:#fff;--tag-bg:#d0e8ff;--tag-text:#88c0d0;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(136,192,208,.15);--selection-border:#88c0d0}:root[data-theme=light][data-theme-id=NIGHT_OWL]{--primary:#7fdbca;--primary-hover:#6fcbba;--primary-light:rgba(127,219,202,.15);--on-primary:#fff;--primary-container:#d0e8ff;--on-primary-container:#001e36;--secondary:#addb67;--on-secondary:#fff;--tertiary:#c792ea;--on-tertiary:#fff;--background:#fff;--on-background:#011627;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#011627;--text-main:#011627;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#ef5350;--header-bg:#7fdbca;--header-text:#fff;--tag-bg:#d0e8ff;--tag-text:#7fdbca;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(127,219,202,.15);--selection-border:#7fdbca}:root[data-theme=light][data-theme-id=ANTHRACITE]{--primary:#bb86fc;--primary-hover:#aa75eb;--primary-light:rgba(187,134,252,.15);--on-primary:#fff;--primary-container:#e8d5ff;--on-primary-container:#2a0a4a;--secondary:#03dac6;--on-secondary:#fff;--tertiary:#cf6679;--on-tertiary:#fff;--background:#fff;--on-background:#121212;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#121212;--text-main:#121212;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#cf6679;--header-bg:#bb86fc;--header-text:#fff;--tag-bg:#e8d5ff;--tag-text:#bb86fc;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(187,134,252,.15);--selection-border:#bb86fc}:root[data-theme=light][data-theme-id=CYBERPUNK]{--primary:#0ff;--primary-hover:#0dd;--primary-light:rgba(0,255,255,.15);--on-primary:#0a0a14;--primary-container:#d0f0ff;--on-primary-container:#001a1a;--secondary:#f0f;--on-secondary:#fff;--tertiary:#ff0;--on-tertiary:#0a0a14;--background:#fff;--on-background:#0a0a14;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#0a0a14;--text-main:#0a0a14;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#f05;--header-bg:#0ff;--header-text:#0a0a14;--tag-bg:#d0f0ff;--tag-text:#0ff;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(0,255,255,.15);--selection-border:#0ff}:root[data-theme=light][data-theme-id=NAVY_ELEGANCE]{--primary:#d4af37;--primary-hover:#c49f27;--primary-light:rgba(212,175,55,.15);--on-primary:#0b1929;--primary-container:#fff8e1;--on-primary-container:#3d2a15;--secondary:silver;--on-secondary:#0b1929;--tertiary:#87ceeb;--on-tertiary:#0b1929;--background:#fff;--on-background:#0b1929;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#0b1929;--text-main:#0b1929;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#ef4444;--header-bg:#d4af37;--header-text:#0b1929;--tag-bg:#fff8e1;--tag-text:#d4af37;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(212,175,55,.15);--selection-border:#d4af37}:root[data-theme=light][data-theme-id=EARTHY]{--primary:#81c784;--primary-hover:#71b774;--primary-light:rgba(129,199,132,.15);--on-primary:#fff;--primary-container:#d1fae5;--on-primary-container:#0a2a15;--secondary:#d4a574;--on-secondary:#fff;--tertiary:#a5d6a7;--on-tertiary:#fff;--background:#fff;--on-background:#1a1510;--bg-body:#fff;--bg-sidebar:#f5f5f5;--bg-card:#f5f5f5;--bg-card-hover:#eee;--surface:#f5f5f5;--on-surface:#1a1510;--text-main:#1a1510;--text-secondary:#666;--text-muted:#999;--surface-variant:#eee;--on-surface-variant:#999;--outline:#ccc;--outline-variant:#ddd;--border:#ddd;--border-light:#eee;--error:#ef4444;--header-bg:#81c784;--header-text:#fff;--tag-bg:#d1fae5;--tag-text:#81c784;--tag-green-bg:#d1fae5;--tag-green-text:#065f46;--tag-red-bg:#fee2e2;--tag-red-text:#991b1b;--tag-yellow-bg:#fef3c7;--tag-yellow-text:#92400e;--overlay-bg:rgba(0,0,0,.5);--selection-bg:rgba(129,199,132,.15);--selection-border:#81c784} \ No newline at end of file diff --git a/shaarli-pro/js/custom_views.js b/shaarli-pro/js/custom_views.js index 5c36ddd..a394adb 100644 --- a/shaarli-pro/js/custom_views.js +++ b/shaarli-pro/js/custom_views.js @@ -3300,9 +3300,6 @@ function initNoteView(linkList, container) { const topBar = document.createElement("div"); topBar.className = "notes-top-bar"; - const topBarInner = document.createElement("div"); - topBarInner.className = "notes-top-bar-inner"; - // Custom Input "Take a note..." const inputContainer = document.createElement("div"); inputContainer.className = "note-input-container"; @@ -3663,8 +3660,7 @@ function initNoteView(linkList, container) { }; renderNoteInputCollapsed(); - topBarInner.appendChild(inputContainer); - topBar.appendChild(topBarInner); + topBar.appendChild(inputContainer); // View Toggle and other tools const tools = document.createElement("div");