/* OBSLAppClocks v20 — consolidated production UI ownership */

/* Event + Google Calendar v17: compact, content-driven and fully clipped. */
#event-frame.event-frame{
  display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;align-items:stretch!important;
  gap:6px!important;padding:6px!important;height:auto!important;min-height:0!important;max-height:none!important;
  overflow:hidden!important;isolation:isolate!important;border-radius:inherit!important;
}
#event-frame>.upcoming-wrap,#event-frame>.calendar-ticker{min-width:0!important;height:auto!important;min-height:44px!important;max-height:none!important;margin:0!important;align-self:stretch!important}
#event-frame>.upcoming-wrap{position:relative!important;overflow:hidden!important;border-radius:10px!important}
#event-frame .upcoming-box{position:relative!important;height:100%!important;min-height:44px!important;max-height:none!important;margin:0!important;overflow:hidden!important;border-radius:10px!important;isolation:isolate!important}
#event-frame .upcoming-stage{position:relative!important;display:grid!important;place-items:center!important;height:auto!important;min-height:44px!important;overflow:visible!important}
#event-frame .upcoming-slide{position:relative!important;display:block!important;width:100%!important;height:auto!important;min-height:44px!important;max-height:none!important;box-sizing:border-box!important;padding:6px 36px 6px 9px!important;white-space:normal!important;overflow:visible!important;overflow-wrap:anywhere!important;word-break:normal!important;line-height:1.28!important;text-align:center!important}
#event-frame>.calendar-ticker{position:relative!important;display:grid!important;grid-template-columns:auto minmax(0,1fr) auto!important;align-items:center!important;gap:6px!important;padding:5px 7px!important;overflow:hidden!important;border-radius:10px!important;isolation:isolate!important}
#event-frame .calendar-window{position:relative!important;display:block!important;width:100%!important;min-width:0!important;height:auto!important;min-height:1.45em!important;max-height:none!important;overflow:hidden!important;white-space:normal!important}
#event-frame .calendar-track{position:relative!important;inset:auto!important;display:block!important;width:100%!important;min-width:0!important;height:auto!important;min-height:1.45em!important;white-space:normal!important;overflow-wrap:anywhere!important;line-height:1.28!important;transform:none}
#event-frame .calendar-track .calendar-item{display:block!important;width:100%!important;min-width:0!important;white-space:normal!important;overflow-wrap:anywhere!important;text-overflow:clip!important}
#event-frame>.calendar-speed-panel,#event-frame>.section-config-panel,#event-frame>.event-admin-panel{grid-column:1/-1!important}
@media(max-width:760px){#event-frame.event-frame{grid-template-columns:1fr!important;gap:5px!important;padding:5px!important}#event-frame>.upcoming-wrap,#event-frame>.calendar-ticker{min-height:42px!important}#event-frame .upcoming-slide{min-height:42px!important;padding:5px 32px 5px 7px!important;font-size:clamp(12px,3.5vw,16px)!important}#event-frame>.calendar-ticker{min-height:40px!important;padding:4px 6px!important}}

/* Weather cards grow together according to real content. No fixed one-height owner. */
#weather-widget{--weather-card-h:auto!important;align-items:stretch!important}
#weather-widget>.now-panel,#weather-widget>.forecast-panel{
  height:auto!important;min-height:0!important;max-height:none!important;
}
#weather-widget .forecast-panel{
  display:flex!important;flex-direction:column!important;padding:5px 7px 6px!important;overflow:hidden!important;
}
#weather-widget .forecast-panel .hours{
  flex:1 1 auto!important;height:auto!important;min-height:104px!important;max-height:none!important;
  align-items:stretch!important;overflow-x:auto!important;overflow-y:hidden!important;
}
#weather-widget .forecast-panel .hour{height:auto!important;min-height:104px!important;flex:1 0 78px!important;padding:4px!important}

/* Multi-location Weather is INSIDE forecast-panel, directly below hourly metrics. */
.weather-favorites-inline{
  position:relative;z-index:3;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;
  gap:7px;margin-top:5px;padding:7px 1px 0;border-top:1px solid color-mix(in srgb,var(--line,#d1d5db) 72%,transparent);
  min-width:0;background:transparent!important;
}
.weather-favorites-label{display:flex;align-items:center;gap:4px;font-size:10px;font-weight:800;white-space:nowrap;opacity:.78}
.weather-favorites-list{display:flex;align-items:stretch;justify-content:space-evenly;gap:7px;min-width:0;width:100%}
.weather-favorite-card{
  appearance:none;-webkit-appearance:none;border:1px solid color-mix(in srgb,var(--line,#cbd5e1) 82%,transparent);
  background:color-mix(in srgb,var(--panel,#fff) 84%,transparent);color:inherit;border-radius:10px;
  min-width:0;flex:1 1 0;display:flex;align-items:center;justify-content:center;gap:7px;padding:6px 8px;
  cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease,box-shadow .16s ease;
  box-shadow:0 1px 3px rgba(15,23,42,.04);overflow:hidden;text-align:left;
}
.weather-favorite-card:hover{transform:translateY(-1px);border-color:#60a5fa}
.weather-favorite-card.is-active{border-color:#2583ff;background:color-mix(in srgb,#2583ff 13%,var(--panel,#fff));box-shadow:0 0 0 1px color-mix(in srgb,#2583ff 32%,transparent)}
.weather-favorite-icon{width:28px;height:28px;flex:0 0 28px;display:grid;place-items:center;font-size:22px;line-height:1}
.weather-favorite-icon img{width:26px;height:26px;display:block;object-fit:cover;border-radius:7px}
.weather-favorite-copy{display:flex;min-width:0;flex-direction:column;line-height:1.13}
.weather-favorite-name{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.weather-favorite-meta{margin-top:2px;font-size:9px;opacity:.68;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.weather-favorites-empty{display:grid;place-items:center;min-height:38px;width:100%;font-size:10px;opacity:.62}
.weather-favorites-manage{border:0;background:transparent;color:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:44px;padding:3px;cursor:pointer;border-radius:8px;font-size:17px}
.weather-favorites-manage span{font-size:8px;font-weight:700;opacity:.7}.weather-favorites-manage:hover{background:color-mix(in srgb,#2583ff 8%,transparent)}
@media(max-width:900px){
  .weather-favorites-inline{grid-template-columns:1fr auto}.weather-favorites-label{display:none}
  .weather-favorites-list{overflow-x:auto;justify-content:flex-start;padding-bottom:1px;scrollbar-width:thin}
  .weather-favorite-card{flex:0 0 clamp(104px,25vw,142px)}
}
@media(max-width:520px){#weather-widget .forecast-panel .hours{min-height:96px!important}#weather-widget .forecast-panel .hour{min-height:96px!important}.weather-favorite-card{flex-basis:105px;padding:5px}.weather-favorite-icon{width:24px;height:24px;flex-basis:24px;font-size:19px}.weather-favorite-icon img{width:22px;height:22px}.weather-favorite-name{font-size:10px}.weather-favorite-meta{font-size:8px}}

/* Admin controls embedded in the existing location picker. */
.favorite-location-tools{margin-top:9px;padding-top:9px;border-top:1px solid var(--line,#d1d5db)}
.favorite-location-tools-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px;font-weight:800;font-size:12px}
.favorite-location-tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.favorite-location-tools-grid label{min-width:0}
.favorite-icon-presets{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0 8px}
.favorite-icon-preset,.wf-presets button{width:34px;height:34px;border:1px solid var(--line,#d1d5db);border-radius:9px;background:var(--panel,#fff);font-size:20px;cursor:pointer}
.favorite-icon-preset.is-selected,.wf-presets button.is-selected{border-color:#2583ff;box-shadow:0 0 0 2px color-mix(in srgb,#2583ff 20%,transparent);background:color-mix(in srgb,#2583ff 9%,var(--panel,#fff))}
.favorite-location-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}.favorite-location-actions button{flex:1 1 135px}
#favorite-location-state{display:block;margin-top:6px;font-size:10px;min-height:1.2em}
@media(max-width:520px){.favorite-location-tools-grid{grid-template-columns:1fr}}

/* Weather favorite management dialog. */
.weather-favorites-modal,.moments-manager-modal,.moment-detail-modal{position:fixed;inset:0;z-index:100080;background:rgba(15,23,42,.48);backdrop-filter:blur(5px);display:grid;place-items:center;padding:18px}
.weather-favorites-modal[hidden],.moments-manager-modal[hidden],.moment-detail-modal[hidden]{display:none!important}
.weather-favorites-dialog{width:min(900px,96vw);max-height:90vh;overflow:auto;background:var(--panel,#fff);color:var(--text,#111);border:1px solid var(--line,#d1d5db);border-radius:18px;box-shadow:0 24px 70px rgba(15,23,42,.24);padding:16px;position:relative}
.wf-close,.moment-modal-close{position:absolute;right:12px;top:10px;width:34px;height:34px;border:0;border-radius:50%;background:color-mix(in srgb,var(--panel,#fff) 75%,#94a3b8 25%);font-size:24px;cursor:pointer;z-index:3}
.wf-dialog-head,.moments-manager-head{display:flex;align-items:start;justify-content:space-between;gap:12px;padding-right:38px}.wf-dialog-head h3,.moments-manager-head h3{margin:0 0 3px}.wf-dialog-head p,.moments-manager-head p{margin:0;font-size:11px;opacity:.68}
.wf-manager-list{display:grid;gap:6px;margin:12px 0}.wf-manager-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;padding:7px;border:1px solid var(--line,#d1d5db);border-radius:11px}.wf-manager-copy{display:flex;flex-direction:column;min-width:0}.wf-manager-copy small{font-size:9px;opacity:.65;white-space:normal;overflow-wrap:anywhere}.wf-manager-actions,.moments-manager-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.wf-manager-actions button,.moments-manager-actions button{border:1px solid var(--line,#d1d5db);background:var(--panel,#fff);border-radius:7px;padding:5px 7px;cursor:pointer}.wf-manager-actions .danger,.moments-manager-actions .danger{color:#dc2626}.wf-editor{border-top:1px solid var(--line,#d1d5db);padding-top:10px}.wf-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.wf-edit-grid label{display:grid;gap:3px;font-size:10px;font-weight:700}.wf-edit-grid input{min-width:0;width:100%;box-sizing:border-box}.wf-icon-label{font-size:10px;font-weight:800;margin-top:8px}.wf-editor-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:10px}.wf-empty{padding:14px;text-align:center;opacity:.65}
@media(max-width:620px){.wf-manager-row{grid-template-columns:auto minmax(0,1fr)}.wf-manager-actions{grid-column:1/-1}.wf-edit-grid{grid-template-columns:1fr}}

/* Main dashboard lower grid: Countdown + Moments on left, Market spans both rows. */
#bottom-grid{grid-template-columns:minmax(0,2.8fr) minmax(245px,1.2fr)!important;grid-template-areas:"countdown market" "moments market"!important;align-items:start!important}
#countdown-panel{grid-area:countdown}.market-panel{grid-area:market}.moments-panel{grid-area:moments}
.moments-panel{padding:9px 10px!important;min-width:0;overflow:hidden}
.moments-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.moments-heading-copy{display:flex;align-items:center;gap:8px;min-width:0}.moments-head-icon{font-size:20px}.moments-title{font-size:16px;font-weight:850}.moments-subtitle{font-size:10px;opacity:.64;margin-top:1px}.moments-head-actions{display:flex;gap:5px;align-items:center}.moments-head-actions button{border:0;background:transparent;color:#1677e8;font-weight:700;font-size:10px;cursor:pointer;padding:5px 6px;border-radius:7px}.moments-head-actions button:hover{background:color-mix(in srgb,#1677e8 8%,transparent)}
.moments-layout{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:9px;align-items:stretch}.moments-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0}.moment-card{border:0;background:transparent;min-width:0;cursor:pointer;border-radius:10px;transition:transform .18s ease,box-shadow .18s ease;overflow:hidden}.moment-card:hover{transform:translateY(-2px);box-shadow:0 7px 18px rgba(15,23,42,.11)}.moment-card-media{height:94px;position:relative;overflow:hidden;border-radius:9px;background:color-mix(in srgb,var(--panel,#fff) 70%,#cbd5e1 30%)}.moment-card-media img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .3s ease}.moment-card:hover .moment-card-media img{transform:scale(1.03)}.moment-card-placeholder{display:grid;place-items:center;height:100%;font-size:30px}.moment-source-badge{position:absolute;left:5px;bottom:5px;max-width:calc(100% - 10px);padding:2px 5px;border-radius:999px;background:rgba(15,23,42,.72);color:#fff;font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.moment-card-body{padding:5px 2px 1px}.moment-card-title{display:block;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.moment-card-excerpt{font-size:8.5px;line-height:1.25;opacity:.68;margin:2px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.moment-card-body small{font-size:8px;opacity:.6}.moments-empty{grid-column:1/-1;display:grid;place-items:center;min-height:120px;text-align:center;font-size:11px;opacity:.64;border:1px dashed color-mix(in srgb,var(--line,#d1d5db) 82%,transparent);border-radius:10px}
@media(max-width:840px){#bottom-grid{grid-template-columns:1fr!important;grid-template-areas:"countdown" "moments" "market"!important}.moments-layout{grid-template-columns:1fr 120px}}

/* In-App article detail */
.moment-detail-dialog{width:min(820px,96vw);max-height:92vh;overflow:auto;background:var(--panel,#fff);color:var(--text,#111);border:1px solid var(--line,#d1d5db);border-radius:19px;box-shadow:0 25px 75px rgba(15,23,42,.28);position:relative}.moment-article-cover{width:100%;max-height:360px;object-fit:cover;display:block;border-radius:19px 19px 0 0}.moment-article-head{padding:22px 24px 7px}.moment-article-head small{opacity:.62}.moment-article-head h2{font-size:clamp(22px,4vw,34px);line-height:1.13;margin:6px 0}.moment-article-lead{font-size:14px;line-height:1.55;opacity:.76}.moment-article-content{padding:8px 24px 22px;line-height:1.7;font-size:14px;overflow-wrap:anywhere}.moment-article-content img{max-width:100%;height:auto;border-radius:10px}.moment-article-content a{color:#1677e8}.moment-article-content blockquote{margin:14px 0;padding:8px 13px;border-left:4px solid #60a5fa;background:color-mix(in srgb,#60a5fa 8%,transparent);border-radius:0 8px 8px 0}.moment-article-actions{display:flex;gap:8px;flex-wrap:wrap;padding:0 24px 24px}.moment-source-link{display:inline-flex;align-items:center;text-decoration:none;border:1px solid #60a5fa;border-radius:9px;padding:7px 10px;color:#1677e8;font-weight:750}.moment-loading{padding:50px;text-align:center}

/* Moments Admin / HTML5 editor */
.moments-manager-dialog{width:min(1180px,97vw);max-height:94vh;overflow:auto;background:var(--panel,#fff);color:var(--text,#111);border:1px solid var(--line,#d1d5db);border-radius:18px;box-shadow:0 26px 80px rgba(15,23,42,.28);padding:16px;position:relative}.moments-manager-layout{display:grid;grid-template-columns:minmax(260px,.82fr) minmax(420px,1.5fr);gap:12px;margin-top:12px}.moments-manager-list{display:grid;gap:6px;align-content:start}.moments-manager-row{display:grid;grid-template-columns:52px minmax(0,1fr);gap:7px;padding:7px;border:1px solid var(--line,#d1d5db);border-radius:10px}.moments-manager-thumb{grid-row:1/3;width:52px;height:45px;border-radius:7px;background:#e5e7eb;display:grid;place-items:center;overflow:hidden}.moments-manager-thumb img{width:100%;height:100%;object-fit:cover}.moments-manager-row>span:nth-child(2){display:flex;flex-direction:column;min-width:0}.moments-manager-row strong{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.moments-manager-row small{font-size:8px;opacity:.65}.moments-manager-actions{grid-column:2}.moment-editor-wrap{border:1px solid var(--line,#d1d5db);border-radius:12px;padding:11px}.moment-editor-wrap h4{margin:0 0 8px}.moment-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.moment-editor-grid label{display:grid;gap:3px;font-size:9px;font-weight:800;min-width:0}.moment-editor-grid .wide{grid-column:1/-1}.moment-editor-grid :is(input,textarea,select){min-width:0;width:100%;box-sizing:border-box}.moment-publish-row{display:flex!important;grid-column:1/-1;grid-template-columns:auto 1fr!important;align-items:center;justify-content:flex-start!important}.moment-publish-row input{width:auto!important}.moment-editor-label{display:block;font-size:10px;font-weight:800;margin:9px 0 4px}.moment-editor-toolbar{display:flex;flex-wrap:wrap;gap:4px;padding:5px;border:1px solid var(--line,#d1d5db);border-bottom:0;border-radius:9px 9px 0 0;background:color-mix(in srgb,var(--panel,#fff) 86%,#94a3b8 14%)}.moment-editor-toolbar button{border:1px solid color-mix(in srgb,var(--line,#d1d5db) 78%,transparent);background:var(--panel,#fff);border-radius:6px;padding:5px 7px;cursor:pointer}.moment-html-editor{min-height:230px;max-height:420px;overflow:auto;border:1px solid var(--line,#d1d5db);border-radius:0 0 9px 9px;padding:12px;background:var(--panel,#fff);line-height:1.6;outline:none}.moment-html-editor:focus{border-color:#60a5fa;box-shadow:inset 0 0 0 1px #60a5fa}.moment-html-editor img{max-width:100%;height:auto}.moment-editor-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:9px}
@media(max-width:850px){.moments-manager-layout{grid-template-columns:1fr}.moment-editor-grid{grid-template-columns:1fr}.moment-editor-grid .wide{grid-column:auto}}

/* System Health owns Auto Repair + Release Update Center. */
.system-health-production-tools{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:10px}.system-health-feature-card{border:1px solid var(--line,#d1d5db);border-radius:12px;padding:10px;background:color-mix(in srgb,var(--panel,#fff) 92%,#60a5fa 8%)}.system-health-feature-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:6px}.system-health-feature-head h4{margin:0;font-size:13px}.system-health-feature-head p{margin:2px 0 0;font-size:9px;opacity:.65}.system-health-feature-card .system-module-actions{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.system-health-repair-result{font-size:9px;line-height:1.4;min-height:1.4em;margin-top:5px}.release-version-row{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:7px}.release-version-tile{padding:7px;border-radius:8px;background:color-mix(in srgb,var(--panel,#fff) 88%,#94a3b8 12%)}.release-version-tile span{display:block;font-size:8px;opacity:.65}.release-version-tile strong{font-size:12px}
@media(max-width:650px){.system-health-production-tools{grid-template-columns:1fr}}

html.dark .weather-favorite-card,html.dark .weather-favorites-dialog,html.dark .moments-manager-dialog,html.dark .moment-detail-dialog,html.dark .moment-editor-wrap,html.dark .moment-html-editor{background:#171b21!important;border-color:#3b424d!important;color:#f8fafc!important}


/* Google settings: compact accordion, content-driven. */
#calendar-speed-panel.google-calendar-panel{max-height:min(46dvh,390px)!important;padding:6px!important;margin:5px 0 0!important;border-radius:11px!important;overflow:auto!important}
#calendar-speed-panel .google-calendar-panel-head{padding:2px 3px 5px!important;font-size:11px!important}
#calendar-speed-panel .google-calendar-panel-head span{font-size:9px!important;line-height:1.25!important}
#calendar-speed-panel .google-calendar-accordion{gap:5px!important}
#calendar-speed-panel .google-calendar-section>summary{padding:7px 9px!important;font-size:12px!important;min-height:34px!important}
#calendar-speed-panel .google-calendar-section-body{padding:0 7px 7px!important}
#calendar-speed-panel .google-calendar-connect-grid{gap:5px!important}
#calendar-speed-panel .google-calendar-connect-grid .calendar-connect-inside{margin:0!important;min-height:36px!important;height:auto!important;padding:6px 8px!important;font-size:11px!important;border-radius:9px!important}
#calendar-speed-panel .google-calendar-admin-config,#calendar-speed-panel .google-calendar-notify-config{gap:6px!important;padding:0 7px 7px!important}
@media(max-width:760px){#calendar-speed-panel.google-calendar-panel{max-height:42dvh!important;padding:5px!important}#calendar-speed-panel .google-calendar-panel-head span{display:none!important}#calendar-speed-panel .google-calendar-connect-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:5px!important}#calendar-speed-panel .google-calendar-connect-grid .calendar-connect-inside{min-height:34px!important;padding:5px 7px!important;font-size:10px!important;line-height:1.15!important;white-space:normal!important}#calendar-speed-panel .google-calendar-section>summary{padding:6px 8px!important;min-height:32px!important}}
@media(max-width:340px){#calendar-speed-panel .google-calendar-connect-grid{grid-template-columns:1fr!important}}

/* Favorite places live inside the 24h panel. No separate "Địa điểm yêu thích" heading; all cards justify evenly. */
.weather-favorites-inline{
  display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;align-items:stretch!important;gap:6px!important;
  margin-top:5px!important;padding:6px 0 0!important;min-width:0!important;
}
.weather-favorites-label{display:none!important}
.weather-favorites-list{
  display:grid!important;grid-template-columns:repeat(var(--weather-favorite-count,1),minmax(0,1fr))!important;
  align-items:stretch!important;justify-content:stretch!important;gap:6px!important;width:100%!important;min-width:0!important;overflow:visible!important;padding:0!important;
}
.weather-favorite-card{width:100%!important;min-width:0!important;max-width:none!important;flex:none!important;padding:5px 6px!important;gap:5px!important}
.weather-favorites-manage{min-width:42px!important;width:42px!important;padding:2px!important}
@media(max-width:620px){
  .weather-favorites-inline{gap:4px!important;padding-top:5px!important}
  .weather-favorites-list{gap:4px!important}
  .weather-favorite-card{min-height:48px!important;flex-direction:column!important;gap:2px!important;padding:4px 2px!important;text-align:center!important}
  .weather-favorite-icon{width:21px!important;height:21px!important;flex:0 0 21px!important;font-size:18px!important}
  .weather-favorite-icon img{width:20px!important;height:20px!important;border-radius:5px!important}
  .weather-favorite-copy{width:100%!important;align-items:center!important}
  .weather-favorite-name{width:100%!important;font-size:8.5px!important;line-height:1.05!important;text-align:center!important}
  .weather-favorite-meta{width:100%!important;font-size:7.2px!important;line-height:1.05!important;text-align:center!important;margin-top:1px!important}
  .weather-favorites-manage{min-width:36px!important;width:36px!important;font-size:15px!important}
  .weather-favorites-manage span{font-size:7px!important}
}

/* Countdown: horizontal swiping should feel native on iOS without blocking normal page vertical scroll. */
.cd-carousel{touch-action:pan-y pinch-zoom!important;overscroll-behavior-x:contain!important;-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important}
.cd-book,.cd-page,.cd-embedded-main{touch-action:pan-y!important}

/* Moments: date is plain text (no iOS calendar glyph '17'), and copy aligns consistently. */
.moment-card-body{display:grid!important;grid-template-columns:minmax(0,1fr)!important;align-content:start!important;gap:2px!important;padding:6px 2px 2px!important;text-align:left!important}
.moment-card-title{display:block!important;width:100%!important;line-height:1.25!important;margin:0!important}
.moment-card-excerpt{display:-webkit-box!important;width:100%!important;margin:0!important;line-height:1.3!important}
.moment-card-date{display:block!important;width:100%!important;margin-top:1px!important;font-size:8px!important;line-height:1.15!important;opacity:.58!important;text-align:left!important;font-variant-numeric:tabular-nums!important}

/* Article detail close: glyph-only X, intentionally small and flat. */
.moment-detail-dialog>.moment-modal-close{
  right:8px!important;top:7px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;
  padding:0!important;margin:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;
  color:inherit!important;font:500 19px/22px system-ui,-apple-system,"Segoe UI",sans-serif!important;letter-spacing:0!important;text-align:center!important;
  appearance:none!important;-webkit-appearance:none!important;
}
.moment-detail-dialog>.moment-modal-close:hover,.moment-detail-dialog>.moment-modal-close:focus,.moment-detail-dialog>.moment-modal-close:active{background:transparent!important;border:0!important;box-shadow:none!important;transform:none!important;outline:none!important}

/* v14.2 — Moments: full-width rail, seamless slow ping-pong, no QR card. */
.moments-subtitle{display:none!important}
.moments-head{margin-bottom:8px!important}
.moments-heading-copy{align-items:center!important}
.moments-layout{display:block!important;grid-template-columns:none!important;width:100%!important;min-width:0!important}
.moments-list{
  display:flex!important;grid-template-columns:none!important;gap:9px!important;width:100%!important;min-width:0!important;
  overflow-x:auto!important;overflow-y:hidden!important;scroll-behavior:auto!important;scroll-snap-type:none!important;
  overscroll-behavior-inline:contain!important;-webkit-overflow-scrolling:touch!important;touch-action:pan-x pan-y!important;
  scrollbar-width:none!important;padding:0 0 3px!important;will-change:scroll-position;
}
.moments-list::-webkit-scrollbar{display:none!important}
.moment-card{flex:0 0 clamp(205px,calc((100% - 18px)/3),360px)!important;max-width:360px!important;min-width:0!important}
.moment-card-media{height:112px!important}
@media(max-width:760px){.moment-card{flex-basis:min(68vw,300px)!important}.moment-card-media{height:108px!important}}
@media(max-width:520px){.moment-card{flex-basis:min(78vw,286px)!important}.moment-card-media{height:104px!important}}

/* v14.2 — In-App article is always centered in the visual viewport on phones/tablets. */
html.moment-modal-open,html.moment-modal-open body{overflow:hidden!important;overscroll-behavior:none!important}
.moment-detail-modal{
  position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;width:100dvw!important;height:100dvh!important;box-sizing:border-box!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))!important;
  overflow:hidden!important;
}
.moment-detail-modal[hidden]{display:none!important}
.moment-detail-dialog{
  position:relative!important;inset:auto!important;transform:none!important;margin:auto!important;box-sizing:border-box!important;
  width:min(920px,calc(100vw - 24px))!important;max-width:calc(100vw - 24px)!important;max-height:calc(100vh - 24px)!important;
  width:min(920px,calc(100dvw - 24px))!important;max-width:calc(100dvw - 24px)!important;max-height:calc(100dvh - 24px)!important;overflow:auto!important;overflow-x:hidden!important;
  overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch!important;
}
.moment-article{display:block!important;width:100%!important;min-width:0!important;box-sizing:border-box!important}
.moment-article-cover{
  display:block!important;width:100%!important;height:auto!important;max-height:none!important;object-fit:contain!important;object-position:center center!important;
  border-radius:19px 19px 0 0!important;background:color-mix(in srgb,var(--panel,#fff) 94%,#0f172a 6%)!important;
}
.moment-article-content img{display:block!important;max-width:100%!important;width:auto!important;height:auto!important;object-fit:contain!important;margin-inline:auto!important}
@media(max-width:640px){
  .moment-detail-modal{padding:max(6px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))!important}
  .moment-detail-dialog{width:calc(100vw - 12px)!important;max-width:calc(100vw - 12px)!important;max-height:calc(100vh - 12px)!important;width:calc(100dvw - 12px)!important;max-width:calc(100dvw - 12px)!important;max-height:calc(100dvh - 12px)!important;border-radius:14px!important}
  .moment-article-cover{border-radius:14px 14px 0 0!important}
  .moment-article-head{padding:18px 16px 6px!important}
  .moment-article-content{padding:8px 16px 18px!important}
  .moment-article-actions{padding:0 16px 18px!important}
}

/* v14.3 — Strong browser/PWA content-protection deterrents. Native screenshot blocking still needs a FLAG_SECURE bridge. */
html.obsl-content-protected,html.obsl-content-protected body,html.obsl-content-protected body *{-webkit-touch-callout:none!important;-webkit-user-select:none!important;user-select:none!important}
html.obsl-content-protected img,html.obsl-content-protected video{-webkit-user-drag:none!important;user-drag:none!important}
html.obsl-content-protected input,html.obsl-content-protected textarea,html.obsl-content-protected [contenteditable="true"]{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important}
#obsl-capture-shield{position:fixed;inset:0;z-index:2147483647;background:#0b0f16;color:#fff;display:grid;place-items:center;text-align:center;padding:24px;font:700 15px/1.45 system-ui,-apple-system,"Segoe UI",sans-serif;letter-spacing:.01em}
#obsl-capture-shield[hidden]{display:none!important}
html.obsl-capture-shield body>*:not(#obsl-capture-shield){visibility:hidden!important}
@media print{html,body{background:#fff!important}body>*{display:none!important}body::before{content:"Nội dung OBSL được bảo vệ";display:block!important;padding:40px;font:700 18px system-ui;color:#111}}

/* Every close X is glyph-only. */
button.obsl-glyph-close,button[aria-label*="Đóng" i],button[title="Đóng" i],button[title="Close" i],button[class*="close" i],button[id$="-close" i],button[id*="-close-" i],button[data-admin-close],button[data-close],button[data-dismiss]{appearance:none!important;-webkit-appearance:none!important;background:transparent!important;background-image:none!important;border:0!important;box-shadow:none!important;outline:0!important;border-radius:0!important;color:inherit!important;min-width:28px!important;min-height:28px!important;width:28px!important;height:28px!important;padding:0!important;margin:0!important;display:grid!important;place-items:center!important;font:500 22px/1 system-ui,-apple-system,"Segoe UI",sans-serif!important;cursor:pointer!important;touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important}
button.obsl-glyph-close>img,button[aria-label*="Đóng" i]>img,button[class*="close" i]>img{display:none!important}
button.obsl-glyph-close:active,button[aria-label*="Đóng" i]:active,button[class*="close" i]:active{transform:scale(.9)!important}

/* Universal per-file image crop UI. */
.obsl-crop-tray{margin:6px 0 8px;padding:7px;border:1px solid var(--line,#d1d5db);border-radius:10px;background:color-mix(in srgb,var(--panel,#fff) 92%,#60a5fa 8%);display:grid;gap:6px;min-width:0}
.obsl-crop-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.obsl-crop-head strong{font-size:10px}.obsl-crop-head button{border:1px solid var(--line,#d1d5db);background:var(--panel,#fff);border-radius:7px;padding:5px 8px;font-size:9px;font-weight:800;cursor:pointer}
.obsl-crop-files{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:5px}.obsl-crop-file{display:grid;grid-template-columns:auto 42px minmax(0,1fr) auto;gap:6px;align-items:center;border:1px solid color-mix(in srgb,var(--line,#d1d5db) 80%,transparent);border-radius:8px;padding:5px;min-width:0;background:var(--panel,#fff)}
.obsl-crop-file>img{width:42px;height:34px;object-fit:contain;background:#eef2f7;border-radius:5px}.obsl-crop-file>span{display:flex;flex-direction:column;min-width:0}.obsl-crop-file b{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.obsl-crop-file small{font-size:8px;opacity:.62}.obsl-crop-file>button{border:0;background:transparent;color:#1677e8;font-weight:800;font-size:9px;cursor:pointer;padding:4px}.obsl-crop-tray>small{font-size:8px;opacity:.65;line-height:1.35}
#obsl-image-crop-modal{position:fixed;inset:0;z-index:2147483605;background:rgba(10,15,25,.68);backdrop-filter:blur(7px);display:grid;place-items:center;padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
#obsl-image-crop-modal[hidden]{display:none!important}.obsl-image-crop-dialog{position:relative;width:min(900px,96vw);max-height:94dvh;overflow:auto;border-radius:16px;background:var(--panel,#fff);color:var(--text,#111);padding:12px;box-shadow:0 24px 80px rgba(0,0,0,.28)}
.obsl-crop-close{position:absolute!important;right:6px!important;top:6px!important;z-index:5!important}.obsl-crop-title{padding-right:34px;display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.obsl-crop-title strong{font-size:16px}.obsl-crop-title small{font-size:9px;opacity:.6;overflow-wrap:anywhere}
.obsl-crop-stage{position:relative;width:100%;height:min(52dvh,520px);min-height:240px;background:#111;overflow:hidden;border-radius:10px;touch-action:none}.obsl-crop-stage canvas{display:block;width:100%;height:100%;touch-action:none}.obsl-crop-mask{pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 9999px rgba(0,0,0,.52)}.obsl-crop-mask::after{content:"";position:absolute;left:var(--crop-x);top:var(--crop-y);width:var(--crop-w);height:var(--crop-h);box-sizing:border-box;border:2px solid rgba(255,255,255,.96);box-shadow:0 0 0 1px rgba(0,0,0,.35)}
.obsl-crop-controls{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(180px,1.6fr) auto;gap:7px;align-items:end;margin-top:8px}.obsl-crop-controls label{display:grid;gap:3px;font-size:9px;font-weight:800}.obsl-crop-controls select,.obsl-crop-controls input{width:100%}.obsl-crop-controls button,.obsl-crop-actions button{min-height:34px;border:1px solid var(--line,#d1d5db);border-radius:8px;background:var(--panel,#fff);color:inherit;font-weight:800;cursor:pointer}.obsl-crop-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:8px}.obsl-crop-actions .primary{background:#1677e8;color:#fff;border-color:#1677e8}
html.obsl-crop-open,html.obsl-crop-open body{overflow:hidden!important}
@media(max-width:600px){.obsl-crop-files{grid-template-columns:1fr}.obsl-crop-controls{grid-template-columns:1fr}.obsl-crop-stage{height:48dvh}.obsl-crop-actions{display:grid;grid-template-columns:1fr 1fr}}

.obsl-crop-primary{display:flex!important;align-items:center!important;gap:4px!important;margin-top:3px!important;font-size:8px!important;font-weight:700!important;opacity:.78}.obsl-crop-primary input{width:auto!important;height:auto!important;min-width:0!important;min-height:0!important;margin:0!important}


/* === OBSL v18 Background System: one renderer, one settings owner, no legacy layer collisions. === */
.obsl-v18-bg-host{position:relative!important;isolation:isolate!important;overflow:hidden!important}
.obsl-v18-bg-host>.obsl-v18-bg-viewport{
  position:absolute!important;inset:0!important;z-index:0!important;pointer-events:none!important;
  overflow:hidden!important;border-radius:inherit!important;
}
.obsl-v18-bg-layer{
  position:absolute!important;inset:0!important;overflow:hidden!important;border-radius:inherit!important;
  background-position:center!important;background-size:cover!important;background-repeat:no-repeat!important;
  opacity:0!important;filter:blur(var(--obsl-v18-bg-blur,0px));
  transition:opacity .42s linear!important;will-change:opacity;
}
.obsl-v18-bg-layer.is-active{opacity:var(--obsl-v18-bg-opacity,.18)!important}
.obsl-v18-bg-layer>img,.obsl-v18-bg-layer>video{display:block!important;width:100%!important;height:100%!important;object-fit:cover!important;object-position:center!important;border:0!important;margin:0!important;padding:0!important;transform:translateZ(0)!important;backface-visibility:hidden!important}
/* Child cards own an opaque base so the event-frame background never bleeds through them. */
#event-frame .upcoming-box.obsl-v18-bg-host,#event-frame>.calendar-ticker.obsl-v18-bg-host{background-color:var(--panel,#fff)!important}
#event-frame,#event-frame>.upcoming-wrap,#event-frame .upcoming-box,#event-frame>.calendar-ticker{overflow:hidden!important;clip:auto!important;clip-path:none!important}
/* Footer background is attached to the whole footer frame, not the inner text row. */
#footer-frame.obsl-v18-bg-host>#site-footer{background:transparent!important}
/* Current Weather custom background replaces the legacy weather-theme layer. */
#weather-widget .now-panel.obsl-v18-bg-host>.weather-theme-background{display:none!important}
html.dark .obsl-v18-bg-layer.is-active{filter:brightness(.62) saturate(.85) blur(var(--obsl-v18-bg-blur,0px))}

/* v18 Hiệu ứng > Nền — strict accordion; save closes the active card without rebuilding the DOM. */
.obsl-background-manager-list{display:grid!important;gap:7px!important}
.obsl-v18-bg-card{display:block!important;margin:0!important;padding:0!important;border:1px solid var(--line,#d1d5db)!important;border-radius:11px!important;background:transparent!important;overflow:hidden!important}
.obsl-v18-bg-summary{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;min-height:42px!important;padding:8px 10px!important;cursor:pointer!important;list-style:none!important}
.obsl-v18-bg-summary::-webkit-details-marker{display:none!important}
.obsl-v18-bg-summary::after{content:'›';font:700 18px/1 system-ui;transition:transform .16s ease}
.obsl-v18-bg-card[open]>.obsl-v18-bg-summary::after{transform:rotate(90deg)}
.obsl-v18-bg-summary>strong{font-size:12px!important}.obsl-v18-bg-summary>span{margin-left:auto;font-size:9px;opacity:.62;white-space:nowrap}
.obsl-v18-bg-body{display:grid!important;gap:8px!important;padding:0 10px 10px!important;border-top:1px solid color-mix(in srgb,var(--line,#d1d5db) 70%,transparent)!important}
.obsl-v18-bg-body>small{margin-top:8px;font-size:9px;line-height:1.35;opacity:.68;overflow-wrap:anywhere}
.obsl-v18-bg-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:8px}.obsl-v18-bg-options .system-switch-row,.obsl-v18-bg-options .system-select-row,.obsl-v18-bg-options .brand-admin-field{margin:0!important}
@media(max-width:520px){.obsl-v18-bg-options{grid-template-columns:1fr}.obsl-v18-bg-summary{min-height:40px;padding:7px 8px}.obsl-v18-bg-body{padding:0 8px 8px!important}}

/* v18 Market refresh: DOM is identical to Weather refresh (direct child, same class). No market-specific geometry. */
.market-panel{position:relative!important;overflow:hidden!important}
.market-heading{padding-right:34px!important}

/* Keep all close controls glyph-only and compact. */
button.obsl-glyph-close,button[aria-label*="Đóng" i],button[title="Đóng" i],button[title="Close" i],button[class*="close" i],button[id$="-close" i],button[id*="-close-" i],button[data-admin-close],button[data-close],button[data-dismiss]{background:transparent!important;background-image:none!important;border:0!important;box-shadow:none!important;outline:0!important;border-radius:0!important}

/* === v18 canonical refresh controls: Weather and Market share one geometry owner. === */
:is(#weather-quick-refresh,#market-refresh-button).weather-refresh-button{
  position:absolute!important;top:7px!important;right:7px!important;bottom:auto!important;left:auto!important;
  width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;
  margin:0!important;padding:0!important;z-index:40!important;display:grid!important;place-items:center!important;
  border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;outline:0!important;
  color:var(--text,#111)!important;font:700 22px/1 system-ui,-apple-system,"Segoe UI",sans-serif!important;
  opacity:.68!important;appearance:none!important;-webkit-appearance:none!important;touch-action:manipulation!important;
  -webkit-tap-highlight-color:transparent!important;cursor:pointer!important;
}
:is(#weather-quick-refresh,#market-refresh-button).weather-refresh-button:active{transform:rotate(35deg)!important}
/* Weather location control keeps its own bottom-right geometry; it does not share Refresh rules. */
#weather-widget #location-dropdown-button{
  position:absolute!important;right:7px!important;bottom:7px!important;top:auto!important;left:auto!important;
  width:30px!important;height:30px!important;margin:0!important;padding:0!important;z-index:40!important;
  border:0!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;
  font-size:20px!important;line-height:1!important;display:grid!important;place-items:center!important;
}
@media(max-width:520px){
  :is(#weather-quick-refresh,#market-refresh-button).weather-refresh-button{top:5px!important;right:5px!important;width:27px!important;height:27px!important;min-width:27px!important;min-height:27px!important;font-size:16px!important}
  #weather-widget #location-dropdown-button{right:5px!important;bottom:5px!important;width:27px!important;height:27px!important;font-size:16px!important}
}

/* === OBSL v20 animated-background hardening === */
/* GIFs remain native <img> resources so their animation timeline is never flattened by Canvas. */
.obsl-v18-bg-layer>img[data-obsl-animated-gif="1"]{
  image-rendering:auto!important;
  animation:none!important;
  content-visibility:visible!important;
}
/* Event/Google each paint only inside their own rounded box; blur/filter cannot escape. */
#event-frame>.upcoming-wrap,
#event-frame .upcoming-box,
#event-frame>.calendar-ticker{
  contain:paint!important;
  overflow:hidden!important;
  isolation:isolate!important;
}
#event-frame .upcoming-box>.obsl-v18-bg-viewport,
#event-frame>.calendar-ticker>.obsl-v18-bg-viewport{
  inset:0!important;
  overflow:hidden!important;
  border-radius:inherit!important;
  contain:paint!important;
}
.obsl-crop-animated-note{display:block;margin-top:2px;font-size:8px;font-style:normal;font-weight:700;color:#0a7a38;line-height:1.2}


/* === OBSL v20 Event background continuity ===
   The event slide is a transparent content carrier. Only .event-copy animates.
   This prevents the opaque slide from hiding/revealing the configured event background
   during every event change (the visible blink captured in the 2026-09-10 screen recording). */
#event-frame .upcoming-box>.upcoming-stage{background:transparent!important;}
#event-frame .upcoming-box .upcoming-slide{background:transparent!important;opacity:1!important;transform:none!important;}
#event-frame .upcoming-box .event-copy{position:relative!important;z-index:1!important;width:100%!important;min-width:0!important;background:transparent!important;will-change:transform,opacity;}
#event-frame .upcoming-box .upcoming-slide::before,#event-frame .upcoming-box .upcoming-slide::after{content:none!important;display:none!important;}


/* === OBSL v23 Motion surfaces: unique selectors, no legacy track ownership === */
.obsl-motion-surface-v23{transform:translate3d(0,0,0);backface-visibility:hidden;-webkit-backface-visibility:hidden;transform-origin:0 50%;}
.obsl-motion-group-v23{display:inline-flex;align-items:center;flex:0 0 auto;width:max-content;min-width:max-content;gap:clamp(24px,3vw,52px);padding-right:clamp(24px,3vw,52px);box-sizing:border-box;white-space:nowrap;}
.obsl-motion-item-v23{display:inline-flex;align-items:center;flex:0 0 auto;width:max-content;min-width:max-content;white-space:nowrap;line-height:inherit;}

/* Birthday ticker: v23 is the only structural owner. Legacy !important ticker rules must not win. */
#birthday-event-panel>.obsl-birthday-viewport-v23{position:relative!important;display:flex!important;align-items:center!important;min-width:0!important;width:100%!important;height:34px!important;overflow:hidden!important;contain:layout paint!important;touch-action:pan-y pinch-zoom!important;margin:0!important;padding:0!important;}
#birthday-motion-v23.obsl-birthday-track-v23{position:relative!important;display:inline-flex!important;align-items:center!important;flex:0 0 auto!important;width:max-content!important;min-width:max-content!important;max-width:none!important;height:100%!important;white-space:nowrap!important;overflow:visible!important;font-weight:650!important;line-height:1.35!important;margin:0!important;padding:0!important;animation:none!important;transition:none!important;}
#birthday-motion-v23 .birthday-event-item{display:inline-flex!important;align-items:center!important;flex:0 0 auto!important;width:max-content!important;min-width:max-content!important;max-width:none!important;white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important;line-height:1.35!important;margin:0!important;padding:0!important;animation:none!important;transition:none!important;}
@media(max-width:620px){#birthday-event-panel>.obsl-birthday-viewport-v23{height:32px!important}}

/* Google ticker: dedicated viewport/track; v23 outranks all generic legacy .calendar-item rules. */
#event-frame>.calendar-ticker>.obsl-calendar-viewport-v23{position:relative!important;display:flex!important;align-items:center!important;width:100%!important;min-width:0!important;height:1.85em!important;overflow:hidden!important;contain:layout paint!important;touch-action:pan-y pinch-zoom!important;border:0!important;background:transparent!important;margin:0!important;padding:0!important;}
#calendar-motion-v23.obsl-calendar-track-v23{position:relative!important;display:inline-flex!important;align-items:center!important;flex:0 0 auto!important;width:max-content!important;min-width:max-content!important;max-width:none!important;height:100%!important;white-space:nowrap!important;overflow:visible!important;line-height:1.45!important;visibility:visible!important;margin:0!important;padding:0!important;animation:none!important;transition:none!important;}
#calendar-motion-v23 .calendar-item{display:inline-flex!important;align-items:center!important;flex:0 0 auto!important;width:max-content!important;min-width:max-content!important;max-width:none!important;white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important;margin:0!important;padding:0!important;vertical-align:middle!important;animation:none!important;transition:none!important;}

/* Event transition: only these two text layers move; panel/background never moves. */
#event-frame .upcoming-stage{position:relative!important;display:grid!important;place-items:center!important;min-height:44px!important;height:auto!important;overflow:hidden!important;background:transparent!important;contain:paint!important;}
#event-motion-v23.obsl-event-motion-v23{position:relative!important;display:block!important;width:100%!important;min-width:0!important;min-height:44px!important;box-sizing:border-box!important;background:transparent!important;overflow:hidden!important;contain:layout paint!important;margin:0!important;animation:none!important;transition:none!important;}
#event-motion-v23>.obsl-event-copy-v23,#event-motion-v23>.obsl-event-incoming-v23{display:block!important;width:100%!important;min-width:0!important;box-sizing:border-box!important;padding:6px 36px 6px 9px!important;white-space:normal!important;overflow-wrap:anywhere!important;word-break:normal!important;line-height:1.28!important;text-align:center!important;background:transparent!important;transition:none!important;}
#event-motion-v23>.obsl-event-copy-v23{position:relative;z-index:2;}
#event-motion-v23>.obsl-event-incoming-v23{position:absolute;z-index:3;inset:0;pointer-events:none;}
#event-motion-v23.obsl-event-swap-host-v23{overflow:hidden;}
@media(max-width:760px){#event-motion-v23.obsl-event-motion-v23{min-height:42px}#event-motion-v23>.obsl-event-copy-v23,#event-motion-v23>.obsl-event-incoming-v23{padding:5px 32px 5px 7px;font-size:clamp(12px,3.5vw,16px)}}

/* Moments: a stable viewport + one compositor track. Hover transforms are disabled while rail is moving. */
#moments-panel .moments-layout{display:block!important;overflow:hidden!important;contain:paint!important;min-width:0!important;width:100%!important;}
#moments-panel .obsl-moments-viewport-v23{position:relative!important;width:100%!important;min-width:0!important;overflow:hidden!important;contain:layout paint!important;touch-action:pan-y pinch-zoom!important;overscroll-behavior-x:contain!important;margin:0!important;padding:0!important;}
#moments-motion-v23.obsl-moments-track-v23{display:flex!important;align-items:stretch!important;flex:0 0 auto!important;width:max-content!important;min-width:max-content!important;max-width:none!important;gap:8px!important;overflow:visible!important;margin:0!important;padding:0!important;animation:none!important;transition:none!important;}
#moments-motion-v23 .moment-card{flex:0 0 clamp(210px,31.5vw,330px)!important;width:clamp(210px,31.5vw,330px)!important;min-width:0!important;transition:none!important;transform:none!important;}
#moments-motion-v23 .moment-card:hover{transform:none!important;box-shadow:none!important;}
#moments-motion-v23 .moment-card-media img{transition:none!important;}
#moments-motion-v23 .moment-card:hover .moment-card-media img{transform:none!important;}
@media(max-width:680px){#moments-motion-v23 .moment-card{flex-basis:min(78vw,300px)!important;width:min(78vw,300px)!important;}}

/* Only the rail itself may own horizontal transform. Descendant text effects use opacity/filter fallbacks in effects-manager.js. */
#birthday-motion-v23,#calendar-motion-v23,#moments-motion-v23{will-change:transform;}
#event-motion-v23>.obsl-event-copy-v23,#event-motion-v23>.obsl-event-incoming-v23{will-change:transform,opacity;}

/* Editors remain native interactive surfaces even when global content protection is enabled. */
html.obsl-content-protected :is(input,textarea,select,[contenteditable="true"],.moment-html-editor,.moment-editor-wrap,.moments-manager-modal){-webkit-user-select:text!important;user-select:text!important;-webkit-touch-callout:default!important;touch-action:auto!important;pointer-events:auto!important}
html.obsl-content-protected :is(input,textarea,select,[contenteditable="true"],.moment-html-editor) *{-webkit-user-select:text!important;user-select:text!important;-webkit-touch-callout:default!important}
.moment-html-editor{min-height:180px!important;cursor:text!important;white-space:normal!important;overflow-wrap:anywhere!important;outline:none!important}
html.obsl-content-protected body :is(input,textarea,select,[contenteditable="true"],.moment-html-editor){-webkit-user-select:text!important;user-select:text!important;-webkit-touch-callout:default!important;touch-action:auto!important;pointer-events:auto!important}
html.obsl-content-protected body :is(.moment-editor-wrap,.moments-manager-modal) :is(input,textarea,select,[contenteditable="true"],.moment-html-editor,*){-webkit-user-select:text!important;user-select:text!important;-webkit-touch-callout:default!important}

/* v2 release: notification inbox stays inside the main dashboard */
#obsl-notification-inbox{
  box-sizing:border-box!important;
  padding-left:max(10px,env(safe-area-inset-left))!important;
  padding-right:max(10px,env(safe-area-inset-right),calc((100vw - var(--obsl-app-max-width,1180px))/2 + 12px))!important;
  overflow:hidden!important;
}
#obsl-notification-inbox>.obsl-inbox-card{
  box-sizing:border-box!important;
  width:min(430px,100%)!important;
  max-width:100%!important;
  min-width:0!important;
}
@media(max-width:1180px){
  #obsl-notification-inbox{padding-right:max(10px,env(safe-area-inset-right))!important}
}

