:root{--bg:#0f172a;--bg-secondary:#1e293b;--bg-panel:#1e293b;--border:#334155;--border-strong:#475569;--text:#f1f5f9;--text-secondary:#cbd5e1;--text-muted:#94a3b8;--primary:#3b82f6;--primary-hover:#2563eb;--primary-light:#1e293b;--danger:#ef4444;--danger-hover:#dc2626;--success:#22c55e;--radius:6px;--shadow:0 1px 3px rgba(0,0,0,.3);--shadow-lg:0 4px 12px rgba(0,0,0,.4);--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans JP",sans-serif}[data-theme=light]{--bg:#f1f5f9;--bg-secondary:#fff;--bg-panel:#fff;--border:#cbd5e1;--border-strong:#94a3b8;--text:#000;--text-secondary:#1e293b;--text-muted:#475569;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-light:#dbeafe;--danger:#dc2626;--danger-hover:#b91c1c;--success:#16a34a;--shadow:0 1px 3px rgba(0,0,0,.06);--shadow-lg:0 4px 12px rgba(0,0,0,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font);background:var(--bg);color:var(--text);flex-direction:column;transition:background .25s ease,color .25s ease}.login-container,body{min-height:100vh;display:flex}.login-container{justify-content:center;align-items:center;padding:20px}.login-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:40px 36px;max-width:400px;width:100%;box-shadow:var(--shadow-lg);position:relative}.system-title{font-size:1.8rem;font-weight:700;color:var(--text);margin-bottom:4px}.system-subtitle{color:var(--text-secondary);font-size:.9rem;margin-bottom:28px}.login-theme-toggle{position:absolute;top:16px;right:16px;background:var(--bg);border:1px solid var(--border);border-radius:50%;width:36px;height:36px;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;color:var(--text)}.login-theme-toggle:hover{background:var(--border)}.form-group{margin-bottom:18px;text-align:left}.form-group label{display:block;font-size:.85rem;font-weight:500;margin-bottom:6px;color:var(--text-secondary)}.input-control{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary);color:var(--text);font-size:.95rem;transition:border .15s}.input-control:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(59,130,246,.2)}.btn{width:100%;padding:11px 16px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius);font-size:.95rem;font-weight:600;cursor:pointer;transition:background .15s}.btn:hover{background:var(--primary-hover)}.btn-danger{background:var(--danger)}.btn-danger:hover{background:var(--danger-hover)}.btn-secondary{background:var(--border);color:var(--text)}.btn-secondary:hover{background:var(--border-strong)}.alert{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.3);color:var(--danger);padding:10px 14px;border-radius:var(--radius);font-size:.85rem;margin-bottom:20px;display:flex;align-items:center;gap:6px}.lockdown-banner{background:rgba(234,179,8,.15);border:1px solid rgba(234,179,8,.3);color:#fbbf24;padding:12px 16px;border-radius:var(--radius);margin-bottom:20px;font-size:.9rem;text-align:center}img.emoji{height:1.2em;width:1.2em;margin:0 .05em 0 .1em;vertical-align:-.25em;display:inline-block}.emoji-pick-btn img.emoji{height:1.5em;width:1.5em;margin:0;vertical-align:middle}.reaction-chip img.emoji{height:1.1em;width:1.1em;margin:0;vertical-align:-.15em}.msg-action-btn img.emoji{height:1em;width:1em;margin:0;vertical-align:middle}.chat-layout{display:flex;flex-direction:column;height:100vh;height:100dvh}.chat-header{background:var(--bg-secondary);border-bottom:1px solid var(--border);padding:12px 24px;justify-content:space-between;flex-wrap:wrap;transition:background .25s,border .25s}.chat-header,.header-logo{display:flex;align-items:center;gap:10px}.header-title{font-weight:700;font-size:1.2rem;color:var(--text)}.header-actions{gap:12px;flex-wrap:wrap}.header-actions,.user-badge{display:flex;align-items:center}.user-badge{background:var(--bg);border:1px solid var(--border);padding:4px 12px;border-radius:20px;gap:8px;font-size:.85rem;color:var(--text)}.role-pill{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:3px;color:#fff;text-transform:uppercase}.admin-btn,.logout-btn{background:transparent;border:1px solid var(--border);padding:6px 14px;border-radius:var(--radius);font-size:.85rem;color:var(--text-secondary);cursor:pointer;transition:background .15s;text-decoration:none}.logout-btn{font-weight:700;color:#fff;background:var(--danger);border-color:var(--danger)}.logout-btn:hover{background:var(--danger-hover);border-color:var(--danger-hover);color:#fff}.admin-btn:hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}.admin-btn.nav-admin{color:#fff;background:var(--success);border-color:var(--success)}.admin-btn.nav-admin:hover{background:#16a34a;border-color:#16a34a;color:#fff}.theme-toggle-btn{background:var(--bg);border:1px solid var(--border);border-radius:50%;width:36px;height:36px;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;color:var(--text)}.theme-toggle-btn:hover{background:var(--border)}.char-counter{text-align:right;font-size:.75rem;color:var(--text-muted);margin-top:4px;padding:0 4px}.char-counter.over-limit{color:var(--danger);font-weight:700}.room-bar{display:flex;gap:4px;padding:8px 24px;background:var(--bg-secondary);border-bottom:1px solid var(--border);overflow-x:auto;flex-shrink:0;transition:background .25s,border .25s}.room-bar:empty{display:none}.room-tab{background:var(--bg);border:1px solid var(--border);padding:5px 16px;border-radius:20px;font-size:.82rem;font-weight:500;color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:background .15s}.room-tab:hover{background:var(--primary-light)}.room-tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}.messages-container{flex:1 1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:14px;background:var(--bg);transition:background .25s}.message-bubble-wrapper{display:flex;flex-direction:column;max-width:75%;align-self:flex-start}.message-bubble-wrapper.own{align-self:flex-end}.message-info{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--text-muted);margin-bottom:2px}.message-info .nickname{font-weight:600;color:var(--text)}.message-bubble-wrapper.own .message-info{flex-direction:row-reverse}.message-bubble{background:var(--bg-secondary);border:1px solid var(--border);border-radius:0 var(--radius) var(--radius) var(--radius);padding:10px 14px;font-size:.95rem;line-height:1.5;word-break:break-word;box-shadow:var(--shadow);color:var(--text)}.message-bubble-wrapper.own .message-bubble{background:var(--primary);color:#fff;border-color:var(--primary);border-radius:var(--radius) 0 var(--radius) var(--radius)}.message-content-row{display:flex;align-items:flex-start;gap:4px}.message-bubble-wrapper.own .message-content-row{flex-direction:row-reverse}.message-actions{display:flex;flex-direction:row;gap:2px;opacity:0;transition:opacity .15s;align-items:center;flex-shrink:0;padding-top:2px}.message-bubble-wrapper:hover .message-actions{opacity:1}@media (hover:none){.message-actions{opacity:1}}.msg-action-btn{background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;width:28px;height:28px;font-size:.7rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;color:var(--text-secondary)}.msg-action-btn:hover{background:var(--primary-light);color:var(--text)}.msg-action-delete:hover{background:rgba(239,68,68,.15);border-color:var(--danger);color:var(--danger)}.reply-quote{background:var(--bg);border-left:3px solid var(--primary);padding:4px 10px;margin-bottom:8px;border-radius:0 4px 4px 0;cursor:pointer}.reply-quote-name{font-size:.72rem;font-weight:600;color:var(--primary)}.reply-quote-text{font-size:.78rem;color:var(--text-secondary)}.message-bubble-wrapper.own .reply-quote{background:hsla(0,0%,100%,.1);border-left-color:hsla(0,0%,100%,.6)}.message-bubble-wrapper.own .reply-quote-name{color:hsla(0,0%,100%,.9)}.message-bubble-wrapper.own .reply-quote-text{color:hsla(0,0%,100%,.7)}.edited-badge{font-size:.7rem;color:var(--text-muted);font-style:italic}.message-bubble-wrapper.editing-target .message-bubble{border-color:var(--primary);box-shadow:0 0 0 2px rgba(59,130,246,.3)}.chat-link{color:var(--primary);text-decoration:underline;text-underline-offset:2px;word-break:break-all}.message-bubble-wrapper.own .chat-link{color:#bfdbfe}.message-image{max-width:100%;max-height:300px;border-radius:var(--radius);cursor:pointer;border:1px solid var(--border)}.reactions-container{display:flex;flex-wrap:wrap;gap:4px}.reactions-container:empty{display:none}.reaction-chip{background:var(--bg);border:1px solid var(--border);border-radius:20px;padding:1px 10px;font-size:.8rem;cursor:pointer;transition:background .15s;color:var(--text-secondary)}.reaction-chip.reacted,.reaction-chip:hover{background:var(--primary-light)}.reaction-chip.reacted{border-color:var(--primary);color:var(--text)}.reaction-picker{display:none;position:fixed;top:0;left:0;z-index:1000;width:max-content;max-width:min(360px,calc(100vw - 16px));max-height:min(400px,70vh);overflow-y:auto;padding:10px 12px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg)}.reaction-picker.active{display:block}.reaction-picker-input-wrap{display:flex;gap:6px;margin-bottom:8px;align-items:center}.reaction-picker-input{flex:1 1;padding:6px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font-size:.9rem;min-width:0}.reaction-picker-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(59,130,246,.2)}.reaction-picker-input-btn{padding:6px 12px;background:var(--primary);color:#fff;border:none;border-radius:4px;font-size:.8rem;cursor:pointer;white-space:nowrap}.reaction-picker-input-btn:hover{background:var(--primary-hover)}.reaction-picker-divider{border-top:1px solid var(--border);margin:6px 0 10px}.reaction-picker-cat{font-size:.65rem;color:var(--text-muted);margin:6px 2px 3px;letter-spacing:.03em;font-weight:600;text-transform:uppercase}.reaction-picker-cat:first-child{margin-top:0}.reaction-picker-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(32px,1fr));grid-gap:2px;gap:2px}.emoji-pick-btn{background:transparent;border:none;font-size:1.1rem;cursor:pointer;padding:4px;border-radius:4px;transition:background .15s;line-height:1}.emoji-pick-btn:hover{background:var(--bg)}.input-area{background:var(--bg-secondary);border-top:1px solid var(--border);padding:12px 24px;display:flex;flex-direction:column;gap:10px;transition:background .25s,border .25s}.reply-preview{display:flex;align-items:center;justify-content:space-between;background:var(--primary-light);border:1px solid var(--primary);border-radius:var(--radius);padding:6px 12px;font-size:.85rem;color:var(--text)}.reply-preview-content{display:flex;align-items:center;gap:6px;overflow:hidden}.reply-preview-label{font-weight:600;color:var(--primary)}.reply-preview-name{font-weight:600;color:var(--text)}.reply-preview-text{color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-preview-cancel{background:none;border:none;font-size:1.1rem;cursor:pointer;color:var(--text-muted)}.reply-preview-cancel:hover{color:var(--danger)}.preview-container{display:flex;flex-wrap:wrap;gap:8px}.image-preview-badge{background:var(--bg);border:1px solid var(--border);padding:4px 12px;border-radius:var(--radius);font-size:.85rem;display:flex;align-items:center;gap:8px;color:var(--text)}.image-preview-badge button{background:none;border:none;color:var(--danger);cursor:pointer;font-weight:700}.input-row{display:flex;gap:10px;align-items:stretch}.message-input{flex:1 1;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem;resize:none;height:40px;min-height:40px;max-height:120px;font-family:var(--font);transition:border .15s;background:var(--bg);color:var(--text);overflow-y:auto;line-height:1.4}.message-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(59,130,246,.15)}.file-upload-btn{flex:0 0 auto;width:auto;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;padding:0 16px;height:100%;box-sizing:border-box;border-radius:var(--radius);cursor:pointer;font-size:.85rem;border:1px solid var(--border);background:var(--bg);color:var(--text-secondary);transition:background .15s;min-height:40px}.file-upload-btn:hover{background:var(--border);color:var(--text)}.random-btn{flex-shrink:0}.send-btn{flex:0 0 auto;width:auto;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;padding:0 16px;height:100%;box-sizing:border-box;border-radius:var(--radius);cursor:pointer;font-size:.85rem;border:1px solid var(--border);background:var(--bg);color:var(--text-secondary);transition:background .15s;min-height:40px}.send-btn.editing{background:var(--success)}.send-btn.editing:hover{background:#15803d}.cancel-edit-btn{flex:0 0 auto;width:auto;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;padding:0 16px;height:100%;box-sizing:border-box;border-radius:var(--radius);cursor:pointer;font-size:.85rem;border:1px solid var(--border);background:var(--bg);color:var(--text-secondary);transition:background .15s;min-height:40px}.message-text h1{font-size:1.6em;font-weight:700;margin:.5em 0}.message-text h2{font-size:1.4em;font-weight:700;margin:.5em 0}.message-text h3{font-size:1.2em;font-weight:700;margin:.5em 0}.message-text h4{font-size:1.1em;font-weight:700;margin:.5em 0}.message-text strong{font-weight:700}.message-text em{font-style:italic}.message-text del{text-decoration:line-through}.message-text ol,.message-text ul{padding-left:1.8em;margin:.3em 0}.message-text li{margin:.1em 0}.message-text blockquote{border-left:4px solid var(--primary);padding:.2em 1em;margin:.5em 0;background:var(--bg);border-radius:0 4px 4px 0;color:var(--text-secondary)}.message-text code{background:rgba(99,102,241,.12);padding:.1em .4em;border-radius:4px;font-size:.9em;color:#a5b4fc}.message-text code,.message-text pre{font-family:Consolas,Monaco,Courier New,monospace;word-break:break-all}.message-text pre{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.8em 1em;overflow-x:auto;margin:.5em 0;font-size:.85em;color:var(--text-secondary);white-space:pre-wrap}.message-text pre code{background:none;padding:0;color:inherit;font-size:inherit}.message-text a{color:var(--primary);text-decoration:underline;text-underline-offset:2px}.message-bubble-wrapper.own .message-text code{background:hsla(0,0%,100%,.15);color:#e0e7ff}.message-bubble-wrapper.own .message-text blockquote{background:hsla(0,0%,100%,.08);border-left-color:hsla(0,0%,100%,.5)}.message-bubble-wrapper.own .message-text pre{background:rgba(0,0,0,.2);border-color:hsla(0,0%,100%,.1)}.message-bubble-wrapper.own .message-text a{color:#bfdbfe}.message-body h1{font-size:1.6em;font-weight:700;margin:.5em 0}.message-body h2{font-size:1.4em;font-weight:700;margin:.5em 0}.message-body h3{font-size:1.2em;font-weight:700;margin:.5em 0}.message-body h4{font-size:1.1em;font-weight:700;margin:.5em 0}.message-body h5{font-size:1.05em;font-weight:700;margin:.5em 0}.message-body small{font-size:.85em;color:var(--text-muted)}.message-body strong{font-weight:700}.message-body em{font-style:italic}.message-body del{text-decoration:line-through}.message-body ol,.message-body ul{padding-left:1.8em;margin:.3em 0}.message-body li{margin:.1em 0}.message-body blockquote{border-left:4px solid var(--primary);padding:.2em 1em;margin:.5em 0;background:var(--bg);border-radius:0 4px 4px 0;color:var(--text-secondary)}.message-body code{background:rgba(99,102,241,.12);padding:.1em .4em;border-radius:4px;font-size:.9em;color:#a5b4fc}.message-body code,.message-body pre{font-family:Consolas,Monaco,Courier New,monospace;word-break:break-all}.message-body pre{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.8em 1em;overflow-x:auto;font-size:.85em;color:var(--text-secondary);white-space:pre-wrap}.message-body pre code{background:none;padding:0;color:inherit;font-size:inherit}.message-body mark{background:rgba(99,102,241,.2);padding:.1em .4em;border-radius:4px;cursor:pointer;transition:background .2s}.message-body mark:hover{background:rgba(99,102,241,.4)}.message-body .spoiler{filter:blur(4px);cursor:pointer;transition:filter .2s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.message-body .spoiler:hover{filter:blur(0);-webkit-user-select:text;-moz-user-select:text;user-select:text}.message-body .spoiler img{filter:blur(4px);transition:filter .2s}.message-body .spoiler:hover img{filter:blur(0)}.message-bubble-wrapper.own .message-body .spoiler{filter:blur(4px)}.message-bubble-wrapper.own .message-body .spoiler:hover{filter:blur(0)}.message-bubble-wrapper.own .message-body .spoiler img{filter:blur(4px)}.message-bubble-wrapper.own .message-body .spoiler:hover img{filter:blur(0)}.message-body a{color:var(--primary);text-decoration:underline;text-underline-offset:2px}.message-bubble-wrapper.own .message-body code{background:hsla(0,0%,100%,.15);color:#e0e7ff}.message-bubble-wrapper.own .message-body blockquote{background:hsla(0,0%,100%,.08);border-left-color:hsla(0,0%,100%,.5)}.message-bubble-wrapper.own .message-body pre{background:rgba(0,0,0,.2);border-color:hsla(0,0%,100%,.1)}.message-bubble-wrapper.own .message-body a{color:#bfdbfe}.message-bubble-wrapper.own .message-body mark{background:hsla(0,0%,100%,.2)}.message-bubble-wrapper.own .message-body mark:hover{background:hsla(0,0%,100%,.3)}.small-text{font-size:.8em;color:var(--text-muted);margin:.2em 0}.spoiler{filter:blur(5px);cursor:pointer;transition:filter .2s ease,background .2s ease;background:hsla(0,0%,50%,.15);border-radius:3px;padding:0 3px;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:inline-block}.spoiler.revealed{filter:blur(0);background:transparent;-webkit-user-select:text;-moz-user-select:text;user-select:text;cursor:default}.message-bubble-wrapper.own .spoiler{background:hsla(0,0%,100%,.15)}.message-bubble-wrapper.own .spoiler.revealed{background:transparent}.message-text p{margin:0 0 .4em}.message-text h5{font-size:1.05em;font-weight:700;margin:.5em 0}.message-text>:last-child{margin-bottom:0}.admin-layout{max-width:1200px;width:100%;margin:32px auto;padding:0 20px;flex:1 1}.admin-section{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:24px 28px;margin-bottom:28px;box-shadow:var(--shadow);transition:background .25s,border .25s}.admin-section h2{font-size:1.2rem;font-weight:600;color:var(--text);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.admin-grid{display:grid;grid-template-columns:1fr;grid-gap:28px;gap:28px}@media (min-width:992px){.admin-grid{grid-template-columns:2fr 1fr}}.grid-span-all{grid-column:1/-1}.table-responsive{overflow-x:auto}.admin-table{font-size:.88rem;color:var(--text)}.admin-table td,.admin-table th{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left}.admin-table th{color:var(--text-secondary)}.admin-table tr:hover td{background:var(--bg)}.btn-sm{padding:4px 12px;font-size:.8rem;border-radius:var(--radius);width:auto}.btn-sm,.switch{display:inline-block}.switch{position:relative;width:52px;height:28px}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--border);border-radius:28px}.slider,.slider:before{position:absolute;transition:.2s}.slider:before{content:"";height:20px;width:20px;left:4px;bottom:4px;background:#fff;border-radius:50%}input:checked+.slider{background:var(--danger)}input:checked+.slider:before{transform:translateX(24px)}.modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;justify-content:center;align-items:center;z-index:100;opacity:0;pointer-events:none;transition:opacity .2s}.modal.active{opacity:1;pointer-events:auto}.modal-content{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);width:90%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);color:var(--text)}.modal-header{padding:16px 24px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.modal-header h3{font-size:1.1rem;color:var(--text)}.close-btn{background:none;border:none;font-size:1.4rem;cursor:pointer;color:var(--text-muted)}.close-btn:hover{color:var(--text)}.modal-body{padding:24px}.modal-footer{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}.flex-gap-12{display:flex;gap:12px;flex-wrap:wrap}.align-center{display:flex;align-items:center;gap:6px}#image-modal .modal-content{background:transparent;border:none;box-shadow:none;max-width:90vw;text-align:center}#modal-img{max-width:100%;max-height:90vh;border-radius:var(--radius)}@media (max-width:768px){.chat-header{padding:10px 16px}.header-title{font-size:1rem}.header-actions{gap:8px}.messages-container{padding:16px}.input-area{padding:10px 16px}.admin-layout{margin:16px auto;padding:0 12px}.admin-section{padding:16px 18px}.admin-section h2{font-size:1rem}.admin-table td,.admin-table th{padding:8px 6px;font-size:.8rem}.message-bubble-wrapper{max-width:88%}}@media (max-width:480px){.login-card{padding:28px 20px}.system-title{font-size:1.4rem}.chat-header{flex-direction:column;align-items:stretch}.header-actions{justify-content:flex-end}.user-badge .nickname{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-input{flex:1 1;min-width:0;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem;resize:none;height:40px;min-height:40px;max-height:120px;font-family:var(--font);overflow-y:auto;line-height:1.4;transition:border .15s;background:var(--bg);color:var(--text);box-sizing:border-box}.input-row{flex-wrap:wrap}.file-upload-btn,.send-btn{height:40px}.send-btn{width:auto;padding:0 24px}.modal-content{width:98%}.login-theme-toggle{top:10px;right:10px}.login-theme-toggle,.theme-toggle-btn{width:32px;height:32px;font-size:.95rem}}.manual-layout{flex:1 1;overflow-y:auto;padding:40px 20px;width:100%}.manual-nav{display:flex;flex-wrap:wrap;gap:10px;margin-top:32px;padding-top:20px;border-top:1px solid var(--border)}.manual-nav>a{display:inline-block;padding:8px 14px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius,6px);color:var(--text-secondary);text-decoration:none;font-size:.88rem;transition:background .2s,color .2s}.manual-nav>a:hover{background:var(--primary-light);color:var(--text)}.manual-content{width:100%;max-width:820px;margin:0 auto;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius,8px);box-shadow:var(--shadow-lg);padding:36px 40px}.manual-content h1{font-size:1.8rem;color:#fff;margin:0 0 8px}.manual-content h2{font-size:1.4rem;color:#fff;margin:40px 0 16px;padding-bottom:8px;border-bottom:1px solid var(--border)}.manual-content h3{font-size:1.1rem;color:hsla(0,0%,100%,.9);margin:24px 0 10px}.manual-content h4{font-size:.95rem;color:hsla(0,0%,100%,.8);margin:16px 0 8px}.manual-content li,.manual-content p{color:hsla(0,0%,100%,.8);line-height:1.7;font-size:.92rem}.manual-content p{margin-bottom:12px}.manual-content ol,.manual-content ul{padding-left:24px;margin:8px 0 14px}.manual-content li{margin:4px 0}.manual-content a{color:var(--primary,#667eea);text-decoration:none}.manual-content a:hover{text-decoration:underline}.manual-lead,.subtitle{color:var(--text-muted,hsla(0,0%,100%,.6));font-size:.95rem;margin-bottom:24px}.manual-toc{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius,8px);padding:16px 20px;margin-bottom:32px}.manual-toc>p{font-weight:600;color:var(--text-muted,hsla(0,0%,100%,.6));font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px}.manual-toc ul{list-style:none;padding:0;margin:0}.manual-toc li{margin:6px 0}.manual-toc a{color:var(--primary,#667eea);text-decoration:none;font-size:.9rem}.manual-toc a:hover{text-decoration:underline}.manual-table{width:100%;border-collapse:collapse;margin:12px 0 20px}.manual-table td,.manual-table th{padding:10px 14px;border:1px solid var(--glass-border,hsla(0,0%,100%,.08));color:hsla(0,0%,100%,.8);font-size:.88rem;text-align:left}.manual-table th{background:hsla(0,0%,100%,.05);color:hsla(0,0%,100%,.6);font-weight:600}.manual-table tr:hover{background:hsla(0,0%,100%,.02)}.manual-note{background:rgba(102,126,234,.1);border-left:4px solid var(--primary,#667eea)}.manual-note,.manual-warning{border-radius:0 6px 6px 0;padding:12px 16px;margin:16px 0;font-size:.88rem;color:hsla(0,0%,100%,.8)}.manual-warning{background:rgba(255,71,87,.1);border-left:4px solid var(--danger,#ff4757)}.tip-box{background:rgba(59,130,246,.12);border-left:3px solid var(--primary,#667eea)}.tip-box,.warn-box{padding:10px 14px;border-radius:0 var(--radius-sm,4px) var(--radius-sm,4px) 0;margin:14px 0;font-size:.88rem;color:hsla(0,0%,100%,.8)}.warn-box{background:rgba(245,158,11,.12);border-left:3px solid #f59e0b}.danger-box{background:rgba(239,68,68,.12);border-left:3px solid var(--danger,#ef4444);padding:10px 14px;border-radius:0 var(--radius-sm,4px) var(--radius-sm,4px) 0;margin:14px 0;font-size:.88rem;color:hsla(0,0%,100%,.8)}.manual-code,.manual-content pre.manual-code{padding:14px 18px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.82rem;color:hsla(0,0%,100%,.85);line-height:1.6;white-space:pre}.code-block,.manual-code,.manual-content pre.manual-code{background:rgba(0,0,0,.3);border:1px solid var(--glass-border,hsla(0,0%,100%,.08));border-radius:var(--radius-sm,6px);overflow-x:auto;margin:12px 0}.code-block{padding:12px 16px;font-family:monospace;font-size:.85rem;white-space:pre-wrap;word-break:break-all}.manual-content code{background:hsla(0,0%,100%,.08);padding:2px 6px;border-radius:4px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.85em;color:#e2b93d}.manual-content pre code{background:none;padding:0;color:inherit}.hl-danger{color:var(--danger,#ff4757);font-weight:700}.key,kbd{display:inline-block;background:hsla(0,0%,100%,.08);border:1px solid var(--glass-border,hsla(0,0%,100%,.2));border-radius:4px;padding:1px 8px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.82em;color:hsla(0,0%,100%,.9);box-shadow:0 1px 2px rgba(0,0,0,.2);vertical-align:baseline}.faq-item{margin:16px 0;padding:16px;background:hsla(0,0%,100%,.02);border:1px solid hsla(0,0%,100%,.06);border-radius:8px}.faq-item h3{margin:0 0 8px;font-size:1rem;color:#ffa502}.faq-item li,.faq-item p{margin:4px 0}.folder-tree{background:rgba(0,0,0,.25);border:1px solid var(--glass-border,hsla(0,0%,100%,.08));border-radius:var(--radius-sm,6px);padding:14px 18px;font-family:monospace;font-size:.85rem;line-height:1.6;margin:12px 0;white-space:pre}@media (max-width:768px){.manual-layout{padding:20px 12px}.manual-content{padding:24px 20px;max-width:none}.manual-content h1{font-size:1.4rem}.manual-content h2{font-size:1.15rem}.manual-table td,.manual-table th{padding:8px 10px;font-size:.82rem}}@media (max-width:480px){.manual-nav{flex-direction:column}.manual-nav>a{text-align:center}.manual-content{padding:20px 16px}.manual-content h1{font-size:1.2rem}.manual-content h2{font-size:1.05rem}.code-block,.manual-code,.manual-content pre.manual-code{padding:10px 12px;font-size:.75rem}.manual-table td,.manual-table th{padding:6px 8px;font-size:.78rem}.faq-item{padding:12px}}@media (hover:none){.manual-table tr:hover{background:transparent}}.message-info-compact{display:flex;align-items:center;gap:4px;font-size:.7rem;color:var(--text-muted);margin-bottom:1px;padding-left:4px;cursor:default;opacity:.6;transition:opacity .2s ease}.message-info-compact .time-compact{font-size:.65rem;color:var(--text-muted)}.message-bubble-wrapper:hover .message-info-compact{opacity:1}.message-bubble-wrapper.own .message-info-compact{text-align:right;padding-right:4px;padding-left:0;justify-content:flex-end}.header-clock{font-size:.85rem;font-weight:400;color:var(--text-muted);margin-left:12px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;background:hsla(0,0%,100%,.04);padding:2px 10px;border-radius:4px;border:1px solid var(--border)}.link-card-container{margin-top:6px;display:flex;flex-direction:column;gap:4px}.link-card{display:flex;align-items:center;gap:12px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 10px;cursor:pointer;transition:background .15s ease,border-color .15s ease;overflow:hidden;max-width:100%;min-height:56px}.link-card:hover{background:var(--bg-secondary);border-color:var(--primary)}.link-card-thumbnail{flex-shrink:0;order:2;width:56px;height:56px;background:var(--bg-secondary);border-radius:4px;overflow:hidden;display:flex;align-items:center;justify-content:center}.link-card-thumbnail img{width:100%;height:100%;object-fit:cover}.link-card-body{flex:1 1;min-width:0;order:1;display:flex;flex-direction:column;gap:2px}.link-card-title{font-size:.85rem;font-weight:500;color:var(--text);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.link-card-site{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.02em}.message-bubble-wrapper.own .link-card{background:hsla(0,0%,100%,.05);border-color:hsla(0,0%,100%,.1)}.message-bubble-wrapper.own .link-card:hover{background:hsla(0,0%,100%,.1);border-color:hsla(0,0%,100%,.3)}.link-card-embed{margin-top:6px;border-radius:6px}.youtube-embed{max-width:440px;margin:0 auto}.youtube-info{padding:6px 10px;gap:1px}.youtube-title{font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.youtube-channel{font-size:.65rem}.twitter-embed{border-radius:6px;max-width:440px;margin:0 auto}.twitter-embed blockquote{padding:4px 0;font-size:.85rem}.twitter-embed blockquote p{margin:0 0 .3em}@media (max-width:480px){.link-card-thumbnail{width:44px;height:44px}.link-card-title{font-size:.8rem}.twitter-embed,.youtube-embed{max-width:100%}.youtube-title{font-size:.75rem}}.link-card-embed{margin-top:8px;border-radius:8px;overflow:hidden;background:var(--bg-secondary);border:1px solid var(--border)}.youtube-player{position:relative;width:100%;padding-bottom:56.25%;height:0;overflow:hidden;background:#000}.youtube-player iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.youtube-info{padding:8px 12px;display:flex;flex-direction:column;gap:2px}.youtube-title{font-size:.9rem;font-weight:500;color:var(--text)}.youtube-channel{font-size:.75rem;color:var(--text-muted)}.twitter-embed{padding:4px 8px;background:var(--bg-secondary);border-radius:8px;max-width:100%;overflow:hidden}.twitter-embed blockquote{margin:0;padding:0;border:none;background:transparent;color:var(--text);font-size:.9rem;line-height:1.5}.twitter-embed blockquote p{margin:0 0 .5em}.twitter-embed blockquote a{color:var(--primary);text-decoration:none}.twitter-embed blockquote a:hover{text-decoration:underline}.message-bubble-wrapper.own .link-card-embed{background:hsla(0,0%,100%,.05);border-color:hsla(0,0%,100%,.1)}@media (max-width:480px){.youtube-title{font-size:.8rem}.youtube-channel{font-size:.7rem}}.badge{position:relative;display:inline-block}.badge:after{content:attr(data-count);position:absolute;top:-8px;right:-8px;background:#ef4444;color:#fff;font-size:.65rem;font-weight:700;min-width:18px;height:18px;line-height:18px;text-align:center;border-radius:50%;padding:0 5px;box-shadow:0 2px 4px rgba(0,0,0,.2);transition:transform .2s}.badge[data-count="0"]:after{content:"";min-width:0;width:0;height:0;padding:0;border:none;display:none}.admin-btn.badge{position:relative;padding-right:12px}.admin-btn.badge:after{top:-6px;right:-6px}@media (min-width:769px){body.sidebar-mode .chat-layout{padding-left:220px}body.sidebar-mode .chat-header{position:fixed;top:0;left:0;bottom:0;width:220px;flex-direction:column;flex-wrap:nowrap;justify-content:flex-start;align-items:stretch;gap:18px;padding:20px 16px;border-bottom:none;border-right:1px solid var(--border);overflow-y:auto;z-index:50}body.sidebar-mode .header-logo{flex-shrink:0;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid var(--border)}body.sidebar-mode .header-actions{flex-direction:column;align-items:stretch;gap:10px;width:100%}body.sidebar-mode .header-actions .admin-btn,body.sidebar-mode .header-actions .logout-btn{width:100%;text-align:left}body.sidebar-mode .header-actions .user-badge{width:100%;justify-content:flex-start}body.sidebar-mode .header-actions .theme-toggle-btn{align-self:flex-start}}.terms-doc{color:var(--text-secondary);font-size:.9rem;line-height:1.75}.terms-doc p{margin:0 0 12px}.terms-doc h3{color:var(--text);font-size:.98rem;font-weight:700;margin:20px 0 8px}.terms-doc ul{margin:4px 0 14px;padding-left:22px}.terms-doc li{margin:4px 0}.terms-doc .terms-meta{color:var(--text-muted);font-size:.82rem;margin-bottom:16px}.terms-doc .terms-end{text-align:right;color:var(--text-muted);margin-top:16px}.terms-scroll{max-height:220px;overflow-y:auto;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius,6px);padding:14px 16px;margin-bottom:12px}.terms-scroll .terms-doc{font-size:.82rem;line-height:1.65}.terms-scroll .terms-doc h3{font-size:.9rem;margin-top:16px}.terms-agree-row{display:flex;align-items:flex-start;gap:8px;margin-bottom:8px}.terms-agree-row input[type=checkbox]{width:18px;height:18px;margin-top:1px;flex-shrink:0;accent-color:var(--primary);cursor:pointer}.terms-agree-row label{margin:0;font-size:.88rem;color:var(--text-secondary);cursor:pointer}.terms-agree-row a{color:var(--primary);text-decoration:underline}[data-theme=light] .manual-content h1,[data-theme=light] .manual-content h2,[data-theme=light] .manual-content h3,[data-theme=light] .manual-content h4{color:var(--text)}[data-theme=light] .manual-content li,[data-theme=light] .manual-content p,[data-theme=light] .manual-lead,[data-theme=light] .manual-toc>p,[data-theme=light] .subtitle{color:var(--text-secondary)}[data-theme=light] .danger-box,[data-theme=light] .manual-note,[data-theme=light] .manual-warning,[data-theme=light] .tip-box,[data-theme=light] .warn-box{color:var(--text)}[data-theme=light] .manual-table td{color:var(--text-secondary)}[data-theme=light] .manual-table th{background:rgba(0,0,0,.04);color:var(--text-muted)}[data-theme=light] .manual-table tr:hover{background:rgba(0,0,0,.03)}[data-theme=light] .code-block,[data-theme=light] .folder-tree,[data-theme=light] .manual-code,[data-theme=light] .manual-content pre.manual-code{background:rgba(0,0,0,.05);color:var(--text)}[data-theme=light] .manual-content code{background:rgba(0,0,0,.06);color:#b45309}[data-theme=light] .key,[data-theme=light] kbd{background:rgba(0,0,0,.06);color:var(--text)}[data-theme=light] .faq-item{background:rgba(0,0,0,.02);border-color:rgba(0,0,0,.1)}[data-theme=light] .faq-item h3{color:#c2410c}.admin-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:16px;color:var(--text-muted)}.admin-loading-spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.admin-layout{display:flex;min-height:100vh;background:var(--bg)}.admin-sidebar{width:220px;flex-shrink:0;background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.admin-sidebar-brand{display:flex;align-items:center;gap:10px;padding:20px 16px 16px;font-size:1rem;font-weight:700;color:var(--primary);border-bottom:1px solid var(--border)}.admin-sidebar-icon{font-size:1.2rem}.admin-sidebar-nav{flex:1 1;padding:12px 8px;display:flex;flex-direction:column;gap:2px}.admin-nav-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-radius:var(--radius);color:var(--text-secondary);font-size:.875rem;text-decoration:none;transition:background .15s,color .15s}.admin-nav-item:hover{background:var(--primary-light);color:var(--primary)}.admin-nav-badge{background:var(--danger);color:#fff;font-size:.7rem;padding:2px 6px;border-radius:999px;font-weight:700}.admin-sidebar-footer{padding:12px 8px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:4px}.admin-back-link{display:block;padding:8px 12px;color:var(--text-muted);font-size:.8rem;text-decoration:none;border-radius:var(--radius);transition:background .15s,color .15s}.admin-back-link:hover{background:var(--primary-light);color:var(--primary)}.admin-main{flex:1 1;padding:28px 32px;overflow-y:auto;max-width:900px}.admin-page-header{margin-bottom:24px}.admin-page-title{font-size:1.6rem;font-weight:700;color:var(--text);margin:0 0 4px}.admin-page-subtitle{color:var(--text-muted);font-size:.875rem;margin:0}.admin-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:calc(var(--radius) * 1.5);margin-bottom:20px;overflow:hidden}.admin-card-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border);background:hsla(0,0%,100%,.02)}.admin-card-title{font-size:1rem;font-weight:600;color:var(--text);margin:0;display:flex;align-items:center;gap:10px}.admin-count-badge{background:var(--primary);color:#fff;font-size:.72rem;padding:2px 8px;border-radius:999px;font-weight:600}.admin-card-body{padding:16px 20px}.admin-setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--border)}.admin-setting-row:last-child{border-bottom:none;padding-bottom:0}.admin-setting-info{display:flex;flex-direction:column;gap:2px}.admin-setting-label{font-size:.9rem;font-weight:500;color:var(--text)}.admin-setting-desc{font-size:.78rem;color:var(--text-muted)}.admin-status-badge{display:inline-block;font-size:.78rem;padding:2px 8px;border-radius:999px;font-weight:600;margin-top:2px}.admin-status-ok{background:rgba(34,197,94,.15);color:var(--success)}.admin-status-danger{background:rgba(239,68,68,.15);color:var(--danger)}.admin-empty-state{color:var(--text-muted);font-size:.875rem;padding:8px 0}.admin-request-list{display:flex;flex-direction:column;gap:8px}.admin-request-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:hsla(0,0%,100%,.03);border:1px solid var(--border);border-radius:var(--radius)}.admin-request-info{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.admin-request-username{font-weight:600;color:var(--text);font-size:.9rem}.admin-request-nickname{color:var(--text-secondary);font-size:.875rem}.admin-request-date{color:var(--text-muted);font-size:.78rem}.admin-request-actions{display:flex;gap:6px;flex-shrink:0}.admin-table-wrap{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:.875rem}.admin-table th{text-align:left;font-size:.78rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.admin-table td,.admin-table th{padding:10px 12px;border-bottom:1px solid var(--border)}.admin-table td{color:var(--text);vertical-align:middle}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table tbody tr:hover{background:hsla(0,0%,100%,.03)}.admin-id-badge{display:inline-block;background:var(--primary-light);color:var(--primary);font-size:.78rem;padding:2px 7px;border-radius:999px;font-weight:600}.admin-username{background:hsla(0,0%,100%,.06);padding:2px 8px;border-radius:4px;font-size:.85rem;font-family:monospace}.admin-inline-input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:5px 8px;font-size:.875rem;width:120px;transition:border-color .15s}.admin-inline-input:focus{outline:none;border-color:var(--primary)}.admin-inline-select{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:5px 8px;font-size:.875rem;cursor:pointer}.admin-subcard{padding:16px 20px;border-top:1px solid var(--border);background:hsla(0,0%,100%,.02)}.admin-subcard-title{font-size:.9rem;font-weight:600;color:var(--text-secondary);margin:0 0 12px}.admin-form-grid{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.admin-form-grid .input-control{flex:1 1;min-width:110px;max-width:180px}.admin-checkbox-label{display:flex;align-items:center;gap:6px;font-size:.875rem;color:var(--text-secondary);cursor:pointer;white-space:nowrap}.admin-role-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.admin-role-item{display:flex;align-items:center;gap:10px}.admin-add-form{display:flex;gap:8px;align-items:center;margin-top:12px;flex-wrap:wrap}.admin-color-wrap{display:flex;align-items:center;gap:6px}.admin-color-input{width:36px;height:36px;border:none;border-radius:var(--radius);cursor:pointer;padding:2px;background:var(--bg)}.admin-color-preview{width:20px;height:20px;border-radius:50%;border:1px solid var(--border);display:inline-block}.admin-room-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.admin-room-item{display:flex;align-items:center;gap:10px}.admin-room-name{font-size:.9rem;color:var(--text)}.admin-default-badge{background:rgba(59,130,246,.15);color:var(--primary);font-size:.72rem;padding:2px 8px;border-radius:999px;font-weight:600}.mypage-loading{flex-direction:column;align-items:center;height:100vh;gap:16px;color:var(--text-muted)}.mypage-layout,.mypage-loading{display:flex;justify-content:center}.mypage-layout{min-height:100vh;background:var(--bg);align-items:flex-start;padding:40px 16px}.mypage-container{width:100%;max-width:480px;display:flex;flex-direction:column;gap:16px}.mypage-header{margin-bottom:4px}.mypage-back-link{display:inline-block;color:var(--primary);font-size:.875rem;text-decoration:none;margin-bottom:12px;transition:opacity .15s}.mypage-back-link:hover{opacity:.75}.mypage-title{font-size:1.5rem;font-weight:700;color:var(--text);margin:0}.mypage-profile-card{background:linear-gradient(135deg,var(--primary) 0,#6366f1 100%);border-radius:calc(var(--radius) * 2);padding:24px 20px;display:flex;align-items:center;gap:18px;color:#fff;box-shadow:0 4px 20px rgba(59,130,246,.3)}.mypage-avatar{width:60px;height:60px;border-radius:50%;background:hsla(0,0%,100%,.25);display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;flex-shrink:0;border:2px solid hsla(0,0%,100%,.4)}.mypage-profile-info{display:flex;flex-direction:column;gap:2px}.mypage-nickname{font-size:1.15rem;font-weight:700}.mypage-username{font-size:.85rem;opacity:.8}.mypage-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:calc(var(--radius) * 1.5);overflow:hidden}.mypage-card-danger{border-color:rgba(239,68,68,.3)}.mypage-card-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border);background:hsla(0,0%,100%,.02)}.mypage-card-danger .mypage-card-header{border-bottom-color:rgba(239,68,68,.2);background:rgba(239,68,68,.05)}.mypage-card-title{font-size:.95rem;font-weight:600;color:var(--text);margin:0}.mypage-card-danger .mypage-card-title{color:var(--danger)}.mypage-danger-note{font-size:.75rem;color:var(--danger);opacity:.8}.mypage-card-body{padding:18px 20px;display:flex;flex-direction:column;gap:12px}.mypage-status{font-size:.875rem;padding:8px 12px;border-radius:var(--radius)}.mypage-status-ok{background:rgba(34,197,94,.12);color:var(--success);border:1px solid rgba(34,197,94,.25)}.mypage-status-err{background:rgba(239,68,68,.1);color:var(--danger);border:1px solid rgba(239,68,68,.25)}@media (max-width:768px){.admin-sidebar{display:none}.admin-main{padding:16px}.admin-form-grid{flex-direction:column;align-items:stretch}.admin-form-grid .input-control{max-width:100%}}