:root{--header:#0f3554;--accent:#0e86d4;--bg:#f2f5f8;--card:#fff;--text:#1c2b36;--muted:#5c6f7d;--border:#d8e0e7;--danger:#c0392b;--radius:10px;--header-h:56px}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.page{flex-direction:column;min-height:100dvh;display:flex}.header{z-index:10;height:calc(var(--header-h) + env(safe-area-inset-top));padding:0 12px;padding-top:env(safe-area-inset-top);background:var(--header);color:#fff;align-items:center;gap:8px;display:flex;position:sticky;top:0}.header-title{white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;font-size:18px;font-weight:600;overflow:hidden}.filter-input{border-radius:var(--radius);background:#ffffffeb;border:none;flex:1;min-width:0;padding:9px 12px;font-size:16px}.icon-btn{color:#fff;cursor:pointer;background:0 0;border:none;padding:6px 10px;font-size:24px;line-height:1}.menu-overlay{z-index:20;background:#0006;position:fixed;inset:0}.menu{background:var(--card);width:min(300px,80vw);padding:16px;padding-top:calc(16px + env(safe-area-inset-top));flex-direction:column;gap:4px;display:flex;position:absolute;top:0;bottom:0;right:0}.menu a{border-radius:var(--radius);color:var(--text);padding:12px 8px;font-weight:500;text-decoration:none}.menu a:active{background:var(--bg)}.menu-user{border-bottom:1px solid var(--border);flex-direction:column;margin-bottom:8px;padding:8px;display:flex}.menu-role{color:var(--muted);font-size:13px}.menu-logout{border:1px solid var(--border);border-radius:var(--radius);color:var(--danger);cursor:pointer;background:0 0;margin-top:auto;padding:12px;font-size:15px}.item-list{flex-direction:column;gap:8px;width:100%;max-width:640px;margin:0 auto;padding:12px;display:flex}.item-row{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);justify-content:space-between;align-items:center;gap:8px;padding:14px 16px;font-weight:500;text-decoration:none;display:flex}.item-row:active{background:#e9f2f9}.empty-note{color:var(--muted);text-align:center;padding:24px}.article{width:100%;max-width:640px;margin:0 auto;padding:16px}.article-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.article h1{margin:0 0 12px;font-size:22px}.draft-badge{color:#8a6d1a;background:#fdf3d7;border-radius:6px;margin:0 0 8px;padding:2px 8px;font-size:13px;display:inline-block}.rich-text{font-size:16px;line-height:1.55}.rich-text img{border-radius:var(--radius);max-width:100%}.rich-text table{border-collapse:collapse;width:100%;margin:12px 0;font-size:15px}.rich-text th,.rich-text td{border:1px solid var(--border);text-align:left;padding:6px 8px}.rich-text th{background:var(--bg)}.rich-text a{color:var(--accent)}.fields{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-top:20px;overflow:hidden}.field-row{justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.field-row+.field-row{border-top:1px solid var(--border)}.field-label{color:var(--muted);font-size:14px}.field-row a{color:var(--accent);font-weight:600;text-decoration:none}.article-meta{color:var(--muted);margin-top:16px;font-size:13px}.comments{border-top:1px solid var(--border);margin-top:24px;padding-top:12px}.comments h2{color:var(--muted);font-size:16px}.comment{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px;padding:10px 12px}.comment p{white-space:pre-wrap;margin:6px 0 0}.comment-head{align-items:baseline;gap:8px;font-size:13px;display:flex}.comment-head span{color:var(--muted)}.comment-delete{color:var(--muted);cursor:pointer;background:0 0;border:none;margin-left:auto}.comment-form{flex-direction:column;gap:8px;margin-top:12px;display:flex}.comment-form textarea{resize:vertical}label{color:var(--muted);flex-direction:column;gap:4px;font-size:14px;font-weight:500;display:flex}input,textarea,select{font:inherit;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);background:var(--card);padding:10px 12px;font-size:16px}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}.btn{font:inherit;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);color:var(--text);cursor:pointer;justify-content:center;align-items:center;padding:11px 18px;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-danger{border-color:var(--danger);color:var(--danger);background:0 0}.btn-small{padding:6px 12px;font-size:14px}.btn-block{width:100%}.btn:disabled{opacity:.6}.form-error{color:var(--danger);margin:0;font-size:14px}.saved-note{color:#1e7e34;font-size:14px}.login-page{background:var(--header);justify-content:center;align-items:center;min-height:100dvh;padding:16px;display:flex}.login-card{background:var(--card);border-radius:14px;width:100%;max-width:380px;padding:28px 24px}.login-card h1{color:var(--header);margin:0}.login-sub{color:var(--muted);margin-top:4px}.login-card form{flex-direction:column;gap:14px;margin-top:20px;display:flex}.login-divider{color:var(--muted);align-items:center;gap:12px;margin:16px 0;font-size:13px;display:flex}.login-divider:before,.login-divider:after{content:"";border-top:1px solid var(--border);flex:1}.edit-form{flex-direction:column;gap:14px;width:100%;max-width:640px;margin:0 auto;padding:16px;display:flex}.edit-form h2{margin:8px 0 0;font-size:16px}.editor-wrap{background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.editor-wrap .rich-text{min-height:200px;padding:12px}.editor-wrap .tiptap{outline:none;min-height:200px}.toolbar{border-bottom:1px solid var(--border);background:var(--bg);border-radius:var(--radius) var(--radius) 0 0;top:calc(var(--header-h) + env(safe-area-inset-top));z-index:5;flex-wrap:wrap;align-items:center;gap:4px;padding:8px;display:flex;position:sticky}.toolbar button{font:inherit;border:1px solid var(--border);background:var(--card);cursor:pointer;border-radius:6px;padding:6px 10px;font-size:14px}.toolbar button.active{background:var(--accent);border-color:var(--accent);color:#fff}.field-editor{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;padding:12px;display:flex}.checkbox-label{color:var(--text);flex-direction:row;align-items:center;gap:8px;font-size:15px}.checkbox-label input{width:20px;height:20px}.edit-actions{gap:10px;display:flex}.admin{flex-direction:column;gap:12px;width:100%;max-width:640px;margin:0 auto;padding:16px;display:flex}.admin h2{margin:8px 0 0;font-size:16px}.admin-create{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:12px;padding:16px;display:flex}.admin-hint{color:var(--muted);margin:0;font-size:13px}.user-row{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.user-row>div:first-child{flex-direction:column;min-width:0;display:flex}.user-email{color:var(--muted);text-overflow:ellipsis;font-size:13px;overflow:hidden}.user-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.user-disabled{opacity:.55}.install-banner{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:15;background:var(--header);color:#fff;border-radius:var(--radius);align-items:center;gap:12px;max-width:616px;margin:0 auto;padding:12px 14px;display:flex;position:fixed;box-shadow:0 4px 16px #00000040}.install-text{flex-direction:column;flex:1;gap:2px;font-size:14px;display:flex}.install-glyph{display:inline-block;transform:translateY(1px)}.install-close{color:#ffffffb3;cursor:pointer;background:0 0;border:none;padding:4px;font-size:16px}.calculator{flex-direction:column;gap:14px;width:100%;max-width:480px;margin:0 auto;padding:16px;display:flex}.calculator h1{margin:0;font-size:20px}.calc-result{border-radius:var(--radius);background:#e7f4ec;border:1px solid #bfe3cd;padding:14px 16px;font-size:17px}.calc-result p{margin:4px 0}.calc-disclaimer{color:var(--muted);font-size:13px}
