 :root {
            --primary: #09F;
            --primary-hover: #0078ff;
            --bg-slate: #f1f5f9;
            --text-main: #1e293b;
            --border-color: #e2e8f0;
            --toast-bg: rgba(30, 41, 59, 0.9);
            --paper-width: 794px;  /* A4 @ 96dpi */
            --paper-height: 1123px; /* A4 @ 96dpi */
        }

          html,body{ font-size:inherit;}
        .mnav {   font-size: 13px;}
        
        /* 字体定义 */
        .font-kaiti { font-family: "KaiTi", "STKaiti", "楷体", "楷体_GB2312", serif; }
        .font-songti { font-family: "SimSun", "NSimSun", "宋体", "STSong", serif; }
        .font-heiti { font-family: "SimHei", "Microsoft YaHei", "Heiti SC", "黑体", sans-serif; }

        .w-5 { width: 1.25rem; }
        .h-5 { height: 1.25rem; }
        
        .container { max-width: 1400px; margin: 0 auto; padding: 1rem; display: flex; flex-direction: column; gap: 1.5rem; height: 100vh; }
        @media (min-width: 1024px) { 
            .container { flex-direction: row; overflow: hidden; } 
            .sidebar { overflow-y: auto; height: 100%; padding-right: 0.5rem; }
        }

        nav { background: white; border-bottom: 1px solid var(--border-color); height: 3.5rem; display: flex; align-items: center; padding: 0 1.5rem; position: sticky; top: 0; z-index: 20; flex-shrink: 0; }
        
        .sidebar { flex: 1; min-width: 320px; max-width: 100%; display: flex; flex-direction: column; gap: 1.5rem; }
        @media (min-width: 1024px) { .sidebar { max-width: 380px; } }

        .preview-area { 
            flex: 2; 
            background: #e2e8f0; 
            border-radius: 0.75rem; 
            display: flex; 
            justify-content: center; 
            align-items: flex-start; 
            overflow: auto; 
            padding: 2rem;
            position: relative;
        }

        .text-indigo-500 { color: var(--primary); }

        .card { background: white; border-radius: 0.75rem; box-shadow: 0 1px 2px rgba(0,0,0,0.05); padding: 1.25rem; border: 1px solid var(--border-color); }
        .card-title { font-size: 1rem; font-weight: 600; margin-bottom: 0.75rem; color: #334155; display: flex; align-items: center; gap: 0.5rem; }
        
        textarea { width:-webkit-fill-available; padding: 0.75rem; border: 1px solid #cbd5e1; border-radius: 0.5rem; font-size: 1rem; resize: none; min-height: 100px; outline: none; transition: border 0.2s; }
        textarea:focus { border-color: var(--primary); }
        
        .control-group { display: flex; flex-direction: column; gap: 1rem; }
        .control-item { display: flex; flex-direction: column; gap: 0.25rem; }
        label { font-size: 0.85rem; font-weight: 500; color: #64748b; }
        select, input[type="range"], input[type="color"] { width: 100%; height: 2.5rem; padding: 0.25rem; border: 1px solid #cbd5e1; border-radius: 0.4rem; background: white; }
        input[type="range"] { padding: 0; }

        .btn-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }
        .btn { padding: 0.75rem; border-radius: 0.5rem; font-weight: 600; border: none; cursor: pointer; transition: 0.2s; text-align: center; color: white; display: flex; justify-content: center; align-items: center; gap: 0.5rem; }
        .btn-primary { background: var(--primary); }
        .btn-primary:hover { background: var(--primary-hover); }
        .btn-secondary { background: #10b981; }
        .btn-secondary:hover { background: #059669; }

        /* --- 核心打印纸张样式 --- */
        #paper-wrapper {
            transform-origin: top center;
            transition: transform 0.2s ease;
            display: flex;
            flex-direction: column;
            align-items: center;
            /* gap 在导出图片时会被临时移除 */
            gap: 20px; 
            padding-bottom: 40px;
        }

        .paper-page { 
            background: white; 
            width: var(--paper-width); 
            height: var(--paper-height); 
            padding: 40px; 
            position: relative;
            box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
        }

        .grid-container { 
            display: grid; 
            grid-template-columns: repeat(8, 1fr); 
            /* 11行 x 8列 = 88格/页 */
            grid-template-rows: repeat(11, 1fr); 
            border-top: 1px solid var(--grid-color, #ff0000); 
            border-left: 1px solid var(--grid-color, #ff0000); 
            width: 100%;
            height: 100%;
        }
        .grid-cell {
            position: relative;
            /* 宽高比由 grid 布局自动控制，保持正方形需要容器尺寸精确，或者依赖 flex */
            border-right: 1px solid var(--grid-color, #ff0000);
            border-bottom: 1px solid var(--grid-color, #ff0000);
            display: flex;
            align-items: center;
            justify-content: center;
            overflow: hidden;
        }
        .grid-char {
            font-size: 58px; /* 稍微调小一点以适应格子 */
            line-height: 1;
            z-index: 10;
            user-select: none;
            white-space: nowrap;
            pointer-events: none;
        }
        .grid-svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; opacity: 0.6; }

        /* Toast */
        .toast {
            position: fixed;
            top: 2rem;
            left: 50%;
            transform: translateX(-50%) translateY(-150%);
            background: var(--toast-bg);
            color: white;
            padding: 0.75rem 1.5rem;
            border-radius: 2rem;
            font-size: 0.9rem;
            font-weight: 500;
            opacity: 0;
            transition: all 0.3s cubic-bezier(0.68, -0.55, 0.27, 1.55);
            z-index: 100;
            display: flex;
            align-items: center;
            gap: 0.5rem;
            pointer-events: none;
        }
        .toast.show { transform: translateX(-50%) translateY(0); opacity: 1; }

        @media print {
            .no-print { display: none !important; }
            .container { display: block; height: auto; padding: 0; }
            .preview-area { padding: 0; background: white; overflow: visible; display: block; }
            #paper-wrapper { transform: none !important; gap: 0; box-shadow: none; padding-bottom: 0; }
            .paper-page { box-shadow: none; margin-bottom: 0; break-after: page; }
        }