/* ── Portfolio-specific styles ── */
        .readiness-ring-wrap {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 8px;
        }
        .readiness-ring {
            position: relative;
            width: 120px;
            height: 120px;
        }
        .readiness-ring svg {
            transform: rotate(-90deg);
            width: 120px;
            height: 120px;
        }
        .readiness-ring circle {
            fill: none;
            stroke-width: 10;
        }
        .ring-track { stroke: #e0e0d0; }
        .ring-fill { stroke-linecap: round; transition: stroke-dashoffset 0.8s ease; }
        .ring-fill.score-red   { stroke: var(--danger); }
        .ring-fill.score-gold  { stroke: var(--accent-gold); }
        .ring-fill.score-green { stroke: var(--success); }
        .ring-number {
            position: absolute;
            inset: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            font-family: var(--font-body); font-weight: 700;
            font-size: 1.8rem;
        }
        .readiness-card {
            background: var(--paper-warm);
            border: var(--border-sketch);
            border-radius: var(--radius);
            padding: 20px 24px;
        }
        .readiness-breakdown {
            margin-top: 16px;
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }
        .breakdown-item {
            display: flex;
            align-items: center;
            gap: 8px;
            font-family: var(--font-hand);
            font-size: 1rem;
        }
        .breakdown-dot {
            width: 10px;
            height: 10px;
            border-radius: 50%;
            flex-shrink: 0;
        }
        .rec-list {
            margin-top: 12px;
            list-style: none;
        }
        .rec-list li {
            font-family: var(--font-hand);
            font-size: 1rem;
            padding: 6px 0;
            border-bottom: 1px dashed #ddd;
            display: flex;
            gap: 8px;
        }
        .rec-list li::before { content: '→'; color: var(--accent-gold); flex-shrink: 0; }

        .training-row {
            display: grid;
            grid-template-columns: 1fr 1fr 80px 32px;
            gap: 8px;
            margin-bottom: 8px;
            align-items: center;
        }
        .training-row .remove-row {
            background: none;
            border: none;
            color: var(--danger);
            cursor: pointer;
            font-size: 1.2rem;
            font-family: var(--font-hand);
        }

        .visibility-toggle {
            background: var(--paper-warm);
            border: 2px dashed var(--accent-gold);
            border-radius: var(--radius);
            padding: 16px 20px;
            display: flex;
            align-items: center;
            gap: 14px;
            cursor: pointer;
            margin-bottom: 20px;
        }
        .visibility-toggle input[type=checkbox] {
            width: 22px;
            height: 22px;
            cursor: pointer;
        }
        .visibility-toggle label {
            font-family: var(--font-hand);
            font-size: 1.2rem;
            cursor: pointer;
        }

        .skill-chips {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
        }
        .skill-chip {
            font-family: var(--font-hand);
            font-size: 0.95rem;
            background: var(--paper-warm);
            border: var(--border-sketch);
            border-radius: 20px;
            padding: 4px 12px;
            cursor: pointer;
            transition: background 0.15s;
        }
        .skill-chip.active {
            background: var(--ink);
            color: var(--paper);
        }

        .endorsement-item {
            border-left: 3px solid var(--accent-gold);
            padding: 10px 14px;
            margin-bottom: 12px;
            background: var(--paper-warm);
        }

        /* Public view */
        .pub-headshot {
            width: 160px;
            height: 160px;
            object-fit: cover;
            border: var(--border-sketch);
            box-shadow: var(--shadow-lift);
        }
        .pub-headshot-placeholder {
            width: 160px;
            height: 160px;
            background: var(--paper-alt);
            border: var(--border-sketch);
            display: flex;
            align-items: center;
            justify-content: center;
            font-family: var(--font-body); font-weight: 700;
            font-size: 3rem;
            color: var(--ink-faint);
            box-shadow: var(--shadow-lift);
        }
        .pub-hero {
            display: flex;
            gap: 28px;
            align-items: flex-start;
            flex-wrap: wrap;
            margin-bottom: 28px;
        }
        .pub-meta {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            margin-top: 10px;
        }
        .score-badge-big {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            background: var(--success);
            color: #fff;
            font-family: var(--font-body); font-weight: 700;
            font-size: 1rem;
            padding: 6px 14px;
            border-radius: 20px;
        }
