/* COCO web app — styles layered on the marketing design tokens (styles.css). */

body{min-height:100vh}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--surface2);
  padding:1px 6px;border-radius:6px;font-size:.9em}
.muted{color:var(--ink2)}
.small{font-size:13px}

/* ---------- buttons (extend marketing .btn) ---------- */
.btn{background:var(--brand);color:#fff}
.btn:hover{background:var(--brand-strong)}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{background:var(--surface2)}
.btn.danger{background:transparent;color:var(--red);border-color:var(--red)}
.btn.danger:hover{background:var(--red-tint)}
.btn-block{width:100%;margin-top:6px}
.btn[disabled]{opacity:.55;cursor:default}
.linklike{background:none;border:0;color:var(--brand);cursor:pointer;font:inherit;padding:0}

/* ---------- auth gate ---------- */
.gate{min-height:100vh;display:grid;place-items:center;padding:24px;
  background:radial-gradient(120% 90% at 50% -10%,var(--brand-tint),transparent 60%),var(--bg)}
.gate-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:34px 30px;text-align:center}
.gate-logo{width:56px;height:56px;border-radius:14px;margin:0 auto 16px}
.gate-card h1{font-size:24px;margin-bottom:6px}
.gate-card form{margin-top:22px;text-align:start;display:flex;flex-direction:column;gap:14px}
.gate-links{margin-top:18px;display:flex;flex-direction:column;gap:10px;align-items:center}

label{display:flex;flex-direction:column;gap:6px;font-size:13.5px;font-weight:600;color:var(--ink2)}
input,select{font:inherit;font-weight:500;color:var(--ink);background:var(--surface);
  border:1px solid var(--line);border-radius:12px;padding:12px 14px;width:100%}
/* Native <select> renders taller than text inputs; strip the native chrome so it
   shares the exact same box model (identical height), then draw our own chevron. */
select{-webkit-appearance:none;appearance:none;padding-right:38px;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:16px}
input:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint)}
label.check{flex-direction:row;align-items:center;gap:10px;font-weight:600;color:var(--ink)}
label.check input{width:auto}
.form-err{color:var(--red);font-size:13.5px;font-weight:600}

/* ---------- app shell ---------- */
.app{display:grid;grid-template-columns:250px 1fr;min-height:100vh}
.side{border-inline-end:1px solid var(--line);background:var(--surface);padding:22px 18px;
  display:flex;flex-direction:column;gap:8px;position:sticky;top:0;height:100vh}
.side .brand{display:flex;align-items:center;gap:10px;font-family:var(--font-head);
  font-weight:700;font-size:20px;color:var(--ink);margin-bottom:16px}
.side .brand img{width:30px;height:30px;border-radius:8px}
.side nav{display:flex;flex-direction:column;gap:2px}
.side nav a{padding:11px 14px;border-radius:12px;color:var(--ink2);font-weight:600}
.side nav a:hover{background:var(--surface2);color:var(--ink)}
.side nav a.on{background:var(--brand-tint);color:var(--brand-ink)}
.btn-add{margin-top:auto}
.content{padding:34px 40px;max-width:900px}

.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;
  flex-wrap:wrap;margin-bottom:22px}
.page-head h1{font-size:30px}
.search{max-width:280px}

/* ---------- chips ---------- */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}
.chip{border:1px solid var(--line);background:var(--surface);color:var(--ink2);
  padding:8px 15px;border-radius:999px;font-weight:600;font-size:14px;cursor:pointer}
.chip:hover{background:var(--surface2)}
.chip.on{background:var(--brand);color:#fff;border-color:var(--brand)}

/* ---------- document list ---------- */
.doc-list{display:flex;flex-direction:column;gap:12px}
.doc-card{display:flex;align-items:center;gap:14px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;
  box-shadow:var(--shadow);cursor:pointer;transition:transform .12s,box-shadow .2s}
.doc-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-lg)}
.doc-ico{width:44px;height:44px;flex:none;border-radius:12px;background:var(--surface2);
  display:grid;place-items:center;font-size:22px}
.doc-ico.big{width:64px;height:64px;font-size:32px}
.doc-main{flex:1;min-width:0;display:flex;flex-direction:column}
.doc-main strong{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-sub{color:var(--ink2);font-size:14px}

/* days-left stamp */
.stamp{flex:none;font-family:var(--font-head);font-weight:700;font-size:14px;
  padding:6px 12px;border-radius:999px;border:1px dashed var(--line);color:var(--ink2);white-space:nowrap}
.stamp.ok{color:var(--brand);border-color:var(--brand-tint);background:var(--brand-tint)}
.stamp.amber{color:var(--amber);border-color:var(--amber-tint);background:var(--amber-tint)}
.stamp.red{color:var(--red);border-color:var(--red-tint);background:var(--red-tint)}
.stamp.muted{color:var(--ink3)}
.pill{display:inline-block;font-size:12.5px;font-weight:600;padding:4px 10px;border-radius:999px;
  background:var(--surface2);color:var(--ink2);margin-inline-start:8px}
.pill.muted{opacity:.7}

/* ---------- empty / loading ---------- */
.empty{text-align:center;padding:60px 20px;color:var(--ink2)}
.empty .leaf{font-size:34px;margin-bottom:8px}
.empty h3{font-size:20px;color:var(--ink);margin-bottom:6px}
.empty .btn{margin-top:16px}
.loading{display:flex;flex-direction:column;align-items:center;gap:12px;padding:56px;color:var(--ink2)}
.spin{width:34px;height:34px;border-radius:50%;border:3px solid var(--surface2);
  border-top-color:var(--brand);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- forms / upload ---------- */
.doc-form{display:flex;flex-direction:column;gap:16px;max-width:520px}
.doc-form .two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.row{display:flex;gap:12px;align-items:center}
.row.wrap{flex-wrap:wrap;margin-top:24px}
.sub{font-size:16px;margin-top:10px}

.drop{border:2px dashed var(--line);border-radius:var(--radius);padding:40px 20px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:10px;background:var(--surface)}
.drop.over{border-color:var(--brand);background:var(--brand-tint)}
.file-picked{margin:16px 0;display:flex;flex-direction:column;gap:6px;font-size:14px}
.confirm-banner{background:var(--amber-tint);color:var(--amber);border:1px solid var(--amber-tint);
  border-radius:var(--radius-s);padding:14px 16px;margin-bottom:18px;font-size:14.5px;font-weight:600}
.confirm-banner.high{background:var(--brand-tint);color:var(--brand-ink)}

/* ---------- detail ---------- */
.detail{max-width:640px}
.detail-head{display:flex;gap:16px;align-items:center;margin-bottom:22px}
.detail-head h1{font-size:26px;margin-bottom:6px}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}
.facts dt{font-size:12.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3);font-weight:700}
.facts dd{font-weight:600;margin-top:2px}
.reminders{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.reminders li{display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-s);padding:12px 16px}
.reminders.big li{padding:16px 18px}

/* ---------- card / account ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:20px 22px;box-shadow:var(--shadow);margin-bottom:22px}

/* ---------- modal ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(10,15,13,.5);display:grid;place-items:center;
  z-index:50;padding:20px;backdrop-filter:blur(2px)}
.modal{background:var(--surface);border-radius:var(--radius);padding:26px;max-width:420px;width:100%;
  box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:14px}
.modal h3{font-size:20px}
.modal .row{margin-top:6px;justify-content:flex-end}

/* ---------- document viewer ---------- */
.viewer{background:rgba(10,15,13,.86);z-index:55}
.viewer-stage{margin:0;max-width:min(92vw,900px);max-height:88vh;display:grid;place-items:center}
.viewer-stage img{max-width:100%;max-height:88vh;object-fit:contain;border-radius:10px;
  box-shadow:var(--shadow-lg);background:var(--surface)}
.viewer-fallback{color:#fff;font-weight:600;text-decoration:underline;padding:40px 20px;text-align:center}
.viewer-x{position:fixed;top:16px;right:18px;width:42px;height:42px;border-radius:50%;border:0;
  background:rgba(255,255,255,.14);color:#fff;font-size:18px;cursor:pointer;z-index:57}
.viewer-x:hover{background:rgba(255,255,255,.26)}
.viewer-nav{position:fixed;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;
  border:0;background:rgba(255,255,255,.14);color:#fff;font-size:28px;line-height:1;cursor:pointer;z-index:57}
.viewer-nav:hover{background:rgba(255,255,255,.26)}
.viewer-nav.prev{left:16px}
.viewer-nav.next{right:16px}
.viewer-count{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);color:#fff;
  font-family:var(--font-head);font-weight:700;font-size:14px;background:rgba(0,0,0,.4);
  padding:6px 14px;border-radius:999px;z-index:57}

/* ---------- toast ---------- */
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);opacity:0;
  background:var(--ink);color:var(--bg);padding:12px 20px;border-radius:12px;font-weight:600;
  font-size:14.5px;box-shadow:var(--shadow-lg);z-index:60;transition:.25s;max-width:90vw}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.red{background:var(--red);color:#fff}
.toast.amber{background:var(--amber);color:#fff}

/* ---------- responsive ---------- */
@media(max-width:760px){
  .app{grid-template-columns:1fr}
  .side{position:sticky;top:0;height:auto;flex-direction:row;align-items:center;
    gap:6px;padding:12px 14px;overflow-x:auto}
  .side .brand{margin-bottom:0;margin-inline-end:8px}
  .side nav{flex-direction:row}
  .btn-add{margin:0 0 0 auto;padding:9px 14px;white-space:nowrap}
  .content{padding:22px 18px}
  .facts,.doc-form .two{grid-template-columns:1fr}
}
