:root{
  --ink:#14263F; --ink-soft:#4B5C74; --ink-faint:#8493A8;
  --paper:#F6F1E4; --paper-raised:#FFFDF7; --paper-line:#E1D8C1;
  --brass:#AD7C2C; --brass-deep:#8A6222; --brass-tint:#F1E2C3;
  --pine:#2F4B3C; --pine-tint:#DEE8DF; --rust:#A8492E;
  --shadow: 0 1px 2px rgba(20,38,63,0.06), 0 8px 24px rgba(20,38,63,0.08);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{background:var(--paper);color:var(--ink);font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;-webkit-font-smoothing:antialiased;min-height:100vh;}
h1,h2,h3,.serif{font-family:'Fraunces',Georgia,serif;font-weight:600;letter-spacing:-0.01em;color:var(--ink);margin:0;}
p{margin:0;}
button{font-family:inherit;cursor:pointer;}
a{color:var(--brass-deep);}

.shell{max-width:640px;margin:0 auto;padding:32px 20px 80px;}
.mark{font-family:'Fraunces',serif;font-weight:600;font-size:15px;color:var(--brass-deep);letter-spacing:.02em;margin-bottom:22px;}
.mark span{color:var(--ink);}
h1.title{font-size:clamp(24px,5vw,32px);line-height:1.15;margin-bottom:10px;}
.sub{font-size:15px;color:var(--ink-soft);line-height:1.5;margin-bottom:24px;max-width:56ch;}

.field{margin-bottom:18px;}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:6px;}
.field .hint{font-size:12.5px;color:var(--ink-faint);margin-top:5px;line-height:1.4;}
.input,.textarea,select.input{
  width:100%;border:1.5px solid var(--paper-line);border-radius:10px;background:var(--paper-raised);
  font-family:'Inter',sans-serif;font-size:15px;color:var(--ink);padding:11px 12px;outline:none;transition:border-color .15s ease;
}
.input:focus,.textarea:focus{border-color:var(--brass);}
.textarea{resize:vertical;min-height:88px;line-height:1.5;}

.card{background:var(--paper-raised);border:1px solid var(--paper-line);border-radius:14px;padding:18px;margin-bottom:16px;box-shadow:var(--shadow);}
.card h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--brass-deep);margin-bottom:12px;font-family:'Inter';font-weight:700;}

.btn{border-radius:999px;padding:12px 20px;font-size:14.5px;font-weight:600;cursor:pointer;border:1.5px solid transparent;display:inline-flex;align-items:center;gap:8px;transition:transform .1s ease,opacity .15s ease,background .15s ease;}
.btn:active{transform:scale(.97);}
.btn-primary{background:var(--ink);color:#fff;}
.btn-primary:hover{background:#0c1b30;}
.btn-brass{background:var(--brass);color:#fff;}
.btn-brass:hover{background:var(--brass-deep);}
.btn-ghost{background:transparent;color:var(--ink-soft);border-color:var(--paper-line);}
.btn-ghost:hover{border-color:var(--ink-soft);color:var(--ink);}
.btn-text{background:none;border:none;color:var(--ink-faint);font-weight:500;text-decoration:underline;cursor:pointer;font-size:13px;padding:6px;}
.btn[disabled]{opacity:.5;pointer-events:none;}

.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.row.between{justify-content:space-between;}

.chip{font-size:12.5px;padding:7px 13px;border-radius:99px;border:1px solid var(--paper-line);background:var(--paper);color:var(--ink-soft);cursor:pointer;transition:all .15s ease;}
.chip:hover{border-color:var(--brass);color:var(--brass-deep);}
.chip.on{background:var(--pine);border-color:var(--pine);color:#fff;}

.list-item{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px;padding-bottom:10px;border-bottom:1px dashed var(--paper-line);}
.list-item .fields{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;}
.remove-btn{background:none;border:none;color:var(--ink-faint);cursor:pointer;font-size:18px;line-height:1;padding:4px;}
.remove-btn:hover{color:var(--rust);}
.add-link{background:none;border:none;color:var(--brass-deep);font-weight:600;font-size:14px;cursor:pointer;padding:6px 0;}
.add-link:hover{color:var(--brass);}

.task-row{display:flex;gap:8px;align-items:center;margin-bottom:9px;flex-wrap:wrap;}
.task-row .tname{flex:2 1 140px;}
.task-row .tday{flex:1 1 100px;}
.task-row .ttime{flex:1 1 90px;}
.task-row .thours,.task-row .tdur{flex:0 0 64px;}
.task-row label.mini{font-size:10.5px;color:var(--ink-faint);display:block;margin-bottom:3px;}

.banner{border-radius:12px;padding:14px 16px;margin-bottom:20px;font-size:14px;line-height:1.5;}
.banner.good{background:var(--pine-tint);border:1px solid var(--pine);color:var(--pine);}
.banner.warn{background:#F7E9DE;border:1px solid #E3B58C;color:#7A4419;}
.banner.info{background:var(--brass-tint);border:1px solid var(--brass);color:var(--brass-deep);}

.status-pill{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;padding:5px 11px;border-radius:99px;background:var(--paper-line);color:var(--ink-soft);}
.status-pill.connected{background:var(--pine-tint);color:var(--pine);}

/* coach chat */
.coach-panel{background:var(--ink);border-radius:14px;padding:18px;color:#F6F1E4;}
.coach-panel .cn-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--brass);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'Fraunces',serif;font-weight:600;font-size:14px;flex-shrink:0;}
.cn-name{font-family:'Fraunces',serif;font-size:15px;}
.cn-role{font-size:11.5px;color:#C7B98C;}
.chat-log{max-height:340px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:2px;margin-bottom:12px;}
.chat-bubble{font-size:14px;line-height:1.5;padding:10px 13px;border-radius:12px;max-width:85%;}
.chat-bubble.assistant{background:rgba(246,241,228,0.1);color:#F1EBDA;align-self:flex-start;border-bottom-left-radius:3px;}
.chat-bubble.user{background:var(--brass);color:#fff;align-self:flex-end;border-bottom-right-radius:3px;}
.chat-bubble.loading{display:flex;gap:5px;align-items:center;}
.dotpulse{width:6px;height:6px;border-radius:50%;background:#C7B98C;animation:pulse 1s infinite ease-in-out;display:inline-block;}
.dotpulse:nth-child(2){animation-delay:.15s;}
.dotpulse:nth-child(3){animation-delay:.3s;}
@keyframes pulse{0%,80%,100%{opacity:.3;transform:scale(.8);}40%{opacity:1;transform:scale(1);}}
.chat-input-row{display:flex;gap:8px;}
.chat-input-row .input{background:rgba(246,241,228,0.08);border:1px solid rgba(246,241,228,0.25);color:#fff;border-radius:10px;padding:10px 12px;}
.chat-input-row .input::placeholder{color:#9AA6B8;}

.goal-card{background:var(--paper-raised);border:1px solid var(--paper-line);border-left:3px solid var(--brass);border-radius:0 12px 12px 0;padding:16px 18px;margin-bottom:14px;}
.nav-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;}
.nav-top .btn-text{padding:0;}

@media (max-width:480px){
  .task-row .tname{flex-basis:100%;}
}
