/* Compact UI polish. */
.editmark{display:none!important}
/* Legacy Google Calendar controls are superseded by the unified themed controls. */
#googleCalendarFields{display:none!important}
.topbar{position:sticky!important;top:0!important;z-index:1800!important;margin:0!important;border-radius:0 0 24px 24px!important;background:linear-gradient(135deg,rgba(255,255,255,.78),rgba(239,246,255,.58))!important;border:1px solid rgba(255,255,255,.62)!important;border-top:0!important;box-shadow:0 10px 36px rgba(15,23,42,.10),inset 0 1px 0 rgba(255,255,255,.75)!important;-webkit-backdrop-filter:blur(22px) saturate(165%)!important;backdrop-filter:blur(22px) saturate(165%)!important;isolation:isolate}
.topbar:before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.42),rgba(255,255,255,.06));mix-blend-mode:screen;opacity:.75}
.topbar>*{position:relative;z-index:1}
.token-input-shell{display:flex;align-items:center;flex-wrap:wrap;gap:7px;width:100%;min-height:48px;border:1px solid #d3dde8;border-radius:14px;padding:6px 8px;background:#fff}
.token-input-shell:focus-within{border-color:#77aef0;box-shadow:0 0 0 4px rgba(71,145,235,.1)}
.token-input-shell>input{flex:1 1 180px!important;min-width:150px!important;width:auto!important;border:0!important;box-shadow:none!important;background:transparent!important;margin:0!important;padding:7px 6px!important}
.token-input-shell .selected-works,.token-input-shell .selected-people{display:contents}
.token-input-shell .selected-work,.token-input-shell .selected-person{margin:0!important;max-width:100%;width:auto!important;border-radius:999px!important;padding:5px 8px!important;background:#f2f6fa!important;border:1px solid #d8e1eb!important}
.token-input-shell .selected-work>span{display:flex;gap:5px;align-items:center;flex-wrap:nowrap}
.token-input-shell .selected-work b{font-size:.78rem;max-width:240px}.token-input-shell .selected-work small{font-size:.68rem;white-space:nowrap}
.token-input-shell .selected-person{cursor:pointer}.token-input-shell .selected-person .avatar{width:30px;height:30px;margin:0}.token-input-shell .selected-person span{font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}
.people-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}.compact-action{font-size:.75rem!important;padding:7px 10px!important;border-radius:11px!important}.line-action{color:#168b49!important}
.contact-popover{position:fixed;z-index:2000;width:min(310px,calc(100vw - 20px));padding:13px;background:#fff;border:1px solid #dfe6ee;border-radius:16px;box-shadow:0 18px 50px rgba(25,39,55,.18)}
.contact-head{display:flex;align-items:center;gap:9px;margin-bottom:9px}.contact-head .avatar{width:40px;height:40px;margin:0}.contact-head b{display:block;font-size:.88rem}.contact-head small{display:block;color:#7c8797;font-size:.7rem;margin-top:2px}.contact-line,.contact-email a{font-size:.78rem;color:#344054;text-decoration:none}.contact-line{display:block;margin:7px 0}.contact-email{display:flex;align-items:center;justify-content:space-between;gap:8px}.contact-email a{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tiny-mail{border:0;border-radius:9px;padding:6px 8px;background:#eef4fb;color:#176fd1;font:inherit;font-size:.72rem;white-space:nowrap}
.minimal-pin{position:relative;display:inline-block;width:11px;height:14px;margin-right:5px;flex:0 0 auto}.minimal-pin:before{content:"";position:absolute;width:9px;height:9px;left:1px;top:0;background:#ef5b5b;border-radius:50% 50% 50% 0;transform:rotate(-45deg)}.minimal-pin:after{content:"";position:absolute;width:3px;height:3px;left:4px;top:3px;background:#fff;border-radius:50%}.location{display:flex;align-items:center;gap:1px}
.spaced-file-actions{display:flex!important;gap:7px!important}.file-manager-head{justify-content:flex-start!important;gap:8px!important}#addEventFiles,#addEventUrl,#calendarAddFile,#calendarAddUrl{padding:6px 9px!important;font-size:.75rem!important}
.server-role-badge{font-size:.62rem!important;padding:2px 6px!important;border-radius:999px!important;background:#edf2f7!important;color:#667085!important;white-space:nowrap}
.sync-dots{display:inline-block;width:20px;margin-left:6px;vertical-align:middle;color:#98a2b3}.sync-dots:after{content:".";animation:mshDots 1.05s steps(1,end) infinite}@keyframes mshDots{0%{content:"."}33%{content:".."}66%,100%{content:"..."}}.sync-pending-row{opacity:.72}
.web-toast-stack{position:fixed;right:16px;bottom:16px;z-index:2600;display:flex;flex-direction:column;gap:7px;pointer-events:none}.web-toast{opacity:0;transform:translateY(8px);transition:.18s;padding:9px 12px;border:1px solid #dfe6ee;border-radius:12px;background:#fff;box-shadow:0 10px 28px rgba(25,39,55,.13);font-size:.76rem;color:#344054}.web-toast.show{opacity:1;transform:none}.web-toast.error{color:#b42318}.web-toast.success{color:#168b49}
.web-ask-dialog{border:0;padding:0;background:transparent}.web-ask-dialog::backdrop{background:rgba(29,41,57,.26)}.web-ask-card{position:relative;width:min(390px,calc(100vw - 24px));background:#fff;border:1px solid #e1e7ee;border-radius:19px;padding:18px;box-shadow:0 26px 80px rgba(16,24,40,.25)}.web-ask-close{position:absolute!important;top:10px;right:10px}.web-ask-close:not([hidden])~.web-ask-title{padding-right:34px}.web-ask-title{font-size:1rem;font-weight:700}.web-ask-message{margin-top:7px;font-size:.82rem;color:#667085;line-height:1.45}.web-ask-input{width:100%;margin-top:12px;border:1px solid #d3dde8;border-radius:12px;padding:10px 12px;font:inherit}.web-ask-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:15px}
@media(max-width:760px){.topbar{border-radius:0 0 18px 18px!important;-webkit-backdrop-filter:blur(18px) saturate(155%)!important;backdrop-filter:blur(18px) saturate(155%)!important}.token-input-shell .selected-person span{max-width:210px}.token-input-shell .selected-work b{max-width:190px}.people-actions{flex-direction:column}.compact-action{width:100%}.contact-popover{width:calc(100vw - 16px)}.server-role-badge{display:none!important}}

/* ===== Final navbar behavior =====
   Fixed to the viewport (not only sticky inside app-shell), with layout space reserved below it. */
:root{--msh-fixed-nav-space:96px}
.app-shell{padding-top:var(--msh-fixed-nav-space)!important}
.topbar{position:fixed!important;top:0!important;left:0!important;right:0!important;width:100%!important;max-width:none!important;z-index:5000!important;margin:0!important;transform:none!important;will-change:auto!important}
/* Login owns the top layer. The app stays softly blurred behind it and the navbar must not be visible/clickable. */
body:has(#loginView:not([hidden])) #appView{filter:blur(12px);transform:scale(1.006);pointer-events:none;user-select:none}
body:has(#loginView:not([hidden])) .topbar{opacity:0!important;visibility:hidden!important;pointer-events:none!important;filter:blur(20px)!important}
#loginView:not([hidden]){z-index:10000!important;-webkit-backdrop-filter:blur(18px) saturate(120%)!important;backdrop-filter:blur(18px) saturate(120%)!important}
@media(max-width:760px){:root{--msh-fixed-nav-space:88px}.topbar{position:fixed!important;top:0!important;left:0!important;right:0!important}}

/* ===== Calendar detail alignment =====
   Keep labels compact so long content gets more horizontal room and wraps less. */
#calendarDetailBody{display:grid!important;grid-template-columns:148px minmax(0,1fr)!important;column-gap:18px!important;row-gap:12px!important;align-items:start!important}
#calendarDetailBody>div:not(.msh-files-row):not(.calendar-files-row):not(.event-email-block):not(.msh-date-hero){display:contents!important}
#calendarDetailBody>div:not(.msh-files-row):not(.calendar-files-row):not(.event-email-block):not(.msh-date-hero)>b{grid-column:1!important;margin:0!important;align-self:start!important;color:#667085!important}
#calendarDetailBody>div:not(.msh-files-row):not(.calendar-files-row):not(.event-email-block):not(.msh-date-hero)>span{grid-column:2!important;min-width:0!important;margin:0!important}
#calendarDetailBody .msh-responsible-block.full-row{display:contents!important}
#calendarDetailBody .msh-responsible-block.full-row>b{grid-column:1!important}
#calendarDetailBody .msh-responsible-block.full-row>.detail-people{grid-column:2!important;display:flex!important;align-items:center!important;flex-wrap:wrap!important;gap:8px!important;min-width:0!important}
#calendarDetailBody .msh-files-row,#calendarDetailBody .calendar-files-row{grid-column:1/-1!important;width:100%!important;display:block!important;margin-top:4px!important}
#calendarDetailBody .msh-files-block,#calendarDetailBody .calendar-file-list{width:100%!important;max-width:none!important}
#calendarDetailBody .msh-files-title{margin:0 0 8px!important}
@media(max-width:700px){#calendarDetailBody{grid-template-columns:106px minmax(0,1fr)!important;column-gap:10px!important;row-gap:10px!important}#calendarDetailBody .msh-responsible-block.full-row>.detail-people{gap:6px!important}}

/* Unified file actions: local upload and URL use the same button component. */
#addEventFiles,#addEventUrl,#calendarAddFile,#calendarAddUrl{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-height:34px!important;margin:0!important;padding:6px 10px!important;border-radius:11px!important;font-size:.75rem!important;font-weight:600!important;line-height:1.2!important;white-space:nowrap!important}


/* Name attachments before upload: clear editable pending state. */
.pending-file.pending-file-edit{display:flex;align-items:flex-end;gap:10px;padding:11px 12px;border:1px solid #cfe0f2;border-radius:14px;background:#f7fbff}
.pending-file-copy{display:grid;gap:4px;min-width:0;flex:1}
.pending-file-copy label{color:#344054;font-size:.72rem;font-weight:700}
.pending-file-name{width:100%;min-height:40px;padding:8px 10px;border:1px solid #b9cce1;border-radius:10px;background:#fff;color:#1d2939;font:inherit;font-weight:600}
.pending-file-name:focus{border-color:#287de8;outline:3px solid rgba(40,125,232,.15)}
.pending-file-copy small{overflow:hidden;color:#7b879a;font-size:.68rem;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:620px){.pending-file.pending-file-edit{align-items:stretch}.pending-file.pending-file-edit .remove-pending{align-self:center}.pending-file-name{font-size:.85rem}}

/* Event-detail Email recipient picker. */
#calendarDetailBody .event-email-block{grid-column:1/-1!important;display:block!important;width:100%;margin:2px 0 4px;padding:0 0 12px;border-bottom:1px solid #edf1f5}
.event-email-toggle{display:inline-flex;align-items:center;gap:7px;color:#176fd1!important;background:#eef5fd!important;font-weight:650!important}
.event-email-panel{margin-top:10px;padding:14px;border:1px solid #dce5ef;border-radius:16px;background:#f8fbff}
.event-email-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.event-email-panel-head b{display:block!important;color:#253247!important;font-size:15px!important}.event-email-panel-head small{display:block;margin-top:2px;color:#7b8798;font-size:11px}.event-email-panel-head>span{padding:4px 8px;border-radius:999px;background:#eaf2fb;color:#47627f;font-size:11px;font-weight:650;white-space:nowrap}
.event-email-presets{display:flex;flex-wrap:wrap;gap:6px;margin:11px 0 9px}.event-email-presets button{min-height:32px;padding:5px 10px;border:1px solid #cfdae7;border-radius:999px;background:#fff;color:#3f536c;font:inherit;font-size:12px;font-weight:600}.event-email-presets button:hover{border-color:#76a9e5;background:#eef6ff;color:#176fd1}
#eventEmailSearch{width:100%;min-height:42px;padding:9px 11px;border:1px solid #cfdae7;border-radius:12px;background:#fff;font:inherit;font-size:16px}#eventEmailSearch:focus{outline:3px solid rgba(40,125,232,.12);border-color:#78abe8}
.event-email-recipient-list{display:grid;gap:6px;max-height:300px;margin-top:9px;overflow:auto;overscroll-behavior:contain}
.event-email-person{position:relative;display:grid!important;grid-template-columns:22px 38px minmax(0,1fr);align-items:center;gap:9px;margin:0!important;padding:8px 10px!important;border:1px solid transparent;border-radius:12px;background:#fff;cursor:pointer}.event-email-person:hover{border-color:#d8e4f1}.event-email-person.selected{border-color:#9fc2ec;background:#eef6ff}.event-email-person.no-email{opacity:.68;cursor:not-allowed}.event-email-person>input{position:absolute;opacity:0;pointer-events:none}
.event-email-check{display:grid;place-items:center;width:20px;height:20px;border:1.5px solid #c8d3df;border-radius:6px;background:#fff;color:transparent;font-size:12px;font-weight:800}.event-email-person.selected .event-email-check{border-color:#287de8;background:#287de8;color:#fff}
.event-email-person>.avatar{width:36px!important;height:36px!important;margin:0!important}.event-email-person-copy{display:flex!important;flex-direction:column!important;min-width:0!important;line-height:1.22!important}.event-email-person-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#344054!important;font-size:13px!important}.event-email-person-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#7b8798;font-size:11px}.event-email-person-copy .event-email-address{color:#3973ad}.event-email-person-copy .event-email-missing{color:#b42318;font-weight:650}
.event-email-empty{padding:18px;text-align:center;color:#7b8798;font-size:12px}.event-email-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:11px}.event-email-footer button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px}.event-email-footer .spinner{border-color:rgba(255,255,255,.45);border-top-color:#fff}
@media(max-width:600px){.event-email-panel{padding:11px}.event-email-panel-head{align-items:center}.event-email-presets{display:grid;grid-template-columns:1fr 1fr}.event-email-presets button:last-child{grid-column:1/-1}.event-email-recipient-list{max-height:42dvh}.event-email-footer{display:grid;grid-template-columns:1fr 1fr}.event-email-footer button{width:100%}}

/* Detail communication hub: Email and LINE share one predictable location. */
#calendarDetailBody .event-email-block{margin-top:6px;padding:14px;border:1px solid #e2e8f0;border-radius:16px;background:linear-gradient(180deg,#fbfdff,#f8fafc)}
.event-communication-head{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}.event-communication-head b{color:#344054!important;font-size:14px!important;font-weight:700!important}.event-communication-head small{color:#7b8798;font-size:11px}
.event-communication-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.event-communication-action{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;min-height:66px;padding:10px 12px;border:1px solid #dce5ef;border-radius:14px;background:#fff;color:#344054;text-align:left;font:inherit;box-shadow:0 2px 7px rgba(15,23,42,.025);transition:border-color .15s,background .15s,transform .15s}
.event-communication-action:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(15,23,42,.055)}.event-communication-action:focus-visible{outline:3px solid rgba(40,125,232,.15);outline-offset:2px}
.event-communication-action.email:hover,.event-communication-action.email[aria-expanded="true"]{border-color:#9fc2ec;background:#f1f7ff}.event-communication-action.line:hover{border-color:#a9dfb7;background:#f2fbf5}
.event-communication-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;font-size:18px}.event-communication-action.email .event-communication-icon{background:#eaf3ff;color:#176fd1}.event-communication-action.line .event-communication-icon{background:#eaf8ee;color:#168b49}.event-communication-icon svg{width:22px;height:22px}
.event-communication-copy{display:flex;flex-direction:column;min-width:0}.event-communication-copy b{color:#27364c!important;font-size:13px!important;font-weight:700!important}.event-communication-copy small{margin-top:2px;overflow:hidden;color:#7b8798;font-size:10.5px;line-height:1.3;text-overflow:ellipsis}
.event-communication-arrow{color:#7890aa;font-size:24px;line-height:1}.event-communication-status{padding:3px 6px;border-radius:999px;background:#edf7f0;color:#268548;font-size:9px;font-weight:650;white-space:nowrap}
.event-communication-actions+.event-email-panel{margin-top:11px}
@media(max-width:640px){#calendarDetailBody .event-email-block{padding:11px}.event-communication-head{display:block}.event-communication-head small{display:block;margin-top:2px}.event-communication-actions{grid-template-columns:1fr}.event-communication-action{min-height:62px}.event-communication-copy small{font-size:11px}}

/* Test-email diagnostics are complete; keep the control out of the production profile UI. */
#testEmailButton{display:none!important}

/* Email owns its recipient section; LINE starts a clearly separated channel below it. */
.event-communication-actions{display:block}
.event-communication-actions .event-communication-action.email{width:100%}
.event-line-section{margin-top:12px;padding-top:12px;border-top:1px solid #e2e8f0}
.event-line-section-label{margin:0 0 7px;color:#7b8798;font-size:10px;font-weight:700;letter-spacing:.04em}
.event-line-section .event-communication-action.line{width:100%}
@media(max-width:600px){
  .event-email-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
  .event-email-presets button{min-width:0;padding:5px 4px;font-size:11px;white-space:nowrap}
  .event-email-presets button:last-child{grid-column:auto}
}
@media(max-width:360px){.event-email-presets button{font-size:10px;letter-spacing:-.015em}}

/* Event detail edit transition: one visible busy state while Google-only events materialize. */
#calendarEditSystemEvent[aria-busy="true"]{cursor:wait!important;opacity:.78!important;pointer-events:none!important}
#calendarEditSystemEvent[aria-busy="true"] svg{animation:mshDetailEditSpin .8s linear infinite;transform-origin:center}
@keyframes mshDetailEditSpin{to{transform:rotate(360deg)}}
