.composer{position:relative;display:flex;align-items:flex-end;gap:8px}.composer-input{flex:1;min-height:44px;max-height:160px;padding:11px 16px;border:0;border-radius:22px;background:var(--chip);resize:none;outline:none;line-height:22px}.composer-input:focus-visible{outline:2px solid var(--focus);outline-offset:0}.composer-input::placeholder{color:var(--ink-3)}.composer-attach{width:44px;height:44px;flex-shrink:0}.composer-send{display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;border:0;border-radius:50%;background:var(--ink);color:var(--bg)}.composer-send:disabled{opacity:.35;cursor:default}.composer-desktop{padding:10px 10px 10px 6px;border-radius:var(--radius-card);background:var(--card);box-shadow:var(--shadow)}.composer-desktop .composer-input{background:transparent;border-radius:10px;padding-left:10px}.composer-error{position:absolute;left:52px;bottom:-22px;margin:0;font-size:12px;color:var(--danger)}.device-list{margin:0;padding:0;list-style:none}.device-row{display:flex;align-items:center;gap:10px;min-height:44px}.device-dot{flex-shrink:0;width:9px;height:9px;border-radius:50%;background:var(--station)}.device-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-tag{padding:1px 7px;border-radius:6px;background:color-mix(in srgb,var(--station) 14%,transparent);color:var(--station);font-size:12px}.device-status{flex-shrink:0;font-size:13px;color:var(--ink-3)}.device-status.online{color:var(--ink)}.device-remove{padding:4px 8px;border:0;border-radius:8px;background:none;color:var(--danger);font-size:13px}.device-remove:hover{background:var(--chip)}@media(hover:hover){.device-remove{opacity:0}.device-row:hover .device-remove,.device-remove:focus-visible{opacity:1}}.drop-zone{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;padding:36px 16px;border:1.5px dashed var(--line);border-radius:var(--radius-card);background:transparent;color:var(--ink-2)}.drop-zone:hover{border-color:var(--ink-3);color:var(--ink)}.drop-zone strong{margin-top:6px;color:var(--ink);font-size:16px}.drop-zone span{font-size:13px}.drop-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:24px;background:color-mix(in srgb,var(--bg) 82%,transparent);pointer-events:none}.drop-overlay-inner{display:flex;flex-direction:column;align-items:center;gap:10px;width:min(480px,100%);padding:56px 24px;border:2px dashed var(--ink-2);border-radius:20px;background:var(--card);font-size:18px;font-weight:600}.card{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:var(--radius-card);background:var(--card);box-shadow:var(--shadow);min-width:0}.card-body{flex:1;min-width:0}.card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.card-sub{font-size:13px;color:var(--ink-2)}.text-content{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:16px}.text-content.clamped{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.text-link{display:flex;align-items:flex-start;gap:8px;color:var(--ink);text-decoration:none;overflow-wrap:anywhere}.text-link:hover{text-decoration:underline}.text-link svg{flex-shrink:0;margin-top:3px;color:var(--ink-2)}.expand-btn{margin-top:4px;padding:0;border:0;background:none;color:var(--ink-2);font-size:13px}.card.image{align-items:flex-end}.image-thumb{display:block;max-width:min(100%,320px);max-height:260px;border-radius:10px;background:var(--chip);object-fit:cover}.image-body{display:flex;flex-direction:column;gap:8px}.file-icon{position:relative;flex-shrink:0;display:grid;place-items:center;width:44px;height:52px;border-radius:8px;background:var(--chip);color:var(--ink-2)}.file-ext{position:absolute;bottom:5px;font-size:9px;font-weight:700;letter-spacing:.02em}.file-name{margin:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress{display:flex;align-items:center;gap:10px;margin-top:8px}.progress-track{flex:1;height:4px;border-radius:4px;background:var(--chip);overflow:hidden}.progress-fill{height:100%;border-radius:4px;background:var(--ink);transition:width .2s}.progress-pct{min-width:3em;font-size:13px;color:var(--ink-2);text-align:right;font-variant-numeric:tabular-nums}.upload-error{color:var(--danger)}.timeline{position:relative;margin:0;padding:0;list-style:none}.timeline:before{content:"";position:absolute;top:10px;bottom:10px;left:6px;width:1.5px;background:var(--line)}.tl-entry{position:relative;padding-left:30px;margin-bottom:22px}.tl-station{position:absolute;left:0;top:4px;width:13.5px;height:13.5px;border-radius:50%;background:var(--station, var(--dev-other));box-shadow:0 0 0 4px var(--bg)}.tl-station.hollow{background:var(--bg);border:1.5px solid var(--ink-3)}.tl-meta{display:flex;align-items:baseline;gap:6px;margin-bottom:8px;font-size:13px;color:var(--ink-2)}.tl-device{font-weight:600;color:var(--station, var(--ink))}.tl-entry:hover .tl-delete,.tl-delete:focus-visible{opacity:1}.tl-delete{margin-left:auto;width:28px;height:28px;opacity:0}@media(hover:none){.tl-delete{opacity:.6}}.tl-empty{padding:48px 0;text-align:center;color:var(--ink-2)}.tl-older{display:block;margin:8px auto 24px}.brand{margin:0;font-size:30px;font-weight:800;letter-spacing:.02em}.status-badge{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-2);white-space:nowrap}.status-dot{width:8px;height:8px;border-radius:50%}.line-switch{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;padding:3px;border-radius:12px;background:var(--chip)}.line-opt{display:grid;place-items:center;min-height:36px;border-radius:9px;color:var(--ink-2);font-size:14px;text-decoration:none}.line-opt.active{background:var(--card);color:var(--ink);font-weight:600;box-shadow:var(--shadow)}.home-desktop{display:grid;grid-template-columns:300px minmax(0,1fr);min-height:100dvh}.sidebar{position:sticky;top:0;display:flex;flex-direction:column;gap:16px;height:100dvh;padding:32px 28px 24px;overflow-y:auto}.sidebar .brand{font-size:40px}.sidebar-rule{width:100%;margin:4px 0 0;border:0;border-top:1px solid var(--line)}.sidebar-label{margin:0 0 -8px;font-size:14px;font-weight:600;color:var(--ink-2)}.sidebar-drop{margin-top:12px}.sidebar-foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto}.sidebar-logout{padding:4px 8px;border:0;border-radius:8px;background:none;color:var(--ink-3);font-size:13px}.sidebar-logout:hover{background:var(--chip);color:var(--ink)}.main-desktop{width:100%;max-width:1040px;padding:32px 40px 48px 16px}.main-timeline{margin-top:28px}.home-mobile{min-height:100dvh;padding-bottom:calc(76px + env(safe-area-inset-bottom))}.m-head{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.m-head .brand{flex:1}.m-main{padding:12px 16px 16px}.m-composer{position:fixed;left:0;right:0;bottom:0;z-index:10;padding:10px 12px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg)}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;overflow-y:auto;padding:calc(12px + env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom));background:var(--bg)}.sheet-head{display:flex;align-items:center;justify-content:space-between}.sheet-head h2{margin:0;font-size:22px}.sheet-section{margin-top:24px}.sheet-section h3{margin:0 0 8px;font-size:14px;color:var(--ink-2)}.sheet-note{margin:8px 0 0;font-size:13px;color:var(--ink-3)}.login{display:grid;place-items:center;min-height:100dvh;padding:24px 16px}.login-card{display:flex;flex-direction:column;gap:16px;width:min(380px,100%)}.login-title{margin:0;font-size:40px;font-weight:800;letter-spacing:.02em}.login-sub{margin:-6px 0 8px;color:var(--ink-2)}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink-2)}.field input{height:48px;padding:0 14px;border:1px solid var(--line);border-radius:var(--radius-btn);background:var(--card);font-size:16px;color:var(--ink)}.field input:focus-visible{outline:2px solid var(--focus);outline-offset:0}.login-error{margin:0;color:var(--danger);font-size:14px}.login-btn{height:48px;margin-top:4px}:root{--bg: #f6f5f2;--card: #ffffff;--ink: #1b1d22;--ink-2: #6b6f78;--ink-3: #9a9da4;--line: #e6e3dd;--chip: #f0eee9;--chip-hover: #e7e4de;--focus: #1b1d22;--danger: #c8372d;--ok: #1faa6b;--shadow: 0 1px 2px rgb(27 29 34 / 4%), 0 2px 8px rgb(27 29 34 / 4%);--dev-windows: #2f6bff;--dev-mac: #8a5cf6;--dev-ios: #ff6a3d;--dev-android: #1faa6b;--dev-other: #6b6f78;--radius-card: 14px;--radius-btn: 10px;--font: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #121316;--card: #1c1e22;--ink: #eceef1;--ink-2: #a2a6ae;--ink-3: #747881;--line: #2c2f35;--chip: #262930;--chip-hover: #30343c;--focus: #eceef1;--shadow: none;--dev-windows: #5b8cff;--dev-mac: #a383fa;--dev-ios: #ff8a63;--dev-android: #3cc487;color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}a{color:inherit}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.chip-btn{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 14px;border:0;border-radius:999px;background:var(--chip);font-size:14px;white-space:nowrap;text-decoration:none}.chip-btn:hover{background:var(--chip-hover)}.chip-btn:disabled{opacity:.5;cursor:default}.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border:0;border-radius:999px;background:transparent;color:var(--ink-2)}.icon-btn:hover{background:var(--chip);color:var(--ink)}.primary-btn{min-height:44px;padding:0 20px;border:0;border-radius:999px;background:var(--ink);color:var(--bg);font-weight:600}.primary-btn:disabled{opacity:.4;cursor:default}
