:root{font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#16201f;background:#edf1ee;--ink:#13201e;--muted:#78827f;--line:#e1e7e3;--paper:#fff;--soft:#f5f7f5;--dark:#0d1918;--accent:#d9ff62;--green:#315f55;--danger:#a54135}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#edf1ee}button,input,textarea{font:inherit}button{color:inherit}.hidden{display:none!important}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.18em;color:#a3b3ae}.eyebrow.dark{color:#77908a}.logo{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:var(--accent);color:#0d1918;font-size:12px;font-weight:900;letter-spacing:-.05em}.logo.large{width:58px;height:58px;border-radius:18px;font-size:15px;margin-bottom:44px}.login-screen{display:grid;grid-template-columns:minmax(380px,1fr) minmax(420px,620px);min-height:100vh}.login-story{display:flex;flex-direction:column;justify-content:center;padding:8vw;color:#fff;background:radial-gradient(circle at 20% 10%,#284d46 0,transparent 38%),radial-gradient(circle at 90% 90%,#1f3934 0,transparent 32%),#0d1918}.login-story h1{max-width:650px;margin:18px 0 24px;font-size:clamp(40px,5vw,72px);line-height:1.12;letter-spacing:-.055em}.login-story p{max-width:540px;margin:0;color:#aebbb7;font-size:15px;line-height:1.8}.story-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:52px}.story-pills span{padding:8px 11px;border:1px solid #2c413e;border-radius:999px;color:#b8c5c1;font-size:10px}.login-card{align-self:center;display:grid;gap:18px;width:min(390px,calc(100% - 48px));margin:auto}.login-card h2{margin:10px 0 8px;font-size:30px;letter-spacing:-.04em}.login-card p{margin:0;color:var(--muted);font-size:13px}.login-card>small{color:#9aa29f;text-align:center;font-size:10px}.identity-options{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:8px 0}.identity-option{display:flex;align-items:center;gap:11px;padding:12px;border:1px solid var(--line);border-radius:15px;background:#fff;cursor:pointer;text-align:left}.identity-option.active{border-color:#2e5e54;box-shadow:0 0 0 3px rgba(49,95,85,.09)}.identity-option .avatar{width:36px;height:36px}.identity-option span:last-child{display:grid;gap:2px}.identity-option strong{font-size:12px}.identity-option small{color:var(--muted);font-size:9px}.field-label{font-size:11px;font-weight:700}.login-card>input,dialog input{width:100%;padding:13px 14px;border:1px solid #dce3df;border-radius:12px;outline:none;background:#fafcfb}.login-card>input:focus,dialog input:focus{border-color:#4f7a70;box-shadow:0 0 0 3px rgba(49,95,85,.1)}.primary-button{display:flex;justify-content:space-between;padding:14px 16px;border:0;border-radius:12px;background:var(--dark);color:#fff;cursor:pointer;font-size:12px;font-weight:700}.primary-button:hover{background:#1c302d}.app{display:grid;grid-template-columns:238px minmax(0,1fr);width:min(1480px,calc(100vw - 28px));height:calc(100vh - 28px);min-height:650px;margin:14px auto;overflow:hidden;border:1px solid rgba(13,25,24,.08);border-radius:22px;background:var(--paper);box-shadow:0 24px 80px rgba(20,38,34,.1)}.sidebar{display:flex;flex-direction:column;padding:22px 14px 14px;background:var(--dark);color:#eff4f1}.brand{display:flex;align-items:center;gap:11px;padding:0 8px 28px}.brand>div:last-child{display:grid;gap:2px}.brand strong{font-size:13px}.brand small{color:#74837f;font-size:9px}.main-nav{display:grid;gap:6px}.nav-item{display:grid;grid-template-columns:34px 1fr;gap:10px;width:100%;padding:11px;border:0;border-radius:13px;background:transparent;color:#afbbb7;cursor:pointer;text-align:left}.nav-item>span{display:grid;place-items:center;width:32px;height:32px;border:1px solid #2b3b38;border-radius:10px;font-size:17px}.nav-item>div{display:grid;gap:3px}.nav-item strong{font-size:11px}.nav-item small{color:#667772;font-size:8px}.nav-item.active{background:#1a2a27;color:#fff}.nav-item.active>span{border-color:var(--accent);background:var(--accent);color:#0d1918}.sidebar-spacer{flex:1}.profile-button{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:10px;width:100%;padding:11px 8px;border:0;border-top:1px solid #263633;background:transparent;color:#fff;cursor:pointer;text-align:left}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--accent);color:#14211f;font-size:11px;font-weight:900}.profile-button>span:nth-child(2){display:grid;gap:2px;min-width:0}.profile-button strong,.profile-button small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-button strong{font-size:10px}.profile-button small{color:#788984;font-size:8px}.profile-button i{color:#64736f;font-style:normal;font-size:9px}.logout-button{padding:7px;border:0;background:transparent;color:#677773;cursor:pointer;font-size:8px}.view{display:grid;grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0}.topbar{display:flex;align-items:center;justify-content:space-between;padding:21px 28px 18px;border-bottom:1px solid var(--line);background:#fff}.topbar h1{margin:5px 0 4px;font-size:22px;letter-spacing:-.035em}.topbar p{margin:0;color:var(--muted);font-size:10px}.connection{display:flex;align-items:center;gap:7px;padding:7px 10px;border-radius:999px;background:#f1f4f2;color:#6e7976;font-size:9px}.connection i{width:7px;height:7px;border-radius:50%;background:#aab2af}.connection.online{background:#edf9e8;color:#397440}.connection.online i{background:#66b361;box-shadow:0 0 0 3px rgba(102,179,97,.12)}.connection.offline{background:#fff0ed;color:#9b4639}.connection.offline i{background:#d56758}.chat-layout{display:grid;grid-template-columns:minmax(0,1fr) 238px;min-height:0}.conversation{display:grid;grid-template-rows:minmax(0,1fr) auto;min-width:0;min-height:0;background:#f8faf8}.messages-wrap{position:relative;min-height:0;overflow-y:auto}.messages{display:grid;gap:17px;padding:24px 28px 36px}.empty-state{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;color:var(--muted);text-align:center}.empty-state>span{font-size:48px;color:#b9c4c0}.empty-state h2{margin:10px 0 5px;font-size:15px;color:var(--ink)}.empty-state p{margin:0;font-size:10px}.message{display:grid;grid-template-columns:34px minmax(0,1fr);gap:10px;max-width:min(650px,86%)}.message.mine{justify-self:end;grid-template-columns:minmax(0,1fr) 34px}.message.mine .message-avatar{grid-column:2}.message.mine .message-body{grid-column:1;grid-row:1;align-items:flex-end}.message-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#e4eae7;color:#60706c;font-size:9px;font-weight:800}.message.mine .message-avatar{background:#d9ff62;color:#15231f}.message-body{display:flex;flex-direction:column;min-width:0}.message-meta{display:flex;align-items:baseline;gap:7px;margin:0 2px 5px}.message-meta strong{font-size:9px}.message-meta span,.message-meta time{color:#99a39f;font-size:8px}.bubble-wrap{display:flex;align-items:flex-start;gap:5px}.bubble{max-width:100%;padding:10px 12px;border:1px solid #e1e7e3;border-radius:5px 14px 14px 14px;background:#fff;box-shadow:0 4px 14px rgba(18,35,31,.035);white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.55}.mine .bubble{border-color:#d6e9a9;border-radius:14px 5px 14px 14px;background:#efffc9}.copy-button{opacity:0;padding:5px;border:0;background:transparent;color:#8a9793;cursor:pointer;font-size:10px}.message:hover .copy-button{opacity:1}.file-card{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;width:min(400px,100%);padding:10px;border:1px solid #dfe6e2;border-radius:13px;background:#fff;color:inherit;text-decoration:none}.file-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#ecf3ef;color:#416d63}.file-info{display:grid;gap:3px;min-width:0}.file-info strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}.file-info small{color:var(--muted);font-size:8px}.download-icon{color:#416d63}.load-older{display:block;margin:14px auto 0;padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);cursor:pointer;font-size:8px}.composer-shell{padding:11px 20px 13px;border-top:1px solid var(--line);background:#fff}.composer{display:grid;grid-template-columns:auto 1fr auto;align-items:end;gap:9px}.attach-button,#send-button{display:grid;place-items:center;height:40px;border:0;border-radius:11px;cursor:pointer}.attach-button{width:40px;background:#edf1ef;color:#55645f;font-size:19px}#message-input{width:100%;min-height:40px;max-height:112px;resize:none;padding:10px 12px;border:1px solid #dce4e0;border-radius:11px;outline:none;background:#fafcfb;color:var(--ink);font-size:11px;line-height:1.45}#message-input:focus{border-color:#71978e;box-shadow:0 0 0 3px rgba(49,95,85,.08)}#send-button{grid-auto-flow:column;gap:6px;padding:0 13px;background:var(--dark);color:#fff;font-size:10px;font-weight:700}.composer-hint{display:flex;justify-content:space-between;margin:6px 3px 0 49px;color:#a1aaa7;font-size:7px}.progress-row,.repo-progress{display:grid;grid-template-columns:minmax(90px,auto) minmax(90px,1fr) 30px;align-items:center;gap:9px;margin:0 49px 8px;color:#687570;font-size:8px}.progress-row>div,.repo-progress>div{height:4px;overflow:hidden;border-radius:99px;background:#e7ece9}.progress-row i,.repo-progress i{display:block;width:0;height:100%;background:#6b9c59;transition:.15s}.presence-panel{display:flex;flex-direction:column;min-height:0;padding:22px 17px 17px;border-left:1px solid var(--line);background:#fff}.panel-heading{display:flex;justify-content:space-between;align-items:center}.panel-heading h2{margin:4px 0 0;font-size:14px}.panel-heading button{border:0;background:transparent;color:#7b8884;cursor:pointer}.online-summary{display:flex;align-items:baseline;gap:5px;margin:20px 0 12px;padding:13px;border-radius:13px;background:#f2f7f4}.online-summary strong{font-size:22px;color:#2e6558}.online-summary span{color:#70807b;font-size:8px}.device-list{display:grid;gap:4px;overflow-y:auto}.device-row{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:8px;padding:8px;border-radius:11px}.device-row:hover{background:#f5f7f5}.device-dot{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:#edf1ef;color:#60716c;font-size:9px;font-weight:800}.device-row.online .device-dot{background:#eaffb6;color:#244e44}.device-row>span:nth-child(2){display:grid;gap:2px}.device-row strong{font-size:9px}.device-row small{color:#939e9a;font-size:7px}.device-state{color:#a2aca8;font-size:7px}.device-row.online .device-state{color:#4b9259}.privacy-note{display:grid;grid-template-columns:26px 1fr;gap:8px;margin-top:auto;padding:11px;border:1px solid #e5eae7;border-radius:12px}.privacy-note>span{display:grid;place-items:center;width:26px;height:26px;border-radius:8px;background:#eff5f2;color:#37685d}.privacy-note strong{font-size:8px}.privacy-note p{margin:2px 0 0;color:#8c9793;font-size:7px;line-height:1.4}.drop-hint{position:absolute;inset:14px;display:none;place-items:center;border:2px dashed #739c64;border-radius:17px;background:rgba(239,255,201,.94);color:#355a37;font-size:12px;font-weight:700;pointer-events:none}.messages-wrap.dragging .drop-hint{display:grid}.storage-stat{display:grid;gap:3px;text-align:right}.storage-stat span{color:var(--muted);font-size:8px}.storage-stat strong{font-size:13px}.storage-body{min-height:0;overflow-y:auto;padding:22px 28px 30px;background:#f8faf8}.storage-tabs{display:flex;gap:6px;width:fit-content;padding:4px;border:1px solid var(--line);border-radius:13px;background:#fff}.storage-tab{display:flex;gap:6px;padding:8px 13px;border:0;border-radius:9px;background:transparent;color:#7a8783;cursor:pointer;font-size:9px}.storage-tab.active{background:var(--dark);color:#fff}.archive-panel,.repository-panel{margin-top:20px;padding:22px;border:1px solid var(--line);border-radius:17px;background:#fff}.section-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.section-toolbar h2{margin:0 0 4px;font-size:15px}.section-toolbar p{margin:0;color:var(--muted);font-size:8px}.search-box{display:flex;align-items:center;gap:6px;width:min(260px,40%);padding:8px 10px;border:1px solid var(--line);border-radius:10px;color:#86928e}.search-box input{width:100%;border:0;outline:0;background:transparent;font-size:9px}.archive-list{display:grid}.archive-row{display:grid;grid-template-columns:76px 34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:11px 4px;border-top:1px solid #edf0ee}.archive-time{color:#899590;font-size:8px}.archive-content{min-width:0}.archive-content strong{display:block;margin-bottom:3px;font-size:9px}.archive-content p{overflow:hidden;margin:0;color:#596762;text-overflow:ellipsis;white-space:nowrap;font-size:9px}.archive-kind{padding:4px 7px;border-radius:999px;background:#eef3f0;color:#60716c;font-size:7px}.toolbar-actions{display:flex;gap:7px}.secondary-button,.primary-small{padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;cursor:pointer;font-size:8px}.primary-small{border-color:var(--dark);background:var(--dark);color:#fff}.breadcrumbs{display:flex;align-items:center;gap:4px}.breadcrumbs button{padding:0;border:0;background:transparent;color:#6d7b77;cursor:pointer;font-size:11px}.breadcrumbs button:last-child{color:var(--ink);font-weight:700}.file-table-head,.file-row{display:grid;grid-template-columns:minmax(0,1fr) 90px 120px 64px;align-items:center;gap:12px}.file-table-head{padding:7px 10px;color:#98a29f;font-size:7px}.file-row{padding:10px;border-top:1px solid #edf0ee}.file-row:hover{background:#fafcfb}.file-name{display:flex;align-items:center;gap:10px;min-width:0;border:0;background:transparent;cursor:pointer;text-align:left}.file-name>span{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#edf3f0;color:#467066}.file-name strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px}.file-size,.file-date{color:#7e8a86;font-size:8px}.file-actions{display:flex;justify-content:flex-end;gap:3px}.file-actions a,.file-actions button{padding:5px;border:0;background:transparent;color:#6c7c77;cursor:pointer;text-decoration:none;font-size:10px}.file-actions .delete{color:#ad5a4f}.repository-empty{display:grid;justify-items:center;padding:55px 0;color:#84918c}.repository-empty>span{font-size:34px}.repository-empty h3{margin:9px 0 4px;font-size:12px;color:var(--ink)}.repository-empty p{margin:0;font-size:8px}.repo-progress{margin:0 4px 10px}.mobile-nav{display:none}dialog{width:min(390px,calc(100vw - 32px));padding:0;border:0;border-radius:17px;box-shadow:0 25px 100px rgba(0,0,0,.25)}dialog::backdrop{background:rgba(7,15,14,.68);backdrop-filter:blur(4px)}dialog form{padding:25px}dialog h2{margin:8px 0 6px;font-size:19px}dialog p{margin:0 0 17px;color:var(--muted);font-size:9px}.dialog-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:15px}.dialog-actions button{padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;cursor:pointer;font-size:9px}.dialog-actions button:last-child{border-color:var(--dark);background:var(--dark);color:#fff}.toast{position:fixed;right:22px;bottom:22px;z-index:30;max-width:320px;padding:10px 13px;border-radius:10px;background:#172623;color:#fff;box-shadow:0 12px 40px rgba(0,0,0,.18);opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s;font-size:9px}.toast.visible{opacity:1;transform:none}
@media(max-width:960px){.app{grid-template-columns:210px minmax(0,1fr)}.chat-layout{grid-template-columns:1fr}.presence-panel{display:none}.storage-body{padding:18px}.archive-panel,.repository-panel{padding:17px}.file-table-head,.file-row{grid-template-columns:minmax(0,1fr) 70px 0 58px}.file-date,.file-table-head span:nth-child(3){visibility:hidden}}
@media(max-width:760px){.login-screen{grid-template-columns:1fr}.login-story{display:none}.login-card{min-height:100vh;align-content:center}.app{grid-template-columns:1fr;width:100%;height:100dvh;min-height:0;margin:0;border:0;border-radius:0}.sidebar{display:none}.topbar{padding:15px 16px}.topbar h1{font-size:18px}.topbar p{display:none}.view{padding-bottom:58px}.messages{padding:18px 13px 26px}.message{max-width:94%}.composer-shell{padding:9px 10px}.composer-hint{margin-left:0}.composer-hint span:last-child{display:none}.copy-button{opacity:1}.mobile-nav{position:fixed;inset:auto 0 0;z-index:20;display:grid;grid-template-columns:repeat(4,1fr);height:58px;border-top:1px solid var(--line);background:rgba(255,255,255,.96);backdrop-filter:blur(12px)}.mobile-nav button{display:grid;place-content:center;gap:2px;border:0;background:transparent;color:#7b8884;font-size:8px}.mobile-nav button span{font-size:16px}.mobile-nav button.active{color:#24584c}.storage-body{padding:12px}.storage-tabs{display:grid;grid-template-columns:repeat(3,1fr);width:100%}.storage-tab{justify-content:center;padding:8px 4px}.archive-panel,.repository-panel{margin-top:12px;padding:13px}.section-toolbar{align-items:flex-start;flex-direction:column}.search-box{width:100%}.repository-toolbar{flex-direction:column}.toolbar-actions{width:100%}.toolbar-actions>*{flex:1;text-align:center}.file-table-head{display:none}.file-row{grid-template-columns:minmax(0,1fr) auto;padding:9px 3px}.file-size{display:none}.file-date{display:none}.archive-row{grid-template-columns:55px 30px minmax(0,1fr)}.archive-kind{display:none}.storage-stat{display:none}}

/* First usable baseline: clear tool-sized typography instead of presentation copy. */
.nav-item{text-decoration:none}.brand strong{font-size:16px}.brand small{font-size:12px}.nav-item strong{font-size:15px}.nav-item small{font-size:12px}.profile-button strong{font-size:14px}.profile-button small,.logout-button{font-size:12px}.topbar h1{font-size:26px}.topbar p{font-size:14px}.connection{font-size:13px}.empty-state h2{font-size:19px}.empty-state p{font-size:14px}.message-meta strong{font-size:14px}.message-meta span,.message-meta time{font-size:12px}.bubble{font-size:16px}.copy-button{font-size:15px}.file-info strong{font-size:14px}.file-info small{font-size:12px}.composer textarea,#message-input{font-size:16px}.composer-hint{font-size:11px}.progress-row,.repo-progress{font-size:12px}.panel-heading h2{font-size:18px}.online-summary span{font-size:12px}.device-row strong{font-size:14px}.device-row small,.device-state{font-size:12px}.storage-tab{font-size:14px}.section-toolbar h2{font-size:20px}.section-toolbar p{font-size:13px}.search-box input{font-size:14px}.archive-time,.archive-content strong,.archive-content p{font-size:13px}.archive-kind{font-size:11px}.breadcrumbs button{font-size:15px}.secondary-button,.primary-small{font-size:13px}.file-table-head{font-size:12px}.file-name strong{font-size:14px}.file-size,.file-date{font-size:12px}.repository-empty h3{font-size:16px}.repository-empty p{font-size:13px}
.topbar-actions,.archive-tools{display:flex;align-items:center;gap:12px}.room-switch{display:flex;padding:3px;border:1px solid var(--line);border-radius:10px;background:#f5f7f5}.room-switch button{padding:7px 11px;border:0;border-radius:7px;background:transparent;color:#687570;cursor:pointer;font-size:13px}.room-switch button.active{background:#17211f;color:#fff}.room-switch.small button{padding:6px 9px;font-size:12px}.archive-tools .search-box{width:240px}
@media(max-width:760px){.topbar h1{font-size:22px}.topbar-actions{gap:6px}.room-switch button{padding:6px 8px;font-size:12px}.connection{padding:6px 8px}.connection span{display:none}.mobile-nav a,.mobile-nav button{display:grid;place-content:center;gap:2px;border:0;background:transparent;color:#697571;text-align:center;text-decoration:none;font-size:12px}.mobile-nav a span,.mobile-nav button span{font-size:18px}.mobile-nav a.active,.mobile-nav button.active{color:#24584c}.message-meta strong{font-size:13px}.message-meta span,.message-meta time{font-size:11px}.bubble{font-size:15px}.storage-tab{font-size:12px}.archive-tools{width:100%;align-items:stretch;flex-direction:column}.archive-tools .search-box{width:100%}}

/* Device icons replace account avatars in private device surfaces. */
.device-dot svg,.message-avatar.device-identity svg{width:18px;height:18px}.device-row.online .device-dot.device-type-desktop,.device-row.online .device-dot.device-type-tablet,.device-row.online .device-dot.device-type-phone{background:#eaffb6;color:#244e44}.message-avatar.device-identity{background:#e8efeb;color:#48645d}.message.mine .message-avatar.device-identity{background:#d9ff62;color:#183f36}.archive-row .message-avatar.device-identity{background:#e8efeb;color:#48645d}.device-dot.device-type-server,.message-avatar.device-identity.device-type-server,.message.mine .message-avatar.device-identity.device-type-server{background:#5a3e9f;color:#fff}
.chat-room-switch{gap:4px;padding:4px;border-radius:13px;background:#eef2ef}.chat-room-switch button{display:grid;gap:2px;min-width:96px;padding:8px 13px;text-align:left}.chat-room-switch button strong{font-size:12px}.chat-room-switch button small{color:#8a9692;font-size:8px}.chat-room-switch button.active{background:#285f52;box-shadow:0 4px 12px rgba(40,95,82,.2)}.chat-room-switch button.active small{color:#cce4dd}.chat-view.public-room .topbar{border-bottom-color:#ddd5f5;background:#fbf9ff}.chat-view.public-room .conversation{background:#faf8ff}.chat-view.public-room .chat-room-switch{border-color:#d9d0f0;background:#f0ebfb}.chat-view.public-room .chat-room-switch button.active{background:#6c50c5;box-shadow:0 4px 12px rgba(108,80,197,.22)}.chat-view.public-room .chat-room-switch button.active small{color:#e8e1ff}.chat-view.public-room .online-summary{background:#f1ecff}.chat-view.public-room .online-summary strong{color:#6c50c5}.chat-view.public-room .message.mine .message-avatar{background:#ddd1ff;color:#4e359f}.chat-view.public-room .mine .bubble{border-color:#d9cef7;background:#eee8ff}.chat-view.public-room #send-button{background:#6245bd}.chat-view.public-room #message-input:focus{border-color:#9a84dd;box-shadow:0 0 0 3px rgba(108,80,197,.1)}.archive-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px}.archive-copy{padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:#fff;color:#52615c;cursor:pointer;font-size:8px}.public-submit{background:#315f87;border-color:#315f87}@media(max-width:760px){.topbar{align-items:flex-start;gap:8px}.topbar-actions{align-items:flex-end;flex-direction:column-reverse}.chat-room-switch button{min-width:78px;padding:7px 9px}.chat-room-switch button strong{font-size:11px}.archive-actions{align-items:flex-end;flex-direction:column}.archive-copy{font-size:9px}}

/* Clear repository actions and safe destructive confirmation. */
.file-table-head,.file-row{grid-template-columns:minmax(0,1fr) 90px 120px 280px}
.file-name{cursor:default}.file-name:is(button){cursor:pointer}
.file-actions{display:flex;justify-content:flex-end;gap:8px}
.file-actions .file-action{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:36px;padding:0 12px;border:1px solid #d7e0dc;border-radius:9px;background:#fff;color:#43534e;cursor:pointer;text-decoration:none;font-size:13px;font-weight:700;white-space:nowrap;transition:background .15s,border-color .15s,color .15s,transform .15s}
.file-actions .file-action:hover{border-color:#aabbb5;background:#f4f7f5;transform:translateY(-1px)}
.file-actions .download{border-color:#315f55;background:#315f55;color:#fff}.file-actions .download:hover{border-color:#244a42;background:#244a42}
.file-actions .delete{border-color:#e7b7b1;background:#fff8f7;color:#a54135}.file-actions .delete:hover{border-color:#a54135;background:#a54135;color:#fff}
.dialog-symbol{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#fff0ed;color:#a54135;font-size:20px;font-weight:900}
.delete-file-name{display:block;overflow:hidden;margin:0 0 12px;padding:11px 12px;border:1px solid #eadfdd;border-radius:10px;background:#faf8f7;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
dialog .delete-warning{margin-bottom:0;color:#a54135;font-size:12px}
dialog .dialog-actions .danger-button{border-color:#a54135;background:#a54135;color:#fff;font-size:13px;font-weight:700}
dialog .dialog-actions .danger-button:hover{background:#85372e}dialog .dialog-actions .danger-button:disabled{cursor:wait;opacity:.58}

/* Inline chat images and the full-size viewer. */
.chat-image-card{overflow:hidden;width:min(430px,100%);border:1px solid #dfe6e2;border-radius:14px;background:#fff;box-shadow:0 5px 18px rgba(18,35,31,.05)}
.chat-image-preview{display:block;width:100%;padding:0;border:0;background:#edf2ef;cursor:zoom-in}
.chat-image-preview img{display:block;width:100%;max-height:320px;object-fit:contain}
.chat-image-footer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 11px}
.chat-image-download{display:flex;align-items:center;justify-content:center;min-width:72px;height:34px;padding:0 10px;border:1px solid #d7e0dc;border-radius:9px;color:#315f55;text-decoration:none;font-size:12px;font-weight:700}
.chat-image-download:hover{border-color:#315f55;background:#eff5f2}
.chat-image-caption{margin:0;padding:0 11px 11px;color:#42504c;font-size:14px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.chat-image-card.image-load-failed .chat-image-preview{display:none}
.image-dialog{width:min(1080px,calc(100vw - 32px));max-width:none;background:transparent;box-shadow:none}
.image-viewer{display:grid;grid-template-rows:auto minmax(0,1fr) auto;max-height:calc(100vh - 32px);overflow:hidden;border-radius:18px;background:#101615;color:#fff;box-shadow:0 30px 100px rgba(0,0,0,.5)}
.image-viewer header,.image-viewer footer{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 16px;background:#18201f}
.image-viewer header>div{display:grid;gap:3px;min-width:0}.image-viewer header strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}.image-viewer header small{color:#98a5a1;font-size:11px}
.image-viewer header button{display:grid;place-items:center;width:40px;height:40px;border:1px solid #34403e;border-radius:11px;background:#222c2a;color:#fff;cursor:pointer;font-size:24px}
.image-viewer-stage{display:grid;place-items:center;min-height:180px;overflow:auto;padding:16px;background:#0b0f0e}
.image-viewer-stage img{display:block;max-width:100%;max-height:calc(100vh - 170px);object-fit:contain}
.image-viewer footer a{display:flex;align-items:center;justify-content:center;height:38px;padding:0 14px;border-radius:9px;background:#d9ff62;color:#13201e;text-decoration:none;font-size:13px;font-weight:800}.image-viewer footer span{color:#82908c;font-size:11px}

@media(max-width:960px){.file-table-head,.file-row{grid-template-columns:minmax(0,1fr) 70px 0 280px}}
@media(max-width:760px){.file-row{grid-template-columns:minmax(0,1fr);gap:9px;padding:12px 4px}.file-actions{grid-column:1;width:100%;justify-content:stretch}.file-actions .file-action{flex:1;min-width:0;height:44px}.chat-image-card{width:min(100%,360px)}.chat-image-preview img{max-height:280px}.image-dialog{width:calc(100vw - 16px)}.image-viewer{max-height:calc(100dvh - 16px);border-radius:13px}.image-viewer-stage{padding:8px}.image-viewer-stage img{max-height:calc(100dvh - 155px)}.image-viewer footer span{display:none}}

/* Resumable repository upload status. */
.repo-progress{grid-template-columns:minmax(180px,auto) minmax(120px,1fr) 42px auto;gap:12px;margin:0 4px 14px;padding:12px 13px;border:1px solid #dce5e1;border-radius:12px;background:#f7faf8}
.repo-upload-label{display:grid;gap:3px;min-width:0}.repo-upload-label strong,.repo-upload-label small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repo-upload-label strong{font-size:13px}.repo-upload-label small{color:#75827e;font-size:11px;font-weight:400}
.repo-upload-actions{display:flex;gap:6px}.repo-upload-actions button{height:34px;padding:0 11px;border:1px solid #cfdad5;border-radius:8px;background:#fff;color:#41514c;cursor:pointer;font-size:12px}.repo-upload-actions button:last-child{color:#9c4b41}.repo-upload-actions button:hover{background:#edf3f0}
@media(max-width:760px){.repo-progress{grid-template-columns:minmax(0,1fr) 42px;gap:9px;margin-bottom:12px}.repo-upload-label{grid-column:1/-1}.repo-progress>div{grid-column:1}.repo-upload-actions{grid-column:1/-1}.repo-upload-actions button{flex:1;height:40px}}
.upload-queue{margin:0 0 16px;padding:14px;border:1px solid #dce5e1;border-radius:15px;background:#f7faf8}.upload-queue>header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:10px}.upload-queue h3{margin:0 0 3px;font-size:15px}.upload-queue header p{margin:0;color:var(--muted);font-size:11px}.upload-queue-count{padding:5px 8px;border-radius:999px;background:#e6eee9;color:#45645c;font-size:11px;font-weight:800;white-space:nowrap}.upload-queue-list{display:grid;gap:8px}.upload-task{display:grid;grid-template-columns:36px minmax(150px,1fr) minmax(210px,1.25fr) auto;align-items:center;gap:11px;padding:11px;border:1px solid #dde5e1;border-radius:12px;background:#fff}.upload-task-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#eaffb6;color:#315f55;font-size:17px;font-weight:900}.upload-task[data-status="interrupted"] .upload-task-icon,.upload-task[data-status="paused"] .upload-task-icon{background:#fff0cf;color:#956728}.upload-task[data-status="cancelling"]{opacity:.65}.upload-task-info{display:grid;gap:3px;min-width:0}.upload-task-info strong,.upload-task-info small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-task-info strong{font-size:13px}.upload-task-info small{color:var(--muted);font-size:10px}.upload-task-progress{display:grid;grid-template-columns:minmax(0,1fr) 42px;align-items:center;gap:5px 9px;min-width:0}.upload-task-status{grid-column:1/-1;overflow:hidden;color:#64716d;text-overflow:ellipsis;white-space:nowrap;font-size:10px}.upload-task-bar{height:6px;overflow:hidden;border-radius:999px;background:#e6ece8}.upload-task-bar i{display:block;width:0;height:100%;border-radius:inherit;background:#5f9767;transition:width .15s}.upload-task-percent{font-size:11px;text-align:right}.upload-task-actions{display:flex;gap:6px}.upload-task-actions button{height:34px;padding:0 10px;border:1px solid #cfdad5;border-radius:8px;background:#fff;color:#41514c;cursor:pointer;font-size:11px;white-space:nowrap}.upload-task-actions button:last-child{color:#9c4b41}.upload-task-actions button:disabled{opacity:.45;cursor:not-allowed}@media(max-width:900px){.upload-task{grid-template-columns:36px minmax(0,1fr) auto}.upload-task-progress{grid-column:2}.upload-task-actions{grid-column:3;grid-row:1/3}}@media(max-width:620px){.upload-queue{padding:11px}.upload-task{grid-template-columns:34px minmax(0,1fr)}.upload-task-icon{width:34px;height:34px}.upload-task-progress{grid-column:1/-1}.upload-task-actions{grid-column:1/-1;grid-row:auto}.upload-task-actions button{flex:1;height:40px}.upload-queue>header p{display:none}}
.storage-usage{display:grid;gap:8px;margin:0 0 14px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--soft)}.storage-usage-summary{display:flex;align-items:center;justify-content:space-between;gap:16px}.storage-usage-summary strong{font-size:13px}.storage-usage-summary span{color:var(--green);font-size:12px;font-weight:800}.storage-usage-meter{height:7px;overflow:hidden;border-radius:999px;background:#dde5e1}.storage-usage-meter i{display:block;width:0;height:100%;border-radius:inherit;background:var(--green);transition:width .2s ease}.storage-usage>small{color:var(--muted);font-size:11px;line-height:1.55}@media(max-width:760px){.storage-usage-summary{align-items:flex-start;flex-direction:column;gap:4px}.storage-usage{padding:12px}}
.danger-text{color:var(--danger)!important}.trash-file-info{display:grid;gap:3px;min-width:0}.trash-file-info strong,.trash-file-info small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trash-file-info small{color:var(--muted);font-size:10px}.trash-file-actions{display:flex;justify-content:flex-end;gap:6px}.trash-row .file-name{cursor:default}@media(max-width:760px){.trash-file-actions{justify-content:flex-start}.trash-row{align-items:start}}
.recycle-folder-row .file-name>span{background:#f3ede5;color:#8b6745}
dialog select{width:100%;padding:13px 14px;border:1px solid #dce3df;border-radius:12px;outline:none;background:#fafcfb;color:var(--ink)}dialog select:focus{border-color:#4f7a70;box-shadow:0 0 0 3px rgba(49,95,85,.1)}.file-actions .file-action.manage{min-width:56px;padding:0 9px}@media(max-width:760px){.file-actions .file-action.manage{min-width:0}}
.app-page{height:100dvh;min-height:0;overflow:hidden}.app-page .app{height:calc(100dvh - 28px);min-height:0}@media(max-width:760px){.app-page .app{height:100dvh}}
.repository-search-box{width:min(300px,32%);margin-left:auto}@media(max-width:760px){.repository-search-box{width:100%;margin-left:0}}
.unread-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border:2px solid #fff;border-radius:999px;background:#e5483f;color:#fff;font-style:normal;font-size:10px;font-weight:800;line-height:1;box-shadow:0 2px 7px rgba(167,44,37,.3)}.nav-item{grid-template-columns:34px minmax(0,1fr) auto;align-items:center}.nav-item>.unread-badge{border-color:var(--dark)}.chat-room-switch button{position:relative}.chat-room-switch .unread-badge{position:absolute;top:-7px;right:-7px;z-index:2}.mobile-nav a{position:relative}.mobile-nav .unread-badge{position:absolute;top:5px;left:calc(50% + 10px)}
@media(max-width:760px){.mobile-nav{grid-template-columns:repeat(5,1fr)}}

/* Mobile PWA viewport: keep the bottom navigation in layout so it never covers content. */
@media(max-width:760px){
  .app-page{height:var(--pm-viewport-height,100dvh)}
  .app-page .app{grid-template-rows:minmax(0,1fr) auto;height:var(--pm-viewport-height,100dvh)}
  .app-page .view{grid-row:1;min-height:0;padding-bottom:0;overflow:hidden}
  .app-page .mobile-nav{position:static;inset:auto;grid-row:2;height:calc(58px + env(safe-area-inset-bottom));min-height:calc(58px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}
  .app-page .topbar{padding-top:calc(15px + env(safe-area-inset-top))}
}
.agent-workspace-folder-row{background:#f6faef}.agent-workspace-folder-row .file-name>span:first-child{background:#dcff70;color:#17332c}.agent-workspace-folder-row .file-name>span:nth-child(2){display:grid;gap:3px;min-width:0}.managed-folder-badge{width:fit-content;padding:2px 5px;border-radius:999px;background:#e5efdc;color:#557047;font-size:10px;font-weight:600}
.file-name>span:not(:first-child){flex:1;width:auto;height:auto;min-width:0;place-items:initial;border-radius:0;background:transparent;color:inherit}
.composer.file-dragging #message-input{border-color:#6f988e;background:#f4faf7;box-shadow:0 0 0 4px rgba(49,95,85,.1)}
/* Route-specific placeholders keep the surrounding layout stable during requests. */
.content-loading{overflow:hidden;animation:loading-reveal .18s .15s both;pointer-events:none}
.chat-loading{display:grid;gap:24px;padding:28px;max-width:850px}
.skeleton-message{display:flex;align-items:flex-start;gap:12px;width:75%}
.skeleton-message:nth-child(2){justify-self:end;flex-direction:row-reverse;width:60%}
.skeleton-message i,.skeleton-file i{display:block;flex:0 0 34px;height:34px;border-radius:12px;background:#e7ebe9}
.skeleton-message span{display:block;width:100%;height:72px;border-radius:5px 16px 16px;background:linear-gradient(100deg,#edf0ee 25%,#f6f8f7 45%,#edf0ee 65%);background-size:200% 100%;animation:loading-shimmer 1.8s linear infinite}
.skeleton-message:nth-child(2) span{height:48px;border-radius:16px 5px 16px 16px}
.files-loading{display:grid;padding:4px 0}
.skeleton-file{display:flex;align-items:center;gap:14px;min-height:70px;padding:12px 10px;border-top:1px solid var(--line)}
.skeleton-file span{display:block;width:65%;height:14px;border-radius:5px;background:linear-gradient(100deg,#edf0ee 25%,#f6f8f7 45%,#edf0ee 65%);background-size:200% 100%;animation:loading-shimmer 1.8s linear infinite}
.skeleton-file:nth-child(2) span{width:45%}.skeleton-file:nth-child(3) span{width:55%}
.load-error{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:12px;padding:28px 16px;color:var(--muted);font-size:14px}
.load-error button{border:1px solid var(--line);border-radius:9px;padding:8px 14px;background:var(--paper);color:var(--ink);cursor:pointer}
.archive-empty{padding:32px 12px;text-align:center;color:var(--muted);font-size:14px}
@keyframes loading-shimmer{to{background-position:-200% 0}}

/* Mobile navigation: feature pages scroll horizontally while "My" stays fixed. */
@media(max-width:760px){
  .app-page .mobile-nav{display:grid;grid-template-columns:minmax(0,1fr) 76px;gap:0;overflow:hidden}
  .mobile-nav-pages{display:flex;min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .mobile-nav-pages::-webkit-scrollbar{display:none}
  .mobile-nav-pages a{position:relative;flex:0 0 84px;min-width:84px;scroll-snap-align:center}
  .mobile-nav-profile{position:relative;z-index:2;border-left:1px solid var(--line)!important;background:rgba(255,255,255,.98)!important;box-shadow:-8px 0 18px rgba(21,39,35,.06)}
  .mobile-nav-pages a,.mobile-nav-profile{height:58px;padding:0 4px}
}
@keyframes loading-reveal{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.content-loading,.skeleton-message span,.skeleton-file span{animation:none}}
@media(max-width:700px){.chat-loading{padding:20px 16px}.skeleton-message{width:85%}.skeleton-file{min-height:66px}}
.avatar,.message-avatar,.device-dot{background-size:cover;background-position:center;background-repeat:no-repeat}
.avatar>img,.message-avatar>img,.device-dot>img{display:block;width:100%;height:100%;border-radius:inherit;object-fit:cover}
