/* =========================================================================
   HAVN Documents — vault UI (v2.2.44)
   Namespaced under .havn-doc; reuses the Mission Control --mc-* tokens.
   Premium, professional treatment.
   ====================================================================== */

.havn-doc{ --mc-danger:#E59C8C; display:flex; flex-direction:column; gap:24px; max-width:1320px; }

/* ---- header ---- */
.havn-doc-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px; flex-wrap:wrap;
	padding-bottom:18px; border-bottom:1px solid var(--mc-border); }
.havn-doc-head > div:first-child{ min-width:0; }
.havn-doc .havn-mc-eyebrow{ color:var(--mc-accent); opacity:.85; letter-spacing:.16em; font-size:10px; }
.havn-doc-title{ font-family:"Fraunces","Times New Roman",serif; font-weight:500; letter-spacing:-.03em;
	font-size:33px; line-height:1.05; margin:8px 0 7px; color:var(--mc-text); }
.havn-doc-sub{ margin:0; color:var(--mc-text-2); font-size:13px; line-height:1.55; max-width:68ch; }
.havn-doc .havn-btn-primary{ box-shadow:0 12px 30px -12px rgba(212,179,112,.6); letter-spacing:.01em; }
.havn-doc .havn-btn-primary svg{ width:16px; height:16px; }

/* ---- context row (selector + chip + dropzone) ---- */
.havn-doc-context-row{ display:flex; align-items:stretch; gap:12px; flex-wrap:wrap; }
.havn-doc-selector{ display:flex; align-items:center; gap:12px; background:var(--mc-bg-3);
	border:1px solid var(--mc-border-2); border-radius:14px; padding:9px 15px; cursor:pointer; transition:.2s;
	box-shadow:0 1px 0 rgba(255,255,255,.04) inset; }
.havn-doc-selector:hover{ border-color:rgba(212,179,112,.45); }
.havn-doc-selector-ic{ width:36px; height:36px; border-radius:11px; display:grid; place-items:center;
	background:linear-gradient(180deg,rgba(212,179,112,.22),rgba(212,179,112,.08)); color:var(--mc-accent);
	box-shadow:0 0 0 1px rgba(212,179,112,.15) inset; }
.havn-doc-selector-ic svg{ width:17px; height:17px; }
.havn-doc-selector select{ background:0; border:0; color:var(--mc-text); font:inherit; font-weight:600; font-size:13.5px;
	outline:none; cursor:pointer; max-width:260px; letter-spacing:-.01em; }
.havn-doc-chip{ display:flex; align-items:center; gap:8px; font-size:11.5px; font-weight:600; padding:0 15px;
	border-radius:999px; background:var(--mc-surface); border:1px solid var(--mc-border); color:var(--mc-text-2); white-space:nowrap; }
.havn-doc-chip::before{ content:""; width:6px; height:6px; border-radius:50%; background:var(--mc-success);
	box-shadow:0 0 9px var(--mc-success); }
.havn-doc-drop{ flex:1; min-width:300px; display:flex; align-items:center; gap:15px; cursor:pointer;
	border:1.5px dashed var(--mc-border-2); border-radius:14px; padding:12px 19px;
	background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.008)); transition:.2s; }
.havn-doc-drop:hover, .havn-doc-drop.is-drag{ border-color:var(--mc-accent);
	background:linear-gradient(180deg,rgba(212,179,112,.12),rgba(212,179,112,.02)); transform:translateY(-1px); }
.havn-doc-drop-ic{ width:42px; height:42px; border-radius:13px; flex:0 0 42px; display:grid; place-items:center;
	background:linear-gradient(180deg,rgba(212,179,112,.22),rgba(212,179,112,.08)); color:var(--mc-accent);
	box-shadow:0 0 0 1px rgba(212,179,112,.15) inset; }
.havn-doc-drop-ic svg{ width:19px; height:19px; }
.havn-doc-drop h4{ margin:0; font-family:Inter,sans-serif; font-weight:700; font-size:13.5px; color:var(--mc-text); letter-spacing:-.01em; }
.havn-doc-drop p{ margin:3px 0 0; color:var(--mc-text-3); font-size:11.5px; }

/* ---- stat strip ---- */
.havn-doc-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.havn-doc-stat{ background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.012));
	border:1px solid var(--mc-border); border-radius:16px; padding:16px 18px; display:flex; align-items:center; gap:15px;
	box-shadow:0 1px 0 rgba(255,255,255,.05) inset, 0 16px 36px -30px rgba(0,0,0,.9); transition:.2s; }
.havn-doc-stat:hover{ border-color:var(--mc-border-2); }
.havn-doc-stat.accent{ background:linear-gradient(180deg,rgba(212,179,112,.16),rgba(212,179,112,.025)); border-color:rgba(212,179,112,.32); }
.havn-doc-stat .k{ font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--mc-text-3); font-weight:700; }
.havn-doc-stat .v{ font-family:"Fraunces",serif; font-size:27px; font-weight:600; margin-top:5px; letter-spacing:-.02em; line-height:1; color:var(--mc-text); }
.havn-doc-stat .v small{ font-size:13px; color:var(--mc-text-3); font-family:Inter,sans-serif; font-weight:600; }
.havn-doc-ring{ --p:0; width:50px; height:50px; flex:0 0 50px; border-radius:50%; display:grid; place-items:center;
	background:conic-gradient(var(--mc-accent) calc(var(--p)*1%), rgba(255,255,255,.07) 0);
	box-shadow:0 0 20px -6px rgba(212,179,112,.55); }
.havn-doc-ring i{ width:38px; height:38px; border-radius:50%; background:var(--mc-bg-2); display:grid; place-items:center;
	font-style:normal; font-weight:700; font-size:11px; color:var(--mc-text); box-shadow:0 0 0 1px rgba(255,255,255,.05) inset; }

/* ---- per-property panel: dim + lock while a new property loads ---- */
.havn-doc-body.is-loading{ opacity:.45; pointer-events:none; transition:opacity .15s ease; }

/* ---- groups: packed two-column masonry, all expanded ---- */
.havn-doc-groups{ column-count:2; column-gap:16px; }
.havn-doc-group{ background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.011));
	border:1px solid var(--mc-border); border-radius:18px; overflow:hidden; break-inside:avoid; margin:0 0 16px;
	display:inline-block; width:100%; vertical-align:top;
	box-shadow:0 1px 0 rgba(255,255,255,.05) inset, 0 18px 42px -34px rgba(0,0,0,.95);
	transition:border-color .2s, transform .2s; animation:havnDocIn .4s cubic-bezier(.2,.7,.2,1) both; }
.havn-doc-group:hover{ border-color:var(--mc-border-2); }
@keyframes havnDocIn{ from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:none; } }
.havn-doc-group-incoming{ border-color:rgba(138,180,248,.3); }

.havn-doc-ghead{ position:relative; display:flex; align-items:center; gap:13px; padding:16px 18px;
	border-bottom:1px solid var(--mc-border); background:linear-gradient(180deg,rgba(255,255,255,.022),transparent); }
.havn-doc-gi{ width:36px; height:36px; border-radius:11px; flex:0 0 36px; display:grid; place-items:center;
	background:linear-gradient(180deg,rgba(212,179,112,.2),rgba(212,179,112,.05)); color:var(--mc-accent);
	box-shadow:0 0 0 1px rgba(212,179,112,.14) inset; }
.havn-doc-gi svg{ width:17px; height:17px; }
.havn-doc-ghead h3{ margin:0; font-family:Inter,sans-serif; font-weight:700; font-size:14px; letter-spacing:-.01em; color:var(--mc-text); }
.havn-doc-gsub{ font-size:11px; color:var(--mc-text-3); margin-top:2px; line-height:1.35; }
.havn-doc-gcount{ margin-left:auto; flex:0 0 auto; }
.havn-doc-mini{ font-size:10px; font-weight:700; padding:5px 11px; border-radius:999px; white-space:nowrap;
	letter-spacing:.02em; border:1px solid transparent; }
.havn-doc-mini.done{ background:rgba(111,207,151,.12); color:var(--mc-success); border-color:rgba(111,207,151,.24); }
.havn-doc-mini.warn{ background:rgba(224,194,133,.12); color:var(--mc-warn); border-color:rgba(224,194,133,.28); }
/* slim completion bar pinned to the header's lower edge */
.havn-doc-gbar{ position:absolute; left:0; right:0; bottom:-1px; height:2px; background:rgba(255,255,255,.05); }
.havn-doc-gbar span{ display:block; height:100%; min-width:2px; border-radius:0 2px 2px 0;
	background:linear-gradient(90deg,rgba(212,179,112,.65),var(--mc-accent));
	box-shadow:0 0 10px -2px rgba(212,179,112,.6); transition:width .6s cubic-bezier(.2,.7,.2,1); }
.havn-doc-group-incoming .havn-doc-gbar span{ background:linear-gradient(90deg,rgba(138,180,248,.65),var(--mc-info)); box-shadow:none; }

.havn-doc-rows{ display:flex; flex-direction:column; }
.havn-doc-row{ display:flex; align-items:center; gap:14px; padding:13px 18px; border-top:1px solid var(--mc-border);
	transition:background .15s; }
.havn-doc-row:first-child{ border-top:0; }
.havn-doc-row:hover{ background:rgba(255,255,255,.022); }

.havn-doc-ft{ width:36px; height:44px; border-radius:9px; flex:0 0 36px; display:grid; place-items:center; position:relative;
	background:linear-gradient(180deg,var(--mc-bg-3),var(--mc-bg-2)); border:1px solid var(--mc-border-2);
	color:var(--mc-text-3); text-decoration:none; transition:.18s; box-shadow:0 1px 0 rgba(255,255,255,.04) inset; }
.havn-doc-ft:hover{ transform:translateY(-1px); box-shadow:0 6px 14px -8px rgba(0,0,0,.8); }
.havn-doc-ft svg{ width:15px; height:15px; }
.havn-doc-ft span{ font-size:7px; font-weight:800; letter-spacing:.05em; position:absolute; bottom:4px; }
.havn-doc-ft.pdf{ color:#E59C8C; } .havn-doc-ft.img{ color:#8AB4F8; } .havn-doc-ft.doc-c{ color:#8AB4F8; }
.havn-doc-ft.none{ opacity:.4; cursor:default; }
.havn-doc-ft.none:hover{ transform:none; box-shadow:0 1px 0 rgba(255,255,255,.04) inset; }

.havn-doc-meta{ min-width:0; flex:1; }
.havn-doc-name{ font-weight:600; font-size:13px; display:flex; align-items:center; gap:8px; line-height:1.3; color:var(--mc-text); letter-spacing:-.01em; }
.havn-doc-req{ font-size:8px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--mc-accent);
	border:1px solid rgba(212,179,112,.45); border-radius:5px; padding:2px 5px; line-height:1; }
.havn-doc-desc{ font-size:11px; color:var(--mc-text-3); margin-top:3px; line-height:1.4; }
.havn-doc-file{ font-size:10.5px; color:var(--mc-text-2); margin-top:4px; word-break:break-all; }

/* Fixed-width status rail so pills + controls line up down every card. */
.havn-doc-status{ margin-left:auto; display:flex; align-items:center; gap:12px; flex:0 0 auto; }
/* Clean dot-style status indicators (icon hidden in favour of a colour dot). */
.havn-doc-tag{ display:inline-flex; align-items:center; justify-content:center; gap:7px; min-width:96px;
	font-size:11px; font-weight:600; padding:5px 11px; border-radius:999px; white-space:nowrap; letter-spacing:.005em; }
.havn-doc-tag svg{ display:none; }
.havn-doc-tag::before{ content:""; width:6px; height:6px; border-radius:50%; background:currentColor; box-shadow:0 0 8px currentColor; }
.havn-doc-tag.up{ background:rgba(111,207,151,.13); color:var(--mc-success); }
.havn-doc-tag.sh{ background:rgba(138,180,248,.13); color:var(--mc-info); }
.havn-doc-tag.miss{ background:rgba(229,156,140,.13); color:var(--mc-danger); }
.havn-doc-tag.opt{ background:var(--mc-surface-2); color:var(--mc-text-3); }
.havn-doc-tag.opt::before{ box-shadow:none; }

.havn-doc-act{ display:flex; gap:6px; justify-content:flex-end; min-width:110px; }
.havn-doc-iconbtn{ width:31px; height:31px; border-radius:9px; border:1px solid var(--mc-border); background:var(--mc-surface);
	color:var(--mc-text-3); display:grid; place-items:center; cursor:pointer; text-decoration:none; transition:.15s; }
.havn-doc-iconbtn:hover{ color:var(--mc-text); border-color:var(--mc-border-2); background:var(--mc-surface-2); transform:translateY(-1px); }
.havn-doc-iconbtn.is-on{ color:var(--mc-info); border-color:rgba(138,180,248,.4); background:rgba(138,180,248,.1); }
.havn-doc-iconbtn.havn-doc-del:hover{ color:var(--mc-danger); border-color:rgba(229,156,140,.4); background:rgba(229,156,140,.08); }
.havn-doc-iconbtn svg{ width:14px; height:14px; }
.havn-doc-upbtn{ border:1px solid rgba(212,179,112,.55); color:var(--mc-accent); background:rgba(212,179,112,.08); border-radius:9px;
	padding:6px 14px; min-width:110px; font-weight:700; font-size:11px; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; gap:6px; white-space:nowrap; transition:.15s; }
.havn-doc-upbtn:hover{ background:var(--mc-accent); color:#1a1407; border-color:var(--mc-accent); box-shadow:0 8px 18px -10px rgba(212,179,112,.7); }
.havn-doc-upbtn svg{ width:12px; height:12px; }

/* "Add another" affordance, indented to line up under the document name */
.havn-doc-addmore{ padding:6px 18px 13px 68px; }
.havn-doc-addbtn{ display:inline-flex; align-items:center; gap:6px; background:transparent; border:1px dashed var(--mc-border-2);
	color:var(--mc-text-3); border-radius:9px; padding:5px 12px; font:inherit; font-weight:600; font-size:11px; cursor:pointer; transition:.15s; }
.havn-doc-addbtn:hover{ color:var(--mc-accent); border-color:var(--mc-accent); }
.havn-doc-addbtn svg{ width:12px; height:12px; }

/* busy state on a row mid-upload/delete */
.havn-doc-row.is-busy{ opacity:.5; pointer-events:none; }

/* ---- toast ---- */
.havn-doc-toast{ position:fixed; left:50%; bottom:28px; transform:translateX(-50%) translateY(10px);
	background:var(--mc-bg-3); border:1px solid var(--mc-border-2); color:var(--mc-text); font-size:13px; font-weight:600;
	padding:12px 20px; border-radius:14px; box-shadow:0 24px 48px -18px rgba(0,0,0,.85); z-index:9999; opacity:0;
	transition:.2s; pointer-events:none; }
.havn-doc-toast.show{ opacity:1; transform:translateX(-50%) translateY(0); }
.havn-doc-toast.err{ border-color:rgba(229,156,140,.6); color:var(--mc-danger); }

/* ---- document-type chooser modal ---- */
.havn-doc-modal{ position:fixed; inset:0; z-index:10000; display:flex; align-items:center; justify-content:center; padding:20px; }
.havn-doc-modal[hidden]{ display:none; }
.havn-doc-modal-backdrop{ position:absolute; inset:0; background:rgba(4,5,8,.72); backdrop-filter:blur(6px); }
.havn-doc-modal-card{ position:relative; width:min(460px,100%); background:var(--mc-bg-3); border:1px solid var(--mc-border-2);
	border-radius:20px; padding:26px; box-shadow:0 40px 90px -24px rgba(0,0,0,.9), 0 1px 0 rgba(255,255,255,.06) inset;
	animation:havnDocPop .22s cubic-bezier(.2,.7,.2,1) both; }
@keyframes havnDocPop{ from{ opacity:0; transform:translateY(10px) scale(.97); } to{ opacity:1; transform:none; } }
.havn-doc-modal-title{ margin:0 0 6px; font-family:"Fraunces",serif; font-weight:600; font-size:19px; letter-spacing:-.02em; color:var(--mc-text); }
.havn-doc-modal-file{ margin:0 0 18px; font-size:12.5px; color:var(--mc-text-3); word-break:break-all; }
.havn-doc-modal-label{ display:block; font-size:10px; letter-spacing:.12em; text-transform:uppercase; font-weight:700; color:var(--mc-text-3); margin-bottom:8px; }
.havn-doc-typeselect{ width:100%; background:var(--mc-surface); border:1px solid var(--mc-border-2); border-radius:11px;
	padding:12px 14px; color:var(--mc-text); font:inherit; font-weight:600; outline:none; cursor:pointer; transition:.15s; }
.havn-doc-typeselect:focus{ border-color:var(--mc-accent); box-shadow:0 0 0 3px rgba(212,179,112,.14); }
.havn-doc-typeselect.is-error{ border-color:var(--mc-danger); box-shadow:0 0 0 3px rgba(229,156,140,.15); }
.havn-doc-modal-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:22px; }
.havn-doc-modal .havn-doc-modal-confirm svg{ width:15px; height:15px; }

@media(max-width:1180px){ .havn-doc-groups{ column-count:1; } }
@media(max-width:560px){ .havn-doc-stats{ grid-template-columns:repeat(2,1fr); } .havn-doc-selector select{ max-width:160px; } .havn-doc-title{ font-size:26px; } }

/* ---- empty state: no lead/listing to attach documents to (v2.2.46) ---- */
.havn-doc-empty{ display:flex; flex-direction:column; align-items:center; text-align:center;
	gap:14px; padding:64px 28px; margin-top:4px;
	border:1px dashed var(--mc-border-2); border-radius:20px;
	background:radial-gradient(620px 300px at 50% -10%, rgba(212,179,112,.05), transparent 70%), var(--mc-surface); }
.havn-doc-empty-ic{ display:flex; align-items:center; justify-content:center; width:60px; height:60px;
	border-radius:16px; background:var(--mc-accent-soft); color:var(--mc-accent);
	border:1px solid rgba(212,179,112,.25); }
.havn-doc-empty-ic svg{ width:26px; height:26px; }
.havn-doc-empty-title{ margin:6px 0 0; font-family:"Fraunces",serif; font-weight:600; font-size:22px;
	letter-spacing:-.02em; color:var(--mc-text); }
.havn-doc-empty-sub{ margin:0; max-width:52ch; font-size:13.5px; line-height:1.6; color:var(--mc-text-2); }
.havn-doc-empty-actions{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-top:8px; }
.havn-doc-empty-actions .havn-btn{ display:inline-flex; align-items:center; gap:8px; }
.havn-doc-empty-actions .havn-btn svg{ width:15px; height:15px; }

/* ---- LIGHT MODE (v2.2.63) ------------------------------------------------
   The stat/group cards use faint white-tint surfaces that vanish on a light
   page. Give them real light surfaces (text legibility is handled globally by
   the canvas-fallback light overrides in havn-dashboard.php). ------------- */
.havn-mc.is-light .havn-doc-stat,
.havn-mc.is-light .havn-doc-group,
.havn-mc.is-light .havn-doc-selector,
.havn-mc.is-light .havn-doc-drop{
	background:#FFFFFF; border-color:rgba(15,15,20,.10);
	box-shadow:0 1px 0 rgba(255,255,255,.7) inset, 0 8px 24px -16px rgba(15,15,20,.12);
}
.havn-mc.is-light .havn-doc-stat.accent{
	background:linear-gradient(180deg,rgba(212,179,112,.16),rgba(212,179,112,.04));
	border-color:rgba(212,179,112,.32);
}
.havn-mc.is-light .havn-doc-ghead{ background:linear-gradient(180deg,rgba(15,15,20,.022),transparent); }
.havn-mc.is-light .havn-doc-group-incoming{ border-color:rgba(138,180,248,.40); }
.havn-mc.is-light .havn-doc-row:hover{ background:rgba(15,15,20,.022); }
.havn-mc.is-light .havn-doc-gbar{ background:rgba(15,15,20,.06); }
.havn-mc.is-light .havn-doc-ft{ box-shadow:0 1px 0 rgba(15,15,20,.04) inset; }
