:root{--bg:#f5f1e8;--card:#fffdf7;--ink:#0f2a23;--muted:#6b7a74;--brand:#0d3b2e;--brand2:#14532d;--accent:#f97316;--line:#e8e0d0;--ok:#16a34a}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Georgia,"Times New Roman",serif}
.topbar{display:flex;align-items:center;gap:.6rem;padding:.7rem 1rem}
.brand{display:flex;align-items:center;gap:.6rem;font-weight:700}
.logo{width:40px;height:40px;border-radius:12px;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px}
.wrap{display:flex;gap:1.2rem;max-width:1180px;margin:0 auto;padding:0 1rem 5rem}
.side{width:210px;flex-shrink:0;padding-top:1rem}
.side a{display:flex;gap:.6rem;align-items:center;padding:.6rem .8rem;border-radius:12px;color:var(--ink);text-decoration:none}
.side a.on{background:#e3efe6}
.main{flex:1;min-width:0}
h1.today{font-size:3rem;margin:.4rem 0;font-weight:500}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:1rem 1.1rem;margin:.9rem 0;box-shadow:0 1px 0 rgba(0,0,0,.03)}
.row{display:flex;justify-content:space-between;align-items:center;gap:.6rem}
.cta{background:var(--brand);color:#fff;border-radius:16px;padding:1rem 1.2rem;display:flex;align-items:center;gap:1rem;text-decoration:none;margin:1rem 0}
.cta .mic{width:52px;height:52px;border-radius:16px;background:#ffffff2a;display:flex;align-items:center;justify-content:center;font-size:26px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:900px){.grid2{grid-template-columns:1fr}.side{display:none}.bottomnav{display:flex!important}}
.badge{background:#fde8d8;color:#9a3412;border-radius:999px;padding:.2rem .7rem;font-size:.8rem}
.btn{background:var(--brand);color:#fff;border:0;border-radius:12px;padding:.8rem 1.1rem;font-size:1rem;cursor:pointer}
.btn.sec{background:#e3efe6;color:var(--ink)}
input,textarea,select{width:100%;padding:.7rem .8rem;border:1px solid var(--line);border-radius:12px;font-size:1rem;font-family:inherit;background:#fff}
label{font-size:.9rem;color:var(--muted)}
.bottomnav{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--card);border-top:1px solid var(--line);padding:.5rem;justify-content:space-around}
.bottomnav a{text-decoration:none;color:var(--ink);font-size:.85rem;text-align:center}
.kbd{color:var(--muted);font-size:.85rem}
.cal-tabs{display:flex;gap:.4rem}
.cal-grid th{font-weight:400;color:var(--muted);font-size:.8rem;padding:.3rem}
.cal-grid td{border-top:1px solid var(--line);vertical-align:top;height:64px;width:14%}
.cal-day a{text-decoration:none}
.cal-day.cal-dim{opacity:.4}
.cal-today{background:#eef6ef;border-radius:10px}
.cal-day.cal-today{outline:2px solid var(--brand2)}
.cal-badges{display:flex;gap:.35rem;font-size:.78rem;margin-top:.25rem;flex-wrap:wrap}
.cal-badges span{background:#e3efe6;border-radius:999px;padding:.05rem .5rem}
table{width:100%;border-collapse:collapse}td{padding:.6rem .2rem;border-top:1px solid var(--line)}
a{color:inherit}
.confirm{background:var(--brand);color:#fff;border-radius:14px;padding:1rem;text-align:center;font-size:1.15rem;width:100%;border:0;cursor:pointer}
.dict-row{display:flex;gap:.5rem;align-items:stretch}
.dict-row textarea{flex:1;min-height:84px;resize:vertical}
.micbtn{flex:0 0 56px;width:56px;border-radius:14px;border:1px solid var(--line);background:#e3efe6;font-size:26px;cursor:pointer;line-height:1}
.micbtn.on{background:#dc2626;border-color:#dc2626;color:#fff;animation:pulse 1.2s infinite}
.micbtn:disabled{opacity:.45;cursor:not-allowed}
@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.07)}100%{transform:scale(1)}}
