/* Waplixo Calendar – Frontend */
:root{--wpcal-accent:#2d6ef5;--wpcal-radius:14px;--wpcal-font:'DM Sans',sans-serif;--wpcal-bg:#f7f6f2;--wpcal-surface:#fff;--wpcal-surf2:#f0efe9;--wpcal-surf3:#e8e7e0;--wpcal-border:#e2e0d8;--wpcal-text:#1a1916;--wpcal-text2:#6b6a65;--wpcal-text3:#9b9994;--wpcal-text4:#bbbab4;--wpcal-accent-soft:#e8efff;--wpcal-danger:#dc2626;--wpcal-shadow:0 4px 24px rgba(0,0,0,.08);}
[data-wpcal-theme=dark]{--wpcal-bg:#0f0f0d;--wpcal-surface:#1a1916;--wpcal-surf2:#252520;--wpcal-surf3:#2f2f29;--wpcal-border:#2e2d27;--wpcal-text:#f0efe8;--wpcal-text2:#a0a09a;--wpcal-text3:#5a5a54;--wpcal-text4:#3a3a34;--wpcal-accent-soft:#1a2a50;--wpcal-shadow:0 4px 24px rgba(0,0,0,.35);}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
.wpcal-wrap{font-family:var(--wpcal-font);background:var(--wpcal-bg);color:var(--wpcal-text);border-radius:var(--wpcal-radius);overflow:hidden;display:flex;flex-direction:column;min-height:600px;font-size:14px;line-height:1.5;box-shadow:var(--wpcal-shadow);border:1px solid var(--wpcal-border);}
/* Topbar */
.wpcal-topbar{display:flex;align-items:center;gap:10px;padding:0 14px;height:54px;background:var(--wpcal-surface);border-bottom:1px solid var(--wpcal-border);flex-shrink:0;flex-wrap:wrap;overflow-x:auto;}
.wpcal-logo{display:flex;align-items:center;gap:8px;text-decoration:none;flex-shrink:0;}
.wpcal-logo img{height:32px;width:auto;border-radius:6px;object-fit:contain;}
.wpcal-logo-icon{width:30px;height:30px;background:var(--wpcal-accent);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;}
.wpcal-logo-text{font-size:16px;font-weight:600;color:var(--wpcal-text);white-space:nowrap;}
.wpcal-tb-btn{height:32px;padding:0 12px;background:none;border:1px solid var(--wpcal-border);border-radius:calc(var(--wpcal-radius)/1.5);cursor:pointer;font-family:var(--wpcal-font);font-size:13px;color:var(--wpcal-text2);transition:.15s;display:flex;align-items:center;gap:5px;white-space:nowrap;flex-shrink:0;}
.wpcal-tb-btn:hover{background:var(--wpcal-surf2);color:var(--wpcal-text);}
.wpcal-tb-btn.accent{background:var(--wpcal-accent);color:#fff;border-color:var(--wpcal-accent);}
.wpcal-tb-btn.accent:hover{filter:brightness(.92);}
.wpcal-tb-btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}
.wpcal-period{font-size:15px;font-weight:500;min-width:170px;text-align:center;color:var(--wpcal-text);white-space:nowrap;}
.wpcal-view-group{display:flex;border:1px solid var(--wpcal-border);border-radius:calc(var(--wpcal-radius)/1.4);overflow:hidden;flex-shrink:0;}
.wpcal-vbtn{height:32px;padding:0 11px;background:none;border:none;border-right:1px solid var(--wpcal-border);cursor:pointer;font-family:var(--wpcal-font);font-size:12px;font-weight:500;color:var(--wpcal-text2);transition:.15s;white-space:nowrap;}
.wpcal-vbtn:last-child{border-right:none;}
.wpcal-vbtn.active{background:var(--wpcal-accent);color:#fff;}
.wpcal-vbtn:not(.active):hover{background:var(--wpcal-surf2);}
.wpcal-tb-spacer{flex:1;min-width:4px;}
/* Search */
.wpcal-search-wrap{position:relative;flex-shrink:0;}
.wpcal-search-wrap svg{position:absolute;left:9px;top:50%;transform:translateY(-50%);width:14px;height:14px;stroke:var(--wpcal-text3);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;}
.wpcal-search{height:32px;border:1px solid var(--wpcal-border);border-radius:calc(var(--wpcal-radius)/1.5);padding:0 10px 0 30px;font-family:var(--wpcal-font);font-size:13px;width:150px;outline:none;background:var(--wpcal-surf2);color:var(--wpcal-text);transition:.2s;}
.wpcal-search:focus{width:200px;background:var(--wpcal-surface);border-color:var(--wpcal-accent);}
.wpcal-search-results{position:absolute;top:calc(100% + 5px);left:0;min-width:260px;background:var(--wpcal-surface);border:1px solid var(--wpcal-border);border-radius:calc(var(--wpcal-radius)/1.2);box-shadow:var(--wpcal-shadow);z-index:200;display:none;overflow:hidden;}
.wpcal-sr-item{padding:9px 12px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:8px;transition:.1s;border-bottom:1px solid var(--wpcal-border);}
.wpcal-sr-item:last-child{border-bottom:none;}
.wpcal-sr-item:hover{background:var(--wpcal-surf2);}
.wpcal-sr-dot{width:8px;height:8px;border-radius:3px;flex-shrink:0;}
.wpcal-sr-info strong{display:block;font-size:13px;}
.wpcal-sr-info small{color:var(--wpcal-text3);font-size:11px;}
/* Layout */
.wpcal-main{display:flex;flex:1;overflow:hidden;}
.wpcal-sidebar{width:220px;flex-shrink:0;background:var(--wpcal-surface);border-right:1px solid var(--wpcal-border);display:flex;flex-direction:column;overflow:hidden;transition:width .2s;}
.wpcal-sidebar.collapsed{width:0;}
.wpcal-sidebar-inner{width:220px;overflow-y:auto;padding:14px 12px;display:flex;flex-direction:column;gap:16px;}
.wpcal-cal-area{flex:1;overflow:hidden;display:flex;flex-direction:column;}
/* Mini calendar */
.wpcal-mini-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.wpcal-mini-hdr span{font-size:13px;font-weight:500;}
.wpcal-mnav{width:22px;height:22px;background:none;border:none;cursor:pointer;color:var(--wpcal-text2);border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:17px;transition:.1s;}
.wpcal-mnav:hover{background:var(--wpcal-surf2);}
.wpcal-mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;}
.wpcal-mini-dow{font-size:9px;font-weight:600;color:var(--wpcal-text3);text-align:center;padding:3px 0;text-transform:uppercase;letter-spacing:.3px;}
.wpcal-mday{font-size:11px;text-align:center;padding:4px 1px;border-radius:6px;cursor:pointer;transition:.12s;color:var(--wpcal-text);position:relative;}
.wpcal-mday:hover{background:var(--wpcal-surf2);}
.wpcal-mday.today{background:var(--wpcal-accent);color:#fff;font-weight:600;}
.wpcal-mday.selected:not(.today){background:var(--wpcal-accent-soft);color:var(--wpcal-accent);font-weight:500;}
.wpcal-mday.other{color:var(--wpcal-text4);}
.wpcal-mday.has-ev::after{content:'';position:absolute;bottom:1px;left:50%;transform:translateX(-50%);width:3px;height:3px;border-radius:50%;background:var(--wpcal-accent);}
.wpcal-mday.today.has-ev::after{background:#fff;}
/* Sidebar sections */
.wpcal-sb-hdr{font-size:10px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:var(--wpcal-text3);display:flex;align-items:center;justify-content:space-between;padding:0 2px;margin-bottom:6px;}
.wpcal-cal-item{display:flex;align-items:center;gap:7px;padding:5px 6px;border-radius:calc(var(--wpcal-radius)/1.5);cursor:pointer;transition:.12s;user-select:none;}
.wpcal-cal-item:hover{background:var(--wpcal-surf2);}
.wpcal-cal-cb{width:14px;height:14px;border-radius:4px;flex-shrink:0;border:2px solid transparent;display:flex;align-items:center;justify-content:center;transition:.12s;cursor:pointer;}
.wpcal-cal-cb svg{width:9px;height:9px;stroke:#fff;fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}
.wpcal-cal-name{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wpcal-tag-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:100px;font-size:11px;font-weight:500;cursor:pointer;transition:.12s;}
.wpcal-tag-chip.inactive{opacity:.35;}
.wpcal-sb-content{font-size:13px;color:var(--wpcal-text2);line-height:1.6;}
.wpcal-sb-stats{font-size:11px;color:var(--wpcal-text3);line-height:2;margin-top:auto;padding-top:10px;border-top:1px solid var(--wpcal-border);}
/* View panes */
.wpcal-view{display:flex;flex-direction:column;height:100%;overflow:hidden;}
.wpcal-view.hidden{display:none!important;}
/* Month */
.wpcal-m-dow-row{display:grid;grid-template-columns:repeat(7,1fr);background:var(--wpcal-surface);border-bottom:1px solid var(--wpcal-border);flex-shrink:0;}
.wpcal-m-dow{text-align:center;padding:8px 0;font-size:11px;font-weight:600;color:var(--wpcal-text3);text-transform:uppercase;letter-spacing:.4px;}
.wpcal-m-grid{display:grid;grid-template-columns:repeat(7,1fr);flex:1;overflow-y:auto;}
.wpcal-mcell{border-right:1px solid var(--wpcal-border);border-bottom:1px solid var(--wpcal-border);padding:4px 5px 3px;min-height:88px;cursor:pointer;position:relative;background:var(--wpcal-surface);transition:background .1s;overflow:hidden;}
.wpcal-mcell:nth-child(7n){border-right:none;}
.wpcal-mcell:hover{background:var(--wpcal-surf2);}
.wpcal-mcell.other-m{background:var(--wpcal-bg);}
.wpcal-mcell.other-m .wpcal-dnum{color:var(--wpcal-text4);}
.wpcal-mcell.today-c .wpcal-dnum{background:var(--wpcal-accent);color:#fff;border-radius:50%;width:22px;height:22px;line-height:22px;text-align:center;font-weight:600;}
.wpcal-mcell.wknd{background:var(--wpcal-bg);}
.wpcal-dnum{font-size:12px;font-weight:500;color:var(--wpcal-text);width:22px;height:22px;line-height:22px;text-align:center;margin-bottom:2px;border-radius:50%;}
.wpcal-mev{font-size:11px;padding:1px 5px;border-radius:5px;margin-bottom:2px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;display:flex;align-items:center;gap:3px;}
.wpcal-mev:hover{filter:brightness(.92);}
.wpcal-mev-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.wpcal-mev-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;}
.wpcal-allday-strip{display:block;border-radius:5px;padding:1px 5px;font-size:11px;font-weight:500;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;}
.wpcal-allday-strip:hover{filter:brightness(.92);}
.wpcal-more-link{font-size:10px;color:var(--wpcal-text3);padding:1px 4px;cursor:pointer;}
.wpcal-more-link:hover{color:var(--wpcal-accent);}
.wpcal-flag{font-size:12px;vertical-align:middle;}
/* Week/Day time grid */
.wpcal-wk-hdr{display:grid;flex-shrink:0;background:var(--wpcal-surface);border-bottom:1px solid var(--wpcal-border);}
.wpcal-wk-adrow{display:grid;background:var(--wpcal-surface);border-bottom:1px solid var(--wpcal-border);flex-shrink:0;}
.wpcal-wk-body{flex:1;overflow-y:auto;display:grid;}
.wpcal-tgutter{border-right:1px solid var(--wpcal-border);background:var(--wpcal-surface);}
.wpcal-tgutter-cell{height:48px;display:flex;align-items:flex-start;justify-content:flex-end;padding:2px 7px 0 0;font-size:10px;color:var(--wpcal-text3);font-family:'DM Mono',monospace;background:var(--wpcal-surface);}
.wpcal-wk-dhead{padding:6px 4px;text-align:center;border-right:1px solid var(--wpcal-border);}
.wpcal-wk-dhead:last-child{border-right:none;}
.wpcal-wk-dhead .wpcal-wh-dow{font-size:10px;font-weight:600;color:var(--wpcal-text3);text-transform:uppercase;letter-spacing:.4px;}
.wpcal-wk-dhead .wpcal-wh-num{font-size:22px;font-weight:300;color:var(--wpcal-text);line-height:1.15;cursor:pointer;display:inline-block;}
.wpcal-wk-dhead .wpcal-wh-num:hover{color:var(--wpcal-accent);}
.wpcal-wk-dhead.today-h .wpcal-wh-num{color:#fff;background:var(--wpcal-accent);border-radius:50%;width:34px;height:34px;line-height:34px;font-weight:600;font-size:17px;}
.wpcal-wk-adcell{border-right:1px solid var(--wpcal-border);min-height:24px;padding:2px;}
.wpcal-wk-adcell:last-child{border-right:none;}
.wpcal-wk-col{border-right:1px solid var(--wpcal-border);position:relative;cursor:crosshair;background:var(--wpcal-surface);}
.wpcal-wk-col:last-child{border-right:none;}
.wpcal-hr{height:48px;border-bottom:1px solid var(--wpcal-border);position:relative;}
.wpcal-hr-half{position:absolute;bottom:0;left:0;right:0;border-bottom:1px dashed var(--wpcal-border);height:0;}
.wpcal-ev{position:absolute;border-radius:calc(var(--wpcal-radius)/1.8);padding:3px 6px;font-size:11px;font-weight:500;cursor:pointer;overflow:hidden;z-index:10;transition:.1s;box-shadow:0 1px 4px rgba(0,0,0,.12);}
.wpcal-ev:hover{filter:brightness(.9);z-index:15;box-shadow:0 3px 10px rgba(0,0,0,.18);}
.wpcal-ev .ev-time{font-size:10px;opacity:.85;font-family:'DM Mono',monospace;}
.wpcal-ev .ev-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wpcal-ev .ev-loc{font-size:10px;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wpcal-now-line{position:absolute;left:0;right:0;height:2px;background:#ef4444;z-index:20;pointer-events:none;}
.wpcal-now-dot{position:absolute;left:-4px;top:-3px;width:8px;height:8px;background:#ef4444;border-radius:50%;}
/* Agenda */
.wpcal-agenda{flex:1;overflow-y:auto;padding:16px 20px;}
.wpcal-ag-group{margin-bottom:16px;}
.wpcal-ag-hdr{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--wpcal-border);margin-bottom:8px;position:sticky;top:0;background:var(--wpcal-bg);z-index:5;}
.wpcal-ag-date{font-size:24px;font-weight:300;min-width:32px;text-align:right;}
.wpcal-ag-info{display:flex;flex-direction:column;gap:1px;}
.wpcal-ag-dow{font-size:13px;font-weight:500;}
.wpcal-ag-month{font-size:11px;color:var(--wpcal-text3);}
.wpcal-ag-badge{font-size:10px;background:var(--wpcal-accent);color:#fff;border-radius:5px;padding:1px 7px;font-weight:600;margin-left:auto;}
.wpcal-ag-ev{display:flex;gap:10px;align-items:stretch;padding:7px 9px;border-radius:calc(var(--wpcal-radius)/1.4);cursor:pointer;transition:.12s;margin-bottom:3px;}
.wpcal-ag-ev:hover{background:var(--wpcal-surf2);}
.wpcal-ag-time{font-size:11px;font-family:'DM Mono',monospace;color:var(--wpcal-text3);min-width:76px;padding-top:2px;display:flex;flex-direction:column;gap:2px;flex-shrink:0;}
.wpcal-ag-bar{width:3px;border-radius:2px;flex-shrink:0;align-self:stretch;}
.wpcal-ag-body{flex:1;min-width:0;}
.wpcal-ag-title{font-size:13px;font-weight:500;margin-bottom:2px;}
.wpcal-ag-meta{font-size:11px;color:var(--wpcal-text3);display:flex;flex-wrap:wrap;gap:8px;}
/* Year */
.wpcal-year{flex:1;overflow-y:auto;padding:14px 16px;}
.wpcal-yr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;}
.wpcal-yr-month{background:var(--wpcal-surface);border:1px solid var(--wpcal-border);border-radius:var(--wpcal-radius);padding:12px;}
.wpcal-yr-mname{font-size:13px;font-weight:600;margin-bottom:8px;}
.wpcal-yr-dow-row{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:2px;}
.wpcal-yr-dow{font-size:9px;font-weight:600;color:var(--wpcal-text3);text-align:center;text-transform:uppercase;letter-spacing:.2px;}
.wpcal-yr-days{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;}
.wpcal-yrday{font-size:11px;text-align:center;padding:3px 1px;border-radius:5px;cursor:pointer;color:var(--wpcal-text);transition:.1s;}
.wpcal-yrday:hover{background:var(--wpcal-surf2);}
.wpcal-yrday.yr-today{background:var(--wpcal-accent);color:#fff;font-weight:600;}
.wpcal-yrday.yr-other{color:var(--wpcal-text4);}
.wpcal-yrday.yr-ev{font-weight:600;color:var(--wpcal-accent);}
/* Day */
.wpcal-day-hdr{background:var(--wpcal-surface);border-bottom:1px solid var(--wpcal-border);padding:12px 18px;flex-shrink:0;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
.wpcal-day-hdr .dh-num{font-size:38px;font-weight:300;line-height:1;}
.wpcal-day-hdr .dh-label{font-size:15px;color:var(--wpcal-text2);}
.wpcal-today-badge{font-size:11px;background:var(--wpcal-accent);color:#fff;border-radius:6px;padding:2px 8px;font-weight:600;}
.wpcal-day-adrow{background:var(--wpcal-surface);border-bottom:1px solid var(--wpcal-border);padding:4px 8px;flex-shrink:0;display:grid;grid-template-columns:52px 1fr;}
.wpcal-day-body{flex:1;overflow-y:auto;display:grid;grid-template-columns:52px 1fr;}
/* Modal */
.wpcal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.42);display:flex;align-items:center;justify-content:center;z-index:9999;backdrop-filter:blur(4px);padding:16px;}
.wpcal-overlay.hidden{display:none;}
.wpcal-modal{background:var(--wpcal-surface);border-radius:calc(var(--wpcal-radius) * 1.2);padding:24px 26px;width:540px;max-width:100%;max-height:92vh;overflow-y:auto;box-shadow:0 24px 80px rgba(0,0,0,.22);animation:wpcal-pop .22s cubic-bezier(.34,1.4,.64,1);}
.wpcal-modal.sm{width:380px;}
@keyframes wpcal-pop{from{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:none}}
.wpcal-modal-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;}
.wpcal-modal-hdr h2{font-size:17px;font-weight:600;margin:0;}
.wpcal-modal-x{background:none;border:none;cursor:pointer;color:var(--wpcal-text3);font-size:22px;line-height:1;padding:2px 6px;border-radius:6px;transition:.1s;}
.wpcal-modal-x:hover{background:var(--wpcal-surf2);color:var(--wpcal-text);}
.wpcal-form-row{margin-bottom:14px;}
.wpcal-form-row label{display:block;font-size:11px;font-weight:700;color:var(--wpcal-text2);margin-bottom:5px;letter-spacing:.2px;text-transform:uppercase;}
.wpcal-fi{width:100%;border:1px solid var(--wpcal-border);border-radius:calc(var(--wpcal-radius)/1.5);padding:8px 11px;font-family:var(--wpcal-font);font-size:13px;color:var(--wpcal-text);background:var(--wpcal-surface);transition:.15s;outline:none;appearance:none;}
.wpcal-fi:focus{border-color:var(--wpcal-accent);box-shadow:0 0 0 3px var(--wpcal-accent-soft);}
textarea.wpcal-fi{min-height:80px;resize:vertical;line-height:1.5;}
.wpcal-fi-row{display:grid;grid-template-columns:1fr 1fr;gap:11px;}
.wpcal-check-row{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;user-select:none;}
.wpcal-check-row input[type=checkbox]{width:15px;height:15px;accent-color:var(--wpcal-accent);cursor:pointer;}
.wpcal-modal-footer{display:flex;justify-content:flex-end;gap:9px;margin-top:20px;padding-top:14px;border-top:1px solid var(--wpcal-border);align-items:center;flex-wrap:wrap;}
.wpcal-modal-footer-left{margin-right:auto;display:flex;gap:8px;}
.wpcal-btn{height:34px;padding:0 16px;border-radius:calc(var(--wpcal-radius)/1.5);cursor:pointer;font-family:var(--wpcal-font);font-size:13px;font-weight:500;border:none;transition:.15s;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
.wpcal-btn.pri{background:var(--wpcal-accent);color:#fff;}
.wpcal-btn.pri:hover{filter:brightness(.92);}
.wpcal-btn.sec{background:none;border:1px solid var(--wpcal-border);color:var(--wpcal-text);}
.wpcal-btn.sec:hover{background:var(--wpcal-surf2);}
.wpcal-btn.del{background:#fee2e2;color:#b91c1c;}
.wpcal-btn.del:hover{filter:brightness(.95);}
/* Tooltip */
.wpcal-tooltip{position:fixed;background:var(--wpcal-surface);border:1px solid var(--wpcal-border);border-radius:calc(var(--wpcal-radius)/1.2);padding:12px 14px;box-shadow:var(--wpcal-shadow);z-index:8000;max-width:260px;pointer-events:none;animation:wpcal-pop .15s ease;}
.wpcal-tooltip.hidden{display:none;}
.wpcal-tt-title{font-size:14px;font-weight:600;margin-bottom:6px;}
.wpcal-tt-row{display:flex;align-items:flex-start;gap:7px;font-size:12px;color:var(--wpcal-text2);margin-bottom:4px;}
.wpcal-tt-row svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;margin-top:1px;}
.wpcal-tt-dot{width:8px;height:8px;border-radius:3px;flex-shrink:0;margin-top:3px;}
/* Popovers & context menu */
.wpcal-day-pop{position:fixed;background:var(--wpcal-surface);border:1px solid var(--wpcal-border);border-radius:calc(var(--wpcal-radius)/1.2);padding:12px;box-shadow:var(--wpcal-shadow);z-index:8000;width:230px;animation:wpcal-pop .15s ease;}
.wpcal-day-pop.hidden{display:none;}
.wpcal-dp-hdr{font-size:13px;font-weight:600;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;}
.wpcal-dp-close{background:none;border:none;cursor:pointer;color:var(--wpcal-text3);font-size:17px;line-height:1;}
.wpcal-dp-ev{display:flex;align-items:center;gap:7px;padding:5px 4px;border-radius:7px;cursor:pointer;font-size:12px;transition:.1s;}
.wpcal-dp-ev:hover{background:var(--wpcal-surf2);}
.wpcal-dp-dot{width:8px;height:8px;border-radius:3px;flex-shrink:0;}
.wpcal-ctx{position:fixed;background:var(--wpcal-surface);border:1px solid var(--wpcal-border);border-radius:calc(var(--wpcal-radius)/1.2);padding:5px;box-shadow:var(--wpcal-shadow);z-index:9000;min-width:175px;animation:wpcal-pop .15s ease;}
.wpcal-ctx.hidden{display:none;}
.wpcal-ctx-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:7px;cursor:pointer;font-size:13px;color:var(--wpcal-text);transition:.1s;white-space:nowrap;}
.wpcal-ctx-item:hover{background:var(--wpcal-surf2);}
.wpcal-ctx-item svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}
.wpcal-ctx-item.red{color:var(--wpcal-danger);}
.wpcal-ctx-item.red:hover{background:#fee2e2;}
.wpcal-ctx-sep{height:1px;background:var(--wpcal-border);margin:4px 0;}
/* Toast */
.wpcal-toasts{position:fixed;bottom:22px;right:22px;z-index:99999;display:flex;flex-direction:column;gap:8px;pointer-events:none;}
.wpcal-toast{background:#1a1916;color:#f0efe8;padding:10px 18px;border-radius:calc(var(--wpcal-radius)/1.2);font-size:13px;font-family:var(--wpcal-font);box-shadow:var(--wpcal-shadow);display:flex;align-items:center;gap:8px;animation:wpcal-pop .3s ease;}
.wpcal-toast.success .wpcal-ti{color:#34d399;}
.wpcal-toast.error   .wpcal-ti{color:#f87171;}
.wpcal-toast.info    .wpcal-ti{color:#60a5fa;}
.wpcal-toast.out{animation:wpcal-fade-out .3s ease forwards;}
@keyframes wpcal-fade-out{to{opacity:0;transform:translateY(5px)}}
/* Footer */
.wpcal-footer{background:var(--wpcal-surface);border-top:1px solid var(--wpcal-border);padding:8px 16px;font-size:11px;color:var(--wpcal-text3);display:flex;align-items:center;justify-content:flex-end;flex-shrink:0;}
.wpcal-footer a{color:var(--wpcal-text3);text-decoration:none;transition:.15s;}
.wpcal-footer a:hover{color:var(--wpcal-accent);}
/* Auth bar */
.wpcal-auth-bar{background:var(--wpcal-accent-soft);border:1px solid var(--wpcal-accent);border-radius:calc(var(--wpcal-radius)/1.5);padding:10px 14px;font-size:13px;color:var(--wpcal-accent);margin:12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.wpcal-auth-bar a{color:var(--wpcal-accent);font-weight:600;}
/* Interest */
.wpcal-interest-btn{background:none;border:none;cursor:pointer;font-family:var(--wpcal-font);font-size:12px;color:var(--wpcal-text3);padding:0;transition:.15s;display:inline-flex;align-items:center;gap:4px;}
.wpcal-interest-btn:hover,.wpcal-interest-btn.active{color:#ef4444;}
/* Drag */
.wpcal-dragging{opacity:.45;}
.wpcal-drop-target{background:var(--wpcal-accent-soft)!important;}
/* Responsive */
@media(max-width:760px){.wpcal-sidebar{display:none}.wpcal-period{min-width:110px;font-size:13px}.wpcal-vbtn{padding:0 7px;font-size:11px}.wpcal-search{width:100px}.wpcal-topbar{height:auto;padding:6px 10px;gap:6px}.wpcal-mcell{min-height:60px}.wpcal-fi-row{grid-template-columns:1fr}}
@media(max-width:480px){.wpcal-vbtn[data-v=year],.wpcal-vbtn[data-v="4day"]{display:none}.wpcal-modal{padding:16px 14px}}


/* ── Highlighted events ──────────────────────────────────────────────── */
.wpcal-ev-hl {
    box-shadow: inset 0 0 0 2px gold !important;
    position: relative;
}
.wpcal-ev-hl::before {
    content: '★';
    position: absolute;
    top: 1px;
    right: 4px;
    font-size: 10px;
    color: gold;
    line-height: 1;
    pointer-events: none;
}

/* ── Auth modal ──────────────────────────────────────────────────────── */
.wpcal-auth-modal {
    width: 400px;
    max-width: calc(100vw - 32px);
    border-radius: 16px;
    overflow: hidden;
}
.wpcal-auth-tabs {
    display: flex;
    border-bottom: 1px solid var(--wpcal-border, #e2e0d8);
    margin-bottom: 20px;
}
.wpcal-auth-tab {
    flex: 1;
    padding: 10px;
    border: none;
    background: none;
    cursor: pointer;
    font-family: inherit;
    font-size: 14px;
    font-weight: 500;
    color: var(--wpcal-muted, #6b6a65);
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color .15s, border-color .15s;
}
.wpcal-auth-tab.active {
    color: var(--wpcal-accent, #2d6ef5);
    border-bottom-color: var(--wpcal-accent, #2d6ef5);
}
.wpcal-auth-pane { display: none; }
.wpcal-auth-pane.active { display: block; }
.wpcal-auth-error {
    background: #fee2e2;
    color: #b91c1c;
    border-radius: 8px;
    padding: 10px 14px;
    font-size: 13px;
    margin-bottom: 14px;
}
.wpcal-auth-error.hidden { display: none; }
.wpcal-auth-modal .wpcal-field { margin-bottom: 14px; }
.wpcal-auth-modal .wpcal-field label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: var(--wpcal-text, #1a1916);
    margin-bottom: 5px;
    text-transform: uppercase;
    letter-spacing: .3px;
}
.wpcal-auth-modal .wpcal-fi {
    width: 100%;
    border: 1px solid var(--wpcal-border, #e2e0d8);
    border-radius: var(--wpcal-radius, 10px);
    padding: 9px 12px;
    font-family: inherit;
    font-size: 14px;
    background: var(--wpcal-bg, #fff);
    color: var(--wpcal-text, #1a1916);
    transition: border-color .15s, box-shadow .15s;
}
.wpcal-auth-modal .wpcal-fi:focus {
    outline: none;
    border-color: var(--wpcal-accent, #2d6ef5);
    box-shadow: 0 0 0 3px rgba(45,110,245,.12);
}
.wpcal-check-row {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    margin-bottom: 16px;
    cursor: pointer;
    color: var(--wpcal-text, #1a1916);
}
.wpcal-auth-links {
    text-align: center;
    margin-top: 12px;
    font-size: 12px;
}
.wpcal-auth-links a { color: var(--wpcal-accent, #2d6ef5); text-decoration: none; }
.wpcal-btn.full { width: 100%; justify-content: center; }

/* ── User menu ───────────────────────────────────────────────────────── */
.wpcal-user-menu { position: relative; }
.wpcal-user-dropdown {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    background: var(--wpcal-surface, #fff);
    border: 1px solid var(--wpcal-border, #e2e0d8);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0,0,0,.12);
    min-width: 180px;
    z-index: 1000;
    overflow: hidden;
}
.wpcal-user-dropdown.hidden { display: none; }
.wpcal-user-info {
    padding: 12px 14px 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--wpcal-text, #1a1916);
    border-bottom: 1px solid var(--wpcal-border, #e2e0d8);
}
.wpcal-user-item {
    display: block;
    padding: 10px 14px;
    font-size: 13px;
    color: var(--wpcal-text, #1a1916);
    text-decoration: none;
    transition: background .1s;
}
.wpcal-user-item:hover { background: var(--wpcal-hover, #f7f6f2); }

/* ── Print dialog ────────────────────────────────────────────────────── */
.wpcal-print-modal { width: 420px; max-width: calc(100vw - 32px); }
.wpcal-print-options { display: flex; flex-direction: column; gap: 10px; }
.wpcal-print-opt {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 18px;
    border: 1px solid var(--wpcal-border, #e2e0d8);
    border-radius: var(--wpcal-radius, 10px);
    background: var(--wpcal-bg, #fff);
    cursor: pointer;
    text-align: left;
    transition: background .15s, border-color .15s;
    font-family: inherit;
}
.wpcal-print-opt:hover { background: var(--wpcal-hover, #f7f6f2); border-color: var(--wpcal-accent, #2d6ef5); }
.wpcal-print-opt:disabled { opacity: .5; cursor: not-allowed; }
.wpcal-print-opt-icon { font-size: 24px; flex-shrink: 0; }
.wpcal-print-opt-label { font-size: 14px; font-weight: 600; color: var(--wpcal-text, #1a1916); display: block; }
.wpcal-print-opt-desc  { font-size: 12px; color: var(--wpcal-muted, #6b6a65); display: block; margin-top: 2px; }

/* PDF spinner */
.wpcal-pdf-spinner {
    display: inline-block;
    width: 18px; height: 18px;
    border: 2px solid var(--wpcal-border, #e2e0d8);
    border-top-color: var(--wpcal-accent, #2d6ef5);
    border-radius: 50%;
    animation: wpcalSpin .7s linear infinite;
    vertical-align: middle;
    margin-right: 8px;
}
@keyframes wpcalSpin { to { transform: rotate(360deg); } }

/* ── Print styles ────────────────────────────────────────────────────── */
@media print {
    /* Hide all interactive chrome */
    .wpcal-topbar,
    .wpcal-sidebar,
    .wpcal-toasts,
    .wpcal-ctx,
    .wpcal-overlay,
    .wpcal-tooltip,
    .wpcal-day-pop,
    .wpcal-footer,
    .wpcal-ev-overlay,
    .wpcal-auth-overlay,
    .wpcal-print-opt,
    [data-act],
    .wpcal-tb-right,
    .wpcal-user-menu { display: none !important; }

    /* Page setup */
    @page { margin: 10mm; size: A4 landscape; }
    body { background: #fff !important; }

    /* Calendar container */
    .wpcal-wrap {
        box-shadow: none !important;
        border: none !important;
        min-height: 0 !important;
        overflow: visible !important;
        width: 100% !important;
        max-width: 100% !important;
    }

    /* Topbar — keep title, hide buttons */
    .wpcal-topbar {
        display: flex !important;
        border: none !important;
        box-shadow: none !important;
        padding: 0 0 8px !important;
    }
    .wpcal-topbar-title { font-size: 16px !important; font-weight: 700 !important; }

    /* Month grid — expand fully */
    .wpcal-m-grid,
    .wpcal-wk-body,
    .wpcal-day-body { overflow: visible !important; }

    .wpcal-mcell {
        min-height: 80px !important;
        page-break-inside: avoid;
    }

    /* Week/day time grid */
    .wpcal-wk-wrap { overflow: visible !important; height: auto !important; }
    .wpcal-wk-body { height: auto !important; overflow: visible !important; }

    /* Events — ensure colors print (Chrome requires -webkit-print-color-adjust) */
    .wpcal-ev,
    .wpcal-mev,
    .wpcal-allday-strip {
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
        color-adjust: exact !important;
    }

    /* Sidebar if open — hide it */
    .wpcal-sidebar { display: none !important; }

    /* Legend/header rows */
    .wpcal-m-head,
    .wpcal-wk-head { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }

    /* Ensure agenda view prints full height */
    .wpcal-agenda { overflow: visible !important; }

    /* Print footer */
    .wpcal-wrap::after {
        content: "Printed from " attr(data-site-url) " · Waplixo Calendar";
        display: block;
        text-align: center;
        font-size: 10px;
        color: #9b9994;
        margin-top: 12px;
        border-top: 1px solid #e2e0d8;
        padding-top: 6px;
    }
}

/* ── Share dialog QR code ─────────────────────────────────────────── */
#wpcal-share-dialog canvas,
#wpcal-share-dialog img {
    display: block;
    border-radius: 8px;
    border: 4px solid #fff;
    box-shadow: 0 2px 12px rgba(0,0,0,.08);
}

/* ── Search enhancements ─────────────────────────────────────────────── */
.wpcal-search-filter-btn {
    position: absolute;
    right: 6px; top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px;
    color: var(--wpcal-muted, #6b6a65);
    display: flex; align-items: center;
}
.wpcal-search-filter-btn:hover { color: var(--wpcal-accent, #2d6ef5); }
.wpcal-search-filter-btn svg {
    width: 14px; height: 14px;
    stroke: currentColor; fill: none;
    stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
}
.wpcal-search-icon {
    position: absolute;
    left: 10px; top: 50%;
    transform: translateY(-50%);
    width: 14px; height: 14px;
    stroke: var(--wpcal-muted, #6b6a65); fill: none;
    stroke-width: 2; pointer-events: none;
}
.wpcal-search { padding-right: 32px !important; }

/* Search results dropdown */
.wpcal-search-results {
    position: absolute;
    top: calc(100% + 4px);
    left: 0; right: 0;
    background: var(--wpcal-surface, #fff);
    border: 1px solid var(--wpcal-border, #e2e0d8);
    border-radius: var(--wpcal-radius, 10px);
    box-shadow: 0 8px 24px rgba(0,0,0,.12);
    z-index: 500;
    max-height: 360px;
    overflow-y: auto;
}
.wpcal-search-results.hidden { display: none; }

.wpcal-sr-header {
    padding: 8px 12px 4px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .4px;
    color: var(--wpcal-muted, #6b6a65);
    border-bottom: 1px solid var(--wpcal-border, #e2e0d8);
}
.wpcal-sr-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 12px;
    cursor: pointer;
    border-bottom: 1px solid var(--wpcal-hover, #f7f6f2);
    transition: background .1s;
}
.wpcal-sr-item:last-child { border-bottom: none; }
.wpcal-sr-item:hover { background: var(--wpcal-hover, #f7f6f2); }
.wpcal-sr-dot {
    width: 8px; height: 8px;
    border-radius: 3px;
    flex-shrink: 0;
    margin-top: 4px;
}
.wpcal-sr-info { flex: 1; min-width: 0; }
.wpcal-sr-title {
    font-size: 13px;
    font-weight: 500;
    color: var(--wpcal-text, #1a1916);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.wpcal-sr-title mark {
    background: #fef08a;
    color: inherit;
    border-radius: 2px;
    padding: 0 1px;
}
.wpcal-sr-meta {
    font-size: 11px;
    color: var(--wpcal-muted, #6b6a65);
    margin-top: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.wpcal-sr-desc {
    font-size: 11px;
    color: var(--wpcal-muted, #6b6a65);
    margin-top: 3px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.wpcal-sr-desc mark { background: #fef08a; color: inherit; border-radius: 2px; padding: 0 1px; }
.wpcal-sr-cal {
    font-size: 10px;
    font-weight: 600;
    padding: 2px 7px;
    border-radius: 100px;
    white-space: nowrap;
    align-self: center;
    flex-shrink: 0;
}
.wpcal-sr-empty {
    padding: 16px 12px;
    font-size: 13px;
    color: var(--wpcal-muted, #6b6a65);
    text-align: center;
}
.wpcal-sr-loading {
    padding: 14px 12px;
    font-size: 13px;
    color: var(--wpcal-muted, #6b6a65);
    display: flex;
    align-items: center;
    gap: 8px;
}
.wpcal-spin-icon {
    width: 16px; height: 16px;
    animation: wpcalSpin .7s linear infinite;
    flex-shrink: 0;
}

/* Advanced filter panel */
.wpcal-search-filters {
    position: absolute;
    top: calc(100% + 4px);
    left: 0; right: 0;
    background: var(--wpcal-surface, #fff);
    border: 1px solid var(--wpcal-border, #e2e0d8);
    border-radius: var(--wpcal-radius, 10px);
    box-shadow: 0 8px 24px rgba(0,0,0,.12);
    z-index: 501;
    padding: 14px;
}
.wpcal-search-filters.hidden { display: none; }
.wpcal-sf-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 10px;
}
.wpcal-sf-field label {
    display: block;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .3px;
    color: var(--wpcal-muted, #6b6a65);
    margin-bottom: 4px;
}
.wpcal-sf-field input,
.wpcal-sf-field select {
    width: 100%;
    border: 1px solid var(--wpcal-border, #e2e0d8);
    border-radius: 8px;
    padding: 6px 10px;
    font-family: inherit;
    font-size: 12px;
    background: var(--wpcal-bg, #fff);
    color: var(--wpcal-text, #1a1916);
}
.wpcal-sf-field input:focus,
.wpcal-sf-field select:focus {
    outline: none;
    border-color: var(--wpcal-accent, #2d6ef5);
}
.wpcal-sf-actions {
    display: flex;
    gap: 8px;
    margin-top: 4px;
}
