{"id":10,"date":"2026-04-29T22:28:05","date_gmt":"2026-04-29T22:28:05","guid":{"rendered":"https:\/\/blue-koala-820317.hostingersite.com\/?page_id=10"},"modified":"2026-04-29T22:40:58","modified_gmt":"2026-04-29T22:40:58","slug":"master","status":"publish","type":"page","link":"https:\/\/alcendia.site\/login\/master\/","title":{"rendered":"master"},"content":{"rendered":"<style>.maple-master-wrap{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);background:linear-gradient(180deg,#f6f7fb 0%,#edf1f8 100%);min-height:100vh;padding:0;overflow:hidden;color:#334066}.maple-master-shell{display:flex;min-height:100vh;position:relative}.maple-master-sidebar-toggle{position:fixed;top:18px;left:14px;z-index:40;border:none;border-radius:999px;background:var(--mm-accent);color:#fff;display:flex;align-items:center;gap:8px;padding:12px 18px;box-shadow:0 16px 36px var(--mm-accent-shadow);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.maple-master-sidebar-toggle:hover{transform:translateY(-1px);box-shadow:0 20px 40px var(--mm-accent-shadow)}.maple-master-sidebar{width:310px;background:linear-gradient(180deg,#eef2fa 0%,#e8edf7 100%);border-right:1px solid rgba(90,104,150,.10);transition:transform .25s ease,margin .25s ease}.maple-master-sidebar-inner{padding:88px 18px 28px}.maple-master-shell.sidebar-collapsed .maple-master-sidebar{transform:translateX(-100%);margin-right:-310px}.maple-master-profile-head{display:flex;align-items:center;gap:12px;padding:0 4px 14px}.maple-master-profile-head h2{margin:0;font-size:21px;letter-spacing:-.03em;color:#39476f}.maple-master-back{width:28px;height:28px;border:none;background:transparent;color:#8c96b0;cursor:pointer}.maple-master-divider{height:1px;background:rgba(90,104,150,.10);margin:0 -18px 20px}.maple-master-section-title{font-size:12px;font-weight:900;letter-spacing:.04em;color:#3f4d73;margin:18px 8px 12px;text-transform:uppercase}.maple-master-nav,.maple-master-section-profile{display:flex;flex-direction:column;gap:10px}.maple-master-nav-item{text-decoration:none;display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:18px;color:#4a5678;transition:background .18s ease,transform .18s ease,box-shadow .18s ease}.maple-master-nav-item:hover{background:rgba(255,255,255,.62);transform:translateX(1px)}.maple-master-nav-item.is-active{background:#ffffff;box-shadow:0 14px 28px rgba(79,93,138,.10)}.maple-master-nav-icon-wrap{width:36px;height:36px;border-radius:999px;background:#d7dced;display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px}.maple-master-nav-icon{font-size:16px;width:16px;height:16px;color:#677394}.maple-master-nav-label{flex:1;font-size:14px;font-weight:700}.maple-master-nav-arrow{color:#98a2b3}.maple-master-main{flex:1;min-width:0;padding:22px}.maple-master-main-card{min-height:calc(100vh - 44px);background:linear-gradient(180deg,#f6f7fb 0%,#f1f4fa 100%);border:1px solid rgba(168,178,206,.18);border-radius:28px;overflow:hidden;box-shadow:0 28px 60px rgba(76,88,120,.08)}.maple-master-main-topbar{height:72px;border-bottom:1px solid rgba(168,178,206,.16);display:flex;align-items:center;justify-content:space-between;padding:0 26px;color:#324166;font-weight:900;background:linear-gradient(90deg,rgba(255,255,255,.7),rgba(237,241,249,.65))}.maple-master-main-topbar-title{font-size:16px;letter-spacing:.01em}.maple-master-main-topbar-user{font-size:13px;color:#7f8ba8}.maple-master-main-content{padding:22px 26px 30px;animation:mapleFadeIn .24s ease}.maple-master-placeholder{max-width:340px;background:#fff;border:1px solid #e6e9f2;border-radius:28px;padding:24px 24px 26px;box-shadow:0 18px 40px rgba(15,23,42,.06)}.maple-master-placeholder-badge{display:inline-flex;padding:7px 10px;border-radius:999px;background:var(--mm-accent-soft);color:var(--mm-accent-text);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.maple-master-placeholder h1{font-size:56px;line-height:.95;letter-spacing:-.06em;margin:14px 0 12px;color:#273458}.maple-master-placeholder p{color:#71809a;line-height:1.65;margin:0}.maple-loading,.maple-error,.maple-toast{padding:14px 16px;border-radius:16px;margin-bottom:14px}.maple-loading{background:var(--mm-accent-soft);color:var(--mm-accent)}.maple-error{background:#fcecec;color:#a54040;border:1px solid #efcaca}.maple-toast{position:fixed;right:18px;bottom:20px;z-index:70;background:var(--mm-accent);color:#fff;box-shadow:0 18px 34px var(--mm-accent-shadow);opacity:0;transform:translateY(12px);pointer-events:none;transition:.22s}.maple-toast.is-visible{opacity:1;transform:translateY(0)}@keyframes mapleFadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:900px){.maple-master-main{padding:12px}.maple-master-sidebar{position:fixed;top:0;left:0;bottom:0;z-index:35;box-shadow:0 24px 48px rgba(15,23,42,.18)}.maple-master-shell.sidebar-collapsed .maple-master-sidebar{transform:translateX(-100%);margin-right:0}.maple-master-main-content{padding:16px}.maple-master-main-card{min-height:calc(100vh - 24px);border-radius:22px}}\n#mapleDailyRoot{font-family:Inter,system-ui,-apple-system,sans-serif;color:#111827}.maple-daily-shell{width:100%}.maple-daily-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:14px}.maple-daily-title{margin:0;font-size:54px;line-height:.96;letter-spacing:-.06em;color:#0f172a}.maple-daily-actions{display:flex;gap:10px;flex-wrap:wrap}.maple-pill-btn{border:none;background:var(--mm-pill);color:#fff;border-radius:999px;padding:14px 20px;font-weight:800;cursor:pointer;box-shadow:0 12px 26px var(--mm-pill-shadow)}.maple-ghost-btn{border:1px solid #dde4f0;background:#fff;color:#586680;border-radius:16px;padding:12px 16px;font-weight:800;cursor:pointer}.maple-daily-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.maple-metric{background:#fff;border:1px solid #e7ebf3;border-radius:20px;padding:14px 16px;box-shadow:0 14px 30px rgba(15,23,42,.05)}.maple-metric small{display:block;text-transform:uppercase;letter-spacing:.16em;font-size:10px;color:#94a0bc;font-weight:800;margin-bottom:8px}.maple-metric strong{font-size:24px;letter-spacing:-.04em;color:#101826}.maple-metric span{display:block;margin-top:8px;color:#7f8aa7;font-size:13px}.maple-daily-table-card{background:linear-gradient(180deg,#eceff6 0%,#e8ebf3 100%);border:1px solid #e3e8f2;border-radius:28px;box-shadow:0 18px 40px rgba(60,72,100,.08);overflow:hidden}.maple-daily-table-wrap{padding:14px;overflow:auto}#mapleDailyRoot table{border-collapse:separate;border-spacing:8px 10px;width:max-content;min-width:100%}#mapleDailyRoot thead th,#mapleDailyRoot tbody td{border:none;background:#f8f9fc;border-radius:14px;background-clip:padding-box}#mapleDailyRoot thead th{min-width:56px;padding:10px 6px;text-align:center;color:#7e89aa;font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:800;position:sticky;top:0;z-index:3}.maple-daily-sticky-head{min-width:300px!important;background:linear-gradient(135deg,var(--mm-grad-1),var(--mm-grad-2))!important;color:#fff!important;font-size:18px;left:0;z-index:7!important;box-shadow:18px 0 26px rgba(232,235,243,.98)}.maple-day-name{display:block;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#7f8aaa;font-weight:800;margin-bottom:4px}.maple-day-number{display:block;font-size:22px;font-weight:800;letter-spacing:-.04em;color:#5c6889;line-height:1;margin-bottom:6px}.maple-percent-box{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:26px;padding:0 6px;border-radius:10px;font-size:12px;font-weight:800;background:#eef2fb;color:#8290b4}.maple-p-low{background:#f7edef;color:#d88484}.maple-p-midlow{background:#fbf3e5;color:#d39a4d}.maple-p-mid{background:#f7f4df;color:#b59c3c}.maple-p-high{background:#e9f1ff;color:#6284e8}.maple-habit-name{position:sticky;left:0;z-index:6;min-width:300px;max-width:300px;background:transparent!important;padding:0;box-shadow:18px 0 26px rgba(232,235,243,.98)}.maple-habit-name-inner{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 14px;min-height:56px;border-radius:14px;background:#f7f7fb;border:1px solid #eef1f7}.maple-habit-handle{cursor:grab;color:#d1d7e7}.maple-habit-title{font-size:14px;font-weight:800;color:#677394;line-height:1.35;letter-spacing:.03em;text-transform:uppercase;word-break:break-word;flex:1}.maple-habit-delete{width:28px;height:28px;border-radius:10px;border:1px solid #eceff5;background:#fafbfd;color:#e38d8d;cursor:pointer}.maple-check-cell{display:flex;align-items:center;justify-content:center;min-height:46px}#mapleDailyRoot input[type=checkbox]{appearance:none;-webkit-appearance:none;position:relative;width:26px;height:26px;border-radius:9px;border:2px solid #d8dfef;background:#fff;cursor:pointer;transition:.16s}#mapleDailyRoot input[type=checkbox]:checked{background:linear-gradient(180deg,#95aaf6,#88a0f0);border-color:#95aaf6;box-shadow:0 8px 18px rgba(116,143,236,.18)}#mapleDailyRoot input[type=checkbox]:checked::after{content:\"\";position:absolute;left:8px;top:3px;width:6px;height:11px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.maple-daily-bottom{padding:0 14px 14px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.maple-footnote{font-size:13px;color:#909ab8}.maple-add-habit{border:1px solid #dde4f0;background:#fff;color:#5e6d92;border-radius:16px;padding:12px 18px;font-weight:800;cursor:pointer}@media(max-width:1100px){.maple-daily-overview{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.maple-daily-overview{grid-template-columns:1fr}.maple-daily-header{flex-direction:column}.maple-daily-title{font-size:40px}.maple-daily-sticky-head,.maple-habit-name{min-width:240px!important;max-width:240px}}\n#mapleWeeklyRoot{font-family:Inter,system-ui,-apple-system,sans-serif;color:#111827}.maple-weekly-shell{width:100%}.maple-weekly-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.maple-weekly-title{margin:0;font-size:54px;line-height:.96;letter-spacing:-.06em;color:#0f172a}.maple-weekly-toolbar{display:flex;gap:10px;flex-wrap:wrap}.maple-weekly-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.maple-week-day{background:linear-gradient(180deg,#e9eef8 0%,#e3e9f6 100%);border-radius:20px;padding:16px;box-shadow:0 18px 36px rgba(15,23,42,.10)}.maple-week-day-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.maple-week-day-title{margin:0;color:#354264;font-size:20px}.maple-fix-btn{border:none;border-radius:999px;padding:8px 12px;background:var(--mm-accent);color:#fff;font-size:12px;font-weight:800;cursor:pointer}.maple-week-task-list{display:flex;flex-direction:column;gap:8px;min-height:36px}.maple-week-task{display:flex;align-items:flex-start;gap:10px;background:#f5f6fb;color:#1f2937;border-radius:12px;padding:10px 12px;position:relative}.maple-week-task.pinned{border-left:4px solid #00c853}.maple-week-task.is-completed{background:#eef7f0;border:1px solid #cce9d3}.maple-week-task.is-completed .maple-week-task-label{text-decoration:line-through;opacity:.72}.maple-week-task-main{display:flex;gap:8px;flex:1;min-width:0;padding-right:132px}.maple-week-task-label{flex:1;min-width:0;word-break:break-word}.maple-week-task-actions{position:absolute;right:10px;top:10px;display:flex;gap:8px;opacity:0;transition:.18s}.maple-week-task:hover .maple-week-task-actions{opacity:1}.maple-week-link-btn{border:none;background:none;padding:0;color:var(--mm-accent);font-weight:800;font-size:12px;cursor:pointer}.maple-week-link-btn.repeat{color:#7b88b3}.maple-week-task input[type=checkbox]{width:18px;height:18px;accent-color:#7b88b3}.maple-week-add{margin-top:10px;display:flex;gap:6px}.maple-week-add input{flex:1;padding:10px 12px;border-radius:10px;border:none}.maple-week-add button{border:none;border-radius:10px;background:var(--mm-accent);color:#fff;padding:0 14px;font-weight:800;cursor:pointer}.maple-week-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.maple-summary-card{background:#fff;border:1px solid #e7ebf3;border-radius:18px;padding:14px 16px;box-shadow:0 14px 30px rgba(15,23,42,.05)}.maple-summary-card small{display:block;text-transform:uppercase;letter-spacing:.16em;font-size:10px;color:#94a0bc;font-weight:800;margin-bottom:8px}.maple-summary-card strong{font-size:24px;letter-spacing:-.04em}.maple-summary-card span{display:block;margin-top:8px;color:#7f8aa7;font-size:13px}@media(max-width:1000px){.maple-weekly-grid,.maple-week-summary{grid-template-columns:1fr}}@media(max-width:760px){.maple-weekly-title{font-size:40px}.maple-weekly-header{flex-direction:column}.maple-week-task-actions{opacity:1;position:static;margin-left:auto}.maple-week-task-main{padding-right:0}}.maple-week-confetti{position:fixed;width:10px;height:16px;border-radius:3px;pointer-events:none;z-index:9999;animation:mapleWeekConfettiFall linear forwards}@keyframes mapleWeekConfettiFall{0%{opacity:1;transform:translate3d(0,0,0) rotate(0deg)}100%{opacity:0;transform:translate3d(calc((var(--drift,0) * 1px)),110vh,0) rotate(520deg)}}\n#mapleMonthlyRoot{max-width:100%}\n.maple-monthly{max-width:1280px;margin:0 auto;font-family:Inter,system-ui,-apple-system,sans-serif;color:#1f2b45}\n.maple-monthly .main-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px}\n.maple-monthly .main-title{margin:0;font-size:56px;line-height:.96;letter-spacing:.04em;color:#606a95;font-weight:900;text-transform:uppercase}\n.maple-monthly .main-actions{display:flex;gap:12px;flex-wrap:wrap}\n.maple-monthly .ghost-btn,.maple-monthly .blue-btn,.maple-monthly .save,.maple-monthly .cancel,.maple-monthly .menu-btn,.maple-monthly .danger-btn{border:none;border-radius:16px;padding:12px 18px;font-weight:800;cursor:pointer}\n.maple-monthly .ghost-btn{background:#eef2fb;color:#586680}\n.maple-monthly .danger-btn{width:48px;min-width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;padding:0;border-radius:16px;background:#ffffff;color:#6b7280;border:1px solid #e5e7eb;font-size:18px;line-height:1;box-shadow:0 8px 18px rgba(99,115,145,.08)}\n.maple-monthly .blue-btn,.maple-monthly .save{background:#5278e5;color:#fff;box-shadow:0 12px 24px rgba(82,120,229,.18)}\n.maple-monthly .cancel{background:#edf2f8;color:#44516a}\n.maple-monthly .menu-wrap{position:relative}\n.maple-monthly .menu-btn{display:inline-flex;align-items:center;justify-content:space-between;gap:12px;min-width:230px;background:linear-gradient(180deg,#f6f8fd 0%,#eef2fb 100%);color:#4f5f83;border:1px solid #e2e8f5;box-shadow:0 10px 22px rgba(77,96,140,.08);padding:12px 18px 12px 20px;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}\n.maple-monthly .menu-btn:hover{transform:translateY(-1px);box-shadow:0 14px 28px rgba(77,96,140,.12);background:linear-gradient(180deg,#ffffff 0%,#eef3fd 100%)}\n.maple-monthly .menu-btn .menu-caret{font-size:13px;line-height:1;color:#7b88a9}\n.maple-monthly .menu-panel{position:absolute;top:calc(100% + 10px);left:0;z-index:25;min-width:260px;padding:10px;background:#fff;border:1px solid #e4eaf5;border-radius:18px;box-shadow:0 22px 48px rgba(49,66,105,.16)}\n.maple-monthly .menu-panel.hidden{display:none}\n.maple-monthly .menu-item{display:flex;width:100%;align-items:center;justify-content:space-between;border:none;background:transparent;padding:11px 12px;border-radius:12px;color:#556482;font-weight:700;text-align:left;cursor:pointer;transition:background .16s ease,color .16s ease}\n.maple-monthly .menu-item:hover{background:#f3f6fc;color:#32486f}\n.maple-monthly .menu-item.is-active{background:#eef3ff;color:#4568cc}\n.maple-monthly .categories{display:flex;flex-direction:column;gap:22px}\n.maple-monthly .category-card{background:#eef0f7;border-radius:34px;padding:26px 34px;box-shadow:0 16px 34px rgba(51,72,112,.05)}\n.maple-monthly .category-head{display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer}\n.maple-monthly .category-title{display:flex;align-items:center;gap:18px;flex-wrap:wrap}\n.maple-monthly .category-title h2{margin:0;font-size:26px;color:#5f6891;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:opacity .16s ease}.maple-monthly .category-title h2:hover{opacity:.82}\n.maple-monthly .category-pill{display:inline-flex;align-items:center;justify-content:center;min-width:210px;padding:14px 22px;border-radius:18px;background:#5776e3;color:#fff;font-size:18px;font-weight:500;text-transform:uppercase}\n.maple-monthly .category-icons{display:flex;align-items:center;gap:16px;font-size:34px;color:#111}\n.maple-monthly .category-panel{padding-top:18px}\n.maple-monthly .goals{display:flex;flex-direction:column;gap:12px;padding:10px 10px 0 12px}\n.maple-monthly .goal-row{display:grid;grid-template-columns:230px minmax(0,1fr) auto;gap:18px;align-items:center;padding:12px 10px;border-radius:18px;background:rgba(255,255,255,.55)}\n.maple-monthly .goal-date{font-weight:800;color:#6a7398;text-transform:uppercase;font-size:14px}\n.maple-monthly .goal-title{font-size:15px;font-weight:800;color:#58627f;letter-spacing:.02em;text-transform:uppercase}\n.maple-monthly .goal-actions{display:flex;gap:8px}\n.maple-monthly .goal-actions button{width:38px;height:38px;border-radius:999px;border:none;background:#fff;color:#4c5a7b;cursor:pointer;box-shadow:0 8px 18px rgba(42,57,88,.08)}\n.maple-monthly .goal-actions button.complete{background:#e5fff0;color:#1d9151}\n.maple-monthly .empty{padding:10px 4px 4px;color:#77809d}\n.maple-monthly .hidden{display:none !important}\n.maple-monthly .modal{position:fixed;inset:0;background:rgba(17,24,39,.32);display:flex;justify-content:center;align-items:center;z-index:99999;padding:20px}\n.maple-monthly .modal-box{background:#fff;padding:24px;border-radius:20px;width:min(92vw,420px);box-shadow:0 22px 50px rgba(17,24,39,.18)}\n.maple-monthly .modal-box h3{margin:0 0 14px;color:#24314d}\n.maple-monthly .modal-box input,.maple-monthly .modal-box select{width:100%;margin-bottom:12px;padding:12px 14px;border-radius:14px;border:1px solid #dde5f2;box-sizing:border-box;background:#fff}\n.maple-monthly .modal-inline{display:flex;gap:10px;align-items:center}\n.maple-monthly .modal-inline input{margin-bottom:0;flex:1}\n.maple-monthly .modal-actions{display:flex;justify-content:space-between;gap:10px;margin-top:8px}\n.maple-monthly #mapleMonthlyConfetti{position:fixed;inset:0;pointer-events:none;z-index:100000}\n@media (max-width:980px){.maple-monthly .main-head{flex-direction:column;align-items:flex-start}.maple-monthly .main-title{font-size:40px}.maple-monthly .category-card{padding:22px 20px}.maple-monthly .goal-row{grid-template-columns:1fr;gap:8px}.maple-monthly .category-pill{min-width:unset;width:100%}}\n.maple-monthly .main-title{display:none!important}\n.maple-monthly .category-pill{display:none!important}\n.maple-monthly .category-icons span:last-child{display:none!important}\n.maple-monthly .category-title h2{cursor:text}\n\n#mapleIdeasRoot{position:relative;width:100%;max-width:100%;margin:0;padding:6px 0 0;font-family:Inter,system-ui,-apple-system,sans-serif;color:#324166;box-sizing:border-box;overflow:hidden}.maple-ideas-shell{width:100%;max-width:100%;margin:0}.maple-ideas-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.maple-ideas-title{margin:0;font-size:clamp(48px,4vw,64px);line-height:.96;letter-spacing:-.06em;color:#273458}.maple-ideas-sub{margin:10px 0 0;color:#7f8ba8;max-width:720px;line-height:1.65;font-size:clamp(17px,1.4vw,19px)}.maple-ideas-board{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;align-items:start}.maple-ideas-panel{background:linear-gradient(180deg,#ffffff 0%,#f7f8fc 100%);border:1px solid #e7ebf3;border-radius:26px;box-shadow:0 18px 38px rgba(64,78,112,.08);padding:20px;min-width:0}.maple-ideas-input{width:100%;min-height:180px;background:linear-gradient(180deg,#f9fbff 0%,#f2f5fb 100%);border:1px solid #dfe6f3;border-radius:18px;padding:18px 18px 20px;font-size:17px;color:#334066;resize:vertical;box-sizing:border-box;outline:none;transition:border-color .18s ease,box-shadow .18s ease}.maple-ideas-input:focus{border-color:#aab7ee;box-shadow:0 0 0 4px rgba(76,99,219,.12)}.maple-ideas-input::placeholder{color:#99a5c0}.maple-ideas-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px}.maple-ideas-primary,.maple-ideas-secondary{border:none;border-radius:16px;padding:13px 18px;font-weight:800;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease}.maple-ideas-primary{background:var(--mm-accent);color:#fff;box-shadow:0 16px 30px rgba(76,99,219,.22)}.maple-ideas-primary:hover{transform:translateY(-1px)}.maple-ideas-secondary{background:#eef2fb;color:#586680}.maple-ideas-list{display:flex;flex-direction:column;gap:16px;margin-top:14px}.maple-idea-card{background:linear-gradient(180deg,#ffffff 0%,#f7f8fc 100%);border:1px solid #e7ebf3;border-radius:22px;padding:20px;box-shadow:0 14px 28px rgba(64,78,112,.06)}.maple-idea-meta{font-size:12px;color:#8d98b2;margin-bottom:10px;letter-spacing:.04em}.maple-idea-text{white-space:pre-wrap;font-size:16px;line-height:1.8;color:#384667}.maple-idea-buttons{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.maple-idea-buttons button{padding:9px 14px;border-radius:12px;border:1px solid #dbe1ef;background:#f9fbff;color:#596685;cursor:pointer;font-weight:700}.maple-idea-buttons button:hover{background:#eef2fb}.maple-ideas-edit{width:100%;min-height:140px;background:#fff;border:1px solid #dce3f1;border-radius:16px;padding:14px;font-size:16px;color:#334066;resize:vertical;box-sizing:border-box}.maple-ideas-empty{padding:26px;border-radius:18px;background:#f8faff;border:1px dashed #d7deee;color:#7784a6;text-align:center}@media(max-width:1100px){.maple-ideas-board{grid-template-columns:1fr}}@media(max-width:960px){#mapleIdeasRoot{padding:0}.maple-ideas-board{grid-template-columns:1fr}.maple-ideas-title{font-size:40px}.maple-ideas-top{flex-direction:column}}\n#mapleLinksRoot{position:relative;width:100%;max-width:100%;padding:6px 0 0;font-family:Inter,system-ui,-apple-system,sans-serif;color:#334066}#mapleLinksRoot *{box-sizing:border-box}.maple-links-shell{width:100%;max-width:100%}.maple-links-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:18px}.maple-links-title{margin:0;font-size:clamp(48px,4vw,64px);line-height:.96;letter-spacing:-.06em;color:#273458}.maple-links-sub{margin:10px 0 0;color:#7f8ba8;max-width:760px;line-height:1.65;font-size:clamp(17px,1.4vw,19px)}.maple-links-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.maple-links-toolbar-left,.maple-links-toolbar-right{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.maple-links-btn,.maple-links-ghost{border:none;border-radius:16px;padding:13px 18px;font-weight:800;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.maple-links-btn{background:var(--mm-accent);color:#fff;box-shadow:0 16px 30px rgba(76,99,219,.22)}.maple-links-btn:hover,.maple-links-ghost:hover{transform:translateY(-1px)}.maple-links-ghost{background:#eef2fb;color:#586680}.maple-links-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}.maple-links-card{position:relative;background:linear-gradient(180deg,var(--card-top,#8091f4) 0%,var(--card-bottom,#7284e8) 100%);color:#fff;border-radius:26px;padding:18px 18px 16px;box-shadow:0 22px 42px rgba(76,99,219,.18);transition:transform .18s ease,box-shadow .18s ease,filter .18s ease;overflow:visible}.maple-links-card:hover{transform:translateY(-2px);box-shadow:0 28px 48px rgba(76,99,219,.2)}.maple-links-card.compact .maple-links-list,.maple-links-card.compact .maple-links-add{display:none}.maple-links-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.maple-links-card-title{margin:0;font-size:22px;line-height:1.1;letter-spacing:-.03em;flex:1;min-width:0;word-break:break-word}.maple-links-card-tools{display:flex;gap:8px;flex-wrap:wrap}.maple-links-tool{width:34px;height:34px;border:none;border-radius:12px;background:rgba(255,255,255,.18);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;backdrop-filter:blur(8px)}.maple-links-tool:hover{background:rgba(255,255,255,.24)}.maple-links-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}.maple-links-link{display:flex;align-items:center;gap:8px}.maple-links-link a{flex:1;min-width:0;text-decoration:none;color:#fff;background:rgba(255,255,255,.16);padding:11px 13px;border-radius:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid rgba(255,255,255,.12)}.maple-links-link a:hover{background:rgba(255,255,255,.20)}.maple-links-link-actions{display:flex;gap:6px;opacity:0;transition:opacity .18s ease}.maple-links-link:hover .maple-links-link-actions{opacity:1}.maple-links-link-btn{width:32px;height:32px;border:none;border-radius:10px;background:rgba(255,255,255,.18);color:#fff;cursor:pointer}.maple-links-link-btn:hover{background:rgba(255,255,255,.24)}.maple-links-add{margin-top:14px;border:none;border-radius:14px;background:rgba(255,255,255,.14);color:#fff;padding:11px 14px;font-weight:800;cursor:pointer;width:100%;text-align:left}.maple-links-add:hover{background:rgba(255,255,255,.20)}.maple-links-empty{background:linear-gradient(180deg,#ffffff 0%,#f7f8fc 100%);border:1px solid #e7ebf3;border-radius:26px;padding:28px;color:#73809d;box-shadow:0 18px 38px rgba(64,78,112,.08)}.maple-links-color-menu{position:absolute;top:58px;right:18px;background:#fff;border:1px solid #e7ebf3;border-radius:18px;padding:10px;display:none;grid-template-columns:repeat(6,1fr);gap:8px;box-shadow:0 18px 38px rgba(64,78,112,.16);z-index:8}.maple-links-color-menu.is-open{display:grid}.maple-links-color-swatch{width:24px;height:24px;border-radius:10px;border:1px solid rgba(0,0,0,.08);cursor:pointer}.maple-links-toast{position:fixed;right:18px;bottom:18px;background:#273458;color:#fff;padding:12px 16px;border-radius:14px;box-shadow:0 16px 32px rgba(39,52,88,.24);opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .2s ease,transform .2s ease;z-index:60}.maple-links-toast.is-visible{opacity:1;transform:translateY(0)}@media (max-width:900px){.maple-links-grid{grid-template-columns:1fr}.maple-links-link-actions{opacity:1}}\n.maple-master-wrap{--mm-accent:#4c63db;--mm-accent-strong:#3f56cf;--mm-accent-soft:#eef2fb;--mm-accent-soft-2:#eef2fb;--mm-accent-text:#6f7fab;--mm-accent-shadow:rgba(76,99,219,.24);--mm-grad-1:#4c63db;--mm-grad-2:#6b84f0;--mm-pill:#4c63db;--mm-pill-shadow:rgba(76,99,219,.22);--mm-danger:#ef4444;}\n.maple-master-wrap.theme-azul{--mm-accent:#4c63db;--mm-accent-strong:#3f56cf;--mm-accent-soft:#eef2fb;--mm-accent-soft-2:#eef2fb;--mm-accent-text:#6f7fab;--mm-accent-shadow:rgba(76,99,219,.24);--mm-grad-1:#4c63db;--mm-grad-2:#6b84f0;--mm-pill:#4c63db;--mm-pill-shadow:rgba(76,99,219,.22);} \n.maple-master-wrap.theme-verde{--mm-accent:#22a06b;--mm-accent-strong:#1a8b5c;--mm-accent-soft:#e9faf2;--mm-accent-soft-2:#edf8f1;--mm-accent-text:#3d8e6b;--mm-accent-shadow:rgba(34,160,107,.24);--mm-grad-1:#22a06b;--mm-grad-2:#2cb67d;--mm-pill:#22a06b;--mm-pill-shadow:rgba(34,160,107,.22);} \n.maple-master-wrap.theme-rosa{--mm-accent:#d64f9a;--mm-accent-strong:#bd3f85;--mm-accent-soft:#fff0f8;--mm-accent-soft-2:#fff3f9;--mm-accent-text:#c26195;--mm-accent-shadow:rgba(214,79,154,.24);--mm-grad-1:#d64f9a;--mm-grad-2:#e57ab4;--mm-pill:#d64f9a;--mm-pill-shadow:rgba(214,79,154,.22);} \n.maple-master-wrap.theme-rojo{--mm-accent:#d9485f;--mm-accent-strong:#c0364d;--mm-accent-soft:#fff0f2;--mm-accent-soft-2:#fff3f4;--mm-accent-text:#c75d72;--mm-accent-shadow:rgba(217,72,95,.24);--mm-grad-1:#d9485f;--mm-grad-2:#ee6a7f;--mm-pill:#d9485f;--mm-pill-shadow:rgba(217,72,95,.22);} \n.maple-master-wrap.theme-negro{--mm-accent:#2b2f38;--mm-accent-strong:#1f232b;--mm-accent-soft:#eef0f4;--mm-accent-soft-2:#f3f4f7;--mm-accent-text:#6b7280;--mm-accent-shadow:rgba(43,47,56,.24);--mm-grad-1:#2b2f38;--mm-grad-2:#4a5260;--mm-pill:#2b2f38;--mm-pill-shadow:rgba(43,47,56,.22);} \n.maple-master-sidebar-toggle,.maple-toast,.maple-enter-btn,.blue-btn,.maple-ideas-primary,.maple-pill-btn,.maple-fix-btn,.maple-add-habit,.maple-show-transactions,.maple-google,.maple-submit,.maple-checkout-btn--primary,.maple-checkout-btn--secondary{background:var(--mm-accent)!important;color:#fff!important;box-shadow:0 16px 36px var(--mm-accent-shadow)!important;border-color:transparent!important}\n.maple-master-sidebar-toggle:hover,.blue-btn:hover,.maple-ideas-primary:hover,.maple-pill-btn:hover,.maple-fix-btn:hover,.maple-add-habit:hover,.maple-google:hover,.maple-submit:hover{background:var(--mm-accent-strong)!important}\n.maple-master-placeholder-badge,.maple-loading,.maple-flat-btn,.ghost-btn,.maple-ideas-secondary,.menu-btn,.menu-item.is-active,.monthly-delete-cat{background:var(--mm-accent-soft)!important;color:var(--mm-accent-text)!important}\n.maple-master-nav-item.is-active .maple-master-nav-icon-wrap,.maple-master-nav-item:hover .maple-master-nav-icon-wrap,.maple-master-section-profile .maple-master-nav-item .maple-master-nav-icon-wrap{background:var(--mm-accent-soft)!important}\n.maple-master-nav-item.is-active .maple-master-nav-icon,.maple-master-nav-item:hover .maple-master-nav-icon,.maple-master-section-profile .maple-master-nav-item .maple-master-nav-icon{color:var(--mm-accent)!important}\n.maple-daily-sticky-head{background:linear-gradient(135deg,var(--mm-grad-1),var(--mm-grad-2))!important}\n.maple-percent-box.maple-p-high,.maple-monthly .complete,.maple-checkout-badge-icon{background:var(--mm-accent)!important}\n#mapleDailyRoot input[type=checkbox],.maple-week-task input[type=checkbox]{accent-color:var(--mm-accent)!important}\n.maple-master-theme-wrap{position:relative;display:flex;align-items:center;gap:10px}\n.maple-master-main-topbar-tools{display:flex;align-items:center;gap:12px}\n.maple-master-theme-btn{height:38px;border:none;border-radius:999px;padding:0 14px;background:var(--mm-accent-soft);color:#56637f;font-weight:800;display:inline-flex;align-items:center;gap:8px;cursor:pointer;box-shadow:0 10px 22px rgba(78,93,130,.08)}\n.maple-master-theme-btn .dashicons{font-size:16px;width:16px;height:16px;color:var(--mm-accent)}\n.maple-master-theme-menu{position:absolute;top:calc(100% + 10px);right:0;min-width:190px;padding:10px;background:#fff;border:1px solid #e4eaf5;border-radius:18px;box-shadow:0 22px 48px rgba(49,66,105,.16);z-index:60}\n.maple-master-theme-menu.hidden{display:none}\n.maple-master-theme-option{width:100%;display:flex;align-items:center;gap:10px;border:none;background:transparent;padding:10px 12px;border-radius:12px;font-weight:700;color:#52617b;cursor:pointer;text-align:left}\n.maple-master-theme-option:hover{background:#f5f7fb}\n.maple-master-theme-option .swatch{width:16px;height:16px;border-radius:50%;display:inline-block;border:1px solid rgba(0,0,0,.06)}\n.swatch.azul{background:#4c63db}.swatch.verde{background:#22a06b}.swatch.rosa{background:#d64f9a}.swatch.rojo{background:#d9485f}.swatch.negro{background:#2b2f38}\n.maple-master-wrap.theme-negro .maple-master-sidebar-toggle,.maple-master-wrap.theme-negro .blue-btn,.maple-master-wrap.theme-negro .maple-pill-btn,.maple-master-wrap.theme-negro .maple-ideas-primary,.maple-master-wrap.theme-negro .maple-fix-btn,.maple-master-wrap.theme-negro .maple-add-habit,.maple-master-wrap.theme-negro .maple-enter-btn{color:#fff!important}<\/style><div class=\"maple-master-wrap theme-azul\"><div class=\"maple-master-shell\" data-active-mod=\"diarios\"><button class=\"maple-master-sidebar-toggle\" type=\"button\" aria-expanded=\"true\" aria-controls=\"maple-master-sidebar-panel\"><span class=\"dashicons dashicons-menu-alt3\"><\/span><span class=\"maple-master-toggle-text\">Ocultar men\u00fa<\/span><\/button><aside id=\"maple-master-sidebar-panel\" class=\"maple-master-sidebar\"><div class=\"maple-master-sidebar-inner\"><div class=\"maple-master-profile-head\"><button class=\"maple-master-back\" type=\"button\" onclick=\"history.back()\" aria-label=\"Volver\"><span class=\"dashicons dashicons-arrow-left-alt2\"><\/span><\/button><h2>Perfil<\/h2><\/div><div class=\"maple-master-divider\"><\/div><div class=\"maple-master-section maple-master-section-profile\"><a class=\"maple-master-nav-item \" href=\"https:\/\/alcendia.site\/login\/panel\/\"><span class=\"maple-master-nav-icon-wrap\"><span class=\"dashicons dashicons-admin-users maple-master-nav-icon\"><\/span><\/span><span class=\"maple-master-nav-label\">Panel<\/span><span class=\"dashicons dashicons-arrow-right-alt2 maple-master-nav-arrow\"><\/span><\/a><\/div><div class=\"maple-master-section-title\">Ajustes generales<\/div><nav class=\"maple-master-nav\" aria-label=\"Ajustes generales\"><a class=\"maple-master-nav-item \" href=\"\/login\/wp-json\/wp\/v2\/pages\/10?mod=ideas\"><span class=\"maple-master-nav-icon-wrap\"><span class=\"dashicons dashicons-lightbulb maple-master-nav-icon\"><\/span><\/span><span class=\"maple-master-nav-label\">Blog de Ideas<\/span><span class=\"dashicons dashicons-arrow-right-alt2 maple-master-nav-arrow\"><\/span><\/a><a class=\"maple-master-nav-item \" href=\"\/login\/wp-json\/wp\/v2\/pages\/10?mod=objetivos\"><span class=\"maple-master-nav-icon-wrap\"><span class=\"dashicons dashicons-chart-pie maple-master-nav-icon\"><\/span><\/span><span class=\"maple-master-nav-label\">Objetivos del Mes<\/span><span class=\"dashicons dashicons-arrow-right-alt2 maple-master-nav-arrow\"><\/span><\/a><a class=\"maple-master-nav-item \" href=\"\/login\/wp-json\/wp\/v2\/pages\/10?mod=semanales\"><span class=\"maple-master-nav-icon-wrap\"><span class=\"dashicons dashicons-editor-help maple-master-nav-icon\"><\/span><\/span><span class=\"maple-master-nav-label\">Habitos Semanales<\/span><span class=\"dashicons dashicons-arrow-right-alt2 maple-master-nav-arrow\"><\/span><\/a><a class=\"maple-master-nav-item is-active\" href=\"\/login\/wp-json\/wp\/v2\/pages\/10?mod=diarios\"><span class=\"maple-master-nav-icon-wrap\"><span class=\"dashicons dashicons-yes-alt maple-master-nav-icon\"><\/span><\/span><span class=\"maple-master-nav-label\">Habitos Diarios<\/span><span class=\"dashicons dashicons-arrow-right-alt2 maple-master-nav-arrow\"><\/span><\/a><a class=\"maple-master-nav-item \" href=\"\/login\/wp-json\/wp\/v2\/pages\/10?mod=links\"><span class=\"maple-master-nav-icon-wrap\"><span class=\"dashicons dashicons-admin-links maple-master-nav-icon\"><\/span><\/span><span class=\"maple-master-nav-label\">Control de Links<\/span><span class=\"dashicons dashicons-arrow-right-alt2 maple-master-nav-arrow\"><\/span><\/a><\/nav><\/div><\/aside><main class=\"maple-master-main\"><div class=\"maple-master-main-card\"><div class=\"maple-master-main-topbar\"><div class=\"maple-master-main-topbar-title\">Habitos Diarios<\/div><div class=\"maple-master-main-topbar-tools\"><div class=\"maple-master-theme-wrap\"><button class=\"maple-master-theme-btn\" id=\"mapleMasterThemeBtn\" type=\"button\" aria-expanded=\"false\">Tema <span class=\"dashicons dashicons-admin-appearance\"><\/span><\/button><div class=\"maple-master-theme-menu hidden\" id=\"mapleMasterThemeMenu\"><button class=\"maple-master-theme-option\" data-theme=\"azul\" type=\"button\"><span class=\"swatch azul\"><\/span><span>Azul<\/span><\/button><button class=\"maple-master-theme-option\" data-theme=\"verde\" type=\"button\"><span class=\"swatch verde\"><\/span><span>Verde<\/span><\/button><button class=\"maple-master-theme-option\" data-theme=\"rosa\" type=\"button\"><span class=\"swatch rosa\"><\/span><span>Rosa<\/span><\/button><button class=\"maple-master-theme-option\" data-theme=\"rojo\" type=\"button\"><span class=\"swatch rojo\"><\/span><span>Rojo<\/span><\/button><button class=\"maple-master-theme-option\" data-theme=\"negro\" type=\"button\"><span class=\"swatch negro\"><\/span><span>Negro<\/span><\/button><\/div><\/div><div class=\"maple-master-main-topbar-user\">Invitado<\/div><\/div><\/div><div class=\"maple-master-main-content has-module\"><div id=\"mapleDailyRoot\"><\/div><\/div><\/div><\/main><\/div><\/div><script>window.MapleMasterConfig={\"ajaxurl\":\"https:\\\/\\\/alcendia.site\\\/wp-admin\\\/admin-ajax.php\",\"nonce\":\"d9148747ea\",\"isLoggedIn\":false,\"userDisplayName\":\"Invitado\",\"module\":\"diarios\"};<\/script><script src=\"https:\/\/cdn.jsdelivr.net\/npm\/sortablejs@1.15.0\/Sortable.min.js\"><\/script><script>(function(){const wrap=document.querySelector('.maple-master-wrap');const btn=document.querySelector('.maple-master-sidebar-toggle');const shell=document.querySelector('.maple-master-shell');const themeBtn=document.getElementById('mapleMasterThemeBtn');const themeMenu=document.getElementById('mapleMasterThemeMenu');const THEME_KEY='maple-master-theme';const allowed=['azul','verde','rosa','rojo','negro'];function applyTheme(theme){const val=allowed.includes(theme)?theme:'azul'; if(!wrap) return; wrap.classList.remove(...allowed.map(t=>'theme-'+t)); wrap.classList.add('theme-'+val); try{localStorage.setItem(THEME_KEY,val);}catch(e){}} if(!btn||!shell)return; btn.addEventListener('click',function(){const collapsed=shell.classList.toggle('sidebar-collapsed');btn.querySelector('.maple-master-toggle-text').textContent=collapsed?'Mostrar men\u00fa':'Ocultar men\u00fa';btn.setAttribute('aria-expanded',collapsed?'false':'true');}); let saved='azul'; try{saved=localStorage.getItem(THEME_KEY)||'azul';}catch(e){} applyTheme(saved); if(themeBtn&&themeMenu){themeBtn.addEventListener('click',function(e){e.stopPropagation(); themeMenu.classList.toggle('hidden'); themeBtn.setAttribute('aria-expanded', themeMenu.classList.contains('hidden')?'false':'true');}); themeMenu.querySelectorAll('[data-theme]').forEach(el=>el.addEventListener('click',function(){applyTheme(el.getAttribute('data-theme')||'azul'); themeMenu.classList.add('hidden');})); document.addEventListener('click',function(ev){ if(!ev.target.closest('.maple-master-theme-wrap')) themeMenu.classList.add('hidden');});}})();\n(function(){\nconst cfg=window.MapleMasterConfig||{}; if(cfg.module!=='diarios') return; const root=document.getElementById('mapleDailyRoot'); if(!root) return;\nconst ajax=cfg.ajaxurl, nonce=cfg.nonce; const now=new Date(); const year=now.getFullYear(); const month=now.getMonth()+1; const daysInMonth=new Date(year,month,0).getDate(); const monthLabel=new Intl.DateTimeFormat('es-MX',{month:'long',year:'numeric'}).format(now); const dayNames=['dom','lun','mar','mie','jue','vie','sab'];\nlet habits=[]; let checks=new Map();\nfunction esc(s){return String(s).replace(\/[&<>\"']\/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[m]));}\nfunction keyOf(h,d){return h+'-'+d}\nfunction form(data){const fd=new URLSearchParams(); Object.keys(data).forEach(k=>fd.append(k,data[k])); return fd.toString();}\nasync function post(action,payload={}){const res=await fetch(ajax,{method:'POST',credentials:'same-origin',headers:{'Content-Type':'application\/x-www-form-urlencoded'},body:form(Object.assign({action,nonce},payload))}); const json=await res.json(); if(!json.success) throw new Error((json.data&&json.data.message)||'Error'); return json.data;}\nfunction metric(k,label,sub,val){return `<div class=\"maple-metric\"><small>${label}<\/small><strong data-metric=\"${k}\">${val}<\/strong><span>${sub}<\/span><\/div>`;}\nfunction render(){root.innerHTML=`<div class=\"maple-daily-shell\"><div class=\"maple-daily-header\"><div><h1 class=\"maple-daily-title\">Habitos Diarios<\/h1><\/div><div class=\"maple-daily-actions\"><button class=\"maple-pill-btn\" type=\"button\">${monthLabel}<\/button><button class=\"maple-ghost-btn\" id=\"mapleResetMonthBtn\" type=\"button\">Reiniciar mes<\/button><\/div><\/div><div class=\"maple-daily-overview\">${metric('totalHabits','H\u00e1bitos activos','Rutinas disponibles',habits.length)}${metric('daysInMonth','D\u00edas del mes','Seguimiento visible',daysInMonth)}${metric('checked','Checks completados','Acciones marcadas',getCheckedCount())}${metric('consistency','Consistencia',`Mejor d\u00eda: <strong data-metric=\"bestDay\">${bestDay()}%<\/strong>`,consistency()+'%')}<\/div><div class=\"maple-daily-table-card\"><div class=\"maple-daily-table-wrap\">${tableHtml()}<\/div><div class=\"maple-daily-bottom\"><div class=\"maple-footnote\">Doble clic para editar. Arrastra desde el nombre para reordenar.<\/div><button class=\"maple-add-habit\" id=\"mapleAddHabitBtn\" type=\"button\">\uff0b Agregar h\u00e1bito<\/button><\/div><\/div><\/div>`; bind(); updatePercents(); initSortable();}\nfunction tableHtml(){let h=`<table><thead><tr><th class=\"maple-daily-sticky-head\">Pendientes<\/th>`; for(let d=1; d<=daysInMonth; d++){const dt=new Date(year,month-1,d); h+=`<th><span class=\"maple-day-name\">${dayNames[dt.getDay()]}<\/span><span class=\"maple-day-number\">${d}<\/span><span class=\"maple-percent-box maple-p-low\" id=\"maple-pct-${d}\">0%<\/span><\/th>`;} h+=`<\/tr><\/thead><tbody id=\"mapleDailyTbody\">`; habits.forEach(habit=>{h+=`<tr data-id=\"${habit.id}\"><td class=\"maple-habit-name\"><div class=\"maple-habit-name-inner\"><span class=\"maple-habit-handle\">\u22ee\u22ee<\/span><span class=\"maple-habit-title\" data-edit-id=\"${habit.id}\">${esc(habit.name)}<\/span><button class=\"maple-habit-delete\" data-delete-id=\"${habit.id}\">\u25a1<\/button><\/div><\/td>`; for(let d=1; d<=daysInMonth; d++){const checked=checks.get(keyOf(habit.id,d))===true; h+=`<td><div class=\"maple-check-cell\"><input type=\"checkbox\" data-habit-id=\"${habit.id}\" data-day=\"${d}\" ${checked?'checked':''}><\/div><\/td>`;} h+='<\/tr>';}); h+='<\/tbody><\/table>'; return h;}\nfunction getCheckedCount(){return checks.size} function consistency(){const total=habits.length*daysInMonth; return total?Math.round((checks.size\/total)*100):0} function bestDay(){let best=0; for(let d=1; d<=daysInMonth; d++){let done=0; habits.forEach(h=>{if(checks.get(keyOf(h.id,d))) done++;}); const pct=habits.length?Math.round((done\/habits.length)*100):0; if(pct>best) best=pct;} return best;}\nfunction updatePercents(){for(let d=1; d<=daysInMonth; d++){const box=document.getElementById('maple-pct-'+d); if(!box) continue; let done=0; habits.forEach(h=>{if(checks.get(keyOf(h.id,d))) done++;}); const pct=habits.length?Math.round((done\/habits.length)*100):0; box.textContent=pct+'%'; box.className='maple-percent-box '+(pct<30?'maple-p-low':pct<60?'maple-p-midlow':pct<80?'maple-p-mid':'maple-p-high');}\n const mChecked=root.querySelector('[data-metric=\"checked\"]'); if(mChecked) mChecked.textContent=getCheckedCount(); const mCons=root.querySelector('[data-metric=\"consistency\"]'); if(mCons) mCons.textContent=consistency()+'%'; const mBest=root.querySelector('[data-metric=\"bestDay\"]'); if(mBest) mBest.textContent=bestDay()+'%';}\nfunction bind(){root.querySelectorAll('[data-habit-id]').forEach(el=>el.addEventListener('change',async e=>{const id=Number(e.target.dataset.habitId), day=Number(e.target.dataset.day), checked=e.target.checked; await post('maple_daily_save_check',{habit_id:id,day,month,year,completed:checked?1:0}); if(checked) checks.set(keyOf(id,day),true); else checks.delete(keyOf(id,day)); updatePercents();})); root.querySelectorAll('[data-delete-id]').forEach(btn=>btn.addEventListener('click',async()=>{if(!confirm('\u00bfBorrar h\u00e1bito?')) return; await post('maple_daily_delete_habit',{habit_id:btn.dataset.deleteId}); await load();})); root.querySelectorAll('[data-edit-id]').forEach(el=>el.addEventListener('dblclick',async()=>{const name=prompt('Editar h\u00e1bito:',el.textContent.trim()); if(!name) return; await post('maple_daily_edit_habit',{habit_id:el.dataset.editId,name}); await load();})); document.getElementById('mapleAddHabitBtn').addEventListener('click',async()=>{const name=prompt('Nombre del h\u00e1bito:'); if(!name) return; await post('maple_daily_add_habit',{name}); await load();}); document.getElementById('mapleResetMonthBtn').addEventListener('click',async()=>{if(!confirm('\u00bfReiniciar todo el mes?')) return; await post('maple_daily_reset_month',{month,year}); await load();});}\nfunction initSortable(){const tbody=document.getElementById('mapleDailyTbody'); if(!tbody||typeof Sortable==='undefined') return; Sortable.create(tbody,{animation:150,handle:'.maple-habit-handle',onEnd(){const order=[]; tbody.querySelectorAll('tr').forEach((tr,i)=>order.push({id:Number(tr.dataset.id),sort_order:i})); post('maple_daily_reorder_habits',{order:JSON.stringify(order)}).catch(console.error);}});}\nasync function load(){root.innerHTML='<div class=\"maple-loading\">Cargando H\u00e1bitos Diarios...<\/div>'; try{const data=await post('maple_daily_get_state',{month,year}); habits=(data.habits||[]); checks=new Map(); (data.checks||[]).forEach(c=>{if(c.completed) checks.set(keyOf(c.habit_id,c.day),true);}); render();}catch(err){root.innerHTML='<div class=\"maple-error\">No se pudo cargar H\u00e1bitos Diarios.<br>'+esc(err.message||err)+'<\/div>';}}\nload();\n})();\n(function(){\nconst cfg=window.MapleMasterConfig||{}; if(cfg.module!=='semanales') return; const root=document.getElementById('mapleWeeklyRoot'); if(!root) return;\nconst ajax=cfg.ajaxurl, nonce=cfg.nonce; const DAYS=['Lunes','Martes','Mi\u00e9rcoles','Jueves','Viernes','S\u00e1bado','Domingo']; let tasks=[];\nfunction esc(s){return String(s).replace(\/[&<>\"']\/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[m]));}\nfunction form(data){const fd=new URLSearchParams(); Object.keys(data).forEach(k=>fd.append(k,data[k])); return fd.toString();}\nasync function post(action,payload={}){const res=await fetch(ajax,{method:'POST',credentials:'same-origin',headers:{'Content-Type':'application\/x-www-form-urlencoded'},body:form(Object.assign({action,nonce},payload))}); const json=await res.json(); if(!json.success) throw new Error((json.data&&json.data.message)||'Error'); return json.data;}\nfunction toast(msg){let t=document.querySelector('.maple-toast'); if(!t){t=document.createElement('div'); t.className='maple-toast'; document.body.appendChild(t);} t.textContent=msg; t.classList.add('is-visible'); clearTimeout(window.__mapleToastTimer); window.__mapleToastTimer=setTimeout(()=>t.classList.remove('is-visible'),1800);}\nfunction summary(){const total=tasks.filter(t=>!t.is_completed).length, pinned=tasks.filter(t=>t.is_pinned).length, completed=tasks.filter(t=>t.is_completed).length, repeated=tasks.filter(t=>t.repeat_parent_id&&!t.is_completed).length; return {total,pinned,completed,repeated};}\nfunction render(){const s=summary(); root.innerHTML=`<div class=\"maple-weekly-shell\"><div class=\"maple-weekly-header\"><div><h1 class=\"maple-weekly-title\">Habitos Semanales<\/h1><\/div><div class=\"maple-weekly-toolbar\"><button class=\"maple-pill-btn\" type=\"button\">Semana activa<\/button><button class=\"maple-ghost-btn\" id=\"mapleWeeklyResetAllBtn\" type=\"button\">Reiniciar todas<\/button><\/div><\/div><div class=\"maple-week-summary\"><div class=\"maple-summary-card\"><small>Tareas<\/small><strong>${s.total}<\/strong><span>Pendientes<\/span><\/div><div class=\"maple-summary-card\"><small>Fijadas<\/small><strong>${s.pinned}<\/strong><span>Rutinas clave<\/span><\/div><div class=\"maple-summary-card\"><small>Completadas<\/small><strong>${s.completed}<\/strong><span>Hechas esta semana<\/span><\/div><div class=\"maple-summary-card\"><small>Repetidas<\/small><strong>${s.repeated}<\/strong><span>Clones creados<\/span><\/div><\/div><div class=\"maple-weekly-grid\">${DAYS.map(renderDay).join('')}<\/div><\/div>`; bind();}\nfunction renderDay(day){const items=tasks.filter(t=>t.day_name===day && (!t.is_completed || t.is_pinned)); return `<section class=\"maple-week-day\"><header><h3>${day}<\/h3><\/header><div class=\"maple-week-add\"><input type=\"text\" data-add-input=\"${day}\" placeholder=\"Nueva tarea\"><button type=\"button\" data-add-btn=\"${day}\">Agregar<\/button><\/div><div class=\"maple-week-list\">${items.length?items.map(renderTask).join(''):'<div class=\"maple-week-empty\"><\/div>'}<\/div><\/section>`;}\nfunction renderTask(t){return `<div class=\"maple-week-task ${t.is_pinned?'pinned':''} ${t.is_completed?'is-completed':''}\" data-task-id=\"${t.id}\"><input type=\"checkbox\" data-check-id=\"${t.id}\" ${t.is_completed?'checked':''}><div class=\"maple-week-task-main\"><div class=\"maple-week-task-label\" data-edit-id=\"${t.id}\">${esc(t.text)}<\/div><\/div><div class=\"maple-week-task-actions\"><button class=\"maple-week-link-btn\" data-pin-id=\"${t.id}\" type=\"button\">${t.is_pinned?'DESFIJAR':'FIJAR'}<\/button><button class=\"maple-week-link-btn repeat\" data-repeat-id=\"${t.id}\" type=\"button\">REPETIR<\/button><button class=\"maple-week-link-btn repeat\" data-delete-id=\"${t.id}\" type=\"button\">BORRAR<\/button><\/div><\/div>`;}\nfunction launchConfetti(){const count=120; const colors=['var(--mm-accent)','var(--mm-pill)','#7c5cff','#4dd0e1','#8fd694']; for(let i=0;i<count;i++){const piece=document.createElement('span'); piece.className='maple-week-confetti'; piece.style.left=(Math.random()*100)+'vw'; piece.style.top='-20px'; piece.style.background=colors[Math.floor(Math.random()*colors.length)]; piece.style.transform=`rotate(${Math.random()*360}deg)`; piece.style.animationDuration=(900+Math.random()*900)+'ms'; document.body.appendChild(piece); setTimeout(()=>piece.remove(),2000);} }\nfunction bind(){document.getElementById('mapleWeeklyResetAllBtn').addEventListener('click',async()=>{if(!confirm('\u00bfQuitar todas las palomas?')) return; await post('maple_weekly_reset_all'); await load();}); root.querySelectorAll('[data-add-btn]').forEach(btn=>btn.addEventListener('click',()=>addTask(btn.dataset.addBtn))); root.querySelectorAll('[data-add-input]').forEach(input=>input.addEventListener('keydown',e=>{if(e.key==='Enter'){e.preventDefault(); addTask(input.dataset.addInput);}})); root.querySelectorAll('[data-check-id]').forEach(el=>el.addEventListener('change',async()=>{const task=tasks.find(t=>String(t.id)===String(el.dataset.checkId)); await post('maple_weekly_save_completed',{task_id:el.dataset.checkId,is_completed:el.checked?1:0}); if(task) task.is_completed=el.checked; if(el.checked){ launchConfetti(); const card=el.closest('.maple-week-task'); if(task&&task.is_pinned){ if(card){ card.classList.add('is-completed'); } setTimeout(()=>{render();},120); toast('Tarea fija completada'); } else { if(card){ card.style.transition='opacity .28s ease, transform .28s ease'; card.style.opacity='0'; card.style.transform='scale(.92)'; } setTimeout(()=>{tasks=tasks.filter(t=>String(t.id)!==String(el.dataset.checkId)); render();},280); toast('Tarea completada'); } } else { render(); }})); root.querySelectorAll('[data-pin-id]').forEach(btn=>btn.addEventListener('click',async()=>{const task=tasks.find(t=>String(t.id)===String(btn.dataset.pinId)); await post('maple_weekly_toggle_pinned',{task_id:btn.dataset.pinId,is_pinned:task&&task.is_pinned?0:1}); await load();})); root.querySelectorAll('[data-delete-id]').forEach(btn=>btn.addEventListener('click',async()=>{if(!confirm('\u00bfBorrar tarea?')) return; await post('maple_weekly_delete_task',{task_id:btn.dataset.deleteId}); await load();})); root.querySelectorAll('[data-edit-id]').forEach(el=>el.addEventListener('click',async()=>{const next=prompt('Editar tarea:',el.textContent.trim()); if(!next) return; await post('maple_weekly_edit_task',{task_id:el.dataset.editId,text:next}); await load();})); root.querySelectorAll('[data-repeat-id]').forEach(btn=>btn.addEventListener('click',async()=>{const task=tasks.find(t=>String(t.id)===String(btn.dataset.repeatId)); const current=((task&&task.repeat_days)||[]).join(', '); const raw=prompt(`Repetir en qu\u00e9 d\u00edas?\nEscribe d\u00edas separados por coma.\nEjemplo: Martes, Jueves\n\nD\u00edas v\u00e1lidos: ${DAYS.join(', ')}`, current); if(raw===null) return; const days=raw.split(',').map(s=>s.trim()).filter(Boolean); await post('maple_weekly_save_repeat',{task_id:btn.dataset.repeatId,days:JSON.stringify(days)}); await load();})); root.querySelectorAll('[data-fix-day]').forEach(btn=>btn.addEventListener('click',async()=>{await post('maple_weekly_fix_all_day',{day_name:btn.dataset.fixDay}); await load();}));}\nasync function addTask(day){const input=root.querySelector(`[data-add-input=\"${day}\"]`); const text=(input&&input.value||'').trim(); if(!text) return; await post('maple_weekly_add_task',{text,day_name:day}); if(input) input.value=''; await load();}\nasync function load(){root.innerHTML='<div class=\"maple-loading\">Cargando H\u00e1bitos Semanales...<\/div>'; try{const data=await post('maple_weekly_get_state'); tasks=(data.tasks||[]); render();}catch(err){root.innerHTML='<div class=\"maple-error\">No se pudo cargar H\u00e1bitos Semanales.<br>'+esc(err.message||err)+'<\/div>';}}\nload().catch(err=>{root.innerHTML='<div class=\"maple-error\">'+esc(err.message||err)+'<\/div>';});\n})();\n(function(){\nconst cfg=window.MapleMasterConfig||{};\nif(cfg.module!=='objetivos') return;\nconst root=document.getElementById('mapleMonthlyRoot');\nif(!root) return;\nconst state={goals:[],categories:[],activeCategory:''};\nconst esc=s=>String(s==null?'':s).replace(\/[&<>\"']\/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[m]));\nfunction form(data){const fd=new URLSearchParams(); Object.keys(data||{}).forEach(k=>fd.append(k,data[k])); return fd.toString();}\nconst post=(action,data)=>fetch((cfg.ajaxurl||cfg.ajaxUrl),{method:'POST',credentials:'same-origin',headers:{'Content-Type':'application\/x-www-form-urlencoded'},body:form(Object.assign({action,nonce:cfg.nonce},data||{}))}).then(async r=>{const text=await r.text(); let j=null; try{j=JSON.parse(text);}catch(e){throw new Error(text&&text.trim()?text.trim().slice(0,180):'Respuesta inv\u00e1lida');} if(!r.ok||!j.success) throw new Error((j.data&&j.data.message)||'Error'); return j.data||{};});\nconst monthLabel=d=>d.toLocaleDateString('es-MX',{day:'numeric',month:'long'}).replace(' de ',' ').toUpperCase();\nconst nextDateFor=slug=>{const items=state.goals.filter(g=>g.category_slug===slug).sort((a,b)=>String(a.end_date).localeCompare(String(b.end_date))); if(!items.length) return 'Sin fecha'; return monthLabel(new Date(items[0].end_date+'T12:00:00'));};\nfunction ensureActiveCategory(){const slugs=state.categories.map(c=>c.slug); if(!state.activeCategory||!slugs.includes(state.activeCategory)){state.activeCategory=slugs[0]||'';}}\nfunction activeCategory(){ensureActiveCategory(); return state.categories.find(c=>c.slug===state.activeCategory)||state.categories[0]||{slug:'sin-titulo',name:'Sin t\u00edtulo'};}\nfunction render(){\n  const active=activeCategory();\n  const items=state.goals.filter(g=>g.category_slug===active.slug);\n  root.innerHTML=`<div class=\"maple-monthly\"><div class=\"main-head\"><div class=\"main-actions\"><div class=\"menu-wrap\"><button id=\"mapleMonthlyPanelBtn\" class=\"menu-btn\" type=\"button\">${esc(active.name||'Panel de categor\u00eda')} <span class=\"menu-caret\">\u25be<\/span><\/button><div id=\"mapleMonthlyPanelMenu\" class=\"menu-panel hidden\">${state.categories.map(cat=>`<button class=\"menu-item ${cat.slug===state.activeCategory?'is-active':''}\" data-select-cat=\"${esc(cat.slug)}\" type=\"button\">${esc(cat.name)}<\/button>`).join('')}<\/div><\/div><button id=\"mapleMonthlyAddCategoryBtn\" class=\"ghost-btn\" type=\"button\">\uff0b Categor\u00eda<\/button><button id=\"mapleMonthlyDeleteCategoryBtn\" class=\"danger-btn\" type=\"button\">\ud83d\uddd1<\/button><button id=\"mapleMonthlyAddBtn\" class=\"blue-btn\" type=\"button\">\uff0b Objetivo<\/button><\/div><\/div><div id=\"mapleMonthlyCategories\" class=\"categories\"><section class=\"category-card\" data-cat=\"${esc(active.slug)}\"><div class=\"category-head\"><div class=\"category-title\"><h2 data-edit-category=\"${esc(active.slug)}\" title=\"Haz clic para editar\">${esc(active.name)}<\/h2><\/div><div class=\"category-icons\"><span>${(active.open!==false)?'\u2304':'\u203a'}<\/span><\/div><\/div><div class=\"category-panel ${active.open===false?'hidden':''}\">${items.length?`<div class=\"goals\">${items.map(g=>`<article class=\"goal-row\" data-id=\"${g.id}\"><div class=\"goal-date\">${esc(monthLabel(new Date(g.end_date+'T12:00:00')))}<\/div><div class=\"goal-title\">${esc(g.title)}<\/div><div class=\"goal-actions\"><button class=\"complete\" data-complete=\"${g.id}\" title=\"Completar\">\u2713<\/button><button data-delete=\"${g.id}\" title=\"Eliminar\">\u00d7<\/button><\/div><\/article>`).join('')}<\/div>`:'<div class=\"empty\">No hay objetivos en esta categor\u00eda todav\u00eda.<\/div>'}<\/div><\/section><\/div><div id=\"mapleMonthlyGoalModal\" class=\"modal hidden\"><div class=\"modal-box\"><h3>Nuevo objetivo<\/h3><input id=\"mapleMonthlyTitle\" type=\"text\" placeholder=\"Nombre del objetivo\"><input id=\"mapleMonthlyDate\" type=\"date\"><select id=\"mapleMonthlyCategorySelect\"><\/select><div class=\"modal-actions\"><button id=\"mapleMonthlySave\" class=\"save\" type=\"button\">Guardar<\/button><button id=\"mapleMonthlyCancel\" class=\"cancel\" type=\"button\">Cancelar<\/button><\/div><\/div><\/div><div id=\"mapleMonthlyCategoryModal\" class=\"modal hidden\"><div class=\"modal-box\"><h3>Nueva categor\u00eda<\/h3><div class=\"modal-inline\"><input id=\"mapleMonthlyCategoryName\" type=\"text\" placeholder=\"Ej. Objetivos econ\u00f3micos\"><button id=\"mapleMonthlyCategoryQuickSave\" class=\"blue-btn\" type=\"button\">Crear<\/button><\/div><div class=\"modal-actions\"><button id=\"mapleMonthlyCategorySave\" class=\"save\" type=\"button\">Guardar<\/button><button id=\"mapleMonthlyCategoryCancel\" class=\"cancel\" type=\"button\">Cancelar<\/button><\/div><\/div><\/div><canvas id=\"mapleMonthlyConfetti\"><\/canvas><\/div>`;\n  const sel=root.querySelector('#mapleMonthlyCategorySelect');\n  if(sel){sel.innerHTML=state.categories.map(cat=>`<option value=\"${esc(cat.slug)}\" ${cat.slug===state.activeCategory?'selected':''}>${esc(cat.name)}<\/option>`).join('');}\n  bind();\n}\nfunction launchConfetti(){const canvas=root.querySelector('#mapleMonthlyConfetti'); if(!canvas) return; const ctx=canvas.getContext('2d'); canvas.width=innerWidth; canvas.height=innerHeight; let confetti=Array.from({length:80},()=>({x:Math.random()*canvas.width,y:-20,r:Math.random()*6+4,d:Math.random()*5+2,c:`hsl(${Math.random()*360},100%,50%)`})); (function animate(){ctx.clearRect(0,0,canvas.width,canvas.height); confetti.forEach(p=>{ctx.beginPath(); ctx.fillStyle=p.c; ctx.arc(p.x,p.y,p.r,0,Math.PI*2); ctx.fill(); p.y+=p.d;}); if(confetti.some(p=>p.y<canvas.height)) requestAnimationFrame(animate);})();}\nfunction toggleCat(slug){state.categories=state.categories.map(c=>c.slug===slug?Object.assign({},c,{open:!(c.open!==false)}):c); render();}\nfunction selectCategory(slug){state.activeCategory=slug; render();}\nasync function saveCategory(){const input=root.querySelector('#mapleMonthlyCategoryName'); const name=(input.value||'').trim(); if(!name){alert('Escribe el nombre de la categor\u00eda'); return;} try{const data=await post('maple_monthly_save_category',{name}); state.categories=Array.isArray(data.categories)?data.categories:state.categories; if(data.category&&data.category.slug){state.activeCategory=data.category.slug;} input.value=''; root.querySelector('#mapleMonthlyCategoryModal').classList.add('hidden'); render();}catch(err){alert(err.message||'No se pudo guardar la categor\u00eda');}}\nasync function renameCategory(slug){const current=(state.categories.find(c=>c.slug===slug)||{}).name||''; const name=(window.prompt('Nuevo nombre de la categor\u00eda', current)||'').trim(); if(!name||name===current) return; try{const data=await post('maple_monthly_rename_category',{slug:slug,name:name}); state.categories=Array.isArray(data.categories)?data.categories:state.categories; render();}catch(err){alert(err.message||'No se pudo renombrar la categor\u00eda');}}\nasync function deleteCategory(slug){const current=(state.categories.find(c=>c.slug===slug)||{}).name||''; if(!slug) return; if(!window.confirm(`\u00bfBorrar la categor\u00eda \"${current||'Sin t\u00edtulo'}\"?`)) return; try{const data=await post('maple_monthly_delete_category',{slug:slug}); const incoming=Array.isArray(data.categories)?data.categories:[]; state.categories=incoming.length?incoming:[{slug:'sin-titulo',name:'Sin t\u00edtulo',open:true}]; state.activeCategory=data.activeCategory||state.categories[0]?.slug||'sin-titulo'; ensureActiveCategory(); render();}catch(err){alert(err.message||'No se pudo borrar la categor\u00eda');}}\nfunction bind(){\n  const menuBtn=root.querySelector('#mapleMonthlyPanelBtn');\n  const menu=root.querySelector('#mapleMonthlyPanelMenu');\n  if(menuBtn&&menu){menuBtn.onclick=(e)=>{e.stopPropagation(); menu.classList.toggle('hidden');};}\n  root.querySelectorAll('[data-select-cat]').forEach(btn=>btn.onclick=()=>selectCategory(btn.dataset.selectCat));\n  root.querySelector('[data-edit-category]')?.addEventListener('click',e=>renameCategory(e.currentTarget.dataset.editCategory));\n  root.querySelector('.category-head')?.addEventListener('click',e=>{if(e.target.closest('[data-edit-category]')) return; const cat=e.currentTarget.closest('.category-card')?.dataset.cat; if(cat) toggleCat(cat);});\n  root.querySelector('#mapleMonthlyAddBtn').onclick=()=>{root.querySelector('#mapleMonthlyDate').value=new Date().toISOString().slice(0,10); root.querySelector('#mapleMonthlyGoalModal').classList.remove('hidden');};\n  root.querySelector('#mapleMonthlyDeleteCategoryBtn').onclick=()=>deleteCategory(state.activeCategory);\n  root.querySelector('#mapleMonthlyCancel').onclick=()=>root.querySelector('#mapleMonthlyGoalModal').classList.add('hidden');\n  root.querySelector('#mapleMonthlySave').onclick=async()=>{const title=(root.querySelector('#mapleMonthlyTitle').value||'').trim(); const end_date=root.querySelector('#mapleMonthlyDate').value; const category_slug=root.querySelector('#mapleMonthlyCategorySelect').value; if(!title||!end_date){alert('Completa los campos'); return;} try{await post('maple_monthly_add_goal',{title:title,end_date:end_date,category_slug:category_slug}); root.querySelector('#mapleMonthlyGoalModal').classList.add('hidden'); root.querySelector('#mapleMonthlyTitle').value=''; root.querySelector('#mapleMonthlyDate').value=''; state.activeCategory=category_slug||state.activeCategory; await init();}catch(err){alert(err.message||'No se pudo guardar');}};\n  root.querySelector('#mapleMonthlyAddCategoryBtn').onclick=()=>root.querySelector('#mapleMonthlyCategoryModal').classList.remove('hidden');\n  root.querySelector('#mapleMonthlyCategoryCancel').onclick=()=>root.querySelector('#mapleMonthlyCategoryModal').classList.add('hidden');\n  root.querySelector('#mapleMonthlyCategorySave').onclick=saveCategory;\n  root.querySelector('#mapleMonthlyCategoryQuickSave').onclick=saveCategory;\n  root.querySelectorAll('[data-delete]').forEach(btn=>btn.onclick=async()=>{const id=btn.dataset.delete; if(!confirm('\u00bfEliminar objetivo?')) return; try{await post('maple_monthly_delete_goal',{goal_id:id}); await init();}catch(err){alert(err.message||'No se pudo eliminar');}});\n  root.querySelectorAll('[data-complete]').forEach(btn=>btn.onclick=async()=>{const id=btn.dataset.complete; const item=btn.closest('.goal-row'); if(item) item.style.opacity='0.55'; launchConfetti(); setTimeout(async()=>{try{await post('maple_monthly_complete_goal',{goal_id:id}); await init();}catch(err){alert(err.message||'No se pudo completar');}},500);});\n  document.addEventListener('click',ev=>{ if(menu && !menu.classList.contains('hidden') && !ev.target.closest('.menu-wrap')) menu.classList.add('hidden'); }, {once:true});\n}\nasync function init(){ try{ const data=await post('maple_monthly_get_state',{}); state.goals=Array.isArray(data.goals)?data.goals:[]; state.categories=Array.isArray(data.categories)&&data.categories.length?data.categories:[]; if(!state.categories.length){ state.categories=[{slug:'sin-titulo',name:'Sin t\u00edtulo',open:true}]; } ensureActiveCategory(); render(); }catch(err){ root.innerHTML=`<div class=\"maple-master-error\">${esc(err.message||'No se pudo cargar Objetivos Mensuales')}<\/div>`; } }\ninit();\n})();\n(function(){\nconst cfg=window.MapleMasterConfig||{}; if(cfg.module!=='ideas') return; const root=document.getElementById('mapleIdeasRoot'); if(!root) return;\nconst ajax=cfg.ajaxurl, nonce=cfg.nonce; let STATE={ideas:[]};\nfunction esc(s){return String(s).replace(\/[&<>\"']\/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[m]));}\nfunction form(data){const fd=new URLSearchParams(); Object.keys(data).forEach(k=>fd.append(k,data[k])); return fd.toString();}\nasync function post(action,payload={}){const res=await fetch(ajax,{method:'POST',credentials:'same-origin',headers:{'Content-Type':'application\/x-www-form-urlencoded'},body:form(Object.assign({action,nonce},payload))}); const json=await res.json(); if(!json.success) throw new Error((json.data&&json.data.message)||'Error'); return json.data;}\nfunction toast(msg){let t=document.querySelector('.maple-toast'); if(!t){t=document.createElement('div'); t.className='maple-toast'; document.body.appendChild(t);} t.textContent=msg; t.classList.add('is-visible'); clearTimeout(window.__mapleToastTimer); window.__mapleToastTimer=setTimeout(()=>t.classList.remove('is-visible'),1800);}\nfunction formatDate(v){try{return new Intl.DateTimeFormat('es-MX',{timeZone:'America\/Mexico_City',year:'numeric',month:'long',day:'numeric',hour:'2-digit',minute:'2-digit'}).format(new Date(v));}catch(e){return v;}}\nfunction render(){const ideas=STATE.ideas||[]; root.innerHTML=`<div class=\"maple-ideas-shell\"><div class=\"maple-ideas-top\"><div><h1 class=\"maple-ideas-title\">Blog de Ideas<\/h1><p class=\"maple-ideas-sub\">Captura ideas r\u00e1pido, ed\u00edtalas despu\u00e9s y mant\u00e9n un espacio limpio para pensar, refinar y guardar notas valiosas.<\/p><\/div><\/div><div class=\"maple-ideas-board\"><section class=\"maple-ideas-panel maple-ideas-panel--full\"><textarea id=\"mapleIdeasInput\" class=\"maple-ideas-input\" placeholder=\"Escribe una idea aqu\u00ed...\"><\/textarea><div class=\"maple-ideas-actions\"><button id=\"mapleIdeasSaveBtn\" class=\"maple-ideas-primary\" type=\"button\">Guardar idea<\/button><\/div><div class=\"maple-ideas-list\" id=\"mapleIdeasList\">${ideas.length?ideas.map(renderCard).join(''):`<div class=\"maple-ideas-empty\">Todav\u00eda no tienes ideas guardadas. Empieza con una nota corta y la vas refinando.<\/div>`}<\/div><\/section><\/div><\/div>`; bind();}\nfunction renderCard(item){return `<article class=\"maple-idea-card\" data-idea-id=\"${item.id}\"><div class=\"maple-idea-meta\">${esc(formatDate(item.created_at||item.updated_at||''))}<\/div><div class=\"maple-idea-text\" id=\"mapleIdeaText-${item.id}\">${esc(item.content||'')}<\/div><div class=\"maple-idea-buttons\"><button type=\"button\" data-edit=\"${item.id}\">Editar<\/button><button type=\"button\" data-delete=\"${item.id}\">Borrar<\/button><\/div><\/article>`;}\nfunction bind(){const saveBtn=root.querySelector('#mapleIdeasSaveBtn'); const input=root.querySelector('#mapleIdeasInput'); if(saveBtn) saveBtn.onclick=async()=>{const content=(input.value||'').trim(); if(!content){input.focus(); return;} saveBtn.disabled=true; try{await post('maple_ideas_add',{content}); input.value=''; await init(); toast('Idea guardada');}catch(err){alert(err.message||'No se pudo guardar');} finally{saveBtn.disabled=false;}}; root.querySelectorAll('[data-delete]').forEach(btn=>btn.onclick=async()=>{if(!confirm('\u00bfBorrar idea?')) return; try{await post('maple_ideas_delete',{idea_id:btn.getAttribute('data-delete')}); await init(); toast('Idea borrada');}catch(err){alert(err.message||'No se pudo borrar');}}); root.querySelectorAll('[data-edit]').forEach(btn=>btn.onclick=()=>startEdit(btn.getAttribute('data-edit')));}\nfunction startEdit(id){const textDiv=root.querySelector('#mapleIdeaText-'+id); if(!textDiv) return; const current=textDiv.textContent; const card=textDiv.closest('.maple-idea-card'); const buttons=card.querySelector('.maple-idea-buttons'); textDiv.outerHTML=`<textarea class=\"maple-ideas-edit\" id=\"mapleIdeaEdit-${id}\">${current}<\/textarea>`; buttons.innerHTML=`<button type=\"button\" data-save-edit=\"${id}\">Guardar<\/button><button type=\"button\" data-cancel-edit=\"${id}\">Cancelar<\/button>`; buttons.querySelector('[data-save-edit]').onclick=async()=>{const content=(root.querySelector('#mapleIdeaEdit-'+id).value||'').trim(); if(!content) return; try{await post('maple_ideas_edit',{idea_id:id,content}); await init(); toast('Idea actualizada');}catch(err){alert(err.message||'No se pudo actualizar');}}; buttons.querySelector('[data-cancel-edit]').onclick=()=>render();}\nasync function init(){root.innerHTML='<div class=\"maple-loading\">Cargando ideas\u2026<\/div>'; try{const data=await post('maple_ideas_get_state',{}); STATE.ideas=Array.isArray(data.ideas)?data.ideas:[]; render();}catch(err){root.innerHTML=`<div class=\"maple-error\">${esc(err.message||'No se pudo cargar Blog de Ideas')}<\/div>`;}}\ninit();\n})();\n(function(){\nconst cfg=window.MapleMasterConfig||{}; if(cfg.module!=='links') return; const root=document.getElementById('mapleLinksRoot'); if(!root) return;\nconst ajax=cfg.ajaxurl, nonce=cfg.nonce;\nconst COLORS=['#7d8ff2','#6e7fe7','#93a2f5','#93b7ff','#86d1c4','#f2a96b','#ef8d8a','#b39af7','#7ba8f8','#8f8fca','#7f8cde','#4f67df'];\nlet STATE={groups:[],links:[]};\nfunction esc(s){return String(s).replace(\/[&<>\"']\/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[m]));}\nfunction form(data){const fd=new URLSearchParams(); Object.keys(data).forEach(k=>fd.append(k,data[k])); return fd.toString();}\nasync function post(action,payload={}){const res=await fetch(ajax,{method:'POST',credentials:'same-origin',headers:{'Content-Type':'application\/x-www-form-urlencoded'},body:form(Object.assign({action,nonce},payload))}); const json=await res.json(); if(!json.success) throw new Error((json.data&&json.data.message)||'Error'); return json.data;}\nfunction toast(msg){let t=document.querySelector('.maple-links-toast'); if(!t){t=document.createElement('div'); t.className='maple-links-toast'; document.body.appendChild(t);} t.textContent=msg; t.classList.add('is-visible'); clearTimeout(window.__mapleLinksToast); window.__mapleLinksToast=setTimeout(()=>t.classList.remove('is-visible'),1800);}\nfunction linksFor(groupId){return (STATE.links||[]).filter(l=>String(l.group_id)===String(groupId)).sort((a,b)=>(Number(a.sort_order||0)-Number(b.sort_order||0))||(Number(a.id)-Number(b.id)));}\nfunction cardStyle(color){const c=(color||'#7d8ff2'); return `--card-top:${c};--card-bottom:${shadeColor(c,-12)}`;}\nfunction shadeColor(color, percent){let f=parseInt(color.slice(1),16),t=percent<0?0:255,p=Math.abs(percent)\/100,R=f>>16,G=f>>8&0x00FF,B=f&0x0000FF; return '#'+(0x1000000+(Math.round((t-R)*p)+R)*0x10000+(Math.round((t-G)*p)+G)*0x100+(Math.round((t-B)*p)+B)).toString(16).slice(1);}\nfunction allCompact(){const groups=STATE.groups||[]; return groups.length && groups.every(g=>!!g.is_compact);}\nfunction render(){const groups=STATE.groups||[]; root.innerHTML=`<div class=\"maple-links-shell\"><div class=\"maple-links-header\"><div><h1 class=\"maple-links-title\">Control de Links<\/h1><p class=\"maple-links-sub\">Organiza recursos por bloques, colapsa tablas, cambia colores y mant\u00e9n tus accesos r\u00e1pidos en un espacio fino, claro y muy r\u00e1pido.<\/p><\/div><\/div><div class=\"maple-links-toolbar\"><div class=\"maple-links-toolbar-left\"><button id=\"mapleLinksAddGroupBtn\" class=\"maple-links-btn\" type=\"button\">Nueva tabla<\/button><\/div><div class=\"maple-links-toolbar-right\"><button id=\"mapleLinksToggleAllBtn\" class=\"maple-links-ghost\" type=\"button\">${allCompact()?'Abrir todas':'Cerrar todas'}<\/button><button id=\"mapleLinksColorAllBtn\" class=\"maple-links-ghost\" type=\"button\">Color global<\/button><\/div><\/div><div class=\"maple-links-grid\" id=\"mapleLinksGrid\">${groups.length?groups.map(renderGroup).join(''):`<div class=\"maple-links-empty\">Todav\u00eda no tienes tablas de links. Crea una nueva y empieza a guardar accesos, referencias o herramientas.<\/div>`}<\/div><\/div>`; bind();}\nfunction renderGroup(group){const links=linksFor(group.id); return `<article class=\"maple-links-card ${group.is_compact?'compact':''}\" data-group-id=\"${group.id}\" draggable=\"true\" style=\"${cardStyle(group.color_hex)}\"><div class=\"maple-links-card-head\"><h2 class=\"maple-links-card-title\">${esc(group.title||'Sin t\u00edtulo')}<\/h2><div class=\"maple-links-card-tools\"><button class=\"maple-links-tool maple-links-toggle\" title=\"Abrir \/ cerrar\">${group.is_compact?'\u25b8':'\u25be'}<\/button><button class=\"maple-links-tool maple-links-color\" title=\"Color\">\ud83c\udfa8<\/button><button class=\"maple-links-tool maple-links-edit\" title=\"Editar\">\u270f\ufe0f<\/button><button class=\"maple-links-tool maple-links-delete\" title=\"Borrar\">\ud83d\uddd1<\/button><\/div><\/div><div class=\"maple-links-color-menu\">${COLORS.map(c=>`<button class=\"maple-links-color-swatch\" type=\"button\" data-color=\"${c}\" style=\"background:${c}\"><\/button>`).join('')}<\/div><div class=\"maple-links-list\">${links.length?links.map(renderLink).join(''):`<div class=\"maple-links-link\"><a href=\"#\" onclick=\"return false;\">A\u00fan no hay links en esta tabla<\/a><\/div>`}<\/div><button class=\"maple-links-add\" type=\"button\">\uff0b Agregar link<\/button><\/article>`;}\nfunction renderLink(link){return `<div class=\"maple-links-link\" data-link-id=\"${link.id}\"><a href=\"${esc(link.url)}\" target=\"_blank\" rel=\"noopener noreferrer\">${esc(link.label)}<\/a><div class=\"maple-links-link-actions\"><button class=\"maple-links-link-btn maple-links-link-edit\" type=\"button\">\u270f\ufe0f<\/button><button class=\"maple-links-link-btn maple-links-link-delete\" type=\"button\">\ud83d\uddd1<\/button><\/div><\/div>`;}\nfunction bind(){\n const add=document.getElementById('mapleLinksAddGroupBtn'); if(add) add.onclick=()=>addGroup().catch(handle);\n const toggleAll=document.getElementById('mapleLinksToggleAllBtn'); if(toggleAll) toggleAll.onclick=()=>toggleAllGroups().catch(handle);\n const colorAll=document.getElementById('mapleLinksColorAllBtn'); if(colorAll) colorAll.onclick=()=>openGlobalColorMenu(colorAll);\n document.querySelectorAll('.maple-links-card').forEach(card=>{\n  const groupId=card.dataset.groupId;\n  card.querySelector('.maple-links-toggle').onclick=()=>toggleGroup(groupId).catch(handle);\n  card.querySelector('.maple-links-edit').onclick=()=>editGroup(groupId).catch(handle);\n  card.querySelector('.maple-links-delete').onclick=()=>deleteGroup(groupId).catch(handle);\n  card.querySelector('.maple-links-color').onclick=()=>toggleColorMenu(card);\n  card.querySelectorAll('.maple-links-color-swatch').forEach(btn=>btn.onclick=()=>setGroupColor(groupId,btn.dataset.color).catch(handle));\n  const addLinkBtn=card.querySelector('.maple-links-add'); if(addLinkBtn) addLinkBtn.onclick=()=>addLink(groupId).catch(handle);\n  card.querySelectorAll('.maple-links-link-edit').forEach(btn=>btn.onclick=e=>editLink(e.currentTarget.closest('.maple-links-link').dataset.linkId).catch(handle));\n  card.querySelectorAll('.maple-links-link-delete').forEach(btn=>btn.onclick=e=>deleteLink(e.currentTarget.closest('.maple-links-link').dataset.linkId).catch(handle));\n });\n bindDnD();\n document.addEventListener('click',globalCloser,{once:true});\n}\nfunction handle(e){console.error(e); alert(e.message||'Ocurri\u00f3 un error.');}\nfunction globalCloser(e){document.querySelectorAll('.maple-links-color-menu').forEach(menu=>{if(!menu.contains(e.target)&&!e.target.closest('.maple-links-color')) menu.classList.remove('is-open');}); const menu=document.getElementById('mapleLinksGlobalMenu'); if(menu && !menu.contains(e.target) && !e.target.closest('#mapleLinksColorAllBtn')) menu.remove();}\nfunction toggleColorMenu(card){document.querySelectorAll('.maple-links-color-menu').forEach(menu=>{if(menu!==card.querySelector('.maple-links-color-menu')) menu.classList.remove('is-open');}); card.querySelector('.maple-links-color-menu').classList.toggle('is-open');}\nfunction openGlobalColorMenu(btn){let existing=document.getElementById('mapleLinksGlobalMenu'); if(existing){existing.remove(); return;} const wrap=document.createElement('div'); wrap.id='mapleLinksGlobalMenu'; wrap.className='maple-links-color-menu is-open'; wrap.style.position='fixed'; const rect=btn.getBoundingClientRect(); wrap.style.top=(rect.bottom+10)+'px'; wrap.style.left=Math.max(12,rect.right-220)+'px'; wrap.innerHTML=COLORS.map(c=>`<button class=\"maple-links-color-swatch\" type=\"button\" data-color=\"${c}\" style=\"background:${c}\"><\/button>`).join(''); wrap.querySelectorAll('button').forEach(b=>b.onclick=()=>setAllColors(b.dataset.color).catch(handle)); document.body.appendChild(wrap);}\nasync function load(){const data=await post('maple_links_get_state'); STATE=data; render();}\nasync function addGroup(){const title=prompt('T\u00edtulo de la tabla:'); if(!title) return; await post('maple_links_add_group',{title}); toast('Tabla creada'); await load();}\nasync function editGroup(groupId){const g=(STATE.groups||[]).find(x=>String(x.id)===String(groupId)); if(!g) return; const title=prompt('Nuevo t\u00edtulo',g.title||''); if(!title) return; await post('maple_links_edit_group',{group_id:groupId,title}); toast('T\u00edtulo actualizado'); await load();}\nasync function deleteGroup(groupId){if(!confirm('\u00bfBorrar tabla y sus links?')) return; await post('maple_links_delete_group',{group_id:groupId}); toast('Tabla eliminada'); await load();}\nasync function setGroupColor(groupId,color){await post('maple_links_set_group_color',{group_id:groupId,color}); toast('Color actualizado'); await load();}\nasync function toggleGroup(groupId){const g=(STATE.groups||[]).find(x=>String(x.id)===String(groupId)); if(!g) return; await post('maple_links_set_group_compact',{group_id:groupId,is_compact:g.is_compact?0:1}); await load();}\nasync function toggleAllGroups(){await post('maple_links_set_all_compact',{is_compact:allCompact()?0:1}); await load();}\nasync function setAllColors(color){await post('maple_links_set_all_colors',{color}); toast('Color global aplicado'); await load();}\nasync function addLink(groupId){const label=prompt('Texto'); if(!label) return; const url=prompt('URL'); if(!url) return; await post('maple_links_add_link',{group_id:groupId,label,url}); toast('Link agregado'); await load();}\nasync function editLink(linkId){const item=(STATE.links||[]).find(x=>String(x.id)===String(linkId)); if(!item) return; const label=prompt('Texto',item.label||''); if(!label) return; const url=prompt('URL',item.url||''); if(!url) return; await post('maple_links_edit_link',{link_id:linkId,label,url}); toast('Link actualizado'); await load();}\nasync function deleteLink(linkId){if(!confirm('\u00bfBorrar link?')) return; await post('maple_links_delete_link',{link_id:linkId}); toast('Link eliminado'); await load();}\nfunction bindDnD(){let dragged=null; document.querySelectorAll('.maple-links-card').forEach(card=>{card.addEventListener('dragstart',()=>{dragged=card; card.style.opacity='.55';}); card.addEventListener('dragend',()=>{if(dragged) dragged.style.opacity=''; dragged=null;}); card.addEventListener('dragover',e=>{e.preventDefault(); if(!dragged||dragged===card) return; const rect=card.getBoundingClientRect(); const after=e.clientY>rect.top+rect.height\/2; const grid=card.parentNode; if(after){ if(card.nextSibling!==dragged) grid.insertBefore(dragged,card.nextSibling);} else { if(card!==dragged.nextSibling) grid.insertBefore(dragged,card);} }); card.addEventListener('drop',async e=>{e.preventDefault(); const ids=[...document.querySelectorAll('.maple-links-card')].map(x=>x.dataset.groupId); await post('maple_links_reorder_groups',{order:JSON.stringify(ids)}); toast('Orden guardado');});});}\nload().catch(handle);\n})();<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-10","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/alcendia.site\/login\/wp-json\/wp\/v2\/pages\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alcendia.site\/login\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alcendia.site\/login\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alcendia.site\/login\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alcendia.site\/login\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":2,"href":"https:\/\/alcendia.site\/login\/wp-json\/wp\/v2\/pages\/10\/revisions"}],"predecessor-version":[{"id":23,"href":"https:\/\/alcendia.site\/login\/wp-json\/wp\/v2\/pages\/10\/revisions\/23"}],"wp:attachment":[{"href":"https:\/\/alcendia.site\/login\/wp-json\/wp\/v2\/media?parent=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}