@keyframes portal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes portal-slide-in-right{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes portal-slide-up{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes portal-scale-in{0%{opacity:0;transform:scale(.95)translateY(-4px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes portal-change-pulse{0%{background-color:#0000}30%{background-color:var(--portal-edit-highlight,#ffc8572e)}to{background-color:var(--portal-edit-highlight,#ffc85714)}}@keyframes portal-skeleton-shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.portal-password-gate{background:var(--portal-bg,#fafbfc);min-height:100vh;animation:portal-fade-in .2s var(--portal-ease-decelerate,cubic-bezier(0, 0, .2, 1)) forwards;justify-content:center;align-items:center;padding:24px;display:flex}.portal-password-gate__card{background:var(--portal-surface,#fff);border-radius:var(--portal-radius-xl,20px);box-shadow:var(--portal-shadow-lg,8px 8px 16px #2e294e12, -8px -8px 16px #fff);text-align:center;width:100%;max-width:440px;padding:48px 40px}.portal-password-gate__logo{margin-bottom:32px}.portal-password-gate__title{font-family:var(--font-heading,"Cormorant Garamond", Georgia, serif);color:var(--portal-text-primary,var(--text-primary));margin-bottom:8px;font-size:24px;font-weight:600}.portal-password-gate__subtitle{color:var(--portal-text-tertiary,#8a87a0);margin-bottom:32px;font-size:14px;line-height:1.5}.portal-password-gate__input{box-sizing:border-box;width:100%;font-size:14px;font-family:var(--font-body,"Roboto", sans-serif);color:var(--portal-text-primary,var(--text-primary));background:var(--portal-bg,#fafbfc);border:1px solid var(--portal-border-strong,#2e294e1f);border-radius:var(--portal-radius-md,12px);transition:border-color var(--portal-duration-fast,.15s) var(--portal-ease-smooth);outline:none;margin-bottom:16px;padding:12px 16px}.portal-password-gate__input:focus{border-color:var(--portal-brand-midnight,var(--action-fill));box-shadow:0 0 0 3px #2e294e0f}.portal-password-gate__input--error{border-color:var(--portal-status-error,#ef4444);background:var(--portal-status-error-subtle,#ef444414)}.portal-password-gate__error{color:var(--portal-status-error,#ef4444);text-align:left;margin-bottom:16px;font-size:13px}.portal-password-gate__submit{background:var(--portal-brand-midnight,var(--action-fill));color:#fff;width:100%;font-family:var(--font-body,"Roboto", sans-serif);border-radius:var(--portal-radius-pill,999px);cursor:pointer;transition:background var(--portal-duration-fast,.15s) var(--portal-ease-smooth), transform var(--portal-duration-fast,.15s) var(--portal-ease-smooth), box-shadow var(--portal-duration-fast,.15s) var(--portal-ease-smooth);border:none;padding:12px 24px;font-size:14px;font-weight:500}.portal-password-gate__submit:hover{background:#3d3770;transform:translateY(-1px);box-shadow:0 8px 20px #2e294e33}.portal-password-gate__submit:active{box-shadow:none;transform:translateY(0)}.portal-password-gate__submit:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.portal-toolbar{height:var(--portal-toolbar-height,56px);background:var(--portal-toolbar-bg,#fff);box-shadow:var(--portal-toolbar-shadow,0 -4px 12px #2e294e0f);border-top:1px solid var(--portal-toolbar-border,#2e294e0f);z-index:100;-webkit-font-smoothing:antialiased;justify-content:center;align-items:center;gap:4px;padding:0 16px;display:flex;position:fixed;bottom:0;left:0;right:0}.portal-toolbar__group{align-items:center;gap:4px;display:flex}.portal-toolbar__divider{background:var(--portal-border-strong,#2e294e1f);flex-shrink:0;width:1px;height:24px;margin:0 8px}.portal-toolbar-button{height:36px;font-family:var(--font-body,"Roboto", sans-serif);color:var(--portal-text-secondary,var(--text-secondary));border-radius:var(--portal-radius-md,12px);cursor:pointer;transition:background var(--portal-duration-fast,.15s) var(--portal-ease-smooth), color var(--portal-duration-fast,.15s) var(--portal-ease-smooth), border-color var(--portal-duration-fast,.15s) var(--portal-ease-smooth);white-space:nowrap;-webkit-user-select:none;user-select:none;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:500;display:inline-flex}.portal-toolbar-button:hover{color:var(--portal-text-primary,var(--text-primary));background:#2e294e0d}.portal-toolbar-button:active{background:#2e294e14}.portal-toolbar-button--icon-only{width:36px;padding:0}.portal-toolbar-button--primary{background:var(--portal-brand-midnight,var(--action-fill));color:#fff;border-color:var(--portal-brand-midnight,var(--action-fill))}.portal-toolbar-button--primary:hover{color:#fff;background:#3d3770;border-color:#3d3770}.portal-toolbar-button--active{color:var(--portal-text-primary,var(--text-primary));border-color:var(--portal-border-strong,#2e294e1f);background:#2e294e0f}.portal-toolbar-button--danger{color:var(--portal-status-error,#ef4444)}.portal-toolbar-button--danger:hover{background:var(--portal-status-error-subtle,#ef444414);color:var(--portal-status-error,#ef4444)}.portal-comment-panel{top:var(--portal-header-height,56px);right:0;bottom:var(--portal-toolbar-height,56px);width:var(--portal-comment-width,380px);background:var(--portal-comment-bg,#fafbfc);border-left:1px solid var(--portal-comment-border,#2e294e14);z-index:90;animation:portal-slide-in-right var(--portal-duration-panel,.3s) var(--portal-ease-decelerate,cubic-bezier(0, 0, .2, 1)) forwards;-webkit-font-smoothing:antialiased;flex-direction:column;display:flex;position:fixed}.portal-comment-panel[data-state=closing]{animation:portal-slide-in-right var(--portal-duration-panel,.3s) var(--portal-ease-accelerate,cubic-bezier(.4, 0, 1, 1)) reverse forwards}.portal-comment-panel__header{border-bottom:1px solid var(--portal-comment-border,#2e294e14);background:var(--portal-surface,#fff);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.portal-comment-panel__title{color:var(--portal-text-primary,var(--text-primary));font-size:14px;font-weight:500}.portal-comment-panel__count{color:var(--portal-text-tertiary,#8a87a0);font-size:12px}.portal-comment-panel__body{-webkit-overflow-scrolling:touch;flex:1;padding:16px;overflow-y:auto}.portal-comment-panel__empty{text-align:center;height:100%;color:var(--portal-text-tertiary,#8a87a0);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:40px 24px;font-size:13px;display:flex}.portal-comment-bubble{background:var(--portal-comment-bubble-bg,#fff);border-radius:var(--portal-radius-md,12px);box-shadow:var(--portal-comment-bubble-shadow,4px 4px 8px #2e294e0d, -4px -4px 8px #ffffffe6);margin-bottom:10px;padding:14px 16px}.portal-comment-bubble__meta{align-items:center;gap:8px;margin-bottom:8px;display:flex}.portal-comment-bubble__author{color:var(--portal-text-primary,var(--text-primary));font-size:13px;font-weight:500}.portal-comment-bubble__time{color:var(--portal-text-tertiary,#8a87a0);margin-left:auto;font-size:11px}.portal-comment-bubble__text{color:var(--portal-text-secondary,var(--text-secondary));font-size:14px;line-height:1.55}.portal-comment-bubble__section-ref{color:var(--portal-text-tertiary,#8a87a0);background:#2e294e0a;border-radius:4px;margin-bottom:6px;padding:2px 6px;font-size:11px;font-style:italic;display:inline-block}.portal-comment-bubble--resolved{opacity:.5}.portal-comment-bubble--resolved .portal-comment-bubble__text{text-decoration:line-through}.portal-comment-form{border-top:1px solid var(--portal-comment-border,#2e294e14);background:var(--portal-surface,#fff);flex-shrink:0;padding:12px 16px}.portal-comment-form__textarea{box-sizing:border-box;width:100%;min-height:72px;max-height:160px;font-family:var(--font-body,"Roboto", sans-serif);color:var(--portal-text-primary,var(--text-primary));background:var(--portal-bg,#fafbfc);border:1px solid var(--portal-border-strong,#2e294e1f);border-radius:var(--portal-radius-md,12px);resize:none;transition:border-color var(--portal-duration-fast,.15s) var(--portal-ease-smooth);outline:none;margin-bottom:8px;padding:10px 12px;font-size:13px;line-height:1.6}.portal-comment-form__textarea:focus{border-color:var(--portal-brand-midnight,var(--action-fill));box-shadow:0 0 0 3px #2e294e0f}.portal-comment-form__textarea::placeholder{color:var(--portal-text-tertiary,#8a87a0)}.portal-comment-form__actions{justify-content:flex-end;gap:8px;display:flex}.portal-comment-form__submit{font-size:13px;font-weight:500;font-family:var(--font-body,"Roboto", sans-serif);background:var(--portal-brand-midnight,var(--action-fill));color:#fff;border-radius:var(--portal-radius-pill,999px);cursor:pointer;transition:background var(--portal-duration-fast,.15s) var(--portal-ease-smooth), transform var(--portal-duration-fast,.15s) var(--portal-ease-smooth);border:none;padding:8px 16px}.portal-comment-form__submit:hover{background:#3d3770;transform:translateY(-1px)}.portal-comment-form__submit:disabled{opacity:.5;cursor:not-allowed;transform:none}.portal-comment-form__cancel{font-size:13px;font-weight:500;font-family:var(--font-body,"Roboto", sans-serif);color:var(--portal-text-tertiary,#8a87a0);border-radius:var(--portal-radius-pill,999px);cursor:pointer;transition:color var(--portal-duration-fast,.15s) var(--portal-ease-smooth);background:0 0;border:none;padding:8px 16px}.portal-comment-form__cancel:hover{color:var(--portal-text-secondary,var(--text-secondary))}.portal-edit-mode .portal-document-section--editable{cursor:text}.portal-change-highlight{animation:portal-change-pulse var(--portal-duration-pulse,.4s) var(--portal-ease-smooth) forwards;border-radius:3px}.portal-change-highlight--addition{background:var(--portal-edit-addition,#22c55e14);border-bottom:2px solid #22c55e66}.portal-change-highlight--deletion{background:var(--portal-edit-deletion,#ff078d0f);-webkit-text-decoration:line-through #ff078d80;text-decoration:line-through #ff078d80}.portal-change-highlight--modified{background:var(--portal-edit-highlight,#ffc85714);border-bottom:2px solid #ffc85780}.portal-edit-toolbar{top:calc(var(--portal-header-height,56px) + 12px);background:var(--portal-edit-toolbar-bg,#2e294ef5);border:1px solid var(--portal-edit-toolbar-border,#ffffff14);border-radius:var(--portal-radius-lg,16px);box-shadow:var(--portal-edit-toolbar-shadow,0 8px 32px #2e294e3d);z-index:200;-webkit-backdrop-filter:blur(16px);animation:portal-scale-in .2s var(--portal-ease-decelerate,cubic-bezier(0, 0, .2, 1)) forwards;-webkit-font-smoothing:antialiased;align-items:center;gap:4px;padding:6px 8px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.portal-edit-toolbar[data-state=closing]{animation:portal-scale-in .2s var(--portal-ease-accelerate,cubic-bezier(.4, 0, 1, 1)) reverse forwards}.portal-edit-toolbar__button{height:32px;font-family:var(--font-body,"Roboto", sans-serif);color:#fffc;border-radius:var(--portal-radius-sm,8px);cursor:pointer;transition:background var(--portal-duration-fast,.15s) var(--portal-ease-smooth), color var(--portal-duration-fast,.15s) var(--portal-ease-smooth);white-space:nowrap;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:12px;font-weight:500;display:inline-flex}.portal-edit-toolbar__button:hover{color:#fff;background:#ffffff1a}.portal-edit-toolbar__button--icon-only{width:32px;padding:0}.portal-edit-toolbar__button--accept{color:#6ee7b7;background:#22c55e26;border-color:#22c55e33}.portal-edit-toolbar__button--accept:hover{color:#a7f3d0;background:#22c55e40}.portal-edit-toolbar__button--reject{color:#ff078de6;background:#ff078d1f;border-color:#ff078d33}.portal-edit-toolbar__button--reject:hover{color:#ff078d;background:#ff078d33}.portal-edit-toolbar__divider{background:#ffffff1a;flex-shrink:0;width:1px;height:20px;margin:0 4px}.portal-header{height:var(--portal-header-height,56px);background:var(--portal-header-bg,#fff);border-bottom:1px solid var(--portal-header-border,#2e294e0f);box-shadow:var(--portal-header-shadow,0 1px 0 #2e294e0f);z-index:100;-webkit-font-smoothing:antialiased;align-items:center;gap:16px;padding:0 24px;display:flex;position:fixed;top:0;left:0;right:0}.portal-header__logo{flex-shrink:0;align-items:center;gap:10px;text-decoration:none;display:flex}.portal-header__doc-title{font-family:var(--font-body,"Roboto", sans-serif);color:var(--portal-text-primary,var(--text-primary));white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:14px;font-weight:500;overflow:hidden}.portal-header__actions{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}.portal-expired{background:var(--portal-bg,#fafbfc);min-height:100vh;animation:portal-fade-in .2s var(--portal-ease-decelerate) forwards;justify-content:center;align-items:center;padding:24px;display:flex}.portal-expired__card{background:var(--portal-surface,#fff);border-radius:var(--portal-radius-xl,20px);box-shadow:var(--portal-shadow-lg,8px 8px 16px #2e294e12, -8px -8px 16px #fff);text-align:center;width:100%;max-width:440px;padding:48px 40px}.portal-expired__icon{width:48px;height:48px;color:var(--portal-text-tertiary,#8a87a0);margin:0 auto 24px}.portal-expired__title{font-family:var(--font-heading,"Cormorant Garamond", Georgia, serif);color:var(--portal-text-primary,var(--text-primary));margin-bottom:12px;font-size:24px;font-weight:600}.portal-expired__message{color:var(--portal-text-tertiary,#8a87a0);margin-bottom:32px;font-size:14px;line-height:1.6}.portal-expired__cta{color:var(--portal-text-accent,#ff078d);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;text-decoration:underline}.portal-error{background:var(--portal-bg,#fafbfc);min-height:100vh;animation:portal-fade-in .2s var(--portal-ease-decelerate) forwards;justify-content:center;align-items:center;padding:24px;display:flex}.portal-error__card{background:var(--portal-surface,#fff);border-radius:var(--portal-radius-xl,20px);border:1px solid var(--portal-status-error-subtle,#ef444414);box-shadow:var(--portal-shadow-md,5px 5px 10px #2e294e0f, -5px -5px 10px #ffffffe6);text-align:center;width:100%;max-width:440px;padding:48px 40px}.portal-error__title{font-family:var(--font-heading,"Cormorant Garamond", Georgia, serif);color:var(--portal-status-error,#ef4444);margin-bottom:12px;font-size:24px;font-weight:600}.portal-error__message{color:var(--portal-text-tertiary,#8a87a0);margin-bottom:24px;font-size:14px;line-height:1.6}.portal-error__code{font-family:var(--font-mono,"JetBrains Mono", monospace);border-radius:var(--portal-radius-sm,8px);color:var(--portal-text-secondary,var(--text-secondary));text-align:left;background:#f5f5f7;margin-bottom:24px;padding:8px 12px;font-size:12px;overflow-x:auto}.portal-skeleton{border-radius:var(--portal-radius-sm,8px);background:linear-gradient(90deg,#2e294e0a 0,#2e294e14 100px,#2e294e0a 200px) 0 0/800px;animation:1.6s ease-in-out infinite portal-skeleton-shimmer}.portal-skeleton--text{border-radius:4px;height:16px;margin-bottom:10px}.portal-skeleton--text:last-child{width:65%}.portal-skeleton--heading{border-radius:4px;max-width:60%;height:32px;margin-bottom:20px}.portal-skeleton--paragraph{flex-direction:column;gap:8px;margin-bottom:24px;display:flex}.portal-skeleton--paragraph .portal-skeleton--text{margin-bottom:0}.portal-skeleton--block{border-radius:var(--portal-radius-md,12px);height:120px;margin-bottom:16px}.portal-document-loading{max-width:var(--portal-content-max-width,800px);padding:var(--portal-content-padding,48px) var(--portal-content-padding,48px);margin:0 auto}@media (max-width:767px){.portal-comment-panel{width:100%;top:var(--portal-header-height,56px);left:0;right:0;bottom:var(--portal-toolbar-height,56px);animation:portal-slide-up var(--portal-duration-panel,.3s) var(--portal-ease-decelerate) forwards;border-left:none}.portal-comment-panel[data-state=closing]{animation:portal-slide-up var(--portal-duration-panel,.3s) var(--portal-ease-accelerate) reverse forwards}.portal-toolbar{justify-content:space-between;padding:0 8px}.portal-toolbar__group{gap:2px}.portal-password-gate__card,.portal-expired__card,.portal-error__card{padding:32px 24px}.portal-edit-toolbar{top:auto;bottom:calc(var(--portal-toolbar-height,56px) + 12px);width:calc(100% - 32px);max-width:420px}.portal-document-loading{padding:24px var(--portal-content-padding-mobile,20px)}.portal-header__doc-title{max-width:160px;font-size:13px}}
