/* A real, consistent-width responsive UI. No Telegram bubble width dependency. */
:root{color-scheme:dark;--bg:#0d111a;--surface:#181d2a;--surface2:#242a3b;--border:#333b53;--text:#f6f7ff;--muted:#aab3ca;--accent:#938aff;--accent-dark:#5047ae;--danger:#ec697f;--success:#79d4ad;--radius:20px;--page-width:780px;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 90% 0%,#1c2140,transparent 35%),var(--bg);color:var(--text);min-height:100vh}
button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.43}
button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.app-shell{width:min(100%,var(--page-width));margin:0 auto;padding:0 16px max(30px,env(safe-area-inset-bottom))}
.topbar{display:flex;align-items:center;gap:12px;min-height:86px;padding:14px 0 11px}
.brand-mark{width:52px;height:52px;display:grid;place-items:center;background:linear-gradient(140deg,#6c63ed,#a284ff);border-radius:16px;font-size:28px}
.brand-name{display:flex;flex:1;flex-direction:column;gap:3px;min-width:0}.brand-name strong{font-size:19px;letter-spacing:-.3px}.brand-name small{color:var(--muted);font-size:12px}
.header-create{border:0;border-radius:14px;padding:12px 15px;background:var(--accent);color:#141329;font-weight:760}
.nav-tabs{display:flex;gap:8px;overflow:auto;padding:4px 0 14px;scrollbar-width:none}.nav-tabs::-webkit-scrollbar{display:none}
.nav-tabs button{flex:0 0 auto;border:1px solid var(--border);background:var(--surface);color:var(--muted);padding:11px 13px;border-radius:13px;font-weight:650;white-space:nowrap}
.nav-tabs button.active{color:white;border-color:var(--accent);background:#353059}
.page{padding:0 0 26px;display:flex;flex-direction:column;gap:14px}
.panel{background:linear-gradient(155deg,#25283d 0%,#1a2030 100%);border:1px solid var(--border);border-radius:var(--radius);padding:22px;width:100%;box-shadow:0 12px 30px #0002;min-width:0}
.panel h1{font-size:23px;line-height:1.3;margin:0 0 14px;letter-spacing:-.3px}
.panel h2{font-size:17px;margin:0 0 13px}.panel p{margin:10px 0;line-height:1.8;overflow-wrap:anywhere}
.subtitle,.muted,.hint{color:var(--muted)}.subtitle{font-size:14px;margin-top:-5px!important}.hint{font-size:12px;line-height:1.7}
.grid-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-top:16px}
.action-btn{width:100%;border:1px solid #434861;background:var(--surface2);color:var(--text);padding:14px 8px;min-height:52px;border-radius:14px;font-weight:700;line-height:1.3;text-align:center}
.action-btn:hover{background:#353c54;border-color:#686d94}
.action-btn.primary{color:#fff;background:#5f56cb;border-color:#786fed}
.action-btn.danger{color:#ffb8c1;border-color:#8a4b5b}
.action-btn.full{grid-column:1/-1}
.action-btn.home{grid-column:1/-1;background:#35304e}
.action-btn.single{grid-column:1/-1}
.field{display:flex;flex-direction:column;gap:8px;margin:16px 0}
.field label{font-size:14px;color:var(--muted);font-weight:650}
.input,textarea,select{width:100%;background:#111826;border:1px solid #46506d;border-radius:13px;color:var(--text);padding:14px;font-size:16px}
textarea{min-height:125px;resize:vertical;line-height:1.7}
.input::placeholder,textarea::placeholder{color:#8490a8}
.note-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.note-row{width:100%;display:flex;gap:12px;text-align:left;padding:16px;border:1px solid var(--border);border-radius:16px;background:#27283b;color:var(--text);align-items:center}
.note-row:hover{border-color:#857af8;background:#302e4d}
.note-no{font-weight:850;color:#c6c1ff;min-width:44px;font-size:15px}
.note-meta{display:flex;flex-direction:column;gap:7px;min-width:0;flex:1}
.note-excerpt{font-weight:650;line-height:1.55;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.note-date{font-size:12px;color:var(--muted)}
.tag-cloud{display:flex;flex-wrap:wrap;gap:6px}.tag-pill{font-size:12px;border-radius:999px;background:#3c3555;color:#e4ddff;padding:5px 9px}
.tag-table{display:flex;flex-direction:column;gap:8px;margin-top:18px}
.tag-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:15px;border-radius:13px;text-align:left}
.tag-row span:first-child{font-weight:700}.tag-row span:last-child{color:#c4c6db;font-variant-numeric:tabular-nums}
.tag-pick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}
.tag-pick label{border:1px solid var(--border);background:var(--surface2);border-radius:13px;display:flex;align-items:center;gap:8px;padding:12px 9px;font-size:14px;cursor:pointer;min-width:0}
.tag-pick label.checked{border-color:#9a91ff;background:#393358}
.tag-pick input{accent-color:#9083ff;width:17px;height:17px;flex:0 0 auto}
.note-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:17px;line-height:1.9;background:#101728;border-radius:15px;padding:18px;min-height:90px}
.summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}
.metric{background:#1a1b31;border:1px solid var(--border);border-radius:15px;padding:15px 8px;text-align:center}
.metric strong{display:block;font-size:25px;color:#dfdcff}.metric span{font-size:12px;color:var(--muted)}
.trash-pick{display:flex;gap:10px;align-items:center;background:#f3f0f9;color:#27233d;padding:14px;border:2px solid transparent;border-radius:16px;margin:9px 0;cursor:pointer;width:100%;text-align:left}
.trash-pick.checked{border-color:#7e67f5;background:#e5dfff}
.trash-pick input{accent-color:#6856df;width:20px;height:20px;pointer-events:none}
.trash-pick strong{font-size:15px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reminder-row{background:var(--surface2);border-radius:14px;padding:15px;margin:10px 0}
.reminder-row p{margin:5px 0 10px}
button.small{background:#393351;color:white;border:1px solid #6b5c90;border-radius:11px;padding:9px 13px;font-size:13px}
button.small.danger{color:#ffc1cb}
.notice{border:1px solid #6d647e;border-radius:14px;background:#312b42;padding:12px 15px;color:#e2dffc;line-height:1.7}
.empty{color:var(--muted);text-align:center;padding:28px 16px;line-height:1.9}
.toast{position:fixed;bottom:calc(22px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%,20px);max-width:calc(100% - 24px);width:max-content;background:#efebff;color:#211b43;border-radius:12px;padding:12px 17px;box-shadow:0 10px 30px #0008;font-weight:700;opacity:0;pointer-events:none;transition:.2s;z-index:30}
.toast.visible{opacity:1;transform:translate(-50%,0)}
.modal-wrap{position:fixed;inset:0;background:#000b;display:grid;place-items:center;padding:16px;z-index:40}
.modal{width:min(100%,520px);background:#25283b;border:1px solid #5c627b;border-radius:20px;padding:22px;box-shadow:0 20px 70px #0009}
.modal h2{margin:0 0 10px}.modal p{line-height:1.8}
.dialog-foot{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.dialog-foot button{border:0;border-radius:12px;padding:14px 9px;font-weight:750;background:#414259;color:white}
.dialog-foot button.danger{background:#9b3c54}.dialog-foot button.primary{background:#655bdf}
.thread{max-height:50vh;overflow:auto;display:flex;flex-direction:column;gap:10px;margin:16px 0}
.chat-bubble{background:#303349;border-radius:15px;padding:12px 15px;align-self:flex-start;max-width:90%;white-space:pre-wrap;overflow-wrap:anywhere}
.chat-bubble.mine{align-self:flex-end;background:#494079}
.chat-bubble small{display:block;color:#c2c0d4;margin-top:6px}
@media(min-width:700px){.app-shell{padding:0 22px 36px}.topbar{min-height:102px}.panel{padding:27px}.tag-table{display:grid;grid-template-columns:1fr 1fr}.tag-pick{grid-template-columns:1fr 1fr}.page{gap:18px}}
@media(max-width:360px){.app-shell{padding-left:10px;padding-right:10px}.panel{padding:17px}.action-btn{font-size:13px;min-height:50px}.nav-tabs button{padding:10px}.tag-pick label{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
