/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */.pswp{--pswp-bg: #000;--pswp-placeholder-bg: #222;--pswp-root-z-index: 100000;--pswp-preloader-color: rgba(79, 79, 79, .4);--pswp-preloader-color-secondary: rgba(255, 255, 255, .9);--pswp-icon-color: #fff;--pswp-icon-color-secondary: #4f4f4f;--pswp-icon-stroke-color: #4f4f4f;--pswp-icon-stroke-width: 2px;--pswp-error-text-color: var(--pswp-icon-color)}.pswp{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--pswp-root-z-index);display:none;touch-action:none;outline:0;opacity:.003;contain:layout style size;-webkit-tap-highlight-color:rgba(0,0,0,0)}.pswp:focus{outline:0}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--open{display:block}.pswp,.pswp__bg{transform:translateZ(0);will-change:opacity}.pswp__bg{opacity:.005;background:var(--pswp-bg)}.pswp,.pswp__scroll-wrap{overflow:hidden}.pswp__scroll-wrap,.pswp__bg,.pswp__container,.pswp__item,.pswp__content,.pswp__img,.pswp__zoom-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__img,.pswp__zoom-wrap{width:auto;height:auto}.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,.pswp__img{cursor:-webkit-zoom-out;cursor:-moz-zoom-out;cursor:zoom-out}.pswp__container,.pswp__img,.pswp__button,.pswp__counter{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pswp__item{z-index:1;overflow:hidden}.pswp__hidden{display:none!important}.pswp__content{pointer-events:none}.pswp__content>*{pointer-events:auto}.pswp__error-msg-container{display:grid}.pswp__error-msg{margin:auto;font-size:1em;line-height:1;color:var(--pswp-error-text-color)}.pswp .pswp__hide-on-close{opacity:.005;will-change:opacity;transition:opacity var(--pswp-transition-duration) cubic-bezier(.4,0,.22,1);z-index:10;pointer-events:none}.pswp--ui-visible .pswp__hide-on-close{opacity:1;pointer-events:auto}.pswp__button{position:relative;display:block;width:50px;height:60px;padding:0;margin:0;overflow:hidden;cursor:pointer;background:none;border:0;box-shadow:none;opacity:.85;-webkit-appearance:none;-webkit-touch-callout:none}.pswp__button:hover,.pswp__button:active,.pswp__button:focus{transition:none;padding:0;background:none;border:0;box-shadow:none;opacity:1}.pswp__button:disabled{opacity:.3;cursor:auto}.pswp__icn{fill:var(--pswp-icon-color);color:var(--pswp-icon-color-secondary)}.pswp__icn{position:absolute;top:14px;left:9px;width:32px;height:32px;overflow:hidden;pointer-events:none}.pswp__icn-shadow{stroke:var(--pswp-icon-stroke-color);stroke-width:var(--pswp-icon-stroke-width);fill:none}.pswp__icn:focus{outline:0}div.pswp__img--placeholder,.pswp__img--with-bg{background:var(--pswp-placeholder-bg)}.pswp__top-bar{position:absolute;left:0;top:0;width:100%;height:60px;display:flex;flex-direction:row;justify-content:flex-end;z-index:10;pointer-events:none!important}.pswp__top-bar>*{pointer-events:auto;will-change:opacity}.pswp__button--close{margin-right:6px}.pswp__button--arrow{position:absolute;width:75px;height:100px;top:50%;margin-top:-50px}.pswp__button--arrow:disabled{display:none;cursor:default}.pswp__button--arrow .pswp__icn{top:50%;margin-top:-30px;width:60px;height:60px;background:none;border-radius:0}.pswp--one-slide .pswp__button--arrow{display:none}.pswp--touch .pswp__button--arrow{visibility:hidden}.pswp--has_mouse .pswp__button--arrow{visibility:visible}.pswp__button--arrow--prev{right:auto;left:0}.pswp__button--arrow--next{right:0}.pswp__button--arrow--next .pswp__icn{left:auto;right:14px;transform:scaleX(-1)}.pswp__button--zoom{display:none}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__zoom-icn-bar-v{display:none}.pswp__preloader{position:relative;overflow:hidden;width:50px;height:60px;margin-right:auto}.pswp__preloader .pswp__icn{opacity:0;transition:opacity .2s linear;animation:pswp-clockwise .6s linear infinite}.pswp__preloader--active .pswp__icn{opacity:.85}@keyframes pswp-clockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pswp__counter{height:30px;margin-top:15px;margin-inline-start:20px;font-size:14px;line-height:30px;color:var(--pswp-icon-color);text-shadow:1px 1px 3px var(--pswp-icon-color-secondary);opacity:.85}.pswp--one-slide .pswp__counter{display:none}:root{--bg-primary: #000000;--bg-secondary: #1a1a1a;--bg-tertiary: #2a2a2a;--background: #000000;--surface: #1a1a1a;--border: #3a3a3c;--text-primary: #ffffff;--text-secondary: #8e8e93;--text-muted: #636366;--accent: #2c8bf2;--accent-hover: #4a9df5;--error: #ff3b30;--success: #34c759;--viewport-height: 100vh;--visual-viewport-height: 100vh;--keyboard-height: 0px;--safe-area-inset-top: env(safe-area-inset-top, 0px);--safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);--safe-area-inset-left: env(safe-area-inset-left, 0px);--safe-area-inset-right: env(safe-area-inset-right, 0px)}*,*:before,*:after{box-sizing:border-box}html{height:100vh;height:100dvh}@supports not (height: 100dvh){html{height:var(--viewport-height)}}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;padding:0;min-height:100vh;min-height:100dvh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none}@supports not (min-height: 100dvh){body{min-height:var(--viewport-height)}}#root{min-height:100vh;min-height:100dvh}a{color:var(--accent);text-decoration:none}button,input,select,textarea{font-family:inherit}code{font-family:SF Mono,Monaco,Cascadia Code,Segoe UI Mono,Consolas,monospace}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,textarea{-webkit-user-select:text;user-select:text;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;touch-action:manipulation}img{-webkit-user-drag:none;-webkit-touch-callout:none}button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.scrollable{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.pswp{--pswp-bg: rgba(0, 0, 0, .9);--pswp-icon-color: #ffffff;--pswp-icon-color-secondary: rgba(255, 255, 255, .5);--pswp-icon-stroke-color: rgba(255, 255, 255, .5);--pswp-error-text-color: var(--text-primary);--pswp-error-text-color-secondary: var(--text-secondary);z-index:150000}.pswp__bg{background:#000000e6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.pswp__zoom-wrap,.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--zoomed-in .pswp__zoom-wrap{cursor:grab}.pswp--zoomed-in .pswp__zoom-wrap:active{cursor:grabbing}.pswp__button{opacity:.9}.pswp__button:hover{opacity:1}.pswp__preloader:before{border-left-color:var(--accent)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.landing{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg-primary);color:var(--text-primary)}.landing-header{padding:1.25rem 1rem;flex-shrink:0}.landing-header .logo{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:1.125rem;color:var(--text-primary)}.landing-header .logo svg{color:var(--accent)}.landing-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1rem;max-width:320px;margin:0 auto;width:100%}.landing-body .title{font-size:1.25rem;font-weight:600;line-height:1.3;text-align:center;margin:0 0 1.5rem;color:var(--text-primary)}.landing-body .form{width:100%;display:flex;flex-direction:column;gap:.625rem}.landing-body .form .room-input{width:100%;padding:.625rem .875rem;font-size:16px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);transition:border-color .15s}.landing-body .form .room-input:focus{outline:none;border-color:var(--accent)}.landing-body .form .room-input::placeholder{color:var(--text-muted)}.landing-body .divider{display:flex;align-items:center;width:100%;margin:1.25rem 0;gap:.75rem}.landing-body .divider:before,.landing-body .divider:after{content:"";flex:1;height:1px;background:var(--border)}.landing-body .divider span{color:var(--text-muted);font-size:.8125rem}.landing-body .btn{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.625rem 1rem;font-size:.9375rem;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:background .15s;text-decoration:none}.landing-body .btn.primary{background:var(--accent);color:#fff}.landing-body .btn.primary:hover:not(:disabled){background:var(--accent-hover)}.landing-body .btn.primary:disabled{background:var(--bg-tertiary);color:var(--text-muted);cursor:not-allowed}.landing-body .btn.secondary{background:transparent;color:var(--text-primary);border:1px solid var(--border)}.landing-body .btn.secondary:hover{background:var(--bg-secondary)}.landing-body .footer-text{margin-top:2rem;font-size:.75rem;color:var(--text-muted);text-align:center;line-height:1.5}@media(min-width:640px){.landing-body{padding:2rem}.landing-body .title{font-size:1.375rem}}.create-room{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg-primary);color:var(--text-primary)}.create-room .page-header{padding:1rem;flex-shrink:0}.create-room .back-link{display:inline-flex;align-items:center;gap:.375rem;color:var(--text-secondary);text-decoration:none;font-size:.9375rem;font-weight:500;transition:color .15s}.create-room .back-link:hover{color:var(--text-primary)}.create-room .card{flex:1;display:flex;flex-direction:column;justify-content:center;padding:1rem;max-width:400px;margin:0 auto;width:100%}.create-room .card h1{font-size:1.25rem;font-weight:600;margin:0 0 .25rem;color:var(--text-primary)}.create-room .card .subtitle{color:var(--text-secondary);margin:0 0 1.5rem;font-size:.9375rem;line-height:1.4}.create-room .form-group{margin-bottom:1.25rem}.create-room .form-group label{display:block;font-size:.8125rem;font-weight:500;margin-bottom:.375rem;color:var(--text-secondary)}.create-room .form-group input,.create-room .form-group select{width:100%;padding:.625rem .875rem;font-size:16px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);transition:border-color .15s}.create-room .form-group input:focus,.create-room .form-group select:focus{outline:none;border-color:var(--accent)}.create-room .form-group input::placeholder,.create-room .form-group select::placeholder{color:var(--text-muted)}.create-room .form-group input{text-align:center;letter-spacing:.4em;font-family:monospace}.create-room .form-group select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238e8e93' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.25rem}.create-room .form-group .error{display:block;color:var(--error);font-size:.8125rem;margin-top:.5rem}.create-room .form-group .hint-text{display:block;color:var(--text-muted);font-size:.8125rem;margin-top:.375rem;line-height:1.4}.create-room .btn{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1rem;font-size:.9375rem;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:background .15s}.create-room .btn.primary{background:var(--accent);color:#fff}.create-room .btn.primary:hover:not(:disabled){background:var(--accent-hover)}.create-room .btn.primary:disabled{background:var(--bg-tertiary);color:var(--text-muted);cursor:not-allowed}.create-room .btn.secondary{background:transparent;color:var(--text-primary);border:1px solid var(--border)}.create-room .btn.secondary:hover{background:var(--bg-secondary)}.create-room .btn.icon-only{width:40px;height:40px;padding:0;flex-shrink:0}.create-room .hint{margin:1rem 0 0;font-size:.8125rem;color:var(--text-muted);line-height:1.4}.create-room .room-info{margin-bottom:1rem}.create-room .room-info .room-id,.create-room .room-info .room-link{margin-bottom:.875rem}.create-room .room-info .room-id label,.create-room .room-info .room-link label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.25rem;font-weight:500}.create-room .room-info .room-id .value,.create-room .room-info .room-link .value{display:block;font-size:1.25rem;font-weight:600;color:var(--text-primary);font-family:monospace;background:var(--bg-tertiary);padding:.5rem .75rem;border-radius:8px;text-align:center;border:1px solid var(--border)}.create-room .room-info .link-box{display:flex;gap:.5rem}.create-room .room-info .link-box input{flex:1;padding:.5rem .75rem;font-size:.8125rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-tertiary);color:var(--text-secondary);font-family:monospace}.create-room .room-info .link-box input:focus{outline:none;border-color:var(--accent)}.create-room .warning{background:#ffc10714;border:1px solid rgba(255,193,7,.15);border-radius:8px;padding:.75rem;font-size:.8125rem;color:var(--text-secondary);margin-bottom:1rem;line-height:1.4}.create-room .warning strong{color:#ffb300;display:block;margin-bottom:.15rem;font-weight:600}.create-room .actions{display:flex;flex-direction:column;gap:.5rem}@media(min-width:640px){.create-room .card{padding:2rem}}.action-sheet-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:30000;animation:fadeIn .25s ease-out;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}.action-sheet-container{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:400px;width:90%;top:50%;left:50%;transform:translate(-50%,-50%);animation:fadeIn .25s ease-out;max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch}.action-sheet-container.mobile{bottom:0;left:0;right:0;width:100%;max-width:none;border-radius:16px 16px 0 0;top:auto;transform:translateY(0);animation:slideUp .3s ease-out;padding-bottom:env(safe-area-inset-bottom,0px);max-height:85vh}.action-sheet-title{padding:1.25rem 1.5rem .75rem;font-size:1rem;font-weight:600;color:var(--text-primary);text-align:center}.action-sheet-actions{padding:.5rem;display:flex;flex-direction:column;gap:.25rem;max-height:50vh;overflow-y:auto}.action-button{display:flex;align-items:center;gap:1rem;padding:1rem 1.5rem;background:transparent;border:none;border-radius:8px;cursor:pointer;transition:all .2s;width:100%;text-align:left;min-height:56px}.action-button:hover{background:var(--background)}.action-button:active{transform:scale(.98)}.action-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.action-button.destructive{color:var(--error)}.action-button.destructive:hover{background:#ff453a1a}.action-icon{flex-shrink:0;width:24px;height:24px;color:var(--accent)}.action-button.destructive .action-icon{color:var(--error)}.action-label{flex:1;font-size:1rem;font-weight:500;color:var(--text-primary)}.action-button.destructive .action-label{color:var(--error)}.action-sheet-divider{height:1px;background:var(--border);margin:.5rem 1.5rem}.action-sheet-cancel{padding:.5rem}.cancel-button{display:block;width:100%;padding:1rem 1.5rem;background:#ff453a0d;border:none;border-radius:8px;cursor:pointer;transition:all .2s;font-size:1rem;font-weight:600;color:var(--text-primary);min-height:56px}.cancel-button:hover{background:#ff453a1a}.cancel-button:active{transform:scale(.98)}.cancel-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@media(max-width:640px){.action-sheet-container,.action-sheet-container.mobile{border-radius:20px 20px 0 0}.action-sheet-title{padding:1rem 1.25rem .5rem;font-size:.875rem}.action-button{padding:.875rem 1.25rem;min-height:48px}.action-button .action-icon{width:20px;height:20px}.action-button .action-label{font-size:.9375rem}.cancel-button{padding:.875rem 1.25rem;min-height:48px;font-size:.9375rem}.action-sheet-divider{margin:.375rem 1.25rem}}@media(prefers-reduced-motion:reduce){.action-sheet-overlay,.action-sheet-container{animation:none;transition:none}.action-button:active,.cancel-button:active{transform:none}}.chat-page{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-primary)}@supports not (height: 100dvh){.chat-page{height:var(--viewport-height)}}.chat-page .passcode-screen{flex:1;display:flex;flex-direction:column;overflow-y:auto}.chat-page .page-header{padding:1rem;flex-shrink:0}.chat-page .back-link{display:inline-flex;align-items:center;gap:.375rem;color:var(--text-secondary);text-decoration:none;font-size:.9375rem;font-weight:500}.chat-page .back-link:hover{color:var(--text-primary)}.chat-page .card{flex:1;display:flex;flex-direction:column;justify-content:center;padding:1rem;max-width:400px;margin:0 auto;width:100%}.chat-page .card h1{font-size:1.25rem;font-weight:600;margin:0 0 .5rem;color:var(--text-primary)}.chat-page .card .room-id{margin:0 0 .5rem;color:var(--text-secondary);font-size:.9375rem}.chat-page .card .room-id code{background:var(--bg-tertiary);padding:.125rem .375rem;border-radius:4px;font-family:monospace;color:var(--accent)}.chat-page .card .subtitle{color:var(--text-secondary);margin:0 0 2rem}.chat-page .form-group{margin-bottom:1.25rem}.chat-page .form-group label{display:block;font-size:.8125rem;font-weight:500;margin-bottom:.375rem;color:var(--text-secondary)}.chat-page .form-group input{width:100%;padding:.625rem .875rem;font-size:16px;text-align:center;letter-spacing:.4em;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-family:monospace;transition:border-color .15s}.chat-page .form-group input:focus{outline:none;border-color:var(--accent)}.chat-page .form-group input::placeholder{color:var(--text-muted)}.chat-page .form-group .error{display:block;color:var(--error);font-size:.8125rem;margin-top:.5rem}.chat-page .btn{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1rem;font-size:.9375rem;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:background .15s;width:100%}.chat-page .btn.primary{background:var(--accent);color:#fff}.chat-page .btn.primary:hover:not(:disabled){background:var(--accent-hover)}.chat-page .btn.primary:disabled{background:var(--bg-tertiary);color:var(--text-muted);cursor:not-allowed}.chat-page .hint{margin:1rem 0 0;font-size:.8125rem;color:var(--text-muted);line-height:1.4}.chat-page .chat-screen{flex:1;display:flex;flex-direction:column;min-height:0;background:var(--bg-primary);overscroll-behavior-y:contain;touch-action:pan-y;padding-top:var(--safe-area-inset-top)}.chat-page .chat-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:var(--bg-secondary);border-bottom:1px solid var(--border);height:48px;flex-shrink:0}.chat-page .chat-header .room-info{display:flex;align-items:center;gap:.5rem}.chat-page .chat-header .room-info .room-badge{display:flex;align-items:center;gap:.25rem;background:var(--bg-tertiary);padding:.25rem .5rem;border-radius:6px;font-size:.75rem;font-weight:500;color:var(--text-secondary);border:1px solid var(--border)}.chat-page .chat-header .room-info .room-badge .text{color:var(--text-primary)}.chat-page .chat-header .header-actions{display:flex;align-items:center;gap:.25rem}.chat-page .chat-header .btn-icon{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:6px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background .15s}.chat-page .chat-header .btn-icon:hover{background:var(--bg-tertiary);color:var(--text-primary)}.chat-page .chat-header .btn-icon.danger:hover{background:#ff3b301f;color:var(--error)}.chat-page .messages-container{flex:1;overflow-y:auto;overflow-x:hidden;padding:.5rem .625rem;display:flex;flex-direction:column;gap:.375rem;-webkit-overflow-scrolling:touch;overflow-anchor:none;overscroll-behavior-x:none;min-height:0}.chat-page .empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--text-muted);padding:2rem;opacity:.7}.chat-page .empty-state svg{margin-bottom:.75rem;color:var(--text-secondary)}.chat-page .empty-state h3{font-size:1rem;font-weight:600;margin:0 0 .375rem;color:var(--text-primary)}.chat-page .empty-state p{font-size:.875rem;line-height:1.4;margin:0;max-width:260px}.chat-page .message{display:flex;flex-direction:column;max-width:85%;align-self:flex-start}.chat-page .message.own{align-self:flex-end}.chat-page .message.own .message-content{background:var(--bg-tertiary);color:var(--text-primary);border-radius:14px 14px 4px}.chat-page .message.own .message-content .meta,.chat-page .message.own .message-content .meta .time{color:var(--text-muted)}.chat-page .message.own .message-content .meta .status-check.read{color:var(--accent)}.chat-page .message:not(.own) .message-content{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-primary);border-radius:14px 14px 14px 4px}.chat-page .message .message-content{position:relative;padding:.4rem .6rem .3rem;min-width:60px}.chat-page .message .message-content .message-sender{display:block;font-size:.6875rem;font-weight:600;color:var(--accent);margin-bottom:.125rem;overflow-wrap:anywhere}.chat-page .message .message-content .text{font-size:.9375rem;line-height:1.4;overflow-wrap:anywhere;white-space:pre-wrap;padding-bottom:.1rem;margin-right:2.75rem}.chat-page .message .message-content .meta{float:right;margin-top:.2rem;margin-left:.5rem;margin-bottom:-.1rem;display:flex;align-items:center;gap:.25rem;font-size:.6875rem;color:var(--text-muted);-webkit-user-select:none;user-select:none;position:relative;top:1px}.chat-page .message .message-content .meta .countdown-timer{font-weight:500;margin-right:.25rem}.chat-page .message .message-content .meta .countdown-timer.urgent{color:var(--error)}.chat-page .message .message-content .meta .status-dot{width:5px;height:5px;background:var(--text-muted);border-radius:50%;display:inline-block}.chat-page .message .message-content .meta .status-check{font-size:.625rem;letter-spacing:-1px}.chat-page .message .message-content:after{content:"";display:table;clear:both}.chat-page .message-image{margin-bottom:.25rem;cursor:pointer}.chat-page .message-image img{max-width:100%;max-height:260px;width:auto;height:auto;border-radius:6px;display:block;object-fit:contain}.chat-page .typing-indicator{padding:.375rem .75rem;font-size:.75rem;color:var(--text-muted);display:flex;align-items:center;gap:.5rem}.chat-page .typing-indicator .typing-dots{display:flex;gap:3px}.chat-page .typing-indicator .typing-dots span{width:4px;height:4px;background:var(--text-muted);border-radius:50%;animation:typingBounce 1.4s infinite ease-in-out both}.chat-page .typing-indicator .typing-dots span:nth-child(1){animation-delay:-.32s}.chat-page .typing-indicator .typing-dots span:nth-child(2){animation-delay:-.16s}.chat-page .chat-footer{display:flex;align-items:center;gap:.375rem;padding:.375rem .5rem;background:var(--bg-secondary);border-top:1px solid var(--border);flex-shrink:0;position:relative;z-index:10;padding-bottom:calc(.375rem + var(--safe-area-inset-bottom))}.chat-page .chat-footer .input-wrapper{flex:1}.chat-page .chat-footer .input-wrapper input{width:100%;min-height:40px;padding:.5rem .75rem;font-size:16px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);transition:border-color .15s}.chat-page .chat-footer .input-wrapper input:focus{outline:none;border-color:var(--accent)}.chat-page .chat-footer .input-wrapper input::placeholder{color:var(--text-muted)}.chat-page .chat-footer .btn-image-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:6px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;flex-shrink:0;transition:background .15s}.chat-page .chat-footer .btn-image-icon:hover{background:var(--bg-tertiary);color:var(--text-primary)}.chat-page .chat-footer .btn-send-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:6px;border:none;background:var(--accent);color:#fff;cursor:pointer;flex-shrink:0;transition:background .15s}.chat-page .chat-footer .btn-send-icon:disabled{background:var(--bg-tertiary);color:var(--text-muted);cursor:not-allowed}.chat-page .chat-footer .btn-send-icon:hover:not(:disabled){background:var(--accent-hover)}.chat-page .modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10000}.chat-page .modal-dialog{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;padding:1.5rem;max-width:340px;width:90%}.chat-page .modal-dialog h2{margin:0 0 .5rem;font-size:1.125rem;font-weight:600;color:var(--text-primary)}.chat-page .modal-dialog p{margin:0 0 1.25rem;color:var(--text-secondary);line-height:1.4;font-size:.9375rem}.chat-page .modal-actions{display:flex;gap:.5rem;justify-content:flex-end}.chat-page .modal-actions button{padding:.5rem 1rem;font-size:.9375rem;font-weight:500;border:none;border-radius:8px;cursor:pointer;transition:background .15s}.chat-page .modal-actions button.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border)}.chat-page .modal-actions button.btn-secondary:hover{background:var(--border)}.chat-page .modal-actions button.btn-danger{background:var(--error);color:#fff}.chat-page .modal-actions button.btn-danger:hover{background:#e02920}.chat-page .modal-actions button.btn-primary{background:var(--accent);color:#fff}.chat-page .modal-actions button.btn-primary:hover{background:var(--accent-hover)}.chat-page .image-preview-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:20000;padding:1rem}.chat-page .preview-content{max-width:100%;max-height:100%;width:100%;display:flex;flex-direction:column;align-items:center;gap:1rem}.chat-page .preview-content .preview-image-wrapper{width:100%;text-align:center}.chat-page .preview-content .preview-image-wrapper img{max-width:100%;max-height:65vh;width:auto;height:auto;display:inline-block;vertical-align:middle;object-fit:contain;border-radius:8px}.chat-page .preview-content .loading-spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}.chat-page .preview-content .preview-loading-text{margin:0}.chat-page .preview-actions{display:flex;gap:.5rem;width:100%;justify-content:center;flex-wrap:wrap}.chat-page .preview-actions button{padding:.5rem 1.25rem;font-size:.9375rem;font-weight:500;border:none;border-radius:8px;cursor:pointer;transition:background .15s;min-width:90px;flex:1;max-width:160px}.chat-page .preview-actions button.btn-primary{background:var(--accent);color:#fff}.chat-page .preview-actions button.btn-primary:hover{background:var(--accent-hover)}.chat-page .preview-actions button.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border)}.chat-page .preview-actions button.btn-secondary:hover{background:var(--border)}.chat-page .webcam-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:25000}.chat-page .webcam-container{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;max-width:560px;width:90%;display:flex;flex-direction:column;overflow:hidden}.chat-page .webcam-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.chat-page .webcam-header h3{margin:0;font-size:1.0625rem;font-weight:600;color:var(--text-primary)}.chat-page .webcam-header .close-button{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;font-size:1.125rem;padding:.25rem;border-radius:4px;transition:color .15s}.chat-page .webcam-header .close-button:hover{color:var(--text-primary)}.chat-page .webcam-video-wrapper{background:#000;display:flex;align-items:center;justify-content:center;padding:.75rem;position:relative;width:100%;min-height:240px}.chat-page .webcam-video-wrapper video{width:100%;height:100%;max-height:45vh;min-height:200px;border-radius:6px;display:block;object-fit:cover;background:#000}.chat-page .webcam-actions{display:flex;gap:.5rem;padding:1rem 1.25rem;justify-content:center}.chat-page .webcam-actions button{padding:.5rem 1.25rem;font-size:.9375rem;font-weight:500;border:none;border-radius:8px;cursor:pointer;transition:background .15s;min-width:120px;display:flex;align-items:center;justify-content:center;gap:.375rem}.chat-page .webcam-actions button.btn-primary{background:var(--accent);color:#fff}.chat-page .webcam-actions button.btn-primary:hover{background:var(--accent-hover)}.chat-page .webcam-actions button.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border)}.chat-page .webcam-actions button.btn-secondary:hover{background:var(--border)}@keyframes typingBounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}.toast-container{position:fixed;bottom:calc(1.5rem + var(--safe-area-inset-bottom));right:1.5rem;z-index:9999;display:flex;flex-direction:column-reverse;gap:.5rem;pointer-events:none;max-width:380px}.toast{display:flex;align-items:flex-start;gap:.75rem;padding:.875rem 1rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #0006,0 2px 6px #0003;pointer-events:auto;opacity:0;transform:translateY(8px) scale(.97);transition:opacity .25s cubic-bezier(.22,1,.36,1),transform .25s cubic-bezier(.22,1,.36,1)}.toast.show{opacity:1;transform:translateY(0) scale(1)}.toast[data-type=success]{border-left:3px solid var(--success)}.toast[data-type=success] .toast-icon{color:var(--success);background:#34c7591f}.toast[data-type=error]{border-left:3px solid var(--error)}.toast[data-type=error] .toast-icon{color:var(--error);background:#ff3b301f}.toast[data-type=warning]{border-left:3px solid #f59e0b}.toast[data-type=warning] .toast-icon{color:#f59e0b;background:#f59e0b1f}.toast[data-type=info]{border-left:3px solid var(--accent)}.toast[data-type=info] .toast-icon{color:var(--accent);background:#2c8bf21f}.toast-icon{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:8px;font-size:.875rem;flex-shrink:0;margin-top:1px}.toast-body{flex:1;min-width:0}.toast-title{font-size:.8125rem;font-weight:600;color:var(--text-primary);margin-bottom:.125rem}.toast-message{font-size:.8125rem;color:var(--text-secondary);line-height:1.4;word-wrap:break-word}.toast-close{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border:none;background:transparent;color:var(--text-muted);font-size:.75rem;cursor:pointer;border-radius:6px;transition:all .15s;flex-shrink:0;margin-top:1px}.toast-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}@media(max-width:640px){.toast-container{bottom:calc(64px + var(--safe-area-inset-bottom));right:1rem;left:1rem;max-width:none}}
