/* TriggerMark — Marking, the documenting sheet, the journal and its modals.
   Split out of index.html. */

  /* ---------- Home / mark screen ---------- */
  .home-body{
    flex:1;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:10px 28px 20px;
  }
  .home-hint{
    color:var(--text-dim);
    font-size:.92rem;
    line-height:1.7;
    max-width:30ch;
    margin-bottom:38px;
  }
  .mark-btn-wrap{
    position:relative;
    width:196px;height:196px;
    display:flex;align-items:center;justify-content:center;
    margin-bottom:34px;
    flex:none;
  }
  .mark-btn-wrap::before,.mark-btn-wrap::after{
    content:"";
    position:absolute;inset:0;
    border-radius:50%;
    border:1px solid rgba(210,75,75,.28);
  }
  .mark-btn-wrap::before{animation:ring-breathe 3.2s ease-in-out infinite;}
  .mark-btn-wrap::after{animation:ring-breathe 3.2s ease-in-out infinite 1.6s;}
  .mark-btn{
    appearance:none;border:none;cursor:pointer;
    width:168px;height:168px;border-radius:50%;
    background:radial-gradient(circle at 33% 28%, #e56a6a, var(--mark) 52%, var(--mark-deep) 100%);
    color:#fff;
    font-size:1.28rem;
    font-weight:800;
    letter-spacing:.01em;
    box-shadow:0 0 0 1px rgba(255,255,255,.07) inset, 0 18px 46px var(--mark-glow);
    position:relative;
    z-index:1;
    transition:transform .12s ease, box-shadow .12s ease;
  }
  .mark-btn:active{transform:scale(.93);}
  .mark-btn.pulse{animation:mark-pulse .55s ease;}
  @keyframes mark-pulse{
    0%{box-shadow:0 0 0 1px rgba(255,255,255,.07) inset, 0 18px 46px var(--mark-glow);}
    45%{box-shadow:0 0 0 1px rgba(255,255,255,.1) inset, 0 0 0 22px rgba(210,75,75,0);}
    100%{box-shadow:0 0 0 1px rgba(255,255,255,.07) inset, 0 18px 46px var(--mark-glow);}
  }
  .pending-line{
    color:var(--text-dim);
    font-size:.95rem;
    font-weight:600;
    min-height:1.4em;
  }
  .pending-line b{color:var(--text);font-variant-numeric:tabular-nums;}

  .toast{
    position:fixed;
    left:50%;
    bottom:calc(112px + var(--safe-b));
    transform:translate(50%,14px);
    background:var(--ok-soft);
    border:1px solid rgba(111,162,135,.4);
    color:#cfe8db;
    padding:11px 22px;
    border-radius:999px;
    font-size:.9rem;
    font-weight:700;
    display:flex;align-items:center;gap:8px;
    opacity:0;
    pointer-events:none;
    transition:opacity .28s ease, transform .28s ease;
    z-index:1400;
    max-width:calc(100% - 56px);
    white-space:nowrap;
    box-shadow:0 8px 26px rgba(0,0,0,.35);
  }
  .toast.show{opacity:1;transform:translate(50%,0);}
  .toast svg{width:16px;height:16px;flex:none;}

  /* ---------- Journal ---------- */
  .list{
    display:flex;flex-direction:column;
    gap:10px;
    padding:4px 20px 8px;
  }
  .journal-card{
    display:flex;align-items:center;gap:14px;
    background:var(--card);
    border:1px solid var(--border-soft);
    border-radius:var(--radius-m);
    padding:15px 16px;
    cursor:pointer;
    text-align:right;
    width:100%;
    color:inherit;
    appearance:none;
    transition:transform .12s ease, background .15s ease, border-color .15s ease;
  }
  .journal-card:active{transform:scale(.985);background:var(--card-2);}
  .journal-card .dot{
    width:9px;height:9px;border-radius:50%;
    background:var(--mark);
    box-shadow:0 0 0 4px var(--mark-glow);
    flex:none;
  }
  .journal-card .meta{flex:1;min-width:0;}
  .journal-card .when{font-weight:700;font-size:.98rem;}
  .journal-card .day{color:var(--text-dim);font-size:.8rem;margin-top:2px;}
  .journal-card .no-loc{color:var(--text-faint);}
  /* Where a mark came from: said plainly, in the same quiet line as the day. */
  .src-tag{color:var(--text-faint);}

  /* The pending card is a row holding two separate buttons rather than one
     button wrapping another, which is invalid and unreachable by keyboard. */
  .journal-row{margin-bottom:10px;}
  .journal-row .journal-card{margin-bottom:0;}
  .journal-row-actions{
    display:flex;justify-content:flex-start;
    padding:6px 4px 0;
  }
  /* Quiet on purpose. Documenting is the point of this screen; this is the
     way out for a tap that should not have happened. */
  .btn-dismiss{
    appearance:none;background:none;border:none;cursor:pointer;
    color:var(--text-faint);font-size:.74rem;font-family:inherit;
    padding:4px 2px;text-decoration:underline;
  }
  .btn-dismiss:hover{color:var(--text-dim);}
  .toast-undo{
    appearance:none;background:none;border:none;cursor:pointer;
    color:var(--calm);font-size:.82rem;font-weight:700;font-family:inherit;
    padding:2px 4px;margin-inline-start:10px;text-decoration:underline;
  }
  .toast-undo[hidden]{display:none;}
  .journal-card .cta{
    color:var(--calm);
    font-size:.78rem;
    font-weight:700;
    flex:none;
  }

  .empty-state{
    flex:1;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    text-align:center;
    padding:40px 32px;
    color:var(--text-dim);
    gap:14px;
  }
  .empty-state .icon{
    width:52px;height:52px;
    border-radius:50%;
    background:var(--card);
    border:1px solid var(--border);
    display:flex;align-items:center;justify-content:center;
    color:var(--calm);
  }
  .empty-state .icon svg{width:24px;height:24px;}
  .empty-state p{font-size:.92rem;line-height:1.6;max-width:28ch;}
  .empty-state strong{color:var(--text);display:block;font-size:1rem;margin-bottom:2px;}

  /* ---------- Sheet (modal) ---------- */
  .sheet-backdrop{
    position:fixed;inset:0;
    background:rgba(6,8,11,.62);
    opacity:0;
    pointer-events:none;
    transition:opacity .22s ease;
    z-index:1200;
  }
  .sheet-backdrop.show{opacity:1;pointer-events:auto;}
  .sheet{
    position:fixed;
    right:0;left:0;bottom:0;
    max-width:560px;
    margin:0 auto;
    background:var(--bg-soft);
    border:1px solid var(--border);
    border-bottom:none;
    border-radius:24px 24px 0 0;
    box-shadow:var(--shadow);
    padding:14px 22px calc(24px + var(--safe-b));
    transform:translateY(100%);
    transition:transform .32s cubic-bezier(.22,.61,.36,1);
    z-index:1201;
    max-height:88vh;
    overflow-y:auto;
  }
  .sheet.show{transform:translateY(0);}
  .sheet-handle{
    width:38px;height:4px;border-radius:99px;
    background:var(--border);
    margin:0 auto 18px;
  }
  .sheet h3{font-size:1.15rem;font-weight:700;margin-bottom:4px;}
  .sheet .sheet-when{color:var(--calm);font-size:.85rem;font-weight:700;margin-bottom:20px;}
  .field{margin-bottom:16px;}
  .field label{
    display:block;
    font-size:.82rem;
    font-weight:700;
    color:var(--text-dim);
    margin-bottom:8px;
  }
  .field input[type="text"],.field input[type="email"],.field input[type="password"],.field textarea{
    width:100%;
    background:var(--card);
    border:1px solid var(--border);
    color:var(--text);
    border-radius:var(--radius-s);
    padding:12px 14px;
    font-size:.95rem;
    line-height:1.5;
    resize:none;
    transition:border-color .15s ease;
  }
  .field input[type="text"]:focus,.field input[type="email"]:focus,.field input[type="password"]:focus,.field textarea:focus{
    outline:none;
    border-color:var(--calm);
  }
  .field textarea{min-height:104px;}
  .field-note{
    margin:8px 2px 0;
    color:var(--text-faint);
    font-size:.76rem;
    line-height:1.5;
  }
  .field-note[hidden]{display:none;}

  /* Eleven taps rather than a slider. A slider needs a starting position, and
     any starting position on this scale is already an answer — 0 means calm,
     50 means moderate. Nothing here is selected until a finger lands on it. */
  .suds-scale{display:flex;gap:5px;margin-top:10px;}
  .suds-step{
    flex:1;appearance:none;cursor:pointer;min-width:0;
    background:var(--card);border:1px solid var(--border);color:var(--text-dim);
    border-radius:var(--radius-s);padding:11px 0;
    font-size:.76rem;font-weight:600;font-family:inherit;
    transition:background .12s ease,border-color .12s ease,color .12s ease;
  }
  .suds-step:active{transform:scale(.94);}
  .suds-step[aria-pressed="true"]{
    background:var(--mark);border-color:var(--mark);color:#fff;
  }
  .suds-anchors{
    display:flex;justify-content:space-between;
    margin-top:7px;color:var(--text-faint);font-size:.7rem;
  }
  .suds-clear{
    appearance:none;background:none;border:none;cursor:pointer;
    color:var(--calm);font-size:.76rem;font-family:inherit;
    padding:8px 2px 0;text-decoration:underline;
  }
  .suds-clear[hidden]{display:none;}

  .journal-documented{padding:0 18px 18px;}
  .journal-doc-head{
    color:var(--text-faint);font-size:.78rem;font-weight:700;
    margin:18px 2px 10px;
  }
  .doc-row{
    display:flex;align-items:flex-start;gap:10px;width:100%;
    background:var(--card);border:1px solid var(--border-soft);
    border-radius:var(--radius-m);padding:12px 14px;margin-bottom:8px;
    text-align:right;
  }
  .doc-row .doc-meta{flex:1;min-width:0;display:block;}
  /* Block, not inline: as a span the overflow/ellipsis pair below was inert and
     only `nowrap` applied, so the note ran out of the card and across the
     rating and the avoidance button. It wraps now, and `anywhere` covers a
     pasted URL or an unbroken string that no space could break. */
  .doc-row .doc-note{
    display:block;
    font-size:.88rem;color:var(--text);line-height:1.55;
    white-space:normal;overflow-wrap:anywhere;
  }
  .doc-row .doc-when{display:block;color:var(--text-faint);font-size:.74rem;margin-top:3px;}
  .doc-suds{
    flex:none;margin-top:1px;font-size:.74rem;font-weight:700;color:var(--text-dim);
    background:var(--bg-soft);border-radius:999px;padding:4px 9px;
  }
  .btn-avoid{
    flex:none;margin-top:-1px;appearance:none;cursor:pointer;
    background:none;border:1px solid var(--border);color:var(--calm);
    border-radius:999px;padding:6px 11px;font-size:.74rem;font-family:inherit;
  }
  .btn-avoid.answered{border-color:var(--ok);color:var(--ok);}
  .avoid-choices{display:flex;gap:10px;margin:14px 0 4px;}
  .avoid-btn{
    flex:1;appearance:none;cursor:pointer;
    background:var(--card);border:1px solid var(--border);color:var(--text);
    border-radius:var(--radius-m);padding:14px 10px;
    font-size:.9rem;font-family:inherit;
  }
  .avoid-btn[aria-pressed="true"]{background:var(--calm-soft);border-color:var(--calm);color:var(--calm);}

  .bar-trend{
    display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;
    margin-top:7px;font-size:.72rem;
  }
  .trend{font-weight:700;}
  /* Rising distress is not "bad news" to be alarmed in red, and falling is not
     a win to be congratulated in green. Both are amber: something to look at
     together, not a verdict. */
  .trend-rising,.trend-falling{color:var(--amber);}
  .trend-stable{color:var(--text-dim);}
  .trend-detail,.trend-none{color:var(--text-faint);}

  .entry-suds{
    margin-inline-start:auto;flex:none;
    font-size:.72rem;font-weight:700;color:var(--text-dim);
    background:var(--bg-soft);border-radius:999px;padding:3px 9px;
  }
  .entry-suds-none{color:var(--text-faint);font-weight:500;}
  .entry-avoid{
    margin-top:8px;padding-top:8px;
    border-top:1px solid var(--border-soft);
    color:var(--amber);font-size:.76rem;line-height:1.5;
  }
  .sheet-actions{display:flex;gap:10px;margin-top:6px;}
  .place-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;}
  .place-chip{
    appearance:none;cursor:pointer;font-family:inherit;font-size:.78rem;font-weight:600;
    background:var(--bg-soft);border:1px solid var(--border);color:var(--text-dim);
    border-radius:999px;padding:6px 12px;
  }
  .place-chip.on{background:var(--calm-soft);border-color:var(--calm);color:var(--calm);}
  .place-chip .mob{opacity:.7;font-weight:500;}
  .place-hint{color:var(--amber);font-size:.76rem;line-height:1.5;margin:6px 2px 0;}
  /* The phone's location, offered while documenting a mark that has none. */
  .doc-loc{margin-top:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-s);background:var(--bg-soft);}
  .doc-loc[hidden],.doc-loc-actions[hidden],.doc-loc-btn[hidden],.doc-loc-map[hidden]{display:none;}
  .doc-loc-text{margin:0;color:var(--text-dim);font-size:.8rem;line-height:1.55;}
  .doc-loc-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
  .doc-loc-btn{
    appearance:none;cursor:pointer;font-family:inherit;
    background:var(--card);border:1px solid var(--border);color:var(--text-dim);
    border-radius:999px;padding:6px 11px;font-size:.76rem;font-weight:600;
  }
  .doc-loc-map{height:200px;margin-top:10px;border-radius:var(--radius-s);overflow:hidden;border:1px solid var(--border);}
  .doc-pin{border-radius:50%;background:var(--mark);border:3px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.5);box-sizing:border-box;}
  .trg-mobile{
    flex:none;appearance:none;cursor:pointer;font-family:inherit;font-size:.72rem;
    background:none;border:1px solid var(--border);color:var(--text-faint);
    border-radius:999px;padding:6px 10px;white-space:nowrap;
  }
  .trg-mobile.on{border-color:var(--amber);color:var(--amber);}
  body.viewing-other #btn-known-places{display:none;}
  .trg-list{display:flex;flex-direction:column;gap:8px;margin:2px 0 10px;}
  .trg-row{display:flex;align-items:center;gap:8px;}
  .trg-row input,.trg-add input{
    flex:1;min-width:0;appearance:none;font-family:inherit;
    background:var(--card-2);border:1px solid var(--border-soft);color:var(--text);
    border-radius:var(--radius-s);padding:10px 12px;font-size:.88rem;
  }
  .trg-row input:focus,.trg-add input:focus{outline:none;border-color:var(--calm);}
  .trg-del{
    flex:none;appearance:none;cursor:pointer;background:none;
    border:1px solid var(--border);color:var(--text-faint);
    border-radius:999px;width:30px;height:30px;font-size:1.05rem;line-height:1;
    font-family:inherit;
  }
  .trg-del:hover{color:var(--mark);border-color:var(--mark);}
  .trg-empty{color:var(--text-faint);font-size:.8rem;padding:4px 2px 2px;}
  .trg-add{display:flex;gap:8px;margin-bottom:14px;}
  .trg-add-btn{
    flex:none;appearance:none;cursor:pointer;font-family:inherit;
    background:var(--calm-soft);border:1px solid var(--calm);color:var(--calm);
    border-radius:var(--radius-s);padding:0 15px;font-size:.82rem;font-weight:700;
  }
  .triggers-note{
    color:var(--text-faint);font-size:.76rem;line-height:1.6;
    margin:2px 2px 16px;
  }
  /* Someone else's list is not the therapist's to write. */
  body.viewing-other #btn-known-triggers{display:none;}
  .btn-secondary,.btn-primary{
    flex:1;
    appearance:none;border:none;cursor:pointer;
    padding:13px 18px;
    border-radius:999px;
    font-size:.95rem;
    font-weight:700;
    transition:transform .12s ease, opacity .15s ease;
  }
  .btn-secondary{background:var(--card);color:var(--text-dim);border:1px solid var(--border);}
  .btn-primary{background:var(--calm);color:#0d1418;}
  .btn-primary:disabled{opacity:.4;cursor:not-allowed;}
  .btn-secondary:active,.btn-primary:not(:disabled):active{transform:scale(.96);}

  /* ---------- Notebook modal ---------- */
  .notebook-backdrop{
    position:fixed;inset:0;
    background:rgba(6,8,11,.7);
    opacity:0;
    pointer-events:none;
    transition:opacity .22s ease;
    z-index:1200;
    display:flex;align-items:center;justify-content:center;
    padding:24px;
  }
  .notebook-backdrop.show{opacity:1;pointer-events:auto;}
  .notebook{
    width:100%;
    max-width:400px;
    max-height:80vh;
    overflow-y:auto;
    background:
      repeating-linear-gradient(var(--paper) 0 34px, var(--paper-line) 34px 35px);
    background-color:var(--paper);
    color:var(--paper-ink);
    border-radius:6px;
    box-shadow:0 24px 60px rgba(0,0,0,.5);
    position:relative;
    padding:30px 26px 26px 22px;
    transform:scale(.92) translateY(10px);
    opacity:0;
    transition:transform .26s cubic-bezier(.22,.61,.36,1), opacity .26s ease;
  }
  .notebook-backdrop.show .notebook{transform:scale(1) translateY(0);opacity:1;}
  .notebook::before{
    content:"";
    position:absolute;
    top:0;bottom:0;right:52px;
    width:1px;
    background:rgba(210,75,75,.35);
  }
  .notebook-close{
    position:absolute;
    top:12px;left:12px;
    width:30px;height:30px;
    border-radius:50%;
    border:1px solid rgba(58,47,34,.25);
    background:rgba(255,255,255,.4);
    color:var(--paper-ink);
    cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    appearance:none;
    z-index:2;
  }
  .notebook-close svg{width:15px;height:15px;}
  .notebook-date{
    font-size:.85rem;
    font-weight:700;
    color:#8a5a3a;
    margin-bottom:2px;
    position:relative;
    z-index:1;
  }
  .notebook-time{
    font-size:1.5rem;
    font-weight:700;
    font-family:Georgia,"Times New Roman",serif;
    margin-bottom:14px;
    position:relative;
    z-index:1;
  }
  .notebook-loc{
    display:inline-flex;align-items:center;gap:6px;
    font-size:.8rem;
    font-weight:700;
    color:#8a5a3a;
    background:rgba(138,90,58,.1);
    padding:4px 10px;
    border-radius:999px;
    margin-bottom:16px;
    position:relative;
    z-index:1;
  }
  .notebook-loc svg{width:12px;height:12px;flex:none;}
  .notebook-text{
    font-family:Georgia,"Times New Roman",serif;
    font-size:1.02rem;
    line-height:34px;
    position:relative;
    z-index:1;
    white-space:pre-wrap;
  }

  a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{
    outline:2px solid var(--calm);
    outline-offset:2px;
  }
