:root{--navy: #0B2C6F;--red: #B5322B;--line: #DDE3EC;--muted: #4A5468;--bg: #F4F6FA;--card: #FFFFFF;--text: #15192B;--tap: 48px;--nav-h: 64px}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font:17px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-text-size-adjust:100%}a{color:var(--navy)}button{font:inherit}#root{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:10;background:var(--navy);color:#fff;padding:calc(env(safe-area-inset-top) + 10px) 16px 10px;display:flex;align-items:center;gap:12px;min-height:56px}.topbar h1{font-size:19px;margin:0;flex:1;font-weight:700;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .brand{display:flex;align-items:center;gap:10px;flex:1}.topbar .mark{width:28px;height:28px;border-radius:6px;background:#fff;color:var(--navy);font-weight:800;display:grid;place-items:center;font-size:17px}.topbar .mark span{border-bottom:3px solid var(--red);line-height:1}.iconbtn{background:transparent;border:0;color:#fff;min-width:var(--tap);min-height:var(--tap);display:grid;place-items:center;border-radius:10px;font-size:17px;padding:0 8px}.iconbtn:active{background:#ffffff26}main{flex:1;padding:12px 16px calc(var(--nav-h) + env(safe-area-inset-bottom) + 16px);max-width:720px;width:100%;margin:0 auto}main.nonav{padding-bottom:24px}.tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 0 12px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{flex:0 0 auto;min-height:44px;padding:0 14px;border-radius:22px;border:1.5px solid var(--line);background:var(--card);color:var(--navy);font-weight:600;display:inline-flex;align-items:center;gap:8px}.tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}.tab .count{background:#0b2c6f1a;color:var(--navy);border-radius:12px;padding:1px 8px;font-size:14px}.tab.active .count{background:#ffffff38;color:#fff}.section-title{font-size:14px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:18px 0 8px;font-weight:700}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:10px}.card.link{display:block;color:inherit;text-decoration:none}.card.link:active{background:#eef2f8}.row{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.name{font-size:19px;font-weight:700;color:var(--navy)}.when{font-size:14px;color:var(--muted);white-space:nowrap}.addr{color:var(--text);margin-top:2px}.msg{margin-top:8px;color:var(--text);background:#f7f8fb;border-left:3px solid var(--red);padding:8px 10px;border-radius:6px;font-size:16px}.meta{margin-top:8px;display:flex;gap:8px;flex-wrap:wrap;font-size:14px;color:var(--muted)}.pill{background:#eef2f8;color:var(--navy);border-radius:10px;padding:2px 9px;font-weight:600}.pill.red{background:#fbeceb;color:var(--red)}.pill.green{background:#e6f4ea;color:#1e6b3a}.pill.gray{background:#eef0f3;color:var(--muted)}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.btn{min-height:52px;border-radius:12px;border:0;font-weight:700;font-size:17px;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;padding:0 14px;cursor:pointer}.btn.primary{background:var(--red);color:#fff}.btn.navy{background:var(--navy);color:#fff}.btn.outline{background:var(--card);color:var(--navy);border:1.5px solid var(--line)}.btn.wide{grid-column:1 / -1}.btn:disabled{opacity:.5}.btn:active{filter:brightness(.92)}.kv{display:grid;grid-template-columns:120px 1fr;gap:6px 12px;font-size:16px}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-word}.thread{display:flex;flex-direction:column;gap:8px}.bubble{max-width:85%;padding:10px 12px;border-radius:16px;font-size:16px;white-space:pre-wrap;word-break:break-word}.bubble.in{align-self:flex-start;background:#e9edf5;color:var(--text);border-bottom-left-radius:4px}.bubble.out{align-self:flex-end;background:var(--navy);color:#fff;border-bottom-right-radius:4px}.bubble .stamp{display:block;font-size:12px;opacity:.7;margin-top:4px}.sysline{text-align:center;color:var(--muted);font-size:13px}.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.photos a{display:block;aspect-ratio:1;border-radius:10px;overflow:hidden;background:#e9edf5;border:1px solid var(--line)}.photos img{width:100%;height:100%;object-fit:cover;display:block}.photos .doc{display:grid;place-items:center;height:100%;color:var(--navy);font-weight:700;font-size:13px;padding:6px;text-align:center}.empty{text-align:center;color:var(--muted);padding:32px 16px}.error{background:#fbeceb;color:var(--red);border:1px solid #F1C9C6;border-radius:12px;padding:12px 14px;margin:8px 0}.spinner{text-align:center;color:var(--muted);padding:32px}.bottomnav{position:fixed;left:0;right:0;bottom:0;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--card);border-top:1px solid var(--line);display:flex;z-index:10}.bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--muted);text-decoration:none;font-size:13px;font-weight:600;min-height:var(--nav-h)}.bottomnav a.active{color:var(--navy)}.bottomnav svg{width:26px;height:26px}.login{max-width:420px;margin:10vh auto 0;padding:0 20px}.login .logo{width:72px;height:72px;border-radius:16px;background:var(--navy);color:#fff;display:grid;place-items:center;font-size:36px;font-weight:800;margin:0 auto 20px}.login .logo span{border-bottom:5px solid var(--red);line-height:1}.login h2{text-align:center;color:var(--navy);margin:0 0 6px}.login p{text-align:center;color:var(--muted);margin:0 0 24px}.field{display:block;margin-bottom:14px}.field span{display:block;font-size:14px;color:var(--muted);margin-bottom:6px;font-weight:600}.field input{width:100%;min-height:52px;font-size:18px;padding:0 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);color:var(--text)}.field input:focus{outline:2px solid var(--navy);border-color:var(--navy)}.notice{background:#e6f4ea;color:#1e6b3a;border-radius:12px;padding:14px;text-align:center}.install{background:var(--card);border:1px dashed var(--navy);border-radius:14px;padding:12px 14px;margin-bottom:12px;font-size:15px;color:var(--navy);display:flex;gap:10px;align-items:flex-start}.install button{margin-left:auto}
